云服务器被注入挖矿病毒处理记录

云服务器被注入挖矿病毒处理记录

病毒发现

短信告警:【阿里云】尊敬的aliyunxxxx:云盾云安全中心检测到您的服务器:192.168.0.188(launch-advisor-20240827 )出现了紧急安全事件:挖矿程序,建议您立即登录云安全中心控制台-安全告警处理https://t.aliyun.com/xxxxxxx 进行处理

登录机器Top查看负载情况

top - 9:10:36 up 185 days, 22 min,  1 user,  load average: 8.01, 8.11, 7.97
Tasks: 204 total,   1 running, 203 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.0 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 31728400 total,  9695024 free,   741936 used, 21291440 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 30579536 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+   COMMAND
22221 crm      20   0    3919504  2.6g  4    S  799.7 8.5   56984:54   0eb75018e69		# 可疑进程,占用CPU相当高
29283 root      10 -10  154112  22680  10516 S   0.7  0.1 634:03.09 AliYunDunMonito                                                     
 8098 root      20   0 6277768  28400  16088 S   0.3  0.1 887:29.85 argusagent
 9564 root      -2   0   55784   8748   6936 S   0.3  0.0  85:49.36 heartbeat
29272 root      20   0  116400  10724   7812 S   0.3  0.0 130:49.10 AliYunDun

处理异常进程 (因为该机器是第三方服务(下面统称为“线路方”)的部署机器,所以跟线路方确认了进程非服务进程)

[root@xxxxxxxxxxxxxx ~]# kill 22221

删除完依然有新的 随机名进程——9479 启动,并吃满CPU;查看定时任务

[root@xxxxxxxxxxxxxx ~]# crontab -u crm -l
*/1 * * * *  /home/crm/6hisqehtandx   # 果然有定时任务,不过就算删除了大概率也会再长出来

病毒排查

[root@xxxxxxxxxxxxxx ~]# ll /proc/9479
... ...
lrwxrwxrwx 1 root root 0 Sep  6 9:21 exe -> /home/crm/6hisqehtandx (deleted)  # 似乎是已删除的程序?但仍在内存中运行
... ...

查看对应目录情况 /home/crm

[root@xxxxxxxxxxxxxx ~]# ll  /home/crm
-rwxr-----  1 crm crm  6532 Mar  6  9:21  8v6tlkelqed2
-rwxr-----  1 crm crm  6532 Mar  6  9:21  wyveo2out9fza
... ...

尝试将目录下 可疑程序和进程全部删除,发现删除完仍然有病毒进程启动

top - 9:26:31 up 185 days, 22 min,  1 user,  load average: 8.01, 8.11, 7.97
Tasks: 204 total,   1 running, 203 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.0 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 31728400 total,  9695024 free,   741936 used, 21291440 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 30579536 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+   COMMAND
 2810 crm      20   0    3919504  2.6g  4    S  799.7  8.5     384:2   0eb75018e69

继续查看对应目录情况

[root@xxxxxxxxxxxxxx ~]# ll /proc/2810
... ...
lrwxrwxrwx 1 crm crm 0 Sep  6 9:26 exe -> /var/tmp/0eb75018e69 (deleted)  # /var/tmp路径下似乎也是已删除的程序?但仍在内存中运行
... ...


[root@xxxxxxxxxxxxxx ~]# ll -a /home/crm
... ...
-rwxr-----  1 crm crm  6532 Mar  6  9:21  xbsm23vhrr4c
-rwxr-----  1 crm crm  6532 Mar  6  9:21  8ablgrhxe652w

重复 “删除/kill”,发现仍然在 /var/tmp 目录和 /home/crm 目录下来回生成/启动,确定病毒的活动范围,应该是通过crm用户启动了一个父进程,因为权限问题一直在这两个目录来回生成/启动"挖矿程序",并将启动命令写入到 crm 用户的定时任务中

