본문 바로가기
운영체제 (LNX,WIN)

윈도우 프로세스 모니터 데이터 수집을 통한 추적 및 감사

by 날으는물고기 2024. 9. 7.

윈도우 프로세스 모니터 데이터 수집을 통한 추적 및 감사

Living Off The Land (LOTL) 공격을 탐지하기 위해 Wazuh를 사용하는 것은 보안 강화를 위해 필요합니다. 아래는 각 유형의 공격을 탐지하기 위한 주요 포인트와 이를 위해 Wazuh에서 사용할 수 있는 룰셋에 대한 설명입니다.

취약점 악용 및 무차별 대입 로그인 시도 모니터링

  • 설명: 공격자가 시스템에 접근하기 위해 취약점을 악용하거나 무차별 대입 공격을 시도할 수 있습니다. 이러한 시도는 보안 로그에서 비정상적인 로그인 시도 또는 취약점 악용 시도로 나타날 수 있습니다.
  • 탐지 룰셋
    - rule:
        id: 100001
        level: 12
        description: "Brute force attack detected"
        status: "enabled"
        decoded_as: "json"
        match:
          - "sshd"
          - "failed password"
        frequency: 5
        timeframe: 60
        group: "authentication_failed"
        alert_by: "srcip"

PowerShell, Crontab, Schtasks, SSH와 같은 도구의 무단 사용 모니터링

  • 설명: 공격자는 시스템 도구를 악용하여 악성 활동을 수행할 수 있습니다. 비정상적인 시스템 도구 사용은 주의 깊게 모니터링해야 합니다.
  • 탐지 룰셋
    - rule:
        id: 100002
        level: 12
        description: "Suspicious PowerShell execution detected"
        status: "enabled"
        decoded_as: "json"
        match:
          - "powershell.exe"
          - "encodedcommand"
        group: "suspicious_command"

보안 구성 평가(SCA) 및 파일 무결성 모니터링(FIM) 사용

  • 설명: 무단으로 시스템 구성을 변경하는 것은 공격자가 시스템에 지속적으로 접근하기 위한 방법 중 하나입니다. 이러한 변경을 탐지하기 위해 정기적인 파일 무결성 검사와 구성 스캔이 필요합니다.
  • 탐지 룰셋
    - rule:
        id: 100003
        level: 10
        description: "Unauthorized configuration change detected"
        status: "enabled"
        decoded_as: "json"
        match:
          - "configuration change"
        group: "configuration_change"

비정상적인 CPU, 메모리, 네트워크 사용 패턴 모니터링

  • 설명: LOTL 공격은 시스템 리소스를 비정상적으로 사용할 수 있습니다. 이를 모니터링하여 비정상적인 활동을 탐지할 수 있습니다.
  • 탐지 룰셋
    - rule:
        id: 100004
        level: 12
        description: "Abnormal resource usage detected"
        status: "enabled"
        decoded_as: "json"
        match:
          - "cpu usage"
          - "memory usage"
          - "network traffic"
        group: "resource_usage"

정기적인 취약점 스캔

  • 설명: 알려진 취약점을 지속적으로 스캔하여 공격자가 악용할 수 있는 약점을 사전에 탐지하고 대응할 수 있습니다.
  • 탐지 룰셋
    - rule:
        id: 100005
        level: 10
        description: "Vulnerability detected"
        status: "enabled"
        decoded_as: "json"
        match:
          - "vulnerability"
        group: "vulnerability_detection"

Wazuh를 활용하여 LOTL 공격을 효과적으로 탐지하기 위해서는 위에서 설명한 다양한 룰셋을 설정하여 시스템 로그와 활동을 면밀히 모니터링하는 것이 중요합니다. 이를 통해 조직은 비정상적인 활동을 신속하게 탐지하고 대응할 수 있습니다. 윈도우 환경에서 LOTL(Living Off The Land) 공격을 탐지하기 위해 Wazuh 외에 사용할 수 있는 다른 도구와 방법을 소개합니다. Wazuh 외에도 여러 도구와 방법을 사용하여 윈도우 환경에서 효과적으로 LOTL 공격을 탐지할 수 있습니다.

Sysmon과 SIEM 통합

