WannaCryptor 랜섬웨어 유포에 사용된 "EternalBlue"로 알려진 SMB 취약점(MS07-010에 포함)을 통해 Petya 이름의 랜섬웨어가 유포 중인것으로 확인되었다. Petya 랜섬웨어는 파일을 암호화하는 것 외에 시스템의 MBR을 변조하여 부팅이 불가능한 특징을 갖는다. 감염 시, WannaCryptor보다 더 큰 피해가 우려된다.

Petya 랜섬웨어에 감염 시, 한 시간 후 아래의 명령을 통해 강제 재부팅이 이루어진다.

- C:\Windows\system32\shutdown.exe /r /f

시스템이 재부팅 되기 전  'MBR 감염'이 제일 먼저 수행되며, 이후 '전파'를 위해 네트워크 대역 내의 IP를 순회하면서 139, 445 포트가 열려있는 시스템을 탐색하는 기능을 수행한다. 또한, 전파와 동시에 특정 확장자 파일에 대한 '암호화 과정'도 이루어진다. 재부팅 시 아래와 같은 문구가 사용자에게 보여지며, 이 과정에서 'MFT 에 대한 암호화'가 이루어지는 것으로 추정된다. 문구내용을 보면 CHKDSK 를 이용하여 시스템을 점검하는 정상적인 과정으로 인식할 수 있으나, 해당 문구는 악성코드 내에 존재하는 것으로 실제는 CHKDSK가 아닌 악의적인 기능이 수행된다.

암호화 과정이 모두 종료되면, 아래와 같은 문구가 보여지며, $300 상당의 비트코인 결제를 유도한다. 실제 지불을 통해 키 값을 입력받으면, 암호화된 MFT 및 원본 MBR에 대한 복구가 이루어질 것으로 추정된다.

아래의 그림은 랜섬웨어 감염 후 재부팅이 이루어지기 전에 수행되는 파일 암호화 대상 확장자 리스트를 나타낸다. 파일 암호화는 CryptEncrypt API 를 통해 이루어지며, 랜덤하게 생성된 AES-128 을 통해 암호화가 이루어진다. (파일마다 동일한 대칭키 사용)

 

1. MBR 복구

Petya 랜섬웨어에 감염 시, MBR 감염으로 인해 정상적인 부팅이 불가능하다. 하지만, 분석결과 원본 MBR 정보가 특정 위치에 백업된 것으로 확인되었다.

 

(1) MBR 감염코드

 

(2) MBR 백업코드

정상적인 부팅에 필요한 원본 MBR의 정보는 디스크의 0x4400 위치에 고정된 키 값(0x07)으로 XOR 된 상태로 백업되는 것을 알 수 있다. 즉, 0x4400 위치에 백업된 원본 MBR 코드를 통해 정상적인 부팅이 가능하도록 조치할 수 있다.

 

(3) MBR 백업 데이터

디스크의 0x4400 위치에 0x07 값으로 XOR 된 상태로 존재한다.

이러한 단순 암호화 및 백업과정에 의해 MBR에 대한 복구는 가능하지만, 재부팅 시 감염된 MBR에 의해 수행되는 MFT에 대한 암호화로 인해 MBR 복구만으로 정상 부팅은 어려운 상황이다. 비트코인 지불을 통해 얻은 Key 정보를 통해 MBR 및 MFT에 대한 복구가 이루어질 것으로 추정된다.

하지만, 부팅 이후 암호화 파일에 대한 복구를 위해서는 공겨자 이메일을 통해 별도의 툴(EXE형태)을 제공받아야 하는 구조이다. 하지만, 파일복구를 위한 툴에 포함된 개인키가 감염된 사용자마다 모두 동일한 구조(악성코드 내부에 공개키가 고정)임으로 파일에 대한 암호화는 돈을 위한 목적은 아닌것으로 판단된다.

 

2. 네트워크 전파

해당 랜섬웨어는 아래의 3가지 방식을 통해 네트워크 전파기능이 확인되었다. 전파과정은 admin$ 공유폴더에 대한 복사와 실행을 위한 PsExec 혹은 WMIC 사용이 우선적으로 이루어지며 해당 과정이 실패한 경우에 SMB 취약점을 이용한 전파가 순차적으로 이루어지는 구조를 갖는다. 원격지의 공유폴더에 접근 시 username, password 정보는 CredEnumerate API 호출을 통해 획득하는 것으로 판단되며, 내부에 별도의 취약한 계정정보를 포함하고 있지 않다.

 

1) SMB 취약점

