您现在的位置是:首页 >技术杂谈 >OtterCTF---Memory Forensics内存取证(1-13)网站首页技术杂谈

OtterCTF---Memory Forensics内存取证(1-13)

小孔吃不胖 2024-06-14 17:18:18
简介OtterCTF---Memory Forensics内存取证(1-13)

一.OtterCTF 内存取证

CTF地址:

OtterCTF

国产化一下:

注册一下 登录就可以 (注:因为邮箱不验证,随意搞个就可以): 

1 - What the password? 

第一题:

国产化: 

 下载OtterCTF.7z的压缩包:

 是OtterCTF.vmem镜像文件

volatility介绍
        Volatility是一款非常强大的内存取证工具,它是由来自全世界的数百位知名安全专家合作开发的一套工具, 可以用于windows,linux,mac osx,android等系统内存取证。Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。

volatility工具的基本使用
命令格式

volatility -f [image] --profile=[profile] [plugin]

在分析之前,需要先判断当前的镜像信息,分析出是哪个操作系统

volatility -f xxx.vmem imageinfo

如果操作系统错误,是无法正确读取内存信息的,知道镜像后,就可以在--profile=中带上对应的操作系统

常用插件

下列命令以windows内存文件举例

查看用户名密码信息

volatility -f 1.vmem --profile=Win7SP1x64 hashdump

查看进程

volatility -f 1.vmem --profile=Win7SP1x64 pslist

查看服务

volatility -f 1.vmem --profile=Win7SP1x64 svcscan

查看浏览器历史记录

volatility -f 1.vmem --profile=Win7SP1x64 iehistory

查看网络连接

volatility -f 1.vmem --profile=Win7SP1x64 netscan

查看命令行操作

volatility -f 1.vmem --profile=Win7SP1x64 cmdscan

查看文件

volatility -f 1.vmem --profile=Win7SP1x64 filescan

查看文件内容

volatility -f 1.vmem --profile=Win7SP1x64 dumpfiles -Q 0xxxxxxxx -D ./

查看当前展示的notepad内容

volatility -f 1.vmem --profile=Win7SP1x64 notepad

提取进程

volatility -f 1.vmem --profile=Win7SP1x64 memdump -p xxx --dump-dir=./

屏幕截图

volatility -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./

查看注册表配置单元

volatility -f 1.vmem --profile=Win7SP1x64 hivelist

查看注册表键名

volatility -f 1.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a001032410

查看注册表键值

volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "xxxxxxx"

查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等。

volatility -f 1.vmem --profile=Win7SP1x64 userassist

最大程序提取信息

volatility -f 1.vmem --profile=Win7SP1x64 timeliner

windows:

1.查看操作系统

volatility_2.6.exe -f OtterCTF.vmem imageinfo

 2.查看密码

首先hash

volatility_2.6.exe -f OtterCTF.vmem --profile=Win7SP1x64 hashdump

518172d012f97d3a8fcc089615283940 这串哈希估计是解不出来,太复杂了。。。

   

 换个方法: lsadump模块提取密码:

volatility_2.6.exe -f OtterCTF.vmem --profile=Win7SP1x64 lsadump

 flag:CTF{MortyIsReallyAnOtter}

kali:同理:

系统信息

vol.py -f OtterCTF.vmem imageinfo 

 hash哈希

vol.py -f OtterCTF.vmem --profile Win7SP1x64 hashdump

 lasdump密码

vol.py -f OtterCTF.vmem --profile Win7SP1x64 lsadump 

 mimikatz这个也可以查看明文,不过我没成功 ,不知道啥原因 可能是python2的问题。。。

 提交flag:

2.General Info

国产化: 

 PC的ip和名称:

查看网络连接:

volatility_2.6.exe -f OtterCTF.vmem --profile=Win7SP1x64 netscan

 kali:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 netscan

 虽然IP挺多的,但ip应该是192.168.202.131(因为就这一个像)

CTF{192.168.202.131}

查看主机名称:

