“俗话说:好记性不如烂笔头,最近做了几个应急响应就来总结下。”
应急响应分为四个阶段:前期沟通,事件处理,事件分析,报告交付,前期沟通主要是和客户交流事件情况,了解是什么安全事件,客户是否做了处理,如果做了处理,做了那些处理。了解相关情况后后,下一步,就是帮助客户止血,即处理安全事件,减轻客户损失。服务器恢复正常后,进行事件分析,通过排查日志还原攻击者的入侵轨迹,最后一步就是整理报告。
沟通贯穿整个应急响应流程,也是最重要的,切记不要一上来就查,了解事件原因才会事半功倍。
应急响应事件分为五大类,网络攻击事件,恶意程序事件,web恶意代码,信息破坏事件和其他事件,每个事件的具体描述如下
(图片来源:https://help.aliyun.com/document_detail/53549.html?spm=a2c4g.11186623.6.546.2101716ep738zG)
不同的安全事件止血的办法也不一样,下面介绍几种常规事件“止血”办法。
(1)web攻击事件
例如网站存在注入、上传、或者RCE,首先给服务器加waf,阻断大部分攻击源,提升攻击成本,如果客户使用CMS建站,那么一定要按官方修复建议修复。
(2)支付安全事件
首先禁用支付密钥或者关闭提现功能,避免金额进一步损失。然后了解支付/提现的业务流程,如果是第三方支付,那么需要第三方提供相关支持。 (3)数据泄露事件 首先确认泄露数据的真实性,根据数据时间、数据字段、数据内容、数据的大小来定位什么漏洞产生的,是拖库还是越权遍历。如果是拖库,那么下一步排查SQL注入、数据库密钥、getshell、备份文件等等。常规的业务场景通过越权获取到数据不是全量的。 (4)恶意程序事件 首先kill掉进程,如果是从远程下载的恶意程序,可以修改hosts绑定远程地址为0.0.0.0,然后在排查原因。 (5)webshell事件 服务器上存在webshell,攻击者的攻击思路可能是业务存在上传点,且未对上传做严格限制,或者是系统存在RCE漏洞可以写webshell,如果无法彻底删除webshell,那么通过计划任务删除webshell,封禁上传webshell的ip,添加waf等一系列措施,阻止webshell的产生。
1.用户,查系统是否存在异常用户
cat /etc/passwd
2.进程,查看是否存在异常进程,名字特别,CPU使用率高
top
ps aux
3.网络连接,查看服务器当前是否有异常连接,例如22端口连接的IP是国外的,那就要注意了。
netstat -antp
判断ip归属地脚本1.0版
#!/bin/bash
#linux
#print Foreign Address
connect=`busybox netstat -pant | grep ":" | awk '{print $5}'`;
#echo $connect;
#loop to get address
for i in $connect;do
temp_ip=`echo -e $i | cut -d ":" -f1`
#echo $temp_ip
temp=`echo -e $temp_ip | grep -E '^0'`
#echo $temp
if [[ $temp != $temp_ip ]]
then
m=`curl -s https://www.ip.cn/index.php?ip=$temp_ip`
echo $m
fi
done
4.计划任务
cat /var/log/cron | grep "bash"cat /var/log/cron | grep "wget"cat /var/log/cron | grep "cat"cat /var/log/cron | grep "id"cat /var/log/cron | grep -E -o "(([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}))"cat /etc/crontab
ls -al /var/spool/cron/*cat /var/spool/cron/*
ls -al /etc/cron.d/*
for u in `cat /etc/passwd |cut -d ":" -f1`;do crontab -l -u $u; done
5.开机启动项
chkconfig --list
6.查看登录情况,历史登录成功ip和账号,当前登录成功账号ip
lastcat /etc/secure
7.查看ssh key
cat .ssh/authorized_keys
8.查杀webshell 使用河马,但是误报有点大,或者自写的脚本。 9.查看日志 关于日志分析,一般是通过和客户沟通定位攻击点或者ip,然后在日志中查询完整路径,分析日志一般常用的命令有awk、grep、find。 统计top 10 IP
cat www.log | awk '{print $1}' | sort | uniq -c | sort -nr | more
统计访问admin/dashboard.html这个路径的ip
cat www.log | grep "admin/dashboard.html" | awk '{print $1}' | sort | uniq -c | sort -nr | more
日志分析根据业务场景构造相应的命令,这里只是抛砖引玉。最近了解到一个python库 ngxtop,可以辅助日志分析,有兴趣的小伙伴可以了解下。
1.用户,查看当前系统用户是否存在隐藏账号,或者guest账号被激活
(1)net user
(2)查看注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
2.进程
3.网络连接
4.开机启动项
5.补丁情况
6.漏洞情况
7.webshell查杀
8.日志分析
针对上述排查项,推荐几款工具
(1)360全家桶
(2)Autoruns
(3)D盾webshell查杀
(4)D盾防火墙
(5)火绒剑
从前期的沟通确认,到异常发现与追踪,最后刻画攻击行为,应急响应不仅仅是一场事件的处理,我觉得更重要的是攻击者的攻击思路,他在这个系统里做了什么,他为什么要这么做,他这么做得到了什么,换作是你,你发现了这个漏洞,你会怎么做,向高手学习,才能成长更快,总而言之,应急响应,任重道远。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。