【openQPA】教你DIY进程流量捕获工具

开源项目QPA

起因
最近做病毒分析的时候遇到远控马,需要记录连接的远程地址!用火绒剑或者ProcessMonitr可以看到一部分,但是我想要更全面的信息,于是捣鼓了WireSharkFiddler。Filddler 使用比较简单,但是只能看到http的流量,WireShark 虽然能捕获所有流量,但没法过滤特定进程的包,而且过滤规则对我来说太复杂了。感慨之际找到了一个名为openQPA的开源项目,这里是项目主页

clipboard.png

体验
然后开开心心下载源码下来,程序是用PyQt4写的,还有两个依赖库httplib2dpktpip install安装好后双击 QPA.py 打开程序,第一印象:丑,这布局也太丑了吧!窗口还不能拉伸...

clipboard.png

吐槽了一下界面,然后体验下功能,发现捕获进程包这功能是真的太强了

clipboard.png

还有数据包分析的功能,P.S.这布局我真的很难忍受

clipboard.png

除此之外还能添加数据包分析,总体来说功能十分强大,如果你没有强迫症就使用这个吧!反正我不太能忍受这界面,且我只需要捕获进程数据包那个功能,然后自己用 WireShark 分析数据包。所以就需要在下面这么多文件中定位到捕获进程数据包的代码位置

clipboard.png

调试源码

梳理项目
可以看到项目 ReadMe 中说明了其中几个文件的作用

clipboard.png

然后用VS Codepython插件来调试源码梳理项目流程,开始就是针对性下断点,先猜测功能然后下断点印证,这是个比较漫长的过程,我就不截图了!最后知道数据包分析的文件是analysis2.pydpcap.py以及calc.py,程序的界面主要是在htmlcssjs的地方,Window.py用于初始化界面以及捕获进程包,QPA.py是程序的入口文件。我需要捕获进程数据包功能,所以直接聚焦于Window.pyQPA.py文件

clipboard.png

核心功能定位
先大致看下函数名称,在可疑函数处下断,然后点击开始捕获看程序是否能够断下,过程就是这样!最终找到的两个函数是readCapstopCap

clipboard.png

断点下好后,然后转到QPA.py点击开始调试,程序成功断在stopCap,此处会杀掉了一个Cap.exe的进程

clipboard.png

然后 F11 继续跟,跟到了名为wa的函数,这里会调用connect中的exeCap函数,这个看上去有点像捕获数据包的意思

clipboard.png

exeCap运行前后分别记录下文件的内容,最后证实确实是在connect.exeCap中开始捕获数据包的

clipboard.png

clipboard.png

然后继续向下运行,发现readCap函数是一个类似消息循环的地方,会一直读取数据包然后显示在界面上,直到点击了停止捕获就会跳出循环再次执行stopCap来杀掉进程

clipboard.png

总结一下就是核心捕获进程数据包的功能在connect文件中的exeCap函数

逆向

逆pyc文件
先在项目文件中找到了connect.pyc没有.py源码,为什么会没有源码呢?说明核心功能就在里面

clipboard.png

逆向pyc很简单,先放网上或者下载uncompyle反编译一下,稍微难一点的都是反编译不了的,然后就是看字节码还原python源码,这东西网上有指令照着翻译就行了!但是这个 pyc 挺简单的,在线反编译都能搞定

clipboard.png

原来捕获功能是connect目录下的CAP.exe,通过调试得知参数形式是U H U 1 dir 0,其中 dir 就是目录名

clipboard.png

这几个文件的作用分别是:cap.exe捕获进程数据,.dll是它的运行时库,NIC.exe查看本地网卡,其它的没什么用了,我都 IDA 看了的!WinPcap需要提前装好不然该程序会帮你安装一个

逆Cap.exe
什么保护措施都没有的程序,开始会判断你传入的命令行参数

clipboard.png

然后经过一系列判断后,开始捕获进程数据

clipboard.png

这个程序运行的参数很麻烦,需要这么写cap U H U 1 Dir 0才能捕获进程的流量。由于代码不是非常多,有兴趣可以自己重写一份了。但我不想重写也不想这么复杂,就只有自己patch程序了,思路就是:先一个jmp跳到参数判断之后,然后利用中间的无用数据写一个赋值的代码,之后赋值跳转到上面去赋值再跳转回来。程序修改之后只需要cap dir就能捕获进程的数据包了

clipboard.png

clipboard.png

clipboard.png

P.S.原本项目就是开源的,我还给人把核心功能提出来了,要是再把patch后的程序放出来简直非人哉!所以我就不放打补丁的程序了,有需要的可以私信我!

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值