Detection engineering at Somma
2022, Apr 24  
데이터분석팀

Detection engineering 이란?

안티바이러스 같은 전통적인 엔드포인트 제품에서는 악성코드를 수집하고, 수집된 악성코드의 정적인 패턴을 오탐없이 정확하고 빠르게 찾아내는 기술이 주로 사용됩니다. 따라서 수집된 샘플로부터 변화가 없는 정적인 패턴을 자동으로 추출하고, 룰을 만들어 엔진에 배포하는과정이 반복되고, 얼마나 많은 악성코드 샘플을 빠르게 수집하느냐, 그리고 얼마나 빠르게 배포하느냐가 주된 성능평가의 요소로 작용됩니다. 참고로 현재는 대부분의 안티바이러스 제품들이 패턴 업데이트 주기를 줄이기 위해서 클라우드에 우선 패턴을 배포하고 클라우드에 접근해서 악성코드패턴을 참조하는 방식을 사용합니다.

이와는 다르게 쏘마의 MONSTER는 엔드포인트의 행위 정보를 통해서 위협을 식별하기 때문에 위협 행위에 대한 정확한 이해와 행위가 발생하는 시점의 시스템 상의 전후 상황을 파악해야 합니다. 따라서 샘플을 수집하고 패턴을 추출해서 데이터베이스 화 하는등의 정형화된 형태로 탐지엔진을 관리할 수 없고, 각각의 공격기술, 공격행위들을 기술적으로 이해하고, 시뮬레이션해보고, 탐지할 수 있는 또는 차단할 수 있는 방법들에 대한 깊은 연구가 선행되어야 합니다.

이 과정을 쏘마에서는 Detection engineering 이라고 정의하고, 이런 업무를 수행하는 사람들을 Detection engineer 또는 Threat hunter 직군으로 분류합니다. 아래 그림의 가장 상단에 있는 TTP 기반 위협 탐지 기술을 연구하고 개발하는 업무라고 이해하시면 될 것 같습니다.

[ 그림 1. 출처 : Pyramid of Pain ]

이번 글에서는 WMEye라는 공격도구를 예를 들어 쏘마에서 어떻게 Detection engineering 업무를 수행하는지 소개하고자 합니다. WMEye는 WMI(Windows Management Instrumentation)와 MSBuild.exe를 활용하여 Lateral Movement를 수행하는 도구로 사용된 기술 중 일부는 DEFCON-23 에서 소개된 적이 있습니다.

WMEye를 이해하기 위해 MITRE ATT&CK Matrix에서 정의하고 있는 T1127.001T1546.003 에 대해 간단히 소개하고, WMEye의 동작원리와 탐지 방안에 대해서 설명하도록 하겠습니다.

[참고] WMI 를 통한 공격에 대한 자세한 내용은 이전 글인 WMI(Windows Management Instrumentation) & WMI Attacks를 참고해주세요.


WMEye 동작방식 이해하기

WMEye는 WMI Event FilterMSBuild.exe 를 활용하여 Lateral Movement을 수행하는 Post Exploitation 도구로, 원격 PC에 공격자가 원하는 임의의 프로세스를 Fileless 형태로 실행시킬 수 있습니다.

Alt Text

[ 영상 출처 : WMEye Github ]

참고로 Permanent Event Subscription을 시스템 상에 등록하기 위해서는 기본적으로 관리자 권한이 필요하므로, Target System에 대한 Administrator 계정 정보를 알고 있어야 합니다.

  • WMI Permanent Event Subscription의 Event Consumer 종류 중 LogFileEventConsumer 방식을 사용하여 Target PC에 악성 파일을(MSBuild 프로젝트 파일) 생성
  • MSBuild 프로젝트 파일의 UsingTask 요소에 수행될 악성 행위 정의하여 빌드 시 실행

WMI 개념을 이해하기 위해서는 쏘마 기술 블로그WMI Permanent Subscription 부분을 참고해주세요.

동작 과정은 다음과 같이 크게 6가지 단계를 거치게 됩니다.

Target PC에 WMI Class 생성 후, 해당 Class의 속성으로 악성 프로세스 실행 셸 코드 등록

image-20220222133757772

[ 그림 3. WMEye코드 ]

Target PC에 특정 프로세스 생성을 확인할 수 있는 WMI Event Filter 생성

image-20220222133931189

[ 그림 4. WMEye코드 ]

이벤트를 Consuming 할 수 있는 WMI LogFile Event Consumer 생성

image-20220222134300529

[ 그림 5. WMEye코드 ]

앞서 ②번과 ③번에서 언급한 Filter와 Consumer 바인딩

image-20220222134324062

[ 그림 6. WMEye코드 ]

Target PC에 특정 프로세스를 실행시켜 Event LogFile(MSBuild 프로젝트 파일) 생성

image-20220222140131905

[ 그림 7. WMEye코드 ]

WMI Consumer에 의해 생성된 LogFile을 인자로 MSBuild.exe를 실행

image-20220222140028343

[ 그림 8. WMEye코드 ]

MITRE ATT&CK Mapping

쏘마에서는 위협 행위에 대한 탐지 정보를 MITRE ATT&CK를 통해서 표현하기 때문에 탐지하려는 공격행위 또는 이상행위가 어떤 Technique에 매핑되는지 확인합니다.

T1546.003 Event Triggered Execution: Windows Management Instrumentation Event Subscription

