后门函数技术在二进制对抗中的应用
本次题目跟第七届HWS线下的re2有类似的地方,均有后门函数。
二进制后门可以理解为:我们只需要修改某个字节或某个函数,就可以将加密的过程变成解密的过程,大大节省逆向成本。
本题先对内置的dll进行解密,然后调用其加密函数对我们的txt进行加密,如果我们将加密的函数nop为解密函数,就可以直接解密,类比与RC4动态解密技术。
1、初次分析
0地址异常反调试
本题的一大亮点就是有访问0地址的异常反调试,小伙伴们在做的时候有没有发现调试异常艰难呢
故意访问0地址
然后走作者自定义的处理函数,如果我们在IDA动调的时候不经过处理函数,程序就会卡在哪里不能继续运行。
做法很简单:将访问0地址的代码和异常处理函数完全给nop掉
(说白了:就是将所有跟异常有关的汇编都给nop掉就完事)
处理函数也是完整nop
返回处也nop,跟开头相对应
main函数
分析main函数,发现反编译爆红
很正常,查看汇编代码,发现了异常反调试和异常花指令干扰分析
【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
做法很简单:直接nop即可
具体做法参考:上面一小节,0地址异常反调试
nop
成功生成函数
TLS回调函数
尝试运行,发现直接退出,发现了TLS反调试函数
nop即可
生成函数
将exit函数nop掉即可,不用管反调试的事情了
2、内置DLL资源解密
使用工具打开file_encrypt
发现内置 pe程序,猜测key为0x33,解密
这是程序使用0x33解密
发现了很多加密函数和解密函数(Crypt开头),因此本题程序使用本dll进行加密和解密操作
在后面的分析中,也发现了函数加载了我们的dll
3、关键函数分析
sub_401320
使用IDA动调发现了很多bug,莫名其妙断下,改用x64dbg
sub_402000
路径和盘符有关,比如我在C盘
C:......\document\1.txt
找到1.txt
sub_4017E0
加载dll
sub_4013E0
4、解密
既然使用了encrypto,那么我们改为decrypto就可以啦
I added the missing CryptDecrypt call to the binary's import table and patched the executable to decrypt the files. The decryption call takes one parameter less than the encryption one, so I NOP'ed one push to the
stack as well:
更多网安技能的在线实操练习,请点击这里>>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-07-26 VMPWN的入门级别题目详解(一)
2021-07-26 Windows 取证之EVTX日志