Browse Source

update meeting

tum 2 weeks ago
parent
commit
8800d39110
3 changed files with 107 additions and 52 deletions
  1. 23 0
      overall.md
  2. 51 52
      progress-update.md
  3. 33 0
      scripts/README.md

+ 23 - 0
overall.md

4
 Updated: March 4, 2026
4
 Updated: March 4, 2026
5
 
5
 
6
 Legend:
6
 Legend:
7
+
7
 - `[x]` Completed
8
 - `[x]` Completed
8
 - `[~]` Partially completed / in progress
9
 - `[~]` Partially completed / in progress
9
 - `[ ]` Not started
10
 - `[ ]` Not started
28
 ### 2.1 Create & Tune New Detection Rules / Use Cases
29
 ### 2.1 Create & Tune New Detection Rules / Use Cases
29
 
30
 
30
 - [x] Baseline rules/decoders for proposal use cases added
31
 - [x] Baseline rules/decoders for proposal use cases added
32
+  
31
   - Evidence:
33
   - Evidence:
32
     - `wazuh-docker/single-node/config/wazuh_cluster/local_decoder.xml`
34
     - `wazuh-docker/single-node/config/wazuh_cluster/local_decoder.xml`
33
     - `wazuh-docker/single-node/config/wazuh_cluster/local_rules.xml`
35
     - `wazuh-docker/single-node/config/wazuh_cluster/local_rules.xml`
35
     - `wazuh-docker/single-node/config/wazuh_cluster/rules/soc-a2-fortigate-fw-rules.xml`
37
     - `wazuh-docker/single-node/config/wazuh_cluster/rules/soc-a2-fortigate-fw-rules.xml`
36
     - `wazuh-docker/single-node/config/wazuh_cluster/rules/soc-a3-fortigate-vpn-rules.xml`
38
     - `wazuh-docker/single-node/config/wazuh_cluster/rules/soc-a3-fortigate-vpn-rules.xml`
37
     - `wazuh-docker/single-node/config/wazuh_cluster/rules/soc-a4-windows-ad-rules.xml`
39
     - `wazuh-docker/single-node/config/wazuh_cluster/rules/soc-a4-windows-ad-rules.xml`
40
+
38
 - [~] Tuning against real production traffic
41
 - [~] Tuning against real production traffic
42
+  
39
   - Status: simulator/UAT-oriented tuning done; production false-positive tuning remains
43
   - Status: simulator/UAT-oriented tuning done; production false-positive tuning remains
40
 
44
 
41
 ### 2.2 IOC Detection (DNS / Firewall / IDS-IPS)
45
 ### 2.2 IOC Detection (DNS / Firewall / IDS-IPS)
42
 
46
 
43
 - [x] IOC enrichment/evaluation APIs implemented
47
 - [x] IOC enrichment/evaluation APIs implemented
48
+  
44
   - Evidence: `soc-integrator/app/main.py` (`/ioc/enrich`, `/ioc/evaluate`, `/ioc/history`)
49
   - Evidence: `soc-integrator/app/main.py` (`/ioc/enrich`, `/ioc/evaluate`, `/ioc/history`)
50
+
45
 - [x] VirusTotal and AbuseIPDB integrations implemented
51
 - [x] VirusTotal and AbuseIPDB integrations implemented
52
+  
46
   - Evidence: `soc-integrator/app/adapters/virustotal.py`, `soc-integrator/app/adapters/abuseipdb.py`
53
   - Evidence: `soc-integrator/app/adapters/virustotal.py`, `soc-integrator/app/adapters/abuseipdb.py`
54
+
47
 - [x] IOC trace persistence implemented
55
 - [x] IOC trace persistence implemented
56
+  
48
   - Evidence: `soc-integrator/app/repositories/mvp_repo.py` (`ioc_trace` methods)
57
   - Evidence: `soc-integrator/app/repositories/mvp_repo.py` (`ioc_trace` methods)
58
+
49
 - [~] Scheduled IOC feed lifecycle hardening for production
59
 - [~] Scheduled IOC feed lifecycle hardening for production
60
+  
50
   - Status: core IOC workflow exists; production feed governance/SLAs still to finalize
61
   - Status: core IOC workflow exists; production feed governance/SLAs still to finalize
51
 
62
 
52
 ### 2.3 VPN Authentication Success from Outside Thailand
63
 ### 2.3 VPN Authentication Success from Outside Thailand
53
 
64
 
54
 - [x] MVP VPN evaluate flow implemented
65
 - [x] MVP VPN evaluate flow implemented
66
+  
55
   - Evidence: `soc-integrator/app/routes/mvp.py` (`/mvp/vpn/evaluate`), `soc-integrator/app/services/mvp_service.py`