아래의 그림은 "EternalBlue" 취약점(CVE-2017-0144) 및 랜섬웨어 복사와 관련된 패킷내용 중 일부를 나타낸다.

 

2) PsExec

아래의 그림은 원격지 시스템의 %windows% 폴더에 랜섬웨어 파일('a' 이름의 파일)과 "dllhost.dat" 파일이 생성됨을 확인할 수 있다. 원격지에 생성되는 랜섬웨어 파일(ex. "a.dat")은 최초 감염 시스템에서 생성된 파일과 동일한 이름으로 생성되며, 구동 시 확장자 제거 및 데이터를 NULL로 채우는 기능으로 인해 그림에서 'a' 이름의 0 바이트 파일이 존재하는 것을 알 수 있다. 또한, 랜섬웨어가 구동 시 같은 경로에 생성되는  "dllhost.dat" 파일은 DLL 내부에 존재하는 정상 PsExec 파일로 네트워크를 통해 복사되는 것이 아닌 DLL 구동에 의해 생성된다. (PsExec 파일은 MS에서 제공하는 원격지 파일실행을 위해 사용되는 정상 프로그램)

해외 블로그 상에서 Kill Switch 로 언급된 것으로 %windows% 경로에 perfc 라는 이름의 파일을 생성할 경우, 추가 감염을 막을 수 있다는 내용이 있다. 이는 원격지에 파일을 전파 시, 확장자를 제거한 파일명이 %windows% 경로에 기 존재할 경우 감염기능을 수행하지 않고 종료하는 부분을 이용한 것이다. 즉, 최초 전파에 사용된 랜섬웨어가 perfc 이름을 갖는 경우(ex. "perfc.dat")에만 제한적으로 이러한 감염차단이 유효할 수 있으나, 다른 이름으로 전파될 경우에는 막을 수 없는 구조이다. 악성코드 내부에 PsExec에 해당하는 파일은 "dllhost.dat"로 고정된 이름으로 생성되는 구조이나, perfc 는 고정된 것이 아닌 최초 실행된 DLL의 이름에 의해 결정되는 것으로 가변적이다.

아래의 그림은 DLL 형식의 랜섬웨어를 구동 시, #1 통해 첫 번째 Export 함수호출을 통해 최초 동작이 이루어짐을 알 수 있다.

아래의 그림은 원격지에 파일복사 및 PsExec에서 제공하는 명령을 이용하여 랜섬웨어를 구동하는 코드를 나타낸다.

 

3) WMIC

아래의 그림은 WMIC 를 이용하여 원격지 파일을 구동하는 코드를 나타낸다.

 

3. 파일 암호화

최초 랜섬웨어 구동 시 이루어지는 MBR 감염작업이 완료되면, 네트워크 전파 및 특정 확장자 파일들에 대한 암호화 작업이 이루어진다.

파일 암호화에는 CryptGenKey API 를 통해 생성된 하나의 대칭키(AES-128)를 사용하며, 해당 대칭키는 다시 공개키를 통해 암호화되어 "C:\ReadMe.txt" 파일에 저장된다. 즉, 해당 공개키에 매핑되는 개인키 정보가 없이는 복구가 불가능한 구조를 같는다. WannaCryptor 복구에 언급된 메모리 상에 존재하는 키 정보를 활용한 복구도 Petya의 경우는 1시간 뒤 강제 재부팅이 이루어짐으로 어려울 것으로 판단된다. 또한, 공개키가 공격자와 통신을 통해 네트워크로 받아지는 구조가 아님으로 악성코드 내부에는 별도의 C&C 주소가 존재하지 않는다.

시스템 재부팅 시 지불요청 내용을 담고있는 랜섬노트 상에 표시된 "Your personal installation key"는 CryptGenRandom API 를 통해 생성되는 정보로 디스크의 0x4000 위치에 존재하며, 파일 암호화에 사용된 대칭키와는 관련이 없다.

 

 

// 추가분석 사항은 업데이트 예정

 

감염피해를 막기위해 SMB취약점 관련 윈도우 보안패치를 적용하는 것이 필요하다.

SMB 취약점을 이용한 랜섬웨어 공격 주의 권고
- http://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=25703

SMB 취약점 관련 Windows XP, Server 2003 등 긴급 보안 업데이트 권고
- http://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=25704

SMB 취약점을 악용한 랜섬웨어 방지 대국민 행동 요령
- http://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=25723

윈도우 버전별 보안업데이트 다운로드
- http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012598

신고
Creative Commons License
Creative Commons License
Posted by yhayoung