查看注册表:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 hivelist

看到system 

主机名信息在system的那一条记录中

查看注册表键名

-o + 地址 printkey 来查看指定的记录 

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey

 然后就是步步跟进了:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001"

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001Control"

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001ControlComputerName"

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001ControlComputerNameComputerName"

 运气较好 第一个直接试出来:

CTF{WIN-LO6FAF3DTFE}

3.Play Time

 国产化:

 游戏名称和服务器ip:

查看进程: 

vol.py -f OtterCTF.vmem --profile Win7SP1x64 pslist 

好多,盲猜吧。。。 

 LunarMS.exe,可以搜索一下,发现是个游戏。。。

 用netscan查出ip地址

vol.py -f OtterCTF.vmem --profile Win7SP1x64 netscan

 在这:

CTF{LunarMS}

CTF{77.102.199.102}

 4. Name Game

 国产化:

 已知这个账户登录到称为Lunar-3的频道,找出账户名。

把OtterCTF.vmem搞到WinHex做分析:

先搜索Lunar-3

 后面有一段字符串:

使用strings命令加上grep搜索,-C 5表示查找前后5条记录,同样可以找到可疑字符串 

 strings OtterCTF.vmem|grep Lunar-3 -C 5  

 

CTF{0tt3r8r33z3}

5.Name Game 2

 看着还是围绕LunarMS这进程来的:

先提取进程:D保存当前目录就可以

vol.py -f OtterCTF.vmem --profile Win7SP1x64 memdump -p 708 -D ./

进程号PID可以看前面的pslist:

先分析题目十六进制数值:

0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2}
分析:0x 十六进制的标志    {6-8} {18} {2}间隔位数
64 ?? {6-8}未知 40 06 ?? {18} 5a 0c 00 {2} 
只能搜索 5a 0c 00 好找一些

Winhex工具: 

打开708.dmp 先搜索5a 0c 00 

慢慢找。。。。。出来了M0rtyL0L 

 这里也能查出来M0rtyL0L  不过旁边十六进制与题目所给的对不起来。。。

kali同样也可以

hexdump命令:-A -B是指定列数

hexdump -C 708.dmp | grep "5a 0c 00" -A 3 -B 3

 找到:

还有这:

 CTF{M0rtyL0L} 

6.Silly Rick

 

找rick的电子邮件密码 :

题目说他总是复制并粘贴密码

那我们就查看粘贴板:

 vol.py -f OtterCTF.vmem --profile Win7SP1x64 clipboard                                                          

CTF{M@il_Pr0vid0rs} 

7.Hide And Seek

 

找到恶意软件进程名称(包括扩展名)

PID和PPID:

进程PID是当操作系统运行进程时系统自动为其分配的标识符,具有唯一性,且为非零整数。一个PID只会标识一个进程。

PPID代表的是父进程的PID,即父进程相应的进程号。当一个进程被创建时,创建它的那个进程会被称作为父进程,而子进程将以PPID指出它的父进程。

查看进程:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 pslist

 查看进程发现一个名为Rick And Morty的进程与题目对应

而且vmware-tray.ex进程,PPID比PID还大 估计是。

 查看cmd历史命令:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 cmdline  

查看该进程的进程命令参数,发现Rick And Morty下载了vmware-tray.exe,默认下载路径在RarSFX目录下,并执行了它:

 dlllist查看一下进程相关的dll文件列表

 vol.py -f OtterCTF.vmem --profile Win7SP1x64 dlllist -p 3720

 CTF{vmware-tray.exe}

8.Path To Glory

这题意有点不明确。。。

恶意软件是如何进入 rick 的 PC 的?应该是下载的某个文件。

filescan找一下这个文件

vol.py -f OtterCTF.vmem --profile Win7SP1x64 filescan|grep 'Rick And Morty'

 一共三个exe和三个种子文件,我们要分析来源就要关注种子文件,里面可能放着地址信息:

先保存 在用strings命令 字符串查看文件:

可惜第一个和第二个都没有flag信息:

