痛苦地删除了Perl Rootkit


8

因此,我们在办公室托管了一个地理服务网络服务器。

显然有人闯入了这个盒子(可能是通过ftp或ssh),并放入了某种由irc管理的rootkit。

现在,我正在尝试清理整个过程,我发现进程pid试图通过irc连接,但是我不知道是谁在调用进程(已经使用ps,pstree和lsof查找)了,该进程是一个perl。脚本归www用户所有,但ps aux | grep在最后一列显示伪造的文件路径。

还有另一种方法来跟踪该pid并捕获调用方吗?

忘了说了:内核是2.6.23,可以利用它成为root,但是我不能过多地触摸这台机器,所以我不能升级内核

编辑:lsof可能会帮助:

lsof -p 9481
命令PID用户FD类型设备大小节点名称ss
perl 9481 www cwd DIR 8,2 608 2 / ss
perl 9481 www rtd DIR 8,2 608 2 / ss
perl 9481 www txt REG 8,2 1168928 38385 / usr / bin / perl5.8.8ss
perl 9481 www mem REG 8,2 135348 23286 /lib64/ld-2.5.soss
perl 9481 www mem REG 8,2 103711 23295 /lib64/libnsl-2.5.soss
perl 9481 www mem REG 8,2 19112 23292 /lib64/libdl-2.5.soss
perl 9481 www mem REG 8,2 586243 23293 /lib64/libm-2.5.soss
perl 9481 www mem REG 8,2 27041 23291 /lib64/libcrypt-2.5.soss
perl 9481 www mem REG 8,2 14262 23307 /lib64/libutil-2.5.soss
perl 9481 www mem REG 8,2 128642 23303 /lib64/libpthread-2.5.soss
perl 9481 www mem REG 8,2 1602809 23289 / lib64 / libc -2.5.soss
perl 9481 www mem REG 8,2 19256 38662 /usr/lib64/perl5/5.8.8/x86_64-linux-threa d-multi / auto / IO / IO.soss
perl 9481 www mem REG 8,2 21328 38877 /usr/lib64/perl5/5.8.8/x86_64-linux-threa d-multi / auto / Socket / Socket.soss
perl 9481 www mem REG 8,2 52512 23298 /lib64/libnss_files-2.5.soss
perl 9481 www 0r FIFO 0,5 1068892管道
perl 9481 www 1w FIFO 0,5 1071920管道
perl 9481 www 2w FIFO 0,5 1068894管道
perl 9481 www 3u IPv4 130646198 TCP 192.168.90.7:60321->www.****.net:ircd(SYN_SENT)


2
除非您升级内核,否则什么是阻止黑客在删除rootkit后立即重复进行黑客攻击?很可能有一个木马内核模块可以隐藏进程。
pjc50

这看起来非常相似的IRC僵尸DDOS我只是擦掉了我的VPS:serverfault.com/questions/639699/...
海登思林

Answers:


37

如果我可以给您任何建议,那就是不要浪费您的时间进行清理。为操作系统创建映像以供日后取证,然后只需重新安装服务器即可。

抱歉,但这是解决被rootkitkit困扰的唯一安全方法。

稍后,由于某些原因,您可以检查图像为什么会发生。

根据我个人的经验,我这样做了,后来在2008年发现了一个内部用户,该用户的SSH密钥包含openssl的漏洞。

我希望,它可以清除一切。

注意:
如果要在重新安装之前对服务器进行映像/备份,请非常小心如何操作。正如@dfranke所说,从受信任的介质引导到备份。

您不应该从有根服务器连接到其他计算机,因为众所周知,强大的rootkit可以通过受信任的会话(例如SSH)进行传播。


11
我强烈赞同这个建议。您已经找到了一个rootkit,但是您完全不知道攻击者还篡改了什么。一旦生根,就永远生根。从受信任的介质引导,将驱动器归零。Fdisk,格式化,重新安装,doo dah,doo dah。
dfranke

是的。。。好的根工具包在您的内核下运行。.没有机会就可以删除它们
Arenstar 2010年

4
+1对于任何生产系统(实际上是任何系统),都无需清洁。用火杀死它并重建。
phoebus

1
+1重新安装。Rootkit可能会弄乱您的二进制文件或内核,并且您所看到的所有内容(伪路径等)都可能是从Rootkit中冒出来的,以掩饰自己。
coredump

1
义务 quote:“我说我们要起飞并从轨道上对整个站点进行核弹。这是唯一可以确定的方法。”
查尔斯·斯图尔特

1

如果进程更改了argv [0],则可以更改命令行。尝试ls -l /proc/[pid]/exe

man 5 proc

该文件是一个符号链接,其中包含已执行命令的实际路径名。可以正常取消引用此符号链接。尝试将其打开将打开可执行文件。您甚至可以键入/ proc / [number] / exe来运行与进程[number]相同的可执行文件的另一个副本。在多线程进程中,如果主线程已经终止,则此符号链接的内容不可用

ps auxwf | less 为您提供进程的“林视图”,可以显示哪个进程启动了此进程(除非rootkit隐藏了它,或者应用程序的父级已退出并且已被重新初始化为init)。

这主要是学术性的,可能只是浪费时间,但是strings -n 10 /proc/[pid]/mem观看滚动可能会很有趣。您还可以echo 0x7 > /proc/[pid]/coredump_filter使用gdb gcore强制进行具有所有可能内容的coredump,但是此过程会终止,这可能会阻止进一步的分析。

但是绝对可以接受Arenstar的建议。仅备份数据,从备份还原所有可执行文件,然后重新开始。您可能还应该从备份中还原网站,每个HTML或php文件中都可能添加了恶意javascript。如果您正在考虑采取法律行动,则只需将机器放在一旁,将其从网络上拔下,然后停止正在执行的操作,直到法医专家完成工作为止。


真是个好答案。
paul.ago

不幸的是,ls -l / proc / [pid] / exe返回了perl5.8.8 bin路径,而ps / pstree表示进程父亲是init,这个东西看起来真的很隐藏。我肯定会从全新安装开始,但是运行它的应用程序的原始开发者不在国外一段时间,因此,我正在寻找一个临时解决方案。真是个好答案
paul.ago 2010年

0

尝试使用“ cat / proc / [进程ID] / cmdline”,尽管如果它是真正的rootkit,它可能会修改内核以更好地隐藏自身。


它给了我相同的ps aux“ / usr / sbin / apache / logs”,这是假的。/ usr / sbin / apache目录都不存在
paul.ago 2010年

0

我同意,您应该重新安装。您是否尝试过转义路径中的字符?也许这些斜杠之一实际上是文件名而不是目录的一部分。至少应使用iptables阻止到该主机或IRC常规的出站通信,直到修复为止。还要检查netstat。


不,这条路似乎“真实”。遗憾的是,似乎已经安装了iptables,但是缺少内核模块,因此我必须重新编译内核。我可能会用这种方式修复问题几天,直到与拥有应用程序源代码的人取得联系,以便我可以重新安装服务器
paul.ago 2010年

0

我想现在您已经重新安装了。您花时间浪费时间试图跟踪流程并进行取证,因为从中合法地开发出任何东西的机会都非常微小,找到黑客的机会无论如何都是徒劳的。除非只是感兴趣,否则您需要研究和逆转可能很有趣的rootkit :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.