![ebe2e7b22dab37259a9617c82c51fc75.png](https://i-blog.csdnimg.cn/blog_migrate/748c614adb50fe9d0fdcb3d9b1f247ff.jpeg)
早上在先知社区看见一篇手动PE注入的文章。看起来挺感兴趣,研究了一下
技术交流Q 343202158 个人博客:http://www.ahacker.org
环境
OS:windows 7
工具:
LordPE
OD
HxD
PESecurity-master https://github.com/NetSPI/PESecurity
实验
首先实验PEsecurity检查是否有ASLR
ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的
![e25be4568e775282f43c80fd97591e14.png](https://i-blog.csdnimg.cn/blog_migrate/35c10d897cef2b6d2e5195ee4c08aa7e.jpeg)
无ASLR,那么使用LordPE打开,并新建一个区段
![2ee136ba25a49ae81151dc82858229db.png](https://i-blog.csdnimg.cn/blog_migrate/3363dffd55cfbe1cda6fee7f9afddf34.jpeg)
![b4890d5a7c4f516363ab6954eb40c162.png](https://i-blog.csdnimg.cn/blog_migrate/1b32ae93b5eab2b49cbd0c2636851828.jpeg)
由于新加了一个区段,EXE现在无法打开,使用HxD插入1000个00(就是虚拟大小)
![8303038bd5215e17d6ba66a147888a53.png](https://i-blog.csdnimg.cn/blog_migrate/872645b9ee0e84e3c04cad3fa520c7f4.jpeg)
测试能否正常打开
![50f90c31c7574fd9928d5a6742b09d78.png](https://i-blog.csdnimg.cn/blog_migrate/1aa351276a068a6765e71c212483b119.jpeg)
OD打开找到添加的区段
![6dc937d96e2cb42d3211c97f80efdd53.png](https://i-blog.csdnimg.cn/blog_migrate/5cf303d971f2b855556fd81d650aab8a.jpeg)
将入口点改为
jmp 00412000
![3c1db2c87d08b7fbc129027bf709add3.png](https://i-blog.csdnimg.cn/blog_migrate/04c48d6c01e9854ddcca3440fe5b54ab.jpeg)
之后单独保存为一个exe,然后在打开右键跟随jmp就可以去到定义的空白区段了
![4aa192753a4c8229a7020f6c2c9aa74b.png](https://i-blog.csdnimg.cn/blog_migrate/ca43e776d718db4d48d43f30e8fcdd5d.jpeg)
msfvenom生成一个弹Messagebox的shellcode(32位)
msfvenom -p windows/messagebox text="it's demo" -f hex
(懒得在生成一遍)
![97797504c577ab49b47d6f6b8e6f9fa1.png](https://i-blog.csdnimg.cn/blog_migrate/cc269fb870e4e728692f1f2a098c3c75.png)
复制生成的shellcode,然后在空白区段选中大部分,二进制->二进制粘贴
![3271dad8df5e43391bb9a108af6a07b4.png](https://i-blog.csdnimg.cn/blog_migrate/61cf94bb08cd2a042f7f550570f6a4b3.jpeg)
之后在保存执行即可看见效果
![3bbb0bab43daf18c5bdbf53b8e5cbf65.png](https://i-blog.csdnimg.cn/blog_migrate/bafc8e6d271147f026e22441f7428ab0.png)
恢复程序正常执行,既然执行了我们要的玩意那么就要恢复原来的程序正常执行
PS:生成什么反弹meterpreter和执行命令的shellcode,之后之后貌似无法还原。。。一堆几把问题。弄了一下午
先打开未被修改过的exe在和修改过的exe对比入口点
![f817922542be1029f99247065a30e661.png](https://i-blog.csdnimg.cn/blog_migrate/54213606a28c99902da98c60174ff15a.jpeg)
执行完上面的之后可以看到进入了下一个区段,把区段的地址拿出来
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然后替换为上面的
(修改前)
![c7a59634b3f5a5e7d0d1a17c2474f560.png](https://i-blog.csdnimg.cn/blog_migrate/d1218e7ffbf05fc9fa28392eb35eeb83.jpeg)
(修改后)
![ff3ad1360d60277632226a27ba50d2a5.png](https://i-blog.csdnimg.cn/blog_migrate/615c113ae8856c48d30e5e533f2e7b95.jpeg)
在另存为一个单独的exe,效果如下
![8a0c4afe9b247f38ca7b0d6d27d81edb.gif](https://i-blog.csdnimg.cn/blog_migrate/77468d4554480194e425b3eb6f28593a.gif)
执行calc的
![aa91dbc642f1b8200e7e5fe63378b919.gif](https://i-blog.csdnimg.cn/blog_migrate/0818f30126357d21bada792e6e1eeb79.gif)
为了把calc弄的和上面可以正常返回,开始了折腾数小时的操作…..
- popfd和popad不行 X
- 堆栈平衡,calc好像弹不出 X
堆栈平衡:shellcode之前的ESP-shellcode执行之后的ESP=差值
![812640a3c2c897a069307a69b6de843d.png](https://i-blog.csdnimg.cn/blog_migrate/411d540334e771a92d6a69df88b524a3.jpeg)
![794157c2b1b3d7f1ef83d654db98a898.png](https://i-blog.csdnimg.cn/blog_migrate/e85604c8a46c7b5ecf731e379cc4bb15.jpeg)
尝试F8到calc弹出之后在返回 X
![8c669e7adffa06a6cde452a9061cb4eb.png](https://i-blog.csdnimg.cn/blog_migrate/8565b2e0c02357e62cb361fcc923f8ef.jpeg)
![b2fc38914d90079c01f0160d68a1031f.gif](https://i-blog.csdnimg.cn/blog_migrate/071511537a9354d79c28ceb3417035f4.gif)
尝试和原文反弹nc和meterpreter的,可以是可以。问题和上面如上,不过nc反弹的话海星
![cf91979369b39be9b1523ebae63210c3.png](https://i-blog.csdnimg.cn/blog_migrate/62d1ea8c19a76ff1890ea571d90d5f3f.jpeg)
![b76260bb19ef60a0a7372a311be7ff2c.png](https://i-blog.csdnimg.cn/blog_migrate/4199435a8f4de6071bb8a81092169009.jpeg)
后面十分纠结…问了某dalao说是shellcode的问题
由于本人太垃圾没有找到解决的方法,待定….
后续继续更新文章
自动化的工具使用:
[kali linux捆绑工具shellter的安装及使用
(https://blog.csdn.net/qq_34444097/article/details/79573798)
原文:https://422926799.github.io/posts/76f3e4e2.html