관리 메뉴

JHLBLUE

Gandcrab V3 분석 본문

악성코드 분석

Gandcrab V3 분석

JHLBLUE 2018. 6. 5. 02:44

한동안 갠드크랩이라는 랜섬웨어가 유행할 때 공부 목적으로 샘플을 하나 받아서 분석을 진행해 보았다.


내가 샘플로 받은 갠드크랩은 이력서로 위장하여 js 파일 실행을 유도하는 랜섬웨어였다.


1. 아래 그림과 같이 이력서를 사칭하여 악성코드를 다운로드 받을 수 있는 링크를 포함하여 피해자에게 전송하는 메일을 확인할 수 있다.


그림 1 이력서를 사칭한 메일 수신


2. 다운로드 링크를 Ubuntu 환경에서 연결했을 때는 파일을 다운로드 받을 수 없었고, Windows 운영체제에서 연결했을 때는 tae_min_resume.zip 파일 다운로드가 가능했다.


그림 2 Ubuntu 환경에서 다운로드 링크를 클릭했을 때


그림 3 Windows 환경에서 다운로드 링크를 클릭했을 때


3. tae_min_resume.zip 파일을 압축 관련 도구로 열면 resume.js 파일이 압축되어 있는 것을 확인할 수 있다.


그림 4 다운로드 받은 zip 파일과 압축해제로 획득한 js 파일


4. resume.js 파일을 에디터로 열면 난독화된 자바스크립트 코드를 확인할 수 있으며, 해당 자바스크립트 코드들은 난독화된 스크립트를 복호화 한 뒤 해당 코드를 실행하도록 작성되었다.

그림 5 난독화된 코드와 복호화 하는 함수


복호화 작업은 크롬의 콘솔에서 실행코드를 제외한 복호화 코드만 실행하였다.

그림 6 크롬 콘솔에서 복호화된 코드


5. 복호화된 코드는 크게 4개의 단계로 구분지었는데, 각각 WScript 관련 변수 초기화, 레지스트리 등록, 악성코드 다운로드, 확장자 변경 및 실행이다.


그림 7 WScript 관련 코드


WScript 관련 코드에서는 "Win32_OperatingSystem" 이라는 코드를 통해 피해자 PC의 운영체제 정보를 획득하는 것으로 추측할 수 있다.


그림 8 레지스트리 등록 관련 코드

레지스트리 등록 관련 코드는 위의 단계에서 획득한 운영체제 정보에 따라서 달라지지만, 공통적으로 HKCU\Software\classes\@@@\Shell\iopen\command 경로를 포함하는걸로 보아 UAC 우회 기법이 적용되었다는 것을 확인할 수 있다.


그림 9 악성코드 다운로드 관련 코드

해당 코드에는 악성코드를 다운로드 받을 수 있는 총 3개의 url 정보가 들어있었으며, 현재는 모든 url에서 악성코드를 다운로드 받을 수 없으므로 해당 스크립트 실행만으로는 랜섬웨어에 감염이 되지 않는다.

악성 스크립트 안의 악성코드 다운로드 url에 연결하면 1.pdf라는 파일을 다운로드 할 수 있으며, 다운로드 파일은 확장자는 pdf이지만 시그니처 분석과 리눅스의 file 명령, 악성 스크립트의 확장자 변경 관련 코드 등을 통해 exe 실행파일임을 알 수 있다.


그림 10 랜섬웨어 악성코드 파일 다운로드


그림 11 다운로드 한 pdf 파일의 이름 및 확장자

그림 12 file 명령으로 해당 파일 정보 확인


6. 해당 파일을 IDA(다운로드 링크)로 실행하여 Imports 탭에서 호출하는 함수 리스트를 확인해보면 IsDebuggerPresent, OutputDebugString 등의 함수가 포함되어 있어 ollydbg 등의 디버깅 도구로는 동적 디버깅이 불가능하다.

그림 13 악성코드가 호출하는 API 리스트


7. Wireshark 도구를 실행한 뒤 캡처를 시작한 상태에서 악성코드의 확장자를 exe로 변경한 뒤 실행한 결과 DNS Query와 IP주소 획득, C&C 서버로 추측되는 서버와 통신을 하는 과정들을 확인할 수 있다.

그림 14 DNS Query로 carder.bit의 ip주소 획득


그림 15 피해자 PC의 외부 IP 주소 획득


그림 16 C&C서버로 추청되는 서버와 통신 내용


8. 악성코드가 실행될 때 ProcessExplorer(다운로드 링크) 도구를 이용하여 메모리에 저장된 악성코드의 strings 정보를 받아오면 정적분석으로는 확인할 수 없었던 함수들과 레지스트리 정보, shutdown 명령어 등의 다양한 값들을 확인할 수 있다.


그림 17 메모리상에서 보이는 암호화 관련 함수 리스트


그림 18 레지스트리 관련 정보


그림 19 shutdown 명령어, http POST 요청 관련 내용


9. 암호화가 완료되면 배경화면이 변경되고, shutdown 명령이 실행되어 1분 뒤에 재부팅을 시도한다.


그림 20 암호화 완료 후 시스템 자동 재시작


10. 재부팅이 완료되면 CRAB-DECRYPT.txt 파일을 열며, Tor 브라우저를 다운로드 하도록 유도한다.


그림 21 재시작 후 txt 파일 오픈


11. 재부팅이 완료된 상태에서 ProcessExplorer 도구를 이용해 프로세스 실행 정보를 확인해보면 랜섬웨어 파일이 다시 실행중임을 알 수 있다.


그림 22 재시작 후 프로세스 리스트


12. ProcessExplorer 도구를 이용해 자동실행 경로를 확인하면 해당 경로에 랜덤한 이름으로 저장된 랜섬웨어 악성코드와 자동실행 관련 레지스트리 값이 저장되어 있음을 확인할 수 있다.


그림 23 랜덤한 이름으로 저장된 랜섬웨어 파일


그림 24 레지스트리에 등록된 자동실행 관련 데이터


코드분석 작업까지 완료하여 좀 더 수준 높은 분석을 하고 싶었지만 코드 분석까지는 불가능하여 제한적인 동적 분석까지만 완료하였다.

Comments