로키 랜섬웨어 : 플래시와 윈도우 커널 익스플로잇을 통해 확산

게시일: 2016-05-11 l 작성자: Trend Micro

2016년 4월 초 어도비 플래시 플레이어에서 발견된 제로데이 익스플로잇은(CVE-2016-1019) 곧바로 Magnitude 익스플로잇 킷에서 활용되었습니다. 이에 따라 어도비는 신속하게 패치를 배포하였습니다. 해당 취약점은 드라이브 바이 다운로드 형태의 공격으로 로키 랜섬웨어를 감염하였습니다.

하지만, 사용자들은 아직 위협에서 해방되지 않았습니다. 최근 트렌드마이크로는 이러한 공격 형태에서 특이한 변형을 확인하였습니다. 플래시 익스플로잇 이외에 윈도우의 Old Escalation of Privileges 익스플로잇(CVE-2015-1701)이 사용되어 샌드박스 기술을 우회하는 것입니다.


은밀한 악성 행위

트렌드마이크로 연구진은 해당 위협을 분석하기 위해, 네트워크 트래픽과 다운로더 파일(TROJ_LOCKY.DLDRA로 감지)을 모두 검사했습니다. 네트워크 트래픽의 경우. CVE-2016-1019 익스플로잇과 동일하였습니다. 하지만, 다운로더의 경우 독특한 커널 익스플로잇을 사용하였습니다. 해당 익스플로잇은 202[.]102[.]110[.]204:80에 위치한 C&C서버와 통신하여 로키 랜섬웨어를 설치하였습니다. 이를 실행하기 위해서 작업 항목, 시스템 스레드, APC(Asynchronous Procedure Calls)와 같은 여러 커널 단위 시스템 메커니즘을 사용하기 때문에 신규 파일이 형성되지 않고, 이에 따라 악성코드가 탐지되지 않고 시스템에 설치 되는 것입니다.

다운로더는 또한 런타임에서의 악성행위를 감추고, 윈도우가 다양한 서비스를 호스트하기 위해 사용하는 시스템 프로세스인 svchost.exe를 손상시킵니다. 또한 익스플로잇을 실행하기 전, 사용 중인 윈도우 버전과 취약한 파일(win32k.sys)이 수정된 시기를 확인하여 탐지 가능성을 최소화합니다.

해당 익스플로잇은 탐지를 피하기 위해서 사용되는 것으로 파악되며, 특히 샌드박스 기술을 이용하는 탐지 기술을 우회하기 위한 목적으로 활용되고 있습니다. 추가적으로, 해당 커널 익스플로잇에 기반한 클로킹 행위는 악성코드분석과 샌드박스 검출이 어렵도록 합니다. 분석 중 발견된 코드 브랜치(code branch)는 차후 윈도우 버전에 다른 종류의 커널 익스플로잇이 사용될 수 있다는 것을 의미합니다.

로키 다운로더 개요

TROJ_LOCKY.DLDRA는 악성행위를 숨기기 위해 커널 익스플로잇을 활용하는 것 외에는 다른 다운로더와 동일하게 작동합니다. 하단 그림은 로키 다운로더의 처리 순서에 대한 개요입니다:


그림1. 다운로더 처리순서 개요

트렌드마이크로의 분석에 따르면, 샘플 악성코드는 다양한 안티 디버그 트릭(Anti-Debug Trick)과 뉴 패킹 방법(New Packing Method)을 가지고 있습니다. 이것은 런타임에서 복호화된 API 스트링과 API 어드레스 구축을 포함합니다.

부모/초기 프로세스는 임의 생산된 커맨드 라인 파라미터(command-line parameter)를 포함한 포크/자식 프로세스를 생성하는 것만을 담당합니다. 자식 프로세스는 사용 중인 OS 버전을 확인한 뒤, 시스템이 취약할 경우, CVE-2015-1701 취약점을 활용하여 공격합니다. 이런 경우, svchost.exe는 악성 APC의 영향을 받아 C&C 서버로 연결되어, 로키 랜섬웨어를 다운로드하게 됩니다. 트렌드마이크로는 최종 페이로드를 RANSOM_LOCKY.PUY로 탐지하였습니다.

취약점 유발

자식 프로세스가 실행되면, 사용 중인 OS 버전을 확인하여 상위 말한 취약점이 패치되어 있지 않은지 확인합니다. 만약 그럴 경우, 공격이 가능합니다. 패치가 된 상황이더라도 다운로더는 클로킹 기술 없이 직접적으로 C&C서버와 연결합니다.

버그를 유발하기 위해 다운로더는 먼저 user32.dll!afnDispatch 디스패치 테이블의 ClientCopyImage를 DetourClientCopyImage와 연결합니다. 마이크로소프트에서 제공하는 역 호출(Reverse Call Back)로 해당 API는 USER32!CreateWindowEx가 호출 될 때, 함께 호출될 수 있습니다.


