OtterCTF 内存取证(10-13)
Posted z.volcano
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OtterCTF 内存取证(10-13)相关的知识,希望对你有一定的参考价值。
10 - Bit 4 Bit
We’ve found out that the malware is a ransomware. Find the attacker’s bitcoin address.
恶意软件其实是一个赎金软件,需要从中找到钱包地址。
先把恶意文件给dump出来
python vol.py -f OtterCTF.vmem --profile=Win7SP1x64 procdump -p 3720 -D ./
这里有一个知识点,要把内存中某个进程给dump出来,一般有两种方式
memdump:以dmp格式保存
procdump:直接提取
因为要从软件中找东西,最好还是直接提取出来再分析。
接着用ida打开,在这个位置翻到一串字符
flag:CTF{1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M}
11 - Graphic’s For The Weak
There’s something fishy in the malware’s graphics.
需要从上题得到的dmp文件中找到图片,其实直接foremost就可以
flag:CTF{S0_Just_M0v3_Socy}
12 - Recovery
Rick got to have his files recovered! What is the random password used to encrypt the files?
要恢复文件,需要知道用于加密的随机密码,这个密码和加密程序应该都在恶意软件里,继续用ida分析第10题dump出的文件。
注意到这里有加密、创建密码、发送密码、加密文件四个过程
在看sendpassword时,没有发现明文密码,但是注意到这里用到了computerName+"-"+userName+" "
,也就是WIN-LO6FAF3DTFE-Rick
这个肯定和密码相关,在vmem文件中strings一下,同时要带上参数,不然找不到
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 130 ⨯
WIN-LO6FAF3DTFE-Rick aDOBofVYUNVnmp7
flag:CTF{aDOBofVYUNVnmp7}
13 - Closure
Now that you extracted the password from the memory, could you decrypt rick’s files?
在上一题中已经获得了密码aDOBofVYUNVnmp7
,这题让我们解密文件。
在前面用ida分析时,多次出现Desktop
,猜想被加密的文件就放在桌面
先看一下桌面有哪些文件
把Flag.txt
给dump出来,得到对应dat文件
百度一下就可以知道这个恶意软件其实就是hidden-tear全球首款开源勒索软件
。
可以用HT Brute Forcer
进行解密,使用教程可以参考这个。
解密前先把dat文件后面多余的0去掉,再改文件名为1.png.locked
过程略过,就是用HiddenTear Bruteforcer
跑出秘钥,再用hidden-tear-decrypter
破解并解密。
打开解密后的文件得到flag:CTF{Im_Th@_B3S7_RicK_0f_Th3m_4ll}
以上是关于OtterCTF 内存取证(10-13)的主要内容,如果未能解决你的问题,请参考以下文章