zoukankan      html  css  js  c++  java
  • Linux服务器中毒事件(libudev.so)

      今天机房管理人员反馈公司的某台服务器在防火墙上的连接数超限,登陆服务器时发现非常卡顿,远程登录后查看,CPU持续100%,且有一长度为10的随机字符串进程,kill掉,会重新生成另外长度为10的字符串进程。删除文件也会重复生成,非常痛苦。查阅crontab,并没有发现相关定时任务,整个排查思路如下:

    1、查看主机负载,确认可疑进程

     PID USER  PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
    13784 root 20 0 31652 548 204 S 101.9 0.0 39:57.21 fknnknlajk 
    1 root 20 0 19364 812 616 S 2.0 0.0 4:35.69 init 
    10060 root 20 0 2739m 162m 9320 S 2.0 4.1 288:20.81 asterisk 
    11105 oracle 20 0 1931m 17m 16m S 2.0 0.4 4:01.23 ora_gen0_orcl 
    29775 root 20 0 1352 884 160 S 2.0 0.0 0:00.02 camrgawfg
    

    2、确认可疑进程尝试杀掉,但是发现一会儿就会出现新的10位随机字符串进程,怀疑有定时任务

    3、排查定时任务

    no crontab for root
    

      每个用户都查了,都是上面的提示,没有定时任务,什么鬼?

    4、尝试查找最近3天内更新的文件

    find /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -mtime -3
    /bin
    /bin/wfukohsuk
    /bin/wfukohsuk.sh
    /bin/kushokufw
    /usr/bin
    /usr/bin/fknnknlajk
    /usr/sbin
    

      发现可以文件,其中/bin/wfukohsuk.sh的内容如下:

    #!/bin/sh
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
    cp "/bin/wfukohsuk" "/bin/pqzllxphin"
    "/bin/pqzllxphin"
    

      看脚本的样子,也不像是问题的源头,手动删除这些文件也还是会生成。

    5、因为现象是肯定有一个任务定时的检查生成,后来抱着怀疑的态度去看了crontab的日志

    tail -f  /var/log/cron
    Jun 21 12:01:01 localhost run-parts(/etc/cron.hourly)[14504]: finished gcc.sh
    Jun 21 12:01:01 localhost run-parts(/etc/cron.hourly)[14479]: starting wfukohsuk.sh
    Jun 21 12:01:01 localhost run-parts(/etc/cron.hourly)[14516]: finished wfukohsuk.sh
    Jun 21 12:03:01 localhost CROND[15290]: (root) CMD (/etc/cron.hourly/gcc.sh)
    Jun 21 12:06:01 localhost CROND[16444]: (root) CMD (/etc/cron.hourly/gcc.sh)
    Jun 21 12:09:01 localhost CROND[17615]: (root) CMD (/etc/cron.hourly/gcc.sh)
    Jun 21 12:10:01 localhost CROND[18013]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    Jun 21 12:12:01 localhost CROND[18806]: (root) CMD (/etc/cron.hourly/gcc.sh)
    Jun 21 12:15:01 localhost CROND[19962]: (root) CMD (/etc/cron.hourly/gcc.sh)
    

      竟然发现有定时任务在执行,这是什么情况?crontab -l中明明没有。后来才发现原来:

      •  crontab -l 检查的是  /var/spool/cron
      •     定时任务不规范的路径还有一个 /etc/crontab 

    6、查看/etc/crontab文件,发现可疑定时任务

    # tail /etc/crontab 
    */3 * * * * root /etc/cron.hourly/gcc.sh
    

    7、看到定时任务我就放心了,终于找到问题所在了

    cat /etc/cron.hourly/gcc.sh
    #!/bin/sh
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
    for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
    cp /lib/libudev.so /lib/libudev.so.6
    /lib/libudev.so.6
    

      发现是一个叫libudev.so.6的病毒,我做了如下处理

    8、杀毒

    #删除定时任务,给crontab加锁
    rm -f /etc/cron.hourly/gcc.sh ; chattr +i /etc/crontab
    
    #删除找到的启动脚本
    find /etc -name 'fknnknlajk'
    /etc/rc.d/init.d/fknnknlajk
    find /etc -name 'fknnknlajk'  | xargs rm -f
    
    #找到可能的病毒文件,并删除
    find /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -mtime -3
    

      以为已经杀了毒了,但是删完一查,病毒文件有出来了,在cron.hourly/下产生了其他的病毒文件

    # ls
    0anacron  dcyeuoisnrumrj.sh
    # tail -f dcyeuoisnrumrj.sh 
    #!/bin/sh
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
    cp "/bin/dcyeuoisnrumrj" "/bin/mlucxcxfda"
    "/bin/mlucxcxfda"
    

      才发现并没有那么简单。

    9、反查

    • 病毒母文件已经删除
    • 定时任务已经清理
    • 感染的文件/etc/init.d,/bin,/usr/bin 已经清理干净了

      然后下意识用ps查了下进程发现没有异常进程了,top看了下负载,哦? 出现了可疑进程,怀疑是没有停掉的进程新创建了新文件

    #停止病毒进程,确认病毒PID
    kill -STOP 16452
    
    #查找启动脚本,删除文件(发现病毒的启动文件为S90/K90)
    find /etc -name '*90*' | xargs rm -f
    
    #删除病毒文件
    rm -rf /etc/cron.hourly/itfitufnyqsvg.sh
    
    #删除病毒文件
    find /bin -mtime -1 | xargs rm -f
    
    #杀掉进程
    pkill 16452
    

    10、总结

      1、首先肯定是root密码过弱,因为是用来测试的,就没注意。

      2、处理的过程中还是有一些思路不是特别清晰,还需要梳理

  • 相关阅读:
    根据界面上的button增加、删除、重命名文件夹,名字是数据库下面某一表单的某一列的名字
    打包测试的过程记录
    java中return的作用
    UVA
    UVA
    UVA
    HDU
    HDU
    spring技术详解
    Java对象的生命周期与垃圾回收以及四种引用
  • 原文地址:https://www.cnblogs.com/dachenzi/p/7058989.html
Copyright © 2011-2022 走看看