그림 2. DetourClientCopyImage의 슈도코드(Pseudocode)

SetWindowLongA 가 실행되면, Fake_WinProc_exploit_403A90 (악성 페이로드 코드 포함)가 커널 권한으로 실행됩니다. 물론, 이는 정상적이지 않은 행동입니다.


그림 3. 취약점이 유발되는 BeginExploit_403C42의 슈도코드

상위 슈도코드는 CVE-2015-1701이 CreateWindowExA 호출로 어떻게 유발되는지 보여줍니다.


그림 4. 사용자 모드 페이로드가 커널로 실행될 때의 콜 스택(Call Stack)

상위 콜 스택(Call Stack)은 사용자모드에서 준비된 페이로드 바이너리가 커널 호출의 win32k!xxxSendMessage 기능으로 Fake_WinProc_exploit_403A90 에서 어떻게 실행되는지 보여줍니다.

(익스플로잇) 트레이드 트릭

커널 취약점이 유발된 경우, 다운로더는 다양한 기술을 활용하여 악성 행위를 숨깁니다. 그림 1에서와 같이 자식 프로세스에서 커널 익스플로잇은 먼저 nt!ExQueueWorkItem 의 악성 작업 항목을 실행합니다. 이러한 작업 항목은 성능이 향상되도록 관리되고 예정되어 있습니다.

악성 작업 항목 루틴이 스레드 스케줄러(Thread Scheduler)로 호출되면, 커멘드 라인에 “–k netsvcs” 파라미터가 포함된 svchost.exe 프로세스를 찾기 위해 모든 시스템 프로세스를 실행합니다. 그 후, svchost.exe에 붙어 메모리를 할당하여 악성 코드를 복사합니다. 최종적으로 이 과정에서 사용자 모드 APC를 전달합니다.

설계된 바와 같이, 사용자 모드 APC는 표시된 프로세스/스레드 상황 또는 svchost 프로세스에서만 실행됩니다. svchost 프로세스가 악성 APC에 노출되면, 새로운 스레드를 추가합니다. 이 신규 스레드는 특수 API 호출을 사용하여 다른 페이로드를 다운로드 합니다.


그림 5. svchost에서 원격 삽입된 스레드가 C&C서버로 연결할 때의 콜 스택 스냅샷

대책

다운로더는 복잡하고 은밀한 기술을 이용하여 C&C 로 연결합니다. 악성 루틴을 숨기기 위해 정상적인 시스템 행위 뒤에 숨어 화이트 리스트 되거나 방어를 우회하는 것으로 파악됩니다.

커널 익스플로잇과 이로 인해 발생하는 행위에 주의를 기울이는 사람은 적기 때문에 다운로더가 이러한 기술을 사용하는 것으로 추측할 수 있습니다. 추가적으로, 작업 항목, APC, 시스템 스레드와 같이 시스템에서 제공한 매커니즘을 활용하기 때문에 악성 행위로 분석하지 않는 경우가 나타납니다.

반면, svchost 프로세스는 마이크로소프트 프로세스의 다양한 서비스를 제공해야 하기 때문에 외부 네트워크로 연결하는 것을 정상으로 판단합니다. 네트워크 트래픽을 숨기는 것은 이상적으로 여겨진다. 따라서, 네트워크 트래픽을 숨기는 것은 이상적으로 여겨집니다.

트렌드마이크로는 사용자들이 PC의 어도비 플래시를 최신 버전으로 업데이트 할 것을 권장합니다. 소프트웨어를 항상 최신 버전으로 유지하는 것은 익스플로잇 공격에서 시스템을 보호할 수 있는 좋은 방법입니다. 또한 데이터를 주기적으로 백업해야 하며, 랜섬웨어의 공격을 받더라도 돈을 지불하지 않아야 합니다. 돈을 지불하는 것이 파일 복구를 보장하는 것이 아니기 때문입니다.

트렌드마이크로 Deep Security는 다음의 DPI룰을 이용하여 취약점을 이용한 공격에 대응하고 있습니다.

  • 1007572 – Adobe Flash Player Remote Code Execution Vulnerability (CVE-2016-1019)

TippingPoint 고객들은 CVE-2016-1019를 이용한 익스플로잇에서 다음 Mainline DV 필터를 이용하여 보호받고 있습니다:

  • 24253: HTTP: Adobe Flash FileReference Type Confusion Vulnerability/li>

트렌드마이크로 Deep Discovery는 업데이트가 없이도 제로데이 공격을 자주 탐지합니다.


원문: Locky Ransomware Spreads via Flash and Windows Kernel Exploits