题目描述
这些天我的电脑似乎运行得很慢。我可能下载了病毒或其他东西。幸运的是,在坠毁之前我能抓住一些东西。
请提交整个小写标志(包括tjctf {})的md5哈希,而不是实际提交标志。
imageinfo 拿配置文件
内存分析第一遍,imageinfo直接上
mondayice@mondayice-Precision-3510:~/桌面/CTF_BOX/CTF_race/2018 TJCTF Volatile Virus$ volatility -f file_patched.dmp imageinfo Suggested Profile(s) : Win7SP1x86_23418, Win7SP0x86, Win7SP1x86_24000, Win7SP1x86 (Instantiated with WinXPSP2x86)
从下载入手!
通过查找进程树,能够找到chrome和py。
mondayice@mondayice-Precision-3510:~/桌面/CTF_BOX/CTF_race/2018 TJCTF Volatile Virus$ volatility -f file_patched.dmp --profile=Win7SP1x86_23418 pstree Volatility Foundation Volatility Framework 2.6 Name Pid PPid Thds Hnds Time -------------------------------------------------- ------ ------ ------ ------ ---- 0x860b33a8:explorer.exe 2292 2276 48 1248 2018-08-06 03:13:12 UTC+0000 . 0x86139d20:chrome.exe 3968 2292 35 1264 2018-08-06 03:14:13 UTC+0000 .. 0x850d0d20:chrome.exe 3500 3968 6 143 2018-08-06 03:16:00 UTC+0000 . 0x8506b030:python.exe 2976 2292 1 58 2018-08-06 03:15:14 UTC+0000
既然是下载,那就是找下载的文件夹了,一般windows下载的内容都放在 Download 文件夹中。
mondayice@mondayice-Precision-3510:~/桌面/CTF_BOX/CTF_race/2018 TJCTF Volatile Virus$ volatility -f file_patched_tjctf.dmp --profile=Win7SP1x86_23418 filescan | grep Downloads [...LOT OF FIIIIIILES...] 0x000000000e080690 8 0 RW---- \Device\HarddiskVolume1\Users\IEUser\Downloads\keylogger.py [...LOT OF FIIIIIILES...]
OK 找到了一个 keylogger.py 把它导出来
mondayice@mondayice-Precision-3510:~/桌面/CTF_BOX/CTF_race/2018 TJCTF Volatile Virus$ volatility -f file_patched.dmp --profile=Win7SP1x86_23418 dumpfiles -D ./ -Q 0x000000000e080690
我们来看看这个键盘记录文件,前面的不重要重要的是这个路径
... def on_key_up(event): key_combo = get_key_combo_code() key_clicks.append(key_combo) pickle.dump(key_clicks, open('C:\\Users\\IEUser\\AppData\\Local\\Temp\\logs.pkl', 'wb')) keys_held.remove(event.Key) return True hm = pyHook.HookManager() hm.KeyDown = on_key_down hm.KeyUp = on_key_up hm.HookKeyboard() pythoncom.PumpMessages()
键盘记录文件恢复
0x000000000f275d50 3 0 R--rwd \Device\HarddiskVolume1r\AppData\Local\Temp\logs.pkl 0x00000000185883d8 8 0 -W-rw- \Device\HarddiskVolume1\Users\IEUser\AppData\Local\Temp\logs.pkl 0x00000000decc23d8 8 0 -W-rw- \Device\HarddiskVolume1\Users\IEUser\AppData\Local\Temp\logs.pkl
通过正则可以找到这个文件,把它dump下来。百度以下pkl文件的读取方法,得知python有一个库能够解析它
>>> import pickle >>> data = pickle.load(open('logs.pkl', 'rb')) >>> print(data) ['W', 'W', 'W', 'Oem_Period', 'G', 'O', 'O', 'G', 'L', 'E', 'Oem_Period', 'C', 'O', 'M', 'Return', 'W', 'J', 'A', 'Back', 'Back', 'H', 'H', 'A', 'T', 'Back', 'Back', 'Back', 'A', 'T', 'Space', 'I', 'S', 'Space', 'A', 'Space', 'C', 'T', 'F', 'Return', 'T', 'J', 'C', 'T', 'F', 'Oem_Period', 'O', 'R', 'G', 'Return', 'Lcontrol+L', 'Lcontrol', 'G', 'O', 'O', 'G', 'L', 'E', 'Oem_Period', 'C', 'O', 'M', 'Return', 'H', 'O', 'W', 'Space', 'T', 'O', 'Space', 'G', 'E', 'T', 'Space', 'G', 'O', 'O', 'D', 'Space', 'A', 'T', 'Space', 'F', 'O', 'R', 'T', 'I+N', 'I', 'T', 'E', 'Return', 'Lcontrol+L', 'Lcontrol', 'W', 'H', 'O', 'Space', 'I', 'S', 'Space', 'N', 'I', 'N', 'J', 'A', 'Return', 'Lcontrol+L', 'Lcontrol', 'W', 'H', 'Y', 'Space', 'D', 'O', 'E', 'S', 'Space', 'N', 'I', 'N', 'J', 'A', 'Space', 'H', 'A', 'V', 'E', 'Space', 'L', 'I', 'G', 'M', 'A', 'Return', 'Lcontrol+L', 'Lcontrol', 'L', 'I', 'G', 'M', 'A', 'Return', 'Lcontrol+L', 'Lcontrol', 'G', 'O', 'O', 'G', 'L', 'E', 'Oem_Period', 'C', 'O', 'M', 'Return', 'Lwin+R', 'Lwin', 'T', 'Back', 'N', 'O', 'T', 'E', 'P', 'A', 'D', 'Return', 'P', 'U', 'B', 'L', 'I', 'C', 'Space', 'S', 'T', 'A', 'T', 'I', 'C', 'Space', 'V', 'O', 'I', 'D', 'Space', 'Oem_4+Rshift', 'Rshift', 'Return', 'Return', 'Oem_6+Rshift', 'Rshift', 'Up', 'Return', 'Return', 'Up', 'Tab', 'P', 'Back', 'A+Lcontro ....
好吧,这些内容其实并不可读,我并没有在网上找到一个还算可行的脚本来分析它。只能自己来读取了。我注意到里面有 TJCTF这几个字,很明显能够读到些有用的东西,解析下来是这样的。
'TJCTF.ORG', 'TJCTF{TH1S_1S_N0T_A_V1RU5_',
至于别的内容,WP把它解析出来了,可以去看看原来的wp。我大概就自己做到了这里。
下载了什么?
在之前的下载目录中,除了这个键盘记录的东西外,还有一些乱七八糟的东西,这些是突破口。原生的volatility并不能完成这些操作。需要加载插件Superponible
- Chrome插件介绍:https://blog.superponible.com/2014/08/31/volatility-plugin-chrome-history/
- GitHub地址:https://github.com/superponible/volatility-plugins
利用这个插件,可以导出一个csv文件,方便来查阅内容
mondayice@mondayice-Precision-3510:~/桌面/CTF_BOX/CTF_race/2018 TJCTF Volatile Virus$ volatility --plugins=<插件目录>/volatility/plugins -f file_patched_tjctf.dmp --profile=Win7SP1x86_23418 chromedownloads --output csv > data.csv
这样就可以得到所有经由网络下载到本地的文件。打开这个CSV,确实非常的...头疼
仔细看能够看到有个文件的内容是以}结尾的,当文件通过文件大小升序排列的时候,它在最末尾。也就意味着当把文件名按照文件大小的顺序提取后,就是flag的后半部分了。
对此,把文件名粘帖到txt里面,替换到一些多余的内容就拿到了flag的后半部分。
>> D73C00EDD0C6F9FD2D9ED2D9E80CBDBE1C494A699E87AAB38B7139DE0B284581C8042C8042C968C5BA5571568EA7037A7037A70375603AF425A238823F6951FA712EEA8B0A9173830C113E76E08FBA833F47BE2CDB2DD8089A9206910445CD445CD445CDA7DFE792C18C4F4FE6B8AF4A560291E09832AC882AC88112E8ED80DED80DED80D02F601D21850D6CF3FBC5CD90D6A89396172757E3F6A6DE516C94491CB1C0A3146C45AB85B669F38D4297BA58CC8B91792F1A51491867D3D0E8401319E8A4812F501F5701F57E3CCD0FB71521B6BD86F3ACBB2E887181F0E71C20F32DC65BC5BEC8C1728BC391CEECF8530A3864C86B545F5ECDA182941F9C27CC11B53FB9865E7D2730A42B8A87854}
将两个内容拼起来MD5即可
getflag
$ echo -n 'tjctf{th1s_1s_n0t_a_v1ru5_D73C00EDD0C6F9FD2D9ED2D9E80CBDBE1C494A699E87AAB38B7139DE0B284581C8042C8042C968C5BA5571568EA7037A7037A70375603AF425A238823F6951FA712EEA8B0A9173830C113E76E08FBA833F47BE2CDB2DD8089A9206910445CD445CD445CDA7DFE792C18C4F4FE6B8AF4A560291E09832AC882AC88112E8ED80DED80DED80D02F601D21850D6CF3FBC5CD90D6A89396172757E3F6A6DE516C94491CB1C0A3146C45AB85B669F38D4297BA58CC8B91792F1A51491867D3D0E8401319E8A4812F501F5701F57E3CCD0FB71521B6BD86F3ACBB2E887181F0E71C20F32DC65BC5BEC8C1728BC391CEECF8530A3864C86B545F5ECDA182941F9C27CC11B53FB9865E7D2730A42B8A87854}' | md5sum 0be1ffc97da3488ae7f25bcbf966cb73
点击数:214