PE注入
前言
早上在先知社区看见一篇手动PE注入的文章。看起来挺感兴趣,研究了一下
环境
OS:windows 7
工具:
LordPE
OD
HxD
PESecurity-master https://github.com/NetSPI/PESecurity
实验
首先实验PEsecurity检查是否有ASLR
ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的
无ASLR,那么使用LordPE打开,并新建一个区段
由于新加了一个区段,EXE现在无法打开,使用HxD插入1000个00(就是虚拟大小)
测试能否正常打开
OD打开找到添加的区段
将入口点改为
jmp 00412000
之后单独保存为一个exe,然后在打开右键跟随jmp就可以去到定义的空白区段了
msfvenom生成一个弹Messagebox的shellcode(32位)
msfvenom -p windows/messagebox text="it's demo" -f hex
(懒得在生成一遍)
复制生成的shellcode,然后在空白区段选中大部分,二进制->二进制粘贴
之后在保存执行即可看见效果
恢复程序正常执行,既然执行了我们要的玩意那么就要恢复原来的程序正常执行
PS:生成什么反弹meterpreter和执行命令的shellcode,之后之后貌似无法还原。。。一堆几把问题。弄了一下午
先打开未被修改过的exe在和修改过的exe对比入口点
执行完上面的之后可以看到进入了下一个区段,把区段的地址拿出来
00405331 |. 68 A0614000 push Hash.004061A0
最后得出要修改的
push ebp
mov ebp,esp
push -0x1
jmp 00405331
-------------------------------------------------
00412103 90 nop
00412104 9D popfd //恢复堆栈
00412105 61 popad //恢复堆栈
00412106 55 push ebp
00412107 8BEC mov ebp,esp
00412109 6A FF push -0x1
0041210B - E9 2132FFFF jmp Hash7.00405331 //跳转到下一个区段00405331
找到shellcode最后的call然后替换为上面的
(修改前)
(修改后)
在另存为一个单独的exe,效果如下
执行calc的
为了把calc弄的和上面可以正常返回,开始了折腾数小时的操作…..
- popfd和popad不行 X
- 堆栈平衡,calc好像弹不出 X
堆栈平衡:shellcode之前的ESP-shellcode执行之后的ESP=差值
尝试F8到calc弹出之后在返回 X
尝试和原文反弹nc和meterpreter的,可以是可以。问题和上面如上,不过nc反弹的话海星
后面十分纠结…问了某dalao说是shellcode的问题
由于本人太垃圾没有找到解决的方法,待定…..
自动化的工具使用:
[kali linux捆绑工具shellter的安装及使用(https://blog.csdn.net/qq_34444097/article/details/79573798)
参考链接
Fully undetectable backdooring PE file
手工shellcode注入PE文件 - 先知社区
[原创]使用“PE文件加区段工具”、“LordPE”、“WinHex”、“OllyDbg”为PE文件添加section、dll(API)-『软件逆向』-看雪安全论坛
PE文件 – backup
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:PE注入
本文作者:九世
发布时间:2019-12-18, 17:00:34
最后更新:2019-12-18, 18:26:31
原始链接:http://jiushill.github.io/posts/76f3e4e2.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。