后门函数技术在二进制对抗中的应用

本次题目跟第七届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:


更多网安技能的在线实操练习,请点击这里>>

  

posted @ 2024-07-26 23:47  蚁景网安实验室  阅读(7)  评论(0编辑  收藏  举报