1. 개요


  이벤트 로그에 대하여 학습을 하기 위해 이벤트 ID에 대하여 알아보았다. 너무 많은 이벤트들이 존재하기에 어떤 이벤트가 중요한 것인지 불필요한지 직접 확인 하기에는 번거로움이 크다. 따라서 이번 문서에서는 많은 이벤트들 중에서 유심히 보아야 할 로그에 대하여 학습하고자 한다.

  이에 대하여 NSA에서는 Spotting the Adversary with Windows Event Log Monitoring에 대하여 글을 작성하였으며 이를 토대로 해당 문서를 작성하고자 한다. 위에서 언급한 해당 문서에서는 크게 16개의 카테고리에 대하여 설명을 한다. 이러한 로그에 대하여 학습해보자.

표 1. NSA – 16가지 이벤트 카테고리

  아래의 테이블은 각 카테고리와 이를 나타내는 이벤트 ID에 대하여 정리된 것이다. 이러한 표에서 몇 가지에 대하여 상세하게 알아보자.


2. 이벤트 카테고리


2.1 Application Whitelisting

  응용프로그램 화이트 리스트 이벤트는 차단된 응용 프로그램을 찾기 위해 수집되어야 한다. 차단된 응용프로그램들은 악의적일 수가 있으며, 승인되지 않은 소프트웨어의 실행을 시도하고자 한다. 응용프로그램 화이트 리스트 이벤트는 SRP(소프트웨어 제한 정책)이나 AppLocker가 네트워크 상에서 사용될 때 수집 될 수 있다.

그림 1. Whitelisting Events

2.2 Application Crashes

  응용 프로그램 충돌에 관한 이벤트들은 충돌이 발생했을 때, 이것이 악의적인 것에 의한 것인지 아닌지 판단하는데 도움을 준다. BSOD, Windows Error Reporting(WER), 응용 프로그램 충돌들은 이벤트를 발생시킨다. 만약 EMET(Microsoft Enhanced Mitigation Experience Toolkit)을 사용하고 있다면, EMET 로그들도 수집될 것이다.

그림 2. Application Events

2.3 System or Service Failures

  시스템과 서비스 실패는 조사하는데 있어 흥미로운 이벤트들이다. 서비스 동작은 보통 실패하지 않는다. 만약 서비스가 실패했을 경우, 관리자로서 이를 검토하여야 한다. 만약 윈도우 서비스가 지속적으로 실패할 경우, 이는 공격자가 해당 서비스를 대상으로 하고 있음을 나타내는 것이다.

그림 3. System Events

2.4 Windows Update Errors

  컴퓨터는 알려진 취약점을 대비하기 위하여 최신 상태를 유지해야 한다. 그럴 가능성은 거의 없지만, 이러한 패치가 때로는 적용하는데 실패하기도 한다. 업데이트를 실패하는 것은 운영체제나 응용프로그램의 취약점을 피하기 위하여 해결해야만 한다.

그림 4. Windows Update Failed Event

2.5 Windows Firewall

  만약 클라이언트 환경이 호스트 기반의 윈도우 방화벽의 사용하고 있다면, 방화벽의 상태를 나타내는 이벤트들이 수집된다. 예를 들어, 만약 방화벽이 활성화에서 비활성화로 전환된다면 이에 대한 로그가 남는 것이다. 일반적인 사용자는 방화벽의 상태나 규칙을 변경하지 않는다.

그림 5. Firewall Events

2.6 Clearing Event Logs

  정상적인 동작을 하는 동안 이벤트 로그 데이터가 지워질 가능성은 거의 없으며, 악의적인 공격자들이 그들의 행동을 감추기 위해 이벤트 로그를 지웠을 가능성은 높다. 이벤트 로그가 지워져을 때 이는 분명히 의심할 만한 사항이다. 이벤트 로그를 수집하는 것은 공격자가 자신의 행동을 감추기 더 어렵게 하는 이점이 있다.

  하지만 공격자가 이벤트를 지웠을 경우 이것이 새로운 이벤트로 기록이 된다. 따라서 로그를 지웠다는 새로운 이벤트가 발견된다면, 이에 맞게 추가적인 행동을 취해야 한다. 가령 VSS를 확인한다거나 삭제된 로그를 복구하는 조치를 취하면 좋을 것이다.

