CTF/포렌식

[2021 화이트햇 콘테스트] E-1 - 포렌식 / Wireshark / Powershell

SecurityMan 2023. 7. 29. 11:00

 

2021 화이트햇 콘테스트 예선전에 나왔던 문제

 

시간이 꽤 지났지만 하나씩 문제풀이를 올려본다.

 

CTFD 플랫폼을 이용해 진행이 되었는데,

 

문제는 캡쳐를 못해서 써놨던 내용을 복기해서 작성하는 Write up이다.

 

반응형

 

 

거의 대부분의 문제는 S1_Docs_Malware.vmx 파일로 진행된다.

 

해당 파일은 침해사고가 발생한 Windows10 시스템을 이미징한 것이다.

 

E-1 문제는 이전 D-1에서 계속 이어지는 문제이다.

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

 

E-1
랜섬웨어 악성코드를 다운로드 하는 URL은 무엇인가?

 

E-1 부턴 윈도우 이미지에서 가장 먼저 눈에 띄었던

 

랜섬웨어 악성코드에 대해 조사한다.

 

랜섬웨어를 다운로드 하는 URL을 찾는 것인데

 

 

지난번 D-1 문제에서

 

fontmgr.wll 파일을 다운받는 URL 주소를 찾았었다.

 

http://34.64.143.34/admin.php 인데,

 

해당 URL이 정답인줄 알고 제출했으나 

 

정답이 아니었다.

 

 

이것저것 시도해보다가

 

C:\Logs 폴더 안에 제공되어 있는

 

B.pcapng 파일에서 흔적을 찾을 수 있었다.

 

 

B.pcapng 파일은 

 

Wireshark 라는 도구로 열어볼 수 있다.

 

 

아래로 내리다보면

 

37,213번째 패킷에서 34.64.143.34 주소의 admin.php 파일로 접근한 흔적을 찾을 수 있다.

 

 

File - Export Objects - HTTP 를 선택해서

 

 

admin.php 파일을 추출할 수 있다.

 

 

admin.php 파일을 메모장으로 열어보면

 

맨 앞부분이 MZ 로 시작하는것을 볼 수 있는데

 

이건 .exe 실행 파일의 시그니처이다.

 

확장자가 .exe 였으나, .php 로 임의로 바꿔놓은 것이다.

 

 

조금 밑으로 내려보면

 

base64 인코딩된 파워쉘 코드가 두개 보인다.

 

흰색으로 지운건 혹시나 악용될까봐 마스킹한 것이다.

 

$base64EncodedString = "여기에_Base64_문자열_입력"

try {
    $decodedBytes = [System.Convert]::FromBase64String($base64EncodedString)
    $decodedString = [System.Text.Encoding]::UTF8.GetString($decodedBytes)
    Write-Host "디코딩된 문자열: $decodedString"
} catch {
    Write-Host "Base64 디코딩 실패: $_.Exception.Message"
}

 

해당 파워쉘 코드를 위 코드를 이용해서

 

디코딩 해주었다.

 

 

각각의 base64 부분을 디코딩해본 결과

 

또다른 파워쉘 코드가 등장했고,

 

해당 파워쉘 코드에는 또다른 base64 값이 들어가 있었다.

 

$base64data = "여기에_Base64_문자열_입력"
$data = [System.Convert]::FromBase64String($base64data)
$ms = New-Object System.IO.MemoryStream
$ms.Write($data, 0, $data.Length)
$ms.Seek(0,0) | Out-Null

$sr = New-Object System.IO.StreamReader(New-Object System.IO.Compression.DeflateStream($ms, [System.IO.Compression.CompressionMode]::Decompress))

while ($line = $sr.ReadLine()) {  
    $line
}

 

방금 전 코드로 base64 디코딩을 시도했으나,

 

이상한 값이 출력되어서 코드를 바꿨다.

 

이렇게 해서 출력하니 잘 나왔다.

 

파워쉘 고수가 아니라서 이유는 잘 모른다.

 

구글에 검색해서 적당한 디코딩 코드를 가져왔을 뿐이다.

 

 

첫번째 base64 를 디코딩하면

 

이제 진짜 파워쉘 코드가 보인다.

 

코드를 보면 뭔가 랜섬웨어의 느낌이 나는데

 

.png, .gif, .hwp, .zip 같은 사용자들이 많이 사용하는 확장자를 가진 파일을 

 

목록을 가져와서

 

http://34.64.143.34:3000 주소로 보내고 있는 모습이다.

 

 

두번째 base64 역시 디코딩을 해보니

 

다른 파워쉘 코드가 나왔다.

 

내용을 대충 보면

 

http://34.64.143.34/main.do 라는 경로에 접근해서

 

LOCATAPPDATA\WerFault.exe 파일을 생성하는 내용이다.

 

두 파워쉘 코드를 봤을때

 

랜섬웨어를 다운받는 URL은

 

http://34.64.143.34/main.do 인것을 알 수 있고,

 

플래그는 FLAG{http://34.64.143.34/main.do} 가 된다.

반응형