Ptrace系统调用
攻击者可能通过ptrace(进程跟踪)系统调用将恶意代码注入进程,以规避基于进程的防御并可能提升权限。Ptrace系统调用注入是一种在独立活动进程的地址空间中执行任意代码的方法。 Ptrace系统调用注入涉及附加并修改正在运行的进程。Ptrace系统调用使调试进程能够观察和控制另一个进程(以及每个单独的线程),包括更改内存和寄存器值。(引用: PTRACE手册) Ptrace系统调用注入通常通过将任意代码写入正在运行的进程(例如malloc
)然后使用PTRACE_SETREGS
调用该内存来设置包含下一条指令的寄存器来执行。Ptrace系统调用注入也可以使用PTRACE_POKETEXT
/PTRACE_POKEDATA
完成,这些操作将数据复制到目标进程内存中的特定地址(例如下一条指令的当前地址)。(引用: PTRACE手册)(引用: Medium Ptrace 2018年7月) Ptrace系统调用注入可能无法针对非子进程和/或具有更高权限的进程。(引用: BH Linux注入) 在另一个进程的上下文中运行代码可能允许访问该进程的内存、系统/网络资源,并可能提升权限。通过ptrace系统调用注入执行还可能规避安全产品的检测,因为执行被掩盖在合法进程下。