67
   - Evidence: `soc-integrator/app/routes/mvp.py` (`/mvp/vpn/evaluate`), `soc-integrator/app/services/mvp_service.py`
68
+
56
 - [x] GeoIP enrichment capability implemented
69
 - [x] GeoIP enrichment capability implemented
70
+  
57
   - Evidence: `soc-integrator/app/adapters/geoip.py`, `soc-integrator/app/main.py` (`/geoip/{ip}`)
71
   - Evidence: `soc-integrator/app/adapters/geoip.py`, `soc-integrator/app/main.py` (`/geoip/{ip}`)
72
+
58
 - [~] Production exception list and policy hardening
73
 - [~] Production exception list and policy hardening
74
+  
59
   - Status: policy framework exists; enterprise exception governance pending
75
   - Status: policy framework exists; enterprise exception governance pending
60
 
76
 
61
 ## 3) End-to-End Workflow & Integration Deliverables (Section 4 / 4.1)
77
 ## 3) End-to-End Workflow & Integration Deliverables (Section 4 / 4.1)
126
 ## 8.1) Latest Incremental Updates (March 4, 2026)
142
 ## 8.1) Latest Incremental Updates (March 4, 2026)
127
 
143
 
128
 - [x] Added production-profile simulator mode for proposal scripts
144
 - [x] Added production-profile simulator mode for proposal scripts
145
+  
129
   - Evidence:
146
   - Evidence:
130
     - `scripts/send-wazuh-proposal-required-events.sh` (`--profile=production`)
147
     - `scripts/send-wazuh-proposal-required-events.sh` (`--profile=production`)
131
     - `scripts/send-wazuh-proposal-appendix-b-events.sh` (`--profile=production`)
148
     - `scripts/send-wazuh-proposal-appendix-b-events.sh` (`--profile=production`)
149
+
132
 - [x] Expanded normalization test support in SOC Integrator
150
 - [x] Expanded normalization test support in SOC Integrator
151
+  
133
   - Evidence:
152
   - Evidence:
134
     - `soc-integrator/app/main.py` (`GET /ingest/wazuh-alert/samples`)
153
     - `soc-integrator/app/main.py` (`GET /ingest/wazuh-alert/samples`)
135
     - `soc-integrator/app/main.py` (`POST /ingest/wazuh-alert` now includes `normalized_event`)
154
     - `soc-integrator/app/main.py` (`POST /ingest/wazuh-alert` now includes `normalized_event`)
155
+
136
 - [x] C1 normalization aligned to production log characteristics
156
 - [x] C1 normalization aligned to production log characteristics
157
+  
137
   - Evidence:
158
   - Evidence:
138
     - `soc-integrator/app/services/mvp_service.py` (production-first C1 event typing)
159
     - `soc-integrator/app/services/mvp_service.py` (production-first C1 event typing)
160
+
139
 - [~] Production rule validation in Wazuh (`110xxx`) currently constrained by manager runtime instability during lab restarts
161
 - [~] Production rule validation in Wazuh (`110xxx`) currently constrained by manager runtime instability during lab restarts
162
+  
140
   - Status: ingestion works; deterministic decoder/rule verification requires stable manager window.
163
   - Status: ingestion works; deterministic decoder/rule verification requires stable manager window.
141
 
164
 
142
 ## 9) Quick Status Summary
165
 ## 9) Quick Status Summary

+ 51 - 52
progress-update.md

323
     C3 --> G
323
     C3 --> G
324
     G --> H[Optional Incident Pipeline<br/>IRIS case + Shuffle + PagerDuty stub]
324
     G --> H[Optional Incident Pipeline<br/>IRIS case + Shuffle + PagerDuty stub]
325
 ```
325
 ```
326
+
326
 - `scripts/send-wazuh-endpoint-agent-test-events.sh`
327
 - `scripts/send-wazuh-endpoint-agent-test-events.sh`
327
 - additional simulation scripts under `scripts/` for firewall and endpoint scenarios with continuous mode enabled
328
 - additional simulation scripts under `scripts/` for firewall and endpoint scenarios with continuous mode enabled
328
 
329
 
497
 
498
 
498
 ### 11) SOC Integrator API Inventory
499
 ### 11) SOC Integrator API Inventory
499
 
500
 
