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

《网络安全应急响应技术实战指南》官网:https://www.qianxin.com/book/detail?book=31
《网络安全应急响应技术实战指南》PDF下载:https://lololowe.lanzoul.com/iv3CZ2lqheab

第1章 网络安全应急响应概述

1.1. 应急响应基本概念

应急响应,其英文是Incident Response或Emergency Response,通常是指一个组织为了应对各种意外事件的发生所做的准备,以及在事件发生后所采取的措施。其目的是减少突发事件造成的损失。

应急响应工作主要包括以下两方面:

  1. 未雨绸缪,在事件发生前先做好准备。例如,开展风险评估,制订安全计划,进行安全意识的培训,以发布安全通告的方法进行预警。

  2. 亡羊补牢,在事件发生后采取的响应措施,其目的在于把事件造成的损失降到最小。

1.2. 应急响应流程: PDCERF

根据应急响应的PDCERF模型可分为6个阶段来处理,分别是:

准备(Preparation): 预先设定应急响应计划和资源。
检测(Detection): 识别和确认安全事件的发生。
遏制(Containment): 阻止威胁的扩散和进一步的损害。​
根除(Eradication): 彻底清除威胁来源或恶意软件。​
恢复(Recovery): 修复系统和服务,使其恢复正常运行。
跟踪(Follow-up): 事后分析、报告和改进应急响应流程。

1737189000591.png

第2章 应急响应工程师基础技能

2.1. 系统排查

在进行受害主机排查时,首先要对主机系统进行基本排查,方便对受害主机有一个初步了解。

2.1.1. 系统基本信息

2.1.1.1. Windows

在命令行或者运行窗口中输入msinfo32命令,打开“系统信息”窗口,可以显示出本地计算机的硬件资源、组件和软件环境的信息:

1737191597904.png

2.1.1.2. Linux

在命令行中输入lscpu命令,可查看CPU相关信息:

alt text

在命令行中输入以下任意一条命令,可查看当前操作系统信息:

1
2
3
uname-a
cat /etc/os-release
cat /proc/version

alt text

在命令行中输入lsmod命令,可查看当前加载的内核模块:

alt text

2.1.2. 用户信息

在服务器被入侵后,攻击者会采用几种方式建立相关账户:

  • 直接建立一个新的账户(有时是为了混淆视听,账户名称与系统常用名称相似)
  • 激活一个系统中的默认账户,但这个账户是不经常使用的
  • 建立一个隐藏账户(在Windows系统中,一般在账户名称最后加$)

无论攻击者采用哪种方法,都会在获取账户后,使用工具或是利用相关漏洞将这个账户提升到管理员权限,然后通过这个账户任意控制计算机。

2.1.2.1. Windows

Windows的恶意账户排查主要有以下4种方法:

  1. 命令行方法

在命令行中输入net usersnet user命令,可查看系统所有账户(但看不到以$结尾的隐藏账户)​;若需查看某个账户的详细信息,可在命令行中输入net user 用户名命令:

alt text

恶意账户通常会把自己加入到Administrators组中,因此,在命令行中输入net localgroup administrators命令,可查看所有管理员权限账户(包括隐藏账户):

alt text

  1. 图形界面方法

打开计算机管理(compmgmt.msc)窗口,单击【本地用户和组】中的【用户】选项,可查看隐藏账户(名称以$结尾):

alt text

也可直接打开本地用户和组(lusrmgr.msc)窗口,查看是否有新增或可疑的账户:

alt text

注意:在Windows家庭版中,没有这两个选项。

如果新增用户没有克隆管理员账户,那么也可在登陆界面查看是否有新增账户:

alt text

推荐阅读,windows实现超级隐藏用户:https://www.cnblogs.com/sillage/p/15076730.html

  1. 注册表方法

打开注册表编辑器(regedit)窗口,选择HKEY_LOCAL_MACHINE下的SAM选项,为同名子项SAM配置权限,允许Administrators组完全控制:

alt text

接着再F5刷新,即可访问子项(Domains\Account\Users\Names)并查看用户信息:

