on
#1 AMSI - AMSI 개요
#1 AMSI - AMSI 개요
AMSI(Anti-Malware Scan Interface)는 Windows 10부터 제공하는 다목적 스캔 인터페이스다. 특히 Fileless Malware를 방지하도록 설계되었기 때문에 스크립트 파일 형태로 실행되는 것 뿐만 아니라 PowerShell 프로세스의 Command Parameters나 Interactive Shell에서 실행하는 모든 파워쉘 명령을 모니터링 할 수 있다. 응용 프로그램이나 서비스가 시스템에 설치된 AV 프로그램의 스캔 인터페이스를 사용할 수 있도록 함으로써 향상된 멀웨어 보호 기능 제공을 목적으로 하기 때문에 윈도우의 몇몇 프로그램만이 AMSI를 사용해 AV 프로그램의 멀웨어 스캔 기능을 사용할 수 있는 것이 아니라 지금 당장 내가 개발한 프로그램도 AMSI를 이용하면 V3 같은 AV 프로그램이 제공하는 멀웨어 스캔 기능을 사용할 수 있다. amsi.h의 AmsiScan* API를 호출하기만 하면 되는데, 자세한 사용법은 AMSI 기능을 이용해보는 글에서 다루겠다.
AMSI Architecture (MSDN)
Windows는 아래 항목에 대해 AMSI 기능을 자동으로 사용하도록 되어 있다.
UAC (EXE, COM, MSI 또는 ActiveX 설치)
PowerShell (스크립트, 대화형 사용 및 동적 코드 계산)
Windows 스크립트 호스트 (wscript.exe, cscript.exe)
JavaScript, VBScript
Office VBA 매크로
AMSI 구조는 스캔 기능을 제공하는 AMSI Provider와 스캔 기능을 이용하는 일반 응용 프로그램들로 이루어진다. AMSI Provider는 AMSI DLL의 경로를 레지스트리에 추가함으로써 AMSI Provider로 등록될 수 있다. AMSI Provider로 등록한다는 것은 AMSI DLL의 경로를 AMSI 레지스트리에 추가한다는 의미와 일맥상통 하다. AMSI 레지스트리 경로는 아래와 같다. 각 경로에 대한 자세한 설명은 추후 AMSI Provider를 직접 만들어 보는 글에서 설명하겠다.
HKLM\SOFTWARE\Microsoft\AMSI\Providers\ // AMSI Provider 프로필(Provider의 이름)
HKLM\SOFTWARE\Classes\CLSID\ // AMSI Provider 구성 정보(AMSI DLL의 경로)
HKLM\SOFTWARE\WOW6432Node\Microsoft\AMSI\Providers\ // WoW64 AMSI 레지스트리
HKLM\SOFTWARE\WOW6432Node\Classes\CLSID\ // WoW64 AMSI 레지스트리
V3 Lite의 AMSI Provider 프로필 레지스트리 V3 Lite의 WOW64 AMSI 구성 정보(AMSI DLL 경로)
powershell.exe, wscript.exe, cscript.exe 등 AMSI 기능을 이용하는 응용 프로그램들은 AmsiScanBuffer나 AmsiScanString을 호출해 자신이 실행할 PS 혹은 VB 스크립트같은 데이터를 AMSI Provider에게 전달하고, AMSI Provider는 자신에게 넘어온 문자열, 버퍼 데이터의 악성 여부를 판단하여 응용 프로그램에게 결과를 전달한다. 응용 프로그램은 AMSI Provider가 반환한 결과값을 기반으로 스크립트를 실행할지 말지를 결정하거나 데이터를 처리할지 말지를 결정할 수 있다.
아래 그림은 powershell.exe가 AMSI 기능을 이용하기 위해 amsi.dll을 Import한 모습이다.
from http://geun-yeong.tistory.com/43 by ccl(A) rewrite - 2021-11-05 22:01:37