500
-| Group | Method | Endpoint | Notes |
501
-|---|---|---|---|
502
-| Core | GET | `/health` | Service health and target configuration |
503
-| Core | POST | `/ingest/wazuh-alert` | Normalize inbound Wazuh alert payload |
504
-| Core | POST | `/action/create-incident` | Create PagerDuty incident |
505
-| Core | POST | `/action/trigger-shuffle` | Trigger Shuffle workflow execution |
506
-| Core | POST | `/action/create-iris-case` | Create IRIS case (legacy action endpoint) |
507
-| IRIS | POST | `/iris/tickets` | Create IRIS ticket/case via soc-integrator |
508
-| IRIS | GET | `/iris/tickets` | List/query IRIS tickets/cases |
509
-| IOC | POST | `/ioc/enrich` | IOC enrichment from configured intel sources |
510
-| IOC | POST | `/ioc/evaluate` | IOC decisioning/verdict |
511
-| IOC | POST | `/ioc/upload-file` | Upload file to IOC backend (VirusTotal flow) |
512
-| IOC | GET | `/ioc/analysis/{analysis_id}` | Retrieve IOC analysis status/result |
513
-| IOC | POST | `/ioc/evaluate-file` | Evaluate file indicator or uploaded sample |
514
-| IOC | GET | `/ioc/history` | Retrieve stored IOC trace history |
515
-| Shuffle | GET | `/shuffle/health` | Shuffle service reachability check |
516
-| Shuffle | GET | `/shuffle/auth-test` | Validate Shuffle API key access |
517
-| Shuffle | POST | `/shuffle/login` | Login against Shuffle API |
518
-| Shuffle | POST | `/shuffle/generate-apikey` | Generate Shuffle API key from credentials |
519
-| Shuffle | GET | `/shuffle/workflows` | List workflows |
520
-| Shuffle | GET | `/shuffle/workflows/{workflow_id}` | Get workflow detail |
521
-| Shuffle | POST | `/shuffle/workflows/{workflow_id}/execute` | Execute specific workflow |
522
-| Shuffle | GET | `/shuffle/apps` | List installed/available Shuffle apps |
523
-| Shuffle | POST | `/shuffle/proxy` | Generic proxy request to Shuffle API |
524
-| Wazuh | GET | `/sync/wazuh-version` | Fetch Wazuh version information |
525
-| Wazuh | GET | `/wazuh/auth-test` | Validate Wazuh API authentication |
526
-| Wazuh | GET | `/wazuh/manager-info` | Manager information |
527
-| Wazuh | GET | `/wazuh/agents` | List Wazuh agents |
528
-| Wazuh | GET | `/wazuh/alerts` | Query recent Wazuh alerts |
529
-| Wazuh | GET | `/wazuh/manager-logs` | Read manager logs |
530
-| Wazuh | POST | `/wazuh/sync-to-mvp` | Sync Wazuh alerts into MVP pipeline |
531
-| Wazuh | GET | `/wazuh/auto-sync/status` | Auto-sync loop status |
532
-| MVP | POST | `/mvp/incidents/ingest` | Ingest incident into MVP flow |
533
-| MVP | POST | `/mvp/ioc/evaluate` | Evaluate IOC under MVP policy |
534
-| MVP | POST | `/mvp/vpn/evaluate` | Evaluate VPN event under MVP policy |
535
-| MVP | GET | `/mvp/config/policies` | Read MVP policy configuration |
536
-| MVP | PUT | `/mvp/config/policies` | Update MVP policy configuration |
537
-| MVP | GET | `/mvp/health/dependencies` | Dependency health snapshot |
501
+| Group   | Method | Endpoint                                   | Notes                                        |
502
+| ------- | ------ | ------------------------------------------ | -------------------------------------------- |
503
+| Core    | GET    | `/health`                                  | Service health and target configuration      |
504
+| Core    | POST   | `/ingest/wazuh-alert`                      | Normalize inbound Wazuh alert payload        |
505
+| Core    | POST   | `/action/create-incident`                  | Create PagerDuty incident                    |
506
+| Core    | POST   | `/action/trigger-shuffle`                  | Trigger Shuffle workflow execution           |
507
+| Core    | POST   | `/action/create-iris-case`                 | Create IRIS case (legacy action endpoint)    |
508
+| IRIS    | POST   | `/iris/tickets`                            | Create IRIS ticket/case via soc-integrator   |
509
+| IRIS    | GET    | `/iris/tickets`                            | List/query IRIS tickets/cases                |
510
+| IOC     | POST   | `/ioc/enrich`                              | IOC enrichment from configured intel sources |
511
+| IOC     | POST   | `/ioc/evaluate`                            | IOC decisioning/verdict                      |
512
+| IOC     | POST   | `/ioc/upload-file`                         | Upload file to IOC backend (VirusTotal flow) |
513
+| IOC     | GET    | `/ioc/analysis/{analysis_id}`              | Retrieve IOC analysis status/result          |
514
+| IOC     | POST   | `/ioc/evaluate-file`                       | Evaluate file indicator or uploaded sample   |
515
+| IOC     | GET    | `/ioc/history`                             | Retrieve stored IOC trace history            |
516
+| Shuffle | GET    | `/shuffle/health`                          | Shuffle service reachability check           |
517
+| Shuffle | GET    | `/shuffle/auth-test`                       | Validate Shuffle API key access              |
518
+| Shuffle | POST   | `/shuffle/login`                           | Login against Shuffle API                    |
519
+| Shuffle | POST   | `/shuffle/generate-apikey`                 | Generate Shuffle API key from credentials    |
520
+| Shuffle | GET    | `/shuffle/workflows`                       | List workflows                               |
521
+| Shuffle | GET    | `/shuffle/workflows/{workflow_id}`         | Get workflow detail                          |
522
+| Shuffle | POST   | `/shuffle/workflows/{workflow_id}/execute` | Execute specific workflow                    |
523
+| Shuffle | GET    | `/shuffle/apps`                            | List installed/available Shuffle apps        |
524
+| Shuffle | POST   | `/shuffle/proxy`                           | Generic proxy request to Shuffle API         |
525
+| Wazuh   | GET    | `/sync/wazuh-version`                      | Fetch Wazuh version information              |
526
+| Wazuh   | GET    | `/wazuh/auth-test`                         | Validate Wazuh API authentication            |
527
+| Wazuh   | GET    | `/wazuh/manager-info`                      | Manager information                          |
528
+| Wazuh   | GET    | `/wazuh/agents`                            | List Wazuh agents                            |
529
+| Wazuh   | GET    | `/wazuh/alerts`                            | Query recent Wazuh alerts                    |
530
+| Wazuh   | GET    | `/wazuh/manager-logs`                      | Read manager logs                            |
531
+| Wazuh   | POST   | `/wazuh/sync-to-mvp`                       | Sync Wazuh alerts into MVP pipeline          |
532
+| Wazuh   | GET    | `/wazuh/auto-sync/status`                  | Auto-sync loop status                        |
533
+| MVP     | POST   | `/mvp/incidents/ingest`                    | Ingest incident into MVP flow                |
534
+| MVP     | POST   | `/mvp/ioc/evaluate`                        | Evaluate IOC under MVP policy                |
535
+| MVP     | POST   | `/mvp/vpn/evaluate`                        | Evaluate VPN event under MVP policy          |
536
+| MVP     | GET    | `/mvp/config/policies`                     | Read MVP policy configuration                |
537
+| MVP     | PUT    | `/mvp/config/policies`                     | Update MVP policy configuration              |
538
+| MVP     | GET    | `/mvp/health/dependencies`                 | Dependency health snapshot                   |
538
 
