보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
말하는 Ransomware : Cerber
2016.12.07
24,916
서비스사업본부 보안분석팀 박치훈
1. 개요
랜섬웨어는 최근 몇 년간 꾸준히 언급되고 있는 보안이슈 중 하나다. 2015년 사이버 위협 얼라이언스(Cyber Threat Alliance)의 수익성 좋은 랜섬웨어 공격: 크립토월 3.0 위협분석(Lucrative Ransomware Attacks: Analysis of the CryptoWall Version 3 Threat)’에 따르면 크립토월을 이용하여 3.25억 달러의 수익을 올린 것으로 보고되고 있다. 이와 같이 랜섬웨어를 이용하여 단시간내에 상당한 금액의 범죄 수익이 발생되면서 랜섬웨어는 꾸준히 증가하고 있다.
랜섬웨어의 유포방식은 크게 두 가지가 있다. 불특정 다수에게 메일을 이용하여 유포하는 방식과 Exploit Kit을 이용한 유포방식이다. 이번 호에서는 Exploit Kit의 유포방식 중 Flash 취약점을 이용한 Rig Exploit Kit인 Cerber 랜섬웨어에 대해서 분석해 보고자 한다.
[그림 1] Exploit Kit을 이용한 랜섬웨어 감염 과정
2. Cerber 랜섬웨어
Cerber는 텍스트 음성 병환(TTS, Text-To-Speech) 기능을 이용한 말하는 랜섬웨어로 2016년 3월에 처음 발견되었다. 이메일이나 Exploit Kit을 통해 유포되고 있으며, 지금까지도 꾸준히 버전을 업데이트하고 있다.
이번에 분석할 샘플은 Exploit Kit에 의해 감염되는 형태이며 4.1.1버전으로 전체적인 행위는 다음과 같다.
① Cerber랜섬웨어가 실행되면 Temp경로에 Thiophens.sed와 System.dll, BgWorker.dll파일이 생성된다. ② System.dll이 실행되면서 BgWorker.dll을 실행한다. (System.dll은 BgWorker.dll의 단순호출기능만 존재) ③ BgWorker.dll에서 암호화된 Thiophene.sed의 내용을 읽어와 복호화한 뒤, BgWorker.dll이 생성한 자식프로세스의 메모리에 복호화한 내용을 복사한다. ④ 실행된 자식프로세스에서 wmic.exe로 ShadowCopy를 삭제한 뒤 암호화 할 파일을 검색하여 암호화 한다. ⑤ 랜섬웨어 감염여부를 공지하는 경고문을 배경화면으로 설정한 뒤, 경고문과 함께 음성파일을 실행시킨다. |
[그림 2] 악성코드 실행 순서도
3. 상세분석
1) Cerber.exe 분석
File Name | Cerber.exe | ||
Size | 278,568 byte | MD5 | EF914118B3A6E09BB0832204D7296829 |
Type | PE32 | Pack | - |
파일을 실행하면 파일이 동작하는 경로를 확인한 뒤 동작에 필요한 파일들을 생성한다. 우선 Temp 경로를 수집하고 파일 생성에 필요한 문자열들을 복호화한다. 다음으로 Thiophene.sed파일과 BgWorker.dll, System.dll 파일을 생성한다. 생성된 파일들은 Timestamp를 조작하여 생성시간을 수정한다.
[그림 3] 생성하는 파일들
그 뒤 System.dll을 불려온 뒤 dll내부 함수인 Call 함수를 실행한다.
[그림 4] System.dll 로드 및 Call 함수 주소 확인
Call함수에서 LoadLibraryA에 의해 Bgworker.dll이 실행된다. System.dll 파일은 단순히 Bgworker.dll를 실행시키기 위해서만 사용된다.
[그림 5] Bgworker.dll 실행
2) BgWorker.dll 분석
File Name | BgWoker.dll | ||
Size | 53,248 byte | MD5 | 3DC2C5064C079F8B773D9DEFDA1D8E75 |
Type | DLL | Pack | - |
BgWorker.dll은 Thiophene.sed 파일을 읽어와 내용을 복호화한 뒤, 악성코드와 같은 이름으로 프로세스를 생성해 복호화된 내용을 메모리에 복사한 뒤 실행한다.
[그림 6] Thiophene.sed 파일 핸들 가져옴
파일 내용을 읽어온 뒤 복호화한다.
[그림 7] Thiophene.sed 내용 복호화
Cerber랜섬웨어를 Suspend플래그로 중지시키고, 복호화한 코드를 이름이 동일한 자식프로세스에 복사하여 실행시킨다.
[그림 8] Suspended로 프로세스 실행
3) 자식프로세스 분석
해당 프로세스는 기존 악성코드와 이름만 같을 뿐 코드 자체는 BgWorker.dll에 의해 복사되었기 때문에 완전히 다른 동작을 한다. 프로세스가 실행되면 파일 내부에 암호화 되어있는 설정 파일을 복호화한다.
[그림 9] 설정 파일 복호화
설정 파일은 JSON형식으로 되어 있으며, 악성코드가 동작하는데 필요한 주요 정보가 들어있다. 이러한 설정파일을 사용함으로써 설정 파일 수정만으로 악성코드의 동작을 쉽게 조작할 수 있는 것으로 보인다.
리스트명 | 설명 |
Blacklist | 암호화에 제외할 파일과 경로 및 국가코드 리스트 |
Clsoe_process | 종료할 프로그램 리스트 |
encrypt | 암호화에 사용되는 정보 및 확장자 리스트 |
Global_public_key | RSA 공개키가 Base64로 인코딩되어 저장되어 있음 |
Help_files | 경고문의 내용 및 설정 |
servers | 접속할 서버 정보 리스트 |
speaker | 음성파일로 읽을 문장 리스트 |
wallpaper | 바탕화면에 표시할 문자열 리스트 |
whitelist | 최우선적으로 암호화할 파일 리스트 |
[표 1] 설정 파일 리스트들의 역할
Blacklist에는 감염이 제외될 파일, 경로, 국가 언어 코드가 들어있다. 해당 파일들을 암호화할 시 OS의 부팅이나 Tor 접속 등에 문제가 생길 수 있기 때문에 제외되는 것으로 보인다. 또한 국가 언어 코드들에 의해 해당 언어를 사용하는 OS도 제외된다.
[그림 10] 설정 파일 복호화
아래는 암호화하는 파일의 확장자 리스트이다.
[표 2] 암호화되는 확장자 리스트
아래는 Base64로 인코딩된 RSA 공개키이다.
[표 3] RSA 공용키
설정 파일을 복호화한 뒤 cmd를 실행시켜 WriteFile 함수로 명령어를 입력한다. 해당 동작에 의해 ShadowCopy가 삭제되며, ShadowCopy를 이용한 파일 복원을 막기 위한 걸로 보인다.
[그림 11] cmd실행 및 명령어 입력
C:Windowssystem32wbemwmic.exe shadowcopy delete |
[표 4] cmd에 입력되는 명령어
드라이브 정보를 가지고 와서 사용중인 드라이브인지 확인 한 후 사용 중이라면 파일을 검색한다. 그 뒤 파일들의 경로를 메모리에 저장한다.
[그림 12] 드라이브 및 파일 검색
위에서 저장된 파일 경로들은 PathMatchSpecW 함수를 통해 블랙리스트의 파일과 비교하며, 블랙리스트의 파일이 아니라면 암호화하는 확장자와 파일의 확장자를 비교한 뒤 일치하면 해당 경로를 저장한다.
[그림 13] 파일 비교 과정
[그림 14] 파일 및 확장자 비교
메모리에 저장된 파일 경로를 불려와 암호화할 파일의 핸들을 가져온다. 그 뒤 랜덤한 이름을 생성하고 파일을 암호화한다. 암호화가 완료되면 생성해 뒀던 파일 이름으로 변경한다.
[그림 15] 파일 암호화 과정
[그림 16] 파일 이름 수정
암호화된 파일의 경로에 README.hta 파일을 생성한다.
[그림 17] README.hta 생성
모든 파일의 암호화가 완료되면 Temp 경로에 bmp 파일을 생성한 뒤 배경화면에 들어갈 경고문을 입력한다. 생성한 bmp 파일은 SystemParametersInfoW 함수에 의해 배경화면으로 설정된다.
[그림 18] bmp파일 생성 및 배경화면 설정
[그림 19] 설정된 배경화면
그 뒤 바탕화면에 README.hta 파일을 생성하고 실행한 뒤 음성파일을 재생한다.
[그림 20] README 내용
경고문에 입력된 URL 주소로 들어가면 사용할 언어를 선택하고 선택한 언어에 따라 비트코인 입금 방법에 대한 설명이 나와있다. 또한 이 때부터 시간이 흐르면서 지정된 시간이 지나면 입금해야 할 비트코인의 가격이 올라간다.
[그림 21] 언어 선택
[그림 22] 비트 코인 입금 방법 가이드
4. 대응방안
지금까지 Cerber랜섬웨어에 대해서 분석해보았다. 랜섬웨어 중 몇몇 프로그램은 복호화 프로그램이 제공되거나 사라졌지만, 현재까지 남은 랜섬웨어는 지속적인 업데이트를 통해 다양한 기능을 추가하면서 진화하고 있다. 랜섬웨어는 감염 후 대응보다 감염 전에 대응이 중요하기 때문에 사용자의 각별한 주의가 요구된다.
① 중요 데이터 백업 중요한 데이터의 경우 외장하드 및 클라우드 웹하드 서비스에 따로 백업해 둔다.
② 프로그램 업데이트 최신화 Adobe Flash Player, Oracle Java, Silverlight 등의 취약점에 자주 노출되는 프로그램과 운영체제의 업데이트를 최신버전으로 유지한다. 또한 백신의 업데이트를 항상 최신버전으로 유지 시키고, 주기적으로 정밀검사를 실시한다.
③ 이메일 열람 주의 알 수 없는 사용자가 보낸 이메일을 열람하지 않으며, 지인이 보낸 이메일 또한 완벽하게 신뢰해서는 안된다. 또한 첨부된 문서파일이나 링크에 대해 수상한 점이 없는지 확인 후 실행해야 한다.
④ 알수 없는 파일 실행 주의 파일 공유 사이트 등의 출처가 불분명한 사이트 등에서 다운받은 파일의 실행에 주의한다. |
5. 참고자료
[1] https://blog.malwarebytes.com/threat-analysis/2016/03/cerber-ransomware-new-but-mature/
[2] http://hummingbird.tistory.com/6504
[3] https://www.krcert.or.kr/ransomware/prevention.do