应急响应
第一章:了解应急响应
作为网络安全从业人员,网络安全我们并不陌生,网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,保证系统连续、可靠、正常运行,网络服务不中断。面对各种新奇怪异的病毒和不计其数的安全漏洞,建立有效的网络安全应急体系并使之不断完善,已成为信息化社会发展的必然需要。
至此,网络安全应急响应就呼之欲出了,网络安全应急响应是指针对已经发生或可能发生的安全事件进行监控、分析、协调、处理、保护资产安全。网络安全应急响应主要是为了人们对网络安全有所认识、有所准备,以便在遇到突发网络安全事件时做到有序应对、妥善处理。
第二章:应急响应流程
对于初学者来说,首先我们该知道我们如何来应对一次真正的应急响应工作,通过全流程来进行学习更有利于我们快速上手。
一、响应:
(1)事件类型判断:
(2)信息收集
信息收集主要是做:流量、日志、可疑进程的内存、失陷系统镜像、恶意样本、客户资产收集、资产相关漏洞测试报告、防御设备的日志。此处附上推荐应急响应工具,链接如下:
https://github.com/ra66itmachine/GetInfo/
二、阻断
所谓阻断只有三步:关站、关服务、拔网线。
(1)切断网络
情况分很多种:失陷后业务仍正常运行、失陷后业务受滞、失陷后业务停摆。不同的情况,网络切断因地制宜。
切断网络的目的:观察病毒行为、观察流量特征、阻断对内通信、阻断对外连接。
举个例子:一个医院大规模失陷,但是业务正常运作,这时候可以选择切断部分不重要的主机去观察行为。
(2)阻断传播
传播包括:对内传播(感染)、对外传播(外联)
对内传播(感染):进程注入/迁移、第三方软件感染、服务传播(ftp/ssh爆破等)
对外传播(外联):挖矿行为、外联攻击、c2通信
阻断传播应从:软件层面、流量层面、代码层面、网络层面。
例如:排查软件被劫持、排查流量发现无文件落地、利用代码审计发现容器加载内存马、阻断网络发现通过服务传播的病毒。
(3)隔离核心资产/隔离受害主体(群体)
这一步是应急响应的最终目的,无论实施过程如何、无论使用什么工具都必须保证被保护与沦陷方的隔离。
隔离核心资产是为了做到三个原则:保护、避害、不损害。
隔离受害主体(群体)是为了保护第一现场、收集攻击者信息等。
三、分析
分析是前提是提炼,提炼出关键信息分析。而提炼的前提是熟悉,了解攻击手法。
(1)日志、流量、样本分析
分析三大件:日志、流量、样本。
日志主要注意的是:时间、动作、结果;这个行为什么时候开始、什么时候结束,这个动作是登陆、退出、修改等、造成的结果是登陆成功/失败、上传/下载了文件、执行了代码等。
流量主要注意的是:状态码、交互过程、数据合理性;每一次交互的状态码,交互过程中是否符合该种协议的正确交互过程,每个字段的填充、每次流量的渲染是否正常。
样本主要注意的是:启动方式、伪装方式、作用;根据启动方式去选择沙箱或者分析工具;伪装方式判断是否加壳做免杀和打击方式;根据作用去判断受害范围。
日志属于静态信息需要应急人员清晰分辨出日志表达的内容和快速筛选出可疑的点。流量和样本属于动态信息,应急人员需要拥有一定的渗透能力去分辨交互行为。
(2)行为分析&还原攻击过程
从行为出发,还原攻击路径,推演攻击过程。
行为分析基于三大件分析,结合系统表现出来的情况做分析,例如:启动项、启动脚本、进程、内存等。
还原攻击过程需要对攻击大致的情况有一个综合判断,且必须具备渗透能力,再此基础上放入沙箱重新复现攻击过程,对后续的步骤提供帮助。
①下面是我整理出来的windows和linux应急响应的基本手工分析收集命令:
第一步:系统排查
1.windows系统
命令行中输入【msinfo32】命令--查看服务、驱动
命令行中输入【systeminfo】命令--简单查看系统版本/主机名
2.linux系统
命令行中输入【lscpu】命令,可查看 CPU 相关信息
命令行中输入【uname -a】命令,可查看当前操作系统信息
命令行中输入【cat /proc/version】命令,可查看当前操作系统版本信息
命令行中输入【lsmod】命令,可查看所有已载入系统的模块信息
第二步:启动项
1.windows系统
命令行中输入【msconfig】命令,可查看启动项的详细信息
2.linux系统
使用【cat /etc/init.d/rc.local】命令,可查看 init.d 文件夹下的 rc.local 文件内容。
使用【cat /etc/rc.local】命令,可查看 rc.local 文件内容。
使用【ls -alt /etc/init.d】命令,可查看 init.d 文件夹下所有文件的详细信息
第三步:任务计划
1.windows系统
终端输入【Get-ScheduledTask】命令,可查看当前系统中所有任务计划的信息
命令行中输入【schtasks】命令,可获取任务计划的信息
2.linux系统
命令行中输入【crontab -l】命令,可查看当前的任务计划
输入【ls /etc/cron*】命令查看 etc 目录下的所有任务计划文件
第四步:防火墙
1.windows系统
命令行中输入【netsh】命令进行查看。
使用【netsh Firewall show state】命令,可显示当前防火墙的网络配置状态
2.linux系统
无
第五步:进程排查
1.windows系统
命令行中输入【tasklist】命令,可显示运行在计算机中的所有进程
输入【tasklist /svc】命令,可以显示每个进程和服务的对应情况
输入【tasklist /m】命令进行查询某些加载 DLL 的恶意进程
使用【netstat -ano | findstr "ESTABLISHED"】命令查看目前的网络连接,定位可疑的 ESTABLISHED
使用【tasklist | find "2856"】命令可查看具体的程序
使用【Get-Wmi ObjectWin32_Process | select Name, ProcessId, ParentProcessId, Path】命令中 Get-WmiObject Win32_Process 表示获取进程的所有信息
使用【wmic process get name,parentprocessid,processid /format:csv】命令,以 csv 格式来显示进程的名称、父进程 ID、进程 ID
2.linux系统
利用【ls -alt /proc/PID】命令,可查看其对应的可执行程序
使用【kill -9 PID】命令结束进程
第六步:服务排查
1.windows系统
输入【services.msc】命令,可打开【服务】窗口
2.linux系统
命令行中输入【chkconfig --list】命令,可以查看系统运行的服务
第七步:文件痕迹排查
1.windows系统
检查各个盘下的 temp(tmp)相关目录、浏览器的历史记录、下载文件和 cookie 信息
使用【forfiles /m *.exe /d +2020/2/12 /s /p c:\ /c "cmd /c echo @path @fdate @ftime" 2>null】命令就是对 2020/2/12 后的exe 新建文件进行搜索。
2.linux系统
检查/tmp 目录和命令目录/usr/bin /usr/sbin
检查~/.ssh 及/etc/ssh 也经常作为一些后门配置的路径
使用命令【find / -ctime 0 -name "*.sh"】,可查找一天内新增的 sh 文件
第八步:日志排查
1.windows系统
使用【Get-WinEvent -FilterHashtable @{LogName='Security';ID='4625'}】命令,
也可获取安全性日志下事件 ID 为 4625 的所有日志信息
FullEventLogView 工具(绿色安装,方便使用)
2.linux系统
Linux 系统中的日志一般存放在目录“/var/log/”下
第九步:内存排查和流量分析
常用的提取工具有 Dumpit、Redline、RAM Capturer、FTK Imager 等--提取出的文件上传到 virustotal 平台并进行扫描判断
常用的内存分析工具有Redline/Volatility,举例wireshark
使用【ip.addr ==ip】命令,可对特定 IP 地址进行过滤
使用【ip.src==ip】命令,可对指定的源 IP 地址进行过滤
直接输入 HTTP、HTTPS、SMTP、ARP 等协议进行筛选
使用【top.port==端口号】或【udp.port==端口号】命令,可对端口进行过滤
使用【tcp contains strings】命令,可对数据包中的关键字进行检索
第十步:Linux 系统排查webshell
find ./ -type f -name "*.jsp" |xargs grep "exec("
find ./ -type f -name "*.php" |xargs grep "eval("
find ./ -type f -name "*.asp" |xargs grep "execute("
find ./ -type f -name "*.aspx" |xargs grep "eval("
搜索目录下适配当前应用的网页文件,查看内容是否有 Webshell 特征,很多木马和大马都带有典型的命令执行特征函数,如 exec()、eval()、execute()等
四、清除
我们要做的与渗透无异——“做好清除,藏好自己”。
(1)非对抗情况下
在不存在对抗的情况下,最极端就是全盘重装,稍次就是数据迁移后对系统盘重装。在普通情况下,我们可以进行针对性的杀进程、删文件、杀软清除。
(2)存在对抗情况下
对抗情况就是:顽固马与不死马存在,或者被持续攻击(apt)。
这样的情况下,首选是在允许情况下打补丁,再恢复。找到攻击行为的源头,先补上漏洞再清除。
五、加固
加固就是打补丁、对系统进行限制(网络隔离、行为管理等)、升级防御设备、完善防御流程(防御设备的部署、人员的部署、规则库的升级)
第三章:应急响应实战
在了解过应急响应的一些基本概念和指导手册,当然唯有实战操作才能让我们更快的掌握应急响应的基操。
打开靶机,先看题目,让我们来看看应急响应我们需要做什么~
开整开整,给出我们远程连接主机,不管那么多,先登上去看看
发现只有一个phpstudy_pro界面,其他的啥也没有。
第一步,提权方式
我们首先判断应急响应事件类型,才能对症下药,这不巧了,看一下题目要找木马,找后门,这场景都给出答案找webshell,按照套路,根据我搜集起来的webshell工具(如下),先整活起来~
河马扫一下站点目录如图1,扫出了16个可疑后门如图2,查看这些.php文件如下如图3,人为确认后一个也不是,并没有找到所谓的木马
图1
图2
图3
估摸着是做了免杀处理,查看一下apache日志
通过日志可以发现最开时是在进行sql注入,各种payload,后面就开始扫目录了
初步一看也没有找到所谓的木马文件,既然他进行了sql注入,就有可能通过sql拿到shell进而提权,于就去sql文件夹下面看看,
结果就找到了udf.dll文件,那么第一步黑客的提权方式就应该是udf提权了
第二步,找“黑客的webshell”
这里实在没有什么好的套路,只能从日志分析图1中来发现,这是一件很大的工作量,发现是从一堆post请求日志中,发现了一个get请求,然后就去看了一下,结果真是webshell,webshell在/dede/inc/config_sys.php
图1
第三步 黑客的账号
这个就是比较简单了,windows和linux中查看基础信息的活,我们在windows下用net user查看~
删除的话俩种方式,①命令行模式:net user xxx /delete;②图像化界面:服务器管理器-->配置-->本地用户和组-->用户,删除用户就行
第四步 后门木马
我们使用命令 netstat -ano查看,这个无论是windows还是linux中都是通用的,如下,netstat -ano 查看目前建立的连接,直接锁定23.23.23.23
第五步 加固服务器
也是比较简单的题,我们在开始菜单->本地安全策略->账户策略->密码策略 修改密码最小长度即可。
另外多提一句,linux中在加固服务器基本操作中,我们使用vim编辑器编辑/etc/pam.d/system-auth参数即可~
第六步 删除木马
通过第四步得到的IP找到进程号6184,使用【tasklist | find "6184"】命令可查看具体的程序,最后直接锁定system6.exe,删除就完成
Ps:这里的system6.exe为启动项中,我们直接在系统配置中关闭启动项在删除也是不能成功的,这里推荐D盾,安装后直接在进程查看也能发现system6.exe,可以直接关闭程序在删除。
第七步 修复漏洞
由第一步已知是udf提权,udf即用户自己自定义函数,通过添加新函数,扩充mysql的功能,而使用udf提权,需要通过sql来进行文件读写,故限制其文件读写的权限即可修复该漏洞,这里查找资料,发现secure_file_priv 可以实现修复漏洞
我们在mysql配置文件下my.ini中【mysqld】中添加secure_file_priv=null 如下
重启一下mysql数据库,再去check一下,搞定!
理论加实践,应急响应轻松拿下!
第四章:应急响应总结
1.应急人员应有自己的方法论,对不同攻击的威胁建模,拥有威胁情报分析能力,结合工具的辅助进行现场响应与远程支撑。
2.工具和排查点大同小异,提升方法在于应急人员的是否熟悉该种攻击,利用特征和行为去排查更节省时间。
3.红蓝同源,应急响应属于蓝队,但必须具备一定的渗透能力。
Ps:下面是我整理归纳出来的一些提高效率的工具
01、多引擎在线病毒扫描
当发现一个可疑的异常文件,使用多个不同的病毒引擎进行扫描检测,确认文件是否是恶意代码。
①VirSCAN:免费多引擎在线病毒扫描1.02版,支持47个杀毒引擎。
https://www.virscan.org/
②VirusTotal:一个提供免费的可疑文件分析服务的网站。
https://www.virustotal.com/
③Jotti:恶意软件扫描系统,使用几个反病毒程序进行扫描可疑文件。
https://virusscan.jotti.org
02、病毒查杀软件
联网状态下,直接下载杀毒软件进行全盘扫描查杀。
①360杀毒:整合了五大领先查杀引擎,杀毒查杀率比较高。
https://sd.360.cn/
②火绒安全软件:一款非常精致的软件,包含了火绒剑,安全专业人士很好用的分析工具。
https://www.huorong.cn/
03、病毒清除工具
无法联网时,可使用绿色免安装的病毒清除工具,扫描电脑中的所有文件。
①Dr.Web CureIt:绿色免安装版本,具有单机版Dr.Web的所有功能。
https://free.drweb.ru/download+cureit+free/
②Rootkit后门检测工具:用于在本地检查rootkit后面的工具。
chkrootkit:http://www.chkrootkit.org
04、勒索病毒搜索引擎
勒索病毒自救最有力的工具,输入病毒名或加密文件后缀名,就可以找到解密工具或者了解病毒详情。
①【腾讯】 勒索病毒搜索引擎,支持检索支持检索超过 1000+ 种常见勒索病毒。
https://guanjia.qq.com/pr/ls/
②【360】 勒索病毒搜索引擎,支持检索超过上800种常见勒索病毒。
http://lesuobingdu.360.cn05
05、Webshell检测工具
网站被入侵时,我们需要一款Webshell检测工具,来帮助我们发现webshell,进一步排查系统可能存在的安全漏洞。
①D盾_Web查杀:http://www.d99net.net/index.asp
②百度WEBDIR+:https://scanner.baidu.com/
③河马webshell查杀:http://www.shellpub.com
06、安全分析工具
①SysinternalsSuite:包含一系列免费的系统分析工具,如Process Explorer、启动项分析工具 AutoRuns等。
https://docs.microsoft.com/zh-cn/sysinternals/downloads/
②PCHunter:一款强大的手工杀毒辅助工具。
http://www.xuetr.com
07、日志分析工具
我们经常需要处理各种日志,如系统日志、WEB日志、DNS日志等,一款简单好用的日志分析工具,可以大大提升效率。
①Log Parser:微软公司出品的日志分析工具,它功能强大,使用简单。
https://www.microsoft.com/en-us/download/details.aspx?id=24659
②EmEditor :可能是世界上最快的Windows文本编辑器,支持高达248 GB的大文本。
https://www.emeditor.com/#download