Microsoft Sysinternals의 Sysmon(System Monitor)은 시스템에서 발생하는 이벤트를 로깅하여 분석할 수 있도록 도와줍니다. Sysmon은 다음과 같은 기능을 제공합니다.

  • 프로세스 생성 및 종료 모니터링
  • 네트워크 연결 모니터링
  • 파일 생성 시간 변경 모니터링
  • 레지스트리 이벤트 모니터링

 

설정 및 사용 방법

  1. Sysmon 설치 및 설정
    • Sysmon을 다운로드하고 설치합니다.
    • 설정 파일(Sysmon configuration file)을 작성하여 모니터링할 이벤트를 정의합니다. Sysmon에서 제공하는 Sysmonconfig-import.xml 파일을 사용할 수 있습니다.
    • 예시
      sysmon -accepteula -i sysmonconfig-import.xml
  2. SIEM 통합
    • Sysmon의 로그를 중앙 집중식 SIEM(Splunk, ELK Stack, Graylog 등)으로 전송합니다.
    • SIEM에서 Sysmon 로그를 분석하고, 비정상적인 활동을 탐지하기 위한 규칙을 설정합니다.

Windows Event Forwarding (WEF)

WEF는 윈도우 이벤트 로그를 중앙 서버로 전송하여 분석할 수 있게 해줍니다. 이를 통해 네트워크 상의 여러 시스템에서 발생하는 이벤트를 한 곳에서 모니터링할 수 있습니다.

 

설정 및 사용 방법

  1. WEF 설정
    • 이벤트 구독(Subscription)을 생성하여 특정 이벤트를 중앙 서버로 전송합니다.
    • 중앙 서버에서 이벤트 로그를 수집하고 분석합니다.
  2. 이벤트 로그 분석
    • 수집된 이벤트 로그를 분석하여 비정상적인 활동을 탐지합니다. 이를 위해 PowerShell, WMI, RDP, WinRM 등의 이벤트를 모니터링할 수 있습니다.

PowerShell Logging

PowerShell 스크립트 실행을 모니터링하고 로깅함으로써 비정상적인 활동을 탐지할 수 있습니다. 이를 위해 PowerShell 로깅 기능을 활성화합니다.

 

설정 및 사용 방법

  1. PowerShell 스크립트 블록 로깅
    • PowerShell에서 실행되는 모든 스크립트 블록을 로깅합니다.
      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -Name 'EnableScriptBlockLogging' -Value 1
  2. PowerShell 트랜스크립트 로깅
    • PowerShell 명령어의 입력 및 출력을 로깅합니다.
      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription' -Name 'EnableTranscripting' -Value 1
  3. 로그 분석
    • 수집된 PowerShell 로그를 분석하여 비정상적인 활동을 탐지합니다.

Windows Defender ATP (Advanced Threat Protection)

Windows Defender ATP는 윈도우 내장 엔드포인트 탐지 및 대응(EDR) 솔루션입니다. 이 솔루션은 다음과 같은 기능을 제공합니다.

  • 실시간 공격 탐지
  • 비정상적인 활동 모니터링
  • 위협 인텔리전스 기반 분석

 

설정 및 사용 방법

  1. Windows Defender ATP 활성화
    • Windows Defender ATP를 활성화하고 설정합니다.
    • 엔드포인트를 ATP 포털에 연결하여 실시간 모니터링을 시작합니다.
  2. 비정상 활동 탐지
    • ATP 포털에서 제공하는 대시보드와 보고서를 통해 비정상적인 활동을 모니터링하고 대응합니다.

이와 같은 도구와 방법을 활용하여 윈도우 환경에서 LOTL 공격을 효과적으로 탐지할 수 있습니다. 각 도구는 고유한 기능을 제공하며, 조직의 보안 요구사항에 맞게 선택하여 사용할 수 있습니다. 윈도우 환경에서 프로세스 트래커를 구현하기 위한 최선의 구현방안입니다.

1. 목표 정의

  • 프로세스 추적: 실시간으로 실행 중인 프로세스를 모니터링하고 로그를 수집
  • 이상 징후 탐지: 비정상적인 프로세스를 탐지하여 대응
  • 보안 강화: 악성 소프트웨어 및 행위 탐지