539
 
539
 Additional FastAPI-generated endpoints:
540
 Additional FastAPI-generated endpoints:
540
 
541
 
619
 
620
 
620
 ### Appendix C Production Data Onboarding Checklist
621
 ### Appendix C Production Data Onboarding Checklist
621
 
622
 
622
-| Source | Log Path / Channel | Must-Have Fields | Use Cases | Verification Query (Wazuh/Indexer) |
623
-|---|---|---|---|---|
624
-| VPN Gateway (FortiGate/SSL-VPN) | Syslog export from firewall/VPN device | `timestamp`, `user`, `src_ip`, `action/result`, `event_id` (if mapped), `country` (optional) | C1, C2 | `full_log:*vpn* AND full_log:*user=*` |
625
-| Active Directory / Windows DC | Windows Security Event Log (agent/forwarder) | `event_id`, `timestamp`, `user/account`, `src_ip` (where present), `logon_type`, `success/failure` | C1, C2, C3 | `rule.id:* AND (data.win.system.eventID:4624 OR full_log:*event_id=4624*)` |
626
-| Cloud IdP (Entra/Okta/Google) | API export / SIEM connector -> syslog/json | `user`, `src_ip`, `event_time`, `outcome`, `geo.country` (if available), `app/service` | C1, C2 | `full_log:*source=*idp* OR full_log:*okta* OR full_log:*entra*` |
627
-| Windows Endpoints/Servers | Wazuh agent + Sysmon/Security logs | `event_id`, `user`, `src_ip`, `dst_host`, `dst_port`, `process/action` | C2, C3 | `full_log:*source=windows* AND rule.id:*` |
628
-| Linux Servers | auth.log / secure / sudo / sshd | `timestamp`, `user`, `src_ip`, `action`, `success` | C2, C3 | `full_log:*sshd* OR full_log:*sudo*` |
629
-| East-West Firewall | Internal traffic logs (allow/deny/flow) | `src_ip`, `dst_ip/dst_host`, `dst_port`, `action`, `timestamp` | C3 | `full_log:*src_ip=* AND full_log:*dst_port=*` |
630
-| IDS/NDR | IDS alerts / network detection logs | `src_ip`, `dst_ip/dst_host`, `dst_port`, `signature/category`, `timestamp` | C3 | `full_log:*scan* OR full_log:*lateral* OR full_log:*enumeration*` |
623
+| Source                          | Log Path / Channel                           | Must-Have Fields                                                                                   | Use Cases  | Verification Query (Wazuh/Indexer)                                         |
624
+| ------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------- |
625
+| VPN Gateway (FortiGate/SSL-VPN) | Syslog export from firewall/VPN device       | `timestamp`, `user`, `src_ip`, `action/result`, `event_id` (if mapped), `country` (optional)       | C1, C2     | `full_log:*vpn* AND full_log:*user=*`                                      |
626
+| Active Directory / Windows DC   | Windows Security Event Log (agent/forwarder) | `event_id`, `timestamp`, `user/account`, `src_ip` (where present), `logon_type`, `success/failure` | C1, C2, C3 | `rule.id:* AND (data.win.system.eventID:4624 OR full_log:*event_id=4624*)` |
627
+| Cloud IdP (Entra/Okta/Google)   | API export / SIEM connector -> syslog/json   | `user`, `src_ip`, `event_time`, `outcome`, `geo.country` (if available), `app/service`             | C1, C2     | `full_log:*source=*idp* OR full_log:*okta* OR full_log:*entra*`            |
628
+| Windows Endpoints/Servers       | Wazuh agent + Sysmon/Security logs           | `event_id`, `user`, `src_ip`, `dst_host`, `dst_port`, `process/action`                             | C2, C3     | `full_log:*source=windows* AND rule.id:*`                                  |
629
+| Linux Servers                   | auth.log / secure / sudo / sshd              | `timestamp`, `user`, `src_ip`, `action`, `success`                                                 | C2, C3     | `full_log:*sshd* OR full_log:*sudo*`                                       |
630
+| East-West Firewall              | Internal traffic logs (allow/deny/flow)      | `src_ip`, `dst_ip/dst_host`, `dst_port`, `action`, `timestamp`                                     | C3         | `full_log:*src_ip=* AND full_log:*dst_port=*`                              |
631
+| IDS/NDR                         | IDS alerts / network detection logs          | `src_ip`, `dst_ip/dst_host`, `dst_port`, `signature/category`, `timestamp`                         | C3         | `full_log:*scan* OR full_log:*lateral* OR full_log:*enumeration*`          |
631
 
