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)的主要内容,如果未能解决你的问题,请参考以下文章