# 排查 crm 用户 进程和 家目录下最近更改的文件,是否有可疑文件被上传/下载,过滤下日志log
[root@xxxxxxxxxxxxxx ~]# ps -ef  | grep crm
crm       2764     0.0  0.0   Feb13    26:51    /home/crm/jdk/bin/java  -Djava.util.logging.config.file=/home/crm/tomcat8/conf/logging.ClassLoaderLogManager  -Djdk.tls.ephemeralDHKeySize=2048  -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava-endorsed.dirs=/home/crm/tomcat8/endorsed -classpath /home/crm/tomcat8/bin/bootstrap.jar:/home/crm/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/home/crm/tomcat8 -Dcatalina.home=/home/crm/tomcat8 -Djava.io.tmpdir=/home/crm/tomcat8/temp org.apache.catalina.startup.Bootstrap start
crm       3827     1  0  2024 ?        01:13:23 ./redis-server *:6402
crm       2810     0.0  0.0   Feb13    0:34     /bin/sh  /home/crm/bin/montable RUNING
crm       10042    1.5  0.1   09:17    0;02    [kworker/R-rcu_p]
crm       10061    1145 0.1   09:17    20:03    [cpuhp/1]
crm       10323    0.0  0.0   09:19    0:00     sleep 30
... ...

[root@xxxxxxxxxxxxxx ~]# find  /home/crm  -mtime -7 | grep log
/home/crm
/home/crm/.bash_logout
/home/crm/.bashrc
/home/crm/tomcat8/webapps
/home/crm/tomcat8/webapps/docs
/home/crm/tomcat8/webapps/docs/tomcat.jsp
/home/crm/tomcat8/bin
/home/crm/tomcat8/bin/tomcat-juli.jar
/home/crm/tomcat8/bin/C:\Users\Public\outaa.exe
/home/crm/tomcat8/webapps/dr/tomcat.jsp
/home/crm/tomcat8/webapps/dr/test.jsp
/home/crm/tomcat8/work/Catalina/localhost
/home/crm/tomcat8/work/Catalina/localhost/manager
/home/crm/tomcat8/work/Catalina/localhost/manager/org/apache/jsp/WEB_002dINF/jsp
/home/crm/tomcat8/work/Catalina/localhost/ROOT/org/apache/jsp
/home/crm/tomcat8/work/Catalina/localhost/ROOT/org/apache/jsp/tomcat_jsp.java
/home/crm/tomcat8/work/Catalina/localhost/ROOT/org/apache/jsp/tomcat_jsp$U.class
/home/crm/tomcat8/work/Catalina/localhost/ROOT/org/apache/jsp/tomcat_jsp.class
/home/crm/tomcat8/work/Catalina/localhost/dr
/home/crm/tomcat8/work/Catalina/localhost/dr/org
/home/crm/tomcat8/work/Catalina/localhost/dr/org/apache
/home/crm/tomcat8/work/Catalina/localhost/dr/org/apache/jsp
/home/crm/.bash_profile
/home/crm/.bash_history
/home/crm/.localssh
/home/crm/.rediscli_history

结合修改文件,猜测可疑文件/程序 /home/crm/tomcat8/tomcat-juli.jar,尝试清除

[root@xxxxxxxxxxxxxx ~]## cd /home/crm/tomcat8 && rm -f tomcat-juli.jar && kill -9 2764

再次TOP,发现CPU似乎暂时正常了

登录阿里云——云安全中心——安全告警(查看实例:发现有27条告警)

查看最早的告警

从外部服务器下载并执行脚本,这种行为通常与恶意软件或后门有关,下载的脚本可能修改了 Tomcat 的配置文件或部署了恶意应用

再次查看其他告警:发现后门(Webshell)文件:

木马文件路径: /home/crm/tomcat8/webapps/manager/tomcat.jsp
木马文件路径: /home/crm/tomcat8/webapps/dr/tomcat.jsp
木马文件路径: /home/crm/tomcat8/webapps/dr/test.jsp

根据告警将可疑jsp/后门文件全部删除

[root@xxxxxxxxxxxxxx ~]# rm -f /home/crm/tomcat8/webapps/manager/tomcat.jsp
[root@xxxxxxxxxxxxxx ~]# rm -f /home/crm/tomcat8/webapps/dr/tomcat.jsp
[root@xxxxxxxxxxxxxx ~]# rm -f /home/crm/tomcat8/webapps/dr/test.jsp

以及线路方(4台)机器都存在的中危漏洞

排查祸源——可能被植入后门的途径

① 其他(内网/外部)设备攻击:

验证方法:① 是否有公网IP(安全组开放端口)直接暴露 ; ② 是否有负载均衡+DNA将端口转发/暴露出去

