AMSI(Antimalware Scan Interface) 파헤치기 [1편]

늘보·2023년 1월 23일
0
post-thumbnail

최근 AMSI를 활용해야 할 일이 있었다.
관련되어 정보를 조사하며 느낀 것이 AV 제품이나 샌드박스 분석 플랫폼 등 많은 보안 제품에 활용하기 좋은 기술인데, 아직 해당 기술을 접목한 제품이 많지 않다는 생각을 했다.
본인은 이러한 AMSI에 대한 이해도 향상을 목적으로 포스팅을 해봐야겠다고 생각했다.

🔔 오타 등 작성된 정보에 대한 피드백을 환영합니다.


1. AMSI가 뭔데?

AMSI(Antimalware Scan Interface)는 응용프로그램, 혹은 서비스가 백신 제품과 통합될 수 있도록 도와주는 다목적 인터페이스이다.

해당 기술은 다양한 상황에서 사용될 수 있다. 예를 들면 개발자가 본인의 프로그램에서 Anti-Virus 제품과 연동을 하려할 때 사용 가능하며, Anti-Virus 제품에서 Fileless형 Malware의 컨텐츠를 획득하기 위해 Third Party를 개발하여 활용할 수도 있다.
이 외에도 활용도는 무궁무진하다.

🔔 AMSI는 Consumer(응용 프로그램, 서비스 등)와 Provider(백신 업체 등)의 연결다리 역할을 수행함

2. 구조 및 동작 방식

다음은 AMSI Architecture이다.
출처 : https://learn.microsoft.com/ko-kr/windows/win32/amsi/how-amsi-helps

해당 구조를 통해 알 수 있는 가장 중요한 부분은 AMSI는 열려있는 구조라 모든 어플리케이션에서 호출 가능하다는 것이다.

복잡한 과정을 단순화해서 AMSI 동작 방식을 정리해보면 다음과 같다.

  1. Consumer를 실행시키면 OS가 amsi.dll를 프로세스에 함께 로드
  2. Consumer에서 amsi.dll의 내부 함수를 이용해 콘텐츠 스캔 요청 수행
  3. Provider가 스캔 요청된 콘텐츠를 받아서 추가 액션 가능

🔔 즉, AMSI를 이용하여 파일이나 스크립트의 행위를 즉시 탐지해서 콘텐츠 정보 로깅, 프로세스 차단 등의 행위를 수행 가능

3. 적용 이점 및 활용 사례

보안 직무에 있는 한 사람의 관점으로 적용 이점을 풀어보자 한다.

3-1. 빠르다

  • 중재자가 OS인 만큼 콘텐츠 요청까지 걸리는 시간이 적고, 빠르다.

3-2. 콘텐츠 입력 방식에 구애받지 않는다

  • 콘텐츠에 대한 입력이 언제·어디서·어떻게 들어오든 조건만 해당된다면 Consumer는 amsi.dll의 내부 함수를 통해 Provider에게 콘텐츠를 전송하여 인지 및 처리 가능하다.
  • 즉, 최근 이슈가 되고 있는 Fileless Malware 공격 대응에 유리하다고 볼 수 있다.

3-3. 이해 가능하다

  • 우리가 읽기 힘든 난독화 된 정적 콘텐츠가 아닌, 프로세스 상 로드 된 난독화 되지 않은 데이터를 처리 가능하다.
  • 즉, 악성 Macro Office 문서 공격 대응에 유리하다고 볼 수 있다.

4. 제약 사항

아직 모든 환경에 활용 가능한 것은 아니다. MS는 계속 범위를 확장해 나갈 것이라고 발표했다.

OS 제약 사항

  • Windows 10 / Windows Server 2016 이상

AMSI 기능이 통합된 Consumer

  • User Account Control, or UAC (elevation of EXE, COM, MSI, or ActiveX installation)
  • PowerShell (scripts, interactive use, and dynamic code evaluation)
  • Windows Script Host (wscript.exe and cscript.exe)
  • JavaScript and VBScript
  • Office 365
  • .Net 4.8 (dynamically loaded assembly)
    ...

다음 글에선 AMSI Provider를 실제로 구현해보고, Bypass 기술에 대해 설명드리겠습니다.
이상으로 글을 마치겠습니다.

profile
늘보의 개발생활

0개의 댓글