findstream氓Perl脚本

我一直在试图找出一个perl脚本的位置,这对我控制的服务器造成严重破坏。 我也试图找出这个脚本是如何安装在服务器上 – 我最好的猜测是通过WordPress的利用。

该服务器是运行Ubuntu 9.04,Apache和MySQL的基本Web设置。 我使用IPTables作为防火墙。 该网站运行大约20个站点,负载不会超过0.7。

从我所看到的脚本正在与其他服务器(最有可能试图蛮力的进入)出站连接。

这里是其中一个进程的顶部转储:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 22569 www-data 20 0 22784 3216 780 R 100 0.2 47:00.60 perl 

进程运行的命令是/usr/sbin/sshd 。 我试图find一个确切的文件名,但我没有运气…我已经运行一个lsof -p PID ,这里是输出:

 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME perl 22569 www-data cwd DIR 8,6 4096 2 / perl 22569 www-data rtd DIR 8,6 4096 2 / perl 22569 www-data txt REG 8,6 10336 162220 /usr/bin/perl perl 22569 www-data mem REG 8,6 26936 170219 /usr/lib/perl/5.10.0/auto/Socket/Socket.so perl 22569 www-data mem REG 8,6 22808 170214 /usr/lib/perl/5.10.0/auto/IO/IO.so perl 22569 www-data mem REG 8,6 39112 145112 /lib/libcrypt-2.9.so perl 22569 www-data mem REG 8,6 1502512 145124 /lib/libc-2.9.so perl 22569 www-data mem REG 8,6 130151 145113 /lib/libpthread-2.9.so perl 22569 www-data mem REG 8,6 542928 145122 /lib/libm-2.9.so perl 22569 www-data mem REG 8,6 14608 145125 /lib/libdl-2.9.so perl 22569 www-data mem REG 8,6 1503704 162222 /usr/lib/libperl.so.5.10.0 perl 22569 www-data mem REG 8,6 135680 145116 /lib/ld-2.9.so perl 22569 www-data 0r FIFO 0,6 157216 pipe perl 22569 www-data 1w FIFO 0,6 197642 pipe perl 22569 www-data 2w FIFO 0,6 197642 pipe perl 22569 www-data 3w FIFO 0,6 197642 pipe perl 22569 www-data 4u IPv4 383991 TCP outsidesoftware.com:56869->server12.34.56.78.live-servers.net:www (ESTABLISHED) 

我的直觉是outsidesoftware.com也受到攻击? 或者可能被用作隧道。

我已经设法在/tmp/var/tmpfind一些stream氓文件,下面是其中一个文件的简短输出:

 #!/usr/bin/perl # this spreader is coded by xdh # xdh@xxxxxxxxxxx # only for testing... my @nickname = ("vn"); my $nick = $nickname[rand scalar @nickname]; my $ircname = $nickname[rand scalar @nickname]; #system("kill -9 `ps ax |grep httpdse |grep -v grep|awk '{print $1;}'`"); my $processo = '/usr/sbin/sshd'; 

完整的文件内容可以在这里查看: http : //pastebin.com/yenFRrGP

我想在这里实现一些事情…

  1. 首先,我需要停止这些进程运行。 无论是通过禁用出站SSH或任何IP表规则等…这些脚本已经运行了大约36个小时,我主要关心的是停止这些事情自己运行和重新生成。

  2. 其次我需要尝试来源和安装这些脚本的方式。 如果任何人有什么build议要在访问日志或其他任何东西,我会很感激。

永远不要允许不可信用户可以写文件的文件系统上的'exec'位! 更新你的/ etc / fstab并重新安装,或者更好的重启服务器。

在这里,你(终于)意识到,防火墙并不是想要“保护”你免受来自外部的一些愚蠢的攻击。 您还必须具有传出stream量的防火墙规则! 或者至less你应该有一些监测传出的stream量。 好的,WordPress的想通过http(?)更新自己,但为什么一些networking应用程序连接到SSH,IRC等…?

接下来的事情…啊,它运行在“www-data”下的所有网站。 太好了 你应该更好地devise它。 在自己分离的uid下运行每个用户客户端。 你可以使用php-fpm或类似的东西。 这样你就可以更好地查看用户的活动,甚至可以通过基于用户标识的iptablesstream量进行过滤…用户的“foobar”是否需要他的web应用连接到irc服务器? 那么比为此特定用户添加规则更简单。

还有一点… Ports <1024只能由root用户绑定。 那么你应该对1024以上的侦听端口进行一些监控,这样用户就不会有在服务器上监听的守护进程了。

你也可以考虑chrooting的networking应用程序…

如果任何不受信任的用户可以运行自己的二进制文件,服务器上的脚本,那么有权访问用户服务器,或者他们可以使用您的资源来进行其他操作。

关于保护PHP托pipe的一些有趣的信息: Linux:25系统pipe理员的PHP安全最佳实践

你说:“我也试图找出这个脚本是如何安装在服务器上的 – 我最好的猜测是通过一个WordPress漏洞攻击。这个服务器是运行Ubuntu 9.04的一个基本的web安装程序”

Ubuntu 9.04是一个非长期支持版本,并于2010年底停止接收更新:

https://lists.ubuntu.com/archives/ubuntu-security-announce/2010-September/001166.html

所以基本上你的SSH,Apache和所有服务都没有收到安全更新的年龄! 你最好的办法是把这个服务器视为“丢失”,而不是花时间去追逐剧本。 你可以有rootkit和所有其他种类的nastiness。 将服务迁移到仍然具有即将到来时间更新的操作系统上的干净的盒子,例如CentOS 6或Ubuntu 12.04 LTS Server。