alt text

同时,在此项下找到000001F4(对应Administrator用户),将其他以00000开头的项中的f值与Administrator的f值进行比较,若相同,则表示为克隆账户(克隆账号在net user以及“本地用户和组”还有登陆界面中均无法看到,只能在注册表或者net localgroup 组名中查看):

alt text

  1. wmic方法

wmic(Windows Management Instrumentation Command-line,Windows管理规范命令行工具)​,提供从命令行接口面管理和查询系统资源。在命令行中输入wmic useraccount命令,可以查看系统中的所有用户(包括隐藏账户)以及相关信息:

alt text

注意:从 Windows 10 版本 21H1 开始,以及从 Windows Server 21H1 半年频道版本开始,WMIC 已被弃用:https://learn.microsoft.com/zh-cn/windows/win32/wmisdk/wmic

2.1.2.2. Linux

  1. 查看系统所有用户信息

在命令行中输入cat /etc/passwd命令即可查看所有用户信息。该文件的每行格式为: 用户名:加密密码:用户ID:组ID:备注:家目录:默认登录shell​:

alt text

查询的用户信息中,最后显示/bin/zsh/bin/bash的,表示账户状态为可登录;显示/usr/sbin/nologin/bin/false的,表示账户状态为不可登录,但如果这两文件被恶意替换或修改,则账户状态仍为可登录。

  1. 分析超级权限用户

root用户的UID和GID均为0,普通用户如果如果UID为0,则相当于root用户,具有超级权限:

alt text

普通用户如果GID为0,则表示该用户属于root组,意味着该用户可以执行系统的大多数操作:

alt text

一个正常的系统中,不应该存在UID为0的普通用户,也不应该存在GID为0的普通用户。因此可以对具有以上特征的账户进行排查。

可以使用grep :0: /etc/passwd命令,查看是否存在UID或者GID为0的账户:

alt text

或者使用awk -F: '$2==0 || $3==0 {print $1}' /etc/passwd命令,也可以实现同样的效果:

alt text

  1. 查看可登录的用户

在命令行中输入grep '/bin/bash' /etc/passwd命令,可查看可登录的账户:

alt text

注意:/bin/bash可以被替换为/bin/sh/bin/fish/bin/zshshell解释器

  1. 查看用户错误的登录信息

在命令行中输入lastb命令,会自动读取位于/var/log目录下的btmp二进制文件,然后输出用户错误登录列表,包括登录用户名、错误的登录方法、IP地址、时间等:

alt text

也可以使用lastb | awk '{print $3}' | sort | uniq -c | sort -nr命令,统计登录失败的IP地址以及失败次数:

alt text

  1. 查看所有用户最后的登录信息

在命令行中输入lastlog命令,可查看系统中所有用户最后的登录信息:

alt text

  1. 查看所有成功登录信息

在命令行中输入last命令,可查看用户最近成功过登录到系统的信息:

alt text

last默认读取位于/var/log目录下的wtmp二进制日志文件(cat命令无法查看),也可以使用last -f 日志文件命令,指定读取的文件:

1
2
3
last -f /var/log/wtmp  # 等同于last,显示登录成功的用户
last -f /var/log/btmp # 等同于lastb,显示登录失败的用户
last -f /var/log/utmp # 等同于w,显示当前登录的用户

alt text

  1. 查看当前用户登录系统情况

在命令行中输入who或者wusers命令,可查看当前在线用户:

alt text

  1. 查看空口令账户

在命令行中输入awk -F: '$2=="!" || $2==""' /etc/shadow命令,可查看系统是否存在空口令账户:

alt text

2.1.3. 启动项

启动项是病毒后门等实现持久化驻留的一种常用方法,在应急响应中也是排查的必要项目。

2.1.3.1. Windows

  1. 任务管理器

在任务管理器(taskmgr)中,点击“启动应用”选项卡,可以管理部分启动项:

alt text

  1. shell:startup文件夹

shell:startup文件夹中的程序会在用户登录时自动运行:

alt text

  1. 注册表
1
2
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