632
 
632
 #### Acceptance Checklist (Per Source)
633
 #### Acceptance Checklist (Per Source)
633
 
634
 
653
 ### Major Progress Areas
654
 ### Major Progress Areas
654
 
655
 
655
 1. SOC Integrator Expansion
656
 1. SOC Integrator Expansion
656
-
657
 - Added full admin UI stack:
657
 - Added full admin UI stack:
658
   - `soc-integrator/app/ui/index.html`
658
   - `soc-integrator/app/ui/index.html`
659
   - `soc-integrator/app/ui/assets/app.js`
659
   - `soc-integrator/app/ui/assets/app.js`
666
   - `soc-integrator/app/repositories/mvp_repo.py`
666
   - `soc-integrator/app/repositories/mvp_repo.py`
667
 - Added GeoIP adapter integration:
667
 - Added GeoIP adapter integration:
668
   - `soc-integrator/app/adapters/geoip.py`
668
   - `soc-integrator/app/adapters/geoip.py`
669
-
670
 2. Wazuh Simulation and Dashboard Delivery
669
 2. Wazuh Simulation and Dashboard Delivery
671
-
672
 - Added Appendix-specific event generators:
670
 - Added Appendix-specific event generators:
673
   - `scripts/send-wazuh-proposal-appendix-b-events.sh`
671
   - `scripts/send-wazuh-proposal-appendix-b-events.sh`
674
   - `scripts/send-wazuh-proposal-appendix-c-events.sh`
672
   - `scripts/send-wazuh-proposal-appendix-c-events.sh`
683
 ### Wazuh Custom Rules Added (Current Active Set)
681
 ### Wazuh Custom Rules Added (Current Active Set)
684
 
682
 
685
 Active custom rules are currently defined in:
683
 Active custom rules are currently defined in:
684
+
686
 - `wazuh-docker/single-node/config/wazuh_cluster/local_rules.xml`
685
 - `wazuh-docker/single-node/config/wazuh_cluster/local_rules.xml`
687
 
686
 
688
 Rule groups/ranges implemented:
687
 Rule groups/ranges implemented:
688
+
689
 - Base and appendix classifiers:
689
 - Base and appendix classifiers:
690
   - `100200`: base marker for synthetic SOC events (`soc_mvp_test=true`)