2. 필요 요소

  • 모니터링 도구: Sysmon (System Monitor)
  • 로그 수집 및 분석 도구: Wazuh 또는 ELK 스택 (Elasticsearch, Logstash, Kibana)
  • 자동화 스크립트: PowerShell 스크립트
  • 중앙 관리 시스템: Wazuh Manager 또는 TheHive

3. 구현 단계

3.1 Sysmon 설치 및 설정

Sysmon은 윈도우 시스템에서 프로세스 생성, 네트워크 연결 등 다양한 이벤트를 모니터링할 수 있는 강력한 도구입니다.

  1. Sysmon 다운로드 및 설치
    • Sysinternals 사이트에서 Sysmon을 다운로드합니다.
    • Sysmon을 설치합니다. Sysmon.exe -accepteula -i sysmonconfig.xml
    • sysmonconfig.xml 파일은 모니터링할 이벤트를 정의하는 설정 파일입니다.
  2. Sysmon 설정 파일 구성

3.2 로그 수집 및 분석

Sysmon 로그는 윈도우 이벤트 로그에 기록되며, 이를 중앙 서버로 수집하여 분석할 수 있습니다.

  1. Wazuh Agent 설치
  2. 로그 수집 및 전달 설정
    • Wazuh 에이전트가 Sysmon 이벤트 로그를 수집하고 중앙 Wazuh Manager로 전송하도록 설정합니다.
  3. 중앙 분석 및 대시보드 구성
    • Wazuh Manager에서 수집된 로그를 Elasticsearch로 저장하고, Kibana를 통해 대시보드로 시각화합니다.
    • 주요 대시보드 항목: 프로세스 생성, 네트워크 연결, 파일 수정 등

3.3 자동화 스크립트

PowerShell 스크립트를 사용하여 자동화된 대응 및 추가적인 모니터링을 구현할 수 있습니다.

  1. PowerShell 스크립트 작성
    • 비정상적인 프로세스를 탐지하고 알림을 생성하는 스크립트를 작성합니다.
  2. 자동화 스크립트 스케줄링
    • 작업 스케줄러를 사용하여 PowerShell 스크립트를 주기적으로 실행하도록 설정합니다.

4. 보안 관점에서의 가이드 및 점검 포인트

  1. 로그 보존 정책 설정
    • 로그 보존 기간 및 용량을 설정하여 효율적인 로그 관리
  2. 정기적인 로그 리뷰
    • 주기적으로 로그를 검토하여 이상 징후를 탐지하고 대응
  3. 권한 관리
    • Sysmon 설정 파일 및 로그 접근 권한을 제한하여 보안 강화
  4. 업데이트 및 패치
    • Sysmon 및 관련 소프트웨어의 최신 업데이트 및 패치를 적용
  5. 교육 및 인식 제고
    • 내부 사용자들에게 Sysmon 및 보안 모니터링의 중요성에 대해 교육

이와 같은 환경을 구축하면 윈도우 시스템에서 프로세스를 실시간으로 모니터링하고 보안을 강화할 수 있습니다. 필요에 따라 추가적인 커스터마이징과 보완 작업을 통해 더욱 견고한 시스템을 만들 수 있습니다. Sysmon을 사용하면 실행되는 모든 프로세스의 다양한 정보를 상세하게 수집할 수 있습니다. 여기에는 어플리케이션 정보, 실행 경로, 파라미터 등이 포함됩니다. 다음은 Sysmon을 사용하여 수집할 수 있는 주요 정보와 설정 방법입니다.

Sysmon 설정 및 수집 정보

Sysmon을 통해 수집할 수 있는 주요 프로세스 정보는 다음과 같습니다.

  • ProcessCreate (Event ID 1): 프로세스 생성 시 발생하는 이벤트로, 다음과 같은 세부 정보를 포함합니다.
    • ProcessId: 생성된 프로세스의 ID
    • Image: 실행된 프로세스의 경로
    • CommandLine: 프로세스를 실행할 때 사용된 명령어와 파라미터
    • ParentImage: 부모 프로세스의 경로
    • ParentCommandLine: 부모 프로세스의 명령어와 파라미터
    • IntegrityLevel: 프로세스의 무결성 수준
    • User: 프로세스를 실행한 사용자

Sysmon 설정 파일 예시

