进程列表:/bin/sh -e /proc/self/fd/11

进程列表:/bin/sh -e /proc/self/fd/11

我懂了:

  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与您的管道对应的列中的索引节点号。 (它可能会列为FIFOSOCKET在列中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.

相关内容