-
-
[求助]windows平台抓包,并获取进程、线程信息
-
发表于:
2025-2-12 17:41
3046
-
[求助]windows平台抓包,并获取进程、线程信息
需求场景
系统上有恶意程序外联,例如频繁发起DNS请求。需要定位发起这个DNS请求的进程和线程。
之所以想要获取线程信息,是因为有时获取到的是系统进程system(PID=4),但是实际上是其中的某个线程发起的DNS请求。
考虑到的解决方案
现有的工具是有办法定位的,但是要么需要多个工具配合比较麻烦,要么工具比较复杂,太重了。因此想写一个小程序实现定位DNS请求进程、线程信息。
但是本人对windows开发不太熟悉,参考网上资料和询问大模型的获取的信息,找到了以下几个方案:
1. ETW监控
使用ETW 追踪 MS-Windows-DNS-Client 相关的事件
优点:
缺点:
- 不依赖操作系统解析的应用程序不受 ETW 追踪 MS-Windows-DNS-Client 影响
- 可能会出现 PID=4 (System 伪进程) 的 DNS 解析
- 只能获取到进程信息,获取不到线程信息
2. 使用gopacket抓包
优点:
缺点:
- gopacket本身不带进程信息,先抓到包再获取进程、线程信息又存在时间窗口的问题,可能获取不到。
3. WFP
编写 WFP Callout 驱动,注册到 FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4 层,捕获 DNS 流量。
优点:
缺点:
- 开发难度大
- ALE好像只能获取到PID信息?获取不到线程信息?同时,也存在无法穿透系统进程(system,PID=4)伪装的问题?
问题
以上哪种实现方式比较好?还有没有其他更好的方案?
谢谢
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课