WhiteHat Challenge 04 Write up ( Misc + 2Cryp + For )

Lần tham gia đầu tiên với kì thi WhiteHat ( WhiteHat Challenge 02 ) thì team mình dừng ở vị trí 2x
Lần thứ 2 ( WhiteHat Challenge 03 ) thì may mắn vào top 10
Và lần này may mắn team mình đã đạt được vị trí thứ 2
Misc 01: 

A python code was encoded. Please try to get flag from this file.


Ta thấy rằng file đề cho là 1 dãy base64 
Sau khi decode ta nhận được file 
Thay lệnh exec = lệnh print
ta nhận được file 
Tiếp tục thay lệnh exec = lệnh print ta nhận được flag
flag : WhiteHat{Sha1(scr1pt_w1th_pyth0n_1s_ez)}

Crypto01: 

Decode the image to get an answer. Tool: Google
Download file here:

Sau khi tải file về, ta thấy các hình ảnh rất lạ, và với hint : Tool: Google, ta sẽ liên tưởng đến tìm kiếm hình ảnh của google

Cuối cùng ta biết được nó là Gnomish, mỗi hình ảnh sẽ thay thế cho 1 chữ :D 
Ta ghép lại được chữ: flag is have fun
flag: WhiteHat{Sha1(have fun)}

Crypto02: 


Ta thấy rằng khi nhập 1 base64 encoded bất kì, hệ thống sẽ tiến hành mã hóa và trả về cho ta chuỗi đã được mã hóa ( và ở đây là mã hóa AES ECB mode )
Theo ta thấy thì

s = "something!" + m.decode('base64') + flag

Và với AES ECB thì nguyên tắc mã hóa nó sẽ chia plaintext ra thành từng block, sau đó sẽ lấy từng block xor lần lượt key -> Ciphertext
và ở đây block size = 16
ECB encryption.svg
giả sử ta nhập 21 chữ a thì lúc này
          s = "something!" + 'a'*21 + flag
<=>   s = "something!aaaaaa" + 'a'*15 + flag
-> block 16 bytes đầu là something!aaaaaa
tiếp tục block sau sẽ là 'a'*15 + 1 kí tự của flag
-> ta có thể brute từ khoảng 32 -> 127 để tìm kí tự này
Tiếp tục sẽ là 'a'*14 + kí tự vừa tìm được + kí tự tiếp theo của flag
Cứ thế ta sẽ phục hồi được flag

Đây là Script mình viết để thực hiện bài đó

For01 :

We suspect that the system has been stolen data by a hacker via a storage device. Pls help us investigate which device he uses and what time that device is disconnect to the system. The memory dump file below servers for the investigation. Format: HH_DeviceName (Time at UTC+7)
Download file here:
Backup:


Sau khi đọc kĩ yêu cầu đề bài, tôi nhận ra rằng
- Thiết bị ta cần tìm chắc hẳn sẽ là 1 chiếc USB -> Nếu như nó đã có connect và giao tiếp với máy tính r, thì trong Registry chắc chắn sẽ lưu lại tên của chiếc USB đó
- Thời gian thì ta có thể kiểm tra ở System vì nó có lưu các Event của máy tính
- Trong Registry thì USB device được lưu ở USBSTOR
Tôi sẽ dùng Volatility để tiến hình điều tra 


Ta thấy rằng có tiến trình regedit.exe đang chạy càng củng cố thêm cho tôi rằng hướng theo registry là đúng
Tôi sẽ tiến hành dump Registry ra và check với command: 
volatility -f findit.raw --profile=WinXPSP3x86 memdump -p 2040 -D [Thư mục lưu]
Và như đã nói ban đầu thì thông tin USB sẽ được lưu trong USBSTOR
Tôi sẽ strings để tìm

Tôi để ý thấy có 1 cái tên khá lạ 
USBSTOR#Disk&Ven_Innostor&Prod_Innostor&Rev_1.00#000000000000000354&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}

Và với 1 chút google, tôi biết rằng đây chính là cú pháp
USBSTOR#Disk&Ven_NAMEDEVICE&Prod .....

-> Ta đã có được tên device là Innostor

Công việc tiếp theo là tìm thời gian
Có vẻ đến đây ta có thể dễ dàng làm bài toán với việc chỉ cần brute 00_Innostor đến 23_Innostor là xong , vì đề yêu cầu flag dạng: HH_NameDevice ( lúc sáng là HH:MM:SS_NameDevice )
giờ ta chỉ việc tìm giờ, tối sẽ dùng hivelist để tìm file system

Tôi sẽ dùng command: volatility -f findit.raw --profile=WinXPSP3x86 hivelist



Ta thấy rằng file system có địa chỉ 0xe101a7c0
Tôi sẽ dump file ra để đọc Event log với command: 

volatility -f findit.raw --profile=WinXPSP3x86 hivedump -o 0xe101a7c0 | grep -i 'Innostor'

Ta có thể thấy lần đăng nhập cuối cùng là vào thời gian: 2017-08-17 07:05:51 UTC+0000
-> HH = 07 UTC +0000 
<-> HH = 14 UTC+7

-> flag: 14_Innostor
-> WhiteHat{Sha1(14_Innostor)}




Nhận xét

Bài đăng phổ biến từ blog này

CSAW 2017 Write up

Write up - SHACTF 2017 ( 2For100 + Cryp100 + Network100 + Crypt200)