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

확장자 별 암호화 방식의 차이를 보이는 GandCrab v5.2

by 분석팀 2019. 4. 15.

자사 블로그에서 이전 부터 언급해왔던 것처럼 GandCrab은 다양한 방식으로 유포 중이다. 지금까지 GandCrab은 버전을 업데이트하며 변화를 주어왔는데, 현재까지 확인되는 최신 내부 버전은 v5.2이다. 자사에서는 이 v5.2버전의 암호화 대상 확장자를 확인하는 방법과 이에 따라 암호화 방식이 이전 버전과 다르다는 것을 발견하였다. (기존에 공유 된 암호화 방식 : https://asec.ahnlab.com/1153)

 

GandCrab v5.2는 확장자 리스트를 3가지 그룹으로 분리하여 관리 및 확인하는데, 그 구성은 아래와 같다.

 

 

[그림 1] - 확장자 리스트 테이블 구성

 

 

위에 언급 된 것과 같이 첫 번째 확장자 리스트는 해당 확장자일 경우 암호화에서 제외하고 두 번째 확장자 리스트의 경우 사실상 내부 코드에서 비교 후 사용되어지는 부분이 없어 페이크성으로 리스트만 가지고 있는 것으로 추측된다. 따라서 실제적으로 암호화를 수행하며 세번째 확장자 리스트에 포함되지 않기 때문에 0x100000크기만큼 암호화를 수행한다. (이 내용은 하위에 자세히 설명한다.) 또한 마지막 세 번째 확장자 리스트들의 경우 이 확장자에 매치 될 경우와 그렇지 않을 경우에 따라 암호화하는 방식에 차이를 둠을 알 수 있었다.

 

GandCrab v5.2 암호화에 필요한 키를 사용하는 방식은 이전에 자사에서 공개하였던 기존 v4.x과 다르지 않다. 다만, 암호화 된 Salsa20키나 로컬 개인키를 기존에는 레지스트리에 저장하였으나 현재는 저장하지 않고 랜섬노트에만 Base64암호화하여 저장하기 때문에 공격자에게 복구를 요청할 때 랜섬노트가 필수적으로 있어야 할 것으로 보인다.

 

[그림2] - 기존과 동일한 방식으로 관리되는 암호화 키 정보들

 

파일 암호화 시 기존 버전과 같이 Salsa20알고리즘을 이용한다. 파일의 앞에서 부터 0x100000크기만큼 나눠서 암호화를 진행한다. 세 번째 확장자 리스트에 매치될 경우 파일 전체를 암호화하고 그렇지 않을 경우, 파일 가장 앞부터 0x100000위치까지만 암호화한다. 그리고 파일 하위에 이 정보를 아래와 같이 저장한다.

 

 

 

[그림 3] - 암호화 후 하위에 저장하는 데이터 정보

 

 

즉 하위에 '암호화된 크기'가 저장 될 때 결국 세 번째 확장자 리스트에 매치될 경우 암호화 대상 원본 파일의 크기와 동일한 데이터가 저장되고, 매치되지 않을 경우에는 0x100000이 저장(파일 크기가 0x100000보다 작을 경우)되는 것이다. 따라서 파일의 크기가 0x100000보다 크고 위 세 번째 리스트에 매치되지 않으면 아래와 같이 데이터가 저장 될 것이다. 아래 [그림 4]에서 빨간색의 데이터는 비교시 다른 부분을 뜻한다.

 

 

[그림 4] - 실제 암호화 된 파일 결과로 비교

 

그리고 확장자 별 암호화를 다르게 수행하는 루틴을 통해 암호화 제외 조건을 추가적으로 확인 할 수 있었는데 그 내용은 아래와 같다.

 

1.   [그림 2]에서와 같이 암호화 후 하위에 저장되는 데이터 중 고정된 값으로 '0x1829899381820300'을 확인 할 수 있는데 이 값이 존재 할 경우 암호화 대상에서 제외된다. 따라서 한 번 암호화 된 파일은 재 감염(암호화)되지 않는다.

 

2. 대상 파일에 접근 시 CreateFile API를 사용하는데 이 때 dwFlagsAndAttributes 속성에 0x88000000을 세팅하기 때문에 암호화 대상에 포함되는 확장자이더라도 속성이 '읽기전용'일 경우 암호화에서 제외된다. 

 

 

따라서  암호화 제외 조건을 총정리하면 아래와 같다.

 

1. 확장자가 아래와 같을 경우 (위 테이블에서 첫 번째 확장자 리스트) 

ani, cab, cpl, cur, diagcab, diagpkg, dll, drv, lock, 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, gandcrab, KRAB, CRAB, zerophage_i_like_your_pictures (42)

 

2. 파일 명에 아래와 같은 데이터가 포함 될 경우

desktop.ini
ntuser.dat
iconcache.db
bootsect.bak
boot.ini
ntuser.dat.log
thumbs.db
-DECRYPT.txt
-DECRYPT.html
CRAB-DECRYPT.html
KRAB-DECRYPT.txt
CRAB-DECRYPT.txt
ntldr
NTDETECT.COM
Bootfont.bin

 

3. 폴더 경로에 아래와 같은 데이터가 포함 될 경우

\program data\
\IETIdCache\
\Boot\
\Program Files\
\Tor Browser\
\All Users\
\Local Settings\
\Windows\

 

4. 파일 끝에 아래와 같은 값이 존재할 경우

0x1829899381820300

 

5. 파일의 속성이 '읽기 전용'일 경우

 

 

자사에서는 지속적으로 GandCrab의 유포 및 세부적 기능의 변화를 모니터링하고 있으며 진단법 또한 지속 업데이트 중이다. 

 

파일 진단

Trojan/Win32.Agent

Trojan/Win32.Gandcrab

Malware/Win32.Generic 

 

행위진단

Malware/MDP.Ransom.M1171

 

 

댓글