以上两个注册表项中定义的程序会在系统启动时自动运行。

实际上,这两个注册表项中的自启动项都可以被任务管理器接管。例如,我的任务管理器中的启动项中,有10个已启用的项,而这10个项目中在这两个注册表中都能找到:

alt text

alt text

推荐阅读,注册表自启动解释:https://www.cnblogs.com/zhaotianff/p/17836839.html

2.1.3.2. Linux

以下目录中的程序会在系统启动时自动运行:

1
2
3
ls -la /etc/rc[0-6].d/  # 对应7个运行级别的启动项
ls -la /etc/init.d/
ls -la /etc/init.d/

以下文件中的命令会在系统启动或者用户登录时自动运行:

1
2
3
4
5
6
7
cat /etc/rc.local
cat /etc/rc.d/rc.local
cat ~/.bashrc
cat /etc/bash.bashrc
cat ~/.zshrc
cat /etc/zsh/zshrc
cat ~/.config/fish/config.fish

推荐阅读,rc.d开机自启程序介绍:https://www.cnblogs.com/wucongzhou/p/12588682.html

2.1.4. 任务计划

任务计划比启动项更灵活,可以设置在特定时间执行特定任务,因此任务计划也是病毒后门实现持久化驻留的一种常用方法,在应急响应中也是排查的必要项目。

2.1.4.1. Windows

  1. 任务计划程序(taskschd.msc)

alt text

  1. powershell命令
1
powershell Get-ScheduledTask

alt text

  1. cmd命令
1
schtasks

比前者更详细:

alt text

2.1.4.2. Linux

  1. crontab
1
2
3
4
crontab -l  # 查看当前用户的定时任务
crontab -l -u 用户名 # 查指定用户的定时任务
crontab -e # 编辑当前用户的定时任务
crontab -r # 删除当前用户的定时任务

alt text

  1. 任务计划文件

任务计划文件通常是以cron开头的,因此可以使用以下命令查看:

1
ls -l /etc/cron*

2.1.5. 防火墙

2.1.5.1. Windows

firewall.cpl打开防火墙设置,随后选择高级设置,查看入站规则和出站规则,重点检查出站规则:

alt text

也可以使用netsh命令管理防火墙:

1
netsh firewall show state

alt text

netsh命令更多用法:https://zahui.fan/posts/f85b3ad3/

2.2. 进程排查

2.2.1. Windows

Windows的进程排查,主要是找到恶意进程的PID、程序路径,有时还需要找到PPID(PID的父进程)及程序加载的DLL。

  1. 任务管理器(taskmgr)

为了查看更多信息,建议添加“PID”、“命令行”等列:

alt text

  1. tasklist命令

在命令行中输入tasklist命令,可查看进程的名称、PID、会话名等信息:

alt text

tasklist命令添加/svc参数,还可以显示每个进程和服务的对应情况:

alt text

对于某些加载DLL的恶意进程,可以通过输入tasklist /m命令查询所有进程加载的DLL:

alt text

/m参数后面可以跟DLL名称,例如tasklist /m NetworkExplorer.dll,可以查看哪些进程加载了NetworkExplorer.dll:

alt text

推荐阅读,tasklist命令手册:https://www.linux-man.cn/windows/command/tasklist/

  1. powershell命令
1
Get-WmiObject Win32_Process | select Name,ProcessId,ParentProcessId,Path

alt text

  1. vmic命令
1
wmic process get name,parentprocessid,processid

alt text

注意:从 Windows 10 版本 21H1 开始,以及从 Windows Server 21H1 半年频道版本开始,WMIC 已被弃用:https://learn.microsoft.com/zh-cn/windows/win32/wmisdk/wmic

  1. netstat命令

在命令行中输入netstat命令,可显示网络连接的信息:

alt text

此命令输出的常见网络状态如下:

  • LISTENING:侦听状态
  • ESTABLISHED:建立连接
  • CLOSE_WAIT:对方主动关闭连接或网络异常导致连接中断

在排查过程中,一般会使用netstat -ano | findstr ESTABLISHED命令查看建立了大量连接的PID:

