2017년 6월 27일, 우크라이나에서 Petya 이름의 랜섬웨어 감염 피해가 보고되었다. 사실 Petya 랜섬웨어는 파일을 암호화하는 다른 랜섬웨어와 달리 부팅을 불가능하게 하는 유형(MBR, MFT 암호화)으로 이미 알려진 형태이다. 하지만, 이번에 이슈 된 Petya는 지난 5월 WannaCryptor 랜섬웨어에서 사용한 SMB 취약점(CVE-2017-0144)을 사용하여 네트워크 전파기능이 추가되면서 피해가 큰 것이 특징이다. 또한, 기존 형태와 달리 일부 확장자 파일들에 대한 암호화도 진행하는 등 다양한 기능이 추가된 것을 확인할 수 있다. SMB 취약점(CVE-2017-0144)은 MS 보안패치 MS17-010에 포함되었으므로 감염 확산을 막기 위해서는 보안패치 적용이 필요하다.
1. 동작과정
[그림-1] 랜섬웨어 동작과정
[그림-1]은 랜섬웨어의 전체적인 동작과정 및 내부 파일의 구조를 나타낸다. 최초 감염방식은 MEDoc (Ukraine Financial Software) 이름의 프로그램의 업데이트 과정에서 발생한 것과 MS 오피스 취약점(CVE-2017-0199)을 이용한 방식 2가지가 알려져 있다. 랜섬웨어는 DLL 형태로 제작되었으며, 네트워크 전파를 위해 SMB 취약점 외에 ‘Mimikatz’(Credential Dumping Tool) 이름으로 알려진 소스코드를 이용하여 원격지 접속을 위한 계정정보 획득을 시도한다. 악성코드 내부에 별도의 취약한 계정정보(ID/PW)를 갖고 있지는 않다. 아래는 Petya 랜섬웨어에서 수행하는 악의적인 기능들을 나타낸다.
– MBR 감염
– 네트워크 전파
– 파일 암호화
– 시스템 재부팅 시도
– MFT 암호화
– 부팅불가
아래의 [그림-2]는 랜섬웨어(ex. “2.dll”) 감염 시 발생하는 행위로그를 나타낸다. Action 항목에“Write physical disk” 라고 표시된 부분이 MBR 감염시도를 나타내며, “at.exe”를 실행한 부분은 재부팅을 위한 윈도우 작업스케줄 등록부분이다. %temp% 경로에 생성되는 “[랜덤숫자].tmp” 파일(ex. 1.tmp)은 ‘Mimikatz’ 툴로 계정정보 획득을 위한 악성코드이다. 이후 전파를 위한 네트워크 대역 내의 IP를 순회하면서 139/445 포트가 열려있는 시스템을 탐색하는 기능을 수행한다. 전파시도와 동시에 파일에 대한 암호화(AES-128) 작업도 이루어지며, [그림-2]에서는 바탕화면에 위치한 “TEST_Word.docx” 파일이 암호화된 것을 확인할 수 있다.
[그림-2] 행위로그
재부팅을 시도하기 위해 수행하는 윈도우 작업스케줄 등록작업은 아래와 같은 명령을 통해 이루어지며, 윈도우 버전에 따라 명령에 차이가 있다.
schtasks /RU “SYSTEM” /Create /SC once /TN “” /TR “C:Windowssystem32shutdown.exe /r /f” /ST [H:M] |
at [H:M] C:Windowssystem32shutdown.exe /r /f |
작업스케줄 등록을 통해 일정시간(1시간 내 가변)이 지난 후에는 시스템이 재부팅 되며, 이후 감염된 MBR 코드가 실행된다. 윈도우 작업스케줄을 이용한 방법 외에도 강제 BSOD 발생을 위해 “NtRaiseHardError” API 를 호출하는 경우도 존재한다. 재부팅 후에는 감염된 MBR(Master Boot Record) 코드에 의해 MFT(Master File Table)에 대한 암호화가 이루어진다.
원격지에 파일복사가 이루어진 후, 실행을 위해서는 MS에서 제공하는 PsExec(Sysinternals: 원격지 파일실행) 와 WMIC(WMIC.exe: Windows Management Instrumentation Command)라는 툴이 사용된다. 또한, Credential 정보를 이용한 원격지 복사가 실패한 경우, 마지막 단계에 SMB 취약점을 이용한 전파가 이루어진다. 재부팅 전 아래와 같은 명령을 통해 윈도우 이벤트 로그를 삭제하는 기능을 수행한다.
cmd.exe /c wevtutil cl Setup & wevtutil cl System & wevtutil cl Security & wevtutil cl Application & fsutil usn deletejournal /D <드라이브>: |
[그림-1]에서 알 수 있듯이 DLL 파일 내부의 리소스 영역에는 총 4개의 RCDATA 이름의 항목이 존재하며, 각각 Mimikatz 툴(32비트/64비트)과 PsExec 툴, SMB 취약점관련 쉘코드로 구성된다.
2. 주요기능
(1) MBR 감염
랜섬웨어 실행 시, 가장 먼저 수행되는 작업이 MBR에 대한 감염이며 아래의 [그림-3]은 Petya에서 사용하는 MBR 감염코드를 나타낸다.
[그림-3] MBR 감염코드 부분
정상적인 부팅을 위해 필요한 원본 MBR 정보는 아래의 [그림-4]에서처럼 디스크의 0x4400 옵셋위치에 고정된 키 값(0x07)로 XOR 된 상태로 백업된다. MBR 정보는 단순한 암호화 방식으로 암호화 및 백업이 되어있어 복구가 가능한 구조이나, 이후에 진행되는 MFT에 대한 암호화 작업은 Salsa Stream 암호화라는 알고리즘을 통해 이루어지며 복구에는 키 정보가 필요한 구조이다.
[그림-4] MBR 백업코드 부분
아래의 [그림-5]는 실제 디스크 옵셋 0x4400 위치에 원본 MBR 코드가 암호화된 상태로 백업된 것을 확인할 수 있다.
[그림-5] MBR 백업데이터
(2) 네트워크 전파
원격지에 자신을 복사하기 위해서 크게 메모리상의 Credential 정보획득(CredEnumerate, Mimikaz)을 통한 ADMIN$ 공유폴더에 복사와 SMB 취약점을 이용한 전파 2가지가 이루어진다. ADMIN$ 에 복사된 DLL 형태의 랜섬웨어를 구동하기 위해 PsExec 혹은 WMIC 2가지 툴이 사용되며, 취약점을 이용한 경우 쉘코드를 통해 구동되는 특징을 갖는다. 또한, 전파방식 2가지 중 ADMIN$ 를 통한 복사가 실패한 경우에 한해 SMB 취약점을 시도하는 구조이다. 아래의 [그림-6]은 “EternalBlue” 취약점(CVE-2017-0144) 및 랜섬웨어 복사와 관련된 패킷 데이터 중 일부를 나타낸다.
Categories:악성코드 정보