T1036.011: 覆盖进程参数

Stealth

摘要

攻击者可能修改进程的内存中参数以更改其名称,从而看起来像合法或无害的进程。在 Linux 上,操作系统将命令行参数存储在进程栈中,并作为 `argv` 数组传递给 `main()` 函数。第一个元素 `argv[0]` 通常包含进程名称或路径——默认情况下,是实际用于启动进程的命令(例如 `cat /etc/passwd`)。默认情况下,Linux `/proc` 文件系统使用此值来表示进程名称。`/proc/<PID>/cmdline` 文件反映此内存的内容,`ps` 等工具用它来显示进程信息。由于参数在启动时存储在用户空间内存中,因此此修改可以在没有提升权限的情况下执行。 在运行时,攻击者可以擦除进程所有命令行参数所用的内存,用空字节覆盖每个参数字符串。这消除了进程最初如何启动的证据。然后他们可以将一个伪造的字符串写入先前由 `argv[0]` 占用的内存区域,以模仿无害的命令,例如 `cat resolv.conf`。新的命令行字符串反映在 `/proc/<PID>/cmdline` 中,并由 `ps` 等工具显示。(Citation: Sandfly BPFDoor 2022)(Citation: Microsoft XorDdos Linux Stealth 2022)

来源归属

来源:MITRE ATT&CK · 置信度:high

平台

  • Linux

战术

Stealth

参考来源