大家好,我们是 NOP Team,书接上回,我们给大家讲述了如何在 Linux 上找到 ICMP/DNS 隧道,但是现在工具都是全平台的,只有 Linux 似乎还不足以帮助蓝队兄弟们全面地解决问题
在学习这部分的时候,我找到了一篇文章 《如何找到发送异常ICMP流量的进程?》
这是一篇绿盟cert写的,发表在安全客上的文章,其中介绍了 Windows 和 Linux 下如何找到异常icmp 包的发包程序,这里提供了一个通过监控进程间通信,确定时间,之后通过时间和 Wireshark 抓包做对比的方法,可能有一丢丢误报,这是一种很巧的方法,不见得有多妙,但是很巧
今天给大家带来一种确切的,不会产生误报的方法
微软官方曾经出过一款类似 Wireshark 的网络协议分析工具 —— Microsoft Message Analyzer(MMA),旨在帮助用户在Windows操作系统中监控、截获、分析网络流量,并对系统或应用程序产生的事件和消息进行深入诊断。它是之前Windows平台上的网络抓包工具Network Monitor的后续产品,功能更为强大和全面。以下是MMA的主要用途:
网络流量分析:MMA能够捕获网络数据包,帮助用户分析网络通信中的细节,包括不同协议层级的数据,这对于识别网络瓶颈、故障排除和安全审计至关重要。
协议解析:支持广泛的网络协议,能够解码并展示各种网络协议的详细信息,便于理解数据包的内容和结构。
事件和日志分析:除了网络数据包,MMA还可以分析系统和应用程序事件日志,将网络行为与系统事件关联起来,为问题诊断提供更全面的视角。
灵活的数据视图:提供多种查看数据的方式,包括表格视图、图表视图等,以及强大的筛选和搜索功能,帮助用户快速定位关键信息。
脚本和扩展性:支持使用脚本和APIs自定义分析场景,用户可以根据需要创建或调整分析方案,提高工作效率。
跨平台支持:虽然主要是针对Windows平台设计,但MMA在一定程度上也支持跨平台网络分析,增强了其在多环境下的适用性。
诊断和故障排除:特别是在解决复杂的网络和应用程序交互问题时,MMA能够提供深入的数据分析能力,帮助识别和解决问题。
尽管Microsoft Message Analyzer在功能上非常强大,但需要注意的是,Microsoft在2017/18年停止了对该工具的开发和支持,并且于 2019年11月25日从官网删除了该软件包
下载后安装使用
https://github.com/esrrhs/pingtunnel/releases/download/2.8/pingtunnel\_windows\_amd64.zip
还是使用 pingtunnel 来模拟攻击者搭建的 icmp 隧道,其中攻击者控制服务器端为 192.168.31.83
攻击者的服务端启动 pingtunnel 服务器
`wget https://github.com/esrrhs/pingtunnel/releases/download/2.8/pingtunnel_linux_amd64.zip unzip pingtunnel_linux_amd64.zip # 启动服务端,设置 key 为 1234 sudo ./pingtunnel -type server -key 1234 `
客户端 windows 11 下载 pingtunnel 后启动
`# 连接服务端 pingtunnel.exe -type client -l :4445 -s 192.168.31.83 -t 192.168.31.83:4444 -tcp 1 -key 1234 `
输入过滤条件后,可以直接筛选出相关的流量,这个 Wireshark 也可以做到,现在我们看看能不能找到进程id
默认好像看不出什么,就是分析了 ICMP 数据包,我们点击上方的 Tools 调出其他 details 界面
成功找到进程id以及对应的启动命令
我们使用 system informer 验证一下
成功找到 icmp 隧道进程的 pid
Netsh(Network Shell)是Windows操作系统中一个强大的命令行工具,主要用于配置和管理网络设置。这个工具允许用户通过命令行界面或脚本文件来查看、修改和故障排查各种网络相关的配置,包括但不限于以下几个方面:
网络接口配置:可以用来配置网络接口卡(NIC)的IP地址、子网掩码、默认网关、DNS服务器等参数。
Windows防火墙管理:允许用户创建、修改或删除防火墙规则,以及查看防火墙的状态和配置。
IPSec配置:支持配置IPSec策略,用于保护网络通信的安全。
无线网络管理:可以用来管理无线网络的配置,包括连接到无线网络、设置首选网络列表等。
路由和远程访问服务(RRAS):配置和监控路由表、拨号连接、VPN等。
HTTP代理和监听配置:在支持的Windows版本中,可以配置HTTP代理设置和监听器,用于应用层的网络请求处理。
网络诊断和故障排除:提供命令来帮助诊断网络连接问题,比如重置网络设置、查看网络堆栈状态等。
此外,Netsh支持上下文切换,这意味着用户可以进入特定的网络配置上下文(如netsh interface
, netsh wlan
, netsh firewall
等),以便于更精确地操作相关领域的网络配置。它还提供脚本功能,意味着可以编写脚本文件来批量执行一系列网络配置命令,这对于自动化网络部署和维护非常有用
更多 netsh 的使用参考下面的官方文档
https://learn.microsoft.com/zh-cn/windows-server/networking/technologies/netsh/netsh-contexts
并不是所有场景都允许我们上传工具,而且这还是一个已经被放弃的工具,以后不兼容的可能性也很大,所以今天的重点是利用 Windows 自带的工具 netsh 来帮助我们找出 Windows 上的 icmp 隧道
直接使用上面的隧道就好,攻击者的服务端为 192.168.31.83
启动网络追踪功能(以管理员权限运行)
`netsh trace start persistent=yes capture=yes tracefile=.\icmp_capture.etl `
此时开启抓包,配合流量设备,我们觉得抓到了相关数据包后,停止抓包
`netsh trace stop `
我们需要将 .etl
格式的包转化为 Wireshark
能够解析的包,这需要 etl2pcapng.exe
命令非常简单
`etl2pcapng.exe in.etl out.pcapng `
将上述文件拿回本地,使用 Wireshark 打开
此时通过过滤可以看到这些通信流量,可能大家会想,这不就是抓包嘛,也没看出什么区别呀
大家看这个包的最上面有一个 Packet comments
,我们点击看一下内容是什么
这里面备注了发送给请求数据包的 pid 以及 tid,这样我们就找到了恶意进程,使用 system informer 验证一下
就是这个进程起的隧道
至于 DNS 或者其他协议的隧道或者恶意程序其实都是一样的处置方法,icmp 比较有挑战性和代表性
有态度,不苟同