Sysmon 설정 파일 (sysmonconfig.xml)을 통해 모니터링할 이벤트와 수집할 정보를 정의할 수 있습니다. 다음은 기본적인 설정 파일 예시입니다.

<Sysmon schemaversion="4.60">
  <!-- Capture all process creations -->
  <EventFiltering>
    <ProcessCreate onmatch="include">
      <Image condition="is">C:\Windows\System32\cmd.exe</Image>
      <Image condition="is">C:\Windows\System32\powershell.exe</Image>
    </ProcessCreate>
  </EventFiltering>
</Sysmon>

이 예시에서는 cmd.exepowershell.exe의 모든 프로세스 생성 이벤트를 포함하도록 설정합니다. 필요에 따라 조건을 추가하여 특정 프로세스만 필터링하거나, 모든 프로세스를 포함하도록 설정할 수 있습니다.

Sysmon 로그 확인

Sysmon이 생성한 로그는 윈도우 이벤트 뷰어에서 확인할 수 있습니다.

  1. 윈도우 이벤트 뷰어 실행
    • Win + R 키를 누르고 eventvwr.msc를 입력하여 이벤트 뷰어를 엽니다.
  2. Sysmon 로그 확인
    • 왼쪽 패널에서 Applications and Services Logs -> Microsoft -> Windows -> Sysmon -> Operational을 선택합니다.
    • 여기에서 Sysmon이 수집한 로그를 확인할 수 있습니다.

수집된 로그의 예시

Sysmon이 수집한 로그 예시는 다음과 같습니다.

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-Sysmon" Guid="{5770385f-c22a-43e0-bf4c-06f5698ffbd9}"/>
    <EventID>1</EventID>
    <Version>5</Version>
    <Level>4</Level>
    <Task>1</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8000000000000000</Keywords>
    <TimeCreated SystemTime="2024-08-13T12:34:56.789Z"/>
    <EventRecordID>12345</EventRecordID>
    <Correlation/>
    <Execution ProcessID="1234" ThreadID="5678"/>
    <Channel>Microsoft-Windows-Sysmon/Operational</Channel>
    <Computer>example.com</Computer>
    <Security UserID="S-1-5-18"/>
  </System>
  <EventData>
    <Data Name="RuleName">-</Data>
    <Data Name="UtcTime">2024-08-13 12:34:56.789</Data>
    <Data Name="ProcessGuid">{12345678-1234-1234-1234-1234567890ab}</Data>
    <Data Name="ProcessId">1234</Data>
    <Data Name="Image">C:\Windows\System32\cmd.exe</Data>
    <Data Name="FileVersion">10.0.19041.1 (WinBuild.160101.0800)</Data>
    <Data Name="Description">Windows Command Processor</Data>
    <Data Name="Product">Microsoft® Windows® Operating System</Data>
    <Data Name="Company">Microsoft Corporation</Data>
    <Data Name="OriginalFileName">Cmd.Exe</Data>
    <Data Name="CommandLine">cmd.exe /c echo Hello, World!</Data>
    <Data Name="CurrentDirectory">C:\Users\example\</Data>
    <Data Name="User">EXAMPLE\user</Data>
    <Data Name="LogonGuid">{12345678-1234-1234-1234-1234567890ab}</Data>
    <Data Name="LogonId">0x123456</Data>
    <Data Name="TerminalSessionId">1</Data>
    <Data Name="IntegrityLevel">High</Data>
    <Data Name="Hashes">SHA1=1234567890abcdef1234567890abcdef12345678</Data>
    <Data Name="ParentProcessGuid">{12345678-1234-1234-1234-1234567890ab}</Data>
    <Data Name="ParentProcessId">5678</Data>
    <Data Name="ParentImage">C:\Windows\System32\powershell.exe</Data>
    <Data Name="ParentCommandLine">powershell.exe -File script.ps1</Data>
    <Data Name="ParentUser">EXAMPLE\user</Data>
  </EventData>
</Event>

Sysmon을 사용하면 윈도우 환경에서 실행되는 모든 프로세스에 대한 상세 정보를 수집할 수 있습니다. 이를 통해 어플리케이션 정보, 실행 경로, 파라미터 등을 확인할 수 있으며, 중앙에서 로그를 수집하고 분석하여 보안 위협을 탐지하고 대응할 수 있습니다. 이러한 설정과 모니터링 환경을 통해 조직의 보안 수준을 강화할 수 있습니다.

 

