보안 위협 트렌드

포렌식 전문가의 실시간 이벤트 활용 방법 - Endpoint Security

엔드포인트를 대상으로 위협의 흔적을 찾는 작업은 고도의 전문성을 요구합니다. 파이어아이 맨디언트 전문가는 어떤 식으로 엔드포인트 포렌식을 수행할까요? 관련해 맨디언트 전문가의 실시간 이벤트 활용 방법을 소개합니다.

공격자가 피해자의 윈도우 시스템에서 무슨 짓을 했는지 이해하기 위해 침해 조사 분석가는 MFT(Master File Table), 레지스트리 하이브, AppCompat(Application Compatibility Cache) 등의 아티팩트를 살펴봅니다. 사실 이들 정보는 공격 증거로 충분하지 않습니다. 애초에 포렌식을 위한 기록을 남기는 것을 목적으로 만든 것들이 아니기 때문입니다. 그나마 살펴볼 것이 남아 있으면 다행입니다. 공격자가 자신의 흔적을 지우기 위해 삭제할 수도 있습니다. 또한, 몇몇 흔적만으로는 전체를 바라볼 수 없습니다. 여기에 실시간 이벤트 기록을 더한다면? 분석가는 점과 점을 이어가며 그림을 완성할 수 있습니다.

EDR(Enterprise Detection and Response) 솔루션이나 Sysmon 같은 로깅 도구를 이용해 실시간 이벤트를 탐지할 수 있는데, 이들 정보는 훌륭한 포렌식 아티팩트입니다. 맨디언트는 경험을 통해 엔드포인트 침해 조사에 있어 실시간 이벤트가 각종 증적의 빈틈을 메우는 데 매우 유용함을 알게 되었습니다. 실시간 이벤트 로그에는 프로세스 실행, 파일 쓰기 활동, 네트워크 연결 등 다양한 유형의 활동이 기록됩니다.

맨디언트 침해 대응 서비스 이용 기업은 맨디언트 분석가의 지원을 받습니다. 계약 기간 동안 맨디언트 분석가는 FireEye Endpoint Security를 사용해 이벤트를 실시간으로 추적합니다. 분석가는 파이어아이 엔드포인트 보안이 제공하는 Audit Viewer나 Redline을 이용해 실시간 이벤트를 검토합니다.

실제 사례를 통해 알아본 실시간 이벤트 활용법

본 포스팅에서 소개하는 윈도우 실시간 이벤트 활용은 실제 사례를 바탕으로 시나리오를 구성한 것입니다. TEST-DOMAIN\BackupAdmin 계정이 공격자에 의해 손상된 비활성 관리자 계정이라고 가정하고 이야기를 시작하겠습니다.

프로세스 실행 이벤트 ​

AppCompat, AmCache, WMI CCM_RecentlyUsedApps 등의 아티팩트를 살펴보면 공격자가 실행했을 것으로 추정되는 과거 기록을 찾을 수 있습니다. 단일 아티팩트만 보면 유용한 세부 내용을 파악할 수 없습니다. 하지만 실시간 프로세스 실행 이벤트를 살펴보면 이야기가 달라집니다. 파이어아이 솔루션으로 수집한 실시간 프로세스 실행 이벤트 기록에는 매우 상세한 정보가 담겨 있습니다. 상세 내용은 다음 표를 참조 바랍니다.

필드

예시

Timestamp (UTC)

2020-03-10 16:40:58.235

Sequence Number

2879512

PID

9392

Process Path

C:\Windows\Temp\legitservice.exe

Username

TEST-DOMAIN\BackupAdmin

Parent PID

9103

Parent Process Path

C:\Windows\System32\cmd.exe

EventType

Start

ProcessCmdLine

"C:\Windows\Temp\legitservice.exe"  -b -m

Process MD5 Hash

a823bc31395539816e8e4664e884550

분석가는 실시간 프로세스 이벤트를 기반으로 PID 9103인 C:\Windows\System32\cmd.exe 프로세스가 PID 9392인 C:\Windows\Temp\legitservice.exe 파일을 실행했음을 알 수 있습니다. 이 새로운 프로세스는 TEST-DOMAIN\BackupAdmin의 유저 컨텍스트에서 -b -m 명령행 인자를 사용했습니다.

분석가는 이 실시간 이벤트를 다른 프로세스 실행 아티팩트와 비교할 수 있습니다. 다음 표는 같은 실행 프로세스에 대한 AppCompat 항목입니다. 기록된 타임스탬프는 프로세스 시작 시간이 아니라 파일을 마지막으로 수정한 시간입니다.

필드 예시

File Last
Modified (UTC)