그림 6. Log Activity Events

2.7 Software and Service Installation

  일반적인 네트워크 동작의 일부로써, 새로운 소프트웨어나 서비스가 설치되며 이러한 활동에 대해서 이벤트가 생성 된다. 관리자들은 새롭게 설치된 소프트웨어나 시스템 서비스에 대한 로그를 통해 확인할 수가 있으며, 네트워크에 위험하지 않은지 추가적인 확인할 수가 있다.

그림 7. Software and Service Events

  여기서 이벤트 ID 800에 대하여 알아야 더 언급하자면, 윈도우 7에서 해당 이벤트는 매일 오전 12:30에 응용프로그램 활동에 대하여 요약을 제공하기 위하여 생성된다. 이 이벤트는 설치되거나 제거된 응용 프로그램의 수를 찾는 관리자들에게 편의를 제공할 것이다.

2.8 Account Usage

  사용자 계정 정보는 수집과 감사 될 수가 있다. 로컬 계정 사용을 추적하는 것은 Pass the Hash 활동과 인가되지 않은 다른 계정의 사용을 탐지할 수 있게 도와준다. 원격 데스크톱 로그인 이나 권한 그룹에 사용자를 추가하거나, 계정 잠금과 같은 추가적인 정보들은 추적될 수가 있다.

  권한 그룹에 추가된 사용자 계정은 실제로 권한 그룹에 속한 사용자임을 보증하기 위하여 더 면밀히 감시되어야 한다. 권한 그룹의 인가되지 않은 멤버는 악의적인 활동이 발생할 수 있음을 나타낸다.

그림 8. Account Activity Events

  도메인 계정 잠금 이벤트는 로컬 계정 잠금 이벤트가 로컬 컴퓨터에 생성되는 것에 반하여 도메인 컨트롤러에 생성된다. 또 위에서 성공적으로 사용자 계정에 로그인한 이벤트 (ID: 4624)에서는 로그온 유형에 대하여 반드시 확인해주어야 한다. 이에 대한 설명은 2.15의 로그온 유형 표를 참고하자.

2.9 Kernel Driver Signing

  윈도우 비스타 64비트에서 커널 드라이브 서명은 커널에 악의적인 드라이버들이나 행동이 삽입되는 것에 대해 막도록 하는 효과가 있다. 변경되어 보호되고 있는 드라이버의 표시는 악의적인 활동을 나타낼 수가 있거나 디스크 에러와 조사를 보장한다.

그림 9. Kernel Driver Signing Events

2.10 Group Policy Errors

  도메인 컴퓨터의 관리는 관리자가 보안과 그룹 정책의 규제를 높이는 것을 허가한다. 그룹 정책 에러로 인해 정책을 적용하지 못하는 것은 보안의 안전함을 감소시킨다. 따라서 관리자는 즉시 이러한 이벤트들에 대해 조사하여야 한다.

그림 10. Group Policy Errors Events

2.11 Windows Defender Activities

  Spyware나 Malware는 심각한 문제들을 남기기에 마이크로소프트는 Windows Defender라는 Anti-Spyware와 Anti-Virus를 개발하였다. 이러한 악의적인 프로그램을 감지, 제거, 예방한다는 알림은 조사되어야 한다. Windows Defender가 도작하는데 실패했다는 알림은, 관리자가 추가적인 감염이나 이러한 가능성을 방지하기 위해 즉시 올바르게 만들어야 한다. 만약 서드파티 안티바이러스나 안티스파이웨어 제품이 올바르게 사용되고 있다면, 이러한 로그는 필요하지 않다.

그림 11. Windows Defender Activities Event

2.12 Mobile Device Activities

  무선 장치들은 많은 곳에 존재하며 기업의 무선 장치 활동을 기록하는 것은 중요하다. 프로토콜에 관계 없이 통신을 위해 사용되는 무선장치들은 다른 네트워크를 오가며 손상될 수가 있다. 그러므로 어떤 휴대용 네트워크 장치를 추적하는 것은 손상이 일어나는 것을 방지하는데 유용하다. 아래의 이벤트들의 생성은 얼마나 자주 장치를 연결해제 하거나, 재연결 하는 가에 따라 빈번히 생성된다.