윈도우 서비스와 관련된 정보를 수집하고, 서비스의 현재 상태 및 설치/실행/중지 등의 이벤트를 모니터링하는 방법입니다. 이를 위해 Windows Event Forwarding (WEF)와 Sysmon을 함께 사용할 수 있습니다.

1. Windows Event Forwarding (WEF) 설정

Windows Event Forwarding은 윈도우 이벤트 로그를 중앙 로그 서버로 전송하는 기능을 제공합니다. 이를 통해 서비스 관련 이벤트를 수집할 수 있습니다.

 

1.1 WEF 구성

  1. 윈도우 이벤트 포워딩 설정
    • 중앙 로그 서버와 클라이언트 컴퓨터에서 WEF를 설정합니다.
  2. 중앙 로그 서버 설정
    • 이벤트 컬렉터 서비스를 설정합니다.
    • wecutil qc 명령어를 사용하여 이벤트 컬렉터를 구성합니다.
  3. 구독 설정
    • 이벤트 뷰어를 열고, 'Subscriptions'를 선택하여 새로운 구독을 만듭니다.
    • 'Collector initiated' 또는 'Source initiated' 중 하나를 선택하여 구독을 설정합니다.
    • 서비스 관련 이벤트를 필터링하여 수집하도록 설정합니다.

1.2 WEF를 통해 수집할 이벤트

  • Service Control Manager 이벤트
    • 이벤트 ID 7036: 서비스가 시작되거나 중지될 때 발생
    • 이벤트 ID 7045: 서비스가 설치될 때 발생
    • 이벤트 ID 7034: 서비스가 예기치 않게 중지될 때 발생

2. Sysmon 설정

Sysmon을 사용하여 서비스 실행 파일과 관련된 정보를 수집할 수 있습니다. 하지만 Sysmon 자체로는 서비스 상태 변경 이벤트를 직접 수집하지는 않습니다. 이 경우 WEF와 함께 사용하는 것이 좋습니다.

 

2.1 Sysmon 설정 파일

Sysmon 설정 파일에 서비스 관련 이벤트를 포함하도록 구성할 수 있습니다.

<Sysmon schemaversion="4.60">
  <EventFiltering>
    <ProcessCreate onmatch="include">
      <Image condition="is">C:\Windows\System32\svchost.exe</Image>
      <Image condition="is">C:\Windows\System32\services.exe</Image>
    </ProcessCreate>
  </EventFiltering>
</Sysmon>

3. PowerShell 스크립트를 통한 서비스 상태 모니터링

PowerShell을 사용하여 서비스 상태를 주기적으로 확인하고, 상태 변경 이벤트를 기록할 수 있습니다.

 

3.1 PowerShell 스크립트 작성

  1. 서비스 상태 확인 및 기록
    • 다음 스크립트를 사용하여 서비스 상태를 확인하고 로그 파일에 기록합니다.
      $services = Get-Service
      foreach ($service in $services) {
          $log = "Service: $($service.Name), Status: $($service.Status), StartType: $($service.StartType)"
          Add-Content -Path "C:\ServiceLogs\service_status.log" -Value $log
      }
  2. 서비스 상태 변경 감지 및 알림
    • 서비스 상태 변경을 감지하여 이벤트 로그를 기록하고 알림을 보낼 수 있습니다.
      $previousStates = @{} $services = Get-Service foreach ($service in $services) { $previousStates[$service.Name] = $service.Status } while ($true) { $currentServices = Get-Service foreach ($service in $currentServices) { if ($previousStates[$service.Name] -ne $service.Status) { $log = "Service: $($service.Name), Previous Status: $($previousStates[$service.Name]), Current Status: $($service.Status)" Add-Content -Path "C:\ServiceLogs\service_changes.log" -Value $log $previousStates[$service.Name] = $service.Status } } Start-Sleep -Seconds 60 }

4. 중앙화된 로그 관리 및 분석

