[2022 화이트햇 콘테스트] E-2 - 포렌식 / Wireshark / IDA / Python
2022 화이트햇 콘테스트 예선에 출제되었던 문제
이전 E-1 문제와 이어지는 문제이다.
(https://hackingstudypad.tistory.com/663)
E-2 문제는
공격자가 피해 호스트의 스크린샷, 클립보드 등 자격증명을
지속적으로 유출하기 위해 설치한 악성코드를 분석해
플래그를 획득하는 것이 목표이다.
지난 문제에서 디코딩한 파워쉘 스크립트를 보면
http://192.168.35.85/index.do 쪽으로 접근하는 흔적을 찾을 수 있다.
해당 정보를 바탕으로
바탕화면\Log 폴더의
3.pcapng 파일을 Wireshark로 분석해보면
136845 번째 패킷에서
똑같은 목적지의 패킷을 찾을 수 있다.
해당 패킷을
우클릭 - Follow - HTTP Stream 을 눌러 자세히 보면
Response 패킷에서 PE 파일 헤더인
MZ 문자열을 확인할 수 있다.
조금 더 밑으로 내려보면
Powershell을 실행시키는 코드가 보이고,
그 뒤에 FLAG{%d} 로 플래그를 프린트 하는듯한 코드도 보인다.
패킷을 raw 값으로 변경해 hex 값을 복사해서
HxD에 붙혀넣어 다른 이름으로 저장해
해당 바이너리를 복원해 본다.
복원한 파일을 IDA로 열어
main 함수의 수도코드를 살펴보면
powershell 명령어로
192.168.35.85/logout.php 에서 뭔가 다운로드 받는것을 확인할 수 있다.
이건 그냥 기억해두고 넘어가고
아래쪽으로 내리면
위의 코드와 상관없이
플래그를 출력하는 코드가 나온다.
v12 = 1
v12 = 22
v14 = 1
for i in range(22):
v12 += v14
v15 = v14 + v12
v14 += v12
n = v15
v7 = 1
v16 = 1
for i in range(22):
v7 += v16
v16 += v7
print(v16)
해당 수도코드를 참고해
파이썬으로 똑같이 코드를 작성해준다.
코드를 실행시키면
최종 결과값으로 1836311903 이 나온다.
따라서 이번 문제의 플래그는
FLAG{1836311903} 이 된다.