-
2021-09-15 17:03:56
i春秋作家:lem0n
原文来自:浅谈内存取证
0x00 前言
网络攻击内存化和网络犯罪隐遁化,使部分关键数字证据只存在于物理内存或暂存于页面交换文件中,这使得传统的基于文件系统的计算机取证不能有效应对.内存取证作为传统文件系统取证的重要补充,是计算机取证科学的重要组成部分,通过全面获取内存数据、详尽分析内存数据,并在此基础上提取与网络攻击或网络犯罪相关的数字证据,近年来,内存取证已赢得安全社区的持续关注,获得了长足的发展与广泛应用,在网络应急响应和网络犯罪调查中发挥着不可替代的作用.首先回顾了内存取证研究的起源和发展演化过程;其次介绍了操作系统内存管理关键机制;然后探讨了内存取证的数据获取和分析方法,归纳总结目前内存取证研究的最新技术;最后讨论了内存取证存在的问题、发展趋势和进一步的研究方向.
——《内存取证研究与进展[J].软件学报,2015, 26(5): 1151-1172》
0x01 实验材料
kali 渗透测试系统
easy_dump.img 内存镜像
Volatility Framework 内存取证工具
TestDisk 文件恢复工具
0x02 Volatility Framework
volatility 框架是一款用于易失性内存取证的重量级框架。在该框架下我们可以完成许多取证的操作,获取我们想取得的信息。其支持的操作系统也非常广泛,同时支持 windows , linux, Mac OSX,甚至也支持 Android 手机使用ARM处理器的取证。因此,它也是所有网络取证爱好者的必学框架。
volatility 使用: volatility -f <文件名> -–profile=<配置文件> <插件> [插件参数] 通过volatility --info获取工具所支持的profile,Address Spaces,Scanner Checks,Plugins
常用插件:
imageinfo:显示目标镜像的摘要信息,知道镜像的操作系统后,就可以在 –profile 中带上对应的操作系统
pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
mendump:提取出指定进程,常用foremost 来分离里面的文件
filescan:扫描所有的文件列表
hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容
svcscan:扫描 Windows 的服务
connscan:查看网络连接
0x03 实验过程
利用
volatility -f easy_dump.img imageinfo
查看镜像信息root@kali:~/Desktop# volatility -f easy_dump.img imageinfo
Volatility Foundation Volatility Framework 2.6
INFO : volatility.debug : Determining profile based on KDBG search…
Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418
AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)
AS Layer2 : FileAddressSpace (/root/Desktop/easy_dump.img)
PAE type : No PAE
DTB : 0x187000L
KDBG : 0xf8000403f070L
Number of Processors : 1
Image Type (Service Pack) : 0
KPCR for CPU 0 : 0xfffff80004040d00L
KUSER_SHARED_DATA : 0xfffff78000000000L
Image date and time : 2018-09-28 09:02:19 UTC+0000
Image local date and time : 2018-09-28 17:02:19 +0800
根据
Suggested Profile(s)
值猜测他是Win7SP1x64,所以利用–profile=Win7SP1x64
利用
volatility -f easy_dump.img --profile=Win7SP1x64 hashdump
查看当前操作系统中的 password hashroot@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 hashdump
Volatility Foundation Volatility Framework 2.6
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
n3k0:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
将hash复制到文档中,用
john FileName --format=nt
进行密码破解(本次破解为空密码)注:john破解的密码会保存在本地目录
.john
中的john.pot
文件,如需再次破解相同密码需要使用–show或者将john.pot
文件删除。root@kali:~/Desktop# john hashdump.txt –format=NT
Using default input encoding: UTF-8
Rules/masks using ISO-8859-1
Loaded 3 password hashes with no different salts (NT [MD4 128/128 AVX 4x3])
Press ‘q’ or Ctrl-C to abort, almost any other key for status
(Administrator)
(Guest)
(n3k0)
3g 0:00:00:00 DONE 2/3 (2018-10-15 00:17) 150.0g/s 130550p/s 130550c/s 391650C/s money…hello
Use the “–show” option to display all of the cracked passwords reliably
Session completed
利用
volatility -f easy_dump.img --profile=Win7SP1x64 psscan
查看所有进程,通过所有进程来查看是否有可疑进程出现,进行进一步取证。root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 psscan
Volatility Foundation Volatility Framework 2.6
Offset§ Name PID PPID PDB Time created Time exited
0x000000001a453a70 WmiApSrv.exe 2760 492 0x000000001a9ab000 2018-09-28 09:01:58 UTC+0000
0x0000000022e4e060 VSSVC.exe 2168 492 0x0000000002a44000 2018-09-28 09:01:39 UTC+0000
···
0x0000000022fd1b30 notepad.exe 2616 1312 0x000000000221c000 2018-09-28 09:01:51 UTC+0000
···
0x0000000023963b30 DumpIt.exe 2500 1312 0x000000000788b000 2018-09-28 09:02:18 UTC+0000
0x00000000239712a0 svchost.exe 716 492 0x000000000b836000 2018-09-28 09:01:34 UTC+0000
···
0x00000000250a3b30 dllhost.exe 2900 600 0x00000000226ab000 2018-09-28 09:02:14 UTC+0000
0x0000000025101930 dllhost.exe 2932 600 0x000000000d0c2000 2018-09-28 09:02:15 UTC+0000
0x0000000025131b30 smss.exe 248 4 0x000000001a0a6000 2018-09-28 09:01:33 UTC+0000
0x0000000025749b30 System 4 0 0x0000000000187000 2018-09-28 09:01:33 UTC+0000通过观察进程可以看到
DumpIt.exe
此项进程,这个便是dump内存时的进程。进程中有notepad.exe进程PID为2616我们提取一下,看看有无线索.
利用
volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./
文件将以进程号命名root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./
Volatility Foundation Volatility Framework 2.6
**
Writing notepad.exe [ 2616] to 2616.dmp
通过strings命令查看进程中有无关于flag的文字提示
root@kali:~/Desktop# strings -e l 2616.dmp | grep flag
flag{flag is not here,but I put an strange jpg for you,hope you like it 😃}
flag{flag is not here,but I put an strange jpg for you,hope you like it 😃}
flag{flag is not here,but I put an strange jpg for you,hope you like it 😃}
···
flag{flag is not here,but I put an strange jpg for you,hope you like it 😃}
···
usbflags<span class=“hljs-number” style=“color:rgb(0,136,0);”>0E0F00020100
usbflags<span class=“hljs-number” style=“color:rgb(0,136,0);”>0E0F00030102
usbflags<span class=“hljs-number” style=“color:rgb(0,136,0);”>0E0F00080100
根据他的提示可以了解到flag并不在其中,应该在一个奇怪的图片里。
利用
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep -E 'jpg|png|jpeg|bmp|gif’
查看内存镜像中的文件,观察有无提示中所说的图片。root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep -E ‘jpg|png|jpeg|bmp|gif’
Volatility Foundation Volatility Framework 2.6
0x000000002408c460 32 0 RW---- <span class=“hljs-constant” style=“color:rgb(136,0,0);”>Device<span class=“hljs-constant” style=“color:rgb(136,0,0);”>HarddiskVolume1\phos.jpg内存镜像中只有phos.jpg这一张图片,下面尝试提取出来
利用
volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -n --dump-dir=./
插件进行文件提取-Q参数使用物理偏移量进行转储
-n以文件名保存
–dump-dir=目标存储位置
root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -n --dump-dir=./
Volatility Foundation Volatility Framework 2.6
DataSectionObject 0x2408c460 None \Device\HarddiskVolume1\phos.jpg
SharedCacheMap 0x2408c460 None \Device\HarddiskVolume1\phos.jpg图片中并没有需要的内容,
因为文字提示是在2616.bmp中给出的,因此将之前提取出来的2616.dmp进行文件提取看看会不会有线索。
利用
foremost 2616.dmp
提取文件root@kali:~/Desktop# foremost 2616.dmp
Processing: 2616.dmp
|***|
root@kali:~/Desktop# cat output/audit.txt
Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit FileForemost started at Mon Oct 15 04:14:57 2018
Invocation: foremost 2616.dmp
Output directory: /root/Desktop/output
Configuration file: /etc/foremost.conf
------------------------------------------------------------------
File: 2616.dmp
Start: Mon Oct 15 04:14:57 2018
Length: 298 MB (312721408 bytes)Num Name (bs=512) Size File Offset Comment
0: 00097439.htm 257 B 49889147
···
27: 00097458.htm 163 B 49898571
28: 00001838.dll 8 KB 941352 07/14/2009 00:07:09
29: 00500704.jpg 1 MB 256360448
30: 00491298.htm 231 B 251544976
31: 00491300.htm 231 B 251546000
32: 00490508.zip 48 KB 251140554
Finish: Mon Oct 15 04:15:11 201833 FILES EXTRACTED
jpg:= 1
htm:= 30
zip:= 1
exe:= 1
------------------------------------------------------------------
Foremost finished at Mon Oct 15 04:15:11 2018对提取的文件进行分析,发现其中zip文件中包含一个img镜像利用
binwalk message.img
分析其包含的数据。root@kali:~/Desktop/output/zip# binwalk message.img
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Linux EXT filesystem, rev 1.0, ext2 filesystem data, UUID=c12b8ec9-5ef5-4b91-8b4d-f827e81fe81f
67697 0x10871 Unix path: /work/HuWangBei/1/message
里面包含一个ext2的文件系统用
binwalk -e message.img
分离出来root@kali:~/Desktop# binwalk -e message.img
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Linux EXT filesystem, rev 1.0, ext2 filesystem data, UUID=c12b8ec9-5ef5-4b91-8b4d-f827e81fe81f
67697 0x10871 Unix path: /work/HuWangBei/1/message
挂载文件系统
root@kali:~/Desktop# cd _message.img.extracted/
root@kali:~/Desktop/_message.img.extracted# ls
0.ext ext-root
root@kali:~/Desktop/_message.img.extracted# mount 0.ext /mnt/
root@kali:~/Desktop/_message.img.extracted# cd /mnt/
root@kali:/mnt# ls
hint.txt lost+found里面只有一个txt文件打开后发现里面是类似坐标的数字,由之前的提示说一张奇怪的图片联想这可能是图片的坐标点,所以编写python脚本尝试将图片提取出来。
root@kali:/mnt# cat hint.txt
10 10
10 11
10 12
10 13
···
269 265
269 266
269 267
269 268
269 269python脚本:
import Image
flag_image = Image.new(‘RGB’,(300,300),(0,0,0))
f = open(‘hint.txt’)
for line in f.readlines():
point = line.split()
flag_image.putpixel([int(point[0]),int(point[1])],(255,255,255))
f.close()
flag_image.save(‘flag_image.jpg’)
识别结果:
Here is the vigenere key: aeolus, but i deleted the encrypted message。
根据提示说用了vigenere并且key为aeolus,但是他删除了信息…
那么接下来就要用到
testdisk /dev/loop0
来进行文件恢复。将此文件复制到桌面提取其中信息
root@kali:~/Desktop/_message.img.extracted/.Trash-0/files# strings .message.swp
b0VIM 8.0
n3k0
shiki.lan
~n3k0/work/HuWangBei/1/message
U3210
#"!
yise!dmsx_tthv_arr_didvi
最下面的字符串应该就是flag了,根据之前提示的vigenere加密并且key为aeolus进行解密
结果:
yeetjustfindandsolve
———————————————自此护网杯easy_dump的取证工作完毕——————————————
0x04 知识延伸
本文未用到dll,注册表等取证使用方法,其他取证方法我附上网址供大家学习
https://digital-forensics.sans.org/media/volatility-memory-forensics-cheat-sheet.pdf
0x05 制作内存镜像
DumpIt 是一款绿色免安装的 windows 内存镜像取证工具。利用它我们可以轻松地将一个系统的完整内存镜像下来。
只要双击打开DumpIt.exe输入y等待一会出现Success就是dump成功。
默认情况下,文件名是主机名(主机名),其后是执行映像过程的日期。该文件默认保存为“raw”格式。
利用kali分析
更多相关内容 -
BMZCTF内存取证三项.zip
2021-10-21 12:55:251.小黑写的啥,据说是flag? 2.那么问题来了,小白的密码是啥? 3.小黑发送的机密文件里面到底是什么 -
CTF内存取证三项.7z
2020-11-16 19:41:07CTF取证分析赛题,对学习有很大帮助。 -
中科磐云 内存取证.zip
2021-10-14 19:11:35磐云内存取证题目 2021中职 网络安全 试题4 -
内存取证的艺术
2018-02-21 22:05:22取证分析,从日志,内存等方面去分析当一个机器被入侵后,会出现一些什么情况。还有涉及到注册表,以及一些文件夹里面存在的历史记录等等。还有浏览器浏览记录 -
网络安全内存取证分析源文件
2022-04-27 10:14:10网络安全竞赛内存取证分析文件 -
内存取证软件 Volatility等
2019-04-16 14:19:49计算机取证技术可以在案件发生以后,采取有效的信息技术手段对存储在网络中的计算机及其相关设备中的数据进行收集...内存取证是当前计算机取证技术研究的热点问题之一,本文件包含各类取证工具及其简单使用与分析文档。 -
Volatility内存取证大杀器的常用的命令
2021-08-05 08:06:23Volatility内存取证大杀器的常用命令,一般都只用这些,超级实惠 -
内存取证艺术(英文pdf)
2018-11-07 09:30:21内存取证提供了尖端技术来帮助调查数字攻击。 内存取证是分析计算机内存(RAM)以解决数字犯罪的艺术。 作为最畅销的MalwareAnalyst's Cookbook的后续产品,恶意软件,安全和数字取证领域的专家为您提供了记忆力学的... -
内存取证的框架
2019-01-20 14:34:35该为在内存取证中常用的框架,功能强大,使用该框架分析出电脑有无染上恶意代码或恶意病毒。 -
b8内存取证题目环境,购买后私聊博主给到解析。
2022-05-08 19:57:04b8内存取证题目环境,购买后私聊博主给到解析。 -
最新volatility内存取证软件(windows版)
2018-01-10 21:47:52最新volatility内存取证软件(windows版) 内存取证必备工具! -
Volatility内存取证
2017-12-30 16:34:45在Kali Liunx系统下使用Volatility工具对未知内存镜像进行详细分析取证 -
OtterCTF 内存取证
2022-05-15 19:34:21最近小小的学习了一下内存取证,装环境搞了整整一天,非常麻烦,在阅读相关资料时偶然看到了一篇WriteUp,是关于OtterCTF2018的十三道内存取证题目,用的全部是同一个镜像,考察的知识点非常全面,可以用来熟悉一下...最近小小的学习了一下内存取证,装环境搞了整整一天,非常麻烦,在阅读相关资料时偶然看到了一篇WriteUp,是关于OtterCTF2018的十三道内存取证题目,用的全部是同一个镜像,考察的知识点非常全面,可以用来熟悉一下volatility的使用,关键是比赛平台居然还开着,正好当作内存取证的一次入门学习
1 - What the password?
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem imageinfo Volatility Foundation Volatility Framework 2.6.1 INFO : volatility.debug : Determining profile based on KDBG search... Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_24000, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_24000, Win7SP1x64_23418 AS Layer1 : WindowsAMD64PagedMemory (Kernel AS) AS Layer2 : FileAddressSpace (/root/桌面/OtterCTF.vmem) PAE type : No PAE DTB : 0x187000L KDBG : 0xf80002c430a0L Number of Processors : 2 Image Type (Service Pack) : 1 KPCR for CPU 0 : 0xfffff80002c44d00L KPCR for CPU 1 : 0xfffff880009ef000L KUSER_SHARED_DATA : 0xfffff78000000000L Image date and time : 2018-08-04 19:34:22 UTC+0000 Image local date and time : 2018-08-04 22:34:22 +0300
题目附件是一个raw文件,先用imageinfo查看一下镜像的信息,支持的系统有很多,我们可以试一试,指定profile为第一个Win7SP1x64,然后看看能否成功调用volshell
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 volshell Volatility Foundation Volatility Framework 2.6.1 Current context: System @ 0xfffffa8018d44740, pid=4, ppid=0 DTB=0x187000 Welcome to volshell! Current memory image is: file:///root/%E6%A1%8C%E9%9D%A2/OtterCTF.vmem To get help, type 'hh()' >>> hh()
得到正确的镜像系统后,便可以在后面加上
--profile=Win7SP1x64
来使用后续的命令,第一题需要我们获取这个镜像的用户密码,可以使用hashdump,但得到密码都是哈希加密之后的,使用lsadump或者mimikatz可以得到明文┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 hashdump Volatility Foundation Volatility Framework 2.6.1 Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Rick:1000:aad3b435b51404eeaad3b435b51404ee:518172d012f97d3a8fcc089615283940::: ┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 lsadump Volatility Foundation Volatility Framework 2.6.1 DefaultPassword 0x00000000 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (............... 0x00000010 4d 00 6f 00 72 00 74 00 79 00 49 00 73 00 52 00 M.o.r.t.y.I.s.R. 0x00000020 65 00 61 00 6c 00 6c 00 79 00 41 00 6e 00 4f 00 e.a.l.l.y.A.n.O. 0x00000030 74 00 74 00 65 00 72 00 00 00 00 00 00 00 00 00 t.t.e.r......... DPAPI_SYSTEM 0x00000000 2c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,............... 0x00000010 01 00 00 00 36 9b ba a9 55 e1 92 82 09 e0 63 4c ....6...U.....cL 0x00000020 20 74 63 14 9e d8 a0 4b 45 87 5a e4 bc f2 77 a5 .tc....KE.Z...w. 0x00000030 25 3f 47 12 0b e5 4d a5 c8 35 cf dc 00 00 00 00 %?G...M..5...... ┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 mimikatz Volatility Foundation Volatility Framework 2.6.1 Module User Domain Password -------- ---------------- ---------------- ---------------------------------------- wdigest Rick WIN-LO6FAF3DTFE MortyIsReallyAnOtter wdigest WIN-LO6FAF3DTFE$ WORKGROUP
CTF{MortyIsReallyAnOtter}
2 - General Info
第二题要获取主机名和ip地址
ip地址
能获取的ip地址的最快办法就是netscan,查看网络连接
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 netscan Volatility Foundation Volatility Framework 2.6.1 Offset(P) Proto Local Address Foreign Address State Pid Owner Created 0x7d60f010 UDPv4 0.0.0.0:1900 *:* 2836 BitTorrent.exe 2018-08-04 19:27:17 UTC+0000 0x7d62b3f0 UDPv4 192.168.202.131:6771 *:* 2836 BitTorrent.exe 2018-08-04 19:27:22 UTC+0000 0x7d62f4c0 UDPv4 127.0.0.1:62307 *:* 2836 BitTorrent.exe 2018-08-04 19:27:17 UTC+0000 0x7d62f920 UDPv4 192.168.202.131:62306 *:* 2836 BitTorrent.exe 2018-08-04 19:27:17 UTC+0000 ...... ......
netscan的结果很多,这里只放了一部分,期中多次出现的
192.168.202.131
就是ip地址主机名
主机名的获取方法有两种,第一种是直接在hashdump的显示中可以看到主机名,第二种就是查注册表,这里使用hivelist查注册表
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 hivelist Volatility Foundation Volatility Framework 2.6.1 Virtual Physical Name ------------------ ------------------ ---- 0xfffff8a00377d2d0 0x00000000624162d0 \??\C:\System Volume Information\Syscache.hve 0xfffff8a00000f010 0x000000002d4c1010 [no name] 0xfffff8a000024010 0x000000002d50c010 \REGISTRY\MACHINE\SYSTEM 0xfffff8a000053320 0x000000002d5bb320 \REGISTRY\MACHINE\HARDWARE 0xfffff8a000109410 0x0000000029cb4410 \SystemRoot\System32\Config\SECURITY 0xfffff8a00033d410 0x000000002a958410 \Device\HarddiskVolume1\Boot\BCD 0xfffff8a0005d5010 0x000000002a983010 \SystemRoot\System32\Config\SOFTWARE 0xfffff8a001495010 0x0000000024912010 \SystemRoot\System32\Config\DEFAULT 0xfffff8a0016d4010 0x00000000214e1010 \SystemRoot\System32\Config\SAM 0xfffff8a00175b010 0x00000000211eb010 \??\C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT 0xfffff8a00176e410 0x00000000206db410 \??\C:\Windows\ServiceProfiles\LocalService\NTUSER.DAT 0xfffff8a002090010 0x000000000b92b010 \??\C:\Users\Rick\ntuser.dat 0xfffff8a0020ad410 0x000000000db41410 \??\C:\Users\Rick\AppData\Local\Microsoft\Windows\UsrClass.dat
主机名信息在system的那一条记录中,再用
-o + 地址 printkey
来查看指定的记录┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey Volatility Foundation Volatility Framework 2.6.1 Legend: (S) = Stable (V) = Volatile ---------------------------- Registry: \REGISTRY\MACHINE\SYSTEM Key name: CMI-CreateHive{2A7FB991-7BBE-4F9D-B91E-7CB51D4737F5} (S) Last updated: 2018-08-04 19:25:54 UTC+0000 Subkeys: (S) ControlSet001 (S) ControlSet002 (S) MountedDevices (S) RNG (S) Select (S) Setup (S) Software (S) WPA (V) CurrentControlSet Values:
跟进ControlSet001,一路到最后可以看到主机名的value
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName\ComputerName" Volatility Foundation Volatility Framework 2.6.1 Legend: (S) = Stable (V) = Volatile ---------------------------- Registry: \REGISTRY\MACHINE\SYSTEM Key name: ComputerName (S) Last updated: 2018-06-02 19:23:00 UTC+0000 Subkeys: Values: REG_SZ : (S) mnmsrvc REG_SZ ComputerName : (S) WIN-LO6FAF3DTFE
CTF{192.168.202.131}
CTF{WIN-LO6FAF3DTFE}
3 - Play Time
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W2VOgECf-1652614430823)(https://cdn.jsdelivr.net/gh/H4cking2theGate/pic/img/202205151608909.png)]
要找到他玩的游戏,可以用pslist来看看进程,看ip地址可以用netscan
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 pslist Volatility Foundation Volatility Framework 2.6.1 Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start Exit ------------------ -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------ 0xfffffa8018d44740 System 4 0 95 411 ------ 0 2018-08-04 19:26:03 UTC+0000 0xfffffa801947e4d0 smss.exe 260 4 2 30 ------ 0 2018-08-04 19:26:03 UTC+0000 0xfffffa801a0c8380 csrss.exe 348 336 9 563 0 0 2018-08-04 19:26:10 UTC+0000 ...... ...... 0xfffffa801b4a7b30 bittorrentie.e 2308 2836 15 337 1 1 2018-08-04 19:27:19 UTC+0000 0xfffffa801b4c9b30 bittorrentie.e 2624 2836 13 316 1 1 2018-08-04 19:27:21 UTC+0000 0xfffffa801b5cb740 LunarMS.exe 708 2728 18 346 1 1 2018-08-04 19:27:39 UTC+0000 0xfffffa801988c2d0 PresentationFo 724 492 6 148 0 0 2018-08-04 19:27:52 UTC+0000 ...... ......
其中有个进程LunarMS.exe,可以谷歌搜索一下,发现是个游戏,顺势用netscan查出ip地址
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 netscan|grep LunarMS Volatility Foundation Volatility Framework 2.6.1 0x7d6124d0 TCPv4 192.168.202.131:49530 77.102.199.102:7575 CLOSED 708 LunarMS.exe 0x7e413a40 TCPv4 -:0 -:0 CLOSED 708 LunarMS.exe 0x7e521b50 TCPv4 -:0 -:0 CLOSED 708 LunarMS.exe
CTF{LunarMS}
CTF{77.102.199.102}
4 - Name Game
要找到Lunar-3这个服上的用户名,我们最好把进程给dump下来进行逆向分析,这里也可以在镜像中通过寻找字符串的方式找到和Lunar-3相关记录
这里可以使用工具010editor
可以看到Lunar-3的后面有一个奇怪的字符串
0tt3r8r33z3
,这个就是用户名或者也可以在命令行中直接查找
┌──(root㉿kali2022)-[~] └─# strings /root/桌面/OtterCTF.vmem|grep Lunar-3 -C 5 .>SWqn Y!F[Wq disabled mouseOver keyFocused Lunar-3 0tt3r8r33z3 Sound/UI.img/ BtMouseClick Lunar-4 Lunar-1 -- c+Y\ \b+Y c+Yt tb+Y4c+Y b+YLc+Y Lunar-3 Lunar-4 L(dNVxdNV L|eNV {qf8 q r"r r
这里使用strings命令加上grep搜索,
-C 5
表示查找前后5条记录,同样可以找到可疑字符串CTF{0tt3r8r33z3}
5 - Name Game 2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ycIwD0J5-1652614430825)(https://cdn.jsdelivr.net/gh/H4cking2theGate/pic/img/202205151630600.png)]
这里先用memdump把前面那个LunarMS.exe游戏进程打印出来,进程号PID可以看前面的pslist
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 memdump -p 708 -D ./ Volatility Foundation Volatility Framework 2.6.1 ************************************************************************ Writing LunarMS.exe [ 708] to 708.dmp
这个题给了一个16进制的签名,我们用010来搜索其中的片段
5A 0C 00
,结果非常多,得慢慢找,可以看到这个M0rtyL0L就是角色名用hexdump命令也可以查找,结果就不放了,太长了
hexdump -C 708.dmp |grep "5a 0c 00" -A 3 -B 3
CTF{M0rtyL0L}
6 - Silly Rick
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M2DS33mn-1652614430826)(https://cdn.jsdelivr.net/gh/H4cking2theGate/pic/img/202205151705557.png)]
题目需要获得邮箱密码,又提示说经常复制粘贴,那我们可以用clipboard查看剪贴板
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 clipboard Volatility Foundation Volatility Framework 2.6.1 Session WindowStation Format Handle Object Data ---------- ------------- ------------------ ------------------ ------------------ -------------------------------------------------- 1 WinSta0 CF_UNICODETEXT 0x602e3 0xfffff900c1ad93f0 M@il_Pr0vid0rs 1 WinSta0 CF_TEXT 0x10 ------------------ 1 WinSta0 0x150133L 0x200000000000 ------------------ 1 WinSta0 CF_TEXT 0x1 ------------------ 1 ------------- ------------------ 0x150133 0xfffff900c1c1adc0
CTF{M@il_Pr0vid0rs}
7 - Hide And Seek
这个题目要找到恶意进程名字,我们可以用pstree查看进程树
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 pstree Volatility Foundation Volatility Framework 2.6.1 Name Pid PPid Thds Hnds Time -------------------------------------------------- ------ ------ ------ ------ ---- 0xfffffa801b27e060:explorer.exe 2728 2696 33 854 2018-08-04 19:27:04 UTC+0000 . 0xfffffa801b486b30:Rick And Morty 3820 2728 4 185 2018-08-04 19:32:55 UTC+0000 .. 0xfffffa801a4c5b30:vmware-tray.ex 3720 3820 8 147 2018-08-04 19:33:02 UTC+0000 . 0xfffffa801b2f02e0:WebCompanion.e 2844 2728 0 ------ 2018-08-04 19:27:07 UTC+0000 . 0xfffffa801a4e3870:chrome.exe 4076 2728 44 1160 2018-08-04 19:29:30 UTC+0000 .. 0xfffffa801a4eab30:chrome.exe 4084 4076 8 86 2018-08-04 19:29:30 UTC+0000 .. 0xfffffa801a5ef1f0:chrome.exe 1796 4076 15 170 2018-08-04 19:33:41 UTC+0000 .. 0xfffffa801aa00a90:chrome.exe 3924 4076 16 228 2018-08-04 19:29:51 UTC+0000 .. 0xfffffa801a635240:chrome.exe 3648 4076 16 207 2018-08-04 19:33:38 UTC+0000 .. 0xfffffa801a502b30:chrome.exe 576 4076 2 58 2018-08-04 19:29:31 UTC+0000 .. 0xfffffa801a4f7b30:chrome.exe 1808 4076 13 229 2018-08-04 19:29:32 UTC+0000 .. 0xfffffa801a7f98f0:chrome.exe 2748 4076 15 181 2018-08-04 19:31:15 UTC+0000 . 0xfffffa801b5cb740:LunarMS.exe 708 2728 18 346 2018-08-04 19:27:39 UTC+0000 . 0xfffffa801b1cdb30:vmtoolsd.exe 2804 2728 6 190 2018-08-04 19:27:06 UTC+0000 . 0xfffffa801b290b30:BitTorrent.exe 2836 2728 24 471 2018-08-04 19:27:07 UTC+0000 .. 0xfffffa801b4c9b30:bittorrentie.e 2624 2836 13 316 2018-08-04 19:27:21 UTC+0000 .. 0xfffffa801b4a7b30:bittorrentie.e 2308 2836 15 337 2018-08-04 19:27:19 UTC+0000 0xfffffa8018d44740:System 4 0 95 411 2018-08-04 19:26:03 UTC+0000 . 0xfffffa801947e4d0:smss.exe 260 4 2 30 2018-08-04 19:26:03 UTC+0000 0xfffffa801a2ed060:wininit.exe 396 336 3 78 2018-08-04 19:26:11 UTC+0000 . 0xfffffa801ab377c0:services.exe 492 396 11 242 2018-08-04 19:26:12 UTC+0000 .. 0xfffffa801afe7800:svchost.exe 1948 492 6 96 2018-08-04 19:26:42 UTC+0000 .. 0xfffffa801ae92920:vmtoolsd.exe 1428 492 9 313 2018-08-04 19:26:27 UTC+0000 ... 0xfffffa801a572b30:cmd.exe 3916 1428 0 ------ 2018-08-04 19:34:22 UTC+0000 .. 0xfffffa801ae0f630:VGAuthService. 1356 492 3 85 2018-08-04 19:26:25 UTC+0000 .. 0xfffffa801abbdb30:vmacthlp.exe 668 492 3 56 2018-08-04 19:26:16 UTC+0000 .. 0xfffffa801aad1060:Lavasoft.WCAss 3496 492 14 473 2018-08-04 19:33:49 UTC+0000 .. 0xfffffa801a6af9f0:svchost.exe 164 492 12 147 2018-08-04 19:28:42 UTC+0000 .. 0xfffffa801ac2e9e0:svchost.exe 808 492 22 508 2018-08-04 19:26:18 UTC+0000 ... 0xfffffa801ac753a0:audiodg.exe 960 808 7 151 2018-08-04 19:26:19 UTC+0000 .. 0xfffffa801ae7f630:dllhost.exe 1324 492 15 207 2018-08-04 19:26:42 UTC+0000 .. 0xfffffa801a6c2700:mscorsvw.exe 3124 492 7 77 2018-08-04 19:28:43 UTC+0000 .. 0xfffffa801b232060:sppsvc.exe 2500 492 4 149 2018-08-04 19:26:58 UTC+0000 .. 0xfffffa801abebb30:svchost.exe 712 492 8 301 2018-08-04 19:26:17 UTC+0000 .. 0xfffffa801ad718a0:svchost.exe 1164 492 18 312 2018-08-04 19:26:23 UTC+0000 .. 0xfffffa801ac31b30:svchost.exe 844 492 17 396 2018-08-04 19:26:18 UTC+0000 ... 0xfffffa801b1fab30:dwm.exe 2704 844 4 97 2018-08-04 19:27:04 UTC+0000 .. 0xfffffa801988c2d0:PresentationFo 724 492 6 148 2018-08-04 19:27:52 UTC+0000 .. 0xfffffa801b603610:mscorsvw.exe 412 492 7 86 2018-08-04 19:28:42 UTC+0000 .. 0xfffffa8018e3c890:svchost.exe 604 492 11 376 2018-08-04 19:26:16 UTC+0000 ... 0xfffffa8019124b30:WmiPrvSE.exe 1800 604 9 222 2018-08-04 19:26:39 UTC+0000 ... 0xfffffa801b112060:WmiPrvSE.exe 2136 604 12 324 2018-08-04 19:26:51 UTC+0000 .. 0xfffffa801ad5ab30:spoolsv.exe 1120 492 14 346 2018-08-04 19:26:22 UTC+0000 .. 0xfffffa801ac4db30:svchost.exe 868 492 45 1114 2018-08-04 19:26:18 UTC+0000 .. 0xfffffa801a6e4b30:svchost.exe 3196 492 14 352 2018-08-04 19:28:44 UTC+0000 .. 0xfffffa801acd37e0:svchost.exe 620 492 19 415 2018-08-04 19:26:21 UTC+0000 .. 0xfffffa801b1e9b30:taskhost.exe 2344 492 8 193 2018-08-04 19:26:57 UTC+0000 .. 0xfffffa801ac97060:svchost.exe 1012 492 12 554 2018-08-04 19:26:20 UTC+0000 .. 0xfffffa801b3aab30:SearchIndexer. 3064 492 11 610 2018-08-04 19:27:14 UTC+0000 .. 0xfffffa801aff3b30:msdtc.exe 1436 492 14 155 2018-08-04 19:26:43 UTC+0000 . 0xfffffa801ab3f060:lsass.exe 500 396 7 610 2018-08-04 19:26:12 UTC+0000 . 0xfffffa801ab461a0:lsm.exe 508 396 10 148 2018-08-04 19:26:12 UTC+0000 0xfffffa801a0c8380:csrss.exe 348 336 9 563 2018-08-04 19:26:10 UTC+0000 . 0xfffffa801a6643d0:conhost.exe 2420 348 0 30 2018-08-04 19:34:22 UTC+0000 0xfffffa80198d3b30:csrss.exe 388 380 11 460 2018-08-04 19:26:11 UTC+0000 0xfffffa801aaf4060:winlogon.exe 432 380 3 113 2018-08-04 19:26:11 UTC+0000 0xfffffa801b18f060:WebCompanionIn 3880 1484 15 522 2018-08-04 19:33:07 UTC+0000 . 0xfffffa801aa72b30:sc.exe 3504 3880 0 ------ 2018-08-04 19:33:48 UTC+0000 . 0xfffffa801aeb6890:sc.exe 452 3880 0 ------ 2018-08-04 19:33:48 UTC+0000 . 0xfffffa801a6268b0:WebCompanion.e 3856 3880 15 386 2018-08-04 19:34:05 UTC+0000 . 0xfffffa801b08f060:sc.exe 3208 3880 0 ------ 2018-08-04 19:33:47 UTC+0000 . 0xfffffa801ac01060:sc.exe 2028 3880 0 ------ 2018-08-04 19:33:49 UTC+0000 0xfffffa801b1fd960:notepad.exe 3304 3132 2 79 2018-08-04 19:34:10 UTC+0000
其中有个很奇怪的vmware-tray.exe居然是Rick And Morty的子进程,非常奇怪,
可以用dlllist查看一下进程相关的dll文件列表
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 dlllist -p 3720 Volatility Foundation Volatility Framework 2.6.1 ************************************************************************ vmware-tray.ex pid: 3720 Command line : "C:\Users\Rick\AppData\Local\Temp\RarSFX0\vmware-tray.exe" Base Size LoadCount LoadTime Path ------------------ ------------------ ------------------ ------------------------------ ---- 0x0000000000ec0000 0x6e000 0xffff 1970-01-01 00:00:00 UTC+0000 C:\Users\Rick\AppData\Local\Temp\RarSFX0\vmware-tray.exe 0x00000000776f0000 0x1a9000 0xffff 1970-01-01 00:00:00 UTC+0000 C:\Windows\SYSTEM32\ntdll.dll 0x0000000075210000 0x3f000 0x3 2018-08-04 19:33:03 UTC+0000 C:\Windows\SYSTEM32\wow64.dll 0x00000000751b0000 0x5c000 0x1 2018-08-04 19:33:03 UTC+0000 C:\Windows\SYSTEM32\wow64win.dll 0x00000000751a0000 0x8000 0x1 2018-08-04 19:33:03 UTC+0000 C:\Windows\SYSTEM32\wow64cpu.dll 0x0000000000ec0000 0x6e000 0xffff 1970-01-01 00:00:00 UTC+0000 C:\Users\Rick\AppData\Local\Temp\RarSFX0\vmware-tray.exe 0x00000000778d0000 0x180000 0xffff 1970-01-01 00:00:00 UTC+0000 C:\Windows\SysWOW64\ntdll.dll ...... ......
这个进程的执行目录是temp,一看就不是正经程序
CTF{vmware-tray.exe}
8 - Path To Glory
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l6gSMVUC-1652614430827)(https://cdn.jsdelivr.net/gh/H4cking2theGate/pic/img/202205151725053.png)]
这个题目有点意义不明,不明确flag内容到底应该是什么
由于上一题了解到,恶意进程的父进程是Rick And Morty,那么先用filescan找一找这个文件
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 filescan|grep 'Rick And Morty' Volatility Foundation Volatility Framework 2.6.1 0x000000007d63dbc0 10 0 R--r-d \Device\HarddiskVolume1\Torrents\Rick And Morty season 1 download.exe 0x000000007d8813c0 2 0 RW-rwd \Device\HarddiskVolume1\Users\Rick\Downloads\Rick And Morty season 1 download.exe.torrent 0x000000007da56240 2 0 RW-rwd \Device\HarddiskVolume1\Torrents\Rick And Morty season 1 download.exe 0x000000007dae9350 2 0 RWD--- \Device\HarddiskVolume1\Users\Rick\AppData\Roaming\BitTorrent\Rick And Morty season 1 download.exe.1.torrent 0x000000007dcbf6f0 2 0 RW-rwd \Device\HarddiskVolume1\Users\Rick\AppData\Roaming\BitTorrent\Rick And Morty season 1 download.exe.1.torrent 0x000000007e710070 8 0 R--rwd \Device\HarddiskVolume1\Torrents\Rick And Morty season 1 download.exe
一共6个文件,其中有三个exe和三个种子文件,我们要分析来源就要关注种子文件,里面可能放着地址信息
先用dumpfiles转储文件,-Q指定内存地址,把三个种子都拿出来分析
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007d8813c0 -D ./ Volatility Foundation Volatility Framework 2.6.1 DataSectionObject 0x7d8813c0 None \Device\HarddiskVolume1\Users\Rick\Downloads\Rick And Morty season 1 download.exe.torrent
┌──(root㉿kali2022)-[~] └─# strings file.None.0xfffffa801af10010.dat [ZoneTransfer] ZoneId=3 ┌──(root㉿kali2022)-[~] └─# strings file.None.0xfffffa801b42c9e0.dat d8:announce44:udp://tracker.openbittorrent.com:80/announce13:announce-listll44:udp://tracker.openbittorrent.com:80/announceel42:udp://tracker.opentrackr.org:1337/announceee10:created by17:BitTorrent/7.10.313:creation datei1533150595e8:encoding5:UTF-84:infod6:lengthi456670e4:name36:Rick And Morty season 1 download.exe12:piece lengthi16384e6:pieces560:\I !PC<^X B.k_Rk 0<;O87o !4^" 3hq, &iW1| K68:o w~Q~YT $$o9p bwF:u e7:website19:M3an_T0rren7_4_R!cke ┌──(root㉿kali2022)-[~] └─# strings file.None.0xfffffa801b51ccf0.dat [ZoneTransfer] ZoneId=3
第二个种子文件中有个website字段M3an_T0rren7_4_R!cke非常可疑
当作答案提交一下,结果错了,最后上网发现末尾的e是没有的,我也不知道为啥
CTF{M3an_T0rren7_4_R!ck}
9 - Path To Glory 2
这个题目更迷了,猜不透让我交啥,这里我看了一下网上办法
先把所有的chrome浏览器进程转储下来,
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 memdump -n chrome.exe -D ./chrome Volatility Foundation Volatility Framework 2.6.1 ************************************************************************ Writing chrome.exe [ 4076] to 4076.dmp ************************************************************************ Writing chrome.exe [ 4084] to 4084.dmp ************************************************************************ Writing chrome.exe [ 576] to 576.dmp ************************************************************************ Writing chrome.exe [ 1808] to 1808.dmp ************************************************************************ Writing chrome.exe [ 3924] to 3924.dmp ************************************************************************ Writing chrome.exe [ 2748] to 2748.dmp ************************************************************************ Writing chrome.exe [ 3648] to 3648.dmp ************************************************************************ Writing chrome.exe [ 1796] to 1796.dmp
再看看有没有和Rick And Morty相关的信息
┌──(root㉿kali2022)-[~] └─# strings ./chrome/* | grep 'Rick And Morty season 1 download.exe' -C 10 ...... ...... -- wCachePathe .CachePrefix CacheLimite CacheOptions CacheRepair GOOGLE~1.LNK MAPLES~1.URL BITTOR~1.LNK Flag.txt Flag.txt Rick And Morty season 1 download.exe.lnk Rick And Morty season 1 download.exe.lnk .WINDOWS OpenWithListp {1NP14R77-02R7-4R5Q-O744-2RO1NR5198O7}\ehaqyy32.rkr MRUList .WINDOWS .tor .txt .WIN .ziphx Foldv -- ...... ...... -- display:inline;width:56px;height:200px;m> Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@inYear //sec-s.uicdn.com/nav-cdn/home/preloader.gif simple-icon_toolbar-change-view-horizontal nnx-track-sec-click-communication-inboxic.com nx-track-sec-click-dashboard-hide_smileyable Nftd-box stem-north big fullsize js-focusable js-box-flex need-overlay js-componentone Jhttps://search.mail.com/web [q origin ]Year ntrack-and-trace__delivery-info--has-iconf Rick And Morty season 1 download.exe.torrent tbl_1533411035475_7.0.1.40728_2033115181 panel-mail-display-table-mail-default35" Cnpanel-mail-display-table-mail-horizontal.js trc_rbox text-links-a trc-content-sponsored identity_OjpwcmVsb2FkZXIuaHRtbC50d2ln Move the widget to its desired position.3c8= Set-Cookie, no-store, proxy-revalidateHxRKw= Set-Cookie, no-store, proxy-revalidate143/ tbl_1533411035475_7.0.9.40728_2033115181 "mail.com Update" <service@corp.mail.com>e ...... ......
找到的结果中
Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@in
即为flag,然后结果中意外的发现了flag.txt,后面会用到CTF{Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@in}
10 - Bit 4 Bit
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-519FNYad-1652614430827)(https://cdn.jsdelivr.net/gh/H4cking2theGate/pic/img/202205151803118.png)]
题目告诉我们这个恶意进程是一个勒索软件,要我们找出攻击者的比特币账户地址,那我们肯定是要先把恶意软件dump下来
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 procdump -p 3720 -D ./ Volatility Foundation Volatility Framework 2.6.1 Process(V) ImageBase Name Result ------------------ ------------------ -------------------- ------ 0xfffffa801a4c5b30 0x0000000000ec0000 vmware-tray.ex OK: executable.3720.exe
接下来就是用dnspy进行逆向分析(直接看伪代码)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JhayM3pg-1652614430828)(https://cdn.jsdelivr.net/gh/H4cking2theGate/pic/img/202205151821241.png)]
在form3中可以看到这个软件的显示的信息,直接把address写出来了
CTF{1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M}
11 - Graphic’s For The Weak
要找到图片的隐藏信息,那就继续分析,在资源中查看图片,直接可以看到隐藏信息
CTF{S0_Just_M0v3_Socy}
12 - Recovery
这一题就是找出加密文件所使用的密码
分析exe可以看到两个函数,第一个创建密码是随机的,然后有一个发送密码,是把computerName和userName还有password拼接以后进行发送
可以分析出compuerName就是WIN-LO6FAF3DTFE,用户名是Rick,所以这个函数发送的字符串应该是
WIN-LO6FAF3DTFE-Rick password
,我们直接去这个勒索软件的内存中寻找相关字符串即可┌──(root㉿kali2022)-[~] └─# strings -el ./3720.dmp | grep 'WIN-LO6FAF3DTFE-Rick' -C 5 \Desktop\ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*!=&?&/ aDOBofVYUNVnmp7 aDOBofVYUNVnmp7 C:\Users\Rick\Desktop\ WIN-LO6FAF3DTFE-Rick aDOBofVYUNVnmp7 .txt .doc .docx .xls .xlsx
-el参数的e指定了字符编码,l为小端编码,如果想用大端就是-eb
这里搜索到的
aDOBofVYUNVnmp7
就是passwordCTF{aDOBofVYUNVnmp7}
13 - Closure
最后一题要解密文件,容易想到前面提到的flag文件,这个flag文件应该是被加密过的,但我们已经知道密码了
┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 filescan|grep -i 'flag' Volatility Foundation Volatility Framework 2.6.1 0x000000007d61b070 16 0 RW-rw- \Device\HarddiskVolume1\Users\Rick\AppData\Roaming\Microsoft\Windows\Recent\Flag.txt.WINDOWS.lnk 0x000000007e410890 16 0 R--r-- \Device\HarddiskVolume1\Users\Rick\Desktop\Flag.txt ┌──(root㉿kali2022)-[~] └─# vol.py -f /root/桌面/OtterCTF.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007e410890 -D ./ Volatility Foundation Volatility Framework 2.6.1 DataSectionObject 0x7e410890 None \Device\HarddiskVolume1\Users\Rick\Desktop\Flag.txt
先找到flag文件,并且转储下来
解密过程
已知这个勒索软件为HiddenTear,直接在网上找到解密程序HiddenTearDecrypter
先将加密文件的末尾多余的0去掉,再把后缀加上locked
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VdatTcdV-1652614430830)(https://cdn.jsdelivr.net/gh/H4cking2theGate/pic/img/202205151930272.png)]
拿去解密,密钥已经知道了,直接输入
CTF{Im_Th@_B3S7_RicK_0f_Th3m_4ll}
-
CTF取证总结(内存取证,磁盘取证)以及例题复现
2021-09-20 13:43:43内存取证 经常利用volatility分析 取证文件后缀 .raw、.vmem、.img 常用命令(imageinfo,pslist,dumpfiles,memdump) 可疑的进程(notepad,cmd) 和磁盘取证结合起来考察 了解部分操作系统原理 常见文件后缀dmg,...内存取证
经常利用volatility分析
- 取证文件后缀 .raw、.vmem、.img
- 常用命令(imageinfo,pslist,dumpfiles,memdump)
- 可疑的进程(notepad,cmd)
- 和磁盘取证结合起来考察
- 了解部分操作系统原理
- 常见文件后缀dmg,img
volatility基础命令
python vol.py -f [image] ‐-profile=[profile][plugin] 命令 其中 -f 后面加的是要取证的文件, --profile 后加的是工具识别出的系统版本, [plugin] 是指使用的插件,其中默认存在一些插件,另外还可以自己下载一些插件扩充
可以使用
-h
参数获取使用方法和插件介绍,列举几个常用到的命令-
imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 –profile 中带上对应的操作系统,后续操作都要带上这一参数
-
pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
-
pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
-
psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
-
cmdscan:可用于查看终端记录
-
notepad:查看当前展示的 notepad 文本(–profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)
-
filescan:扫描所有的文件列表
linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E ‘png|jpg|gif|zip|rar|7z|pdf|txt|doc’
-
dumpfiles:导出某一文件(指定虚拟地址)
需要指定偏移量 -Q 和输出目录 -D
-
mendump:提取出指定进程,常用foremost 来分离里面的文件
需要指定进程-p [pid] 和输出目录 -D
-
editbox:显示有关编辑控件(曾经编辑过的内容)的信息
-
screenshot:保存基于GDI窗口的伪截屏
-
clipboard:查看剪贴板信息
-
iehistory:检索IE浏览器历史记录
-
systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)
-
hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)
-
mftparser:恢复被删除的文件
-
svcscan:扫描 Windows 的服务
-
connscan:查看网络连接
-
envars:查看环境变量
-
dlllist: 列出某一进程加载的所有dll文件
-
hivelist: 列出所有的注册表项及其虚拟地址和物理地址
-
timeliner: 将所有操作系统事件以时间线的方式展开
磁盘取证
-
磁盘取证软件
十六机制编辑软件,常用的十六进制编辑软件有winhex,010editor,x-way
-
硬盘结构
主引导扇区由主引导程序(Master Boot Record,MBR)、硬盘分区表(Disk Partition Table,DPT)和结束标志三部分组成
-
文件系统
-
Windows: FAT12 -> FAT16 -> FAT32 -> NTFS
-
Linux: EXT2 -> EXT3 -> EXT4
-
FAT 主磁盘结构
-
删除文件:目录表中文件名第一字节
e5
-
-
VMDK 文件本质上是物理硬盘的虚拟版,也会存在跟物理硬盘的分区和扇区中类似的填充区域,我们可以利用这些填充区域来把我们需要隐藏的数据隐藏到里面去,这样可以避免隐藏的文件增加了 VMDK 文件的大小(如直接附加到文件后端),也可以避免由于 VMDK 文件大小的改变所带来的可能导致的虚拟机错误。而且 VMDK 文件一般比较大,适合用于隐藏大文件
-
磁盘镜像
自己电脑留足镜像文件的存储空间
利用kali工具(AutoPsy)或者其他磁盘镜像分析工具
找到密钥挂在,查看文件(包括隐藏文件)
数据恢复
例题:Rctf磁盘取证
有一个vmdk文件,用010打开报错
判断是否套壳
将vmdk文件右击选择,用7z打开压缩包
如果套壳里边就是真实文件,发现0.fat文件
用010打开0.fat文件发现中间部分有很多重复内容
rctf{unseCure_quick_form4t_vo1ume
veracryto挂载磁盘文件
使用veracryto挂载fat文件
选择盘符,选择文件点击加载,在弹出的框中输入密码rctf
成功挂载,本地就多了一个a盘,发现password2,注意的是同一个加密磁盘文件可以使用不同的密码挂载,挂载后的文件不一样
passowrd.txt
Password 2: RCTF2019 You're late... So sad
使用这个密码再次挂载,发现挂载后的a盘提示错误,使用winhex工具打开
有的会提示选择磁盘格式,按照文件格式选择即可
在中间部分发先剩下的flag
综合题目
例题1:
easy_dump.img
查看镜像信息
volatility -f .\easy_dump.img imageinfo
查看系统进程
volatility -f .\easy_dump.img --profile=Win7SP1x64 pslist
发现notepad进程
因为系统版本是win7所以看不了notepad的信息,但是可以将notepad进程提取出来
volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./
但是提取出来的直接用strings是无法查看的需要通过一下命令
strings -e l 2626.dmp | grep flag # 选择字符大小和排列顺序:s=7-bit, S=8-bit, {b,l}=16-bit, {B,L}=32-bit
可以用这种方法也可以用之前说的 editbox 命令代替 notepad,发现提示
使用命令找 jpg 文件
volatility -f easy_dump.img --profile=Win7SP1x64 filescan |grep -E 'jpg'
提取这张图片
volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./
使用 foremost 分离图片在 zip 文件夹发现 message.img
使用 file 命令查看文件类型为 ext2 磁盘文件
在linux系统中使用 mount 命令挂载此文件
root@kali:~/桌面/output/zip# file message.img message.img: Linux rev 1.0 ext2 filesystem data, UUID=c12b8ec9-5ef5-4b91-8b4d-f827e81f83cf (large files) root@kali:~/桌面/output/zip# mkdir test root@kali:~/桌面/output/zip# sudo mount message.img ./test root@kali:~/桌面/output/zip# cd test root@kali:~/桌面/output/zip/test# ls -al 总用量 271 drwxr-xr-x 4 root root 1024 9月 27 2018 . drwxr-xr-- 3 root root 4096 9月 16 03:16 .. -rw-r--r-- 1 root root 257163 9月 27 2018 hint.txt drwx------ 2 root root 12288 9月 27 2018 lost+found drwx------ 4 root root 1024 9月 27 2018 .Trash-0
cat hint.txt 文件,文件内容是两列数字,很像x,y坐标
使用 gnuplot 画图,发现二维码
使用QR Research工具得到一句话,维吉尼亚密码的key
Here is the vigenere key: aeolus, but i deleted the encrypted message。
查看那两个未查看的文件夹
发现 .swp 交换文件,web手都很熟悉这个文件,这个文件是因为使用vim编辑文件时意外中断产生的,可以恢复
vim -r ./message.swp
打开文件,文件内容
yise!dmsx_tthv_arr_didvi
解密得到flag
非预期解
例题2:层层取证
附件分为两部分
使用FTK挂载文件
选择路径(不要出现中文),将Mount Method 设置为Writable,点击Mount
在我的电脑中发现多了三个盘
仿真三法
-
花钱使用仿真工具,宏连
-
vmware仿真,看个人环境
-
转换法,曲线救国,vmware仿真
vmware 磁盘格式为 .VMDK 可以把题目给的磁盘文件转换成 vmdk 文件,然后导入 vmware
VMware方法
新建虚拟机->默认下一步->稍后安装操作系统->操作系统选择win7 x64->一直下一步->直到选择磁盘,使用物理磁盘
VMware中的设备
选择 FTK 挂载时的设备
之后的都是默认选择,开机时会经过自动设置,不用管就行
成功开机
转换法
格式转换方法
-
FTK 里面转成 img 格式
选择 create disk image
选择 image file ,下一步选择地址
点击 add,选择第一项 raw ,点击下一页,再次点击下一页
选择目的地址,image fragment size 改成 0,image filename随便填
会在指定目录生成 filename.img 文件
-
使用格式转换工具(StarWind V2V Converter)把 img 格式变成 vmdk
-
使用 VMware 新建虚拟机
一直默认选择即可,选择磁盘时选择 使用现有虚拟磁盘,接着默认选择即可
回到题目,开机之后两个用户,需要密码才能登陆
在 kali 中使用 volatility 分析题目给出的内存文件
volatility -f memdump.mem imageinfo
直接使用 mimikataz 插件 dump 密码
volatility -f memdump.mem --profile=Win7SP1x64 mimikatz # xiaoming_handsome
使用密码登录用户,桌面上有便签提示,这张小的在大的后面挡着
发现 F 盘无法访问
在物理机使用 winhex 打开磁盘文件,可以看到有个分区被上锁了
注意:因为磁盘需要一直处于挂载状态,FTK 不能退出
破解BitLocker加密磁盘
EFDD(Elcomsoft Forensic Disk Decryptor)工具,可以使用内存文件,破解加密磁盘
在虚拟机里边安装 EFDD
选择解密磁盘,点击下一步
解密出 BitLocker 密钥
下一步,复制密钥
使用 DiskGenuis 解锁
右键选择解锁,输入密钥
解密文件中发现 流量包
使用 wireshark 分析流量,追踪 udp 流 33流发现 rar 文件,保存打开提示输入密码,输入 word 文档密码 xiaoming1314,打开文档找到 flag
好卷。。。
人菜就要多复现
-
volatility内存取证
2022-02-07 21:02:30取证在CTF中占比越来越大,甚至某些比赛中misc全是取证。在之前的比赛中wha1e表示束手无策很难受,所以乘着实习摸鱼期间学习了一下。写在前面
取证在CTF中占比越来越大,甚至某些比赛中misc全是取证。在之前的比赛中本人表示束手无策很难受,所以乘着实习摸鱼期间学习了一下。
volatility适用场景
volatility常用于以下镜像文件的取证:raw、vmen、dmp、img。
volatility的安装
因为volatility安装并不复杂,且网上教程很多,所以简略带过。
1、git clone https://github.com/volatilityfoundation/volatility.git直接拉去github上面镜像。可能会出现要求安装依赖,跟着提示来就可以了。
2、https://www.volatilityfoundation.org/releases官网下载地址,下载对应安装包,打开安装目录终端python setup.py install进行安装未安装依赖报错(不影响volatility正常使用):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IpGkvxFO-1644239229095)(./picture/volatility未安装插件报错.png)]
全部依赖安装完毕后:
volatility一些基本命令
-h:**help。
-f:指定镜像。
imageinfo:用于获取当前镜像的基本信息。
pslist:用于枚举系统中的进程。主要包括偏移地址,进程PID,父进程ID号,线程数量,句柄数量,进程会话ID号以及进程开始和结束时间。psscan,可以展示所有父进程和子进程,以及隐藏的病毒。pstree可以展示树状图。
filescan:显示系统已经打开的文件,包括隐藏文件。
netscan:发现TCP/UDP端口和监听器。
**memdump:**将进程在内存中的所有页存入一个文件中。
**prcodump:**获取进程的可执行文件。
**–profile:**后接系统名。
**-p:**指定PID。
**-Q:**后接内存地址。
**-D/–dump-dir:**储存文件。,后接存储目录。
**-o:**后接注册表的virtual地址。
组合使用
1、查看系统镜像:
python vol.py -f 1.raw imageinfo
这个时候可以看到镜像的基本信息在获取了系统镜像文件之后,就在后面输入
--profile=系统名
系统名这里以Win7SP0x86为例,即接下来都为
python vol.py -f 1.raw --profile=Win7SP0x86
2、网上很多先举例进程,举例注册表之类的。wha1e表示先从简单的开始找,说不定有意外收获。
python vol.py -f 1.raw --profile=Win7SP0x86 filescan | grep "flag"
也可以替换成key,password,hint等关键信息试试看。
如果有发现flag等字眼,可以提取出来
python vol.py -f 1.raw --profile=Win7SP0x86 dumpfiles -Q 0x233666 --dump-dir=./
3、举例进程
python vol.py -f 1.raw --profile=Win7SP0x86 pslist
或者使用pstree
python vol.py -f 1.raw --profile=Win7SP0x860 pstree
提取进程
python vol.py -f 1.raw --profile=Win7SP0x86 memdump -p 332 -D ./
提取出dump文件后就可以对其进行查找,是否存在key,password,或者直接存在flag。如果都没有,接着寻找。
举个栗子
python vol.py -f 1.raw --profile=Win7SP0x86 pslist | find "chrome.exe"
可以列出所有chrome浏览器的进程,然后提取
常见Windows进程名
TrueCrypt.exe 磁盘加密工具notepad.exe 自带记事本mspaint.exe 自带画图工具iexplore.exe IE浏览器DumpIt.exe 内存镜像提取工具
4、举例注册表
python vol.py -f 1.raw --profile=Win7SP0x86 hivelist
提取注册表信息。
python vol.py -f 1.raw --profile=WinpSP0x86 hivedump -o 0x23333 -D ./
5、获取ie浏览器历史记录
python vol.py -f 1.raw --profile=Win7SP0x86 iehistory
wha1e表示以前碰到过几次浏览器取证的题目。
6、扫描图片的命令
python vol.py -f 1.raw --profile=Win7SP0x86 filescan | grep -E "jpg|png|jpeg|bmp|gif"
获取屏幕截屏
python vol.py -f 1.raw --profile=Win7SP0x86 screenshot --dump-dir=./
7、列举用户名以及密码
python vol.py -f 1.raw --profile=Win7SP0x86 printkey -K "SAM\Domains\Account\Users\Names"
获取最后登录用户的用户名以及密码
python vol.py -f 1.raw --profile=Win7SP0x86 printkey -K "SOFTWARE\Microsoft\Windows Nt\CurrentVersion\Winlogon"
8、查看cmd命令
python vol.py -f 1.raw --profile=Win7SP0x86 cmdscan
查看cmd详细情况
python vol.py -f 1.raw --profile=Win7SP0x86 cmdline
9、复制、剪切板
python vol.py -f 1.raw --profile=Win7SP0x86 clipboard
python vol.py -f 1.raw --profile=Win7SP0x86 dlllist -p 3820
例题实操
V&NCTF2020内存取证
题目链接https://buuoj.cn/match/matches/3/challenges
先查看一下系统镜像(这里配错图了)
试试有没有flag等字眼,没有。
查看进程
发现三个关键进程:mspaint.exe,notepad.exe,truecrypt.exe。这三项进程在上文均有介绍,分别为自带画图工具,自带记事本,磁盘加密工具。稍后依次进行分析。
mspaint.exe
修改后缀名为data通过gimp打开。
本人表示看到这种文件很头疼,完全无从下手,在通过广大的互联网学习之后,总算知道如何处理此类文件。先修改图片长宽,随便选一组比较常见且分辨率并不算高的参数。这里的初始参数选的是1280*720。然后改变位移,得到以下图片,疑似文字。
此时通过修改长宽将文字显现,最终通过改变位移完整展示图片内容如下所示:
改图为key上下翻转,翻过来后为:1YxfCQ6goYBD6Q。notepad.exe
对于notepad查找并不方便,这里推荐editbox插件,editbox插件可以显示有关编辑控件的信息。
因为原题链接已经停了,Buuctf直接提供了VOL。然后就需要用到Elcomsoft Forensic Disk Decryptor这个工具。
具体用法如下(如果没有截屏保持默认即可):
这里选择挂载该磁盘
挂载成功后打开即可获得最终key
然后用veracrypt挂载镜像,密码为刚才获得的key
uOjFdKu1jsbWI8N51jsbWI8N5
最后打开磁盘,使用mspaint获得的passwd解压压缩包,获取flag
验证一下
flag正确,比赛时间已过无法提交:D。小结
这题花费了我很多时间,最后还是靠wp复现出来的,质量很高,收获颇丰。个人感觉这篇wp在我所能搜索到的来说是最全面的了。本文主要为我学习取证的一个记录,有任何不足错误的地方欢迎联系我。路漫漫其修远兮,吾将上下而求索。volatility内存取证还有很多方面,后期将持续更新。
-
Hit:Linux在线内存取证平台(Live Memory Forensic Tools Based on Linux for Rapid Response)
2021-05-24 18:24:30Hit Linux在线内存取证平台(Live Memory Forensic Tools Based on Linux for Rapid Response) by Zing -
内存取证--
2022-01-11 22:38:40内存取证 取证文件后缀 .raw、.vmem、.img 常用命令(imageinfo,pslist,dumpfiles,memdump) 可疑的进程(notepad,cmd) 和磁盘取证结合起来考察 了解部分操作系统原理 常见文件后缀dmg,img volatility基础命令... -
浅析内存取证
2020-10-04 10:23:44MISC经常遇到取证分析的,而且在实战中系统取证也是非常重要的,利用这段时间学习一下。 什么是活取证 在主机存活时发现系统被入侵,然后直接把机器的运行内存dump下来,对运行内存进行分析,还原一些进程的中的信息... -
volatility内存取证命令合集
2018-01-10 21:50:57volatility内存取证命令合集,原版volatility内存取证CheatSheet,赶紧学习一波! -
内存取证复现
2022-01-11 21:26:21内存取证 取证文件后缀 .raw、.vmem、.img 常用命令(imageinfo,pslist,dumpfiles,memdump) 可疑的进程(notepad,cmd) 和磁盘取证结合起来考察 了解部分操作系统原理 常见文件后缀dmg,img volatility基础命令... -
内存取证_CTF
2021-09-15 09:34:32内存取证 获取内存镜像信息,获取系统版本 volatility -f 1.raw imageinfo 查看进程信息 volatility -f 1.raw --profile=WinXPSP2x86 pslist 留意可疑进程例如:cmd.exe(控制台) notepad.exe(记事本) ... -
浅析Volatility内存取证
2022-04-10 14:39:56浅析内存取证 volatility快速上手 Volatility是开源的Windows,Linux,Mac,Android的内存取证分析工具,由python编写成命令行操作,支持各种操作系统 -
内存取证习题复现
2022-01-10 10:51:53内存取证 取证文件后缀 .raw、.vmem、.img 常用命令(imageinfo,pslist,dumpfiles,memdump) 可疑的进程(notepad,cmd) 和磁盘取证结合起来考察 了解部分操作系统原理 常见文件后缀dmg,img volatility基础命令... -
aumfor:自动内存取证
2021-04-30 19:21:35## AUMFOR(自动内存取证) ##关于AUMFOR AUMFOR是自动内存取证工具,是基于GUI的工具,可通过自动执行所有复杂而繁琐的工作来帮助取证调查员,它还分析并提供有关使用恶意软件进行犯罪的可能性的最终准确报告。 ... -
内存取证
2017-10-26 00:52:21在冷启动后,利用专门定制的内核模块就能获取物理内存中残留的信息该方法尽管能够获取部分物理内存数据用于事后取证分析,但存在如下缺陷: ① 受环境温度影响大,易丢失信息;② 要求操作及时,实现较困难;③ -
CTF-内存取证
2021-12-13 16:51:49一道简单得CTF题,主要是内存取证方法 ![在这里插入图片描述](https://img-blog.csdnimg.cn/dfa0a8d28dcd4072973bb9b3f38e45e7.png?x-oss-process=image/watermark,type _d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5... -
内存取证-volattlity
2020-09-30 14:33:34Volatility是开源的Windows,Linux,MaC,Android的内存取证分析工具,由python编写成,命令行操作,支持各种操作系统。 项目地址: https://code.google.com/archive/p/volatility/ 安装: kali-bt5自带此工具 $ ... -
浅谈网络安全之内存取证
2020-11-17 21:02:23作为一种实时提取数字证据、对抗网络攻击、打击网络犯罪的有力武器,内存取证已成为信息安全领域研究者所共同关注的热点。 内存的获取方法: 基于硬件的内存获取基于软件的内存获取 Windows操作系统平台支持...