Python 如何监控进程启动?
有没有办法在Python(最好是)或Bash中监控一个名为'X'的新进程启动?我知道可以查看正在运行的进程,但那样速度太慢,满足不了我的需求。我能想到的就是以某种方式连接到新进程,并进行注册,但该怎么做呢?
更多背景信息:我是一支CCDC团队的一员(http://www.nationalccdc.org/),属于蓝队。比赛的前提是给学生提供一个网络,让他们防御专业的渗透测试人员,以帮助下一代安全专家变得更优秀。我想做的是在Linux机器上加载这个Python脚本,监控一些特定的命令,这些命令可能只会被红队使用,比如'chattr'命令。理想情况下,我希望能够给脚本提供一个要监控的进程列表。我能搞定这部分,但不知道怎么监控进程的启动。
任何方向的建议都非常感谢。谢谢。
2 个回答
1
我还没有测试过这个想法,但在Linux系统中,每个进程都会在/proc/<进程ID>/
下有一个自己的目录。如果你在/proc
目录下监控新目录的创建,可能就能追踪到进程目录的生成,然后查看/proc/<目录>/cmdline
是否和你要找的进程匹配。这只是一个想法,希望对你有帮助!
4
我不知道在一个完全运行的Linux系统上,普通用户(没有管理员权限)如何被通知到某个进程是通过任何方式启动的。如果你一直在轮询(不断检查),但速度又不够快,那你可能需要做一些复杂的黑科技。
如果你有管理员权限,这个事情是可以做到的。如果没有,我就想不出有什么办法。
有了管理员权限,你可以设置一个系统范围内的替代方案,来替换掉fork
和exec
这两个系统调用,这样就能得到你想要的通知。这可以在内核中实现,也可以通过LD_PRELOAD
的方式来搞定。
这不仅仅适用于Python;即使是C语言程序,我也不知道有什么类似于“进程创建的inotify
”的东西。