2012-02-05 30 views
5

有沒有什麼辦法可以從python(理想)或bash開始,觀察名爲'X'的新進程?我知道我可以查看正在運行的進程,但這不足以滿足我的需求。我能想到的唯一想法就是如何掛鉤新的流程,並註冊,但是如何?Python正在關注進程啓動?

更多背景:我是CCDC團隊的一員(http://www.nationalccdc.org/),我是藍隊。競賽的前提是給學生一個網絡來防禦專業筆測試人員,幫助下一代安全專家變得更好。我想要做的就是在Linux機器上加載這個python腳本,並觀察正在運行的某些命令,這些命令可能只會被紅隊使用,例如'chattr'命令。理想情況下,我希望能夠爲腳本提供要觀看的進程列表。我可以弄清楚這一部分,但不知道如何觀察產卵過程。

任何方向表示讚賞。謝謝。

回答

4

我知道在完全運行的Linux系統上通過任何方式啓動進程時,無法通知沒有root權限的進程。如果投票速度不夠快,你將不得不做一些嚴重的黑客行爲。

如果你有根,這是可能的。如果不是,我看不到它。

使用root用戶,您可以設置系統調用的forkexec系統調用,從而爲您提供所需的通知。這可能在內核中,或者它可能是一個LD_PRELOAD黑客。

這不僅適用於Python;即使使用C程序,我也不知道「inotify進程創建」。

+0

謝謝你的指導!這聽起來像我想做的事情。我們確實擁有root權限。整個比賽都是通過虛擬機進行的。 – Trcx 2012-02-05 05:45:23

+0

@Trcx哦,如果你有root用戶,你可以實現一個像SELinux一樣的MAC系統,並將它們全部保存。 – Borealid 2012-02-05 06:06:16

+0

問題是我沒有如何做到這一點的編程知識,但這就是谷歌的目的。 > _>謝謝。 – Trcx 2012-02-05 16:29:03

1

我沒有測試過這種想法,但在Linux上如果您在/proc上創建目錄打開一個inotify的,如果/proc/<dir>/cmdline過程相匹配,你可能能夠跟蹤過程目錄的創建,然後查看每個進程/proc/<it's process id>/下給出一個目錄你在尋找。這只是一個想法,希望它有幫助!

+2

這也是我的想法。不幸的是,這似乎是因爲procfs不是一個真正的fs,它並沒有inotify新的目錄:( – nfirvine 2012-02-07 16:57:02