使用ptrace对运行的进程进行代码注入(文末暗号)
2023-2-1 08:1:25 Author: 奶牛安全(查看原文) 阅读量:14 收藏


内存马原理,无落地文件。如果觉得难度高,可以使用gdbset命令来设置内存的值感受一下

译自https://medium.com/@jain.sm/code-injection-in-running-process-using-ptrace-d3ea7191a4be

书接上一回缓冲区溢出的shellcode 攻击,我们通过一个简单例子展示使用ptrace来利用运行中的进程。

ptrace是用于调试或修改其它程序的系统调用。我们需要特定的权限才能够使用ptrace.

利用的原理如下:

  1. 编写一个程序,它把运行进程的pid当作输入,并且使用ptracePTRACE_ATTACH选项来附加到这个进程,被调试进程就停止,而调试者就控制了被调试进程。
  2. 在附加上去之后,通过使用ptracePTRACE_GETREGS来获取运行进程的寄存器。这也会返回指令寄存器,所以我们会知道被调试进程的指令上下文
  3. 我们把shellcode注入到RIP(64位指令寄存器)指向的地址。所以在下面函数inject_code,会看到ptrace调用时用到PTRACE_POKETEXT,同时输入还有运行进程的pid,目标地址(RIP指向位置) ,shellcode

在这个例子,我们不打算把控制权交回给被调试进程。

代码如下:

img

只要有足够权限运行ptrace,动态代码注入是调试器或恶意注入的常用手段。

目标进程运行如下

img

运行注入程序对目标进程注入

img

img

注入后的结果

img

你可以看到shell产生了。

暗号:1eb29


文章来源: http://mp.weixin.qq.com/s?__biz=MzU4NjY0NTExNA==&mid=2247488152&idx=1&sn=28684acec42b175bb02a250663c4fa5a&chksm=fdf9798dca8ef09ba9cf5080afc4f372941641d3040d4fc1003e653e9c284c476435ed822bf9#rd
如有侵权请联系:admin#unsafe.sh