한국을 강타한 랜섬웨어 ‘크립토락커’ …어떻게 공격했나
[크립토락커 상세 분석]
최근 국내 유명 인터넷 커뮤니티 사이트를 통해 랜섬웨어의 일종인 크립토락커가 유포되었다. 그동안 국내에서 발견된 랜섬웨어와는 달리 한글로 되어 있으며, 한국의 인터넷 커뮤니티에서 유포된 점을 보아 한국의 사용자를 표적으로 했음을 알 수 있다. 이 글에서는 최근 이슈가 된 한글로 된 ‘크립토락커’에 대한 상세 분석 정보를 소개하고자 한다.
최근에 발견된 크립토락커(CryptoLocker)는 [그림 1]에서 확인할 수 있듯이 지난 2013년 9월에 처음 발견되었다. 이 외에 크립토월(CryptoWall), 토렌트락커(TorrentLocker), 크립토그래픽락커(CryptographicLocker), 테슬라크립트(TeslaCrypt) 등의 랜섬웨어도 지속해서 나타났다. 주로 이메일을 통해 유포되던 랜섬웨어 악성코드가 최근 국내 인터넷 커뮤니티 사이트를 이용해 유포되었고 해당 랜섬웨어인 크립토락커도 과거의 그것들과 같은 류이다.
[그림 1] 주요 랜섬웨어 타임라인
최근 이슈가 된 한글 크립토락커에 감염되면 [그림 2]와 같은 화면이 나타나며, 암호화된 파일들을 복원하기 위해 한화 약 438,900원의 비트코인을 요구한다. 피해자들이 비용을 지급할수 있도록 결제 방법을 상세하게 설명하고 있으며, 실제 복원이 됨을 증명하기 위해 암호화된 파일 중 1개의 파일을 무료로 복호화 해주고 있다. 이를 통해 악성코드 제작자는 중요한 파일을 암호화하여 사용자에게 금전을 유도하고 있다.
[그림 2] 크립토락커 감염 화면
그리고 사용자 PC의 IP 대역을 확인해서 해당 국가에 맞은 언어의 안내 페이지를 생성 및 실행하여 보여 준다. 결제를 진행하기 위해 안내된 링크를 클릭하면 아래와 같은 정보가 기본으로 세팅되어 있는데, Tor(익명의 분산형 네트워크)를 사용해서 네트워크를 추적하기 어렵게 해놓았다.
(예) http://zoqowm4kzz4cvvvl.torlocator.org/jxt85f9.php
- User-Code: 12lrne9
- User-Pass: 8394
감염 경로
이번에 국내에 유포된 크립토락커는 사용자 시스템의 취약점을 이용한 전형적인 웹 기반의 DBD(Drive-By-Download) 방식을 통해 감염이 이루어졌다. 국내에서 많은 사용자들을 보유하고 있는 유명 커뮤니티 사이트에 접속하면 취약한 사이트로 리다이렉션(Redirection) 되면서 특정 취약점에 의해 랜섬웨어 악성코드가 다운로드되고 실행되었다.
[그림 3] 감염 경로
최초 유포지 및 경유지
이번 랜섬웨어 악성코드 배포에는 국내 3곳의 대표적인 IT 커뮤니티가 악용되었음이 확인되었다.
(1) C업체
(2) S업체
(3) R업체
이들 국내 사이트에는 광고 데이터를 동적으로 받아서 화면에 보여주는 기능이 포함되어 있다. 공격자는 이 기능을 악용하여 [그림 4]와 같이 광고 서버에 악의적인 스크립트를 삽입하거나 직접 사이트를 변조하는 방법으로 사용자들이 인지하지 못한 채 악의적인 사이트로 연결되도록 유도하였다.
[그림 4] C업체에 삽입된 악성스크립트
특히, 삽입된 악성 스크립트들은 경유지 사이트를 거쳐, 최종적으로 취약점 공격코드가 탑재된 사이트로 연결된다. 이때 사용자 클라이언트 시스템상의 취약점을 이용하기 위해 자동화된 웹 공격 툴킷인 ‘Angler EK’ 가 사용되었다.
자동화된 웹 공격 툴킷 - "Angler EK"
크립토락커에 감염되면 사용자는 최종적으로 난독화된 ‘Angler EK’의 취약점 랜딩페이지로 연결된다.
[그림 5] Angler EK 동작구조
이때 악성코드의 탐지 우회 기능과 유사하게, 스크립트 레벨에서도 취약점 'CVE-2013-7331'을 이용하여 가상환경, 분석 환경, 백신 프로그램 등의 클라이언트 환경을 체크한다. 만약, 해당 프로그램들이 존재하는 경우, 공격이 정상적으로 이루어지지 않는다.
또한 [표 1]과 같이 특유의 변수를 이용하여 개별 애플리케이션들의 공격여부를 제어한다.
[표 1] 애플리케이션 제어 변수
취약점 및 페이로드(셸코드)
일반적인 Angler EK는 다양한 애플리케이션 취약점을 이용하는 것으로 알려져 있으나, 이번 공격에는 ‘갓 모드(God Mode)’로 알려진 'CVE-2014-6332'와 플래시 취약점인 'CVE-2014-0515' 취약점이 이용되었다.
[표 2] CVE-2014-6332 취약점
[표 3] CVE-2014-0515 취약점 발생 부분
이들 취약점을 이용해 셸코드 실행 시, 공격자 사이트로부터 추가적인 페이로드(Payload)를 다운로드받는다. 이를 해당 키(KEY) 문자열로 해제한 후, 페이로드의 시작이 “9090” 또는 “MZ”인지 구별하여 직접 메모리상에서 실행하거나 tmp 파일(%temp%폴더)로 생성하여 실행한다.
기능 분석
전체 동작 흐름
이번 랜섬웨어가 실행되면 다른 악성코드처럼 자기 자신을 ‘%WINDOWS%’ 폴더에 복사해놓고 ‘HKCU\Software\Microsoft\Windows\CurrentVersion\Run\<랜덤명>’에 등록한다. 해당 키에 실행 파일을 등록해 놓으면 시스템을 재 부팅할 때마다 자동으로 실행되는데, 이렇게 되면 해당 파일을 찾아서 삭제하지 않는다면 감염된 PC의 사용자가 금액을 지급하고 파일을 복구하더라도 재감염될 가능성이 크다. 자신을 자동 실행되게 등록한 후에는 정상 ‘explorer.exe’ 프로세스를 생성하고 C&C 서버 통신 및 파일을 암호화하는 주요 기능을 포함한 PE 파일을 인젝션시켜서 동작한다.
[그림 6] 크립토락커 동작 흐름
네트워크 접속
네트워크 통신 상태를 확인하기 위해 ‘www.download.windowsupdate.com’과 ‘akamaitechnologies.com’에 접속한다. 이후 C&C 서버인 ‘https://lepodick.ru/topic.php’에 두 번에 걸쳐 ‘POST’ 패킷을 전송하는데 첫 번째는 사용자 PC의 정보를 전달한 후 IP 대역에 따른(나라별) ‘.txt’와 ‘.html’ 파일을 받아온다. 그리고 두 번째는 앞에서 보낸 정보에 암호화된 파일들을 복호화할 때 필요한 키 정보(256byte)를 함께 보내고 서버에서 ‘200 OK’ 응답을 받으면 파일들을 암호화하기 시작한다. 서버로부터 받은 ‘DECRYPT_INSTRUCTIONS.txt’와 ‘DECRYPT_INSTRUCTIONS.html’ 파일은 암호화한 파일이 있는 모든 폴더에 생성되며, 시스템이 감염되었다는 메시지를 사용자에게 보여주고 파일을 정상적으로 복원하기 위해 비트코인을 사용한 결제 방법이 설명되어 있다.
[그림 7] C&C 통신 과정
볼륨 새도 카피 삭제
아래 명령을 실행해서 볼륨 섀도 카피를 삭제하는데 이렇게 되면 윈도 운영체제에서 제공하는 파일 백업 및 복원 기능을 정상적으로 사용할 수 없다. 이 명령은 크립토락커 류에서 공통적으로 확인할 수 있는 기능이다.
- vssadmin.exe Delete Shadows /All /Quiet
파일 암호화
랜섬웨어의 가장 특징적인 기능은 사용자의 중요 파일들을 암호화하는 것이다. 아래에 리스트 되어 있는 확장자를 가진 파일과 폴더는 대상에서 제외된다. 그리고 ‘이동식 드라이브’와 ‘네트워크 드라이브’에 있는 파일도 암호화 대상이 되며 암호화가 완료된 파일에는 확장자 뒤에 ‘.encrypted’ 문자열이 붙게 된다.
[제외대상 확장자]
.avi, .wav, .mp3, .gif, .ico, .png, .bmp, .txt, .html, .inf, .manifest, .chm, .ini, .tmp, .log, .url, .lnk, .cmd, .bat, .scr, .msi, .sys, .dll, .exe
[제외대상 폴더]
- %Program Files%
- %ProgramW6432%
- C:\WINDOWS
- C:\Documents and Settings\All Users\Application Data
- C:\Documents and Settings\사용자계정\Application Data
- C:\Documents and Settings\사용자계정\Local Settings\Application Data
- C:\Documents and Settings\사용자계정\Cookies
- C:\Documents and Settings\사용자계정\Local Settings\History
- C:\Documents and Settings\사용자계정\Local Settings\Temporary Internet Files
앞에서 리스트 되어 있던 암호화 대상 제외 확장자 및 폴더를 제외하고는 파일 외형적으로는 아래 [그림 8]처럼 파일의 확장자에 ‘.encrypted’ 추가된 것을 확인할 수 있다. 이렇게 암호화된 파일 내부에는 변경된 원본 데이터와 시그니처 그리고 복호화에 필요한 256바이트 공개키가 포함되어 있다.
[그림 8] 감염 전/후의 변경된 파일명
복구 프로그램
이번에 한글로 유포된 크립토락커에 대한 복구 프로그램은 내부에 감염 사용자별로 다른 복호화 키 인덱스 정보(0x20바이트)를 포함하고 있다. 실행 시, 아래의 [그림 9]와 같은 화면이 나타나며 "Start Decryption" 버튼을 클릭하면, 감염 조건에 부합하는 드라이브 및 폴더에 대한 스캔 과정을 수행하며 ".encrypted" 확장자를 갖는 파일들에 대해 실제 복호화 작업이 이루어짐을 확인할 수 있다.
[그림 9] 복구 프로그램 내부에 저장된 키 정보
이때 ".encrypted"로 암호화된 파일은 공통적으로 원래 파일크기에 0x108(264바이트)가 증가한 것을 알 수 있다. 파일 끝에 추가된 0x108 크기의 데이터는 다음과 같은 구조를 갖는다.
증가한 264 바이트 = 해쉬정보(4-bytes) + 시그니처(4-bytes) + 공개키(256-bytes)
[그림 10]은 실제 복구툴 내부에 저장된 키 인덱스 정보(0x20 바이트)를 통해 생성된 데이터(0x108 바이트)와 ".encrypted" 파일에 존재하는 해시 정보를 비교해 유효한 키인지 검증하는 과정을 나타낸다.
[그림 10] 유효한 키 여부를 검증하는 부분
최근 이슈가된 크립토락커는 국내 유명 커뮤니티 웹사이트의 광고 배너를 통해 유포되면서 큰 피해를 입혔다. 이에 웹 관리자의 보안에 대한 주의가 필요하며 PC 사용자는 랜섬웨어 악성코드를 예방하기 위해 발신자가 불명확한 이메일의 열람에 주의하고 중요 파일들은 별도로 백업해 두는 것이 좋다. 그리고 취약점에 의한 감염 피해를 줄이기 위해 운영체제와 응용프로그램들을 항상 최신으로 업데이트해야 한다. 이 외에도 백신프로그램을 통해 예방할 수 있는데 V3에서는 해당 악성코드를 ‘Win-Trojan/Cryptolocker.229892’, ‘Win-Trojan/Cryptolocker.Gen’, ‘Trojan/Win32.Cryptolocker’ 등으로 진단하고 있으며, 안랩은 현재까지 파악된 관련 악성 경유지 및 유포지를 확보했다. 이를 통해 추가 피해가 발생하지 않도록 지속적으로 모니터링을 강화하고 있다. @
- AhnLab