記錄 execve 以及父進程 argv?

記錄 execve 以及父進程 argv?

我正在嘗試弄清楚是否可以停用舊伺服器。我需要有關在那裡運行的自動化流程的資訊。到目前為止,我嘗試了以下方法:

auditctl -a exit,always -F arch=b64  -S execve -k any-commands

在日誌分析階段,我發現缺少兩個上下文:

  1. 這些程序是如何執行的?它們的父親進程是什麼?
  2. 標準輸入/標準輸出去了哪裡?理想情況下,我希望看到 shell 命令被重構,但我知道我可能要求太多,所以至少有管道描述符 ID 就可以了(這樣我就可以嘗試用我自己的腳本重新建構它)。

我該如何解決這樣的問題?

答案1

系統execve調用替換當前進程。如果一個程式想要在啟動另一個程式後保留控制權,則需要先建立一個新進程(使用forkvfork),然後呼叫execve

開啟的檔案描述符和權限在程式映像替換時被接管execve(標記有標誌的除外CLOEXEC),因此開啟的檔案在 期間從父進程繼承,然後在和fork之間修改(例如使用),最後在 期間過濾的電話。forkexecvedup2execve

因此,從審計數據中獲得完整的情況將很困難。

相關內容