Forensic/메모리 포렌식

Cridex malware 분석

Ron Weasley 2022. 4. 5. 22:33

안녕하세요. 메모리 포렌식을 깊게 공부하기 위해서 분석 파일을 찾다가 해당 사이트에서 샘플 파일들을 찾았습니다.
https://github.com/volatilityfoundation/volatility/wiki/Memory-Samples
그 중 하나인 Cridex malware를 분석할 것입니다.

Cridex malware란?

사용자의 금융 기록에 액세스하기 위해 감염된 시스템에서 인터넷 뱅킹 및 개인 정보를 훔칠 수 있는 악성코드입니다.
Cridex는 감염된 시스템에 백도어를 생성하여 악성 웹사이트를 여는 것과 같은 작업을 수행할 뿐만 아니라 추가 맬웨어를 다운로드 및 실행할 수 있으며, 이 기능을 통해 금융 웹 사이트를 방문하여 로그인을 할 때, 감염된 시스템에서 사용자의 은행 정보를 캡처 합니다.

분석 대상 정보를 보겠습니다.

[분석 대상 정보]

Analysis file information Layout

[분석 프로그램의 정보]

Program information

[시나리오]

Sinario

분석하기 전 파일에서 제공되는 profile(운영체제)이 무엇인지 알아야 하며 분석할 파일에 대한 정보를 얻기 위해서 imageinfo 명령어를 실행하겠습니다.

Volatility2.6.exe -f cridex.vmem imageinfo

이 덤프 파일에서 제공되는 운영체제는 WinXPSP2x86입니다.
이제 덤프 파일이 떠진 현재 시점에서 실행되고 있는 프로세스들을 확인하기 위해서 pslist플러그인을 사용하여 실행되고 있는 프로세스 중, 의심이 가는 프로세스가 있는지 확인하겠습니다.

Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 pslist

프로세스만 봐서는 어떤 프로세스가 의심이 가는지는 잘 추측이 되질 않아서 실행되고 있는 프로세스의 자식 프로세스가 어떤것인지 파악하기 위해서 pstree 플러그인을 사용해 보겠습니다.

Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 pstree

pstree플러그인을 사용하니 explorer의 자식 프로세스 중 reader_sl이라는 처음보는 프로세스를 볼 수 있습니다.
구글링을 해본 결과, Adobe에서 만든 소프트웨어 임을 알 수 있습니다. 이는 exe파일 확장자명을 가지고 있으며, DLL파일로 간주됩니다.

마지막으로 psscan 플러그인을 통해서 숨겨진 프로세스가 있는지 확인합니다.

Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 psscan

숨겨진 프로세스는 없는것 같습니다.

이제는 reader_sl.exe가 수상한 것 실행 파일임을 알았으니, 네트워크 분석을 진행하도록 하겠습니다.
분석을 위해 connections, sockets, connscan플러그인을 사용하겠습니다.

Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 connections

connections 플러그인을 사용하니, 활성화된 네트워크 연결 정보를 볼 수 있었습니다.

이것으로 보아 추측할 수 있는것은 PID 1484를 가진 프로세스가 IP 41.168.5.140과 통신하는 것을 볼 수 있습니다. 하지만 이 정보 하나만으로는 확신을 할 수 없어서 다른 플러그인도 사용을 해보겠습니다.

Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 sockets
Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 connscan

플러그인을 사용한 결과, PID 1484를 가진 프로세스에서 포트번호 1038을 사용하고, 위 connetions 플러그인과 동일한 IP와 통신을 하고 있다는 것을 확신할 수 있었습니다.

네트워크 정보들을 모아보면 PID 1484를 가진 프로세스가 IP 41.168.5.140과 통신을 하면서, 포트번호 1038을 사용하고, 정보를 빼돌리고 있음을 파악할 수 있었습니다.

