23-23

如果多进程下,A 进程的 Source 触发到了 B 进程的 sink 点,如何溯源

1. 识别并关联进程间通信(IPC)

首先,你需要将进程 A 的 source 和进程 B 的 sink 关联起来

  • 监控 IPC 调用:在两个进程中,同时监控所有 IPC 相关的系统调用。在 Linux 上,这可能包括 pipe(), socket(), shmget(), msgget() 等。在 Windows 上,这可能是命名管道、共享内存的 API 调用
  • 记录数据流:不仅要记录 IPC 调用,还要记录通过 IPC 传递的数据内容。这是将 sourcesink 联系起来的关键。例如,如果进程 A 通过管道写入了一个特定的恶意数据,你需要记录下这个数据,然后追踪它是否被进程 B 从管道中读出
  • 使用动态分析工具:利用动态分析工具来自动化这个过程
    • Frida/Ptrace:你可以编写脚本,利用 Frida 或 Ptrace 这样的动态插桩框架,在两个进程中同时 Hook 所有 IPC 相关的函数
    • eBPF:在 Linux 上,eBPF 是一个强大的工具。你可以编写 eBPF 程序,在内核层面监控所有进程间的通信,并记录下通信的数据和进程 ID。这比用户态 Hooking 更稳定、更难以被绕过