我懂了:
PID TTY STAT TIME COMMAND
2 ? S 0:00 [kthreadd]
3 ? S 0:00 \_ [migration/0]
:
844 ? S 0:00 \_ [vmmemctl]
1 ? Ss 0:02 /sbin/init
306 ? S 0:00 upstart-udev-bridge --daemon
309 ? S<s 0:00 udevd --daemon
445 ? S< 0:00 \_ udevd --daemon
446 ? S< 0:00 \_ udevd --daemon
668 ? Ss 0:00 dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0
713 ? Sl 0:00 rsyslogd -c4
717 ? Ss 0:00 dbus-daemon --system --fork
947 ? S 0:03 /usr/sbin/vmtoolsd
991 tty2 Ss+ 0:00 /sbin/getty -8 38400 tty2
1000 ? Ss 0:00 cron
1001 ? Ss 0:00 atd
1137 ? Sl 0:00 /usr/sbin/console-kit-daemon --no-daemon
1476 tty1 Ss+ 0:00 /sbin/getty -8 38400 tty1
9939 ? Ss 0:00 /bin/sh -e /proc/self/fd/11
9993 ? S 0:00 \_ sleep 1
知道最后一个进程 9939 是怎么回事吗?我以前从未见过这样的东西......它只是不断地自行产生一个新的 PID。
答案1
bash
支持很多单字符命令行选项:
All of the single-character shell options documented in the
description of the set builtin command can be used as options
when the shell is invoked. In addition, bash interprets the
following options when it is invoked:
set -e
有点复杂:
-e Exit immediately if a pipeline (which may
consist of a single simple command), a
subshell command enclosed in parentheses, or
one of the commands executed as part of a
command list enclosed by braces (see SHELL
GRAMMAR above) exits with a non-zero status.
....
看起来这bash(1)
是正在执行 的内容/proc/self/fd/11
。无论产生什么,它都可能启动 apipe(2)
并希望发送命令以bash(1)
随着时间的推移执行。该sleep(1)
命令可能是通过该管道执行的。脚本中的下一行很可能是重新启动一个新的bash -e /proc/self/fd/11
. (也许是从父母bash -e /proc/self/fd/11 11</dev/fd/11
传播11
到孩子?)
要找出哪个进程在驱动您bash(1)
,请运行lsof -p 9939
.记下NODE
与您的管道对应的列中的索引节点号。 (它可能会列为FIFO
或SOCKET
在列中TYPE
,或pipe
在列中NAME
。)然后运行lsof | grep inode_number
- 使用与该文件描述符关联的任何 inode 号。
这是一个很奇怪的现象,我倾向于认为它是攻击者工具包的一部分。虽然这可能是合理的,但我非常怀疑。我建议仔细扫描您的日志,也许考虑运行http://www.chkrootkit.org/在您的系统上,调查防火墙处的所有传入和传出连接等。通常的偏执。
答案2
您可以执行pwdx 9939
查看进程来自哪里。
pwdx
是 proc 工具的一部分,一组实用程序「运动特点/proc
」,根据 Solarisman
页面。
关于pwdx
:
pwdx Print the current working directory of
each process.