그림 12. Mobility related Events

2.13 External Media Detection

  USB 장치를 감지하는 것은 많은 환경에서 중요하다. 아래의 나타나는 이벤트와 이벤트 로그들은 오직 윈도우 8 이상에서만 사용이 가능하다.

그림 13. External Media Detection Events

  만약 윈도우 7이하의 경우에는 Microsoft-Windows-Driverframeworks-Usermode를 확인하면 된다. 해당 부분에서 이벤트 ID 1003, 2000, 2001, 1004를 통하여 USB가 연결되었다는 것을 확인할 수가 있으며 반대로 해당 USB가 해제된 것은 1006, 1008, 2900, 2901 등을 통해 확인할 수가 있다.

2.14 Printing Services

  문서를 인쇄하는 것은 많은 환경에서 일상적인 작업을 위해 필수적이다. 매우 많은 양의 인쇄는 어떤 문서가 인쇄되었는지, 누구의 것인지에 대하여 추적하거나 확인하는데 있어 어렵게 한다. 처리를 위해 프린터로 전달되는 문서들은 다양한 방식으로 로깅하기 위해 기록될 수 있다.

  각 인쇄 작업은 프린터 서버나 프린터 그 자체 또는 요청된 기계에 기록될 수가 있다. 이러한 동작들에 대한 로그를 기록하는 것은 인쇄된 특정 문서들을 발견할 수가 있다. 아래의 이벤트들은 문서를 인쇄하기 위해 요청되는 클라이언트 장비에서 생성된 것이다.

그림 14. Printing Services Events

2.15 Pass the Hash Detection

  사용자 계정에 Pass the Hash(PTH)를 검출하는 것은 XML로 고급 필터링 옵션을 구성하는 커스텀 뷰를 생성하는 것이 요구된다. 이벤트 쿼리 언어는 XPath에 기반한다. 아래의 추천된 쿼리 리스트는 PTH 공격을 감지하는데 제한된다. 이러한 쿼리들은 도메인의 일부가 아닌 로컬 계정을 사용하는 공격자의 행동을 밝히는데 초점이 맞추어져 있다.

  아래의 쿼리 리스트는 도메인의 일부가 아닌 다른 장치로 원격 연결을 시도하는 로컬 계정이 보여주는 이벤트들을 포착한다. 아래의 XPath 쿼리들은 이벤트 뷰어의 Custom Views를 통해 사용된다.

  성공적인 PTH은 Securiy Log의 이벤트 ID 4624를 야기한다. 도메인 로그온이 아닌 익명의 NTLM 인증은 로그온 유형이 3으로 나타난다. 아래에는 해당 이벤트에 대한 설명이 나와있으며 아래의 표에서 로그온 유형에 따른 설명들을 확인할 수가 있다.

그림 15. Logon Success – PTH Event

표 2. Logon Type

  로그온 유형에 따라 해당 로그인의 의미가 많이 중요해질 수가 있으므로 위의 표를 상기하여야 한다. 아래에 있는 쿼리 리스트에서 <DOMAIN NAME>에 실제 도메인 이름을 넣어주면 해당 쿼리가 올바르게 동작한다.

<QueryList>

<Query Id="0" Path="ForwardedEvents">

<Select Path="ForwardedEvents">

*[System[(Level=4 or Level=0) and (EventID=4624)]]

and

*[EventData[Data[@Name='LogonType'] and (Data='3')]]

and

*[EventData[Data[@Name='AuthenticationPackageName'] = 'NTLM']]

and

*[EventData[Data[@Name='TargetUserName'] != 'ANONYMOUS LOGON']]

and

*[EventData[Data[@Name='TargetDomainName'] != '<DOMAIN NAME>']]

</Select>

</Query>

</QueryList> 

  PTH를 통한 로그온 시도에 실패했을 경우 이는 이벤트 ID 4625를 야기한다. 이 역시 로그온 타입이 3으로 도메인 로그온이 아닌 익명의 로그온 계정이 NTLM 인증을 하고자 할 때 생성된다.

