포스팅 내용

악성코드 분석 리포트

Trojan.Ransom.GandCrab 악성코드 분석 보고서

안녕하세요? 이스트시큐리티입니다.


올해 초 외국에서 스팸 메일과 익스플로잇 킷을 통해 ‘Trojan.Ransom.GandCrab’(이하 GandCrab 랜섬웨어)이 처음 등장하였으며, 최근 국내에서도 GandCrab 변종들이 다수 발견되고 있습니다. GandCrab 랜섬웨어는 파일 암호화 기능을 수행하며, 암호화된 파일 뒤에 ‘.CRAB’ 확장자를 추가하는 점이 특징입니다.


따라서 본 보고서에서는 GandCrab 랜섬웨어를 상세 분석하고자 합니다.



악성코드 상세 분석


1. 중복 실행 방지

중복 실행 방지를 위해 뮤텍스 값을 ‘Global\pc_group=(소속 그룹)&ransom_id=(사용자 ID)’으로 생성합니다. 만일 동일한 프로세스가 실행 중인 경우 종료합니다. pc_group과 ransom_id 값은 각각 PC의 작업 그룹 이름, 하드디스크 시리얼 넘버와 CPU 정보를 CRC32로 인코딩한 값입니다.


[그림 1] 중복 실행 방지 코드



2. 자가 복제 및 자동 실행 등록

현재 실행 중인 자기 자신의 프로세스 경로가 임시 폴더(%TEMP%)가 아닌 경우 ‘%APPDATA%\Microsoft\’에 ‘[임의 영문 6자리].exe’로 자가 복제합니다.


 

[그림 2] 자가 복제 코드

 

윈도우 부팅 시 자동 실행되도록 자가 복제된 파일을 자동 실행 레지스트리에 등록합니다.


[그림 3] 자동 실행 레지스트리 등록



3. 정보 전송


1) C&C 주소 획득

다음은 C&C 주소를 획득하는 코드입니다. ‘nslookup’ 윈도우 프로그램을 통해 하드코딩된 도메인으로부터 C&C 주소를 가져온다. 감염된 기기가 오프라인 환경인 경우 프로그램을 더 이상 진행하지 않습니다.


[그림 4] nslookup 명령어를 통해 C&C 주소를 얻는 코드


본 악성코드에서 연결 시도하는 하드코딩된 도메인들은 다음과 같습니다.


하드코딩된 도메인 항목

zonealarm.bit, ransomware.bit

[표 1] 하드코딩된 도메인 항목



2) 시스템 정보 수집

시스템 정보 수집 대상에는 공인 IP, 사용자 이름, 컴퓨터 이름, 컴퓨터 소속그룹, 현재 실행중인 백신 프로세스, PC 언어, 러시아어 사용 유무, 운영체제 정보, 랜섬웨어 ID, 하드디스크 정보, 생성된 RSA 공개키 및 비밀키 정보가 포함됩니다. 다음은 수집되는 항목 중 ‘현재 실행중인 백신 프로세스’를 확인 및 수집하는 코드입니다.


[그림 5] 실행 중인 백신 프로세스 확인


수집 대상 백신 프로세스 목록은 다음 표와 같습니다.


백신 프로세스 수집 대상 목록

AVP.EXE, ekrn.exe, avgnt.exe, ashDisp.exe, NortonAntiBot.exe, Mcshield.exe, avengine.exe, cmdagent.exe, smc.exe, persfw.exe, pccpfw.exe, fsguiexe.exe, cfp.exe, msmpeng.exe

[표 2] 현재 실행중인 백신 프로세스 확인 목록



3) 정보 전송 및 수신

정보 전송은 파일 암호화 이전과 이후에 이루어집니다. 암호화 이전에는 수집한 시스템 정보와 ‘action=call’과 ‘&id=39&subid=92’, ‘&version=1.2.5’를 전송합니다. 암호화 이후에는 암호화 통계, 컴퓨터 소속 그룹, 랜섬웨어 사용자 ID와 함께 ‘action=result’를 전송합니다. id, subid는 악성코드 파일 끝에 있는 base64로 된 문자열을 디코딩한 값이며, action, version은 각각 ‘암호화 시작/결과’와 ‘악성코드 버전 정보’를 의미하는 것으로 보입니다. C&C로 송신 할 데이터는 인코딩되어 전송됩니다. 다음은 ‘송신 데이터와 수신 데이터’를 정리한 표입니다.


 