T1546.003는 WMI의 Permenant Event Subscription 기능을 사용하는 공격 기법으로, WMEye에서는 원격 PC에 악성 공격을 트리거 하기 위해 사용되었습니다. 이 기능을 통해 시스템 내에서 발생하는 이벤트 중 특정 조건을 가진 이벤트가 발생할 때마다 특정 로직을 실행할 수 있게 됩니다. 또한, WMI subscription은 WMI Provider Host Process (WmiPrvSe.exe)에 의해 실행되어 System 권한을 갖게 되므로 Administrator에서 System으로 권한 상승이 가능하게 됩니다.

Schematic representation of the process for permanent WMI event subscription

[ 그림 1. 출처 : WMI Event Subscription ]

T1127.001 Trusted Developer Utilities Proxy Execution: MSBuild

T1127.001은 WMEye에서 악성 페이로드 실행을 위해 사용되었습니다. MSBuild는 애플리케이션을 빌드하기 위해 마이크로소프트에서 제공하는 개발도구로, 일반적으로 Visual Studio 에서 애플리케이션을 빌드 할 때 사용합니다. MSBuild는 빌드 시 XML 프로젝트 파일을 읽어 빌드를 수행하는데, 프로젝트 파일에는 데이터베이스 설정 및 다른 프로젝트 정보 가져오기, 작업 지정과 같은 빌드 방법과 설정 정보가 담기게 됩니다. 이 중 Using Task 요소는 빌드 수행 시 실행되는 작업이 정의되며, 이를 통해 개발자는 다양한 작업을 지정할 수 있습니다.

image-20220222140634202

[ 그림 2. UsingTask요소 내에 정의된 악성코드 ]

MSBuild 파일 스키마에 대한 내용은 MSDN 문서를 참조합니다.

WMEye Hunting

Monster agent에서 수집한 데이터들을 활용하여 WMEye의 행위 과정을 예제를 통해 살펴보고, 탐지를 자동화 하기 위한 탐지 룰 셋을 정의해보겠습니다. (Monster Agent에 대한 내용은 쏘마 기술 블로그를 참고해주세요) 탐지를 위한 각 이벤트 활용 방법은 아래와 같으며, 해당 기술 탐지를 위해 가설 수립단계와 탐지 확인단계로 나누어 설명하겠습니다.

WMI Operation 분석

① 가설 수립

WMEye에서 악성 프로젝트 파일을 Target PC에 옮기기 위해서는 WMI Permanent Event Subscription을 사용합니다. 이 때, WMEye에서는 Event Consumer로 LogFileEventConsumer를 활용하는데 Monster가 수집하는 WMI Operation 정보의 __FilterToConsumerBinding 문자열과 LogFileEventConsumer 문자열이 포함되어 있는지 확인하면 탐지가 가능할 것이라는 가설을 세울 수 있습니다.

② 가설 검증

image-20220121161544116

[ 그림 9. WMI 이벤트 ]

Monster Agent가 수집한 WMI Operation 이벤트에 __FilterToConsumerBinding 문자열과 LogFileEventConsumer 문자열이 포함된것을 확인 할 수 있습니다. 하지만 단순히 WMI Operation정보만으로 위협행위라고 간주하기에는 무리가 있기 때문에 프로세스 실행데이터도 분석해야 합니다.

프로세스 생성 행위 분석

① 가설 수립

앞에서 분석한 내용에 따른면 Target PC에서 WMI를 통해서 MSBuild.exe 프로세스가 생성될 것이므로 MSBuild.exe 프로세스의 부모 프로세스는 WmiPrvse.exe 일것입니다. 따라서 생성된 프로세스가 MSBuild.exe 이고, 부모 프로세스가 Wmiprvse.exe 인 조건을 모두 만족한다면 WMEye를 통한 공격행위를 조금 더 정확하게 식별해 낼 수 있을 것입니다.

② 가설 검증

image-20220122203942891

[ 그림 10. 프로세스 생성 이벤트 ]

예상한대로 WmiPrvse.exe 프로세스의 자식 프로세스로 MSBuild.exe 프로세스가 실행되었음을 확인 할 수 있었습니다.


내용을 종합해보면

  • WMI Operation에서 __FilterToConsumerBinding 문자열과 LogFileEventConsumer 문자열이 포함된 이벤트가 존재하고
  • 이후 생성된 프로세스 이벤트 중 이미지 이름이 MSBuild.exe이고, 부모프로세스 이름이 WmiPrvse.exe 인 이벤트가 있다면

WMEye 또는 WMEye 와 유사한 형태의 공격행위가 발생했음을 확인 할 수 있을것입니다. 사실 WMI operation 을 통해서 실행코드를 빌드하고, 실행하는 행위는 일반적인 상황에 벌어지는 행위는 아니기때문에 이상행위로 분류하고, 추가적인 분석이 필요한 상황이 확실할 것입니다.

마치며

이번 포스팅에서는 WMEye 라는 Post exploiting 도구를 예로 들어 쏘마에서의 Detection engineering 또는 Threat Hunting 을 수행하는지 소개해드렸습니다.

쏘마의 Detection engineering 파트에서는

  1. 공격기술/공격행위에 대한 기술적인 분석을 하고
  2. 이 행위를 탐지할 수 있는 데이터 및 로직에 대한 연구를 수행하고
  3. 클라우드상의 탐지 엔진에 해당 탐지로직을 배포하고, 위협행위 탐지를 자동화 합니다.

내용이 너무 길어질 것 같아서 Adversarial behavior simulator 인 Cheiron 과 위협행위 탐지엔진 및 탐지로직 작성에 대한 부분을 제외되었으나 다른 포스팅을 통해 소개하도록 하겠습니다.