이제, 프로그램이다 보니 실행된 명령어가 존재 할거라는 생각에 cmd관련 플러그인들을 사용하겠습니다.

Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 cmdline
Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 cmdscan

cmdscan으로는 아무것도 출력이 되지 않았고, cmdline에서는 파일의 경로를 알 수 있었습니다.

explorer.exe의 경로는 C:\WINDOWS\Explorer.EXE 이고,
reader_sl.exe의 경로는 C:\Program Files\Adobe\Reader 9.0\Reader\Reader_sl.exe 입니다.

지금까지 우리가 의심스러웠던 reader_sl.exe 실행 파일은 Adobe에서 만든 소프트웨어임을 알았으며, 이 프로세스가 explorer.exe의 자식 프로세스임을 알고 있습니다. 그래서 해당 프로세스와 메모리를 덤프를 떠보겠습니다.
덤프를 뜨는 플러그인은 procdump, 메모리 덤프는 memdump입니다.

Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 procdump -p 1640 -D ./
Volatility2.6.exe -f cridex.vmem --profile=WinXPSP2x86 memdump -p 1640 -D ./

실제로 덤프를 뜨자마자 Windows Defender에 걸리는것을 알 수 있습니다. 이로써 100프로 악성 파일임을 확신하였고, 디펜더를 끄고 다시 덤프를 뜬 상태로 파일의 정보를 읽어 보겠습니다.

정상적으로 파일이 추출된 것을 확인할 수 있습니다.
dmp 파일은 memdump를 통해서 만들어진 파일이고, exe는 procdump를 통해서 만들어진겁니다.
dmp파일을 hxd에디터로 열어보니, 신기한 정보들을 얻을 수 있었습니다.
바로, 은행과 관련된 정보인데요. 서론에서 cridex malware가 인터넷 뱅킹에서 정보를 빼온다고 했는데, 딱 맞게 은행관련 url이 나와있었습니다.

url을 그대로 복사해서 들어갔으나, 정상적으로 홈페이지가 들어가지지는 않았고 끝에 websterbank, texascapitalbank를 키워드로 검색을 하니까 해당 은행이 정말 나왔습니다.

이제 추출한 reader_sl.exe는 cridex malware임을 알았고, 리눅스에 strings 명령어로 우리가 찾은 정보들을 기반으로 명령어를 작성했습니다.

strings 1640.dmp | grep "41.168.5.140" -C 5

POST 요청을 사용하여, Host : 41.168.5.140을 보아, 해당 IP로 통신하여 정보를 빼낼 수 있음을 알 수 있었습니다.
그리고 추출한 exe파일이 악성파일인지 확인하기 위해서 virustotal를 사용하여 직접 보겠습니다.

디펜더에서도 악성 파일로 인식을 했고, 바이러스 토탈에서도 악성 파일임을 인정되었습니다.
이로써 악성파일임을 확신할 수 있습니다.

분석한 내용을 간략하게 정리해보겠습니다.

1. pstree에서 explorer(PID 1484)를 부모 프로세스로 사용하는 adobe 소프트웨어인 reader_sl.exe(PID 1640) 발견
2. 네트워크 분석에서 IP 41.168.5.140:8080를 찾았고, 사용중인 PID는 1484
3. reader_sl.exe 덤프 결과, 디펜더에서 악성파일로 인식 후, 바이너리 데이터 분석 결과 동일한 IP에 대한 연결과 은행 관련 url을 확인
4. 최종적으로 바이러스 토탈에서 악성 트로젠으로 판명

[결과]
분석을 진행한 cridex.vmem은 위 4가지의 찾은 정보로 보아 사용자의 컴퓨터에서 추출된 메모리 덤프 파일인 경우, 컴퓨터가 트로젠에 감염이 되었음을 결론을 내릴 수 있었습니다.

'Forensic > 메모리 포렌식' 카테고리의 다른 글

OlympicDestroyer Malware 분석  (2) 2022.04.14