我正在尝试编写一个脚本来帮助保护计算机安全。我正在尝试查找开放端口、查找 PID 以及查找调用它的人。
我已经让它工作了,我的输出看起来像这样:
IPV4-1234-2566/nc
运行自:/bin/nc.openbsd
命令运行:nc -l 1234
但是,在寻找后门的过程中,我的计算机某处可能有一个脚本会调用nc
。 能否从 的 PIDnc
找到原始脚本的位置?
说在/etc/rc.local
我放了这行字的时候nc -l 1234
,我能得到一些东西来告诉我该nc
命令是由什么打开的/etc/rc.local
吗?
谢谢!
PS:我觉得这比 stackoverflow 更适合这里,因为这个问题是 Linux 的问题,而不是我的脚本的问题。
答案1
要获取父进程的 PID,可以使用以下命令:
ps -ef
它将为您提供一个包含两个 PID 的进程列表。
如果命令是从脚本启动的,那么命令返回的 PPID(父进程 ID)将是启动它的脚本的 PID。
答案2
我最终使用了以下内容:
grep -r "$command" $(ls -l /proc/$pid/cwd | awk '{ print $11 }') | awk -F: '{ print $1 }'
在哪里$command="$(cat /proc/$pid/cmdline | sed 's\x0/ g' | sed 's/.$//')"
这将以递归方式搜索脚本所在目录中的文件以查找包含正在运行的 nc 命令的文件。
看起来有点乱,所以如果有人能帮忙清理一下就好了:)
谢谢大家的帮助!