암호화 이전

암호화 이후

송신 데이터

action=call&

ip=(공인 IP)

&pc_user=(사용자 이름)

&pc_name=(컴퓨터 이름)

&pc_group=(컴퓨터 소속 그룹)

&av=(실행 중인 백신 프로세스 리스트)

&pc_lang=(컴퓨터 언어)

&pc_keyb=(러시아어 사용 유무)

&os_major=(OS 버전)

&os_bit=(운영체제 비트)

&ransom_id=(랜섬웨어 사용자 ID)

&hdd=(디스크 정보)

&id=39&subid=92

&pub_key=(RSA 공개키)

&priv_key=(RSA 비밀키)

&version=1.2.5

action=result

&e_files=(암호화된 파일 개수)

&e_size=(암호화된 데이터 크기)

&e_time=(암호화 소요 시간)

&pc_group=(컴퓨터 소속 그룹)

&ransom_id=(랜섬웨어 사용자 ID)

수신 데이터

암호화된 RSA 공개키

-

[표 3] 송신 데이터와 수신 데이터


파일 암호화 이전에 정보 전송이 정상적으로 이루어진 경우, 서버로부터 RSA 공개키를 가져와 파일 암호화에 사용합니다. 만일 서버에 연결이 되지 않는 경우, 기존에 생성한 RSA 공개키를 파일 암호화에 사용합니다. 다음은 C&C 연결에 따른 공개키가 달라지는 코드입니다. 


[그림 6] C&C 연결에 따른 RSA 공개키 사용



4) 파일 암호화

① 암호화 환경 확인

키보드 레이아웃 중에 러시아가 있는 경우 암호화를 진행하지 않고 종료합니다.


[그림 7] 암호화 환경 확인


② 파일 암호화를 위한 프로세스 종료

파일 암호화 전, 암호화 대상 파일의 쓰기 권한을 확보하기 위해 MS 오피스, 스팀, SQL 관련 프로세스를 종료합니다.


프로세스 종료 목록

msftesql.exe, sqlagent.exe, sqlbrowser.exe, sqlservr.exe, sqlwriter.exe, oracle.exe, ocssd.exe, dbsnmp.exe, synctime.exe, mydesktopqos.exe, agntsvc.exeisqlplussvc.exe, xfssvccon.exe, mydesktopservice.exe, ocautoupds.exe, agntsvc.exeagntsvc.exe, agntsvc.exeencsvc.exe, firefoxconfig.exe, tbirdconfig.exe, ocomm.exe, mysqld.exe, mysqld-nt.exe, mysqld-opt.exe, dbeng50.exe, sqbcoreservice.exe, excel.exe, infopath.exe, msaccess.exe, mspub.exe, onenote.exe, outlook.exe, powerpnt.exe, steam.exe, sqlservr.exe, thebat.exe, thebat64.exe, thunderbird.exe, visio.exe, winword.exe, wordpad.exe

[표 4] 프로세스 종료 목록


③ 암호화 대상 확인

이동식 디스크, 하드 디스크, 네트워크 디스크에서 다음의 파일 경로, 이름, 확장자 문자열을 제외한 10바이트 이상의 파일에 대해 암호화를 진행합니다. 제외 문자열을 지정한 이유는 불필요한 암호화를 피하기 위함과 시스템 불안정을 방지하려는 것으로 보입니다.


암호화 제외 경로 문자열

\\ProgramData\\, \\IETldCache\\, \\Boot\\, \\Program Files\\, \\Tor Browser\\, Ransomware, \\All Users\\, \\Local Settings\\, \\Windows\\

[표 5] 암호화 제외 경로 문자열

 