alt text

通过netstat命令定位出PID后,再通过tasklist | findstr PID命令进行程序定位:

alt text

在拥有管理员权限的情况下,还可以使用netstat /anob命令查看连接对应的进程名称:

alt text

推荐阅读,netstat命令详解:https://zhuanlan.zhihu.com/p/547068671

2.2.2. Linux

使用以下任意一条命令可以查看可疑端口、可疑IP以及对应的进程:

1
2
3
sudo netstat -tunlp
sudo ss -tunlp
lsof -i -P -n | grep LISTEN

alt text

注意:如果没有root权限,则-p选项将无法输出进程信息。

获取到PID后,可以使用lsof -p PID命令查看进程打开的文件:

alt text

对于恶意进程,可以使用kill -9 PID命令强制结束进程。然后使用rm -rf filename命令可删除恶意文件​。如果root用户都无法删除相关文件,那么很可能是因为该文件被加上了i属性(immutable)。使用lsattr filename命令可以查看文件属性,然后使用chattr -i filename命令移除i属性,进而删除文件。也有的进程因为存在守护进程而无法删除,我们可以先把进程挂起,查杀守护进程后,再返回将进程删除。

alt text

有些攻击者会将进程隐藏,以躲避排查,因此查看隐藏进程同样重要。按照顺序执行以下命令:

1
2
3
ps -ef | awk '{print $2}' | sort -n | uniq > 1 
ls /proc | sort -n | uniq > 2
diff 1 2

这个方法背后的逻辑是:如果某个进程被隐藏,它可能不会出现在 ps 命令的输出中(文件 1),但仍然会在 /proc 文件系统中有一个对应目录(文件 2)。通过比较这两个文件的差异,可能会发现那些只在 /proc 中存在的进程ID,这可能是隐藏进程。

对于挖矿进程的排查,可使用top或者htop命令查看相关资源占用率较高的进程,之后进行定位:

alt text

2.3. 服务排查

服务可以理解为运行在后台的进程。这些服务可以在计算机启动时自动启动,也可以暂停和重新启动,而且不显示任何用户界面。在应急响应排查过程中,服务作为一种运行在后台的进程,是恶意软件常用的驻留方法。

2.3.1. Windows

打开运行窗口,输入services.msc命令,可打开“服务”窗口,查看所有的服务项,包括服务的名称、描述、状态等:

alt text

或者使用sc query命令列举出所有的服务:

alt text

sc 命令的常见用法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
:: 查询服务运行状态
sc query mysql
:: 查询服务详细信息
sc qc mysql
:: 停止服务
sc stop mysql
:: 启动服务
sc start mysql
:: 设置服务自启动
sc config mysql start= auto
:: 设置服务手动启动
sc config mysql start= demand
:: 设置服务禁用
sc config mysql start= disabled

alt text

2.3.2. Linux

可使用以下命令查看服务状态:

1
2
systemctl list-units --type=service
service --status-all |

alt text

推荐阅读,systemd教程:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

2.4. 文件痕迹排查

一般,可以从以下几方面对文件痕迹进行排查:

  • 常用的敏感路径排查;
  • 事发时间点前后的文件排查;
  • 排查带有特征的恶意软件,特征包括代码关键字或关键函数、文件权限等。

2.4.1. Windows

  1. 敏感目录
  • 临时目录(环境变量为%tmp%%temp%)。恶意程序一般会释放文件到临时目录,因此可以查看临时目录下是否有可疑文件:

alt text

  • 下载记录。对于一些人工入侵的应急响应事件,有时入侵者会下载一些后续攻击的工具。Windows系统要重点排查浏览器的历史记录、下载文件和cookie信息,查看是否有相关的恶意痕迹:

alt text

  • Recent文件夹(环境变量为%userprofile%\Recent)。Recent文件夹主要存储了最近运行文件的快捷方式,可在此处排查可疑文件:

alt text

推荐阅读,关闭Recent文件夹:https://blog.csdn.net/weixin_42220130/article/details/110652928

