【应急响应】Windows应急响应入门手册
0x01 应急响应概述
首先我们来了解一下两个概念:应急响应和安全建设,这两者的区别就是应急响应是被动响应、安全建设是主动防御。
所谓有因才有果,既然是被动的,那么我们在应急响应的时候就得先了解本次安全事件的起因,常见的有:
安全设备告警、数据被勒索加密、数据泄露在网上贩卖、网页被篡改、服务器CPU爆满卡死等。
在应急响应的时候,你会发现一个非常有用的经验技巧,就是:一旦你能够确定本次安全事件的类型,猜测出攻击者或者恶意代码的攻击思路,然后去验证排查这些猜想,就会加速你的分析过程,而这些从事件起因中就能够获取到一些信息。
0x02 应急响应目的
我们在应急响应时大致有以下几个目的:
遏制事件发酵、找到恶意代码、分析入侵路径、整理入侵时间线、分析恶意代码行为以及追踪溯源。
而一般中间的四个为安全人员需要解决的主要任务:
- 找到恶意代码:通过各种动静态分析找到恶意代码、感染文件,进行取样然后清除。
- 分析入侵路径、入侵时间线:结合各类日志以及恶意代码本身,将有关证据进行关联分析,构造证据链,重现攻击过程。
- 分析恶意代码:找到恶意程序的特征,包括行为、释放的文件、网络通信等,从而得到识别、防御和删除该病毒的方法,使得我们的其他机器能够防得住该恶意程序的攻击。
- 解决问题,根除隐患,分析导致事故发生的系统脆弱点,并采取补救措施,恢复系统,使系统正常运行
追踪溯源不太现实,一般只追溯到攻击IP,这部分更多的是根据前面四个部分刻画出来的攻击者画像去搜索相关的威胁情
报。
0x03 应急响应流程
应急事件处理流程一般包括:安全事件报警、安全事件确认、启动应急预案、安全事件处理、撰写安全事件报告、应急工作总结等步骤。
这个是完整的应急流程,如果是甲方安全人员,一般就是按照这个流程进行应急。而乙方的应急响应,主要是在安全事件处理阶段,也就是应急响应,以及最后的撰写安全事件报告,应急响应第一步要先遏制影响,这个根据安全事件造成的影响大致有以下几种方式:
- 网站下线(篡改、挂反标)
- 断网隔离(远控后门、APT)
- 流量清洗(DOS的进行)
- 联系运营商(劫持类)
注意:断网隔离不是关机重启,电脑重启将会使内存丢失。
当然遏制影响一般在我们之前运维人员就会采取相关的措施了,我们负责的是之后进行的安全事件处理以及撰写安全事件报告。我是属于乙方的应急,所以后面都是以乙方安全人员的应急响应来讲,主要的两个阶段:一个是安全事件处理,也就是应急响应:主要工作就是取证、溯源,这个我们后面详细讲。另外一个就是撰写安全事件报告,一般的安全事件报告包括如下内容:
安全事件发生的日期时间
参加人员
事件发现的途径
事件类型
事件涉及的范围
现场记录
事件导致的损失和影响
事件处理的过程
从本次事故中应该吸取的经验和教训
0x04 应急响应思路
整个应急响应都是建立在恶意代码的基础上的,那么我们第一步就是找到恶意代码,针对常见的安全事件,结合工作中应急响应事件分析和解决的方法,总结了常规的入侵排查的检查思路。
检查思路:
恶意程序需要进行网络通讯,内存中必然有其二进制代码,它要么是进程的 DLL /so模块,通常为了保活,它极可能还有自己的启动项,网络心跳包。
总之,可以归结为如下 4 点要素:网络连接,进程,启动项,内存再加上外部信息,如威胁情报,就可以形成比较完整的证据链。
检查方向:
找到各种可疑的IP、进程、域名、URL,搜索相关的IOC,然后排查相关特征。
- 网络连接
- 进程信息
- 系统启动项
- 账号情况
- 日志信息
- 其他
现场分析:
当发生安全事件时,我们去到现场首先需要先了解一些外部信息:
问题主机/服务器使用人员有谁?
一般使用时间段是什么时候?
是否重启过
查看杀毒软件、防护软件的查杀、隔离、告警日志。(如果有)
各种服务应用如:FTP、SSH、数据库、RDP,是否攻击者开启及是否存在弱口令。
网络中是否有防火墙、行为管理器等防御设备,查看相应告警。
一些安全人员去到现场后就直奔问题主机去了,然后各种分析,忽略了这些信息,因此列出来做个记录。
0x05 取证溯源
前面分析完思路以及记录需要了解到的一些外部信息,都是为了我们的关键环节取证溯源做准备。当然思路归思路,由于安全漏洞不是存在于特定的场景或应用,Web应用可能存在漏洞、软件程序可能存在漏洞、我们使用的操作系统也可能存在漏洞,因此实际的安全事件,我们需要尽可能的检查到每一个薄弱点。而不是网页篡改就只检查web应用、挖矿木马就只排查恶意程序。
检查得越多(做好记录),后面整理报告的时候越有用,经常遇到的是应急只有几个小时的,然后没有做好记录回去无法写报告,只能再找客户联系。
5.1 网络连接
网络连接一般适用于远控后门类的应急事件,这类事件的相同点就是有持续或半持续性的网络连接。一般是找境外IP或不常见端口。有时也会是恶意域名。常用工具:TCPview、火绒剑、DNSquerysniffer、apateDNS、Wireshark
举例:
异常端口(图中工具-TCPview)
异常路径(图中工具-火绒剑)
Dll发起网络连接,本身没有什么异常,但是从这个dll文件的路径,我们还是可以判断出这个dll是有问题的。
域名解析
网络连接还有一种情况,就是域名解析记录,有时候我们在安全设备上发现的告警,是某一台设备请求了某个域名,而这个域名是已经没有在用的了,也就是说不会解析成功,这个时候我们是看不到又任何的网络连接情况的,那么我们就需要查看本地的域名解析记录,这里我们使用DNSQuerySniffer来查看。
PS:结合火绒剑或者PChunter即可定位到具体进程。
5.2 进程信息
病毒文件在系统中运行必定依赖于可执行程序,主要有三种模式在系统中运行:
- 病毒本身是exe程序
- 注入到系统程序
- 其他方式
思路:重点检查没有厂商名字、没有签名验证信息、没有描述信息、CPU 或内存资源占用长时间过高的进程。检查可疑进程的属主、路径、参数是否合法。常规的使用命令tasklist
工具:Process Explorer、火绒剑、PChunter
下面是我之前做的一个测试,用MSF生成的一个后门程序:yu.exe,可以看到,这个进程与正常的进程,少了厂商信息、没有签名、也没有描述信息。通过这些对比,我们就可以快速的筛选出一些的进程,然后再分析这些进程加载了什么dll、使用了什么模块,分析是否存在异常,从而判断该进程是否为一个恶意的进程。
下面就用这几个工具,来讲一下应急响应中我们如何排除一个进程是否是恶意进程。
- 5.2.1 Process Explorer
进程浏览器,列出所有当前活跃的进程、被进程载入的DLL、各种进程属性和整体系统信息。
主要用于:查看进程的签名信息、进程的字符串信息、搜索加载恶意DLL的进程、分析恶意文档、通过属性窗口中的镜像(Image)标签来定位恶意代码在磁盘上的位置。
1. 查看进程加载的dll文件:
然后有个可以快速判断加载的dll文件是否正常的办法,就是路径。正常的dll文件都是在C:\Windows\System32目录下,当然还有其他几个系统目录,我们要找的就是路径不对,名称可疑的。路径不对可以很直观的看出来,但是有时候路径没错,然后名称是不对的,比如正常的是Kernel32.dll。然后恶意程序把自己的dll文件命名为Kerne132.dll。
2. 查看进程中的字符串信息:
有时候进程的网络通讯是间歇性的,所以有可能在我们查看的时候他是正常的,而到了特定的时间他才会执行相应的网络请求。这个时候我们可以看一下这个进程的字符串信息,在字符串信息中,我们有时候可以看到进程调用的Windows API函数和一些IP、URL,或者一些命令行的提示信息,通过看到的一些api函数,来猜测这个进程的功能:比如写入注册表、遍历文件目录、创建进程等。
- 5.2.2 PChunter
这个是一个比较底层的工具,可以看到进程启动的参数。
用得比较多的是用于查找隐藏的文件和目录。
- 5.2.3 火绒剑
这里利用火绒剑查看这个svchost加载的dll文件,可以看到有两个异常的dll文件,虽然有公司名和描述,但是这个描述额、、有点随意,而且查这两个dll文件的路径,在Windows的tmep文件夹下,那么我们也可以猜测这两个dll文件是恶意的dll文件。
实验测试:进程注入
以MSF生成的后门程序为例,使用MSF进程注入功能,利用migrate命令将后门注入到其他进程:
TCPView检测网络连接,根据可疑进程名和可疑网络连接可以定位到meterpreter后门进程:
但是查找对应的PID找不到相应的进程:
这个时候可以使用PCHunter,这个比较底层的工具。查找对应网络连接可以直接查到对应进程路径:
加载后,你可以开始搜索Meterpreter使用的关键指标,如ws2_32.dll和metsrv.dll。ws2_32.dll是用于处理网络连接的Window Sockets Library,而metsrv.dll是默认的Meterpreter服务。这两个dll是用于网络连接的,而everything这个进程是没有网络连接的,但是却调用了这两个dll文件,那么就有问题了。
针对MSF的后门,这里再推荐一款工具:Meterpreter_Payload_Detection.exe,可自行在GitHub上搜索下载。
利用Meterpreter_Payload_Detection.exe检测工具,通过扫描内存检测Meterpreter无法检测的有效负载。缺点就是运行时间比较久。
5.3 启动项
思路:检查启动项、计划任务、服务
这个我一般就检查三个地方:
1.【开始】>【所有程序】>【启动】:
2. 计算机管理:
3. gpedit.msc:
检查启动项这里推荐使用Autorun这款工具,上面的检查项都可以用这个工具查看到,只是一些启动项的路径还是需要大家熟悉一下,因此还是讲一遍:
可以看到,利用这个工具,我们能直观的看到启动项执行的命令、启动的脚本、参数等。
0x06 需要取证的点
1、系统日志、网站访问日志(搜索log文件)、本地用户情况(是否有隐藏、克隆用户)。
2、保存系统当前信息:
systeminfo >c:\Temp\sysinfo.txt
netstat -ano >c:\Temp\net.txt
tasklist >c:\Temp\task.txt
net user >c:\Temp\user.txt
xcopy %systemroot%\system32\winevt\logs\* C:\Temp\eventlog
3、使用Process Monitor、Autorun、Tcpview等工具,保存记录文件。PClog和Process Explorer选择性保存。
可在现场简单检查,把可疑的程序打包回来分析。
4、检查webshell结果(最好能把网站整个文件夹拷贝回来)。
因为jsp后门删除了还会有.class缓存保留,命名方式为_xx__jsp.class,可恢复。
5、系统内存、镜像
Readline、DumpIt(这两个都是适用于低内存系统),电脑重启将会使内存丢失。
将以上几个需要取证的数据打包回来事后分析。
☆注意:所有软件都必须以管理员身份运行。
最终,我们在一次应急响应中需要拷贝回来取证的有如下文件(包括但不限于):
日志如果被删,建议整个文件夹拷贝回来。
笨鸟先飞早入林,笨人勤学早成材。 转载请注明出处:
撰写人:fox-yu http://www.cnblogs.com/fox-yu/
【应急响应】Windows应急响应入门手册的更多相关文章
- Windows应急响应常识
Windows 应急响应 常见事件ID 1102 清理审计日志 4624 账号登陆成功 4625 账号登陆失败 4672 授予特殊权限 4720 创建用户 4726 删除用户 4728 将成员添加到启 ...
- 【命令汇总】Windows 应急响应
日期:2019-06-07 16:11:49 作者:Bay0net 介绍:Windows 应急响应.取证及溯源相关内容学习记录 0x00.前言 常见的应急分类: web入侵:网页挂马.主页篡改.Web ...
- Windows应急响应和系统加固(2)——Windows应急响应的命令使用和安全检查分析
Windows应急响应的命令使用和安全检查分析 1.获取IP地址: ·ipconfig /all,获取Windows主机IP地址信息: ·ipconfig /release,释放网络IP位置: ·ip ...
- duilib进阶教程 -- 响应windows原生消息和自定义消息(13)
一.windows原生消息 同样,入门教程只是给出了响应windows原生消息的方法,并没给出例子,这里以自适应屏幕分辨率为例.迅雷播放器虽然可以在启动的时候自动调整窗口大小,但是当屏幕分辨率实时改变 ...
- 响应式Web初级入门
本文来自我的前端博客,原文地址:http://www.hacke2.cn/about-responsive/ 跨终端时代的到来 当你乘坐各种交通工具(公交.地铁.轻轨.火车)时你会发现,人们都个个低下 ...
- Windows应急日志常用的几个事件ID
Windows应急日志常用的几个事件ID点击站内没有搜索到,可能搜索姿势不对,发一下吧,应急时可能会用到,根据日志时间点判断入侵 日志路径:C:\Windows\System32\winevt\Log ...
- Github快速入门手册
最近在试用Github,开源的思想也让人觉得把一些经验分享出来是非常好的事情.附件是doc文件,如有需要请注意查收.希望能对你有帮助. GITHUB基于互联网的版本控制快速入门手册 如有不妥,欢迎指正 ...
- [转帖]Masscan教程和入门手册
Masscan教程和入门手册 https://www.4hou.com/tools/8251.html 愣娃 安全工具 2017年11月1日发布 收藏 导语:masscan是为了尽可能快地扫描整个互联 ...
- Node.js 入门手册:那些最流行的 Web 开发框架
这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...
随机推荐
- (十四)json、pickle与shelve模块
任何语言,都有自己的数据类型,那么不同的语言怎么找到一个通用的标准? 比如,后端用Python写的,前端是js,那么后端如果传一个dic字典给前端,前端肯定不认. 所以就有了序列化这个概念. 什么是序 ...
- 【Linux】iptables配置文件中的一些疑问
1.看到配置文件中开头会写一句话,但是数值还都不一样 括号里面的数值的含义是:通过该规则的数据包和字节总数 Chain FORWARD (policy DROP 0 packets, 0 bytes) ...
- 目前用下来最溜的MacOS微信多开工具!
一个生活微信,一个工作微信是很多上班族的基本配置. 但由于微信客户端在PC端上只能打开一个,这使得在上班时候就非常不便,一个号在PC端上登录,一个在手机上使用,但是上班时候又不能一直看手机,不然老板还 ...
- pycharm工具的使用
一.Pycharm常用快捷键 快捷键 作用 备注 ctrl + win + 空格 自动提示并导包 连按两次 ctrl + alt + 空格 自动提示并导包 连按两次 Alt + Ente ...
- [Usaco2007 Feb]Cow Party
题目描述 农场有N(1≤N≤1000)个牛棚,每个牛棚都有1只奶牛要参加在X牛棚举行的奶牛派对.共有M(1≤M≤100000)条单向路连接着牛棚,第i条踣需要Ti的时间来通过.牛们都很懒,所以不管是前 ...
- StringBuilder和输入输出
构建字符串(StringBuilder的应用) 有些时候,需要由较短的字符串构建字符串,例如:按键或来自文件的单词,采用字符串连接的方式达到此目的效率比较低.每次连接字符串,都会构建一个新的Strin ...
- 18V转5V,18V转3.3V,18V转3V稳压芯片,0.01A-3A输出
18V转5V,18V转3.3V,18V转3V, 18V转5V稳压芯片,18V转3.3V稳压芯片,18V转3V稳压芯片, 18V常降压转成5V电压,3.3V电压和3V电压给其他芯片或设备供电,适用于这个 ...
- Python数据模型与Python对象模型
数据模型==对象模型 Python官方文档说法是"Python数据模型",大多数Python书籍作者说法是"Python对象模型",它们是一个意思,表示&quo ...
- linux登陆欢迎信息及命令提示符修改
登录信息修改 登陆信息显示数据 : /etc/issue and /etc/motd 登陆终端机的时候,会有几行提示的字符串,这些设置在/etc/issue里面可以修改,提示内容在/etc/motd中 ...
- 简单明朗的 RNN 写诗教程
目录 简单明朗的 RNN 写诗教程 数据集介绍 代码思路 输入 and 输出 训练集构建 生成一首完整的诗 代码实现 读取文件 统计字数 构建word 与 id的映射 转成one-hot代码 随机打乱 ...