[2021 화이트햇 콘테스트] E-1 - 포렌식 / Wireshark / Powershell
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} 가 된다.