ASEC은 FlawedAmmyy 백도어에서 Clop 랜섬웨어까지의 흐름을 확인 중 흔치 않은 방식의 공격 기법이 확인되어 알리고자 한다.
Ammyy 백도어는 이전 블로그(https://asec.ahnlab.com/1237) 에서 언급한 바와 같이 사회공학적인 방법으로 시작하여 다운로더를 거쳐 최종적으로 백도어 악성코드가 설치되는 방식으로 동작한다. 이후 일종의 잠복기를 거쳐 CLOP 랜섬웨어가 설치되어 사용자의 시스템을 암호화하는데, Ammyy 백도어가 생성한 악성코드들 중 윈도우 어플리케이션 Shim Database 즉 sdb 파일을 악용하여 시스템에 또 다른 백도어를 사용자가 인식하기 힘든 방식으로 설치하는 종류의 악성코드들이 확인되었다. loader32.exe 등의 이름으로 생성되는 Injector 악성코드와 sdb_msf_32_crypted.dll 등의 이름으로 생성되는 악성 sdb 설치 기능을 갖는 악성코드이다.
sdb 파일은 윈도우 운영체제 환경에서 소프트웨어에 대한 하위 호환을 지원하기 위한 용도로 만들어진 메커니즘으로서, 다양한 형태의 Compatibility Fix 들을 사용할 수 있다. 응용프로그램이 DLL을 호출하여 사용할 때 그 중간에서 sdb 파일의 코드를 통해 수정되어 동작하는 방식이다. 악성코드는 이러한 정상적인 목적으로 제공된 어플리케이션 패치 메커니즘을 악용하여 동작한다.
이 악성코드의 흐름을 간략히 정리하면 아래와 같다.
1. Ammyy 백도어가 loader32.exe와 sdb_msf_32_crypted.dll을 생성한다. |
위의 설명과 같이 이 악성코드는 먼저 인코딩 된 실제 백도어 악성코드를 아래와 같은 레지스트리에 쓴다.
인코딩 된 백도어가 등록되는 레지스트리 : HKLM\SOFTWARE\Microsoft\[랜덤]
이후 악성 sdb 파일을 생성하고, sdbinst.exe 유틸리티 프로그램을 이용해 이 sdb 파일을 등록한다. 이렇게 등록된 sdb 파일은 C:\Windows\AppPatch\Custom 경로에 위치하게 된다.
악성 Sdb 파일은 대상 프로세스가 services.exe이며, 특정 오프셋을 내부에 포함한 셸코드로 대체하는 기능을 갖는다. 이 방식은 Shim에 의해 공식적으로 지원되는 기능이 아니며, 구체적으로 특정 주소의 메모리를 패치하는 목적으로 악성코드 제작자가 직접적으로 구현하여 sdb 파일을 생성한다.
이 특정 오프셋은 services.exe의 내부 함수인 ScRegisterTCPEndpoint() 함수로서 만약 services.exe 실행 중 해당 함수 호출 시에 이 함수 대신 셸코드가 실행되는 방식이다. 셸코드는 이전에 레지스트리에 등록한 인코딩 된 PE를 디코딩하여 메모리 상에서 실행시켜 준다.
참고로 ScRegisterTCPEndpoint() 함수의 오프셋은 운영체제의 버전마다 다를 수 있기 때문에 악성코드에서는 sdb 파일을 만들 때 직접 해당 오프셋을 구한 후 생성한다. 먼저 윈도우의 시스템 경로에서 services.exe를 메모리로 읽어들인다.
이후 ScRegisterTCPEndpoint() 함수의 특징이라고 할 수 있는 하드코딩된 문자열 "DisableRPCOverTCP"를 찾는다. 이 문자열은 함수 ScRegisterTCPEndpoint() 함수의 끝에 위치한다. 이후 이 위치를 시작으로 위로 탐색하며 함수의 시작 루틴을 구한다.
Shim은 프로세스가 생성될 때 적용된다. 현재 대상이 Services.exe이므로 이후 재부팅 시에 악성 sdb가 적용되어 악성 행위가 수행된다. 또한 악성 행위를 수행하는 주체는 결국 정상 시스템 프로세스인 services.exe가 된다.
백도어 악성코드는 감염된 시스템의 기본 정보를 습득한 후 C2 서버로 전송하며, C2와의 연결이 확립된다면 이후 명령을 수행할 수 있다. 명령에는 파일 조회, 생성 및 삭제, Pipe를 통하여 CMD 명령 수행 및 그 결과를 다시 C2로 전송하는 백도어의 기본적인 기능들이 존재한다.
이에 따라 Ammyy 백도어에 의해 이미 악성 sdb 파일이 시스템에 설치되었다면 Ammyy, Injector 등의 악성코드들 외에 설치된 sdb 파일도 치료되어야 하며, 그렇지 않으면 백도어는 재부팅 이후 정상 프로세스인 services.exe 내부에서 동작하게 된다. 즉 명령을 받아 악성 행위를 수행하는 백도어 주체가 services.exe가 됨에 따라 시스템의 감염 사실을 인지하기 힘들게 된다.
이러한 sdb를 이용한 공격 방식은 공격 그룹 FIN7, 또는 다른 이름으로 Carbanak이 사용했던 기법과 유사하다.
https://www.fireeye.com/blog/threat-research/2017/05/fin7-shim-databases-persistence.html
자사 제품에는 이러한 sdb 파일들에 대한 제네릭(Generic)한 진단이 반영되어 "sdbinst.exe" 프로세스를 통해 해당 sdb 파일이 동작되기 전 사전 차단이 가능하다.
이와 관련한 자사의 진단명들은 아래와 같다.
진단명
- FlawedAmmyy RAT : Backdoor/Win32.Flawedammyy
- sdb 설치 악성코드 : Trojan/Win32.Loader, Trojan/Win32.Injector
- 악성 sdb 파일 : BinImage/Sdb.Gen, BinImage/Malsdb.S1, BimImage/Malsdb.S2
- 백도어 악성코드 : Backdoor/Win32.Agent
행위탐지 진단명
- Malware/MDP.SystemManipulation.M2265
'악성코드 정보' 카테고리의 다른 글
파일리스 형태로 동작하는 WannaMine(SMB 취약점) (1) | 2019.09.06 |
---|---|
BlueCrab 랜섬웨어를 유포하는 자바스크립트(*.js) 코드 변화 (0) | 2019.09.03 |
워드 문서파일과 자바스크립트 형태로 유포되는 TrickBot (0) | 2019.08.28 |
Exploit-Kit을 통해 유포되는 BlueCrab 랜섬웨어 (반복 UAC 주의) (0) | 2019.08.27 |
취약점(CVE-2018-4878)을 악용한 러시아發 악성코드 유포 (0) | 2019.08.21 |
댓글