Hunting APT TTPs and LOLBAS Operations - Playbook
Overview
This playbook is designed for cyber investigators using Microsoft Defender for Endpoint (MDE) and Kusto Query Language (KQL) to hunt for tactics, techniques, and procedures (TTPs) associated with APT groups (e.g., APT41) and Living Off the Land Binaries and Scripts (LOLBAS). It draws from MITRE ATT&CK research and observed behaviours involving discovery, lateral movement, credential access, and data collection.
The Playbook Focuses On:
Detection Queries: KQL queries for MDE to identify suspicious activities.
Investigation Steps: Contextual guidance on interpreting results and pivoting.
Response Actions: Recommendations for containment and remediation.
Data Sources: Primarily DeviceProcessEvents, DeviceFileEvents, and DeviceNetworkEvents in MDE.
Assume administrative access to MDE for running advanced hunting queries. Run queries over a relevant time frame (e.g., last 30 days) and correlate with MITRE ATT&CK IDs (e.g., T1016 for Network Service Discovery).
Prerequisites
Enable advanced logging in Windows Event Viewer (e.g., ESENT for NTDS.dit events).
Configure SACLs on sensitive files, such as ntds, dit, for access auditing.
Monitor for anomalous processes via Sysmon or MDE.
Playbook Structure
Organised by key tools/commands observed in APT operations.
For each:
Description: TTP context and MITRE IDs.
KQL Queries: Adapted from provided MDE examples.
Investigation Tips: How to analyse results.
Mitigation: Preventive measures.
1. Initial Access & Execution: File Downloads
Certutil
Tactic: Execution (TA0002) / Ingress Tool Transfer (TA0011) Description: Used for downloading payloads (e.g., Cobalt Strike BEACON) via URL cache. MITRE: T1105 (Ingress Tool Transfer), T1016 (System Network Configuration Discovery).
KQL Query:
OR
Investigation Tips: Certutil Initiating External Network Connections.
Looks for certutil being used to make outbound connections, indicating a potential file download or data staging.
Check DestinationPort in network events (e.g., 80, 443).
Pivot to IP addresses like 91.208.184.78.
Correlate with file downloads (e.g., 2.exe MD5: 3e856162c36b532925c8226b4ed3481c).
Mitigation: Block certutil outbound connections via AppLocker; monitor for anomalous network initiations.
2. Discovery & Enumeration
Dnscmd
Description: Enumerates DNS records and zones for environment discovery. MITRE: T1016 (System Network Configuration Discovery), T1069.002 (Permission Groups Discovery). Enumerates network topology [T1016] and Active Directory structure [T1069.002] via commands like /enumrecords and /enumzones.
KQL Query:
OR
Investigation Tips: Broad Reconnaissance Command Execution
This query targets a wide array of discovery commands, including those used to identify network settings, system details, and domain structure.
To detect outliers, look for commands targeting redacted zones.
Use stats to detect outliers in process counts.
Mitigation: Restrict dnscmd execution to admins; audit DNS queries.
3. Ldifde
Description: Exports AD data for enumeration. MITRE: T1069.001 (Local Groups), T1082 (System Information Discovery).
KQL Query:
Investigation Tips:
Scan for exported files in C:\Windows\Temp.
Correlate with net group commands. Mitigation:
Monitor file creations in Temp directories.
4. Net User/Group/Use
Description: Enumerates local and domain groups/admins.
MITRE: T1069.002 (Permission Groups Discovery).
KQL Query:
OR
Investigation Tips:
Identify unusual user contexts (e.g., non-admin).
Pivot to lateral movement indicators.
Mitigation: Audit net.exe usage; restrict to privileged accounts.
5. Netsh
Description: Shows firewall configs and sets up port proxies for forwarding. MITRE: T1090 (Proxy), T1016 (System Network Configuration Discovery).
KQL Queries:
Firewall Enumeration:
Port Proxy Addition:
Investigation Tips:
Check registry: HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp.
Review firewall logs for unauthorised rules.
Mitigation: Audit registry changes; limit portproxy usage.
6. Nltest
Description: Queries domain trusts and DCs. MITRE: T1482 (Domain Trust Discovery).
KQL Queries:
Basic Execution:
Recon Commands:
Investigation Tips:
Look for /server:/query patterns.
Correlate with domain admin queries.
Mitigation: Restrict nltest to domain admins.
7. PowerShell
Description: Queries event logs for logons. MITRE: T1059.001 (PowerShell), T1033 (System Owner/User Discovery).
KQL Query:
Investigation Tips:
Check for failed logons (Event ID 4625), followed by successful logons.
Look for time-and-distance anomalies in logons.
Mitigation: Constrain PowerShell via AppLocker; enable script block logging.
8. Reg Query/Save
Description: Dumps registry hives for credentials. MITRE: T1003 (OS Credential Dumping), T1555 (Credentials from Password Stores).
KQL Queries:
Save Hives:
Query Software:
Investigation Tips:
Scan for saved files like ss.dat, sy.dat.
Pivot to tools like Mimikatz.
Mitigation: Audit registry access; use LSA protection.
9. Systeminfo, Tasklist, Wevtutil
Description: Gathers system info, processes, and event logs. MITRE: T1082 (System Information Discovery).
KQL Query (Combined Enumeration):
Investigation Tips:
Correlate with other recon commands.
Mitigation: Monitor for batch executions.
10. WMI/WMIC
Description: Queries logical disks; executes remote commands. MITRE: T1047 (Windows Management Instrumentation), T1082.
KQL Query:
Investigation Tips:
Enable WMI tracing for user attribution.
Mitigation: Restrict WMI via GPO.
11. Ntdsutil
Description: Dumps NTDS.dit for AD credentials. MITRE: T1003.003 (NTDS).
KQL Queries:
Shadow Copy Creation:
NTDS Dump:
File Events:
Investigation Tips:
Check ESENT events (IDs 216, 325-327) for ntds.dit references.
Look for folders like \Active Directory, \registry.
If dumped, assume domain compromise; follow eviction guidance.
Mitigation: Harden DCs; audit ntdsutil.exe; block tools like Secretsdump.py.
12. Impacket
Description: Executes commands via WMI, outputs to ADMIN$ with timestamps. MITRE: T1047.
KQL Query:
Investigation Tips:
Parse timestamps (e.g., __1684956600.123456) for execution time.
Check Security Event ID 5145 for ADMIN$ access.
Mitigation: Block Impacket indicators; monitor WMI exec.
13. General Enumeration Commands
Description: Broad recon across the network, AD, and system. MITRE: T1016, T1069, T1082.
KQL Query:
Investigation Tips:
Use eventstats for outlier process counts.
Correlate with user agents like "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0".
Mitigation: Implement network segmentation.
14. Credential Theft
Description: Targets SSH keys, Firefox profiles, and the registry for VNC/PuTTY. MITRE: T1555, T1003. KQL Query:
Investigation Tips:
Scan for Mimikatz indicators.
Mitigation: Use Credential Guard; encrypt sensitive stores.
15. Additional Commands (7z, RAR, etc.)
Description: Compresses data for exfil. MITRE: T1560 (Archive Collected Data).
KQL Query:
Investigation Tips:
Look for hidden PowerShell starts.
Mitigation: Block archiving in Temp.
16. RUNDLL32
Description: Proxy for malicious payloads, LSASS dumps. MITRE: T1218.011 (Signed Binary Proxy Execution), T1003.001 (LSASS Memory).
KQL Query:
Investigation Tips:
Check for injections into explorer.exe.
Mitigation: Monitor DLL loads.
17. Schtasks
Description: Creates tasks for persistence/recon. MITRE: T1053.005 (Scheduled Task).
KQL Query:
Investigation Tips:
Filter for LOLBAS in tasks (e.g., calc.exe).
Mitigation: Audit task creations; restrict via GPO.
IOCs
File Hashes (SHA256):
f4dd44bc19c19056794d29151a5b1bb76afd502388622e24c863a8494af147dd
ef09b8ff86c276e9b475a6ae6b54f08ed77e09e169f7fc0872eb1d427ee27d31
(Full list in content; use for alerts)
File Names: cisco_up.exe, cl64.exe, vm3dservice.exe, etc.
Paths: C:\Users\Public\Appfile, C:\Perflogs, C:\Windows\Temp.
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0
C2 Ports: 80880, 8443, 8043, 800, 10443.
Response Actions
Isolate Affected Hosts: Use MDE isolation.
Credential Reset: If NTDS dumped, reset all domain creds.
Eviction: Follow CISA guidance for actor removal.
Enhance Monitoring: Add Sigma rules to SIEM; use D3FEND for visualisation.
Data Sources and Analytics
Command Execution: DeviceProcessEvents | where EventId in (4688, 1, 800).
File Access: DeviceFileEvents | where AccessList contains "%%4416" (read) or "%%4417" (write).
Analytic Example (Suspicious NTDS Access):
Last updated