OtterCTF 内存取证(1-5)

Posted z.volcano

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OtterCTF 内存取证(1-5)相关的知识,希望对你有一定的参考价值。

这个系列共有13道题,一共只有第一题给了一个附件,后面的所有题目都是基于这一个文件。

关于解题中用到的各种指令的作用,建议自行去官网查询

1 - What the password?

you got a sample of rick’s PC’s memory. can you get his user password?
format: CTF{…}

先分析镜像:python vol.py -f OtterCTF.vmem imageinfo

得知系统版本为Win7SP1x64

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 (/home/volcano/桌面/volatility-master/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

因为这题是要找密码,所以直接hashdump
python vol.py -f OtterCTF.vmem --profile=Win7SP1x64 hashdump

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Rick:1000:aad3b435b51404eeaad3b435b51404ee:518172d012f97d3a8fcc089615283940:::

这里得到的518172d012f97d3a8fcc089615283940没解出来,试试用lsadump,这个模块也是用来提取密码的

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

在这里插入图片描述
所以这关的flag:CTF{MortyIsReallyAnOtter}

2 - General Info

Let’s start easy - whats the PC’s name and IP address?
format: CTF{flag}

找ip地址,netscan先走一波:python vol.py -f OtterCTF.vmem --profile=Win7SP1x64 netscan

发现192.168.202.131多次重复出现
在这里插入图片描述
这个就是要找的ip,即第一个flag:CTF{192.168.202.131}

还需要我们找到主机名,那就用hivelist看一下注册表信息,看到了system
在这里插入图片描述
本来想用hivedump导出的,结果东西太多了跑了好久,所以换printkey一步步来,这个指令可以列举用户及密码
在这里插入图片描述
后面就是慢慢翻了,最后成功拿到主机名

python vol.py -f OtterCTF.vmem --profile=Win7SP1x64  -o 0xfffff8a000024010 printkey -K "ControlSet001\\Control\\ComputerName\\ComputerName"

在这里插入图片描述
flag:

CTF{192.168.202.131}
CTF{WIN-LO6FAF3DTFE}

3 - Play Time

Rick just loves to play some good old videogames. can you tell which game is he playing? whats the IP address of the server?
format: CTF{flag}

需要找出Rick玩的游戏名和对应的ip地址,还是刚才用过的netscan指令
在这里插入图片描述
注意到这里的LunarMS,google一下发现是一款游戏(百度没找到),不过这里没有显示ip地址,往上面翻一下得到对应的ip地址
在这里插入图片描述
flag:

CTF{LunarMS}
CTF{77.102.199.102}

4 - Name Game

We know that the account was logged in to a channel called Lunar-3. what is the account name?
format: CTF{flag}

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

这个Lunar-3在前几题操作的时候没见过,试试直接搜一下。

不过直接grep查找的话,只能找到两个单独的Lunar-3字符串,除此之外得不到任何其他有效信息。
这里加两个参数,可以打印出目标字符串前后的信息。

-A<显示行数>--after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-B<显示行数>--before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。

我这里把两个对应Lunar-3前后五行的数据也打印出来了。
在这里插入图片描述
注意到前一个附近有几个可能是账户名的字符串,挨个尝试得到flag:CTF{0tt3r8r33z3}

5 - Name Game 2

From a little research we found that the username of the logged on character is always after this signature: 0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2} What’s rick’s character’s name?
format: CTF{…}

寻找游戏里的角色名,看题目名字就知道和上题一样,还是围绕着LunarMS这个进程来的。

我先把LunarMS.exe给dump出来

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

再把得到的708.dmp扔到winhex里,结合题目中给的提示:0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2} ,搜索一下,最后找到M0rtyL0L
在这里插入图片描述
这题写脚本找位置会更快一点。

flag:CTF{M0rtyL0L}

以上是关于OtterCTF 内存取证(1-5)的主要内容,如果未能解决你的问题,请参考以下文章

OtterCTF 内存取证(6-9)

OtterCTF 内存取证(6-9)

OtterCTF 内存取证(10-13)

OtterCTF 内存取证(10-13)

CTF取证总结(内存取证,磁盘取证)以及例题复现

[内存取证]Volatility基本用法