CTF/포렌식

[2022 화이트햇 콘테스트] G-1 - 포렌식 / Powershell / Sysmon View

SecurityMan 2023. 11. 23. 11:00

 

2022 화이트햇 콘테스트 예선에 출제되었던 문제

 

이전 F-4 문제와 이어지는 문제이다.

(https://hackingstudypad.tistory.com/675)

 

반응형

 

G-1 문제는

 

클립보드 데이터가 최초로 유출된 시각과 

 

유출에 사용된 도구의 당시 PID를 찾는것이 목표이다.

 

 

 

이전에 풀이했던 E-3 문제를 보면

(https://hackingstudypad.tistory.com/665)

 

복원한 바이너리 파일에서

 

http://192.168.35.85/logout.php 로 접속하는것을 볼 수 있다.

 

 

해당 위치로의 접속 흔적은

 

바탕화면\Log 폴더 안에 있는

 

4.pcapng 파일에서 찾을 수 있다.

 

 

이렇게 logout string을 검색하면 금방 찾는다.

 

 

 

해당 패킷을 

 

우클릭 - Follow - HTTP Stream 눌러 자세히보면

 

 

인코딩된 powershell 스크립트를 발견할 수 있다.

 

$base64ZlibData = "여기에_Base64_문자열_입력"
$decodedBase64Data = [System.Convert]::FromBase64String($base64ZlibData)
$zlibStream = New-Object System.IO.MemoryStream
$zlibStream.Write($decodedBase64Data, 0, $decodedBase64Data.Length)
$zlibStream.Flush()
$zlibStream.Seek(0, 'Begin')
$decompressedData = New-Object System.IO.MemoryStream
$inflateStream = New-Object System.IO.Compression.DeflateStream($zlibStream, [System.IO.Compression.CompressionMode]::Decompress)
$inflateStream.CopyTo($decompressedData)
$inflateStream.Close()
$decodedData = [System.Text.Encoding]::UTF8.GetString($decompressedData.ToArray())
Write-Host "Decoded Data: $decodedData"

 

 

해당 스크립트는 Base64 + zlib 압축된 데이터로

 

위 스크립트를 이용해 디코딩 할 수 있다.

 

 

 

이렇게 두 부분으로 나누어져 있는데

 

대충 내용을 보면

 

Get-Clipboard 로 클립보드의 데이터를 가져와

 

DAT000121.dat 로 저장하고

 

이를 pscp.exe 를 이용해 C2 서버로 보내는 듯 하다.

 

 

 

Sysmon View 로 sysmon 로그를 분석해보면

 

pscp.exe 가 연달아 두 번 실행된걸 볼 수 있는데

 

 

두번째 실행되었을 때

 

DAT000121.dat를 pscp.exe 를 이용해

 

C2 서버로 전송했음을 알 수 있다.

 

이 때의 PID는 11700 이다.

 

따라서 이번 문제의 플래그는

 

FLAG{20221013190100_11700} 이 된다.

반응형