침입 검색에 도움이 되는 Windows 이벤트 전달 사용
조직의 디바이스에서 이벤트를 수집하는 방법을 알아보세요. 이 문서에서는 정상적인 작업 및 침입이 의심되는 경우 모두에서의 이벤트를 다룹니다.
WEF(Windows 이벤트 전달)는 조직의 디바이스에 기록된 운영 또는 관리 이벤트를 읽고 선택한 이벤트를 WEC(Windows 이벤트 수집기) 서버에 전달합니다.
이 기능을 수행하기 위해 클라이언트 디바이스에 게시된 두 가지 구독(기준 구독 및 의심 구독)이 있습니다. 기준 구독은 조직의 모든 디바이스를 등록하며, Suspect 구독에는 사용자가 추가한 디바이스만 포함됩니다. Suspect 구독은 시스템 활동에 대한 컨텍스트를 빌드하는 데 도움이 되는 더 많은 이벤트를 수집하며, 기준 작업에 영향을 주지 않고 필요에 따라 새 이벤트 및/또는 시나리오를 수용하도록 신속하게 업데이트할 수 있습니다.
이 구현은 이벤트가 궁극적으로 저장되는 위치를 구분하는 데 도움이 됩니다. 초기 계획 이벤트는 SEM(보안 이벤트 관리자)과 같은 온라인 분석 기능이 있는 디바이스로 전송할 수 있으며, 장기 스토리지 및 심층 분석을 위해 HDInsight 또는 Hadoop과 같은 MapReduce 시스템으로 이벤트를 보낼 수도 있습니다. Suspect 구독의 이벤트는 볼륨 및 낮은 신호/노이즈 비율로 인해 MapReduce 시스템으로 직접 전송되며 주로 호스트 포렌식 분석에 사용됩니다.
SEM의 강점은 알려진 패턴 방식에 대한 경고를 검사, 상호 연결 및 생성하고 머신 속도로 보안 직원에게 경고할 수 있다는 것입니다.
MapReduce 시스템에는 더 긴 보존 시간(SEM의 경우 년 대 개월), 더 큰 수신 기능(하루에 수백 테라바이트) 및 통계 및 추세 분석, 패턴 클러스터링 분석 또는 Machine Learning 알고리즘 적용과 같은 데이터에 대해 더 복잡한 작업을 수행할 수 있는 기능이 있습니다.
WEF 이벤트에 대한 대략적인 크기 조정 가이드는 다음과 같습니다.
이벤트/초 범위 | 데이터 저장소 |
---|---|
0 - 5,000 | SQL 또는 SEM |
5,000 - 50,000 | SEM |
50,000+ | Hadoop/HDInsight/Data Lake |
디바이스의 이벤트 생성은 사용하지 않도록 설정된 이벤트 로그 사용 및 채널 권한 설정을 포함하여 기준 WEF 구현을 위해 GPO의 일부로 별도로 또는 GPO의 일부로 사용하도록 설정해야 합니다. 자세한 내용은 부록 C - 이벤트 채널 설정(사용 및 채널 액세스) 메서드를 참조하세요. 이 조건은 WEF가 이벤트 로그와 관련된 수동 시스템이기 때문입니다. 이벤트 로그 파일의 크기를 변경하거나, 비활성화된 이벤트 채널을 사용하도록 설정하거나, 채널 권한을 변경하거나, 보안 감사 정책을 조정할 수 없습니다. WEF는 기존 이벤트에 대한 이벤트 채널만 쿼리합니다. 또한 디바이스에서 이벤트 생성이 이미 발생하므로 시스템 활동의 전체 기록을 빌드하는 보다 완전한 이벤트 수집이 가능합니다. 그렇지 않으면 디바이스에서 생성되는 항목을 변경하기 위해 GPO 및 WEF 구독 새로 고침 주기의 속도로 제한됩니다. 최신 디바이스에서는 더 많은 이벤트 채널을 사용하도록 설정하고 이벤트 로그 파일의 크기를 확장해도 눈에 띄는 성능 차이가 발생하지 않았습니다.
최소 권장 감사 정책 및 레지스트리 시스템 ACL 설정은 부록 A - 최소 권장 최소 감사 정책 및 부록 B - 권장 최소 레지스트리 시스템 ACL 정책을 참조하세요.
참고
이는 WEF 구독이 선택하는 항목을 충족하는 데 필요한 최소 값입니다.
WEF 구독 관리 관점에서 제공된 이벤트 쿼리는 유지 관리의 용이성을 위해 두 개의 별도 구독에서 사용해야 합니다. 특정 조건을 충족하는 컴퓨터만 대상 구독에 액세스할 수 있습니다. 이 액세스는 알고리즘 또는 분석가의 방향에 따라 결정됩니다. 모든 디바이스는 기준 구독에 액세스할 수 있어야 합니다.
이 이중 구독 시스템은 다음과 같은 두 개의 기본 구독을 만들 수 있습니다.
- 기준 WEF 구독. 모든 호스트에서 수집된 이벤트; 이러한 이벤트에는 해당 컴퓨터에서만 내보내는 일부 역할별 이벤트가 포함됩니다.
- 대상 WEF 구독. 비정상적인 활동 및/또는 해당 시스템에 대한 인식이 높아진 제한된 호스트 집합에서 수집된 이벤트입니다.
각각 아래의 해당 이벤트 쿼리를 사용합니다. 대상 구독의 경우 시스템에서 기존 이벤트를 수집할 수 있도록 "기존 이벤트 읽기" 옵션을 true로 설정해야 합니다. 기본적으로 WEF 구독은 클라이언트에서 WEF 구독을 받은 후에만 생성된 이벤트를 전달합니다.
부록 E - 주석이 추가된 기준 구독 이벤트 쿼리 및 부록 F - 주석이 추가된 의심 구독 이벤트 쿼리에서 WEF 구독을 만들 때 이벤트 쿼리 XML이 포함됩니다. 이러한 구독은 쿼리 목적과 명확성을 위해 주석이 추가됩니다. 개별 <Query>
요소는 나머지 쿼리에 영향을 주지 않고 제거하거나 편집할 수 있습니다.
일반적인 WEF 질문
이 섹션에서는 IT 전문가 및 고객의 일반적인 질문을 다룹니다.
사용자가 컴퓨터가 WEF에 대해 사용하도록 설정되어 있는지 또는 WEF에 오류가 발생하는지 여부를 알 수 있나요?
짧은 대답은 다음과 같습니다.
더 긴 대답은 Eventlog-forwardingPlugin/Operational 이벤트 채널이 디바이스에 있는 WEF 구독과 관련된 성공, 경고 및 오류 이벤트를 기록합니다. 사용자가 이벤트 뷰어를 열고 해당 채널로 이동하지 않는 한 리소스 사용량 또는 그래픽 사용자 인터페이스 팝업을 통해 WEF를 알 수 없습니다. WEF 구독에 문제가 있더라도 사용자 상호 작용 또는 성능 저하는 없습니다. 모든 성공, 경고 및 실패 이벤트는 이 운영 이벤트 채널에 기록됩니다.
WEF 푸시 또는 풀인가요?
WEF 구독은 푸시 또는 끌어오도록 구성할 수 있지만 둘 다 구성할 수는 없습니다. 가장 확장성이 뛰어난 가장 간단하고 유연한 IT 배포는 푸시 또는 소스 시작 구독을 사용하여 달성할 수 있습니다. WEF 클라이언트는 GPO를 사용하여 구성되고 기본 제공 전달 클라이언트가 활성화됩니다. 끌어오기, 수집기 시작의 경우 WEC 서버의 구독은 이벤트를 선택할 WEF 클라이언트 디바이스의 이름으로 미리 구성됩니다. 이러한 클라이언트는 구독에 사용된 자격 증명이 이벤트 로그에 원격으로 액세스할 수 있도록 미리 구성해야 합니다(일반적으로 이벤트 로그 판독 기 기본 제공 로컬 보안 그룹에 자격 증명을 추가합니다.) 유용한 시나리오: 특정 컴퓨터 집합을 면밀히 모니터링합니다.
WEF는 VPN 또는 RAS를 통해 작동합니까?
WEF는 VPN, RAS 및 DirectAccess 시나리오를 잘 처리하며 WEF Collector에 대한 연결이 다시 설정될 때 누적된 이벤트 백로그를 다시 연결하고 보냅니다.
클라이언트 진행률을 추적하려면 어떻게 할까요?
WEC 서버는 레지스트리에서 각 WEF 구독에 대한 각 이벤트 원본에 대한 책갈피 정보 및 마지막 하트비트 시간을 유지 관리합니다. 이벤트 원본이 WEC 서버에 다시 연결되면 마지막 책갈피 위치가 디바이스로 전송되어 이벤트 전달을 다시 시작하기 위한 시작점으로 사용합니다. WEF 클라이언트에 보낼 이벤트가 없는 경우 WEF 클라이언트는 주기적으로 연결하여 하트비트를 WEC 서버에 보내 활성 상태임을 나타냅니다. 이 하트비트 값은 각 구독에 대해 개별적으로 구성할 수 있습니다.
WEF는 IPv4, IPv6 또는 혼합 IPv4/IPv6 환경에서 작동합니까?
예. WEF는 전송에 구애받지 않으며 IPv4 또는 IPv6을 통해 작동합니다.
WEF 이벤트가 암호화됩니까? HTTP/HTTPS 옵션이 표시됩니다.
도메인 설정에서 WEF 이벤트를 전송하는 데 사용되는 연결은 기본적으로 Kerberos를 사용하여 암호화됩니다(GPO를 사용하여 사용하지 않도록 설정할 수 있는 대체 옵션으로 NTLM 사용). WEF 수집기만 연결을 해독할 수 있습니다. 또한 WEF 클라이언트와 WEC 서버 간의 연결은 인증 유형(Kerberos 또는 NTLM)에 관계없이 상호 인증됩니다. 인증에서 Kerberos만 사용하도록 강제 적용하는 GPO 옵션이 있습니다.
이 인증 및 암호화는 HTTP 또는 HTTPS를 선택했는지 여부에 관계없이 수행됩니다.
KERberos 기반 상호 인증이 옵션이 아닌 경우 인증서 기반 인증을 사용하는 경우 HTTPS 옵션을 사용할 수 있습니다. SSL 인증서 및 프로비전된 클라이언트 인증서는 상호 인증을 제공하는 데 사용됩니다.
WEF 클라이언트에는 이벤트에 대한 별도의 버퍼가 있나요?
WEF 클라이언트 머신 로컬 이벤트 로그는 WEC 서버에 대한 연결이 끊어질 때 WEF에 대한 버퍼입니다. "버퍼 크기"를 늘리려면 이벤트를 선택하는 특정 이벤트 로그 파일의 최대 파일 크기를 늘립니다. 자세한 내용은 부록 C - 이벤트 채널 설정(사용 및 채널 액세스) 메서드를 참조하세요.
이벤트 로그가 기존 이벤트를 덮어쓰면(디바이스가 이벤트 수집기에 연결되지 않은 경우 데이터가 손실됨) 클라이언트에서 이벤트가 손실된다는 알림이 WEF 수집기로 전송되지 않습니다. 이벤트 스트림에서 간격이 발생했음을 나타내는 지표도 없습니다.
전달된 이벤트에 사용되는 형식은 무엇인가요?
WEF에는 전달된 이벤트에 대한 두 가지 모드가 있습니다. 기본값은 이벤트 뷰어에서 볼 수 있는 것처럼 이벤트에 대한 텍스트 설명을 포함하는 "렌더링된 텍스트"입니다. 이 설명의 포함은 렌더링된 설명의 크기에 따라 이벤트 크기가 효과적으로 두 배 또는 세 배로 증가했음을 의미합니다. 대체 모드는 "이벤트"("이진" 형식이라고도 함)입니다. 이는 evtx 파일에 기록되기 때문에 이진 XML 형식으로 전송된 이벤트 XML 자체일 뿐입니다. 이 형식은 컴팩트하며 단일 WEC 서버가 수용할 수 있는 이벤트 볼륨의 두 배 이상을 수용할 수 있습니다.
WECUTIL 유틸리티를 통해 이벤트 형식을 사용하도록 구독 "testSubscription"을 구성할 수 있습니다.
@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime
Wecutil ss "testSubscription" /cf:Events
WEF 이벤트는 얼마나 자주 전달되는가?
이벤트 배달 옵션은 WEF 구독 구성 매개 변수의 일부입니다. 기본 제공 구독 배달 옵션에는 일반, 대역폭 최소화 및 대기 시간 최소화라는 세 가지 기본 제공 구독 배달 옵션이 있습니다. "사용자 지정"이라는 네 번째 catch-all은 사용할 수 있지만 이벤트 뷰어를 사용하여 WEF UI를 통해 선택하거나 구성할 수 없습니다. 사용자 지정 배달 옵션은 WECUTIL.EXE 명령줄 애플리케이션을 사용하여 선택하고 구성해야 합니다. 모든 구독 옵션은 최대 이벤트 수와 최대 이벤트 기간을 정의합니다. 한도를 초과하면 누적된 이벤트가 이벤트 수집기로 전송됩니다.
이 표에서는 기본 제공 배달 옵션에 대해 간략하게 설명합니다.
이벤트 배달 최적화 옵션 | 설명 |
---|---|
중 | 이 옵션은 이벤트를 안정적으로 배달하도록 보장하며 대역폭을 절약하려고 시도하지 않습니다. 대역폭 사용에 대한 엄격한 제어가 필요하거나 가능한 한 빨리 전달된 이벤트가 필요하지 않는 한 적절한 선택입니다. 끌어오기 배달 모드를 사용하고, 한 번에 5개의 항목을 일괄 처리하고, 일괄 처리 시간 제한을 15분으로 설정합니다. |
대역폭 최소화 | 이 옵션을 사용하면 이벤트 배달을 위해 네트워크 대역폭을 엄격하게 제어할 수 있습니다. 이벤트를 제공하기 위해 만들어진 네트워크 연결의 빈도를 제한하려는 경우 적절한 선택입니다. 푸시 배달 모드를 사용하고 일괄 처리 시간 제한을 6시간으로 설정합니다. 또한 6시간의 하트비트 간격을 사용합니다. |
대기 시간 최소화 | 이 옵션을 사용하면 이벤트가 최소한의 지연으로 전달됩니다. 경고 또는 중요한 이벤트를 수집하는 경우 적절한 선택입니다. 푸시 배달 모드를 사용하고 일괄 처리 시간 제한을 30초로 설정합니다. |
배달 옵션에 대한 자세한 내용은 고급 구독 설정 구성을 참조하세요.
주요 차이점은 클라이언트에서 이벤트를 보내는 대기 시간에 있습니다. 요구 사항을 충족하는 기본 제공 옵션이 없는 경우 관리자 권한 명령 프롬프트에서 지정된 구독에 대한 사용자 지정 이벤트 배달 옵션을 설정할 수 있습니다.
@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime
Wecutil ss "SubscriptionNameGoesHere" /cm:Custom
@rem set DeliveryMaxItems to 1 event
Wecutil ss "SubscriptionNameGoesHere" /dmi:1
@rem set DeliveryMaxLatencyTime to 10 ms
Wecutil ss "SubscriptionNameGoesHere" /dmlt:10
WEF 구독에 액세스할 수 있는 디바이스를 제어하려면 어떻게 해야 하나요?
원본 시작 구독의 경우: WEC 서버의 각 WEF 구독에는 해당 구독에 명시적으로 참여할 수 있거나 명시적으로 액세스가 거부된 컴퓨터 계정(사용자 계정이 아님)이 포함된 컴퓨터 계정 또는 보안 그룹에 대한 자체 ACL이 있습니다. 이 ACL은 단일 WEF 구독에만 적용됩니다(지정된 WEC 서버에 여러 WEF 구독이 있을 수 있으므로) 다른 WEF 구독에는 별도의 ACL이 있습니다.
수집기 시작 구독의 경우: 구독에는 WEC 서버가 이벤트를 수집할 컴퓨터 목록이 포함됩니다. 이 목록은 WEC 서버에서 관리되며 구독에 사용되는 자격 증명은 WEF 클라이언트에서 이벤트 로그를 읽을 수 있는 액세스 권한이 있어야 합니다. 자격 증명은 컴퓨터 계정 또는 도메인 계정일 수 있습니다.
클라이언트가 여러 WEF 이벤트 수집기와 통신할 수 있나요?
예. High-Availability 환경을 원하는 경우 동일한 구독 구성으로 여러 WEC 서버를 구성하고 WEF 클라이언트에 두 WEC 서버 URI를 모두 게시합니다. WEF 클라이언트는 적절한 액세스 권한이 있는 경우 WEC 서버에서 구성된 구독에 이벤트를 동시에 전달합니다.
WEC 서버의 제한 사항은 무엇인가요?
WEC 서버의 확장성을 제한하는 세 가지 요소가 있습니다. 상용 하드웨어의 안정적인 WEC 서버에 대한 일반적인 규칙은 구성된 모든 구독에 대해 초당 총 3,000개의 이벤트를 계획하고 있습니다.
디스크 I/O. WEC 서버는 수신된 이벤트를 처리하거나 유효성을 검사하지 않고 수신된 이벤트를 버퍼링한 다음 로컬 이벤트 로그 파일(EVTX 파일)에 기록합니다. EVTX 파일에 대한 로깅 속도는 디스크 쓰기 속도에 의해 제한됩니다. EVTX 파일을 자체 배열로 격리하거나 고속 디스크를 사용하면 단일 WEC 서버에서 수신할 수 있는 초당 이벤트 수가 증가할 수 있습니다.
네트워크 연결. WEF 원본은 WEC 서버에 대한 영구적이고 지속적인 연결을 유지하지 않지만 이벤트를 보낸 후 즉시 연결을 끊지 않습니다. 이러한 관용은 WEC 서버에 동시에 연결할 수 있는 WEF 원본 수가 WEC 서버에서 사용할 수 있는 열린 TCP 포트로 제한됨을 의미합니다.
레지스트리 크기입니다. WEF 구독에 연결하는 각 고유 디바이스에는 책갈피 및 원본 하트비트 정보를 저장하기 위해 만든 레지스트리 키(WEF 클라이언트의 FQDN에 해당)가 있습니다. 비활성 클라이언트를 제거하기 위해 이 정보를 정리하지 않으면 이 레지스트리 키 집합은 시간이 지남에 따라 관리 불가능한 크기로 증가할 수 있습니다.
- 구독에 >수명 WEF 원본이라고도 하는 운영 수명 동안 1,000개의 WEF 원본이 연결되면 이벤트 뷰어는 왼쪽 탐색에서 구독 노드를 선택할 때 몇 분 동안 응답하지 않을 수 있지만 나중에 정상적으로 작동합니다.
- 50,000개의 수명 WEF 원본에서 >이벤트 뷰어는 더 이상 옵션이 아니므로 구독을 구성하고 관리하는 데 wecutil.exe(Windows 포함)를 사용해야 합니다.
- 100,000개의 수명 WEF 원본에서 >레지스트리를 읽을 수 없으며 WEC 서버를 다시 빌드해야 할 수 있습니다.
신청 정보
아래에는 각 구독이 수집하는 모든 항목이 나열되어 있으며, 실제 구독 XML은 부록에서 사용할 수 있습니다. 이러한 항목은 기준선 및 대상으로 구분됩니다. 모든 호스트를 기준선에 구독한 다음 필요에 따라 대상 구독에 호스트를 등록(및 제거)하는 것이 목적입니다.
기준 구독
이 구독은 가장 큰 구독으로 보이지만 실제로는 디바이스별로 가장 낮은 볼륨입니다. (비정상적인 디바이스에는 예외가 허용되어야 합니다. 복잡한 개발자 관련 작업을 수행하는 디바이스는 비정상적으로 많은 양의 프로세스 만들기 및 AppLocker 이벤트를 생성해야 할 수 있습니다.) 이 구독은 이벤트 채널을 사용하도록 설정하거나 채널 권한을 수정하기 위해 클라이언트 디바이스에 특별한 구성이 필요하지 않습니다.
구독은 기본적으로 이벤트 로그에 적용되는 쿼리 문의 컬렉션입니다. 이 구독은 본질적으로 모듈식이며 구독의 다른 쿼리 문에 영향을 주지 않고 지정된 쿼리 문을 제거하거나 변경할 수 있음을 의미합니다. 또한 특정 이벤트를 필터링하고 해당 쿼리 문 내에만 적용되며 전체 구독에 적용되지 않는 문을 표시하지 않습니다.
기준 구독 요구 사항
기준 구독에서 가장 많은 가치를 얻으려면 클라이언트가 시스템에서 전달해야 하는 필수 이벤트를 이미 생성하고 있는지 확인하기 위해 디바이스에 다음 요구 사항을 설정하는 것이 좋습니다.
권장되는 최소 감사 정책의 상위 집합인 보안 감사 정책을 적용합니다. 자세한 내용은 부록 A - 최소 권장 최소 감사 정책을 참조하세요. 이 정책은 보안 이벤트 로그가 필요한 이벤트를 생성하도록 합니다.
디바이스에 Audit-Only AppLocker 정책 이상을 적용합니다.
- AppLocker를 사용하여 이벤트를 이미 허용하거나 제한하는 경우 이 요구 사항이 충족됩니다.
- AppLocker 이벤트에는 파일 해시 및 실행 파일 및 스크립트에 대한 디지털 서명 정보와 같은 유용한 정보가 포함됩니다.
비활성화된 이벤트 채널을 사용하도록 설정하고 최신 이벤트 파일의 최소 크기를 설정합니다.
현재 최신 이벤트 파일의 최대 크기를 사용하거나 설정하기 위한 GPO 템플릿이 없습니다. 이 임계값은 GPO를 사용하여 정의해야 합니다. 자세한 내용은 부록 C - 이벤트 채널 설정(사용 및 채널 액세스) 메서드를 참조하세요.
주석이 추가된 이벤트 쿼리는 다음에서 찾을 수 있습니다. 자세한 내용은 부록 F - 주석이 추가된 Suspect Subscription 이벤트 쿼리를 참조하세요.
Windows 보안의 맬웨어 방지 이벤트입니다. 이러한 이벤트는 Windows 이벤트 로그에 쓰는 경우 지정된 맬웨어 방지 제품에 대해 쉽게 구성할 수 있습니다.
보안 이벤트 로그 프로세스 이벤트 만들기
AppLocker 프로세스 만들기 이벤트(EXE, 스크립트, 패키지된 앱 설치 및 실행).
레지스트리 수정 이벤트. 자세한 내용은 부록 B - 권장 최소 레지스트리 시스템 ACL 정책을 참조하세요.
OS 시작 및 종료
- 시작 이벤트에는 운영 체제 버전, 서비스 팩 수준, QFE 버전 및 부팅 모드가 포함됩니다.
서비스 설치
- 서비스 이름, 이미지 경로 및 서비스를 설치한 사용자를 포함합니다.
인증 기관 감사 이벤트
- 이러한 이벤트는 인증 기관 역할이 설치된 시스템에만 적용됩니다.
- 인증서 요청 및 응답을 기록합니다.
사용자 프로필 이벤트
- 임시 프로필을 사용하거나 사용자 프로필을 만들 수 없는 경우 침입자가 디바이스에 대화형으로 로그인하지만 영구 프로필을 남기지 않으려는 것일 수 있습니다.
서비스 시작 실패
- 실패 코드는 지역화되므로 DLL 메시지에서 값을 확인해야 합니다.
네트워크 공유 액세스 이벤트
- 예상되고 시끄러운 IPC$ 및 /NetLogon 파일 공유를 필터링합니다.
시스템 종료 시작 요청
- 디바이스 다시 시작을 시작한 항목을 알아보세요.
사용자가 시작한 대화형 로그아웃 이벤트
원격 데스크톱 서비스 세션은 연결, 다시 연결 또는 연결을 끊습니다.
EMET가 설치된 경우 EMET 이벤트입니다.
이벤트 전달 플러그 인 이벤트
- 부분 성공 이벤트와 같은 WEF 구독 작업을 모니터링하는 경우 이 이벤트는 배포 문제를 진단하는 데 유용합니다.
네트워크 공유 만들기 및 삭제
- 권한 없는 공유 만들기를 검색할 수 있습니다.
참고
디바이스가 시작될 때 모든 공유가 다시 만들어집니다.
- 권한 없는 공유 만들기를 검색할 수 있습니다.
로그인 세션
- 대화형(로컬 및 원격 대화형/원격 데스크톱)에 대한 로그인 성공
- LocalSystem, LocalNetwork 등과 같은 기본 제공이 아닌 계정에 대한 서비스에 대한 로그인 성공
- 일괄 처리 세션에 대한 로그인 성공
- 비 네트워크 세션에 대한 로그아웃 이벤트인 로그인 세션이 닫힙니다.
Windows 오류 보고(애플리케이션 크래시 이벤트만 해당)
- 이 세션은 대상 맬웨어를 사용하여 엔터프라이즈 환경에 익숙하지 않은 침입자의 초기 징후를 감지하는 데 도움이 될 수 있습니다.
이벤트 로그 서비스 이벤트
- Windows 이벤트 로그 서비스에 대한 오류, 시작 이벤트 및 중지 이벤트입니다.
이벤트 로그가 지워집니다(보안 이벤트 로그 포함)
- 이 이벤트는 자신의 트랙을 덮고 있는 침입자를 나타낼 수 있습니다.
새 로그인에 할당된 특수 권한
- 이 할당은 로그인 시 사용자가 관리자이거나 관리자가 될 수 있는 충분한 액세스 권한이 있음을 나타냅니다.
아웃바운드 원격 데스크톱 서비스 세션 시도
- 침입자에 대한 잠재적 인 해변에 대한 가시성
시스템 시간이 변경됨
SMB 클라이언트(매핑된 드라이브 연결)
계정 자격 증명 유효성 검사
- 도메인 컨트롤러의 로컬 계정 또는 도메인 계정
사용자가 로컬 관리자 보안 그룹에서 추가되거나 제거되었습니다.
액세스된 Crypto API 프라이빗 키
- 로컬로 저장된 프라이빗 키를 사용하여 서명 개체와 연결됩니다.
작업 스케줄러 작업 만들기 및 삭제
- 작업 스케줄러를 사용하면 침입자가 지정된 시간에 LocalSystem으로 코드를 실행할 수 있습니다.
명시적 자격 증명을 사용하여 로그인
- 더 많은 리소스에 액세스하기 위해 침입자의 자격 증명 사용 변경 내용을 검색합니다.
스마트 카드 카드 소유자 확인 이벤트
- 이 이벤트는 스마트 카드가 사용되는 시기를 감지합니다.
의심 구독
이 구독은 분석가가 디바이스 상태에 대한 결정을 더욱 구체화하는 데 도움이 되는 몇 가지 가능한 침입자 관련 활동을 추가합니다.
네트워크 세션에 대한 로그인 세션 만들기
- 네트워크 그래프의 시계열 분석을 사용하도록 설정합니다.
RADIUS 및 VPN 이벤트
- Microsoft IAS RADIUS/VPN 구현을 사용하는 경우에 유용합니다. 엔터프라이즈에 연결하는 원격 IP 주소가 있는 사용자-> IP 주소 할당을 보여줍니다.
Crypto API X509 개체 및 빌드 체인 이벤트
- 알려진 잘못된 인증서, CA 또는 하위 CA를 검색합니다.
- CAPI의 비정상적인 프로세스 사용 감지
로컬 로그인에 할당된 그룹
- 계정 전체 액세스를 사용하도록 설정하는 그룹에 대한 가시성을 제공합니다.
- 수정 작업을 더 잘 계획할 수 있습니다.
- 잘 알려진 기본 제공 시스템 계정을 제외합니다.
로그인 세션 종료
- 네트워크 로그인 세션에만 해당됩니다.
클라이언트 DNS 조회 이벤트
- DNS 쿼리를 수행한 프로세스와 DNS 서버에서 반환된 결과를 반환합니다.
프로세스 종료
- 예기치 않게 종료되는 프로세스를 확인할 수 있습니다.
명시적 자격 증명을 사용하여 로컬 자격 증명 유효성 검사 또는 로그인
- 로컬 SAM이 인증되는 계정 자격 증명에 대해 신뢰할 수 있는 경우 생성됩니다.
- 도메인 컨트롤러의 노이즈
- 클라이언트 디바이스에서는 로컬 계정이 로그인할 때만 생성됩니다.
레지스트리 수정 감사 이벤트
- 레지스트리 값이 생성, 수정 또는 삭제되는 경우에만 해당됩니다.
무선 802.1x 인증
- 피어 MAC 주소를 사용하여 무선 연결 검색
Windows PowerShell 로깅
- Windows PowerShell 2.0 이상을 다루며 Windows PowerShell을 사용하는 메모리 내 공격에 대한 Windows PowerShell 5.0 로깅 개선 사항을 포함합니다.
- Windows PowerShell 원격 로깅 포함
사용자 모드 드라이버 프레임워크 "드라이버 로드됨" 이벤트
- 여러 디바이스 드라이버를 로드하는 USB 디바이스를 감지할 수 있습니다. 예를 들어 키보드 또는 네트워크 드라이버를 로드하는 USB_STOR 디바이스입니다.
부록 A - 최소 권장 최소 감사 정책
조직 감사 정책에서 요구 사항을 충족하기 위해 더 많은 감사를 사용하도록 설정하는 경우 괜찮습니다. 아래 정책은 기준 및 대상 구독 모두에서 수집된 이벤트를 사용하도록 설정하는 데 필요한 최소 감사 정책 설정입니다.
범주 | 하위 범주 | 감사 설정 |
---|---|---|
계정 로그온 | 자격 증명 유효성 검사 | 성공 및 실패 |
계정 관리 | 보안 그룹 관리 | 성공 |
계정 관리 | 사용자 계정 관리 | 성공 및 실패 |
계정 관리 | 컴퓨터 계정 관리 | 성공 및 실패 |
계정 관리 | 기타 계정 관리 이벤트 | 성공 및 실패 |
자세한 추적 | 프로세스 만들기 | 성공 |
자세한 추적 | 프로세스 종료 | 성공 |
로그온/로그오프 | 사용자/디바이스 클레임 | 구성되지 않음 |
로그온/로그오프 | IPsec 확장 모드 | 구성되지 않음 |
로그온/로그오프 | IPsec 빠른 모드 | 구성되지 않음 |
로그온/로그오프 | 로그온 | 성공 및 실패 |
로그온/로그오프 | 로그오프 | 성공 |
로그온/로그오프 | 기타 로그온/로그오프 이벤트 | 성공 및 실패 |
로그온/로그오프 | 특수 로그온 | 성공 및 실패 |
로그온/로그오프 | 계정 잠금 | 성공 |
개체 액세스 | 애플리케이션 생성됨 | 구성되지 않음 |
개체 액세스 | 파일 공유 | 성공 |
개체 액세스 | 파일 시스템 | 구성되지 않음 |
개체 액세스 | 기타 개체 액세스 이벤트 | 구성되지 않음 |
개체 액세스 | 레지스트리 | 구성되지 않음 |
개체 액세스 | 이동식 저장소 | 성공 |
정책 변경 | 감사 정책 변경 | 성공 및 실패 |
정책 변경 | MPSSVC Rule-Level 정책 변경 | 성공 및 실패 |
정책 변경 | 기타 정책 변경 이벤트 | 성공 및 실패 |
정책 변경 | 인증 정책 변경 | 성공 및 실패 |
정책 변경 | 권한 부여 정책 변경 | 성공 및 실패 |
권한 사용 | 중요한 권한 사용 | 구성되지 않음 |
System | 보안 상태 변경 | 성공 및 실패 |
System | 보안 시스템 확장 | 성공 및 실패 |
System | 시스템 무결성 | 성공 및 실패 |
부록 B - 권장되는 최소 레지스트리 시스템 ACL 정책
실행 및 RunOnce 키는 침입자 및 맬웨어 지속성에 유용합니다. 사용자가 시스템에 로그인할 때 코드를 실행할 수 있습니다(또는 한 번만 실행한 후 각각 제거됨).
이러한 의미는 레지스트리의 다른 자동 실행 시작 지점 키로 쉽게 확장될 수 있습니다.
다음 그림을 사용하여 해당 레지스트리 키를 구성하는 방법을 확인합니다.
부록 C - 이벤트 채널 설정(사용 및 채널 액세스) 메서드
일부 채널은 기본적으로 사용하지 않도록 설정되며 사용하도록 설정해야 합니다. Microsoft-Windows-CAPI2/Operational과 같은 다른 사용자는 이벤트 로그 판독기 기본 제공 보안 그룹에서 읽을 수 있도록 채널 액세스를 수정해야 합니다.
이 사용자 지정을 수행하는 권장되고 가장 효과적인 방법은 예약된 작업을 실행하여 이벤트 채널을 구성하도록 기준 GPO를 구성하는 것입니다(최대 크기 설정 및 채널 액세스 조정). 이 구성은 다음 GPO 새로 고침 주기에 적용되며 클라이언트 디바이스에 미치는 영향을 최소화합니다.
다음 GPO 코드 조각은 다음 작업을 수행합니다.
- Microsoft-Windows-Capi2/Operational 이벤트 채널을 사용하도록 설정합니다.
- Microsoft-Windows-Capi2/Operational의 최대 파일 크기를 100MB로 설정합니다.
- Microsoft-Windows-AppLocker/EXE 및 DLL의 최대 파일 크기를 100MB로 설정합니다.
- 기본 제공 이벤트 로그 판독기 보안 그룹을 포함하도록 Microsoft-Windows-Capi2/Operational 에 대한 최대 채널 액세스를 설정합니다.
- Microsoft-Windows-DriverFrameworks-UserMode/Operational 이벤트 채널을 사용하도록 설정합니다.
- Microsoft-Windows-DriverFrameworks-UserMode/Operational의 최대 파일 크기를 50MB로 설정합니다.
다음 표에는 GPO에서 구성할 6가지 작업도 포함되어 있습니다.
프로그램/스크립트 | 인수 |
---|---|
%SystemRoot%\System32\wevtutil.exe | sl Microsoft-Windows-CAPI2/Operational /e:true |
%SystemRoot%\System32\wevtutil.exe | sl Microsoft-Windows-CAPI2/Operational /ms:102432768 |
%SystemRoot%\System32\wevtutil.exe | sl "Microsoft-Windows-AppLocker/EXE 및 DLL" /ms:102432768 |
%SystemRoot%\System32\wevtutil.exe | sl Microsoft-Windows-CAPI2/Operational /ca:"O:BAG:SYD:(A;; 0x7;;; BA)(A;; 0x2;;; AU)(A;; 0x1;;; S-1-5-32-573)" |
%SystemRoot%\System32\wevtutil.exe | sl "Microsoft-Windows-DriverFrameworks-UserMode/Operational" /e:true |
%SystemRoot%\System32\wevtutil.exe | sl "Microsoft-Windows-DriverFrameworks-UserMode/Operational" /ms:52432896 |
부록 D - WEF 클라이언트 구성에 대한 최소 GPO
WEF가 작동하기 위한 최소 단계는 다음과 같습니다.
- 수집기 URI를 구성합니다.
- WinRM 서비스를 시작합니다.
- 기본 제공 이벤트 로그 판독기 보안 그룹에 네트워크 서비스 계정을 추가합니다. 이 추가 기능을 사용하면 보안 이벤트 채널과 같은 보안 이벤트 채널에서 읽을 수 있습니다.
부록 E - 주석이 추가된 기준 구독 이벤트 쿼리
<QueryList>
<Query Id="0" Path="System">
<!-- Anti-malware *old* events, but only detect events (cuts down noise) -->
<Select Path="System">*[System[Provider[@Name='Microsoft Antimalware'] and (EventID >= 1116 and EventID <= 1119)]]</Select>
</Query>
<!-- AppLocker EXE events or Script events -->
<Query Id="1" Path="Microsoft-Windows-AppLocker/EXE and DLL">
<Select Path="Microsoft-Windows-AppLocker/EXE and DLL">*[UserData[RuleAndFileData[PolicyName="EXE"]]]</Select>
<Select Path="Microsoft-Windows-AppLocker/MSI and Script">*</Select>
</Query>
<Query Id="2" Path="Security">
<!-- Wireless Lan 802.1x authentication events with Peer MAC address -->
<Select Path="Security">*[System[(EventID=5632)]]</Select>
</Query>
<Query Id="3" Path="Microsoft-Windows-TaskScheduler/Operational">
<!-- Task scheduler Task Registered (106), Task Registration Deleted (141), Task Deleted (142) -->
<Select Path="Microsoft-Windows-TaskScheduler/Operational">*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and (EventID=106 or EventID=141 or EventID=142 )]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and (EventID=106 or EventID=141 or EventID=142 )]]</Select>
</Query>
<Query Id="4" Path="System">
<!-- System startup (12 - includes OS/SP/Version) and shutdown -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=12 or EventID=13)]]</Select>
</Query>
<Query Id="5" Path="System">
<!-- Service Install (7000), service start failure (7045), new service (4697) -->
<Select Path="System">*[System[Provider[@Name='Service Control Manager'] and (EventID = 7000 or EventID=7045)]]</Select>
<Select Path="Security">*[System[(EventID=4697)]]</Select>
</Query>
<Query Id="6" Path="Security">
<!-- TS Session reconnect (4778), TS Session disconnect (4779) -->
<Select Path="Security">*[System[(EventID=4778 or EventID=4779)]]</Select>
</Query>
<Query Id="7" Path="Security">
<!-- Network share object access without IPC$ and Netlogon shares -->
<Select Path="Security">*[System[(EventID=5140)]] and (*[EventData[Data[@Name="ShareName"]!="\\*\IPC$"]]) and (*[EventData[Data[@Name="ShareName"]!="\\*\NetLogon"]])</Select>
</Query>
<Query Id="8" Path="Security">
<!-- System Time Change (4616) -->
<Select Path="Security">*[System[(EventID=4616)]]</Select>
</Query>
<Query Id="9" Path="System">
<!-- Shutdown initiate requests, with user, process and reason (if supplied) -->
<Select Path="System">*[System[Provider[@Name='USER32'] and (EventID=1074)]]</Select>
</Query>
<!-- AppLocker packaged (Modern UI) app execution -->
<Query Id="10" Path="Microsoft-Windows-AppLocker/Packaged app-Execution">
<Select Path="Microsoft-Windows-AppLocker/Packaged app-Execution">*</Select>
</Query>
<!-- AppLocker packaged (Modern UI) app installation -->
<Query Id="11" Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">
<Select Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">*</Select>
</Query>
<Query Id="12" Path="Application">
<!-- EMET events -->
<Select Path="Application">*[System[Provider[@Name='EMET']]]</Select>
</Query>
<Query Id="13" Path="System">
<!-- Event log service events -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Eventlog']]]</Select>
</Query>
<Query Id="14" Path="Security">
<!-- Local logons without network or service events -->
<Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]!="3"]]) and (*[EventData[Data[@Name="LogonType"]!="5"]])</Select>
</Query>
<Query Id="15" Path="Application">
<!-- WER events for application crashes only -->
<Select Path="Application">*[System[Provider[@Name='Windows Error Reporting']]] and (*[EventData[Data[3] ="APPCRASH"]])</Select>
</Query>
<Query Id="16" Path="Security">
<!-- Security Log cleared events (1102), EventLog Service shutdown (1100)-->
<Select Path="Security">*[System[(EventID=1102 or EventID = 1100)]]</Select>
</Query>
<Query Id="17" Path="System">
<!-- Other Log cleared events (104)-->
<Select Path="System">*[System[(EventID=104)]]</Select>
</Query>
<Query Id="18" Path="Security">
<!-- user initiated logoff -->
<Select Path="Security">*[System[(EventID=4647)]]</Select>
</Query>
<Query Id="19" Path="Security">
<!-- user logoff for all non-network logon sessions-->
<Select Path="Security">*[System[(EventID=4634)]] and (*[EventData[Data[@Name="LogonType"] != "3"]])</Select>
</Query>
<Query Id="20" Path="Security">
<!-- Service logon events if the user account isn't LocalSystem, NetworkService, LocalService -->
<Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]="5"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-18"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-19"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-20"]])</Select>
</Query>
<Query Id="21" Path="Security">
<!-- Network Share create (5142), Network Share Delete (5144) -->
<Select Path="Security">*[System[(EventID=5142 or EventID=5144)]]</Select>
</Query>
<Query Id="22" Path="Security">
<!-- Process Create (4688) -->
<Select Path="Security">*[System[EventID=4688]]</Select>
</Query>
<Query Id="23" Path="Security">
<!-- Event log service events specific to Security channel -->
<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Eventlog']]]</Select>
</Query>
<Query Id="26" Path="Security">
<!-- Special Privileges (Admin-equivalent Access) assigned to new logon, excluding LocalSystem-->
<Select Path="Security">*[System[(EventID=4672)]]</Select>
<Suppress Path="Security">*[EventData[Data[1]="S-1-5-18"]]</Suppress>
</Query>
<Query Id="27" Path="Security">
<!-- New user added to local security group-->
<Select Path="Security">*[System[(EventID=4732)]]</Select>
</Query>
<Query Id="28" Path="Security">
<!-- New user added to global security group-->
<Select Path="Security">*[System[(EventID=4728)]]</Select>
</Query>
<Query Id="29" Path="Security">
<!-- New user added to universal security group-->
<Select Path="Security">*[System[(EventID=4756)]]</Select>
</Query>
<Query Id="30" Path="Security">
<!-- User removed from local Administrators group-->
<Select Path="Security">*[System[(EventID=4733)]] and (*[EventData[Data[@Name="TargetUserName"]="Administrators"]])</Select>
</Query>
<Query Id="31" Path="Microsoft-Windows-TerminalServices-RDPClient/Operational">
<!-- Log attempted TS connect to remote server -->
<Select Path="Microsoft-Windows-TerminalServices-RDPClient/Operational">*[System[(EventID=1024)]]</Select>
</Query>
<Query Id="32" Path="Security">
<!-- Certificate Services received certificate request (4886), Approved and Certificate issued (4887), Denied request (4888) -->
<Select Path="Security">*[System[(EventID=4886 or EventID=4887 or EventID=4888)]]</Select>
</Query>
<Query Id="34" Path="Security">
<!-- New User Account Created(4720), User Account Enabled (4722), User Account Disabled (4725), User Account Deleted (4726) -->
<Select Path="Security">*[System[(EventID=4720 or EventID=4722 or EventID=4725 or EventID=4726)]]</Select>
</Query>
<Query Id="35" Path="Microsoft-Windows-SmartCard-Audit/Authentication">
<!-- Gets all Smart-card Card-Holder Verification (CHV) events (success and failure) performed on the host. -->
<Select Path="Microsoft-Windows-SmartCard-Audit/Authentication">*</Select>
</Query>
<Query Id="36" Path="Microsoft-Windows-SMBClient/Operational">
<!-- get all UNC/mapped drive successful connection -->
<Select Path="Microsoft-Windows-SMBClient/Operational">*[System[(EventID=30622 or EventID=30624)]]</Select>
</Query>
<Query Id="37" Path="Application">
<!-- User logging on with Temporary profile (1511), cannot create profile, using temporary profile (1518)-->
<Select Path="Application">*[System[Provider[@Name='Microsoft-Windows-User Profiles Service'] and (EventID=1511 or EventID=1518)]]</Select>
</Query>
<Query Id="39" Path="Microsoft-Windows-Sysmon/Operational">
<!-- Modern SysMon event provider-->
<Select Path="Microsoft-Windows-Sysmon/Operational">*</Select>
</Query>
<Query Id="40" Path="Application">
<!-- Application crash/hang events, similar to WER/1001. These include full path to faulting EXE/Module.-->
<Select Path="Application">*[System[Provider[@Name='Application Error'] and (EventID=1000)]]</Select>
<Select Path="Application">*[System[Provider[@Name='Application Hang'] and (EventID=1002)]]</Select>
</Query>
<Query Id="41" Path="Microsoft-Windows-Windows Defender/Operational">
<!-- Modern Windows Defender event provider Detection events (1006-1009) and (1116-1119) -->
<Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[( (EventID >= 1006 and EventID <= 1009) )]]</Select>
<Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[( (EventID >= 1116 and EventID <= 1119) )]]</Select>
</Query>
<Query Id="42" Path="Security">
<!-- An account Failed to Log on events -->
<Select Path="Security">*[System[(EventID=4625)]] and (*[EventData[Data[@Name="LogonType"]!="2"]]) </Select>
</Query>
</QueryList>
부록 F - 주석이 추가된 Suspect Subscription 이벤트 쿼리
<QueryList>
<Query Id="0" Path="Security">
<!-- Network logon events-->
<Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]="3"]])</Select>
</Query>
<Query Id="1" Path="System">
<!-- RADIUS authentication events User Assigned IP address (20274), User successfully authenticated (20250), User Disconnected (20275) -->
<Select Path="System">*[System[Provider[@Name='RemoteAccess'] and (EventID=20274 or EventID=20250 or EventID=20275)]]</Select>
</Query>
<Query Id="2" Path="Microsoft-Windows-CAPI2/Operational">
<!-- CAPI events Build Chain (11), Private Key accessed (70), X509 object (90)-->
<Select Path="Microsoft-Windows-CAPI2/Operational">*[System[(EventID=11 or EventID=70 or EventID=90)]]</Select>
</Query>
<Query Id="3" Path="Security">
<!-- CA stop/Start events CA Service Stopped (4880), CA Service Started (4881), CA DB row(s) deleted (4896), CA Template loaded (4898) -->
<Select Path="Security">*[System[(EventID=4880 or EventID = 4881 or EventID = 4896 or EventID = 4898)]]</Select>
</Query>
<Query Id="4" Path="Microsoft-Windows-LSA/Operational">
<!-- Groups assigned to new login (except for well known, built-in accounts)-->
<Select Path="Microsoft-Windows-LSA/Operational">*[System[(EventID=300)]] and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-20"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-18"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-19"]])</Select>
</Query>
<Query Id="5" Path="Security">
<!-- Logoff events - for Network Logon events-->
<Select Path="Security">*[System[(EventID=4634)]] and (*[EventData[Data[@Name="LogonType"] = "3"]])</Select>
</Query>
<Query Id="6" Path="Security">
<!-- RRAS events - only generated on Microsoft IAS server -->
<Select Path="Security">*[System[( (EventID >= 6272 and EventID <= 6280) )]]</Select>
</Query>
<Query Id="7" Path="Microsoft-Windows-DNS-Client/Operational">
<!-- DNS Client events Query Completed (3008) -->
<Select Path="Microsoft-Windows-DNS-Client/Operational">*[System[(EventID=3008)]]</Select>
<!-- suppresses local machine name resolution events -->
<Suppress Path="Microsoft-Windows-DNS-Client/Operational">*[EventData[Data[@Name="QueryOptions"]="140737488355328"]]</Suppress>
<!-- suppresses empty name resolution events -->
<Suppress Path="Microsoft-Windows-DNS-Client/Operational">*[EventData[Data[@Name="QueryResults"]=""]]</Suppress>
</Query>
<Query Id="8" Path="Security">
<!-- Process Terminate (4689) -->
<Select Path="Security">*[System[(EventID = 4689)]]</Select>
</Query>
<Query Id="9" Path="Security">
<!-- Local credential authentication events (4776), Logon with explicit credentials (4648) -->
<Select Path="Security">*[System[(EventID=4776 or EventID=4648)]]</Select>
</Query>
<Query Id="10" Path="Security">
<!-- Registry modified events for Operations: New Registry Value created (%%1904), Existing Registry Value modified (%%1905), Registry Value Deleted (%%1906) -->
<Select Path="Security">*[System[(EventID=4657)]] and ((*[EventData[Data[@Name="OperationType"] = "%%1904"]]) or (*[EventData[Data[@Name="OperationType"] = "%%1905"]]) or (*[EventData[Data[@Name="OperationType"] = "%%1906"]]))</Select>
</Query>
<Query Id="11" Path="Security">
<!-- Request made to authenticate to Wireless network (including Peer MAC (5632) -->
<Select Path="Security">*[System[(EventID=5632)]]</Select>
</Query>
<Query Id="12" Path="Microsoft-Windows-PowerShell/Operational">
<!-- PowerShell execute block activity (4103), Remote Command(4104), Start Command(4105), Stop Command(4106) -->
<Select Path="Microsoft-Windows-PowerShell/Operational">*[System[(EventID=4103 or EventID=4104 or EventID=4105 or EventID=4106)]]</Select>
</Query>
<Query Id="13" Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">
<!-- Detect User-Mode drivers loaded - for potential BadUSB detection. -->
<Select Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">*[System[(EventID=2004)]]</Select>
</Query>
<Query Id="14" Path="Windows PowerShell">
<!-- Legacy PowerShell pipeline execution details (800) -->
<Select Path="Windows PowerShell">*[System[(EventID=800)]]</Select>
</Query>
</QueryList>
부록 G - 온라인 리소스
다음 링크를 사용하여 자세한 정보를 얻을 수 있습니다.