윈도우 프로세스 모니터 데이터 수집을 통한 추적 및 감사
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은 다음과 같은 기능을 제공합니다.
- 프로세스 생성 및 종료 모니터링
- 네트워크 연결 모니터링
- 파일 생성 시간 변경 모니터링
- 레지스트리 이벤트 모니터링
설정 및 사용 방법
- Sysmon 설치 및 설정
- Sysmon을 다운로드하고 설치합니다.
- 설정 파일(Sysmon configuration file)을 작성하여 모니터링할 이벤트를 정의합니다. Sysmon에서 제공하는 Sysmonconfig-import.xml 파일을 사용할 수 있습니다.
- 예시
sysmon -accepteula -i sysmonconfig-import.xml
- SIEM 통합
- Sysmon의 로그를 중앙 집중식 SIEM(Splunk, ELK Stack, Graylog 등)으로 전송합니다.
- SIEM에서 Sysmon 로그를 분석하고, 비정상적인 활동을 탐지하기 위한 규칙을 설정합니다.
Windows Event Forwarding (WEF)
WEF는 윈도우 이벤트 로그를 중앙 서버로 전송하여 분석할 수 있게 해줍니다. 이를 통해 네트워크 상의 여러 시스템에서 발생하는 이벤트를 한 곳에서 모니터링할 수 있습니다.
설정 및 사용 방법
- WEF 설정
- 이벤트 구독(Subscription)을 생성하여 특정 이벤트를 중앙 서버로 전송합니다.
- 중앙 서버에서 이벤트 로그를 수집하고 분석합니다.
- 이벤트 로그 분석
- 수집된 이벤트 로그를 분석하여 비정상적인 활동을 탐지합니다. 이를 위해 PowerShell, WMI, RDP, WinRM 등의 이벤트를 모니터링할 수 있습니다.
PowerShell Logging
PowerShell 스크립트 실행을 모니터링하고 로깅함으로써 비정상적인 활동을 탐지할 수 있습니다. 이를 위해 PowerShell 로깅 기능을 활성화합니다.
설정 및 사용 방법
- PowerShell 스크립트 블록 로깅
- PowerShell에서 실행되는 모든 스크립트 블록을 로깅합니다.
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -Name 'EnableScriptBlockLogging' -Value 1
- PowerShell에서 실행되는 모든 스크립트 블록을 로깅합니다.
- PowerShell 트랜스크립트 로깅
- PowerShell 명령어의 입력 및 출력을 로깅합니다.
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription' -Name 'EnableTranscripting' -Value 1
- PowerShell 명령어의 입력 및 출력을 로깅합니다.
- 로그 분석
- 수집된 PowerShell 로그를 분석하여 비정상적인 활동을 탐지합니다.
Windows Defender ATP (Advanced Threat Protection)
Windows Defender ATP는 윈도우 내장 엔드포인트 탐지 및 대응(EDR) 솔루션입니다. 이 솔루션은 다음과 같은 기능을 제공합니다.
- 실시간 공격 탐지
- 비정상적인 활동 모니터링
- 위협 인텔리전스 기반 분석
설정 및 사용 방법
- Windows Defender ATP 활성화
- Windows Defender ATP를 활성화하고 설정합니다.
- 엔드포인트를 ATP 포털에 연결하여 실시간 모니터링을 시작합니다.
- 비정상 활동 탐지
- ATP 포털에서 제공하는 대시보드와 보고서를 통해 비정상적인 활동을 모니터링하고 대응합니다.
이와 같은 도구와 방법을 활용하여 윈도우 환경에서 LOTL 공격을 효과적으로 탐지할 수 있습니다. 각 도구는 고유한 기능을 제공하며, 조직의 보안 요구사항에 맞게 선택하여 사용할 수 있습니다. 윈도우 환경에서 프로세스 트래커를 구현하기 위한 최선의 구현방안입니다.
1. 목표 정의
- 프로세스 추적: 실시간으로 실행 중인 프로세스를 모니터링하고 로그를 수집
- 이상 징후 탐지: 비정상적인 프로세스를 탐지하여 대응
- 보안 강화: 악성 소프트웨어 및 행위 탐지
2. 필요 요소
- 모니터링 도구: Sysmon (System Monitor)
- 로그 수집 및 분석 도구: Wazuh 또는 ELK 스택 (Elasticsearch, Logstash, Kibana)
- 자동화 스크립트: PowerShell 스크립트
- 중앙 관리 시스템: Wazuh Manager 또는 TheHive
3. 구현 단계
3.1 Sysmon 설치 및 설정
Sysmon은 윈도우 시스템에서 프로세스 생성, 네트워크 연결 등 다양한 이벤트를 모니터링할 수 있는 강력한 도구입니다.
- Sysmon 다운로드 및 설치
- Sysinternals 사이트에서 Sysmon을 다운로드합니다.
- Sysmon을 설치합니다.
Sysmon.exe -accepteula -i sysmonconfig.xml
sysmonconfig.xml
파일은 모니터링할 이벤트를 정의하는 설정 파일입니다.
- Sysmon 설정 파일 구성
- 기본 설정 파일을 사용하거나 필요에 맞게 커스터마이징합니다. SwiftOnSecurity의 sysmon-config를 참고할 수 있습니다.
3.2 로그 수집 및 분석
Sysmon 로그는 윈도우 이벤트 로그에 기록되며, 이를 중앙 서버로 수집하여 분석할 수 있습니다.
- Wazuh Agent 설치
- Wazuh 에이전트 설치 가이드를 참고하여 각 윈도우 서버에 에이전트를 설치합니다.
- 로그 수집 및 전달 설정
- Wazuh 에이전트가 Sysmon 이벤트 로그를 수집하고 중앙 Wazuh Manager로 전송하도록 설정합니다.
- 중앙 분석 및 대시보드 구성
- Wazuh Manager에서 수집된 로그를 Elasticsearch로 저장하고, Kibana를 통해 대시보드로 시각화합니다.
- 주요 대시보드 항목: 프로세스 생성, 네트워크 연결, 파일 수정 등
3.3 자동화 스크립트
PowerShell 스크립트를 사용하여 자동화된 대응 및 추가적인 모니터링을 구현할 수 있습니다.
- PowerShell 스크립트 작성
- 비정상적인 프로세스를 탐지하고 알림을 생성하는 스크립트를 작성합니다.
- 자동화 스크립트 스케줄링
- 작업 스케줄러를 사용하여 PowerShell 스크립트를 주기적으로 실행하도록 설정합니다.
4. 보안 관점에서의 가이드 및 점검 포인트
- 로그 보존 정책 설정
- 로그 보존 기간 및 용량을 설정하여 효율적인 로그 관리
- 정기적인 로그 리뷰
- 주기적으로 로그를 검토하여 이상 징후를 탐지하고 대응
- 권한 관리
- Sysmon 설정 파일 및 로그 접근 권한을 제한하여 보안 강화
- 업데이트 및 패치
- Sysmon 및 관련 소프트웨어의 최신 업데이트 및 패치를 적용
- 교육 및 인식 제고
- 내부 사용자들에게 Sysmon 및 보안 모니터링의 중요성에 대해 교육
이와 같은 환경을 구축하면 윈도우 시스템에서 프로세스를 실시간으로 모니터링하고 보안을 강화할 수 있습니다. 필요에 따라 추가적인 커스터마이징과 보완 작업을 통해 더욱 견고한 시스템을 만들 수 있습니다. Sysmon을 사용하면 실행되는 모든 프로세스의 다양한 정보를 상세하게 수집할 수 있습니다. 여기에는 어플리케이션 정보, 실행 경로, 파라미터 등이 포함됩니다. 다음은 Sysmon을 사용하여 수집할 수 있는 주요 정보와 설정 방법입니다.
Sysmon 설정 및 수집 정보
Sysmon을 통해 수집할 수 있는 주요 프로세스 정보는 다음과 같습니다.
- ProcessCreate (Event ID 1): 프로세스 생성 시 발생하는 이벤트로, 다음과 같은 세부 정보를 포함합니다.
ProcessId
: 생성된 프로세스의 IDImage
: 실행된 프로세스의 경로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.exe
와 powershell.exe
의 모든 프로세스 생성 이벤트를 포함하도록 설정합니다. 필요에 따라 조건을 추가하여 특정 프로세스만 필터링하거나, 모든 프로세스를 포함하도록 설정할 수 있습니다.
Sysmon 로그 확인
Sysmon이 생성한 로그는 윈도우 이벤트 뷰어에서 확인할 수 있습니다.
- 윈도우 이벤트 뷰어 실행
Win + R
키를 누르고eventvwr.msc
를 입력하여 이벤트 뷰어를 엽니다.
- 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 구성
- 윈도우 이벤트 포워딩 설정
- 중앙 로그 서버와 클라이언트 컴퓨터에서 WEF를 설정합니다.
- 중앙 로그 서버 설정
- 이벤트 컬렉터 서비스를 설정합니다.
wecutil qc
명령어를 사용하여 이벤트 컬렉터를 구성합니다.
- 구독 설정
- 이벤트 뷰어를 열고, '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 스크립트 작성
- 서비스 상태 확인 및 기록
- 다음 스크립트를 사용하여 서비스 상태를 확인하고 로그 파일에 기록합니다.
$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 }
- 다음 스크립트를 사용하여 서비스 상태를 확인하고 로그 파일에 기록합니다.
- 서비스 상태 변경 감지 및 알림
- 서비스 상태 변경을 감지하여 이벤트 로그를 기록하고 알림을 보낼 수 있습니다.
$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 스택을 사용할 수 있습니다.
- Wazuh 에이전트 설치
- 윈도우 서버에 Wazuh 에이전트를 설치하여 Sysmon 및 이벤트 로그를 수집하고 중앙 Wazuh Manager로 전송합니다.
- 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이 생성한 네트워크 연결 이벤트는 윈도우 이벤트 뷰어에서 확인할 수 있습니다.
- 윈도우 이벤트 뷰어 실행
Win + R
키를 누르고eventvwr.msc
를 입력하여 이벤트 뷰어를 엽니다.
- 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 기능을 사용하여 특정 이벤트가 발생할 때 파워쉘 스크립트를 실행하도록 설정할 수 있습니다. 이를 통해 자동화된 대응을 구현할 수 있습니다. 다음은 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 에이전트를 설정하여 특정 이벤트가 발생할 때 파워쉘 스크립트를 실행하도록 구성합니다.
- 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>
- 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>
- 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>
- commands.json 파일 수정
Active Response 명령어를 Wazuh Manager에 추가합니다.{ "commands": [ { "command": "powershell.exe", "args": ["-ExecutionPolicy", "Bypass", "-File", "C:\\Path\\To\\network_info.ps1"], "timeout": 60 } ] }
3. Wazuh 에이전트 등록 및 시작
- Wazuh 에이전트 등록
- Wazuh Manager 서버에서 에이전트를 등록합니다.
/var/ossec/bin/manage_agents
- 메뉴에서 'A'를 선택하여 새 에이전트를 추가하고, 에이전트 이름을 입력합니다. 추가 후 표시되는 키를 복사합니다.
- 윈도우 에이전트에서 Wazuh Agent Manager를 열고, 복사한 키를 입력합니다.
- Wazuh Manager 서버에서 에이전트를 등록합니다.
- Wazuh 에이전트 시작
- 윈도우 서비스 관리 도구 (services.msc)를 열어
Wazuh Agent
서비스를 시작합니다.
- 윈도우 서비스 관리 도구 (services.msc)를 열어
4. Wazuh를 통한 로그 수집
Wazuh 에이전트를 통해 파워쉘 스크립트가 생성한 로그 파일을 중앙 Wazuh Manager로 전송하도록 설정합니다.
- ossec.conf 파일 수정
C:\Program Files (x86)\ossec-agent\ossec.conf
파일을 열고 다음 내용을 추가합니다.<localfile> <log_format>syslog</log_format> <location>C:\WazuhLogs\network_connections.log</location> </localfile>
- Wazuh 에이전트 재시작
- Wazuh Agent 서비스를 재시작하여 설정을 적용합니다.
Restart-Service -Name WazuhSvc
- Wazuh Agent 서비스를 재시작하여 설정을 적용합니다.
위의 단계들을 통해 Wazuh의 Active Response 기능을 사용하여 특정 이벤트가 발생할 때 파워쉘 스크립트를 실행하고, 수집된 데이터를 Wazuh 에이전트를 통해 중앙 Wazuh Manager로 전송할 수 있습니다. 이를 통해 자동화된 대응을 구현하고, 중앙화된 로그 관리와 분석을 통해 네트워크 및 어플리케이션 활동을 효과적으로 모니터링할 수 있습니다.