1 | 文章已首发至先知平台 |
TL;DR
- 前段时间看了一个介绍wireshark和威胁分析相关的议题(视频演讲和pdf见参考链接),现在抽出点儿时间总结和记录一下。
- 由于工作需要,那段时间搜集和整理了wireshark基本使用和技巧相关资料,但是总感觉不太完整不够深入,直到看到这个议题之后,深深感觉外国佬是真的细,真的强。
wireshark
wireshark简述
- wireshark主要用在网络故障排查、协议分析、流量统计、威胁发现等方面,是安全、运维、开发等从业人员必备技能之一。wireshark抓取OSI七层协议所有数据包并根据内置规则进行协议解析为友好可读的数据实时展示给用户,也可保存下来留后分析。此外类似的抓包工具还有tshark和tcpdump,但由于tshark和tcpdump都是没有GUI且不够友好,所以目前使用wireshark的人更多一些。
过滤器
- 这里要注意区分一下捕获过滤器和应用显示过滤器,捕获过滤器是有选择性的捕获特定数据包,而应用显示过滤器是在开始抓包之后,过滤显示已经抓到的包。捕获过滤器的优先级更高,它能够避免抓取的数据包过大但也可能会错失一些“重要”数据包。
捕获过滤器遵循BPF(Berkeley Packet Filter)语法
例如1
2
3
4
5
6
7
8host xxx.xxx.xxx.xxx
not ar
net xxx.xxx.xxx.xxx/xx
dst host xxx.xxx.xxx.xxx
port xx
ip
tcp port xx
tcp portrange xx-xx一些恶意软件的捕获过滤器语句
Blasater Worm:
• dst port 135 and tcp port 135 and ip[2:2]==48
Welchia Worm:
• icmp[icmptype]==icmp-echo and ip[2:2]==92 and icmp[8:4]==0xAAAAAAAA
Looking for worms calling C2s:
• dst port 135 or dst port 445 or dst port 1433 and tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0 and src net 192.168.0.0/24
Heartbleed Exploit:
• tcp src port 443 and (tcp[((tcp[12] & 0xF0) >> 4 ) 4] = 0x18) and (tcp[((tcp[12] & 0xF0) >> 4 ) 4 + 1] = 0x03) and (tcp[((tcp[12] & 0xF0) >> 4 ) 4 + 2] < 0x04) and ((ip[2:2] - 4 (ip[0] & 0x0F) - 4 * ((tcp[12] & 0xF0) >> 4) > 69))- 应用显示过滤器常用语法
• ICMP traffic: icmp
• Source or Destination IP: ip.addr==[x.x.x.x]
• Source IP: ip.src==[x.x.x.x/x]
• Windows Services: smb || nbns || dcerpc || nbss || dns
• Filter out noise: !(arp or icmp or dns)
• Search exact ASCII text in TCP packets: tcp contains [blah]
wireshark导出对象
- wireshark导出对象功能可以导出压缩包、图片、二进制文件等,打过ctf的可能使用过这个技巧。这里不做展开介绍。
wireshark个人配置
- 常见的软件一般都有个人配置的功能,wireshark也一样,你可以定制显示颜色规则、显示的列、对不同协议的定制等等。
- 这里重点关注一下定制化显示不同的列,wireshark默认只是显示包编号、时间戳、源ip、目的ip、协议、数据包长度、数据包简要信息,但我们可以根据不同的需求进行定制.
例如我们可以显示端口的信息。 - 友好的显示时间
- 导出个人配置,可以讲自己常用的配置保存下来移植到其它电脑或者分享给他人。
- 将协议中的某个字段设置为列(也可以将某个字段设置为过滤器)
- 显示ip地址归属地 可参考How To Use GeoIP With Wireshark
wireshark协议统计和分析
- 这里主要能够看到抓包的一些属性(时间、大小等)还有流量中协议的分级占比、以及通信时长等信息。
小问题
- 不知道大家有没有遇到并思考过这样一个问题,就是我明明通过无线连接的网络,但使用wireshark抓包抓到的是ethernet协议数据包,而不是802.11协议的数据包,这是因为操作系统或网卡驱动程序已经把802.11 转换成以太网协议了,当然你也设置成抓到802.11协议,这个时候需要修改捕获接口选项为监控模式。
- 参考链接
- why-do-i-see-ethernet-ii-protocol-in-wireshark-in-wireless-connection
- promiscuous-vs-monitoring-mode-d603601f5fa
威胁分析
基础协议
- 在分析威胁之前首先应该先了解一些基础的协议流量特征例如icmp、snmp、telnet、ssh、smb等,这里议题作者已经专门制作好了,大家可以去下载并熟悉相应协议的结构和流量的特征。
在线流量分析
- cloudshark 在线分析流量,高亮显示恶意流量和行为,30天试用期
- PacketTotal 在线分析流量,高亮显示恶意流量和行为,免费使用
- NetworkMiner工具 图形化界面流量分析工具,有免费和收费版本
- malware-traffic-analysis.net 1300+恶意软件流量样本,由著名防火墙palo alto公司威胁狩猎团队维护
- 此外还有一些其它有用的链接
https://github.com/Security-Onion-Solutions/security-onion/wiki/Pcaps
https://wiki.wireshark.org/Tools
https://wiki.wireshark.org/SampleCaptures
恶意样本分析
- 恶意样本分析有如下的网站资源
• VirusTotal
• Hybrid-Analysis
• Malwr
• Reverse.it
• Cuckoosandbox (on-prem)
IOC
- Indicators of Compromise ,可以理解为拥有某个特征之后就可以被打标记为某个恶意软件了,这个特征可能是url、ip、样本的哈希值等。
实战分析
- 在作者议题中作者提供了几个非常精彩的威胁分析实验场景,其中包括imcp隧道、netcat文件传输、netcat反连shell、数据泄漏、勒索软件、供应链攻击等。感兴趣的话大家可以去下载并进行练习。
- 当然我这里只是对议题进行简单总结概括,如果感兴趣的话大家可以去看一下Reference链接里原作者的视频和课件。
最后如果你有一些更好的trick欢迎留言XD