内存分析实战:TJCTF 2018 - virusvolatile
本文最后更新于1630天前,其中的信息可能已经有所发展或是发生改变。

题目描述

这些天我的电脑似乎运行得很慢。我可能下载了病毒或其他东西。幸运的是,在坠毁之前我能抓住一些东西。

请提交整个小写标志(包括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

 

 

点击数:211

    暂无评论

    发送评论 编辑评论

    
    				
    |´・ω・)ノ
    ヾ(≧∇≦*)ゝ
    (☆ω☆)
    (╯‵□′)╯︵┴─┴
     ̄﹃ ̄
    (/ω\)
    ∠( ᐛ 」∠)_
    (๑•̀ㅁ•́ฅ)
    →_→
    ୧(๑•̀⌄•́๑)૭
    ٩(ˊᗜˋ*)و
    (ノ°ο°)ノ
    (´இ皿இ`)
    ⌇●﹏●⌇
    (ฅ´ω`ฅ)
    (╯°A°)╯︵○○○
    φ( ̄∇ ̄o)
    ヾ(´・ ・`。)ノ"
    ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
    (ó﹏ò。)
    Σ(っ °Д °;)っ
    ( ,,´・ω・)ノ"(´っω・`。)
    ╮(╯▽╰)╭
    o(*////▽////*)q
    >﹏<
    ( ๑´•ω•) "(ㆆᴗㆆ)
    😂
    😀
    😅
    😊
    🙂
    🙃
    😌
    😍
    😘
    😜
    😝
    😏
    😒
    🙄
    😳
    😡
    😔
    😫
    😱
    😭
    💩
    👻
    🙌
    🖕
    👍
    👫
    👬
    👭
    🌚
    🌝
    🙈
    💊
    😶
    🙏
    🍦
    🍉
    😣
    Source: github.com/k4yt3x/flowerhd
    颜文字
    Emoji
    小恐龙
    花!
    上一篇
    下一篇