690
   - `100200`: base marker for synthetic SOC events (`soc_mvp_test=true`)
691
   - `100210`: Appendix A classifier
691
   - `100210`: Appendix A classifier
706
   - `C3` Lateral movement/internal recon: `100521-100524`
706
   - `C3` Lateral movement/internal recon: `100521-100524`
707
 
707
 
708
 Operational note:
708
 Operational note:
709
-- Split rule files under `wazuh_cluster/rules/soc-*.xml` exist as staging artifacts in this workspace; active detection content is loaded from `local_rules.xml`.
710
 
709
 
710
+- Split rule files under `wazuh_cluster/rules/soc-*.xml` exist as staging artifacts in this workspace; active detection content is loaded from `local_rules.xml`.
711
 3. Operations and Runtime Hardening
711
 3. Operations and Runtime Hardening
712
-
713
 - Updated orchestration and runtime configuration:
712
 - Updated orchestration and runtime configuration:
714
   - `run-combined-stack.sh`
713
   - `run-combined-stack.sh`
715
   - `compose-overrides/soc-integrator.yml`
714
   - `compose-overrides/soc-integrator.yml`

+ 33 - 0
scripts/README.md

22
 ```
22
 ```
23
 
23
 
24
 Optional flag:
24
 Optional flag:
25
+
25
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
26
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
26
 
27
 
27
 Scenarios:
28
 Scenarios:
29
+
28
 - `ioc_dns`
30
 - `ioc_dns`
29
 - `ioc_ips`
31
 - `ioc_ips`
30
 - `vpn_outside_th`
32
 - `vpn_outside_th`
41
 ```
43
 ```
42
 
44
 
43
 Environment overrides:
45
 Environment overrides:
46
+
44
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
47
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
45
 - `WAZUH_SYSLOG_PORT` (default `514`)
48
 - `WAZUH_SYSLOG_PORT` (default `514`)
46
 - `WAZUH_TEST_SRC_IP`
49
 - `WAZUH_TEST_SRC_IP`
48
 - `WAZUH_TEST_USER`
51
 - `WAZUH_TEST_USER`
49
 
52
 
50
 Transport notes:
53
 Transport notes:
54
+
51
 - Uses `nc` if available.
55
 - Uses `nc` if available.
52
 - Falls back to Bash UDP redirection (`/dev/udp/host/port`) when `nc` is unavailable.
56
 - Falls back to Bash UDP redirection (`/dev/udp/host/port`) when `nc` is unavailable.
53
 
57
 
60
 ```
64
 ```
61
 
65
 
62
 Optional flag:
66
 Optional flag:
67
+
63
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
68
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
64
 
69
 
65
 Scenarios:
70
 Scenarios:
71
+
66
 - `asa_acl_deny`
72
 - `asa_acl_deny`
67
 - `asa_vpn_auth_fail`
73
 - `asa_vpn_auth_fail`
68
 - `ios_login_fail`
74
 - `ios_login_fail`
79
 ```
85
 ```
80
 
86
 
81
 Environment overrides:
87
 Environment overrides:
88
+
82
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
89
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
83
 - `WAZUH_SYSLOG_PORT` (default `514`)
90
 - `WAZUH_SYSLOG_PORT` (default `514`)
84
 - `CISCO_DEVICE_HOST`
91
 - `CISCO_DEVICE_HOST`
96
 ```
103
 ```
97
 
104
 
98
 Optional flag:
105
 Optional flag:
106
+
99
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
107
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
100
 
108
 
101
 Models:
109
 Models:
110
+
102
 - `501E`
111
 - `501E`
103
 - `80F`
112
 - `80F`
104
 - `60F`
113
 - `60F`
115
 ```
124
 ```
116
 
125
 
117
 Environment overrides:
126
 Environment overrides:
127
+
118
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
128
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
119
 - `WAZUH_SYSLOG_PORT` (default `514`)
129
 - `WAZUH_SYSLOG_PORT` (default `514`)
120
 - `FGT_SRC_IP`
130
 - `FGT_SRC_IP`
131
 ```
141
 ```
132
 
142
 
133
 Profiles:
143
 Profiles:
144
+
134
 - `normal` (mostly allowed traffic, occasional admin/vpn/webfilter)
145
 - `normal` (mostly allowed traffic, occasional admin/vpn/webfilter)
135
 - `incident` (higher IPS/webfilter/vpn anomalies)
146
 - `incident` (higher IPS/webfilter/vpn anomalies)
136
 - `mixed` (balanced baseline + anomalies)
147
 - `mixed` (balanced baseline + anomalies)
137
 
148
 
138
 Models:
149
 Models:
150
+
139
 - `501E`
151
 - `501E`
