关于 Host-based IDS 的两个疑问.

2015-03-06 08:38:22 +08:00
 MrGba2z
Host-based IDS有很多种,比如监视system call, Trapwire等方式.

拿Syscall monitoring 这种来说

大致思路就是把程序所有的可能支路都跑一遍, 获得strace list,
类似

open
read
write
callXX
close
exit

然后建立一个JSON存储两个前后操作的模型.


{
"syscall_1":"open",
"syscall_2":"read"
},
{
"syscall_1":"read",
"syscall_2":"write"
},

当出现预设中不存在的操作对时,即说明被入侵.

用Stack overflow来说的话,
如果被拿到shell code, 那么shell code那一部分, 很可能会出现预设中不存在的操作对.

那么我是否可以通过小心的改写我的shell code, 甚至不用shell code, 用这些预设的操作对来完成入侵(也许效果没拿shell好,但暂时不关心这个)

问题1: 这样是否理论上就躲过了IDS?(我觉得应该是可以的)

这时候如果我改进我的模型, 除了原本两个syscall之外,我还记录两个syscall的执行参数

{
"syscall_1":"open",
"syscall_2":"read",
"arg_1":"/etc/log",
"arg_2":"/etc/secret"
},
{
"syscall_1":"read",
"syscall_2":"write"
"arg_1":"/etc/secret",
"arg_2":"/etc/log"
},

显然这样会使得JSON表里模型数增多.

问题2: 那么这样的话, 是否还能避开IDS?(我感觉还是能, 但是没办法理论上证明)

PS: 当然攻击者在不知道我们模型的情况下,还是很容易触发IDS的. 这是否意味着, 如果攻击者小心的用一些常见的syscall pair来构造他们的入侵, 也许会使得入侵危害变小, 但是缺躲过了IDS?

如果有错请大力纠正, 我在学习中. 不是特别明白, 可能讲错了
1495 次点击
所在节点    问与答
4 条回复
MrGba2z
2015-03-06 08:39:16 +08:00
@RIcter


不知道V2里还有哪些朋友是研究安全方面的
RIcter
2015-03-06 09:52:38 +08:00
IDS 方面没有研究,不过说绕过的话..

比如触发点在 cat /etc/passwd,如果知道规则,可以:

cat `echo /etc``echo /passwd`
`echo Y2F0IC9ldGMvcGFzc3dkCg== | base64 -d`

_(:з」∠)_但是一般都不知道规则的嗯
RIcter
2015-03-06 09:55:40 +08:00
想了下也不对 ..这样还是绕不过呢 owo..
实际上还是运行了相应的命令,IDS 仍然可以被触发的。
RIcter
2015-03-06 10:07:09 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/174826

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX