微步2022 攻防演习总结中https://mp.weixin.qq.com/s/8chNYrstha_dwuClJzyCNA 提到了一个比较新颖的攻击技术-白文件patch,发现很少有相关的资料就自己尝试构造并记录了一下构造的过程。
思路:
修改白文件的程序执行流程,找到合适的位置插入call patch 指令,patch中可以存放任意在恶意代码,在执行白文件的同时执行恶意代码
实现:
拿一个签名程序Everything举例
1.首先在程序中添加一个区段,可以借助studyPE,注意赋予可读可写可执行属性,到时候用来存放我们的Patch
2.od打开修改后的文件,查看M-内存布局,可以看到我们刚才添加的节
3.接下来我们只需要在Everything执行过程中找到一处不影响程序正常执行的位置,CALL到这个节的首地址
001F43C4这里连续有两个CALL,第二个CALL没有调用任何参
我们把第二个CALL NOP掉 ,再试一下会不会影响程序正常执行
NOP掉后程序可以正常执行
OD重载程序再次找到刚才的位置把第二个call的地址改成CALL Path的地址 及刚才添加的zaas节的首地址CALL 00305000
选中-复制到可执行文件-保存
再次加载新文件,在上次修改的call的地方填充自己准备好的Shellcode(可以是自己写好的经免杀处理的Shellcode,红队的童鞋们都懂的~我这里拿calc演示)
解析保存内容 选中-复制到可执行文件-保存
我们再次执行新文件,发现程序在正常打开的同时成功执行Shellcode
查看一下属性,跟原版相比少了些什么。由于文件被改动,数字签名已经失效
我们可以再伪造一下数字签名,我这里用的是开源项目SigThief,具体使用方法大家自己看吧: https://github.com/secretsquirrel/SigThief
再次打开几乎和真正的程序一模一样,不看详细的签名信息是看不出来问题的
至此,白文件Patch的免杀已制作完成!
标签:文件,免杀,程序,patch,CALL,执行,Shellcode From: https://www.cnblogs.com/zhaoyixiang/p/16590550.html