预读文件(Prefetch文件)查看器:https://www.nirsoft.net/utils/win_prefetch_view.html

  1. 时间点排查

可以排查事件发生前、后的文件变动情况,从而缩小排查的范围。

  • 新增文件排查。使用以下命令,可以在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

alt text

上面这种方法只能指定日期,不能指定时间,如果要指定时间的话,可以使用powershell命令:

1
Get-ChildItem -Path "e:\" -Recurse -Filter *.bat | Where-Object { $_.CreationTime -gt [DateTime]"2025-01-19 20:00:00" } | Select-Object FullName, CreationTime

alt text

除了用命令查找新增文件,还可以直接在资源管理器中使用搜索功能,筛选出指定日期之后新增的文件:

alt text

重点关注那些修改时间比创建时间早的文件,因为它们很可能是被故意修改的。

  1. webshell

在应急响应过程中,网站是一个关键的入侵点,对Webshell的查找可以通过上述方法进行筛选后再进一步使用工具排查,比如D盾、河马等:

alt text

alt text

  1. 可以分析开机、关机记录、浏览过的文件夹,运行程序等使用痕迹的小工具:https://www.52pojie.cn/thread-1125531-1-1.html

alt text

2.4.2. Linux

  1. 敏感目录
1
2
3
4
5
ls -lath /tmp
ls -lath /usr/bin
ls -lath /usr/sbin
ls -lath /etc/ssh
ls -lath ~/.ssh
  1. 时间点排查

使用命令find / -ctime 0 -name "*.sh​,可查找root目录下一天内新增的sh文件:

alt text

使用命令ls -alt,可查看指定目录下所有文件的修改时间,并按时间排序(从新到旧):

alt text

使用stat命令可以详细查看文件的创建时间、修改时间、访问时间,若修改时间距离应急响应事件日期接近,有线性关联,说明可能被篡改:

alt text

  1. 特殊文件
  • 特殊权限文件查找。使用命令find /var/www/html -perm 777,可在web目录下查找权限为777的文件:

alt text

  • 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'

alt text

除了手工初筛的方法,还可以使用findWebshellScan_Webshell.py河马等工具进行辅助排查。

  • 系统命令排查。ls和ps等命令很可能被攻击者恶意替换,所以可以使用ls -alt /bin命令,查看命令目录中相关系统命令的修改时间。也可以使用ls -alh /bin命令查看相关文件的大小,若明显偏大,则文件很可能被替换。
  1. Linux后门检测。可以使用第三方查杀工具,如chkrootkitrkhunter进行查杀。使用chkrootkit时,若出现infected,则说明检测出系统后门:chkrootkit | grep INFECTED:

alt text

使用rkhunter检测结果如下:

alt text

  1. SUID程序排查。首先介绍下什么是SUID程序,举个具体的例子,passwd 命令就是一个典型的SUID程序。正常情况下,只有系统管理员(root)能修改用户的密码信息。但如果想自己改自己的密码,系统会允许临时获得root的权限去修改密码文件(/etc/passwd)。所以,SUID的作用就是让普通用户在执行特定程序时,临时拥有更高的权限来完成一些他们平常做不到的任务,但这也增加了安全风险。可以使用find / -type f -perm -04000 -ls -uid 0 2>/dev/null命令查找系统中所有设置了SUID权限且属于root用户(uid 0)的文件:

alt text

2.5. 日志分析

2.5.1. Windows

可以在“运行”窗口中输入eventvwr命令,打开事件查看器,查看相关的日志。对于应急响应工程师来说有三类日志需要熟练掌握:

alt text

  1. 系统日志,文件位置为:%SystemRoot%\System32\Winevt\Logs\System.evtx。主要记录了系统中各种驱动、组件、应用软件在运行中出现的重大问题。这些重大问题主要包括重要数据的丢失、错误,以及系统产生的崩溃行为等。

  2. 安全性日志,文件位置为:%SystemRoot%\System32\Winevt\Logs\Security.evtx。主要记录了各种登录与登出系统的成功或不成功的信息、对系统中各种重要资源进行的创建、删除、更改等操作。

  3. 应用程序日志,文件位置为:%SystemRoot%\System32\Winevt\Logs\Application.evtx。主要记录各种应用程序所产生的各类事件。例如,系统中SQL Server数据库程序在受到暴力破解攻击时,日志中会有相关记录。

