这道题么打出来,最近几天出去了,发现看雪工作号wp已经帖出,看了下算法,厉害...:
https://bbs.pediy.com/thread-256272.htm
后续分析我就中断了,但是笔记还是发出来留一下:
南充是个好地方,茶坊更是好生不错,虽然没去过,但闻三月刚好。双击后就已知在其它路径下执行了CM.exe,但是还是想分析一下主程序,要不作者就白写了:
创建RarSFX0:
WinRAR 解压方式:
setup=cm.exe TempMode Silent=1 Overwrite=1
ShellExecuteExW执行了CM.exe:
压缩壳展开:
第一阶段解压PE:
加载IAT:
PE DUMP:
动态跟踪后,释放了Python静态编译库,不知所然:
一路到CreateProcess(),创建新进程附加新CM.exe,有意思的是全是Python模块进行调用:
综合上述有两种可能,C++调用Python,第二种Python打包成exe(pyinstaller以前分析Xbash恶意软件,恰好分析过Xbash恶意软件,学习过pyinstaller跨平台恶意代码),程序在Temp下释放的静态Py环境,_MEIXXXX则是最好的证明。
贴一下原来写的博客,介绍一下pyinstaller:
pyc提取:https://github.com/pyinstaller/pyinstaller/blob/develop/PyInstaller/utils/cliutils/archive_viewer.py
关注的s标志段中name是本身文件名:
简单分析了一下提取脚本与维护格式:
X的命令去提取pyc,可以默认:
pyinstaller打包后会丢失pyc字节码,可以看出打包模块都是py3.7,少了第一行结构:
添加完整的字节码,EasyPythonDecompiler工具还原报错,换uncompyle6即可,还原出CM.py:
坑来了,缺少模块CMpub与general,函数名是可以猜到模块作用。具体解决方案尝试了一下没成功(研究不到位),按道理说一定会将依赖.py释放到临时文件夹或_MEIxx文件夹中,加载后模块看一下导入表导出表(那么多模块中一定有),不就结了,尝试还原出from模块:
创建新进程,X64附加下断,或者另起一个新进程:
附加,下多个断点稳妥一些,输入UserName之后下断,NtDeviceIoControlFile,地址来看在kernelbase32.dll模块中,栈回溯跟两步找模块:
后续就不贴了py逆向模块就不贴出了,主要不完善。
首先看上去就是RSA了:
虽然模块么提取成功,但是还是简单分析了一下:
上述算法,如果username可控,也就是seq可控,完全可以控制账户生成随机数223344,先pow、后enc0,这样check()函数输入即输出。
但是题目已经给出了username=KCTF,那就没有投机取巧可言,是个真RSA,因为看汇编撸的Python函数验证函数,撸了检测与get_enc_seq(部分),还是需要多学习。
[公告]安全测试和项目外包请将项目需求发到看雪企服平台:https://qifu.kanxue.com
最后于 13小时前 被一半人生编辑 ,原因: