2024第一届Solar杯应急响应挑战赛-复现
日志流量
日志流量-1
第一届solar应急响应比赛
链接: https://pan.baidu.com/s/1scRYadkZ1g4eRxo2CKtOgw?pwd=74qd 提取码: 74qd所有附件解压密码均为 KzXGabLkDjs&j@3a&fAayNmD
题目文件:tomcat-wireshark.zip/web
新手运维小王的Geoserver遭到了攻击:
黑客疑似删除了webshell后门,小王找到了可能是攻击痕迹的文件但不一定是正确的,请帮他排查一下。
flag格式 flag{xxxx}
打开发现后门文件b.jsp,但是文件经过加密
jsp,tomcat的工作原理是当浏览器访问某个jsp页面时,tomcat会在work目录里把这个jsp页面转换成.java文件,比如将index.jsp转换为index_jsp.java文件,而后编译为index_jsp.class文件,最后tomcat容器通过ClassLoader类把这个index_jsp.class类装载入内存,进行响应客户端的工作。
tomcat会定时稍描容器内的jsp文件,读取每个文件的属性,当发现某个jsp文件发生改变时(文件的最后修改时间与上次稍描时不相同时),tomcat会重新转换、编译这个jsp文件。但是tomcat的稍描是定时的不是实时的,这也正是为什么jsp文件修改后需要几分钟的时间来等修改过的jsp生效。当然为了即刻生效,很多老前辈都会建议在修改jsp页面后立即清除work目录里的文件。
所以可以去work目录下找源码
flag{A7b4_X9zK_2v8N_wL5q4}
日志流量-2
题目文件:tomcat-wireshark.zip/web
新手运维小王的Geoserver遭到了攻击:
小王拿到了当时被入侵时的流量,其中一个IP有访问webshell的流量,已提取部分放在了两个pcapng中了。请帮他解密该流量。
flag格式 flag{xxxx}
目录下有两个流量包
追踪http流,数据经过加密根据特征可以判断为哥斯拉jsp加密(cookie后面带“;”)
根据源码可知key=a2550eeab0724a69
哥斯拉加密:AES-ECB + Gunzip
追踪http流
flag{sA4hP_89dFh_x09tY_lL4SI4}
日志流量-3
题目文件:tomcat-wireshark.zip/web
新手运维小王的Geoserver遭到了攻击:
小王拿到了当时被入侵时的流量,黑客疑似通过webshell上传了文件,请看看里面是什么。
flag格式 flag{xxxx}
这段解密完发现是一个pdf文件
flag{dD7g_jk90_jnVm_aPkcs}
逆向破解-1
数据库
数据库-1
题目附件:mssql、mssql题-备份数据库
请找到攻击者创建隐藏账户的时间
flag格式 如 flag{2024/01/01 00:00:00}
虚拟机导入后不知道密码
说明:由于黑客在攻击时可能会修改用户口令、锁定登陆、破坏系统导致无法进入操作系统,因此本题不提供密码
补一个知识点
使用ISO可启动镜像进入PE系统
https://blog.csdn.net/weixin_64931825/article/details/147243143
deepseek解释
1. PE系统与虚拟机系统的独立性
PE(Preinstallation Environment)是一个独立的最小化Windows系统,运行在内存中。它不依赖、也不需要访问虚拟机内置操作系统的用户账户和密码体系。
2. 绕过了本地安全验证
Windows密码验证由以下几个组件完成:
- SAM数据库(存储密码哈希)
- LSASS进程(安全验证核心)
- Winlogon服务(登录界面)
当PE启动时:
- 它运行自己的内核、自己的LSASS
- 它不加载虚拟机系统的SAM数据库
- 直接进入PE的桌面环境,无需密码验证
3. PE的登录机制完全不同
PE通常配置为:
- 自动登录内置的SYSTEM账户(最高权限)
- 或者使用空密码的默认账户
- 启动时不显示登录界面
4. 访问虚拟机磁盘的原理
PE启动后,虽然“不知道密码”,但可以通过文件系统直接访问虚拟机硬盘:
text
1 PE启动 → 挂载虚拟机系统盘 → 直接读写文件(包括系统文件)这时可以:
- 修改或删除密码文件(SAM)
- 启用内置管理员账户
- 添加新用户账户
- 使用密码重置工具
5. 常见密码重置方法
在PE中常用的技术:
- 修改SAM文件:替换或清空密码哈希
- 使用实用工具:如NTPWEdit直接编辑密码
- 启用隐藏的管理员账户:通过注册表修改
- 替换系统文件:如替换粘滞键程序(sethc.exe)为cmd.exe
安全意义
这也说明了为什么物理安全对计算机安全如此重要:
- 任何人能接触物理设备 → 可引导到PE/U盘系统 → 可重置/绕过密码
- 这就是为什么全盘加密(BitLocker等)很重要的原因
ubuntu系统
通过GRUB引导菜单修改(最常用)
步骤:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 >1. 重启Ubuntu系统
2. 在GRUB菜单出现时(通常是启动时按Shift或Esc)
3. 选择要启动的内核,按'e'键进入编辑模式
4. 找到以"linux"开头的行,在末尾添加:
- 方法A(重置root密码):
rw init=/bin/bash
- 方法B(单用户模式):
single 或 systemd.unit=rescue.target
5. 按Ctrl+X或F10启动
6. 系统会直接进入root shell
7. 重置密码:
passwd username # 重置指定用户
passwd root # 重置root密码
8. 重启系统:
exec /sbin/init
设置iso镜像
选择电源–>打开电源时进入固件
更改启动顺序
启动后成功进入桌面
找到日志文件
找到日志ID 4720
flag{2024/12/16 15:24:21}
数据库-2
题目附件:mssql、mssql题-备份数据库
请找到恶意文件的名称
flag格式 如 flag{.}
在d盘发现勒索信
everything搜索找到
官方wp中是下载了一个360杀毒扫描出来的。。。
flag{xmrig.exe}
数据库-3
题目附件:mssql、mssql题-备份数据库
请找到恶意文件的外联地址
flag格式 如 flag{1.1.1.1}
在配置文件中找到url
去查询dns
但是复现的时候ip已经发生改变
flag{203.107.45.167}
数据库-4
题目附件:mssql、mssql题-备份数据库
请修复数据库
flag格式 如 flag{xxxxx}
据库默认的存储路径(例如 SQL Server 的
C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\DATA)
使用D-RecoverySQLServer根据备份数据库去恢复加密数据库
得到flag
flag{E4r5t5y6Mhgur89g}
数据库-5
题目附件:mssql、mssql题-备份数据库
请提交powershell命令中恶意文件的MD5
flag格式 如 flag{xxxxx}
找到Windows PowerShell.evtx
发现base64字段
解码后为.gz文件
解压后有一个test.txt文件
1 | function tWk { |
该段base64即为恶意shellcode
计算文件hash
1 | // windows |
flag{d72000ee7388d7d58960db277a91cc40}
内存取证
内存取证-1
题目文件:SERVER-2008-20241220-162057
请找到rdp连接的跳板地址
flag格式 flag{1.1.1.1}第一届solar应急响应比赛
链接: https://pan.baidu.com/s/1scRYadkZ1g4eRxo2CKtOgw?pwd=74qd 提取码: 74qd所有附件解压密码均为 KzXGabLkDjs&j@3a&fAayNmD
网络扫描
flag{192.168.60.220}
内存取证-2
题目文件:SERVER-2008-20241220-162057
请找到攻击者下载黑客工具的IP地址
flag格式 flag{1.1.1.1}
flag{155.94.204.67}
内存取证-3
题目文件:SERVER-2008-20241220-162057
攻击者获取的“FusionManager节点操作系统帐户(业务帐户)”的密码是什么
flag格式 flag{xxxx}
命令扫描
发现pass.txt
导出pass.txt文件
1 | PS D:\Tools\forensic\Lovelymem_v0.91\Lovelymem_v0.91\Tools\volatility3> ..\python3\python.exe .\vol.py -f "I:/ctf/solar/【题目】小题+综合题/solar/SERVER-2008-20241220-162057/SERVER-2008-20241220-162057.raw" -o "I:\ctf\solar\【题目】小题+综合题\solar\SERVER-2008-20241220-162057" windows.dumpfiles --physaddr 0x7e4cedd0 |
找到密码
内存取证-4
题目文件:SERVER-2008-20241220-162057
请找到攻击者创建的用户
flag格式 flag{xxxx}
flag{ASP.NET}
内存取证-5
题目文件:SERVER-2008-20241220-162057
请找到攻击者利用跳板rdp登录的时间
flag格式 flag{2024/01/01 00:00:00}
扫描文件系统找到Security.evtc的物理地址
导出文件
1 | PS D:\Tools\forensic\Lovelymem_v0.91\Lovelymem_v0.91\Tools\volatility3> ..\python3\python.exe .\vol.py -f "I:/ctf/solar/【题目】小题+综合题/solar/SERVER-2008-20241220-162057/SERVER-2008-20241220-162057.raw" -o "I:\ctf\solar\【题目】小题+综合题\solar\SERVER-2008-20241220-162057" windows.dumpfiles --physaddr 0x7e744ba0 |
找到跳板rbp对应的4624事件
要在时间最前面补个0
flag{2024/12/21 00:15:34}
内存取证-6
题目文件:SERVER-2008-20241220-162057
请找到攻击者创建的用户的密码哈希值
flag格式 flag{XXXX}
flag{5ffe97489cbec1e08d0c6339ec39416d}
vol3用法:
python3 vol.py -f [image] -o [path] [plugin] –physaddr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 常用插件:
layerwriter:列出内存镜像platform信息
linux.bash:从内存中恢复bash命令历史记录
linux.check_afinfo:验证网络协议的操作功能指针
linux.check_syscall:检查系统调用表中的挂钩
linux.elfs:列出所有进程的所有内存映射ELF文件
linux.lsmod:列出加载的内核模块
linux.lsof:列出所有进程的所有内存映射
linux.malfind:列出可能包含注入代码的进程内存范围
linux.proc:列出所有进程的所有内存映射
linux.pslist:列出linux内存映像中存在的进程
linux.pstree:列出进程树
mac.bash:从内存中恢复bash命令历史记录
mac.check_syscall:检查系统调用表中的挂钩
mac.check_sysctl:检查sysctl处理程序的挂钩
mac.check_trap_table:检查trap表中的挂钩
mac.ifconfig:列出网卡信息
mac.lsmod:列出加载的内核模块
mac.lsof:列出所有进程的所有内存映射
mac.malfind:列出可能包含注入代码的进程内存范围
mac.netstat:列出所有进程的所有网络连接
mac.psaux:恢复程序命令行参数
mac.pslist:列出linux内存映像中存在的进程
mac.pstree:列出进程树
mac.tasks:列出Mac内存映像中存在的进程
windows.info:显示正在分析的内存样本的OS和内核详细信息
windows.callbacks:列出内核回调和通知例程
windows.cmdline:列出进程命令行参数
windows.dlldump:将进程内存范围DLL转储
windows.dlllist:列出Windows内存映像中已加载的dll模块
windows.driverirp:在Windows内存映像中列出驱动程序的IRP
windows.driverscan:扫描Windows内存映像中存在的驱动程序
windows.filescan:扫描Windows内存映像中存在的文件对象
windows.handles:列出进程打开的句柄
windows.malfind:列出可能包含注入代码的进程内存范围
windows.moddump:转储内核模块
windows.modscan:扫描Windows内存映像中存在的模块
windows.mutantscan:扫描Windows内存映像中存在的互斥锁
windows.pslist:列出Windows内存映像中存在的进程
windows.psscan:扫描Windows内存映像中存在的进程
windows.pstree:列出进程树
windows.procdump:转储处理可执行映像
windows.registry.certificates:列出注册表中存储的证书
windows.registry.hivelist:列出内存映像中存在的注册表配置单元
windows.registry.hivescan:扫描Windows内存映像中存在的注册表配置单元
windows.registry.printkey:在配置单元或特定键值下列出注册表项
windows.registry.userassist:打印用户助手注册表项和信息
windows.ssdt:列出系统调用表
windows.strings:读取字符串命令的输出,并指示每个字符串属于哪个进程
windows.svcscan:扫描Windows服务
windows.symlinkscan:扫描Windows内存映像中存在的链接vol2用法
https://mp.weixin.qq.com/s/tK3iyB1Ug-c7KstFcJLgkQ
python2 vol.py -f [image] –imageinfo
**命令格式:**vol.py -f [image] –profile=[profile] [plugin]
volatility.exe -f 1.dmp –profile=Win7SP1x64 pslist
1
2
3
4
5 // 查找文件并导出
volatility.exe -f 1.vmem --profile=Win7SP1x64 filescan | grep "vds_ps.exe"
volatility.exe -f WIN-T89OD3C9LOC-20231229-081734.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000007e4556a0 -D E:/tools/volatility_2.6_win64_standalone
// 进程转储为文件
volatility.exe -f G:\取证赛题\OtterCTF.vmem --profile=Win7SP1x64 procdump -p 3720 -D E:\tools\volatility_2.6_win64_standalone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113 amcache 打印 AmCache 信息
apihooks 检测进程和内核内存中的 API 挂钩
atoms 打印会话和窗口站原子表
atomscan 原子表的池扫描器
auditpol 从 HKLM\SECURITY\Policy\PolAdtEv 打印出审计策略
bigpools 使用 BigPagePoolScanner 转储大页面池
bioskbd 从实模式内存读取键盘缓冲区
cachedump 从内存转储缓存的域哈希
callbacks 打印系统范围的通知例程
clipboard 提取 Windows 剪贴板的内容
cmdline 显示进程命令行参数
cmdscan 通过扫描 _COMMAND_HISTORY 提取命令历史记录
connections 打印打开的连接列表 [仅限 Windows XP 和 2003]
connscan tcp 连接的池扫描器
consoles 通过扫描 _CONSOLE_INFORMATION 提取命令历史记录
crashinfo 转储崩溃转储信息
deskscan tagDESKTOP(桌面)的池扫描器
devicetree 显示设备树
dlldump 从进程地址空间转储 DLL
dlllist 打印每个进程的已加载 dll 列表
driverirp 驱动程序 IRP 挂钩检测
drivermodule 将驱动程序对象关联到内核模块
driverscan 驱动程序对象的池扫描器
dumpcerts 转储 RSA 私钥和公钥 SSL 密钥
dumpfiles 提取内存映射和缓存文件
dumpregistry 将注册表文件转储到磁盘
editbox 显示有关编辑控件的信息。(实验性列表框。)
envars 显示进程环境变量
eventhooks 打印有关 Windows 事件挂钩的详细信息
evtlogs 提取 Windows 事件日志(仅限 XP/2003)
filescan 文件对象的池扫描器
gahti 转储 USER 句柄类型信息
gditimers 打印已安装的 GDI 计时器和回调
gdt 显示全局描述符表
getservicesids 获取注册表中的服务名称并返回计算的 SID
getsids 打印拥有每个进程的 SID
handles 打印每个进程的打开句柄列表
hashdump 从内存中转储密码哈希(LM/NTLM)
hibinfo 转储休眠文件信息
hivedump 打印出配置单元
hivelist 打印注册表配置单元列表。
hivescan 注册表配置单元池扫描器
hpakextract 从 HPAK 文件中提取物理内存
hpakinfo HPAK 文件信息
idt 显示中断描述符表
iehistory 重建 Internet Explorer 缓存/历史记录
imagecopy 将物理地址空间复制为原始 DD 映像
imageinfo 识别映像信息
impscan 扫描对导入函数的调用
joblinks 打印进程作业链接信息
kdbgscan 搜索并转储潜在 KDBG 值
kpcrscan 搜索并转储潜在 KPCR 值
ldrmodules 检测未链接的 DLL
lsadump 从注册表转储(解密)LSA 机密
machoinfo 转储 Mach-O 文件格式信息
malfind 查找隐藏和注入的代码
mbrparser 扫描并解析潜在主引导记录 (MBR)
memdump 转储进程的可寻址内存
memmap 打印内存映射
messagehooks 列出桌面和线程窗口消息挂钩
mftparser 扫描并解析潜在 MFT 条目
moddump 将内核驱动程序转储到可执行文件示例
modscan 内核模块池扫描器
modules 打印已加载模块的列表
multiscan 一次扫描各种对象
mutantscan 互斥对象池扫描器
notepad 列出当前显示的记事本文本
objtypescan 扫描 Windows 对象类型对象
patcher 根据页面扫描修补内存
poolpeek 可配置池扫描器插件
printkey 打印注册表项及其子项和值
privs 显示进程权限
procdump 将进程转储到可执行文件示例
pslist 按照 EPROCESS 列表打印所有正在运行的进程
psscan 进程对象的池扫描器
pstree 将进程列表打印为树
psxview 使用各种进程列表查找隐藏进程
qemuinfo 转储 Qemu 信息
raw2dmp 将物理内存示例转换为 windbg 崩溃转储
screenshot 根据 GDI 窗口保存伪屏幕截图
servicediff 列出 Windows 服务(ala Plugx)
sessions 列出 _MM_SESSION_SPACE(用户登录会话)的详细信息
shellbags 打印 ShellBags 信息
shimcache 解析应用程序兼容性 Shim Cache 注册表项
shutdowntime 从注册表打印机器的 ShutdownTime
sockets 打印打开套接字的列表
sockscan tcp 套接字对象的池扫描器
ssdt 显示 SSDT 条目
strings 将物理偏移量与虚拟地址匹配(可能需要一段时间,非常冗长)
svcscan 扫描 Windows 服务
symlinkscan 符号链接对象的池扫描器
thrdscan 线程的池扫描器对象
threads 调查 _ETHREAD 和 _KTHREADs
timeliner 根据内存中的各种工件创建时间线
timers 打印内核计时器和相关模块 DPC
truecryptmaster Recover 恢复 TrueCrypt 7.1a 主密钥
truecryptpassphrase TrueCrypt 缓存密码查找器
truecryptsummary TrueCrypt 摘要
unloadedmodules 打印未加载模块列表
userassist 打印 userassist 注册表项和信息
userhandles 转储 USER 句柄表
vaddump 将 vad 部分转储到文件
vadinfo 转储 VAD 信息
vadtree 遍历 VAD 树并以树格式显示
vadwalk 遍历 VAD 树
vboxinfo 转储虚拟盒信息
verinfo 从 PE 映像打印出版本信息
vmwareinfo 转储 VMware VMSS/VMSN 信息
volshell 内存映像中的 Shell
windows 打印桌面窗口(详细信息)
wintree 打印 Z 顺序桌面窗口树
wndscan 窗口站的池扫描仪
yarascan 使用 Yara 签名扫描进程或内核内存











































