Python如何监控进程启动?

6
有没有办法在Python(最好)或Bash中监视名称为“X”的新进程启动?我知道我可以查看正在运行的进程,但这对我的需求来说不够快。我唯一能想到的是通过某种方式钩入新进程并进行注册,但是如何做到呢?
更多信息:我是CCDC团队的一员(http://www.nationalccdc.org/),属于蓝队。竞赛的前提是提供给学生一个网络以抵御专业渗透测试员的攻击,以帮助下一代安全专家变得更好。我想做的是将此Python脚本加载到Linux机器上,并监视正在运行的特定命令,这些命令可能只由红队使用,例如'chattr'命令。理想情况下,我想能够为脚本提供要监视的进程列表。我可以解决那部分问题,但不知道如何监听进程生成。
任何指导将不胜感激。谢谢。
2个回答

4
我不知道在完全运行的Linux系统上,没有根权限的进程如何被通知另一个进程通过任何方式启动。如果轮询速度不够快,你需要进行一些严重的hackery操作。
如果你有root权限,这是可能的。如果没有,我看不到它的可能性。
有了root权限,你可以设置全局替换fork和exec系统调用,并提供所需的通知。这可以在内核中完成,也可以使用LD_PRELOAD hack。
这不仅适用于Python;即使是C程序,我也不知道有没有“inotify来监控进程创建”。

谢谢您的指导!这听起来就是我想要做的事情。我们有根访问权限到这些盒子。整个比赛都是通过虚拟机运行的。 - Trcx
@Trcx 哦,如果你有root权限,你可以实现一个类似SELinux的MAC系统,完全把它们拒之门外。 - Borealid
问题在于我不知道如何编程实现,但这就是谷歌存在的意义。>_> 谢谢。 - Trcx

1

我没有测试过这个想法,但在Linux上,每个进程都被赋予了一个目录,在/proc/<它的进程ID>/下。如果你在/proc上打开一个inotify来监视目录创建,你也许可以跟踪进程目录的创建,然后查看/proc/<dir>/cmdline是否与你要查找的进程匹配。这只是一个想法,希望能有所帮助!


2
这也是我的想法。不幸的是,由于procfs不是真正的文件系统,它不会通知新目录的inotify :( - nfirvine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接