Sysmon, WEF, 그리고 PowerShell 스크립트를 사용하여 수집한 로그를 중앙화된 시스템으로 전송하고 분석하는 것이 중요합니다. 이를 위해 Wazuh 또는 ELK 스택을 사용할 수 있습니다.

  1. Wazuh 에이전트 설치
    • 윈도우 서버에 Wazuh 에이전트를 설치하여 Sysmon 및 이벤트 로그를 수집하고 중앙 Wazuh Manager로 전송합니다.
  2. ELK 스택 설정
    • Elasticsearch, Logstash, Kibana를 사용하여 수집된 로그를 저장하고 시각화합니다.
    • Logstash를 통해 로그를 처리하고, Kibana를 통해 대시보드를 구성합니다.

위의 방법들을 통해 윈도우 환경에서 서비스 관련 정보를 상세하게 수집하고 모니터링할 수 있습니다. WEF를 통해 서비스 상태 변경 이벤트를 수집하고, Sysmon과 PowerShell을 통해 서비스 실행 파일 및 상태를 모니터링하여 보안 및 운영 효율성을 높일 수 있습니다. 프로세스에 의해 발생되는 네트워크 통신 정보를 수집하기 위해 Sysmon을 설정하여 네트워크 연결 이벤트를 모니터링하고, 중앙화된 로그 관리 시스템을 통해 데이터를 수집하고 분석할 수 있습니다.

1. Sysmon 설정

Sysmon을 사용하여 프로세스가 발생시키는 네트워크 연결 이벤트를 수집할 수 있습니다. 이를 위해 NetworkConnect 이벤트를 설정 파일에 추가합니다.

 

Sysmon 설정 파일

다음은 NetworkConnect 이벤트를 포함한 Sysmon 설정 파일 예시입니다.

<Sysmon schemaversion="4.60">
  <!-- Capture process creation -->
  <EventFiltering>
    <ProcessCreate onmatch="include">
      <Image condition="is">C:\Windows\System32\svchost.exe</Image>
      <Image condition="is">C:\Windows\System32\services.exe</Image>
    </ProcessCreate>

    <!-- Capture network connections -->
    <NetworkConnect onmatch="include">
      <Image condition="is">C:\Windows\System32\svchost.exe</Image>
      <Image condition="is">C:\Windows\System32\services.exe</Image>
    </NetworkConnect>
  </EventFiltering>
</Sysmon>

2. Sysmon 설치 및 구성

Sysmon 설치 후 위의 설정 파일을 적용하여 설정합니다.

Sysmon.exe -accepteula -i sysmonconfig.xml

3. 네트워크 연결 이벤트 확인

Sysmon이 생성한 네트워크 연결 이벤트는 윈도우 이벤트 뷰어에서 확인할 수 있습니다.

  1. 윈도우 이벤트 뷰어 실행
    • Win + R 키를 누르고 eventvwr.msc를 입력하여 이벤트 뷰어를 엽니다.
  2. Sysmon 로그 확인
    • 왼쪽 패널에서 Applications and Services Logs -> Microsoft -> Windows -> Sysmon -> Operational을 선택합니다.
    • 여기에서 Sysmon이 수집한 네트워크 연결 이벤트를 확인할 수 있습니다.

4. PowerShell 스크립트를 통한 추가 수집

네트워크 연결 정보를 PowerShell을 통해 주기적으로 수집할 수 있습니다. 다음 스크립트는 현재 활성화된 네트워크 연결 정보를 수집하여 로그 파일에 저장합니다.

$networkConnections = Get-NetTCPConnection
foreach ($connection in $networkConnections) {
    $process = Get-Process -Id $connection.OwningProcess
    $log = "Process Name: $($process.Name), Process ID: $($connection.OwningProcess), Local Address: $($connection.LocalAddress), Local Port: $($connection.LocalPort), Remote Address: $($connection.RemoteAddress), Remote Port: $($connection.RemotePort), State: $($connection.State)"
    Add-Content -Path "C:\NetworkLogs\network_connections.log" -Value $log
}

수집된 네트워크 연결 로그는 다음과 같은 형식으로 중앙 로그 서버에 저장됩니다.

Process Name: svchost, Process ID: 1234, Local Address: 192.168.1.100, Local Port: 12345, Remote Address: 203.0.113.1, Remote Port: 80, State: Established