在应急响应中还经常使用PowerShell日志:

alt text

Windows系统中的每个事件都有其相应的事件ID,下表是应急响应中常用的事件ID,其中旧版本指Windows 2000 专业版/Windows XP/Windows Server 2003,新版本指Windows Vista/Windows 7/Windows 8/Windows 10/Windows Server 2008等:

alt text

第三方日志分析工具:

alt text

alt text

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​、​sortawk等命令。常用查询日志命令及功能如下:

命令 功能
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 命令查询之前使用的SQL
MySQL:
- 使用 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. 内存的获取

  1. 基于内核模式程序的内存获取。

需要借助相关的工具来完成,如FTK Imager: https://www.52pojie.cn/thread-1698481-1-1.html ,Dumpit:https://www.secist.com/archives/2076.html , 后者可一键转储内存镜像:

alt text

  1. 基于系统崩溃转储的内存获取。

打开系统高级设置(systempropertiesadvanced.exe),进入“启动和故障恢复”,将“写入调试信息”改成核心内存转储,下面的转储文件就是内存镜像:

alt text

官方介绍:https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/performance/generate-a-kernel-or-complete-crash-dump

  1. 基于虚拟化快照的内存获取。

这种获取方法是通过VMware Workstation、ESXI等虚拟化软件实现的。VMware Workstation在生成快照时会自动生成虚拟内存文件(vmem格式):

alt text

2.6.2. 内存的分析

对于内存的分析,一般需要借助相应的工具来进行,以下简单介绍几个常用工具。

  1. FireEye Redline: https://fireeye.market/apps/211364

支持图形界面,也可导出报表:

alt text

推荐阅读,Redline使用教程: https://mp.weixin.qq.com/s?__biz=Mzg3MjE1NjQ0NA==&mid=2247495446&idx=1&sn=4579752ec93fd7e2e092ba622ed53e59

  1. 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参数获取镜像信息:

alt text

获取到镜像配置文件后,后续命令必须用--profile参数指定镜像配置文件才有效,例如使用netscan命令列出内存镜像中的网络连接的情况:

alt text

使用psxview命令,可查看内存镜像中带有隐藏进程的所有进程列表:

alt text

底下4个进程只在psscan方法中检测到,其他方法均未检测到,说明这些进程可能是隐藏的。

使用malfind命令,可查找隐藏或注入的代码、DLL:

alt text

使用cmdscan命令,可提取执行的相关命令记录:

alt text

使用procdump -p PID --dump-dir .命令,可提取进程文件到当前目录:

alt text

可以分析内存中提取出的文件,从而判别文件是否有恶意行为。最简单的方法是把提取出的文件上传到云沙箱进行扫描:https://s.threatbook.com/

alt text

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用一个“痛苦金字塔”来解释威胁情报的类型和价值。这个金字塔有几层:

alt text

最底层是文件的哈希值、IP地址和域名,这些信息很常见,相对容易获取,但价值也相对低。
往上走,会看到网络特征或主机特征,稍微高级一点。
再往上是攻击工具,价值更高。
金字塔顶端是TTPs,即战术、技术和程序,这些信息最难获取,但也最有价值,因为它能揭示攻击者的具体手段和策略。

在威胁情报中,IOC(Indicator of Compromise,入侵指标)是一个重要的概念。它指的是那些在检测或取证过程中被认为是可信的威胁迹象或特征。简单来说,IOC就是一些信号或证据,表明你的系统可能已经被入侵或受到了攻击。在应急响应中,通过威胁情报平台查询到的信息通常就是这些IOC,可以帮助你识别和确认安全事件。

例如银狐木马相关的IOC:https://x.threatbook.com/v5/article?threatInfoID=100091

alt text

国内威胁情报平台:

名称 地址
微步在线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