|
前言
科来网络分析系统CSNAS(后文统称CSNAS)提供了科来深度数据包检测过滤技术(后文统称科来DPI),其语法灵活、语句简单,能满足各种不同场景的数据包过滤。上一篇文章《精准过滤:构造不同场景的规则语句》为大家讲了如何写出科来DPI的规则语句,也做了一些简单的示例。为了让大家更熟练地运用科来DPI,今天将为大家带来科来DPI在CSNAS数据包视图中的一些实战场景化应用示例,让网络分析师的数据包过滤技能够更上一层楼。
科来DPI在数据包视图中的场景化应用 场景1:查找IPv6地址 往期文章已演示了过滤IPv4地址,本篇文章演示过滤IPv6地址。 例:过滤出原IP为FE80:0000:0000:0000:CABF:4CFF:FE20:5335的数据包
过滤语句:ipv6.srcip =‘FE80:0000:0000:0000:CABF:4CFF:FE20:5335’,过滤效果如下图:
说明:规则语句的数据源部分不能直接写为ip,要明确指明数据源为ipv6。因为ip数据源默认为ipv4,从“表达式帮助”会话框中也能明显看到关于ip赋值类型的提示:
场景2:DNS域名(恶意域名、反弹域名)查找 例:过滤出含有指定域名信息(proxy.colasoft.cn)的DNS数据包。 分析:对特征字符串的匹配,有精准匹配和模糊匹配两种方式,下面分别进行举例。
过滤语句1:dns.qname = ‘proxy.colasoft.cn' (说明:本条过滤语句域名精确匹配字符串“proxy.colasoft.cn”) 过滤语句2:dns.qname.find(‘colasoft.com') (说明:只要域名中包含“colasoft.cn”字符的DNS数据包都会被匹配) 注意:有分析师自然而然地会想到使用packet.find()或payload.find()来进行特征字符串的查找过滤。
在本场景中,明确指明是DNS协议,所以把数据源指定为DNS会更精确快速。并且在packet或payload中进行查找时要特别注意,数据包的原始数据为HEX(二进制数据),当把HEX转为ASCii的文本时“.”符号代表的是不可显示字符,如果直接查找proxy.colasoft.com会失败,因为中间的“.”会代表所有不可见字符。因此在进行查找时需要对“.”进行转义,或直接使用HEX来进行查找。下面就用场景3来做举例说明。
场景3:查找包含 “colasoft.com”字符串的数据包,不区分大小写(不限于DNS协议) 分析:有2种直观的过滤方式,1是通过pakcet.find()或payload.find()去查找特征字符串,但字符串中的“.”需要转义,用正则表达式会比较直观;2是直接查找HEX进行过滤(仅支持payload.find()),在检测中,更推荐用HEX进行查找!
第一种方法的过滤语句:packet.find(/colasoft\.com/i) 说明:packet.find()表示在数据包包头和包体中查找“colasoft.com”
还可用payload.find(/colasoft\.com/i) 说明:payload.find()表示仅在数据包应用负载中查找“colasoft.com”,不匹配包头中的内容。
此处我们使用packet.find()作为过滤条件进行演示,如下图: 第二种方法的过滤语句:payload.find(HEX'63 6F 6C 61 73 6F 66 74 2E 63 6F 6D'),如下图: 更推荐大家用第二种方法,更加准确,并不会出现转码有歧义的情况。
场景4:查找IP地址为 192.168.31.* 的数据包: 防火墙在做封禁策略时,ACL策略除了封禁某一指定IP,还可能是封禁某个C段。如果我们要在防火墙后,查看对某个C段IP地址有没有全部被拦截,可在墙后抓取的流量中,监控有无出现指定C段的数据包。
过滤语句:ip.in(192.168.31.0/24),如下图:
场景5:查找TCP同步包(SYN包)带数据 SYN FLOOD是一种DOS攻击,常用海量的带数据SYN包来淹没用户带宽;同时某特种木马的后门程序,只要在任意端口收到固定的激活数据就能被激活(激活数据在SYN包中);因此我们需要查找网络中是否有携带数据的SYN包:
过滤语句:tcp.syn = 1 && payloadlength > 0,如下图: 说明:并非SYN带数据就一定有问题,比如打开了TFO(TCP fast open)功能的应用,就可能出现带数据的SYN,此处不再展开。
场景6:查找指定时间(时间戳为 2018/11/29 20:31:29.050642000)的数据包:
过滤语句:timestamp =
DT'2018/11/29 20:31:29.050642000',如下图:
查找一个精确时间点的某数据包,意义并不是特别大,所以我们将场景进行延伸:查找某个时间跨度的数据包(秒级精度),如22点54分20秒到22点54分21秒,这1秒钟内所捕获的数据包。
过滤语句:timestamp >= DT’2024/07/20 22:54:20' &&
timestamp <= DT’2024/07/20 22:54:21' ,如下图: 这里存在一个问题,就是显示过滤器输入框长度固定,如果过滤条件太长,将无法看到输入的完整过滤语句。建议过滤条件很长的时候,我们用文本编辑工具对过滤条件进行编辑修改,再将过滤条件语句黏贴进搜索框中。
场景7:查找内容里包含“域名”的邮件: 想找到包含有域名的邮件(如有虚假钓鱼链接的钓鱼邮件)。
过滤语句:(protocol=smtp ||
protocol = pop3 || protocol = imap4) && payload.find(/((ht|f)tps?):\/\/([\w\-]+(\.[\w\-]+)*\/)*[\w\-]+(\.[\w\-]+)*\/?(\?([\w\-\.,@?^=%&:\/~\+#]*)+)?/iV)
规则语句较长,我们一起来分析一下过滤语句构成: 此过滤语句由2个子语句构成,中间由“&&”符号分开
(1) 前面子语句: (protocol=smtp || protocol = pop3 || protocol
= imap4) 代表过滤协议为smtp或pop3或imap4协议的数据包;
(2) 后面子语句: payload.find(/((ht|f)tps?):\/\/([\w\-]+(\.[\w\-]+)*\/)*[\w\-]+(\.[\w\-]+)*\/?(\?([\w\-\.,@?^=%&:\/~\+#]*)+)?/iV) 代表在数据包的payload中查找是否有“域名”格式的内容,find()中的内容为“匹配域名格式的正则表达式” (在数据包内容查找函数中支持正则表达式,可以更灵活地满足我们的过滤条件,如在payload中查找“电话号码”、“身份证号码”、“用户ID”等(正则表达式的写法文章中不作介绍,请参考通用正则表达式规范))。
应用过滤条件后,成功将协议为“SMTP”并且数据包中含有域名“https://www.colasoft.com.cn”的数据包过滤出来,如下图: 示例规则语句中,涉及正则表达式的使用,科来支持Perl风格的通用正则语句,下面列出几条常见的正则语句,在不同场景中方便大家使用:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.? (2)^http(s)?://([\w-]+\.)+[\w-]+(/[\w./?%&=-]*)?$
^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
合法账号(字母开头,长度5-16,允许字母、数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密码(字母开头,长度5-16,允许字母、数字下划线):^[a-zA-Z]\w{5,17}$
说明:在使用时注意,暂时只有find()函数支持正则查找,需在“/”符号中间引用正则表达式,并且注意“^”、“$”定位符的使用。推荐先使用相关正则工具验证正则表达式,再应用在过滤规则语句中。
场景8:过滤TCP重传数据包 想要找到网络中所有的重传包
过滤语句:tcpanalysis.retransmission 前文中曾讲到:为了满足我们更快速地分析TCP相关的内容,科来DPI特别启用了过滤语句“tcpanalysis”,过滤条件表示方式为“tcpanalysis.分析字段名称”,使用方法如下图: 1. 先键入“tcpanalysis”,再键入“.”(英文点号),会自动出现TCP相关的分析字段名称;2. 选择需要的分析字段作为过滤条件,如tcpanalysis.retransmission; 同理可以过滤出乱序数据包,如tcpanalysis.outoforder;tcpanalysis具体支持的分析字段名称和含义如下: tcpanalysis字段 | 说明 | keepalive | Keep-Alive数据包 | keepaliveack | Keep-Alive Ack数据包 | lostpacket | 之前可能有数据包丢失 | outoforder | 乱序数据包 | retransmission | 重传数据包 | spurioussetransmission | 虚假重传数据包 | fastretransmission | 快速重传数据包 | repeatack | 重复Ack数据包 | zerowindowprobe | 零窗口数据包 | zerowindowprobeack | 零窗口应答数据包 |
若不理解上表中的说明,可参考阅读科来公众号关于TCP协议解码相关的文章。
结语
科来DPI过滤功能强大,其语句灵活,应用快速,掌握好科来DPI使网络分析师的分析工作事半功倍!我们在上篇文章中简单介绍了科来DPI规则语句的语法,本篇文章又进行了多个应用场景的举例。希望网络分析工程师们能举一反三,灵活运用科来DPI应对各种复杂过滤场景。后面,我们还会陆续为大家带来科来DPI在CSNAS的端点视图、会话视图、日志视图中的应用,敬请期待!
|