内存马原理,无落地文件。如果觉得难度高,可以使用
gdb
的set
命令来设置内存的值感受一下译自https://medium.com/@jain.sm/code-injection-in-running-process-using-ptrace-d3ea7191a4be
书接上一回缓冲区溢出的shellcode 攻击,我们通过一个简单例子展示使用ptrace
来利用运行中的进程。
ptrace
是用于调试或修改其它程序的系统调用。我们需要特定的权限才能够使用ptrace
.
利用的原理如下:
pid
当作输入,并且使用ptrace
的PTRACE_ATTACH
选项来附加到这个进程,被调试进程就停止,而调试者就控制了被调试进程。ptrace
的PTRACE_GETREGS
来获取运行进程的寄存器。这也会返回指令寄存器,所以我们会知道被调试进程的指令上下文shellcode
注入到RIP
(64位指令寄存器)指向的地址。所以在下面函数inject_code
,会看到ptrace
调用时用到PTRACE_POKETEXT
,同时输入还有运行进程的pid
,目标地址(RIP
指向位置) ,shellcode
在这个例子,我们不打算把控制权交回给被调试进程。
代码如下:
只要有足够权限运行ptrace
,动态代码注入是调试器或恶意注入的常用手段。
目标进程运行如下
运行注入程序对目标进程注入
注入后的结果
你可以看到shell
产生了。
暗号:1eb29