《网络安全应急响应技术实战指南》学习笔记(上)

《网络安全应急响应技术实战指南》学习笔记(上)
lololowe《网络安全应急响应技术实战指南》官网:https://www.qianxin.com/book/detail?book=31
《网络安全应急响应技术实战指南》PDF下载:https://lololowe.lanzoul.com/iv3CZ2lqheab
第1章 网络安全应急响应概述
1.1. 应急响应基本概念
应急响应,其英文是Incident Response或Emergency Response,通常是指一个组织为了应对各种意外事件的发生所做的准备,以及在事件发生后所采取的措施。其目的是减少突发事件造成的损失。
应急响应工作主要包括以下两方面:
未雨绸缪,在事件发生前先做好准备。例如,开展风险评估,制订安全计划,进行安全意识的培训,以发布安全通告的方法进行预警。
亡羊补牢,在事件发生后采取的响应措施,其目的在于把事件造成的损失降到最小。
1.2. 应急响应流程: PDCERF
根据应急响应的PDCERF模型可分为6个阶段来处理,分别是:
准备(Preparation): 预先设定应急响应计划和资源。
检测(Detection): 识别和确认安全事件的发生。
遏制(Containment): 阻止威胁的扩散和进一步的损害。
根除(Eradication): 彻底清除威胁来源或恶意软件。
恢复(Recovery): 修复系统和服务,使其恢复正常运行。
跟踪(Follow-up): 事后分析、报告和改进应急响应流程。
第2章 应急响应工程师基础技能
2.1. 系统排查
在进行受害主机排查时,首先要对主机系统进行基本排查,方便对受害主机有一个初步了解。
2.1.1. 系统基本信息
2.1.1.1. Windows
在命令行或者运行窗口中输入msinfo32
命令,打开“系统信息”窗口,可以显示出本地计算机的硬件资源、组件和软件环境的信息:
2.1.1.2. Linux
在命令行中输入lscpu
命令,可查看CPU相关信息:
在命令行中输入以下任意一条命令,可查看当前操作系统信息:
1 | uname-a |
在命令行中输入lsmod
命令,可查看当前加载的内核模块:
2.1.2. 用户信息
在服务器被入侵后,攻击者会采用几种方式建立相关账户:
- 直接建立一个新的账户(有时是为了混淆视听,账户名称与系统常用名称相似)
- 激活一个系统中的默认账户,但这个账户是不经常使用的
- 建立一个隐藏账户(在Windows系统中,一般在账户名称最后加$)
无论攻击者采用哪种方法,都会在获取账户后,使用工具或是利用相关漏洞将这个账户提升到管理员权限,然后通过这个账户任意控制计算机。
2.1.2.1. Windows
Windows的恶意账户排查主要有以下4种方法:
- 命令行方法
在命令行中输入net users
或net user
命令,可查看系统所有账户(但看不到以$
结尾的隐藏账户);若需查看某个账户的详细信息,可在命令行中输入net user 用户名
命令:
恶意账户通常会把自己加入到Administrators组中,因此,在命令行中输入net localgroup administrators
命令,可查看所有管理员权限账户(包括隐藏账户):
- 图形界面方法
打开计算机管理(compmgmt.msc)窗口,单击【本地用户和组】中的【用户】选项,可查看隐藏账户(名称以$结尾):
也可直接打开本地用户和组(lusrmgr.msc)窗口,查看是否有新增或可疑的账户:
注意:在Windows家庭版中,没有这两个选项。
如果新增用户没有克隆管理员账户,那么也可在登陆界面查看是否有新增账户:
推荐阅读,windows实现超级隐藏用户:https://www.cnblogs.com/sillage/p/15076730.html
- 注册表方法
打开注册表编辑器(regedit)窗口,选择HKEY_LOCAL_MACHINE
下的SAM
选项,为同名子项SAM
配置权限,允许Administrators组完全控制:
接着再F5刷新,即可访问子项(Domains\Account\Users\Names
)并查看用户信息:
同时,在此项下找到000001F4(对应Administrator用户),将其他以00000开头的项中的f值与Administrator的f值进行比较,若相同,则表示为克隆账户(克隆账号在net user
以及“本地用户和组”还有登陆界面中均无法看到,只能在注册表或者net localgroup 组名
中查看):
- wmic方法
wmic(Windows Management Instrumentation Command-line,Windows管理规范命令行工具),提供从命令行接口面管理和查询系统资源。在命令行中输入wmic useraccount
命令,可以查看系统中的所有用户(包括隐藏账户)以及相关信息:
注意:从 Windows 10 版本 21H1 开始,以及从 Windows Server 21H1 半年频道版本开始,WMIC 已被弃用:https://learn.microsoft.com/zh-cn/windows/win32/wmisdk/wmic
2.1.2.2. Linux
- 查看系统所有用户信息
在命令行中输入cat /etc/passwd
命令即可查看所有用户信息。该文件的每行格式为: 用户名:加密密码:用户ID:组ID:备注:家目录:默认登录shell
:
查询的用户信息中,最后显示/bin/zsh
或/bin/bash
的,表示账户状态为可登录;显示/usr/sbin/nologin
或/bin/false
的,表示账户状态为不可登录,但如果这两文件被恶意替换或修改,则账户状态仍为可登录。
- 分析超级权限用户
root用户的UID和GID均为0,普通用户如果如果UID为0,则相当于root用户,具有超级权限:
普通用户如果GID为0,则表示该用户属于root组,意味着该用户可以执行系统的大多数操作:
一个正常的系统中,不应该存在UID为0的普通用户,也不应该存在GID为0的普通用户。因此可以对具有以上特征的账户进行排查。
可以使用grep :0: /etc/passwd
命令,查看是否存在UID或者GID为0的账户:
或者使用awk -F: '$2==0 || $3==0 {print $1}' /etc/passwd
命令,也可以实现同样的效果:
- 查看可登录的用户
在命令行中输入grep '/bin/bash' /etc/passwd
命令,可查看可登录的账户:
注意:
/bin/bash
可以被替换为/bin/sh
、/bin/fish
、/bin/zsh
等shell解释器。
- 查看用户错误的登录信息
在命令行中输入lastb命令,会自动读取位于/var/log
目录下的btmp二进制文件,然后输出用户错误登录列表,包括登录用户名、错误的登录方法、IP地址、时间等:
也可以使用lastb | awk '{print $3}' | sort | uniq -c | sort -nr
命令,统计登录失败的IP地址以及失败次数:
- 查看所有用户最后的登录信息
在命令行中输入lastlog命令,可查看系统中所有用户最后的登录信息:
- 查看所有成功登录信息
在命令行中输入last命令,可查看用户最近成功过登录到系统的信息:
last默认读取位于/var/log目录下的wtmp二进制日志文件(cat命令无法查看),也可以使用last -f 日志文件
命令,指定读取的文件:
1 | last -f /var/log/wtmp # 等同于last,显示登录成功的用户 |
- 查看当前用户登录系统情况
在命令行中输入who或者w和users
命令,可查看当前在线用户:
- 查看空口令账户
在命令行中输入awk -F: '$2=="!" || $2==""' /etc/shadow
命令,可查看系统是否存在空口令账户:
2.1.3. 启动项
启动项是病毒后门等实现持久化驻留的一种常用方法,在应急响应中也是排查的必要项目。
2.1.3.1. Windows
- 任务管理器
在任务管理器(taskmgr)中,点击“启动应用”选项卡,可以管理部分启动项:
shell:startup
文件夹
shell:startup
文件夹中的程序会在用户登录时自动运行:
- 注册表
1 | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run |
以上两个注册表项中定义的程序会在系统启动时自动运行。
实际上,这两个注册表项中的自启动项都可以被任务管理器接管。例如,我的任务管理器中的启动项中,有10个已启用的项,而这10个项目中在这两个注册表中都能找到:
推荐阅读,注册表自启动解释:https://www.cnblogs.com/zhaotianff/p/17836839.html
2.1.3.2. Linux
以下目录中的程序会在系统启动时自动运行:
1 | ls -la /etc/rc[0-6].d/ # 对应7个运行级别的启动项 |
以下文件中的命令会在系统启动或者用户登录时自动运行:
1 | cat /etc/rc.local |
推荐阅读,rc.d开机自启程序介绍:https://www.cnblogs.com/wucongzhou/p/12588682.html
2.1.4. 任务计划
任务计划比启动项更灵活,可以设置在特定时间执行特定任务,因此任务计划也是病毒后门实现持久化驻留的一种常用方法,在应急响应中也是排查的必要项目。
2.1.4.1. Windows
- 任务计划程序(taskschd.msc)
- powershell命令
1 | powershell Get-ScheduledTask |
- cmd命令
1 | schtasks |
比前者更详细:
2.1.4.2. Linux
1 | crontab -l # 查看当前用户的定时任务 |
- 任务计划文件
任务计划文件通常是以cron开头的,因此可以使用以下命令查看:
1 | ls -l /etc/cron* |
2.1.5. 防火墙
2.1.5.1. Windows
firewall.cpl
打开防火墙设置,随后选择高级设置,查看入站规则和出站规则,重点检查出站规则:
也可以使用netsh
命令管理防火墙:
1 | netsh firewall show state |
netsh命令更多用法:https://zahui.fan/posts/f85b3ad3/
2.2. 进程排查
2.2.1. Windows
Windows的进程排查,主要是找到恶意进程的PID、程序路径,有时还需要找到PPID(PID的父进程)及程序加载的DLL。
- 任务管理器(taskmgr)
为了查看更多信息,建议添加“PID”、“命令行”等列:
- tasklist命令
在命令行中输入tasklist
命令,可查看进程的名称、PID、会话名等信息:
给tasklist
命令添加/svc
参数,还可以显示每个进程和服务的对应情况:
对于某些加载DLL的恶意进程,可以通过输入tasklist /m
命令查询所有进程加载的DLL:
/m
参数后面可以跟DLL名称,例如tasklist /m NetworkExplorer.dll
,可以查看哪些进程加载了NetworkExplorer.dll:
推荐阅读,tasklist命令手册:https://www.linux-man.cn/windows/command/tasklist/
- powershell命令
1 | Get-WmiObject Win32_Process | select Name,ProcessId,ParentProcessId,Path |
- vmic命令
1 | wmic process get name,parentprocessid,processid |
注意:从 Windows 10 版本 21H1 开始,以及从 Windows Server 21H1 半年频道版本开始,WMIC 已被弃用:https://learn.microsoft.com/zh-cn/windows/win32/wmisdk/wmic
- netstat命令
在命令行中输入netstat
命令,可显示网络连接的信息:
此命令输出的常见网络状态如下:
- LISTENING:侦听状态
- ESTABLISHED:建立连接
- CLOSE_WAIT:对方主动关闭连接或网络异常导致连接中断
在排查过程中,一般会使用netstat -ano | findstr ESTABLISHED
命令查看建立了大量连接的PID:
通过netstat
命令定位出PID后,再通过tasklist | findstr PID
命令进行程序定位:
在拥有管理员权限的情况下,还可以使用netstat /anob
命令查看连接对应的进程名称:
推荐阅读,netstat命令详解:https://zhuanlan.zhihu.com/p/547068671
2.2.2. Linux
使用以下任意一条命令可以查看可疑端口、可疑IP以及对应的进程:
1 | sudo netstat -tunlp |
注意:如果没有root权限,则
-p
选项将无法输出进程信息。
获取到PID后,可以使用lsof -p PID
命令查看进程打开的文件:
对于恶意进程,可以使用kill -9 PID
命令强制结束进程。然后使用rm -rf filename
命令可删除恶意文件。如果root用户都无法删除相关文件,那么很可能是因为该文件被加上了i属性(immutable)。使用lsattr filename
命令可以查看文件属性,然后使用chattr -i filename
命令移除i属性,进而删除文件。也有的进程因为存在守护进程而无法删除,我们可以先把进程挂起,查杀守护进程后,再返回将进程删除。
有些攻击者会将进程隐藏,以躲避排查,因此查看隐藏进程同样重要。按照顺序执行以下命令:
1 | ps -ef | awk '{print $2}' | sort -n | uniq > 1 |
这个方法背后的逻辑是:如果某个进程被隐藏,它可能不会出现在 ps 命令的输出中(文件 1),但仍然会在 /proc 文件系统中有一个对应目录(文件 2)。通过比较这两个文件的差异,可能会发现那些只在 /proc 中存在的进程ID,这可能是隐藏进程。
对于挖矿进程的排查,可使用top
或者htop
命令查看相关资源占用率较高的进程,之后进行定位:
2.3. 服务排查
服务可以理解为运行在后台的进程。这些服务可以在计算机启动时自动启动,也可以暂停和重新启动,而且不显示任何用户界面。在应急响应排查过程中,服务作为一种运行在后台的进程,是恶意软件常用的驻留方法。
2.3.1. Windows
打开运行
窗口,输入services.msc
命令,可打开“服务”窗口,查看所有的服务项,包括服务的名称、描述、状态等:
或者使用sc query
命令列举出所有的服务:
sc 命令的常见用法如下:
1 | :: 查询服务运行状态 |
2.3.2. Linux
可使用以下命令查看服务状态:
1 | systemctl list-units --type=service |
推荐阅读,systemd教程:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
2.4. 文件痕迹排查
一般,可以从以下几方面对文件痕迹进行排查:
- 常用的敏感路径排查;
- 事发时间点前后的文件排查;
- 排查带有特征的恶意软件,特征包括代码关键字或关键函数、文件权限等。
2.4.1. Windows
- 敏感目录
- 临时目录(环境变量为
%tmp%
和%temp%
)。恶意程序一般会释放文件到临时目录,因此可以查看临时目录下是否有可疑文件:
- 下载记录。对于一些人工入侵的应急响应事件,有时入侵者会下载一些后续攻击的工具。Windows系统要重点排查浏览器的历史记录、下载文件和cookie信息,查看是否有相关的恶意痕迹:
- Recent文件夹(环境变量为
%userprofile%\Recent
)。Recent文件夹主要存储了最近运行文件的快捷方式,可在此处排查可疑文件:
推荐阅读,关闭Recent文件夹:https://blog.csdn.net/weixin_42220130/article/details/110652928
- 预读取文件夹(环境变量为
%SystemRoot%\Prefetch\
)和Amcache.hve文件(环境变量为%SystemRoot%\appcompat\Programs\
)分别存储了系统启动后访问过的可执行文件的预读取信息,以及可执行文件的版本信息。这些信息可以帮助我们还原出系统启动后访问过的可执行文件,从而发现可疑文件。不过,这些文件是二进制文件,需要借助第三方工具进行解析。推荐阅读:https://3gstudent.github.io/backup-3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E7%B3%BB%E7%BB%9F%E6%96%87%E4%BB%B6%E6%89%A7%E8%A1%8C%E8%AE%B0%E5%BD%95%E7%9A%84%E8%8E%B7%E5%8F%96%E4%B8%8E%E6%B8%85%E9%99%A4/ ; https://linux.do/t/topic/109368
预读文件(Prefetch文件)查看器:https://www.nirsoft.net/utils/win_prefetch_view.html
- 时间点排查
可以排查事件发生前、后的文件变动情况,从而缩小排查的范围。
- 新增文件排查。使用以下命令,可以在e盘查找2025年1月19日之后新增的bat文件:
1 | forfiles /m *.bat /d +2025/1/19 /s /p e:\ /c "cmd /c echo @path @fdate @ftime" 2>nul |
上面这种方法只能指定日期,不能指定时间,如果要指定时间的话,可以使用powershell命令:
1 | Get-ChildItem -Path "e:\" -Recurse -Filter *.bat | Where-Object { $_.CreationTime -gt [DateTime]"2025-01-19 20:00:00" } | Select-Object FullName, CreationTime |
除了用命令查找新增文件,还可以直接在资源管理器中使用搜索功能,筛选出指定日期之后新增的文件:
重点关注那些修改时间比创建时间早的文件,因为它们很可能是被故意修改的。
- webshell
在应急响应过程中,网站是一个关键的入侵点,对Webshell的查找可以通过上述方法进行筛选后再进一步使用工具排查,比如D盾、河马等:
- 可以分析开机、关机记录、浏览过的文件夹,运行程序等使用痕迹的小工具:https://www.52pojie.cn/thread-1125531-1-1.html
2.4.2. Linux
- 敏感目录
1 | ls -lath /tmp |
- 时间点排查
使用命令find / -ctime 0 -name "*.sh
,可查找root目录下一天内新增的sh文件:
使用命令ls -alt
,可查看指定目录下所有文件的修改时间,并按时间排序(从新到旧):
使用stat
命令可以详细查看文件的创建时间、修改时间、访问时间,若修改时间距离应急响应事件日期接近,有线性关联,说明可能被篡改:
- 特殊文件
- 特殊权限文件查找。使用命令
find /var/www/html -perm 777
,可在web目录下查找权限为777的文件:
- webshell查找。Webshell的排查可以通过分析文件、流量、日志进行。基于文件名和内容特征,相对操作性较高。例如,可使用以下命令查找web目录下可能存在的webshell:
1 | find /var/www/ -name "*.php" | xargs egrep 'c99sh|milw0rm|gunepress|@eval\(|(base64_decode.*spider_bcs)|(hell_exec|passthru)\(.*?(\$_POST|\$_GET|\$_REQUEST).*?\)|str_rot13.*chr|file_put_contents.*base64_decode' |
除了手工初筛的方法,还可以使用findWebshell、Scan_Webshell.py、河马等工具进行辅助排查。
- 系统命令排查。ls和ps等命令很可能被攻击者恶意替换,所以可以使用
ls -alt /bin
命令,查看命令目录中相关系统命令的修改时间。也可以使用ls -alh /bin
命令查看相关文件的大小,若明显偏大,则文件很可能被替换。
- Linux后门检测。可以使用第三方查杀工具,如chkrootkit、rkhunter进行查杀。使用
chkrootkit
时,若出现infected,则说明检测出系统后门:chkrootkit | grep INFECTED
:
使用rkhunter
检测结果如下:
- SUID程序排查。首先介绍下什么是SUID程序,举个具体的例子,passwd 命令就是一个典型的SUID程序。正常情况下,只有系统管理员(root)能修改用户的密码信息。但如果想自己改自己的密码,系统会允许临时获得root的权限去修改密码文件(/etc/passwd)。所以,SUID的作用就是让普通用户在执行特定程序时,临时拥有更高的权限来完成一些他们平常做不到的任务,但这也增加了安全风险。可以使用
find / -type f -perm -04000 -ls -uid 0 2>/dev/null
命令查找系统中所有设置了SUID权限且属于root用户(uid 0)的文件:
2.5. 日志分析
2.5.1. Windows
可以在“运行”窗口中输入eventvwr
命令,打开事件查看器,查看相关的日志。对于应急响应工程师来说有三类日志需要熟练掌握:
系统日志,文件位置为:
%SystemRoot%\System32\Winevt\Logs\System.evtx
。主要记录了系统中各种驱动、组件、应用软件在运行中出现的重大问题。这些重大问题主要包括重要数据的丢失、错误,以及系统产生的崩溃行为等。安全性日志,文件位置为:
%SystemRoot%\System32\Winevt\Logs\Security.evtx
。主要记录了各种登录与登出系统的成功或不成功的信息、对系统中各种重要资源进行的创建、删除、更改等操作。应用程序日志,文件位置为:
%SystemRoot%\System32\Winevt\Logs\Application.evtx
。主要记录各种应用程序所产生的各类事件。例如,系统中SQL Server数据库程序在受到暴力破解攻击时,日志中会有相关记录。
在应急响应中还经常使用PowerShell日志:
Windows系统中的每个事件都有其相应的事件ID,下表是应急响应中常用的事件ID,其中旧版本指Windows 2000 专业版/Windows XP/Windows Server 2003,新版本指Windows Vista/Windows 7/Windows 8/Windows 10/Windows Server 2008等:
第三方日志分析工具:
- WindowsLog_Check:https://github.com/Fheidt12/Windows_Log
- windows日志快速分析小工具:https://github.com/dogadmin/windodws-logs-analysis
2.5.2. Linux
Linux系统中的日志一般存放在目录/var/log/
下,具体的日志功能如下:
日志文件 | 功能 |
---|---|
/var/log/wtmp | 记录登录进入、退出、数据交换、关机和重启,即last |
/var/log/cron | 记录与定时任务相关的日志信息。 |
/var/log/messages | 记录系统启动后的信息和错误日志。 |
/var/log/apache2/access.log | 记录Apache的访问日志。 |
/var/log/auth.log | 记录系统授权信息,包括用户登录和使用的权限机制等。 |
/var/log/userlog | 记录所有等级用户信息的日志。 |
/var/log/xferlog(vsftpd.log) | 记录Linux FTP日志。 |
/var/log/lastlog | 记录登录的用户,可以使用命令lastlog查看。 |
/var/log/secure | 记录大多数应用输入的账号与密码,以及登录成功与否。 |
/var/log/faillog | 记录登录系统不成功的账号信息。 |
对于Linux系统日志的分析主要使用grep
、sed
、sort
和awk
等命令。常用查询日志命令及功能如下:
命令 | 功能 |
---|---|
tail -n 10 test.log | 查询最后10行的日志 |
tail -n +10 test.log | 查询10行之后的所有日志。 |
head -n 10 test.log | 查询头10行的日志。 |
head -n -10 test.log | 查询除了最后10行的其他所有日志。 |
awk ‘{print $1}’ test.log | sort | uniq | wc-l | 统计独立IP地址个数 |
awk ‘{print $1}’ access.log | sort | uniq -c | sort -nr | head -10 | 统计访问量最多的10个IP |
sed -n ‘/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p’ test.log | 查找指定时间段的日志 |
grep ‘2014-12-17 16:17:20’ test.log | 查找特定时间的日志 |
cat /var/log/secure | awk ‘/Accepted/ {print $(NF-3)}’ | sort | uniq -c | awk ‘{print $2 “=” $1;}’ | 定位暴力破解主机root账号的IP地址(CentOS) |
cat /var/log/auth.log | awk ‘/Failed/ {print $(NF-3)}’ | sort | uniq -c | awk ‘{print $2 “=” $1;}’ | 查看登录成功的IP地址(Ubuntu) |
cat /var/log/auth.log | awk ‘/Accepted/ {print $(NF-3)}’ | sort | uniq -c | awk ‘{print $2 “=” $1;}’ | 查看登录成功日期、用户名、IP地址 |
除了可对Windows和Linux系统日志进行分析,还可对Web日志、中间件日志、数据库日志、FTP日志等进行分析。日志分析的方法一般是结合系统命令及正则表达式,或者利用相关成熟的工具进行分析,分析的目的是提取相关特征规则,对攻击者的行为进行分析。需要重点排查的其他日志常见位置如下:
服务/软件 | 日志位置 |
---|---|
IIS | - %SystemDrive%\inetpub\logs\LogFiles - %SystemRoot%\System32\LogFiles\W3SVC1 - %SystemDrive%\inetpub\logs\LogFiles\W3SVC1 - %SystemDrive%\Windows\System32\LogFiles\HTTPERR |
Apache | - /var/log/httpd/access.log - /var/log/apache/access.log - /var/log/apache2/access.log - /var/log/httpd-access.log |
Nginx | - /usr/local/nginx/logs/ - /var/log/nginx/ |
Tomcat | TOMCAT_HOME/logs/ |
Vsftp | - /var/log/messages - vsftpd.log - xfserlog |
WebLogic | - Access Log: $MW_HOME\user_projects\domains<domain_name>\servers<server_name>\logs\access.log - Server Log: $MW_HOME\user_projects\domains<domain_name>\servers<server_name>\logs<server_name>.log - Domain Log: $MW_HOME\user_projects\domains<domain_name>\servers<adminserver_name>\logs<domain_name>.log |
数据库 | Oracle: - 使用 select * from v$logfile 命令查询日志路径- 使用 select * from v$sql 命令查询之前使用的SQLMySQL: - 使用 show variables like 'log_%' 查看是否启用日志,默认路径 /var/log/mysql/- 使用 show variables like 'general' 查看日志位置MsSQL: - 通过SQL Server Management Studio在“管理—SQL Server日志”中查看 |
2.6. 内存分析
推荐阅读:https://r0fus0d.blog.ffffffff0x.com/post/memory-forensics/
2.6.1. 内存的获取
- 基于内核模式程序的内存获取。
需要借助相关的工具来完成,如FTK Imager: https://www.52pojie.cn/thread-1698481-1-1.html ,Dumpit:https://www.secist.com/archives/2076.html , 后者可一键转储内存镜像:
- 基于系统崩溃转储的内存获取。
打开系统高级设置(systempropertiesadvanced.exe),进入“启动和故障恢复”,将“写入调试信息”改成核心内存转储,下面的转储文件就是内存镜像:
- 基于虚拟化快照的内存获取。
这种获取方法是通过VMware Workstation、ESXI等虚拟化软件实现的。VMware Workstation在生成快照时会自动生成虚拟内存文件(vmem格式):
2.6.2. 内存的分析
对于内存的分析,一般需要借助相应的工具来进行,以下简单介绍几个常用工具。
- FireEye Redline: https://fireeye.market/apps/211364
支持图形界面,也可导出报表:
推荐阅读,Redline使用教程: https://mp.weixin.qq.com/s?__biz=Mzg3MjE1NjQ0NA==&mid=2247495446&idx=1&sn=4579752ec93fd7e2e092ba622ed53e59
- Volatility: https://volatilityfoundation.org/
Volatility是一个开源的内存取证工具,可以分析入侵攻击痕迹,包括网络连接、进程、服务、驱动模块、DLL、handles、进程注入、cmd历史命令、IE浏览器历史记录、启动项、用户、shimcache、userassist、部分rootkit隐藏文件、cmdliner等。
推荐阅读,内存取证-volatility工具的使用(史上更全教程,更全命令): https://www.cnblogs.com/sakura--tears/p/17148293.html
Volatility使用-f
参数指定内存镜像文件,imageinfo
参数获取镜像信息:
获取到镜像配置文件后,后续命令必须用--profile
参数指定镜像配置文件才有效,例如使用netscan
命令列出内存镜像中的网络连接的情况:
使用psxview
命令,可查看内存镜像中带有隐藏进程的所有进程列表:
底下4个进程只在psscan
方法中检测到,其他方法均未检测到,说明这些进程可能是隐藏的。
使用malfind
命令,可查找隐藏或注入的代码、DLL:
使用cmdscan
命令,可提取执行的相关命令记录:
使用procdump -p PID --dump-dir .
命令,可提取进程文件到当前目录:
可以分析内存中提取出的文件,从而判别文件是否有恶意行为。最简单的方法是把提取出的文件上传到云沙箱进行扫描:https://s.threatbook.com/
2.7. 流量分析
在应急响应过程中,使用工具如PCHunter、Process Monitor或命令如netstat可以查看网络连接,但无法查看内部流量的详细情况。为此,需要进行网络数据包抓取和分析,最常用的工具是Wireshark: https://www.wireshark.org/download.html
Wireshark选择网卡并开启抓包后,通过其过滤器可以过滤和提取数据包,过滤器使用条件表达式来筛选数据包。
推荐阅读,深入理解Wireshark过滤技法:https://cloud.tencent.com/developer/article/2462400
2.8. 威胁情报
在应对网络安全威胁时,威胁情报就像一个大数据库,里面存储了各种过去的恶意活动信息。有了这些情报,可以很快了解到攻击者可能是谁,用什么方法攻击。简单来说,威胁情报就是关于安全威胁的一堆有用资料,包括谁是威胁者、他们用什么漏洞、用什么恶意软件等。
SANS研究院说威胁情报就是关于安全威胁的各种数据。Gartner则认为它是一种基于证据的知识,提供背景信息、方法、标志、建议等,帮助你在面对威胁时做出决定。
David J. Bianco用一个“痛苦金字塔”来解释威胁情报的类型和价值。这个金字塔有几层:
最底层是文件的哈希值、IP地址和域名,这些信息很常见,相对容易获取,但价值也相对低。
往上走,会看到网络特征或主机特征,稍微高级一点。
再往上是攻击工具,价值更高。
金字塔顶端是TTPs,即战术、技术和程序,这些信息最难获取,但也最有价值,因为它能揭示攻击者的具体手段和策略。
在威胁情报中,IOC(Indicator of Compromise,入侵指标)是一个重要的概念。它指的是那些在检测或取证过程中被认为是可信的威胁迹象或特征。简单来说,IOC就是一些信号或证据,表明你的系统可能已经被入侵或受到了攻击。在应急响应中,通过威胁情报平台查询到的信息通常就是这些IOC,可以帮助你识别和确认安全事件。
例如银狐木马相关的IOC:https://x.threatbook.com/v5/article?threatInfoID=100091
国内威胁情报平台:
名称 | 地址 |
---|---|
微步在线X情报社区 | https://x.threatbook.com/ |
奇安信威胁情报中心 | https://ti.qianxin.com |
安恒安全星图平台 | https://ti.dbappsecurity.com.cn/ |
360安全大脑 | https://ti.360.net/ |
安天威胁情报中心 | https://www.antiycloud.com |
绿盟NTI威胁情报中心 | https://ti.nsfocus.com/ |
启明星辰VenusEye威胁情报中心 | https://www.venuseye.com.cn/ |
天际友盟威胁情报中心 | https://redqueen.tj-un.com/ |
长亭IP威胁情报 | https://rivers.chaitin.cn/console/app/safeline-cloud-16296/ |
第3章:常用工具推荐
3.1. webshell查杀
3.1.1. 本地查杀
工具 | 介绍 | 下载地址 |
---|---|---|
D盾 | 仅支持Windows,最常用的webshell查杀工具,同时支持系统安全检测等实用功能 | https://www.d99net.net/ |
河马webshell查杀 | 支持Windows和Linux,并且有网页版 | https://www.shellpub.com/ |
D-Eyes | 大厂出品,支持Windows和Linux,支持webshell查杀,同时支持入侵排查等诸多实用功能 | https://github.com/m-sec-org/d-eyes |
Whoamifuck | 仅支持Linux,系统信息收集神器,同时支持webshell查杀 | https://github.com/enomothem/Whoamifuck |
3.1.2. 在线查杀
工具 | 在线地址 |
---|---|
阿里云Webshell检测平台 | https://ti.aliyun.com/#/webshell |
河马在线查杀 | https://n.shellpub.com/ |
微步云沙箱 | https://s.threatbook.com/ |
微软VirusTotal | https://www.virustotal.com/ |
virscan | https://www.virscan.org/ |
3.2. 日志分析
工具 | 介绍 | 下载地址 |
---|---|---|
WindowsLog_Check | 系统排查、日志审计神器 | https://github.com/Fheidt12/Windows_Log |
windows日志快速分析小工具 | 同上 | https://github.com/dogadmin/windodws-logs-analysis |
LastActivityView | 通过读取预读文件,显示系统使用痕迹 | https://www.nirsoft.net/utils/computer_activity_view.html |
Windows使用记录 | 同上 | https://www.52pojie.cn/thread-1125531-1-1.html |
遥知web日志分析 | 支持在线或本地分析Nginx和Apache的访问日志 | https://gitee.com/Jixian-Net/YaoZhi |
Whoamifuck | 仅支持Linux,可以分析日志中是否存在sql注入记录 | https://github.com/enomothem/Whoamifuck |
3.3. 网络分析
工具 | 介绍 | 下载地址 |
---|---|---|
Wireshark | 神 | https://www.wireshark.org/download.html |
科来网络分析系统 | 更适合中国宝宝体质的抓包工具 | https://lestore.lenovo.com/detail/L101668 |
PortExpert | 实时显示网络连接情况 | http://www.th-sjy.com/?p=1448 |
Turbo WiFi Analyzer | 无线信道分析 | https://www.crxsoso.com/store/detail/9N7SFP54SKH8 |
WifiHistoryView | 无线网络连接记录审计工具 | https://www.nirsoft.net/utils/wifi_history_view.html |
3.4. 内存分析
工具 | 介绍 | 下载地址 |
---|---|---|
Redline | 图形化内存镜像分析工具 | https://fireeye.market/apps/211364 |
Volatility 2.6 | 经典永流传 | https://github.com/volatilityfoundation/volatility |
Volatility 3 | 同上 | https://github.com/volatilityfoundation/volatility3 |
DumpIt | 一键转储内存镜像 | https://www.secist.com/archives/2076.html |
FTK Imager | 系统镜像制作、内存镜像分析 | https://www.52pojie.cn/thread-1698481-1-1.html |
3.5. 综合分析
工具 | 介绍 | 下载地址 |
---|---|---|
火绒剑 | 安全分析综合工具 | https://www.52pojie.cn/thread-1859777-1-1.html |
OpenArk | 同上,但开源 | https://github.com/BlackINT3/OpenArk |
D-Eyes | 命令行工具,快速入侵排查 | https://github.com/m-sec-org/d-eyes |
Process Explorer | 微软出品,薄纱资源管理器的进程查看神器 | https://www.52pojie.cn/thread-1865115-1-1.html |
SoftCnKiller | 流氓软件、下崽器杀手 | https://blog.csdn.net/hfhbutn/article/details/104799162 |
Whoamifuck | 仅支持Linux,系统信息收集神器,同时支持webshell查杀 | https://github.com/enomothem/Whoamifuck |
蓝队工具箱 | 蓝队版图吧工具箱 | https://github.com/ChinaRan0/BlueTeamTools |