查找进程的父进程

查找进程的父进程

我正在尝试编写一个脚本来帮助计算机安全。我正在尝试寻找开放的端口,找到 PID,并找到调用它的内容。

我让它工作了,我的输出看起来像这样:

IPV4 - 1234 - 2566/nc
Running from: `/bin/nc.openbsd`
Command run: `nc -l 1234`

我能够从哪里获得这些值netstat/proc/$PID/exe以及/proc/$PID/cmdline

然而,在寻找后门的本质上,我的计算机上的某个地方可能有一个脚本,它会调用nc.是否可以从 的 PIDnc找到原始脚本位置?我尝试查看其他文件,但/proc/$PID/*无济于事。

比如说/etc/rc.local我输入了一行nc -l 1234,我能得到一些东西来告诉我 nc 命令是由打开的/etc/rc.local吗?

答案1

要可移植地(POSIXly)获取进程的父 PID,您可以使用:

ps -p "$PID" -o ppid=

或(在 Linux 上):

grep '^PPid' "/proc/$PID/status" |cut -f2

更多方法请参见https://superuser.com/questions/150117/how-to-get-parent-pid-of-a-given-process-in-gnu-linux-from-command-line

答案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/.$//')"

它将递归地 grep 遍历脚本所在目录中的文件,以查找包含运行 nc 命令的命令行的文件。

看起来有点乱,所以如果有人能帮忙清理一下那就太好了:)

感谢各位的帮助!

答案3

您可以使用以下命令获取 pid 运行位置

ls -l /proc/PID_id/cwd

相关内容