그림 16. Logon Fail – PTH Events

<QueryList>

<Query Id="0" Path="ForwardedEvents">

<Select Path="ForwardedEvents">

*[System[(Level=4 or Level=0) and (EventID=4625)]]

and

*[EventData[Data[@Name='LogonType'] and (Data='3')]]

and

*[EventData[Data[@Name='AuthenticationPackageName'] = 'NTLM']]

and

*[EventData[Data[@Name='TargetUserName'] != 'ANONYMOUS LOGON']]

and

*[EventData[Data[@Name='TargetDomainName'] != '<DOMAIN NAME>']]

</Select>

</Query>

</QueryList>

2.16 Remote Desktop Logon Detection

  원격 데스크탑 계정 활동 이벤트는 GUI 이벤트 뷰어를 통해 확인하기 쉽지 않다. 계정이 원격으로 클라이언트에 연결될 때, 일반적인 로그온 성공 이벤트가 생성된다. 커스텀 쿼리 필터는 행해진 로그온 유형을 분류하는데 도움을 줄 수 있다. 아래의 쿼리는 원격 데스크톱을 사용한 로그인을 보여준다. 원격 데스크톱 활동은 특정 관리자가 이를 사용하며 이는 제한된 설정에서 진행되어야 한다. 또한 이러한 활동은 모니터링 되어야만 한다. 만약 예상치 못한 로그인 활동이 있을 경우 이에 대해선 반드시 조사하여야 한다.

  아래의 XPath 쿼리는 이벤트 뷰어의 커스텀 뷰를 통해 사용된다. 이벤트 ID 4624와 4634는 각 각 언제 사용자가 로그온 했는지, 로그오프 했는지를 나타낸다. 로그온 타입 10은 이러한 원격 로그인에 대해 나타낸다.

그림 17. Remote Desktop Login Events

<QueryList>

<Query Id="0" Path="ForwardedEvents">

<Select Path="ForwardedEvents">

<!-- Collects Logon and Logoffs of RDP -->

<!-- Remote Desktop Protocol Connections -->

*[System[(Level=4 or Level=0) and (EventID=4624 or EventID=4634)]]

and

*[EventData[Data[@Name='LogonType']='10')]]

and

(*[EventData[Data[5]='10')]]

or

*[EventData[Data[@Name='AuthenticationPackageName'] = 'Negotiate']])

</Select>

</Query>

</QueryList>

 

3. 결론


2장의 내용을 통하여 어떠한 로그들이 어떠한 용도로 활용되어야 하는지에 대하여 알아보았다. 위의 내용이 옳다는 것만은 아니다. 당연히 이외에도 유심히 보아야 할 이벤트로그는 많이 존재할 것이다. 그러한 추가적인 내용을 공부하기 전에 이번 문서를 통해 어떠한 식으로 접근하여야 하는가에 대하여 알아보았다고 할 수 있다.

이벤트 로그를 공부하면서 많은 이벤트를 접하게 될 때 www.eventid.net/을 통해 찾아볼 수 있으며, 대부분의 경우 구글에 검색하면 많은 정보들을 볼 수가 있다.

  

출처


* 블로그, Spotting the Adversary with Windows Event Log Monitoring

http://www.redblue.team/2015/09/spotting-adversary-with-windows-event.html

* 블로그, 윈도우 이벤트 로그 분석 #기초

http://elven.kr/archives/361

* 문서, Spotting the Adversary with Windows Event Log Monitoring.pdf

    https://www.nsa.gov/ia/_files/app/spotting_the_adversary_with_windows_event_log_monitoring.pdf

'Forensic > Theory' 카테고리의 다른 글

Pulling the Plug  (0) 2017.03.22
Unicode 확장자 변조(RLO)  (3) 2016.05.15
Windows Event Log (1) – 이벤트 로그의 개념  (2) 2016.02.01
Volume Shadow Copy 분석  (1) 2016.01.18
NTFS FIle System (9) $UsnJrnl  (0) 2016.01.16