CTF/포렌식

[2022 화이트햇 콘테스트] C-3 - 포렌식 / Powershell

SecurityMan 2023. 10. 11. 11:00

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

 

이전 C-2 문제와 이어지는 문제이다.

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

 

반응형

 

C-3 문제는

 

공격자가 데이터를 유출하기 위해 사용했던

 

클라우드 서버의 계정과 패스워드를 알아내는 것이 목표이다.

 

 

이번 문제는

 

HOffice2022_Viewer.exe 파일로부터 생성된

 

io_.vbs 파일을 분석해 해결할 수 있다.

 

 

io_.vbs 파일을 열어보면

 

Base64로 인코딩된 EncodedCommand 라는 부분이 존재하는데

 

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

 

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

 

 

디코딩된 내용을 보면

 

이전 C-2에서 봤던 rclone.exe 를 이용해

 

원격지 서버에 로그인을 하는데

 

그 계정이 kidonar@lutota.com,

 

비밀번호가 TteeEmP2@1!3# 라는것을 알 수 있다.

 

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

 

FLAG{kidonar@lutota.com_TteeEmP2@1!3#} 가 된다.

반응형