因为机器在阿里云内网,且病毒机器并无暴露端口

如果都没有,则可能是通过内网攻击(其他服务器已被植入后门作为跳板机,这是后门WebShell的傀儡机器?阿里云内部攻击骗防病毒服务?

★这里除了要确认了公网IP—安全组端口开放情况,还要确认负载均衡+DNAT 转发内网服务器端口情况

② SSH密码/密钥泄漏:

线路方机器不归入运维ansible统一管控,全部归jumpserver跳板机,检查ssh密钥发现并无公钥;

[root@xxxxxxxxxxxxxx ~]# cat /etc/shadow
... ...
crm:!!:19969:0:99999:7:::
zlsduser:xxxxxxxxxxxxxxxxxxxxxxxxx:19969:0:99999:7:::
... ...

处理方案:通知部署方给crm用户配置密码

③ 漏洞利用:

将除了现告警的“挖矿病毒”和“后门(Webshell)”的中危漏洞修复

[root@xxxxxxxxxxxxxx ~]# rpm -qa | grep resource
resource-agents-3.9.5-24.el6.x86_64

# 发现 安装时间是  2024/09/05 ,结合阿里云上机器期限是 2024/09/01,猜测也是 部署方 安装的漏洞版本
[root@xxxxxxxxxxxxxx ~]# rpm -qi  resource-agents-3.9.5-24.el6.x86_64
Name        : resource-agents
Version     : 3.9.5
Release     : 24.el6
Architecture: x86_64
Install Date: Thu 05 Sep 2024 10:53:40 AM CST

同样跟部署方确认部署包及版本,需求升级至安全版本

④ 供应链攻击:

挖矿病毒确实是通过不安全渠道引入的,但不是被植入后门(Webshell)的原因

处理到其实暂时就没有太多可预防的安全手段了,除非使用防火墙/firewalld,流量管控/iptables,安全子系统/selinux

其他的可能就需要购买安全服务:阿里云——云安全中心——安全防护服务+应急响应服务

实际处理过程

确认9078端口对应负载均衡+DNAT情况:发现公网IP的暴露端口9078 只转发后端服务器 188 的9078 端口

翻阅了一会聊天记录,发现是之前线路方调试过程申请了批量端口开放/关闭,最后没有关闭/限制(算是我们运维方的疏漏),同时又因为这批机器/系统其实没有做安全检测/购买安全服务

因此188的9078端口服务一挂,业务功能点异常,变成单点故障了

结合前面 188 被注入挖矿病毒,推测之前的病毒应该就是通过公网的 9078 端口 DNAT 进入到 188服务器的 9078 端口

这里188服务器算是命中了前面检查时所遗漏的 “病毒祸源:①其他设备攻击”,9078端口实际存在风险/病毒入口,可被其他设备攻击的弱点

服务恢复:先将9078 端口的后端服务器改成181,并将188的权重改为0,避免影响业务

查看9078端口服务:发现竟还是一个裸跑的tomcat服务器!

再查看对应tomcat管理员账号密码(发现所有账号均为常见密码/弱密码,这样的tomcat暴露在公网,基本等于白给)

[root@xxxxxxxxxxxxxx ~]# su - crm    (所有服务均有 crm 用户启动,当然挖矿程序也是)
[root@xxxxxxxxxxxxxx ~]# cd tomcat8/conf/
[root@xxxxxxxxxxxxxx conf]# cat tomcat-users.xml
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
... ...
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/> 
  <role rolename="manager-gui"/> 
  <role rolename="admin"/> 
  <role rolename="admin-gui"/> 
  <user username="root" password="root123" roles="admin-gui,admin,manager-gui,manager-script,manager-jmx,manager-status,manager"/>
  <user username="tomcat" password="123456" roles="tomcat"/>
  <user username="both" password="123456" roles="tomcat,role1"/>
  <user username="role1" password="123456" roles="role1"/>
</tomcat-users>

登录tomcat管理页面——[IP]:[Port]/manager/html,确认是可以通过manager上传部署war包——安装后门程序

顺藤摸瓜,查看对应manager日志

[root@xxxxxxxxxxxxxx ~]#  su - crm
[crm@xxxxxxxxxxxxxx ~]$ cd  tomcat8/logs
[crm@xxxxxxxxxxxxxx logs]$ cat manager.2025-03-01.log
01-Mar-2025 10:26:44.016 信息 [http-nio-9078-exec-2] org.apache.catalina.core.ApplicationContext.log HTMLManager: init: Associated with Deployer 'Catalina:type=Deployer,host=localhost'
01-Mar-2025 10:26:44.016 信息 [http-nio-9078-exec-2] org.apache.catalina.core.ApplicationContext.log HTMLManager: init: Global resources are available
01-Mar-2025 10:26:44.020 信息 [http-nio-9078-exec-2] org.apache.catalina.core.ApplicationContext.log HTMLManager: list: Listing contexts for virtual host 'localhost'
01-Mar-2025 10:26:46.815 信息 [http-nio-9078-exec-10] org.apache.catalina.core.ApplicationContext.log HTMLManager: list: Listing contexts for virtual host 'localhost'
01-Mar-2025 10:26:47.427 信息 [http-nio-9078-exec-6] org.apache.catalina.core.ApplicationContext.log HTMLManager: list: Listing contexts for virtual host 'localhost'

日志分析: manager几乎没有日志,这是唯一的manager日志,也是记录了挖矿程序部署过程的日志:deploy部署应用、列出部署的应用,再查看对应时间段的tomcat日志,查看实际攻击情况:

[crm@xxxxxxxxxxxxxx logs]$ grep "01/Mar/2025:10:26" localhost_access_log.2025-03-01.txt
209.141.37.95 - root [01/Mar/2025:10:26:44 +0800] "GET /manager/html HTTP/1.1" 200 21516
209.141.37.95 - - [01/Mar/2025:10:26:45 +0800] "GET /tomcat.jsp HTTP/1.1" 404 -
209.141.37.95 - - [01/Mar/2025:10:26:45 +0800] "GET /docs/tomcat.jsp HTTP/1.1" 404 -
209.141.37.95 - - [01/Mar/2025:10:26:46 +0800] "GET /manager/tomcat.jsp HTTP/1.1" 404 1539
209.141.37.95 - - [01/Mar/2025:10:26:46 +0800] "GET /dr/tomcat.jsp HTTP/1.1" 404 -
209.141.37.95 - root [01/Mar/2025:10:26:46 +0800] "GET /manager/html HTTP/1.1" 200 21516
209.141.37.95 - root [01/Mar/2025:10:26:47 +0800] "POST /manager/html/upload?org.apache.catalina.filters.CSRF_NONCE=2DB55B812AAE495EE5FA760A2AB8BF90 HTTP/1.1" 200 21506
209.141.37.95 - - [01/Mar/2025:10:26:47 +0800] "GET /dr HTTP/1.1" 302 -
209.141.37.95 - - [01/Mar/2025:10:26:54 +0800] "GET /dr/ HTTP/1.1" 200 389

日志分析:
① 以root用户身份发起请求,调用了部分页面/文件的访问,访问jsp文件,寻求可能存在的漏洞
② 以root用户身份调用upload接口上传部署后门程序

到这里中病毒的原因就明朗了:通过对机器进行端口扫描,发现9078端口开放,追踪9078的tomcat服务,利用其管理员账号的弱密码(root123)登入tomcat管理界面,然后直接上传部署(war/jar/jsp)挖矿程序/后门程序

处理方案+预防措施

① 暴露公网的 “负载均衡”+“DNAT” 由原来的指向“tomcat服务器” 改为 nginx,由两台nginx统一做转发

② 并在nginx统一配置白名单,限制访问

upstream crm_prod {
    server 192.168.0.181:9078;
    #server 192.168.0.188:9078;   # 待后续线路方将188服务恢复即可打开注释
}

server {
    listen 9078;

    if ($remote_addr !~ ^(xxx.xxx.xxx.xx|xxx.xxx.xxx.xx)) {
      return 403;
    }
  
   
    # 设定本虚拟主机的访问日志
    access_log /var/log/nginx/crm.prod.log log_json;
    add_header 'Access-Control-Allow-Origin' '*';

    location / {
        proxy_pass http://crm_prod;
    }
}

③ 通知线路部署方整改对应tomcat管理页面弱密码问题

总结:因环境调试和运维疏漏的安全问题,检查端口开放情况

posted @ 2025-04-23 14:07  cumybride  阅读(269)  评论(0)    收藏  举报