0x000000007dae9350 第二个 这个有信息:

//保存
vol.py -f OtterCTF.vmem --profile Win7SP1x64 dumpfiles -Q 0x000000007dae9350 -D ./
//查看
strings file.None.0xfffffa801b42c9e0.dat 

CTF{M3an_T0rren7_4_R!ck} 

9. Path To Glory 2

 让我们继续。。。

没头绪了,看大佬的文章吧。

torrent文件是通过web浏览器下载的 先将所有的chrome进程转储下来:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 memdump -n chrome.exe  -D ./chrome

strings ./chrome/* | grep 'Rick And Morty season 1 download.exe' -C 10  

 在这:

 过程中发现了flag.txt 可能后面的关卡会用到

 CTF{Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@in}

10.Bit 4 Bit

 

找攻击者的地址

两个方法: 

vmware-tray.exe pid 3720 

将恶意软件转储出来:

知识点: 要把内存中某个进程给dump出来,一般有两种方式

memdump:以dmp格式保存
procdump:直接提取

vol.py -f OtterCTF.vmem --profile Win7SP1x64 procdump -p 3720  -D ./kiss 

使用IDA Pro进行分析 打开executable.3720.exe

 方法二:

通过匹配

strings -e l OtterCTF.vmem | grep -i -A 5 "ransomware"

 CTF{1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M}

11.Graphic's For The Weak

 

分离文件: 

foremost kiss/executable.3720.exe -v

foremost kiss/executable.3720.exe -o odic
-o 分离到odic目录

 

 查看

 CTF{S0_Just_M0v3_Socy}

12.Recovery

 

加密文件的随机密码:

IDA查看带有password的函数:

发现有computerName+"-"+userName+" ",也就是WIN-LO6FAF3DTFE-Rick

strings命令查看:

-a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
-f –print-file-name:在显示字符串前先显示文件名
-n –bytes=[number]:找到并且输出所有NUL终止符序列
- :设置显示的最少的字符数,默认是4个字符
-t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制
-o :类似--radix=o
-T --target= :指定二进制文件格式
-e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
@ :读取中选项

还要带上参数-e,要以16-bit寻找,即-el-eb,不然找不到。 

strings -eb OtterCTF.vmem | grep WIN-LO6FAF3DTFE-Rick 

 CTF{aDOBofVYUNVnmp7}

13.Closure

 最后一题了 解密rick的文件:

前面好像找到了一个flag.txt

在查找一下吧:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 filescan|grep -i 'flag'  

 应该是第二个 提取到kiss目录下:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 dumpfiles -Q 0x000000007e410890 -D ./kiss

cat查看 被加密了 

 命令行把带有0字节的删除 然后保存到flag2.png.lockad

hexdump查看一下 还是没有发现flag

tr < file.None.0xfffffa801b0532e0.dat -d '00' > flag2.png.locked

hexdump -C flag2.png.locked   

 这时需要工具:

已知这个勒索软件为HiddenTear,直接在网上找到解密程序HiddenTearDecrypter

 winhex操作:

shift+delete删除:

 删除成功

 

 改名flag.png.locked

HiddenTearDecrypter:

密钥就是12题的flag  aDOBofVYUNVnmp7

当然,也可以破解:

 就是有亿点点慢。。。。。

 还是直接填密钥吧:

代表成功: 

 

 flag.png.locked变成了falg.png

 

打开是损坏的:

改成flag.txt 查看:

  Winhex查看:

 CTF{Im_Th@_B3S7_RicK_0f_Th3m_4ll}

 总结:

        到此 13关全部完成,主要用到的就是volatility工具和一些查看16进制的工具,Winhex,还有逆向IDA反编译查询,最后的HiddenTear勒索病毒,大家要了解,现在已经可以破解密钥了,还有就是一些基本的kali的查询和工具命令要掌握。

推荐博客:

内存取证-volatility工具的使用 (史上更全教程,更全命令)_路baby的博客-CSDN博客

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。