140
 - `80F`
152
 - `80F`
141
 - `60F`
153
 - `60F`
151
 ```
163
 ```
152
 
164
 
153
 Environment overrides:
165
 Environment overrides:
166
+
154
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
167
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
155
 - `WAZUH_SYSLOG_PORT` (default `514`)
168
 - `WAZUH_SYSLOG_PORT` (default `514`)
156
 - `SIM_MAX_EVENTS` (default `0`, which means run forever)
169
 - `SIM_MAX_EVENTS` (default `0`, which means run forever)
168
 ```
181
 ```
169
 
182
 
170
 Optional flag:
183
 Optional flag:
184
+
171
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
185
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
172
 
186
 
173
 Selectors:
187
 Selectors:
188
+
174
 - `all` (all Appendix A use cases)
189
 - `all` (all Appendix A use cases)
175
 - `a1`, `a2`, `a3`, `a4` (by section)
190
 - `a1`, `a2`, `a3`, `a4` (by section)
176
 - specific use case id, e.g. `A2-01`, `A3-05`, `A4-24`
191
 - specific use case id, e.g. `A2-01`, `A3-05`, `A4-24`
186
 ```
201
 ```
187
 
202
 
188
 Environment overrides:
203
 Environment overrides:
204
+
189
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
205
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
190
 - `WAZUH_SYSLOG_PORT` (default `514`)
206
 - `WAZUH_SYSLOG_PORT` (default `514`)
191
 - `EVENT_DELAY` (default `0.05`)
207
 - `EVENT_DELAY` (default `0.05`)
204
 ```
220
 ```
205
 
221
 
206
 Optional flag:
222
 Optional flag:
223
+
207
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
224
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
208
 
225
 
209
 Selectors:
226
 Selectors:
227
+
210
 - `all` (all Appendix B use cases)
228
 - `all` (all Appendix B use cases)
211
 - `b1`, `b2`, `b3` (by section)
229
 - `b1`, `b2`, `b3` (by section)
212
 - specific use case id, e.g. `B1-01`, `B2-01`, `B3-06`
230
 - specific use case id, e.g. `B1-01`, `B2-01`, `B3-06`
222
 ```
240
 ```
223
 
241
 
224
 Environment overrides:
242
 Environment overrides:
243
+
225
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
244
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
226
 - `WAZUH_SYSLOG_PORT` (default `514`)
245
 - `WAZUH_SYSLOG_PORT` (default `514`)
227
 - `EVENT_DELAY` (default `0.05`)
246
 - `EVENT_DELAY` (default `0.05`)
239
 ```
258
 ```
240
 
259
 
241
 Optional flag:
260
 Optional flag:
261
+
242
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
262
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
243
 
263
 
244
 Selectors:
264
 Selectors:
265
+
245
 - `all` (all Appendix C use cases)
266
 - `all` (all Appendix C use cases)
246
 - `c1`, `c2`, `c3` (by section)
267
 - `c1`, `c2`, `c3` (by section)
247
 - specific use case id, e.g. `C1-01`, `C2-03`, `C3-04`
268
 - specific use case id, e.g. `C1-01`, `C2-03`, `C3-04`
257
 ```
278
 ```
258
 
279
 
259
 Environment overrides:
280
 Environment overrides:
281
+
260
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
282
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
261
 - `WAZUH_SYSLOG_PORT` (default `514`)
283
 - `WAZUH_SYSLOG_PORT` (default `514`)
262
 - `EVENT_DELAY` (default `0.05`)
284
 - `EVENT_DELAY` (default `0.05`)
273
 ```
295
 ```
274
 
296
 
275
 Optional flag:
297
 Optional flag:
298
+
276
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
299
 - `--forever` (ignore `count` and run continuously until Ctrl+C)
277
 
300
 
278
 Platforms:
301
 Platforms:
302
+
279
 - `windows`
303
 - `windows`
280
 - `mac`
304
 - `mac`
281
 - `linux`
305
 - `linux`
282
 - `all`
306
 - `all`
283
 
307
 
284
 Scenarios:
308
 Scenarios:
309
+
285
 - `auth`
310
 - `auth`
286
 - `process`
311
 - `process`
287
 - `persistence`
312
 - `persistence`
299
 ```
324
 ```
300
 
325
 
301
 Environment overrides:
326
 Environment overrides:
327
+
302
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
328
 - `WAZUH_SYSLOG_HOST` (default `127.0.0.1`)
303
 - `WAZUH_SYSLOG_PORT` (default `514`)
329
 - `WAZUH_SYSLOG_PORT` (default `514`)
304
 - `DRY_RUN` (default `0`)
330
 - `DRY_RUN` (default `0`)
328
 ```
354
 ```
329
 
