Forensics
本系列题目来自BeginCTF2024
[Forensics-1] cmd
快使用volatility看一看cmd的历史记录吧
Volatility
在用 volatility 分析之前,需要先判断当前镜像信息,分析出操作系统
volatility.exe -f 1.raw imageinfo
得到下列信息,一般来说是选用第一个(Win7SP1x64)
INFO : volatility.debug : Determining profile based on KDBG search...
Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418
本题需要查找 cmd历史 ,使用 cmdscan 命令
volatility.exe -f 1.raw --profile=Win7SP1x64 cmdscan
得到Flag
flag{Cmd_1in3_109_i5_imp0rt@nt}
Lovelymem
执行 Volatility2基本功能 中的 命令扫描 功能查看cmd历史记录
执行后在 output_vol2_cmdscan.csv 中查看
得到Flag
AXIOM
在 内存 的 命令历史记录 中进行查看
[Forensics-2] iehistory
浏览器历史记录里藏着什么秘密呢
Volatility
本题需要查找浏览器历史记录,使用 iehistory 命令
volatility.exe -f 1.raw --profile=Win7SP1x64 iehistory
我使用的版本是 Volatility 2.6 ,第一次做的时候说是会出现一些bug导致显示不全,原因未知
Lovelymem
使用 Volatility2用户活动 中的 IE历史记录 功能查找浏览器历史记录
在 output_vol2_iehistory.text 中进行查看,得到的内容与手动是一样的,所以并不是操作问题
AXIOM
打开使用痕迹后,在 WEB相关 的 历史记录 中进行查看
得到Flag
flag{Y0v_c@n_g3t_th3_i3hi5t0ry}
非预期 strings
利用明文存储特性,可以通过strings对flag直接进行搜索
strings 1.raw | grep "flag"
同样也可以得到Flag
[Forensics-3] Computer Name
想要知道WORKGROUP的名字捏
Volatility
本题需要查询注册表,使用 hivelist 命令
Volatility -f 1.raw --profile=Win7SP1x64 hivelist
剩下的操作比较繁琐,主要是一步步寻找键名
volatility -f 1.raw --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey
volatility -f 1.raw --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -k "ControlSet001"
volatility -f 1.raw --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control"
volatility -f 1.raw --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName"
volatility -f 1.raw --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
得到flag
flag{VVHATI5Y0VRNAM3}
Lovelymem
没有找到明确的选项,但是在 Volatility2扩展功能 中的 Mimikatz 功能中可以看到 WORKGROUP 的名字
同时下一问的Flag也能通过此功能得到
AXIOM
打开使用痕迹后,在 精炼信息 中的 标识符-人员 中进行查看
[Forensics-4] Password
你能用Mimikatz爆破出我电脑的登录口令吗?
Lovelymem
同 Forensics-3
PasswareKitForensic
将 raw 文件放到内存分析板块
勾选需要提取的密码类型
也能够解出密码
flag{Mimikatz_0r_j0hn}
AXIOM
一般是通过用户的Hash值到cmd5进行查询
[Forensics-5] 机密文件
你能获取我电脑中的机密文件吗 😉
查看 精炼信息 中的 已本地访问的文件和文件夹, 可以发现几个可疑文件以及其路径
根据路径将文件dump下来,在AXIOM中直接dump会出做,这里用下Lovelymem的文件
先使用 Volatility2基本功能 中的 文件扫描 功能,在文件列表中进行搜索,双击搜索结果即可跳转到相应行,右击offset将文件进行导出
导出的文件后缀为dat,需要自己更改下后缀
更改后打开,得到flag
flag{Y0v_c@n_d0vvn_th3_fi13}!!!!!!!!
[Forensics-6] Forensics X Reverse
使用 Volatility2基本功能 中的 命令行 功能,发现可疑进程
在 PID 处右键 — 进程转储 — 进程转储为可执行程序,导出exe
下面由 W3nL0u 师傅进行Reverse部分(感谢学姐喵~)
扔DIE,无壳,32位
IDA打开,shift+F12字符串中看到“获取命令行成功”,点击,将没成功识别的字符串按“a“恢复
按”x”到引用位置,根据题目内容,N修改一下参数名称
这里“环境变量FLAG_KEY”应该是之前取证获得的环境变量里的值,可以先尝试猜一下)
猜测flag头可能为flag或者begin,先试试f
写脚本:
enflag = [0x1F,0x15,0x18,0x1E,2,0x20,0x49,0xF,0x26,0x11,0x39,0xF,0x4A,0x26,0x15,0x4A,0x39,0xB,0x17,0x4A,0x1D,0x26,0x11,0x49,0xF,0xF,0x26,0xD,0x49,0x26,0x1F,0x49,0xB,0x4A,0x17,0x4C,0x10,0x1A,0x4C,4]
# print(chr(enflag[0]^ord("f"))) # 0x79
for i in range(len(enflag)):
print(chr(enflag[i]^0x79),end='')
#flag{Y0v_h@v3_l3@rn3d_h0vv_t0_f0r3n5ic5}