암호화 제외 파일 이름 문자열

desktop.ini, autorun.inf, ntuser.dat, iconcache.db, bootsect.bak, boot.ini, ntuser.dat.log, thumbs.db, CRAB-DECRYPT.txt

[표 6] 암호화 제외 파일 이름 문자열

암호화 제외 확장자 문자열

.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

[표 7] 암호화 제외 확장자 문자열


④ 파일 암호화

다음은 AES 및 RSA으로 파일을 암호화하는 코드입니다. 암호화가 완료된 파일은 기존 파일 이름 뒤에 ‘.CRAB’ 확장자가 추가됩니다.


[그림 8] 파일 암호화 코드


암호화된 파일은 ‘암호화된 데이터’, ‘암호화된 AES 키’, ‘암호화된 AES IV’, ‘암호화된 데이터 크기’의 구조를 갖습니다. AES의 IV(Initialization Vector)는 초기화 벡터로서, 암호화할 데이터의 첫 부분을 암호화할 때 사용되는 값입니다.


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



5) 파일 복원 방지

암호화된 파일의 복원을 방지하기 위해 볼륨 쉐도우 복사본을 삭제합니다. 다음은 운영체제 버전마다 달라지는 파일 복원 방지 명령어입니다.


운영체제

명령어

Vista OS 상위

"C:\Windows\system32\wbem\wmic.exe", "shadowcopy delete"

Vista OS 하위

"C:\Windows\system32\cmd.exe", "/c vssadmin delete shadows /all /quiet

[표 8] 운영체제 별로 나뉘는 파일 복원 방지 명령어



6) 결제 안내

암호화 대상 경로 마다 결제 안내를 유도하는 내용이 담긴 랜섬노트 파일 ‘CRAB-DECRYPT.txt’를 드롭합니다.


[그림 10] 랜섬노트 드롭 코드


파일 암호화가 끝난 뒤, ‘GandCrab 다크넷 주소’에 접속을 유도하기 위해 토르 웹 브라우저 프로그램을 다운받는 사이트를 띄우고, 생성된 랜섬노트로 이용자에게 암호화 사실을 알니다. 랜섬노트의 내용은 ‘당신의 모든 파일이 암호화되었으니, 복호화하기 위해서는 다크넷 접속, Jabber 메신저로 접속해서 결제를 해야 한다.’입니다.


[그림 11] 랜섬노트 ‘CRAB-DECRYPT.txt’ 파일 내용


다음은 토르 웹 브라우저에서 GandCrab 다크넷 사이트에 접속했을 때 화면이며, 달러(USD), 대시(DASH), 비트코인(BTC) 가상화폐로 지불을 요구합니다.


[그림 12] GandCrab 다크넷 사이트 화면


다음은 Jabber 메신저 화면이고, 현재 분석하는 시점에서 ‘ransomware@sj.ms’ 공격자 계정은 오프라인 상태입니다.

 

[그림 13] Jabber 메신저 화면



결론


국내에 악성 메일을 통해 유포되고 있는 GandCrab 랜섬웨어는 암호화 제외 문자열을 제외한 파일에 대해 암호화를 진행합니다. 또한 암호화된 파일을 복호화 해주는 대가로 달러를 포함한 대시, 비트코인과 같은 가상 화폐 결제를 요구합니다.


다른 랜섬웨어와 달리 러시아어 환경을 확인하는 점, 랜섬노트를 통해 다크넷 사이트와 Jabber 메신저 프로그램 등으로 결제를 유도하는 점을 특징으로 가지고 있습니다.


랜섬웨어를 예방하기 위해서는 메일에 첨부된 파일이나 링크에 대해 주의해야 하며, 윈도우, 애플리케이션을 최신으로 업데이트해야 합니다. 또한 중요한 자료는 정기적으로 외장 매체나 클라우드 서비스 등에 백업해서 피해를 최소화 할 수 있도록 해야 합니다.


현재 알약에서는 ‘Trojan.Ransom.GandCrab’ 으로 진단하고 있습니다.




티스토리 방명록 작성
name password homepage