외로운 Nova의 작업실

디지털 포렌식 기초 - 4(malware cridex 침해 분석) 본문

Digital Forensics

디지털 포렌식 기초 - 4(malware cridex 침해 분석)

Nova_ 2022. 10. 26. 16:04

안녕하세요. 실제로 메모리 덤프인 malware cridex를 간단하게 침해 분석 하는 것을 공부한 것을 정리해보도록 하겠습니다.

 

- 어떤 운영체제의 메모리 인지 알아보기

메모리의 구성은 운영체제마다 다르다보니 분석할때 운영체제에 맞게 메모리를 분석해주어야합니다. 이를 위해서 volavility는 메모리의 운영체제를 분석해서 추천해줍니다. 이를 알아보기위해서 아래와 같은 명령어를 사용합니다.

>volatility_2.6_win64_standalone.exe -f cridex.vmem imageinfo

명령어를 쳐주었다면, WinXPSP2x86과 WinXPSP3x86 운영체제인 것 같다고 추천해줍니다. 이 운영체를 복사해둡니다.

 

- 실제로 실행되었던 메모리의 프로세스들을 분석해보기

운영체제를 알아냈다면 이제 volativility로 그때 당시 메모리에서 실행되었던 프로세스들을 분석해볼 수 있습니다. 아래와 같은 명령어로 분석이 가능합니다.

volatility_2.6_win64_standalone.exe -f cridex.vmem --profile=WinXPSP2x86 pslist > pslist.log
volatility_2.6_win64_standalone.exe -f cridex.vmem --profile=WinXPSP2x86 psscan > passcan.log
volatility_2.6_win64_standalone.exe -f cridex.vmem --profile=WinXPSP2x86 pstree > pstree.log
volatility_2.6_win64_standalone.exe -f cridex.vmem --profile=WinXPSP2x86 psxview > psxview.log

pslist 명령어 : 시간 순서대로 프로세스를 정렬하여 나타내줍니다.

psscan 명령어 : 주소순서대로 프로세스를 정렬하여 나타내 줍니다. 숨겨진 파일을 볼 수 있습니다.

pstree 명령어 : 부모와 자식관계로 프로세스를 정렬하여 나타내 줍니다.

psxview 명령어 : pslist와 psscan의 결과등 7가지로 분석한 것을 통합적으로 보여줍니다.

 

이제 위 로그들을 notepad++로 열어보겠습니다.

 

- pslist 분석

위는 paslist 명령어로 시간순서대로 정렬된 프로세스들입니다. 이 프로세스들이 무엇을 하는 건지 알아볼 필요성이 있습니다. 한번 알아보겠습니다.

 

  • smss.exe : Session Manager Subsystem을 나타내는 실행 파일입니다. 마이크로소프트 윈도우즈 운영 체제의 중요한 구성 요소로서 컴퓨터를 켜면 자동으로 실행됩니다.
  • csrss.exe : 클라이언트/서버 런타임 하위 시스템 또는 csrss.exe는 윈도우 NT의 구성 요소로서, 사용자 모드 쪽의 Win32 하위 시스템을 제공하며 윈도우 2000 이후로 제공되어 왔습니다.
  • winlogon.exe : Microsoft Windows는 운영 체제입니다. Winlogon.exe는 Windows 인증 유틸리티 인 Windows 로그온을 실행합니다. 이것은 시스템 구성 요소이므로 제거하면 안됩니다. Windows 로그온은 Windows 로그인 프로세스와 관련된 광범위한 중요 작업을 수행하는 프로그램입니다.
  • services.exe : 서비스 제어 관리자 는 윈도우 서비스 프로세스와 시작과 정지 및 상호작용 하는 윈도우 NT 하의 특별한 시스템 프로세스입니다. %SystemRoot%\System32\services.exe 실행 파일에 위치합니다.
  • lsass.exe : 로컬 보안 인증 하위 시스템 서비스는 시스템의 보안 정책을 강화를 위한 윈도우의 프로세스입니다. 이것은 윈도우 컴퓨터나 서버에 접속하는 유저들의 로그인을 검사하며, 비밀번호 변경을 관리하고, 액세스 토큰을 생성합니다. 또한 Windows Security Log를 작성합니다.
  • svchost.exe : 서비스 호스트 또는 svchost.exe라고 부르는 프로세스는 하나 이상의 윈도우 서비스를 호스팅하는 프로세스로, 다양한 서비스를 하나의 프로세스로 그룹화해 리소스 사용량을 줄이는 역할을 합니다. 많은 해커들이 트로이목마처럼 해당 응용프로그램으로 둔갑하여 악성코드를 많이 심어놓습니다.
  • explorer.exe : 파일 탐색기는 마이크로소프트 윈도우 환경에서의 GUI 셸입니다. 따라서 그래픽 사용자 인터페이스를 제공하여 파일 시스템에 접근합니다.
  • spoolsv.exe : Spoolsv.exe는 프린터가 글꼴을 이해하거나 그래픽을 해독 할 수 없으므로 인쇄 작업을 이미지로 시스템 메모리에 캐시하는 프로세스 인 인쇄 스풀러 서비스를 실행하는 실행 파일입니다. 
  • reader_sl.exe : Reader_sl.exe는 PDF로 작성, 보기, 수정 및 인쇄하기 위해 Adobe에서 만든 소프트웨어 및 웹 서비스 인 Adobe Acrobat에 속한 실행 파일입니다. Reader SpeedLauncher는 Acrobat Reader를 시작하는 데 필요한 시간을 줄여줍니다.
  • alg.exe  : alg.exe는 보안과 관련된 프로세스인데클라이언트 컴퓨터에서  FTP나 RTSP와 같은 응용프로그램들이 알려진 서버의 포트와 통신을 할 때, 수동 TCP/UDP 포트를 동적으로 사용가능 할 수 있도록 해주는 역할을 합니다.
  • wuauclt.exe  : Microsoft Windows는 운영 체제입니다. Windows Update 자동 업데이트 클라이언트는 Windows 운영 체제 용 소프트웨어 업데이트 유틸리티입니다.

