单步攻击检测
如 SQL 注入攻击,如下所示:
在浏览器的GET或POST请求中,攻击者可以利用构造恶意的输入数字或字符串来进行攻击。当涉及GET类型的接口时,
- 正常:请求
XXX/sql/news.php?id=123,查询id为123的新闻。这样的请求可以被理解为执行以下查询语句:sql="SELECT * FROM news WHERE id=123",即从news数据库中获取id为123的内容。 - 异常 攻击者可以通过构造恶意的输入,请求
XXX/sql/news.php?id=123 OR 1=1,来改变查询的行为。在语法解析时,查询语句会首先判断1=1,即输入命令的后半部分"OR 1=1"。由于1=1始终为真,查询语句将跳过选择"id=123"的部分,从而输出news数据库中的所有内容。
类似地,POST请求一般被用于传输登录操作中输入的用户名username和密码password。
- 正常:后台对POST请求的用户名、密码进行参数校验,如果匹配,才会允许登录。
- 异常:当攻击者在用户名中输入
#或--的字符串,被当做注释处理,会导致后台在做匹配判断时忽略对密码的检验,从而造成攻击者没有输入正确的密码但却成功地入侵了系统。
针对这样的攻击方式,可以提前输入数据流的特征,以便与攻击特征库中的特征进行匹配,当输入数据流存在攻击特征库中的特征时,便会检测出相应的攻击行为。
这些特征目前在很多安全设备上都会做对应的单步攻击检测,比如 IDS 、IPS。
多步攻击检测
目前常用的方法首先是设计一个规则库,将常见单步攻击事件的告警信息关联,形成针对多步攻击的规则,然后采用规则推理和匹配机制,通过检测的多个单步行为的数据进行关联分析发现多步攻击。
可以先将单步攻击行为分为 攻击意图、技术路线、实现方法、实现具体细节 这四个层次,每个层次都有很多种具体的攻击行为。一种攻击行为可能在不同的层次上被进一步细分,
攻击意图层次包括扫描探测、渗透突破、远程控制、窃取利用等攻击行为。扫描探测攻击行为在技术路线层次上又可以细分为网络层扫描、传输层扫描、应用层扫描和情报搜集等。网络层扫描在实现方法层次上又可以细分为ARP Request扫描、ARP Replay扫描、ICMP扫描等。
对于具体的网络层扫描攻击行为,为了判断是否有此类攻击行为要进行靶向数据采集,针对流量数据进行检测,设计关于端口信息、主机信息等的扫描探测特征,当从流量数据中分析出符合此类安全特征的数据时,便可以及时告警该威胁数据。