CPPUISA 電子數據取證 秋季復健訓練賽 做題情況


簽到

拿到一個壓縮鏡像 image_forensic.e01 ,用 X-ways 打開沒有發現文件系統,但是原始鏡像數據首部有 bcache24.bmp 字符串

查了一下這是什么文件,得知是 Windows 遠程桌面協議的位圖緩存(RDP Bitmap Chache)

合天智匯:Windows 取證之BMChache

了解原理后首先下載工具 bmc-tools.py

將原始鏡像數據 0x512 開始到連續 0x00 的數據 dump 出來,命名為 bcache24.bmp

使用命令 python bmc-tools.py -s "C:\Users\harve\Desktop\bcache24" -d "C:\Users\harve\Desktop\Cache" 解析

在一張位圖中找到 flag

flag{RdP_I3av3s_Trac3s}

超級簡單內存取證

volatility2.6: 嘗試查找 png 圖片,發現 I'm here.png,並導出

D:\鏡像\CPPUIA 秋季訓練賽\超級簡單內存取證>vola -f memory.raw --profile=Win7SP1x64 filescan | findstr png
Volatility Foundation Volatility Framework 2.6
0x000000007d550ae0     16      0 R--rw- \Device\HarddiskVolume1\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\WebResources\Resource0\static\images\core_icons.png
0x000000007d553dd0     16      0 R--rw- \Device\HarddiskVolume1\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\WebResources\Resource0\static\js\plugins\aicuc\images\rhp_world_icon.png
0x000000007d71b1d0      2      0 R--r-d \Device\HarddiskVolume1\Users\I'm hidden.WIN-VJ4BGD4ID7K\Downloads\I'm here.png

D:\鏡像\CPPUIA 秋季訓練賽\超級簡單內存取證>vola -f memory.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000007d71b1d0 -D . -u
Volatility Foundation Volatility Framework 2.6
DataSectionObject 0x7d71b1d0   None   \Device\HarddiskVolume1\Users\I'm hidden.WIN-VJ4BGD4ID7K\Downloads\I'm here.png

修改文件后綴查看圖片文件,是一個二維碼,掃碼后獲得 flag 的后半部分 OD_iN_ch3mI$7ry}

查看剪貼板數據

D:\鏡像\CPPUIA 秋季訓練賽\超級簡單內存取證>vola -f memory.raw --profile=Win7SP1x64 clipboard
Volatility Foundation Volatility Framework 2.6
Session    WindowStation Format                         Handle Object             Data
---------- ------------- ------------------ ------------------ ------------------ --------------------------------------------------
         1 WinSta0       0xc009L                       0x702c3 0xfffff900c1e88260
         1 WinSta0       CF_TEXT                  0x7400000001 ------------------
         1 WinSta0       CF_UNICODETEXT                0xb0203 0xfffff900c2b03b70 C:\Progrom Files\Comonn ...\en-US\You found me.pdf
         1 WinSta0       CF_TEXT                           0x0 ------------------
         1 WinSta0       0xc013L                       0x40155 0xfffff900c2b47660
         1 WinSta0       CF_TEXT                           0x1 ------------------
         1 ------------- ------------------            0x802bb 0xfffff900c1e05410

發現一個 You found me.pdf 然而 filescan 里面找不到這個文件,考慮文件名被修改

vola -f memory.raw --profile=Win7SP1x64 filescan | findstr en-US

找到一行

0x000000007d681aa0 16 0 R--r-- \Device\HarddiskVolume1\Program Files\Comonn Files\Systam\en-US\log5413741

導出這個 log5413741 ,查看文件頭確認是 pdf 文件,修改擴展名后打開

內容略,在參考文獻處找到一個短網址鏈接,打開后下載一個 zip 文件並解壓