2020-03-07 23:48:09

File Path

C:\Windows\Temp\legitservice.exe

Executed Flag

TRUE

다음 표는 AmCache 항목에 대한 것입니다. 레지스트리 키의 마지막 수정 시간은 일반적으로 프로세스 시간을 결정하는데 사용할 수 있습니다. 이 아티팩트에는 파일의 SHA1 해시가 포함됩니다.

필드

필드

Registry Key
Last Modified (UTC)

2020-03-10 16:40:58

File Path

C:\Windows\Temp\legitservice.exe

File Sha1 Hash

2b2e04ab822ef34969b7d04642bae47385be425c

다음 표는 윈도우 이벤트 로그 프로세스 작성 이벤트의 예입니다. 이 아티팩트에는 16진수 표기 PID, 상위 프로세스에 대한 세부 사항, 프로세스 명령행 인자 필드가 포함됩니다. 참고로 이 예의 경우 명령행 인자가 기본적으로 비활성화되어 있어 해당 내용이 존재하지 않습니다.

필드

예시

Write Time (UTC)

2020-03-10 16:40:58

Log

Security

Source

Microsoft Windows security

EID

4688

Message

A new process has been created.

Creator Subject:
      Security ID:             TEST-DOMAIN\BackupAdmin
      Account Name:            BackupAdmin
      Account Domain:          TEST-DOMAIN
      Logon ID:                0x6D6AD

Target Subject:
      Security ID:             NULL SID
      Account Name:            -
      Account Domain:          -
      Logon ID:                0x0

Process Information:
      New Process ID:          0x24b0
      New Process Name:        C:\Windows\Temp\legitservice.exe
      Token Elevation Type:    %%1938
      Mandatory Label:         Mandatory Label\Medium Mandatory Level
      Creator Process ID:      0x238f
      Creator Process Name:    C:\Windows\System32\cmd.exe
      Process Command Line:    

AmCache 내용과 윈도우 이벤트 로그 프로세스 생성 이벤트를 결합해 보면 증거를 연결해 볼 수 있습니다.

파일 쓰기 이벤트

공격자는 중요 증거를 수정하거나 삭제할 수 있습니다. 공격자가 Sysinternal의 SDelete 같은 파일 삭제 도구를 이용하면 분석가가 파일 내용을 복구할 가능성은 희박합니다. 물론 방법은 있습니다. 파이어아이 솔루션의 실시간 파일 쓰기 이벤트를 파일의 MD5 해시와 파일의 일부 내용을 기록합니다. 따라서 공격자가 흔적을 지운 상황에도 내용 파악아 가능합니다. 파일 쓰기 이벤트는 문제 파일 생성 및 수정 프로세스를 기록합니다. 다음은 그 예입니다.

필드

예시

Timestamp (UTC)

2020-03-10 16:42:59.956

Sequence Number

2884312

PID

9392

Process Path

C:\Windows\Temp\legitservice.exe

Username

TEST-DOMAIN\BackupAdmin

Device Path

\Device\HarddiskVolume2

File Path

C:\Windows\Temp\WindowsServiceNT.log

File MD5 Hash

30a82a8a864b6407baf9955822ded8f9

Num Bytes Seen Written

8

Size

658

Writes

4

Event reason

File closed

Closed

TRUE

Base64 Encoded
Data At Lowest Offset

Q3JlYXRpbmcgJ1dpbmRvd3NTZXJ2aWNlTlQubG9nJy
Bsb2dmaWxlIDogT0sNCm1pbWlrYXR6KGNvbW1hbmQ

Text At Lowest Offset