이와 같은 설정을 통해 윈도우 환경에서 프로세스가 발생시키는 네트워크 통신 정보를 수집할 수 있습니다. Sysmon을 통해 네트워크 연결 이벤트를 모니터링하고, PowerShell 스크립트를 사용하여 네트워크 연결 상태를 주기적으로 기록합니다. 또한, 중앙화된 로그 관리 시스템을 통해 수집된 데이터를 분석하고 시각화하여 네트워크 보안을 강화할 수 있습니다.

 

네트워크 세션이 연결된 상태에서 네트워크 및 어플리케이션 정보를 수집하기 위해 Sysmon, PowerShell, 그리고 중앙화된 로그 관리 시스템 (Wazuh 또는 ELK 스택)을 사용할 수 있습니다.

Sysmon 설정 파일

다음은 NetworkConnect 이벤트를 포함한 Sysmon 설정 파일 예시입니다.

<Sysmon schemaversion="4.60">
  <!-- Capture process creation and network connections -->
  <EventFiltering>
    <ProcessCreate onmatch="include">
      <Image condition="is">C:\Windows\System32\svchost.exe</Image>
      <Image condition="is">C:\Windows\System32\services.exe</Image>
    </ProcessCreate>
    <NetworkConnect onmatch="include"/>
  </EventFiltering>
</Sysmon>

PowerShell 스크립트를 통한 네트워크 및 어플리케이션 정보 수집

다음 스크립트는 현재 활성화된 네트워크 연결 정보와 해당 프로세스 정보를 수집하여 로그 파일에 저장합니다.

$networkConnections = Get-NetTCPConnection
foreach ($connection in $networkConnections) {
    try {
        $process = Get-Process -Id $connection.OwningProcess
        $log = "Process Name: $($process.Name), Process ID: $($connection.OwningProcess), Local Address: $($connection.LocalAddress), Local Port: $($connection.LocalPort), Remote Address: $($connection.RemoteAddress), Remote Port: $($connection.RemotePort), State: $($connection.State), Executable Path: $($process.Path)"
        Add-Content -Path "C:\NetworkLogs\network_connections.log" -Value $log
    } catch {
        # Ignore processes that have exited or are inaccessible
        $log = "Process ID: $($connection.OwningProcess), Local Address: $($connection.LocalAddress), Local Port: $($connection.LocalPort), Remote Address: $($connection.RemoteAddress), Remote Port: $($connection.RemotePort), State: $($connection.State), Executable Path: Unknown"
        Add-Content -Path "C:\NetworkLogs\network_connections.log" -Value $log
    }
}

Sysmon과 PowerShell 스크립트를 통해 수집한 로그를 중앙화된 시스템으로 전송하고 분석합니다. Wazuh 에이전트를 설치하고 설정하여 Sysmon 및 윈도우 이벤트 로그를 중앙 Wazuh Manager로 수집할 수 있습니다. 이를 통해 중앙화된 로그 관리와 분석을 통해 네트워크 및 어플리케이션 정보를 효과적으로 모니터링할 수 있습니다.

Wazuh Active response - Capabilities

Wazuh의 Active Response 기능을 사용하여 특정 이벤트가 발생할 때 파워쉘 스크립트를 실행하도록 설정할 수 있습니다. 이를 통해 자동화된 대응을 구현할 수 있습니다. 다음은 Wazuh를 사용하여 파워쉘 스크립트를 실행하고, 수집된 데이터를 중앙 Wazuh Manager로 전송하는 방법입니다.

1. 파워쉘 스크립트 작성

네트워크 및 어플리케이션 정보를 수집하는 파워쉘 스크립트를 작성합니다. 이 스크립트는 특정 이벤트가 발생할 때 실행됩니다.

# network_info.ps1
$logFilePath = "C:\WazuhLogs\network_connections.log"

# Create the log directory if it does not exist
if (-Not (Test-Path -Path "C:\WazuhLogs")) {
    New-Item -ItemType Directory -Path "C:\WazuhLogs"
}

