本推文提供的信息、技术和方法仅用于教育目的。文中讨论的所有案例和技术均旨在帮助读者更好地理解相关安全问题,并采取适当的防护措施来保护自身系统免受攻击。
严禁将本文中的任何信息用于非法目的或对任何未经许可的系统进行测试。未经授权尝试访问计算机系统或数据是违法行为,可能会导致法律后果。
作者不对因阅读本文后采取的任何行动所造成的任何形式的损害负责,包括但不限于直接、间接、特殊、附带或后果性的损害。用户应自行承担使用这些信息的风险。
我们鼓励所有读者遵守法律法规,负责任地使用技术知识,共同维护网络空间的安全与和谐。
-
起因:一位师学员溯源我前面在正式群里发的钓鱼后门
-
但是他只是把我用pyinstaller打包的远控马子反编译出了pyc,而且只有一个入口文件,因为我是做了混淆加密的
-
pyc反编译网站
https://pylingual.io/ (这个好用点)
https://www.lddgo.net/string/pyc-compile-decompile (这个反编译不全)
反编译exe
-
首先把钓鱼exe文件,反编译成pyc,python exe反编译,入口文件为main.pyc,反编译出来就是上面那几行代码
找key
-
现在我们需要找到这个加载的包,loader,全局搜索带loader关键字的文件,有两个
-
但是,格式为pyc.encrypted,被加密过的,使用pyinstaller 打包,可以使用--key参数来加密,但是这个密钥也是在这个exe里的,通过exe反编译成pyc,可以找到,pyimode00_crypto_key.pyc文件
-
通过上面的反编译pyc网站,反编译这个文件得到key
反编译加密的pyc
-
现在我们拿到了key,就可以去反编译loader.pyc.encrypted文件了,也就是钓鱼马的核心文件,loader包
-
编写解密代码(完整代码只对学员开放),填入密钥8r4cl9ya8PKxhEuN,4.0以下和4.0以上是有区别的,具体自行查阅资料吧
-
需要注意的是,各个版本的header头是不一样的,举几个例子
Python 2.7: x03xf3x0dx0a����
Python 3.0: x3bx0cx0dx0a����
Python 3.1: x4fx0cx0dx0a����
Python 3.2: x6cx0cx0dx0a����
Python 3.3: x9ex0cx0dx0a��������
Python 3.4: xeex0cx0dx0a��������
Python 3.5: x17x0dx0dx0a��������
Python 3.6: x33x0dx0dx0a��������
Python 3.7: x42x0dx0dx0a������������
Python 3.8: x55x0dx0dx0a������������
Python 3.9: x61x0dx0dx0a������������
Python 3.10: x6fx0dx0dx0a������������
-
然后运行反编译这个loader包,这个就是反编译出来的pyc文件
-
注意:如果你使用pycharm运行代码,反编译后,是看不到pyc文件的,因为pycharm隐藏了此类型文件,需要手动打开,删除pyc类型
-
再将pyc拿去反编译出源码,得到核心loader代码
调试
-
打断点调试,拿到shellcode
参考文档
https://blog.csdn.net/GalaxySpaceX/article/details/130591614
https://www.cnblogs.com/hhdom/p/18261105
原文始发于微信公众号(Zer0 sec):Python逆向之我逆向我自己的马子
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论