资讯专栏INFORMATION COLUMN

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

SimonMa / 1442人阅读

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

开源项目QPA

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

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

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

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

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

调试源码

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

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

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

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

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

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

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

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

逆向

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

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

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

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

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

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

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

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

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42727.html

相关文章

  • 手把手教你学Dapr

    摘要:配置配置使用概率抽样。采样率定义了对跟踪跨度进行采样的概率,其值可以介于和含之间。例如,以下配置对象将采样率更改为即每个跨度都被采样,并使用协议将跟踪发送到位于的服务器文件路径注将采样率更改为会完全禁用跟踪。目录手把手教你学Dapr - 1. .Net开发者的大时代手把手教你学Dapr - 2. 必须知道的概念手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序手把手教你学Da...

    qqlcbb 评论0 收藏0
  • 前端之从零开始系列

    摘要:只有动手,你才能真的理解作者的构思的巧妙只有动手,你才能真正掌握一门技术持续更新中项目地址求求求源码系列跟一起学如何写函数库中高级前端面试手写代码无敌秘籍如何用不到行代码写一款属于自己的类库原理讲解实现一个对象遵循规范实战手摸手,带你用撸 Do it yourself!!! 只有动手,你才能真的理解作者的构思的巧妙 只有动手,你才能真正掌握一门技术 持续更新中…… 项目地址 https...

    Youngdze 评论0 收藏0
  • DIY 个机器人 - 收藏集 - 掘金

    摘要:能不能省掉这些烦琐的步骤,让开发人员自己完成呢现在好了,你可以用和把聊天机器人接入微信工具资源掘金今晚看了个电影,回得有点迟。 小花猫-网页聊天机器人 - 前端 - 掘金 基于图灵机器人API的网页聊天机器人,输入二维码+你要说的话有惊喜哦~~~(菜单中的功能尚未开发完成,玩玩聊天功能就好了~)代码开源在https://github.com/ColorfulCa... 了~... (英...

    mrli2016 评论0 收藏0

发表评论

0条评论

SimonMa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<