CTF/포렌식

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

SecurityMan 2023. 11. 11. 11:00

 

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

 

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

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

 

반응형

 

F-2 문제는

 

공격자가 HTTP 프로토콜을 이용하여 

 

최초로 데이터를 유출한 시각과

 

이 때 명령프롬포트의 PID 를 찾는것이 목표이다.

 

 

 

이전 문제에서 Sysmon 로그를 분석해

 

rundll32.exe 가 실행되었다는것을 알 수 있었다.

 

PID 가 8248 이라는 것을 기억해둔다.

 

 

그리고 계속 따라들어가면 된다.

 

rundll32.exe 가 cmd.exe 를 실행시킨 흔적을 찾을 수 있다.

 

위 로그를 보면 PPID가

 

방금전 rundll32.exe 의 PID 였던 8248 인것을 볼 수 있다.

 

마찬가지로 이번 PID는 3820 이다.

 

Command Line 부분을 보니 뭔가 powershell 을 실행시키는것 같다.

 

-Enc 뒤에 base64 인코딩된 부분을 풀어보자

 

$base64EncodedString = "여기에_Base64_문자열_입력"; 
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($base64EncodedString))

 

 

디코딩하기 위해선

 

위의 파워쉘 스크립트를 사용하면 된다.

 

 

그럼 또다시 base64 인코딩된 

 

파워쉘 스크립트가 등장한다.

 

$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 압축된 데이터로

 

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

 

 

디코딩하면 이런 스크립트가 나온다.

 

png, jpg, xlsx 같은 파일 목록을 스캔한 뒤

 

압축해서 curl 로 

 

http://192.168.35.85:8000/upload 경로에 업로드 시키고 있다.

 

따라서 HTTP 프로토콜로 최초로 데이터를 유출한 시간은

 

Sysmon 로그에서 본 2022-10-13 19:02:25 이고,

 

PID는 cmd.exe 의 PID인 3820이 된다.

 

이번 문제의 플래그는

 

FLAG{20221013190225_3820} 이다.

반응형