$networkConnections = Get-NetTCPConnection
foreach ($connection in $networkConnections) {
    try {
        $process = Get-Process -Id $connection.OwningProcess
        $log = "Process Name: $($process.Name), Process ID: $($connection.OwningProcess), Local Address: $($connection.LocalAddress), Local Port: $($connection.LocalPort), Remote Address: $($connection.RemoteAddress), Remote Port: $($connection.RemotePort), State: $($connection.State), Executable Path: $($process.Path)"
        Add-Content -Path $logFilePath -Value $log
    } catch {
        # Ignore processes that have exited or are inaccessible
        $log = "Process ID: $($connection.OwningProcess), Local Address: $($connection.LocalAddress), Local Port: $($connection.LocalPort), Remote Address: $($connection.RemoteAddress), Remote Port: $($connection.RemotePort), State: $($connection.State), Executable Path: Unknown"
        Add-Content -Path $logFilePath -Value $log
    }
}

2. Wazuh Active Response 설정

Wazuh 에이전트를 설정하여 특정 이벤트가 발생할 때 파워쉘 스크립트를 실행하도록 구성합니다.

  1. ossec.conf 파일 수정
    C:\Program Files (x86)\ossec-agent\ossec.conf 파일을 열고 다음과 같은 내용을 추가합니다.
    <active-response>
      <command>run_powershell_script</command>
      <location>any</location>
      <timeout_allowed>yes</timeout_allowed>
    </active-response>
  2. ruleset/decoders/0065-windows-sysmon_rules.xml 파일 수정
    Sysmon 이벤트에 대한 룰을 추가하여 특정 이벤트가 발생할 때 Active Response를 트리거합니다.
    <group name="sysmon,">
      <rule id="60100" level="3">
        <decoded_as>json</decoded_as>
        <description>Sysmon event.</description>
        <match>sysmon</match>
        <group>sysmon</group>
        <response>run_powershell_script</response>
      </rule>
    </group>
  3. ruleset/decoders/active-responses/active-responses_config.xml 파일 수정
    파워쉘 스크립트를 실행하는 Active Response 명령어를 추가합니다.
    <active-response>
      <command>
        <name>run_powershell_script</name>
        <executable>powershell.exe</executable>
        <extra_args>-ExecutionPolicy Bypass -File C:\Path\To\network_info.ps1</extra_args>
        <timeout>60</timeout>
      </command>
    </active-response>
  4. commands.json 파일 수정
    Active Response 명령어를 Wazuh Manager에 추가합니다.
    {
      "commands": [
        {
          "command": "powershell.exe",
          "args": ["-ExecutionPolicy", "Bypass", "-File", "C:\\Path\\To\\network_info.ps1"],
          "timeout": 60
        }
      ]
    }

3. Wazuh 에이전트 등록 및 시작

  1. Wazuh 에이전트 등록
    • Wazuh Manager 서버에서 에이전트를 등록합니다. /var/ossec/bin/manage_agents
    • 메뉴에서 'A'를 선택하여 새 에이전트를 추가하고, 에이전트 이름을 입력합니다. 추가 후 표시되는 키를 복사합니다.
    • 윈도우 에이전트에서 Wazuh Agent Manager를 열고, 복사한 키를 입력합니다.
  2. Wazuh 에이전트 시작
    • 윈도우 서비스 관리 도구 (services.msc)를 열어 Wazuh Agent 서비스를 시작합니다.

4. Wazuh를 통한 로그 수집

Wazuh 에이전트를 통해 파워쉘 스크립트가 생성한 로그 파일을 중앙 Wazuh Manager로 전송하도록 설정합니다.

  1. ossec.conf 파일 수정
    • C:\Program Files (x86)\ossec-agent\ossec.conf 파일을 열고 다음 내용을 추가합니다.
      <localfile>
        <log_format>syslog</log_format>
        <location>C:\WazuhLogs\network_connections.log</location>
      </localfile>
  2. Wazuh 에이전트 재시작
    • Wazuh Agent 서비스를 재시작하여 설정을 적용합니다.
      Restart-Service -Name WazuhSvc

위의 단계들을 통해 Wazuh의 Active Response 기능을 사용하여 특정 이벤트가 발생할 때 파워쉘 스크립트를 실행하고, 수집된 데이터를 Wazuh 에이전트를 통해 중앙 Wazuh Manager로 전송할 수 있습니다. 이를 통해 자동화된 대응을 구현하고, 중앙화된 로그 관리와 분석을 통해 네트워크 및 어플리케이션 활동을 효과적으로 모니터링할 수 있습니다.

728x90

댓글