[CTF-d, GrrCon 2015]
문제는 위 링크에서 확인이 가능하다.
[운영체제 식별]
메모리의 운영체제를 식별한다. imageinfo에서 확인한 Suggested Profiles 중 하나를 선택하여 명령어 뒤에 덧붙여서 사용한다. 해당 실습에서는 Win7SP1X86를 사용한다.
[프로세스 검색]
차례대로 pslist, psscan, pstree, psxview 명령어를 실행하여 출력 값을 파일로 저장한다.
pstree.log를 살펴보면 TeamViewer.exe와 TeamViewer.exe의 자식 프로세스, explorer.exe와 explorer.exe의 자식 프로세스, iexplore.exe와 iexplore.exe의 자식 프로세스가 의심스럽다.
pslist.log를 살펴보면 iexplore.exe가 먼저 실행이 되고, 그 다음으로 OUTLOOK.EXE가 실행이 된다. OUTLOOK.EXE가 침입 경로로 추측된다.
[네트워크 분석]
netscan 명령어를 사용하여 네트워크 분석을 진행한다.
netscan.log를 살펴보면 의심 가는 IP Address가 2개 보인다. 180.76.254.120과 192.96.201.138이 의심스럽다.
[CMD 분석]
차례대로 cmdline, cmdscan, consoles 명령어를 실행하여 출력 값을 파일로 저장한다.
cmdline.log를 살펴보면 특정한 action을 취하는 TeamViewer\tv_w32.exe가 의심스럽다.
cmdscan.log와 consoles.log를 살펴보면 wce.exe를 확인할 수 있다. wce.exe를 실행한 결과를 w.tmp에 저장하는 것으로 보인다.
의심스러운 프로세스인 wce.exe, tv_w32.exe, OUTLOOK.EXE, iexploer.exe에 대해 분석을 진행한다.
[파일 분석 및 덤프]
filescan 명령어를 사용하여 메모리 내에 존재하는 모든 파일에 대한 정보를 출력한다.
filescan.log에서 Ctrl+f를 눌러 wce.exe를 검색한다.
dumpfiles 명령어를 사용하여 메모리 내에 존재하는 wce.exe를 추출하여 파일 형태로 저장한다. 이때, filescan.log에서 wce.exe가 위치하는 offset을 가져온다.
w.tmp도 위의 wce.exe와 동일하게 dumpfiles 명령어를 사용하여 메모리 내에 존재하는 w.tmp를 추출한다.
추출된 w.tmp 파일을 살펴보면 사용자 계정과 비밀번호로 보이는 정보를 확인할 수 있다. wce.exe 파일은 관리자 계정을 포함하여 패스워드를 가져오는 실행 파일이고 w.tmp 파일은 wce.exe의 실행 결과로 출력된 파일로 예상된다.
추출된 wce.exe 파일을 VirusTotal에서 분석해보면 69개의 백신 중에서 55개의 백신이 이를 악성코드로 판단하고 있다. 다수의 백신이 악성코드로 판단했기에 확실한 증거로 볼 수 있다.
[프로세스 세부 분석]
tv_w32.exe에 대해 메모리 덤프를 진행한다. 이때, pstree.log에서 tv_w32.exe에 해당하는 PiD를 가져온다. memdump 명령어를 사용하여 메모리 덤프를 실행한다. 프로세스가 사용한 전체 메모리 영역을 덤프해서 가져온다.
filescan.log에서 Ctrl+f를 눌러 tv_w32.exe를 검색한다.
dumpfiles 명령어를 사용하여 메모리 내에 존재하는 tv_w32.exe를 추출하여 파일 형태로 저장한다. 이때, filescan.log에서 tv_w32.exe가 위치하는 offset을 가져온다.
생성한 파일을 Virustotal에서 분석해보면 65개의 백신 중에서 1개의 백신이 이를 악성코드로 판단하고 있다. 소수의 백신만이 악성코드로 판단했기에 확실한 증거로 보기에는 어렵다.
OUTLOOK.EXE에 대해 메모리 덤프를 진행한다. 이때, pstree.log에서 OUTLOOK.EXE에 해당하는 PiD를 가져온다. memdump 명령어를 사용하여 메모리 덤프를 실행한다. 프로세스가 사용한 전체 메모리 영역을 덤프해서 가져온다.
덤프된 파일에는 쓰레기 값들이 많이 존재한다. 따라서 쓰레기 값을 어느정도 제거한 다음에 파일을 살펴보기 위해 strings를 사용한다. 3196.dmp 파일을 strings를 사용해 strings_3196.log 파일로 추출한다.
피싱 메일 원본을 검색하기 위해 strings_3196.log 파일에서 http://를 검색한다.
찾기 결과물에서 찾기 버튼을 누르고 .exe로 끝나는 것들을 검색한다.
netscan에서 봤던 IP Address인 180.76.254.120를 확인할 수 있다.
해당 코드를 html로 저장한 다음에 파일을 열어보면 다음과 같이 피싱 메일 원본을 확인할 수 있다. 메일 본문에 적혀있는 http://180.76.254.120/AnyConnectInstaller.exe가 의심스럽다.
OUTLOOK.EXE로부터 피싱 메일이 들어오면 피싱 메일을 통해 AnyConnectInstaller.exe 다운로드를 유도하는 것으로 보인다. AnyConnectInstaller.exe 다운로드가 완료되면 관리자 계정 및 패스워드가 존재하는 wce.exe 파일과 w.tmp 파일이 생성될 것으로 예상된다.
filescan.log에서 Ctrl+f를 눌러 AnyConnectInstaller.exe를 검색한다.
dumpfiles 명령어를 사용하여 메모리 내에 존재하는 AnyConnectInstaller.exe를 추출하여 파일 형태로 저장한다. 이때, filescan.log에서 AnyConnectInstaller.exe가 위치하는 offset을 가져온다.
생성한 파일을 Virustotal에서 분석해보면 68개의 백신 중에서 60개의 백신이 이를 악성코드로 판단하고 있다. 다수의 백신이 악성코드로 판단했기에 확실한 증거로 볼 수 있다.
iexploer.exe에 대해 메모리 덤프를 진행한다. 이때, pstree.log에서 iexploer.exe에 해당하는 PiD를 가져온다. memdump 명령어를 사용하여 메모리 덤프를 실행한다. 프로세스가 사용한 전체 메모리 영역을 덤프해서 가져온다.
덤프된 파일에는 쓰레기 값들이 많이 존재한다. 따라서 쓰레기 값을 어느정도 제거한 다음에 파일을 살펴보기 위해 strings를 사용한다. 2996.dmp 파일을 strings를 사용해 strings_2996.log 파일로 추출한다.
strings_2996.log에서 netscan에서 봤던 IP Address인 180.76.254.120를 검색한다. AnyConnectInstaller.exe를 다운받은 흔적을 확인할 수 있다.
wcv.exe 실행 흔적을 확인할 수 있다.
'포렌식 > 기초부터 따라하는 디지털 포렌식' 카테고리의 다른 글
Registry 개념 및 실습 (0) | 2022.07.17 |
---|---|
OlympicDestroyer - Volatility Contest 2018 풀이 (1) | 2022.07.14 |
Volatility Cridex 풀이 (0) | 2022.07.12 |
쉽게 따라하는 삭제 파일 복구 (0) | 2022.07.04 |
디스크 이미징과 마운트, 메모리 덤프 (0) | 2022.07.04 |