355
 
330
 This creates:
356
 This creates:
357
+
331
 - `MVP - IOC Enrichment and Case Routing`
358
 - `MVP - IOC Enrichment and Case Routing`
332
 - `MVP - VPN Geo Anomaly Triage`
359
 - `MVP - VPN Geo Anomaly Triage`
333
 
360
 
361
 Dashboard saved objects are stored in `scripts/events/*.ndjson`.
388
 Dashboard saved objects are stored in `scripts/events/*.ndjson`.
362
 
389
 
363
 - `scripts/events/wazuh-fortigate-sim-dashboard.ndjson`
390
 - `scripts/events/wazuh-fortigate-sim-dashboard.ndjson`
391
+  
364
   - Title: `SOC FortiGate Simulation Overview`
392
   - Title: `SOC FortiGate Simulation Overview`
365
   - Purpose: FortiGate simulation visibility (events over time, top devices, top event types, severity).
393
   - Purpose: FortiGate simulation visibility (events over time, top devices, top event types, severity).
366
   - Typical data source: `scripts/send-wazuh-fortigate-test-events.sh`
394
   - Typical data source: `scripts/send-wazuh-fortigate-test-events.sh`
367
 
395
 
368
 - `scripts/events/wazuh-client-agents-dashboard.ndjson`
396
 - `scripts/events/wazuh-client-agents-dashboard.ndjson`
397
+  
369
   - Title: `SOC Client Agent Simulation Overview`
398
   - Title: `SOC Client Agent Simulation Overview`
370
   - Purpose: Endpoint simulation visibility for Windows/macOS/Linux agent logs.
399
   - Purpose: Endpoint simulation visibility for Windows/macOS/Linux agent logs.
371
   - Typical data source: `scripts/send-wazuh-endpoint-agent-test-events.sh`
400
   - Typical data source: `scripts/send-wazuh-endpoint-agent-test-events.sh`
372
 
401
 
373
 - `scripts/events/wazuh-proposal-required-dashboard.ndjson`
402
 - `scripts/events/wazuh-proposal-required-dashboard.ndjson`
403
+  
374
   - Title: `SOC Proposal Required Logs Overview`
404
   - Title: `SOC Proposal Required Logs Overview`
375
   - Purpose: Appendix A required-scope logs (A1-A4).
405
   - Purpose: Appendix A required-scope logs (A1-A4).
376
   - Typical data source: `scripts/send-wazuh-proposal-required-events.sh`
406
   - Typical data source: `scripts/send-wazuh-proposal-required-events.sh`
377
 
407
 
378
 - `scripts/events/wazuh-proposal-appendix-ab-dashboard.ndjson`
408
 - `scripts/events/wazuh-proposal-appendix-ab-dashboard.ndjson`
409
+  
379
   - Title: `SOC Proposal Appendix A+B Overview`
410
   - Title: `SOC Proposal Appendix A+B Overview`
380
   - Purpose: Combined Appendix A and B overview, including use-case table.
411
   - Purpose: Combined Appendix A and B overview, including use-case table.
381
   - Typical data sources:
412
   - Typical data sources:
383
     - `scripts/send-wazuh-proposal-appendix-b-events.sh`
414
     - `scripts/send-wazuh-proposal-appendix-b-events.sh`
384
 
415
 
385
 - `scripts/events/wazuh-proposal-appendix-c-dashboard.ndjson`
416
 - `scripts/events/wazuh-proposal-appendix-c-dashboard.ndjson`
417
+  
386
   - Title: `SOC Proposal Appendix C Overview`
418
   - Title: `SOC Proposal Appendix C Overview`
387
   - Purpose: Appendix C MVP scope visibility (currently C1-C3 coverage).
419
   - Purpose: Appendix C MVP scope visibility (currently C1-C3 coverage).
388
   - Typical data source: `scripts/send-wazuh-proposal-appendix-c-events.sh`
420
   - Typical data source: `scripts/send-wazuh-proposal-appendix-c-events.sh`
389
 
421
 
390
 - `scripts/events/wazuh-proposal-custom-rules-dashboard.ndjson`
422
 - `scripts/events/wazuh-proposal-custom-rules-dashboard.ndjson`
423
+  
391
   - Title: `SOC Proposal Custom Rules Overview`
424
   - Title: `SOC Proposal Custom Rules Overview`
392
   - Purpose: Monitor custom proposal rules (e.g., 1003xx/1004xx families), severity, and top descriptions.
425
   - Purpose: Monitor custom proposal rules (e.g., 1003xx/1004xx families), severity, and top descriptions.
393
   - Typical data source: Any simulation script that triggers proposal custom rules.
426
   - Typical data source: Any simulation script that triggers proposal custom rules.