Detecting Lateral Movement With Zeek
Overview
Cybersecurity skill for detecting lateral movement with zeek. Follows industry best practices and security standards.
When to Use
Trigger phrases:
"detecting lateral movement with zeek"
"Detect lateral movement in network traffic using Zeek (formerly Bro) log analysi"
Hunting for lateral movement after an initial compromise indicator is found on one endpoint
Investigating suspected NTLM account spray or Pass-the-Ticket attacks across the internal network
Monitoring SMB traffic for unauthorized file transfers to admin shares (C$, ADMIN$, IPC$)
Detecting remote service execution via DCE/RPC (PsExec, schtasks, WMI lateral patterns)
Building alerting rules for internal network anomalies in a Zeek-based NSMP deployment
Performing post-incident timeline reconstruction using Zeek logs as a network-level evidence source
Do not use as a standalone detection mechanism. Zeek sees network traffic only; combine with endpoint telemetry (Sysmon, EDR) for full visibility. Encrypted SMB3 traffic may limit Zeek's visibility into file-level details.
When NOT to Use
- When you lack proper authorization for testing
- For production systems without change management
- When the task requires legal or compliance expertise beyond technical scope
Prerequisites
- Zeek 6.0+ deployed on a network tap or SPAN port monitoring internal VLAN traffic
- Zeek SMB analyzer enabled (loaded by default:
@load base/protocols/smb)
- Zeek DCE/RPC analyzer enabled (
@load base/protocols/dce-rpc)
- Zeek Kerberos analyzer enabled (
@load base/protocols/krb)
- Python 3.8+ (standard library only)
- Access to Zeek log directory (default:
/opt/zeek/logs/current/)
- Familiarity with Zeek TSV log format (fields separated by
\t, header lines prefixed with #)
Workflow
# Example: IOC detection
import re
IOC_PATTERNS = {
"ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",
"domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",
"hash_md5": r"\b[a-f0-9]{32}\b",
"hash_sha256": r"\b[a-f0-9]{64}\b",
}
def extract_iocs(text: str) -> dict:
return {k: re.findall(v, text) for k, v in IOC_PATTERNS.items()}
- Define Detection Scope — Identify the specific lateral movement techniques or indicators to hunt. Map to MITRE ATT&CK tactics/techniques where applicable.
- Collect Baseline Data — Gather historical logs and establish normal behavior patterns for lateral movement.
- Build Detection Queries — Write zeek queries targeting lateral movement indicators. Use platform-specific query language for optimal performance.
- Execute Hunts — Run queries against the collected data, starting with broad filters and narrowing down.
- Triage Results — Investigate alerts, filter false positives, and validate findings against known-good behavior.
- Document Findings — Record confirmed detections, IOCs, and affected systems. Update detection rules based on findings.
Tools
- zeek — Primary tool for this skill
- SIEM Platform — Central log aggregation and query execution
- Sigma Rules — Vendor-agnostic detection rule format
- MITRE ATT&CK Navigator — Technique mapping and coverage analysis
Process
- Reconnaissance — Gather target information, identify attack surface, enumerate services
- Analysis/Exploitation — Execute the technique, analyze results, document findings
- Reporting — Document IOCs, write findings, provide remediation recommendations
Verification
Anti-Rationalization Table
| Rationalization |
Reality |
| "We are too small to be targeted" |
Automated attacks target everyone. Size does not matter. |
| "Security slows us down" |
A breach slows you down 100x more. Build security in from the start. |
| "We will fix it after launch" |
Vulnerabilities in production are exploited within hours. Fix before deploy. |
1---2name: detecting-lateral-movement-with-zeek3description: Use when detect lateral movement in network traffic using Zeek (formerly Bro) log analysis. Parses conn.log, smb_mapping.log, smb_files.log, dce_rpc.log, kerberos.log, and ntlm.log to identify SMB file transfers, NTLM account spray activity, remote service execution, and anomalous internal connections. . Use when working with detecting lateral movement with zeek.4license: Apache-2.05---67# Detecting Lateral Movement With Zeek89## Overview1011Cybersecurity skill for detecting lateral movement with zeek. Follows industry best practices and security standards.1213## When to Use14**Trigger phrases:**15- "detecting lateral movement with zeek"16- "Detect lateral movement in network traffic using Zeek (formerly Bro) log analysi"171819- Hunting for lateral movement after an initial compromise indicator is found on one endpoint20- Investigating suspected NTLM account spray or Pass-the-Ticket attacks across the internal network21- Monitoring SMB traffic for unauthorized file transfers to admin shares (C$, ADMIN$, IPC$)22- Detecting remote service execution via DCE/RPC (PsExec, schtasks, WMI lateral patterns)23- Building alerting rules for internal network anomalies in a Zeek-based NSMP deployment24- Performing post-incident timeline reconstruction using Zeek logs as a network-level evidence source2526**Do not use** as a standalone detection mechanism. Zeek sees network traffic only; combine with endpoint telemetry (Sysmon, EDR) for full visibility. Encrypted SMB3 traffic may limit Zeek's visibility into file-level details.272829## When NOT to Use3031- When you lack proper authorization for testing32- For production systems without change management33- When the task requires legal or compliance expertise beyond technical scope343536## Prerequisites3738- Zeek 6.0+ deployed on a network tap or SPAN port monitoring internal VLAN traffic39- Zeek SMB analyzer enabled (loaded by default: `@load base/protocols/smb`)40- Zeek DCE/RPC analyzer enabled (`@load base/protocols/dce-rpc`)41- Zeek Kerberos analyzer enabled (`@load base/protocols/krb`)42- Python 3.8+ (standard library only)43- Access to Zeek log directory (default: `/opt/zeek/logs/current/`)44- Familiarity with Zeek TSV log format (fields separated by `\t`, header lines prefixed with `#`)4546## Workflow4748```python49# Example: IOC detection50import re5152IOC_PATTERNS = {53 "ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",54 "domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",55 "hash_md5": r"\b[a-f0-9]{32}\b",56 "hash_sha256": r"\b[a-f0-9]{64}\b",57}5859def extract_iocs(text: str) -> dict:60 return {k: re.findall(v, text) for k, v in IOC_PATTERNS.items()}61```62631. **Define Detection Scope** — Identify the specific lateral movement techniques or indicators to hunt. Map to MITRE ATT&CK tactics/techniques where applicable.642. **Collect Baseline Data** — Gather historical logs and establish normal behavior patterns for lateral movement.653. **Build Detection Queries** — Write zeek queries targeting lateral movement indicators. Use platform-specific query language for optimal performance.664. **Execute Hunts** — Run queries against the collected data, starting with broad filters and narrowing down.675. **Triage Results** — Investigate alerts, filter false positives, and validate findings against known-good behavior.686. **Document Findings** — Record confirmed detections, IOCs, and affected systems. Update detection rules based on findings.6970## Tools7172- **zeek** — Primary tool for this skill73- **SIEM Platform** — Central log aggregation and query execution74- **Sigma Rules** — Vendor-agnostic detection rule format75- **MITRE ATT&CK Navigator** — Technique mapping and coverage analysis767778## Process79801. **Reconnaissance** — Gather target information, identify attack surface, enumerate services811. **Analysis/Exploitation** — Execute the technique, analyze results, document findings821. **Reporting** — Document IOCs, write findings, provide remediation recommendations8384## Verification8586- [ ] All lateral movement procedures executed completely and documented87- [ ] Findings validated against multiple data sources88- [ ] False positives identified and filtered89- [ ] Results documented with evidence and timestamps90- [ ] Recommendations provided with risk-based prioritization9192## Anti-Rationalization Table9394| Rationalization | Reality |95|---|---|96| "We are too small to be targeted" | Automated attacks target everyone. Size does not matter. |97| "Security slows us down" | A breach slows you down 100x more. Build security in from the start. |98| "We will fix it after launch" | Vulnerabilities in production are exploited within hours. Fix before deploy. |