요즘에는 PDF를 사용한 악성코드 해킹이 많이 이루어지고 있습니다. 따라서 reader_sl.exe 프로세스가 조금 의심스러워 보입니다.

 

- pstree 분석

아까 의심스러운 reader_sl.exe 프로세스는 explorer.exe 프로세스의 자식 프로세스로 확인됩니다. 아마 파일탐색기를 통해 pdf 파일을 실행한 흔적이 보이는 것으로 생각됩니다.

 

- psscan 분석

아까 의심스러운 프로세스였던 reader_sl.exe 프로세스의 offset 주소는 0x000000000207bda0 인것으로 확인 할 수 있습니다. 이 주소에 있는 메모리내용을 자세하게 볼 수 있는 명령어가 있기에 주소값을 알아두어야합니다.

 

- TCP 통신이 이루어진 프로세스 찾아보기

connection 명령어를 사용하면 통신하고 있는 프로세스들의 정보를 볼 수 있습니다.

volatility_2.6_win64_standalone.exe -f cridex.vmem --profile=WinXPSP2x86 connections > connections.log

pid 1484는 pstree 분석시에 확인되었던 explore.exe 프로세스입니다. 이 프로세스가 자신의 주소인 172.16.112.128에서 상대의 주소 41.168.5.140으로 통신을 했다는 의미입니다. 근데 explore.exe는 아까 의심스러웠던 reader_sl.exe의 부모 프로세스였습니다. reader_sl.exe 프로세스를 대신해서 통신을 한 건 아니였을까요? reader_ls.exe 파일을 백신 분석을 해보고 또한, 통신의 내용들을 한번 봐봐야겠습니다. 

 

- 특정 프로세스를 실행파일로 덤프(추출)하고 백신 분석해보기

실행되었던 특정 프로세스를 덤프(추출)하는 명령어는 procdump입니다. 

volatility_2.6_win64_standalone.exe -f cridex.vmem --profile=WinXPSP2x86 procdump -p 1640 -D ./dumps

-D 옵션은 파일의 이름에 1640을 포함시키는 옵션이고 dumps 폴더에 저장하게됩니다.

이 파일을 virustotal 이라는 홈페이지에서 백신으로 분석해보겠습니다. 링크는 아래에 있습니다.

https://www.virustotal.com/gui/home/upload

 

VirusTotal

Analyse suspicious files and URLs to detect types of malware, automatically share them with the security community

www.virustotal.com

검사를 해보게 되면 72개의 백신 프로그램중 35개의 백신 프로그램에서 악성 프로그램이라고 진단한 것을 알 수 있습니다. 악성 코드가 존재하는 것이 거의 확실해보입니다. 

 

- 특정 프로그램의 메모리의 내용으로 덤프(추출)하고 분석해보기

이제 실제 reader_sl.exe 프로세스의 내용을 한번 분석해보겠습니다. 일단 메모리 내용을 덤프하기위해서는 memdump 명령어가 사용됩니다.

volatility_2.6_win64_standalone.exe -f cridex.vmem --profile=WinXPSP2x86 memdump -p 1640 -D ./dumps

1640.dmp 파일이 추출된 것을 볼 수 있습니다. 이걸 hxd 에서 보게되면 쓰레기 값들이 많이 있는 파일을 볼 수 있습니다.

의미 있는 값들을 보기위해선 전에 다운받았던 SysinternalsSuite의 string 응용프로그램을 통해 필터링을 해줘야합니다. 먼저 환경변수에 SysinternalsSuite를 저장해놓고 아래 명령어를 실행해줍니다.

strings ./dumps/1640.dmp > strings_1640.log

해당 문서를 notepad++로 열어보면 

이렇게 조금은(?) 의미있는 값들이 나옵니다. 해당 의미있는 값들중에 41.168.5.140와 통신에 대한 자료들이 있는지 검색해봅시다. cntl-f 하고 현재 문서에서 찾기 및 아이피값을 넣어주면 아래와같이 됩니다.

2개가 나오네요. 첫번째 것을 봐봅시다. 노란색 부분을 더블클릭 해줍시다.

뭔가 하나의 ip가 아닌 여러개의 ip로 접속을 하는 코드가 있는 것 같습니다. 그중에서는 실제로 통신했던 41.168.5.140도 있습니다. 또한 zb/v_01_a/in 이라는 경로도 보이네요 여기에는 무슨 파일이 있는걸까요? 검색을 해보겠습니다.

뭔가 cp.php파일이 있는 것으로 보입니다. 또한 그 위에 Bank라는 글씨도 보입니다.

Bank라는 글씨가 엄청 많이 있는 것으로 확인됩니다. reader_ls.exe 프로그램은 PDF 작성 실행파일로 Bank랑 전혀 연관이 없을텐데 말입니다... 아마 해커는 Bank 사이트를 만들어두고 사용자들이 접속하여 실제 은행웹사이트인줄 알고 아이디랑 비밀번호를 입력하면 그걸 가져가는 피싱수법을 위해 해당 프로그램을 만든 것으로 확인됩니다.

 

- 결론

PDF 관련 프로그램인 reader_ls.exe 프로세스를 실행하면 41.168.5.140 와 같은 해커의 홈페이지와 통신을 하고, 그 이후 가짜 은행 홈페이지를 불러오고 거기에 사용자들이 아이디와 비밀번호를 입력하면 그걸 가로채는 방식을 위해 생성된 프로세스인 것으로 확인되었습니다.

Comments