一張 png 圖片,第一個字節由 0x89 被修改成了 0x25,修正后成功打開,獲得 flag 的前半部分 TMUCTF{M@y8e_1_@M_6o

TMUCTF{M@y8e_1_@M_6oOD_iN_ch3mI$7ry}

my new keyboard

題目描述

我買了新鍵盤,快遞到達之后,快遞單上面寫着的發貨地居然是法國

flag位於/tmp/flag,祝你好運 😄

hint:/dev/input/event0

以上內容比較重要!

/dev/input 是一個 Linux 目錄,包含鼠標、鍵盤、手柄等各種輸入設備的事件文件,

以當前鍵盤對應的 event1 為例,終端下 cat /dev/input/event1 可以查看輸入事件

起始是空白的,在案件后會輸出一行行包含不可見字符的字節流,考慮是附件文本 base64 解碼的結果

於是需要查找每個字節流串與對應鍵位的對應表,由於我的 Bash 在 setxkbmap fr 后無法正常使用命令,略了

就是學習到了 /dev/input/event 文件的相關性質

Easy MacOS

在 Mac 文件系統中找到自動登錄密碼設置文件 /etc/kcpassword 導出后使用腳本 decode-kcpassword.py 還原出系統登錄密碼 f0r3ns1ccl4v13

chainbreaker 是一個能通過開機密碼獲取 Mac 密鑰串中各軟件密碼的工具

下載后使用 python2 ./chainbreaker.py --password=f0r3ns1ccl4v13 -a login.keychain-db

2021-09-13 19:42:26,533 - INFO -        [+] Generic Password Record
2021-09-13 19:42:26,535 - INFO -         [-] Create DateTime: 2019-04-15 12:07:15
2021-09-13 19:42:26,535 - INFO -         [-] Last Modified DateTime: 2019-04-15 12:07:15
2021-09-13 19:42:26,535 - INFO -         [-] Description:
2021-09-13 19:42:26,535 - INFO -         [-] Creator:
2021-09-13 19:42:26,535 - INFO -         [-] Type:
2021-09-13 19:42:26,535 - INFO -         [-] Print Name: gmail
2021-09-13 19:42:26,535 - INFO -         [-] Alias:
2021-09-13 19:42:26,536 - INFO -         [-] Account: chrmforensic@gmail.com
2021-09-13 19:42:26,536 - INFO -         [-] Service: gmail
2021-09-13 19:42:26,536 - INFO -         [-] Password: ihateapple89

獲得 Gmail 的密碼 ihateapple89

flag{9e17dcbb0c89f9d2602f447dd08a175de68cb737a46a4c77dd8387c4c47787ac}

日志分析

日志文件包含被 base64 編碼的 SQL 語句,有用到以下函數:

sql函數 的 SQL FIELD()函數

sql函數 的 SQL BIN(N)函數

sql函數 的 SQL ASCII(str)函數

sql函數 的 SQL SUBSTRING()函數

首先將 GET 請求的 order 字段 base64 解碼,出來是一段挺長的 SQl 語句,以第一條為例,大意是:

取 password 首位字符的 ASCALL 碼轉換成二進制后的第一位 與 首位字符的 ASCALL 碼轉換成二進制后的第二位拼接

與 '00', '01', '10', '11' 下標對應,若為 '00',field 值為 1,不延時,若為 '01',field 值為 2,延時 2s,其余類推

由於延時情況在日志中可見,每一條這樣的語句我們都可以確定 password 中某字符的兩個 bit

每四條語句(2+2+2+1,對於可見 ASCALL 字符首 bit 為 0,只需要 7 位)可以還原出一個字符的原貌

手寫腳本解密,使用到了 re 和 time 模塊匹配時間,詳見代碼注釋

import re
import time
pre = -1; now = ''
diff = []; passwd = []
table = ['00','','01','','10','','11'] # table 對應對應的延遲
f = open('ch13.txt', 'r')
for line in f.readlines():
    #print (line, end='')
    sft = re.search('\[.+\]', line)[0]
    stamp = time.mktime(time.strptime(sft,'[%d/%b/%Y:%H:%M:%S +0200]'))
    if (pre != -1):
        diff.append(int(stamp - pre)) # 計算延時並保存到 diff
    pre = stamp

for idx in diff:
    if (len(now) == 6): # 特殊處理第 7 位
        now += '0' if idx == 2 else '1' 
        passwd.append(chr(int(now, 2))) # 先將 Bin 串轉換成整型后后轉換成字符
        print (now)
        now = ''
    else:
        now += table[idx] # 其他情況直接連接上就好
    
print ('flag{' + ''.join(passwd) + '}')

flag{gsUWDqEZgBhBpcinTSAS}

簡簡單單內存取證

學習 Volatility 的 Linux 內存介質取證

https://github.com/volatilityfoundation/volatility/wiki/Linux

very easy Bitlocker

在 Linux 下使用 ewf-tools 掛載 e01 鏡像

ewfmount forensic.ewf ./ewf

提取出 image.dd(磁盤鏡像文件)和 memory.dmp (內存鏡像文件)

考慮 Bitlocker 密鑰位於內存中,使用 volatility 分析

C:\Users\harve\Desktop>vola -f memory.dmp imageinfo
Volatility Foundation Volatility Framework 2.6
INFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418
                     AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)
                     AS Layer2 : FileAddressSpace (C:\Users\harve\Desktop\memory.dmp)
                      PAE type : No PAE
                           DTB : 0x187000L
                          KDBG : 0xf800028520a0L
          Number of Processors : 1
     Image Type (Service Pack) : 1
                KPCR for CPU 0 : 0xfffff80002853d00L
             KUSER_SHARED_DATA : 0xfffff78000000000L
           Image date and time : 2016-07-02 20:09:29 UTC+0000
     Image local date and time : 2016-07-02 22:09:29 +0200

strings + grep 沒有找到 Bitlocker 長得像密鑰的東西,感覺會寫在圖片文件里,filescan 一下

C:\Users\harve\Desktop>vola -f memory.dmp --profile=Win7SP1x64 filescan | grep jpg
Volatility Foundation Volatility Framework 2.6
0x000000001db67f20     16      0 RW---- \Device\HarddiskVolume3\flag.jpg

導出 flag.jpg

C:\Users\harve\Desktop>vola -f memory.dmp --profile=Win7SP1x64 dumpfiles -Q 0x000000001db67f20 -D . -u

在不關心 Bitlocker 加密磁盤的情況下找到了 flag ......

flag{B1tL0ck3R_1ts_n0t_sUr3}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM