【安全科普】揭秘IPS之网络攻击的“字典”

小安:(挥手)小白,发呆呢?

小白:我是在思考!……IPS到底是怎么检测到恶意攻击的呢?

小安:这个问题,要从IPS规则库说起。

小白:哦,原来IPS防护是靠它。

小安:也不全是。IPS规则库就像一本字典,收录了各种各样的攻击行为和网络威胁,IPS引擎检测到数据包后,会去这本“字典”里查找,如果找到了就立即拦截。

小白:这么厉害,这本“字典”我也想拥有!

IPS规则长啥样?

all enable http [80,8080] (msg_cn:"SQL注入攻击选择语句检测";uricontent:"select";nocase;

pcre:"/[\x00-\x20\xA0\x2B\x2F\x29\x27\x22\d](and|or|union)[\x00-\x20\xA0\x2B\x2F\x28\x23\x2D][^&]{0,50}select[\x00-\x20\xA0\x2B\x2F\x28\x23\x2D\x5B].+[\x00-\x20\xA0\x2B\x2F\x29\x5D]from[\x00-\x20\xA0\x2B\x2F\x28\x23\x2D\x5B]./isU";)

这条规则翻译成我们的语言就是:规则有效,匹配基于http协议的SQL注入攻击,如果在报文URI中检测到包含and、or或union后接select……from等SQL命令的关键字,即命中此规则,并生成相应的告警信息和日志。

所以,这条规则的作用是识别一些请求中可能存在的恶意SQL查询语句,如果匹配了这条规则,IPS引擎就会判定这次请求附带了攻击指令, 从而引擎可以执行策略预定义的动作进行防护。

这本字典怎么查?

图1 IPS规则匹配流程

正常操作时,用户向服务器发起一个请求,服务器收到请求后返回给客户端一个消息,包含用户需要的内容。而攻击者为了获取用户隐私信息或服务器信息,会在前后端之间进行拦截,修改用户原本要传过去的参数,变为自己想要获取的信息,进行网络攻击。以上面提到的SQL注入攻击为例。

图2

图2是一个输入姓名查询信息的平台,攻击者在姓名信息grady后面增加了字符’union select ……,这些字符包含在报文中传递给了IPS引擎,被解析为图4内容。如果没有开启这条规则,在有注入的接口上,攻击者可以通过这些字符,查询到数据库中其他的数据表,从而获取隐私信息。

图3

图4

IPS引擎从流经的报文中,解析出各种关键字段,但它并不能判断是否存在攻击指令,需要在IPS规则库里查找。如果此时开启了这条规则,这次请求就能匹配到相应规则,说明其中存在攻击指令。IPS引擎会告知设备阻断这个行为,并生成一条日志。

IPS规则的局限性

通过前面的叙述,我们可以总结出这两个定义:

IPS规则:一些符号文字组合形成的判断依据,表示某一种漏洞或针对漏洞的某一种攻击形式。

IPS规则库:一系列规则打包形成,放入设备后是不可变的数据,描述多种攻击形式。

规则是引擎判断的依据,引擎解析出数据包的流量后与规则进行匹配,能匹配到规则,说明报文中可能存在攻击;不能匹配到规则,有两种可能:

  • 确实没有攻击行为。
  • 攻击手法更加先进,超出了规则的覆盖范围。

安全研究团队的日常工作,就是不断与攻击者进行技术对抗,研究更多、更高级的攻击方式,让规则覆盖最大可能性。

那么,是否只要规则库足够强大,就能覆盖所有可能的攻击呢?在现实运维工作中,面对庞大的数据流量,除了基于性能要做一些功能上的取舍外,还需要解决特殊报文和绕过的问题。

1、规则匹配顺序问题

凭感觉,根据危险等级进行规则匹配,高危的优先匹配,低危的后续匹配,好像是理所应当。实际上,规则没有这么智能,先匹配哪些规则,后匹配哪些规则,完全听从引擎的调用。为了避免先匹配到低危特征,而放过了高危攻击者的情况,引擎需要支持基于优先级顺序的规则匹配。

2、规则数量问题

网络攻击层出不穷,攻击手段和系统漏洞不断更迭,规则数量也随之与日俱增。一方面,规则数量过多,会造成性能压力;另一方面,如果限制规则数量,又会放过很多攻击者。

3、逃逸技术问题

逃逸技术,是攻击者为了躲避现有检测机制,想出的绕过方式。比如编码变化,攻击者为了隐匿自己的行踪,对攻击行为层层加码,使用多次base64编码、URL编码、unicode编码等。你可能会觉得,这几种编码不复杂呀,很容易就能解码。但经过多次选择甚至混合编码后,引擎就难以破解了,绕过了规则有限的检测方式。

尽管存在以上局限,基于IPS规则的防护方式,还是目前安全产品主要使用的防护方式之一。在更高级的防护方式中,融入了基于语义、深度学习等技术的安全能力,这也是IPS未来的发展方向。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值