Creating 'WindowsServiceNT.log' logfile : OK....mimikatz(command

실시간 파일 쓰기 이벤트를 통해 악성 실행 파일인 C:\Windows\Temp\legitservice.exe가 C:\Windows\Temp\WindowsServiceNT.log 파일을 MD5 해시(30a82a8a864b6407baf9955822ded8f9)로 디스크에 썼음을 알 수 있습니다. 파일 쓰기가 시작되었을 때부터 실시간 이벤트가 기록되어 맨디언트 전문가는 자격 증명 정보 수집을 위한 Mimikatz 도구 사용 여부를 판단할 수 있었습니다.

위와 같은 사실을 파악한 후 다시 조사를 해보면 새로운 프로세스 생성을 확인할 수 있습니다. 이 경우 C:\Windows\Temp\taskassist.exe가 다음과 같은 파일 쓰기 이벤트를 일으킵니다.

타임스탬프

파일 경로

파일 크기

2020-03-10 16:53:42.351

C:\Windows\Temp\WindowsServiceNT.log

638

2020-03-10 16:53:42.351

C:\Windows\Temp\AAAAAAAAAAAAAAAA.AAA

638

2020-03-10 16:53:42.351

C:\Windows\Temp\BBBBBBBBBBBBBBBB.BBB

638

2020-03-10 16:53:42.351

C:\Windows\Temp\CCCCCCCCCCCCCCCC.CCC

638

 

 

2020-03-10 16:53:42.382

C:\Windows\Temp\XXXXXXXXXXXXXXXX.XXX

638

2020-03-10 16:53:42.382

C:\Windows\Temp\YYYYYYYYYYYYYYYY.YYY

638

2020-03-10 16:53:42.382

C:\Windows\Temp\ZZZZZZZZZZZZZZZZ.ZZZ

638.

이런 행위는 이상해 보일 수 있습니다. 파일 해시 조사를 수행하면 프로세스가 실제 C:\Windows\Temp\taskassist.exe로 가장한 SDelete 임을 알 수 있습니다. 이 경우 SDelete는 파일 이름을 26번 바꾸며 흔적을 지웠습니다.

네트워크 이벤트

침해 조사 과정에서 엔드 포인트 히스토리 증거에서 네트워크 통신 부분을 자세히 보지 않는 경우도 있습니다. 맨디언트의 경우 NetFlow 데이, 패킷 캡처 기록을 담고 있는 네트워크 센서 정보를 참조합니다. 여기에 맬웨어 분석을 통해 C2 서버와 통신도 알아봅니다. 맨디언트가 이용하는 솔루션은 로컬 네트워크 및 원격 네트워크 모두에서 일어나는 포트, 프로토콜, 프로세스 관련 이벤트를 실시간으로 기록합니다. 다음 표는 실시간 IPv4 네트워크 이벤트 예입니다.

필드

예시

Timestamp (UTC)

2020-03-10 16:46:51.690

Sequence Number

2895588

PID

9392

Process + Path

C:\Windows\Temp\legitservice.exe

Username

TEST-DOMAIN\BackupAdmin

Local IP Address

10.0.0.52

Local Port

57472

Remote IP Address

10.0.0.51

Remote Port

443

Protocol

TCP

위 이벤트를 통해 실행 가능한 악성 파일인 C:\Windows\Temp\legitservice.exe가 아웃바운드 통신 연결을 통해 10.0.0.51:443 주소로 연결을 시도한 것을 확인할 수 있습니다.

레지스트리 키 이벤트

침해 조사 시 일반적으로 악용되는 레지스트리 키를 검토하여 악의적으로 활용된 키를 식별합니다. 실시간 레지스트리 키 이벤트는 수정된 레지스트리 키와 프로세서 간의 연계점을 찾는 데 유용한 정보를 제공합니다. 또한, 공격자가 레지스트리 키를 삭자 또는 이름을 바꾼 흔적도 찾을 수 있습니다. 다음 표는 파이어아이 솔루션이 기록한 실시간 레지스트리 키 이벤트 예입니다.

필드

예시

Timestamp (UTC)

2020-03-10 16:46:56.409

Sequence Number

2898196

PID

9392

Process + Path

C:\Windows\Temp\legitservice.exe

Username

TEST-DOMAIN\BackupAdmin

Event Type

3

Path

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
LegitWindowsService\ImagePath

Key Path

CurrentControlSet\Services\LegitWindowsService

Original Path

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\LegitWindowsService

Value Name

ImagePath

Value Type

REG_EXPAND_SZ

Base64 Encoded
Value

QwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAZQBtAHAAXABsAG
UAZwBpAHQAcwBlAHIAdgBpAGMAZQAuAGUAeABlAAAAAA==

Text

C:\Windows\Temp\legitservice.exe

파이어아이 솔루션이 제공하는 레지스트리 키 이벤트 정보의 경우 다음 표와 같이 이벤트 유형을 분류합니다.

이벤트 유형 값

오퍼레이션

1

PreSetValueKey

2

PreDeleteValueKey

3

PostCreateKey, PostCreateKeyEx, PreCreateKeyEx

4

PreDeleteKey

5

PreRenameKey

예로 제공한 정보의 경우 실시간 레지스트리 키 이벤트를 통해 C:\Windows\Temp\legitservice.exe 파일이 LegitWindowsService라는 윈도우 서비스를 생성한 것을 알 수 있습니다.

이상으로 맨디언트가 실시간 이벤트 정보를 어떻게 참조해 침해 분석을 하는지 간단히 살펴보았습니다.

해당 자료의 본문은 공식 영문 블로그에서 확인할 수 있습니다.