1. 개요
2019년 상반기 랜섬웨어 동향 Part 2에서는 지난 Part 1. CLOP/Sodinokibi에 이어 작년 초부터 올해 상반기까지 국내에서 가장 활발하게 활동한 GandCrab 랜섬웨어와 공격자가 원격 데스크톱 접속을 통해 직접 감염시킨 사례가 있는 CrySiS 랜섬웨어에 대해 분석하였다.
갠드크랩(GandCrab) 랜섬웨어는 서비스형 랜섬웨어(Raas)로 랜섬웨어 제작자는 다크웹을 통해 갠드크랩을 판매하고 구매자에 대한 지속적인 업데이트를 제공해왔다. 갠드크랩을 구매하는 구성원들이 다양했기 때문에 갠드크랩이 유포되는 방식도 다양했다. 악성코드 유포지를 통하는 기본적인 방법부터 사회공학적 기법을 가미한 스피어피싱, 웹 어플리케이션 취약점을 이용한 워터링 홀, 그리고 0-day 취약점까지 다양한 방식을 활용했다.
크라이시스(CrySiS) 랜섬웨어는 2016년 2월부터 활동을 시작했다. 국내에서 자주 등장하진 않았으나 랜섬노트에 유포자의 이메일 주소를 작성한다는 특징과, 러시아 특정 S/W 업체를 겨냥한 공격이 주목할 만하다.
본 보고서를 통해 2019년 상반기를 휩쓴 갠드크랩 랜섬웨어와 다소 생소하지만 주목할 만한 크라이시스 랜섬웨어에 대해 살펴보도록 하자.
2. GandCrab Ransomware
1) 개요
갠드크랩(GandCrab) 랜섬웨어는 서비스형 랜섬웨어(Raas)로 랜섬웨어 제작자는 다크웹을 통해 갠드크랩을 판매하고 구매자에 대한 지속적인 업데이트를 제공하며, 갠드크랩 구매자는 갠드크랩을 유포한 후 벌어들인 수익의 일부를 판매자에게 제공한다. 랜섬웨어의 기본 악성행위인 파일 암호화는 물론이고 실행 중인 백신 프로그램을 기록하거나 특정 프로세스를 종료하며, 감염된 시스템의 정보를 탈취한다. 마지막으로 복구 불가능하도록 볼륨 섀도 카피를 삭제한다.
구분 | 내용 |
프로세스 | - 실행 중인 백신 프로그램 기록, 특정 프로세스 강제 종료 |
파일 | - 파일 암호화, 볼륨 섀도 카피 삭제 |
네트워크 | - 시스템 정보 탈취 |
[표 1] 갠드크랩 랜섬웨어 행위 요약
2) 유포 방식
갠드크랩 랜섬웨어는 다양한 구매자가 있어 그 유포 방식도 매우 다양하게 나타났다. 주요 유포 방식을 정리하면 다음과 같다.
구분 | 내용 |
악성코드 유포지 | - 랜섬웨어가 유포되는 사이트로 사용자 접근 유도 |
스피어 피싱 | - 신뢰할 만한 기관을 사칭해 악성 메일에 랜섬웨어를 첨부하여 실행 유도 |
워터링 홀 | - 취약한 웹 사이트 방문 시 랜섬웨어 다운로드 및 실행 |
취약점 공격 | - 수집된 데이터를 특정 C2 서버로 전송하기 위해 통신 시도 |
[표 2] 갠드크랩 랜섬웨어 유포 방식
① 악성코드 유포지를 이용한 랜섬웨어 유포 방식
구글 드라이브와 같은 클라우드 환경이나 웹하드와 같은 파일 공유 사이트에 업로드 되어 있는 악성코드를 사용자가 직접적으로 다운로드 받아 실행하는 형태이다.
[그림 2]와 같이 구글 드라이브를 통해 비실행형 파일로 악성코드가 유포되는 경우 사용자의 보안 솔루션을 우회할 수 있어 공격자들에게 인기 있는 공격 기법이다. [그림 3]에서 보이는 것처럼 베리즈 웹쉐어와 같은 파일 공유 프로그램은 누구나 손쉽게 서버를 구축할 수 있어 공격자들도 자주 사용한다.
[그림 2] 악성코드 유포지(Google Drive)
[그림 3] 악성코드 유포지 구성도(Berryz WebShare)
② 스피어 피싱을 이용한 랜섬웨어 유포 방식
공격자들은 사용자가 신뢰할 수 있도록 정부 또는 사법 기관을 사칭하여 메일을 발송한다. 해당 메일에는 악성코드를 실행시켜주는 첨부파일이 메일에 첨부된 경우가 많다. 이러한 스피어 피싱 공격을 이용한 악성코드 유포 방식은 성공률이 높아 가장 인기 있는 방식이기도 하다.
[그림 4] 스피어 피싱 구성도
[그림 5]는 국내 헌법재판소를 사칭하여 메일 수신자로 하여금 첨부파일을 열어볼 수밖에 없도록 유도한다. 또한, 첨부파일이 압축파일 형태로 존재하므로 보안 솔루션을 우회할 수 있다. [그림 6]에서 나타난 스피어 피싱 메일은 워드 문서 파일이 첨부되어 있다. 해당 문서 파일은 암호로 잠겨 있으며, 문서 암호를 메일 본문에서 제공하고 있어 좀 더 정교한 공격에 속한다.
[그림 5] 스피어 피싱(WinRAR 압축파일 첨부)
[그림 6] 스피어 피싱(MS Word 문서파일 첨부)
③ 워터링 홀을 이용한 랜섬웨어 유포 방식
공격자가 사전에 취약한 웹사이트를 공격하여 해킹에 성공하는 경우 해당 웹사이트에 악성코드를 삽입할 수 있다. 이렇게 삽입된 악성코드는 해킹된 웹사이트를 방문하는 사용자의 컴퓨터에서 실행되어 랜섬웨어 다운로드 및 실행과 같은 추가 악성행위를 수행한다.
[그림 7] 워터링 홀 구성도
[그림 8] 취약한 웹 사이트에 삽입된 악성코드 #1
[그림 9] 취약한 웹 사이트에 삽입된 악성코드 #2
[그림 10] 삽입된 악성코드가 다운로드 하는 랜섬웨어 파일
④ 취약점 공격을 이용한 랜섬웨어 유포 방식
공격자는 종종 정상 소프트웨어에서 버퍼 오버플로우(Buffer Overflow)나 메모리 재사용(Use-after-free)과 같은 취약점을 찾아낸 후 이를 악용하여 악성코드를 실행시킨다.
[그림 11] 취약점 공격 구성도
[그림 12]는 인터넷 익스플로어(Internet Explorer) 취약점(CVE-2016-0189)을 이용한 랜섬웨어 유포 사례이다. 또, [그림 13]은 어도비 플래시 플레이어(Adobe Flash Player) 취약점(CVE-2018-4878)을 이용해 랜섬웨어를 실행한 사례이다.
[그림 12] CVE-2016-0189 취약점
[그림 13] CVE-2018-4878 취약점
3) 행위 상세분석
아래의 표는 갠드크랩 랜섬웨어의 각 버전별 악성행위를 요약한 정보이다. 공통 모듈에 대해서 간략하게 기술한 후 버전에 따른 차이점을 기술하고자 한다.
갠드크랩 버전별 행위 정보 |
구분 | Ver. 1.0 | Ver. 2.0 | Ver. 3.0 | Ver. 4.0 | Ver. 5.2 |
시스템 정보 탈취 | 공통 모듈 |
백신 프로그램 기록 |
특정 프로세스 종료 |
파일 암호화 |
볼륨 섀도 카피 삭제 |
킬 스위치 | X | O | O | X | X |
자동 실행 등록 | O | X | X | X | X |
네트워크 통신 | O | O | O | X | X |
공개키/개인키 관리 | C & C | C & C | C & C | REGISTRY | X |
암호화 알고리즘 | RSA | RSA | RSA | RSA/Salsa20 | RSA/Salsa20 |
암호화 대상 확장자 목록 | White-List | Black-List | Black-List | Black-List | White-List / Black-List |
바탕화면 변경 | X | X | O | X | O |
시스템 강제 재부팅 | X | X | O | X | X |
[표 3] 갠드크랩 버전별 행위 정보
※ 동일한 버전이라도 샘플에 따른 악성행위의 차이점이 발생할 수 있음.
① 공통 모듈 분석
갠드크랩 랜섬웨어는 다음과 같은 5개의 공통 모듈(▲ 시스템 정보 탈취, ▲ 실행 중인 백신 프로그램 기록, ▲ 특정 프로세스 종료, ▲ 파일 암호화, ▲ 볼륨 섀도 카피 삭제)을 가진다. 각 모듈은 버전별 기능 보강 또는 삭제를 수행한 것으로 확인되었다.
탈취하는 시스템 정보는 기본적으로 사용자 이름, 컴퓨터 이름, 언어, OS 정보, 하드디스크 정보, 랜섬웨어 버전 정보로 구성된다.
[그림 14] 시스템 정보 탈취 모듈
탈취되는 시스템 정보 항목은 버전별로 약간의 차이가 있다. 버전 3.0 이하에서는 C2 서버와의 통신을 수행하기 때문에 공인 IP 주소와 공개키/개인키를 C2 서버로 전송하였다. 그러나 버전 4.0 이상부터는 C2 서버와 통신을 수행하지 않기 때문에 해당 파라미터가 제거되었다.
구 분 | 갠드크랩 v1.0 ~ v3.0 | 갠드크랩 v4.0, v5.2 |
C2 제어 명령 | action | (action) |
공인 IP 주소 | ip | - |
사용자 이름 | pc_user | pc_user |
컴퓨터 이름 | pc_name | pc_name |
작업그룹 | pc_group | pc_group |
백신 프로그램 목록 | av | av |
컴퓨터 언어 | pc_lang | pc_lang |
키보드 레이아웃 | pc_keyb | pc_keyb |
OS 버전 | os_major | os_major |
CPU 비트 수 | os_bit | os_bit |
랜섬웨어 식별번호 | ransom_id | ransom_id |
하드디스크 정보 | hdd | hdd |
고유식별번호 | id | id |
부식별 번호 | subid | sub_id |
갠드크랩 공개키 | pub_key | - |
갠드크랩 개인키 | priv_key | - |
갠드크랩 버전 | version | version |
[표 4] 갠드크랩 버전별 탈취 정보 항목
실행 중인 백신 엔진을 검색 후 기록한다.
[그림 15] 백신 프로그램 검색 모듈
국가 | 공급업체 | 백신 프로그램 |
미국 | COMODO | cmdagent.exe |
cfp.exe |
Kerio | persfw.exe |
Microsoft | msmpeng.exe |
Network Associates | Mcshield.exe |
Symantec | NortonAntiBot.exe |
smc.exe |
Trend Micro | pccpfw.exe |
러시아 | Kaspersky Lab | AVP.EXE |
독일 | Avira | avgnt.exe |
스페인 | Panda Security | avengine.exe |
슬로바키아 | ESET | ekrn.exe |
체코 | Avast | ashDisp.exe |
핀란드 | F-Secure | fsguiexe.exe |
[표 5] 검색 대상 백신 프로그램 목록
현재 실행 중인 특정 데이터베이스, 이메일, 사무, 게임 관련 프로세스를 종료한다. 이는 랜섬웨어가 파일 암호화를 수행할 때, 관련된 프로세스가 해당 파일을 사용하면서 발생할 수 있는 오류를 방지하기 위한 사전 작업으로 보인다.
[그림 16] 특정 프로세스 강제종료 모듈
구분 | 공급업체 | 백신 프로그램 |
데이터베이스 (Database) | MSSQL | sqlagent.exe, sqlbrowser.exe, sqlwriter.exe |
MySQL | mysqld.exe, mysqld-nt.exe, mysqld-opt.exe |
Oracle | oracle.exe, ocssd.exe, dbsnmp.exe, synctime.exe, agntsvc.exe, isqlplussvc.exe, xfssvccon.exe, sqlservr.exe, mydesktopservice.exe, ocautoupds.exe, firefoxconfig.exe, tbirdconfig.exe, mydesktopqos.exe, ocomm.exe |
SQL Anywhere | dbeng50.exe |
SQL Backup | sqbcoreservice.exe |
이메일 (E-mail) | Mozilla | thunderbird.exe |
Ritlabs | thebat.exe, thebat64.exe |
게임(Game) | Valve | steam.exe |
사무 (Office) | Microsoft | msftesql.exe, excel.exe, infopath.exe, msaccess.exe, mspub.exe, onenote.exe, outlook.exe, powerpnt.exe, visio.exe, winword.exe, wordpad.exe |
Citrix | encsvc.exe |
[표 6] 강제종료 대상 프로세스 목록
시스템에서 암호화 대상 파일을 탐색한 후 해당 파일을 암호화 한다.
[그림 17] 파일 암호화 모듈
랜섬웨어에 감염된 시스템이 복구 불가능 하도록 볼륨 섀도 카피를 삭제한다.
[그림 18] 볼륨 섀도 카피 삭제 모듈
② 버전별 기능 상세분석
갠드크랩 랜섬웨어는 버전에 따라 다음과 같은 7개의 기능(▲ 킬 스위치(Kill-switch), ▲ 자동 실행 등록, ▲ 네트워크 통신, ▲ 공개키/개인키 관리 방식 변경, ▲ 암호화 알고리즘 변경, ▲ 바탕화면 변경, ▲ 시스템 강제 재부팅)을 추가 또는 변경한다.
갠드크랩 v2.0, v3.0에서는 키보드 레이아웃을 검사한 후 ‘러시아어(ru-RU)’로 설정되어 있을 경우 악성행위를 수행하지 못하도록 랜섬웨어를 종료한다. 갠드크랩이 최초 유포된 곳은 러시아 해킹 포럼으로 알려져 있다. 갠드크랩 랜섬웨어 제작자는 해당 포럼을 통해 러시아 국가에 대한 유포 및 공격을 금지하고 있다. 킬 스위치는 이러한 정책을 잘 반영한 것으로 보인다.
[그림 19] 킬 스위치 미구현
[그림 20] 킬 스위치 구현(v2.0, v3.0)
갠드크랩 v1.0, v3.0 버전에서는 지속적인 랜섬웨어 악성행위를 위해 프로그램이 매 부팅마다 자동으로 실행되도록 레지스트리에 등록한다.
[그림 21] 자동 실행 등록(v1.0, v3.0)
구 분 | 내 용 |
레지스트리 경로 | HKCUSOFTWAREMicrosoftWindowsCurrentVersionRunOnce |
프로그램 이름 | %AppData%RoamingMicrosoft[RANDOM_STRING].exe |
[표 7] 자동 실행 등록 정보
갠드크랩 v3.0 버전까지는 탈취 정보와 공개키/개인키를 모두 C2 서버로 전송한다.
[그림 22] C2 서버 접속(~ v3.0)
갠드크랩 공개키/개인키 관리는 버전별로 차이가 있다. 버전 3.0 이하에서는 생성된 공개키/개인키를 C2 서버로 전송한다. 버전 4.0에서는 C2 서버와 통신을 수행하지 않기 때문에 생성된 공개키/개인키를 레지스트리에 각각 저장한다. 버전 5.0에서는 생성된 공개키/개인키를 별도로 저장하지 않는다.
[그림 23] 공개키/개인키 C2 전송(~ v3.0)
[그림 24] 공개키/개인키 레지스트리 저장(v4.0)
또한 암호화 알고리즘에도 버전별로 차이가 있다. 버전 3.0 이하에서는 공개키/개인키를 RSA 알고리즘을 이용하여 생성한다. 버전 4.0 이상에서는 공개키는 기존과 동일하게 RSA 알고리즘으로 생성하고, 개인키는 RSA 알고리즘과 Salsa20 알고리즘을 혼합하여 생성한다. 암호학에서 일반적으로 Salsa20 알고리즘은 RSA 알고리즘보다 더 우수한 것으로 알려져 있다.
[그림 25] 공개키/개인키 생성(~ v3.0)
[그림 26] 공개키 생성(v4.0 ~)
[그림 27] 개인키 생성(v4.0 ~)
갠드크랩 v3.0, v5.2에서는 바탕화면을 변경하여 사용자에게 랜섬웨어 감염 사실을 통지한다.
[그림 28] 바탕화면 변경(v3.0, v5.2)
갠드크랩 v3.0에서는 시스템을 강제로 재부팅하는 명령어가 존재한다.
[그림 29] 강제 재부팅(v3.0)
3. CrySiS Ransomware
1) 개요
크라이시스(CrySiS) 랜섬웨어는 2016년 2월부터 활동을 시작했다. 랜섬노트에는 토르(Tor) 네트워크 주소가 아닌 유포자의 이메일 주소가 작성되어 있다. 특징으로는 러시아 소프트웨어 공급업체인 ‘1C 컴퍼니(1C Company)’와 관련된 프로그램을 종료하며, 랜섬웨어에 감염된 시스템을 복구할 수 없도록 섀도 복사본을 삭제한다.
구분 | 내용 |
프로세스 | - 특정 프로세스 강제 종료, 특정 서비스 중지 |
파일 | - 로컬 드라이브의 파일 암호화 |
네트워크 | - 연결된 네트워크 드라이브의 파일 암호화 |
레지스트리 | - 자동 실행 등록 |
[표 8] 크라이시스 랜섬웨어 행위 요약
2) 유포 방식
크라이시스 랜섬웨어는 유포자가 Windows의 기본 원격 데스크톱 기능을 통해 직접 설치된 피해 사례가 있다. 주요 유포 방식을 정리하면 다음과 같다.
구분 | 내용 |
원격 데스크톱 | - Windows 관리 기능인 원격 데스크톱을 이용해 불법 접속 후 직접 실행 |
악성코드 유포지 | -랜섬웨어가 유포되는 사이트로 사용자 접근 유도 |
스피어 피싱 | - 신뢰할 만한 기관을 사칭해 악성 메일에 랜섬웨어를 첨부하여 실행 유도 |
[표 9] 크라이시스 랜섬웨어 유포 방식
① 원격 데스크톱 접속을 이용한 랜섬웨어 유포 방식
시스템 관리자는 관리 목적으로 원격 데스크톱 기능을 사용하기도 한다. Windows에서 기본적으로 제공해주는 mstsc 외에도 다양한 상용 원격 데스크톱 지원 프로그램이 존재한다.
순 번 | 원격 데스크톱 프로그램 | 프로토콜 | 포트 |
1 | MSTSC (Windows 기본) | RDP | 3389 |
2 | TeamViewer | TCP / UDP | 5938 |
HTTPS | 443 |
HTTP | 80 |
3 | TigerVNC | TCP | 5900 + N |
4 | Chrome Remote Desktop | XMPP | 5222 |
HTTPS | 443 |
UDP | ALL |
[표 10] 원격 데스크톱 지원 프로그램
[그림 30] 원격 데스크톱 접속 구성도
[그림 31] 원격 데스크톱 접속 패킷
3) 행위 상세분석
크라이시스 랜섬웨어를 실행할 경우 매 부팅마다 자동으로 실행되도록 레지스트리에 등록한다.
[그림 32] 자동 실행 등록
러시아어 등 키릴 문자로 코드페이지(1251)를 변경하고, 감염된 시스템의 섀도 복사본을 삭제한다.
[그림 33] 코드페이지 변경 / 섀도 복사본 삭제
코드페이지 변경 / 섀도 복사본 삭제 명령어 | mode con cp sele ct=1251 vssadmin delete shadows /all /quiet Exit |
[표 11] 코드페이지 변경 / 섀도 복사본 삭제 명령어
현재 운영 중인 서비스를 열거한 후 그 중 특정 서비스를 중지한다.
[그림 34] 특정 서비스 중지
중지 대상 서비스 목록 | mFirebirdGuardianDefaultInstance, FirebirdServerDefaultInstance,sqlwriter, mssqlserver, Sqlserveradhelper |
[표 12] 중지 대상 서비스 목록
현재 실행 중인 프로세스를 열거한 후 그 중 특정 프로세스를 강제 종료한다.
[그림 35] 특정 프로세스 강제 종료
강제 종료 대상 프로세스 목록 | 1c8.exe, 1cv77.exe, outlook.exe, postgres.exe, mysqld-nt.exe, mysqld.exe, sqlservr.exe |
[표 13] 강제종료 대상 프로세스 목록
로컬 및 네트워크 드라이브를 검색한 후 해당 드라이브 내 하위 파일과 디렉터리를 검색한다.
[그림 36] 로컬 드라이브 검색
[그림 37] 네트워크 드라이브 검색
[그림 38] 하위 파일/디렉터리 검색
검색된 파일이 암호화 제외 대상 파일이 아닌 경우 해당 파일을 암호화 한다.
[그림 39] 파일 암호화
암호화 제외 파일 목록 | boot.ini, bootfont.bin, ntldr, ntdetect.com, io.sys |
[표 14] 암호화 제외 파일 목록
랜섬웨어 복구 방법과 유포자의 메일 주소가 적힌 랜섬노트를 생성한다.
[그림 40] 랜섬노트 생성
4. 대응방안
랜섬웨어는 감염 시 시스템에 막대한 피해를 입히며, 복호화 툴이 공개되지 않은 랜섬웨어에 감염되는 경우 데이터를 복구할 수 없다. 따라서 감염이 되지 않는 것을 가장 우선으로 해야 하며 감염 시 추가 감염이 발생할 수 있는 루트를 확인 후 차단해야 한다.
① 신뢰되지 않은 발신자 또는 기관으로부터 접수된 메일의 링크/첨부파일 열람금지
다양한 랜섬웨어 유포자들이 가장 많이 사용하는 방법이다. 다양한 기관 및 특정 인물 등을 사칭하여 메일을 유포하며 악성 메일의 내용은 점점 정교해지고 있다. 어색한 한국어 사용, 첨부파일 및 링크 실행을 요구, 알 수 없는 이메일 계정으로 발신, 해킹 위협, 별 내용 없어 보이는 첨부파일 등의 수상한 이메일에 첨부되어 있는 첨부파일은 절대로 실행하지 않는 것을 권고한다.
② 보안 패치
최근 다양한 원데이 및 제로데이 취약점을 악용하여 시스템에 침투한 후 랜섬웨어를 유포하는 공격이 발생하고 있다. 랜섬웨어 유포자들은 공격 목표로 정한 기관이 웹사이트를 운영할 경우 랜섬웨어를 감염시키기 위해 웹사이트의 취약점을 이용하기도 한다. 그러므로 웹사이트를 운영하는 경우 정기적인 취약점 점검을 통해 워터링 홀, 멀버타이징 공격을 가능하게 하는 잠재적인 보안 위협을 제거하여야 한다. 또, 사용 중인 환경은 항상 최신 버전으로 업데이트를 유지할 것을 권고한다.
③ 원격 데스크톱(RDP) 설정 관리
Windows 운영체제 시스템의 경우 관리 목적상으로 원격 데스크톱 기능을 사용할 수 있다. 랜섬웨어 유포자들이 계정 정보를 수집가능한 경우 원격 데스크톱 기능을 이용해 무단으로 시스템에 직접 침투할 수 있다. 실제 원격 데스크톱(RDP) 무차별 대입 공격을 통해 시스템에 랜섬웨어를 직접 설치한 사례가 있으므로 관리 목적상 원격 데스크톱을 사용해야 한다면 복잡한 암호 설정이나 로그인 실패 횟수 제한, 보안 감사 등 접근제어에 대한 적절한 정책이 요구된다.
④ 안티 바이러스 제품 실시간 검사 및 업데이트 (분석에서 사용된 샘플)
순 번 | 구 분 | MD5 |
1 | GandCrab v1.0 | 2548E6FC9EB17E55D22DCFB4BF27212D |
2 | GandCrab v2.0 | BE7B200D211566A3A91C7F832559B461 |
3 | GandCrab v3.0 | BC4B14B3358AA5AB15F2C134234EB333 |
4 | GandCrab v4.0 | 97A910C50171124F2CD8CFC7A4F2FA4F |
5 | GandCrab v5.2 | C40D7668F6B30AF09C1B7CAC861E8F7D |
6 | CrySiS | 0AAAD9FD6D9DE6A189E89709E052F06B |
[표 15] 해시 정보
⑤ 방화벽 또는 IPS에서 IoC 정보 탐지 및 차단 (분석에서 사용된 샘플)
순 번 | 구 분 | URL |
1 | GandCrab v1.0 | hxxp://ipv4bot[.]whatismyipaddress[.]com/ |
2 | GandCrab v2.0 | hxxp://politiaromana[.]bit/ |
3 | GandCrab v3.0 | hxxp://ipv4bot[.]whatismyipaddress[.]com/ |
4 | hxxp://110.110.110.0/wpad.dat |
[표 16] IoC 정보