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} 이 된다.
'CTF > 포렌식' 카테고리의 다른 글
[2022 화이트햇 콘테스트] H-1 - 포렌식 / Powershell / XOR (177) | 2023.12.02 |
---|---|
[2022 화이트햇 콘테스트] G-2 - 포렌식 / Powershell / Sysmon View (164) | 2023.11.27 |
[2022 화이트햇 콘테스트] F-4 - 포렌식 / Winhex (170) | 2023.11.19 |
[2022 화이트햇 콘테스트] F-3 - 포렌식 / Powershell / Process Explorer (226) | 2023.11.15 |
[2022 화이트햇 콘테스트] F-2 - 포렌식 / Sysmon View / Powershell (218) | 2023.11.11 |