The gap between “we received threat intelligence” and “we now detect that threat” is closed by systematic TTP extraction and collaborative rule development.
TTP Extraction Worksheet
REPORT: Cobalt Strike Campaign via PowerShell + Scheduled Task
SOURCE: [Vendor report URL]
DATE EXTRACTED: 2024-09-01
EXTRACTED BY: [Analyst name]
┌─────────────────────────────────┬────────────────┬──────────────────────────┬─────────────────────────────────┬──────────────┬──────────┐
│ Behavior │ ATT&CK ID │ Data Source Required │ Observable (Log field: value) │ Coverage? │ Priority │
├─────────────────────────────────┼────────────────┼──────────────────────────┼─────────────────────────────────┼──────────────┼──────────┤
│ PowerShell downloads │ T1059.001 │ Process Creation │ CommandLine contains: │ Partial │ HIGH │
│ from pastebin │ T1105 │ Network Traffic │ 'pastebin.com' AND │ │ │
│ │ │ │ Image='powershell.exe' │ │ │
├─────────────────────────────────┼────────────────┼──────────────────────────┼─────────────────────────────────┼──────────────┼──────────┤
│ Scheduled task created │ T1053.005 │ Process Creation │ CommandLine contains: │ YES │ LOW │
│ via schtasks.exe │ │ Windows Event ID 4698 │ 'schtasks' + '/create' │ │ │
├─────────────────────────────────┼────────────────┼──────────────────────────┼─────────────────────────────────┼──────────────┼──────────┤
│ regsvr32.exe loads │ T1218.010 │ Process Creation │ Image='regsvr32.exe' │ NO │ HIGH │
│ Cobalt Strike DLL │ │ │ CommandLine contains '.dll' │ │ │
│ │ │ │ ParentImage='svchost.exe' │ │ │
├─────────────────────────────────┼────────────────┼──────────────────────────┼─────────────────────────────────┼──────────────┼──────────┤
│ Beacon C2 to │ T1071.001 │ Network Traffic │ DNS query: updates-cdn.net │ NO │ HIGH │
│ updates-cdn[.]net:443 │ T1568 │ DNS Logs │ Network dst: updates-cdn.net │ │ │
└─────────────────────────────────┴────────────────┴──────────────────────────┴─────────────────────────────────┴──────────────┴──────────┘
HIGHEST PRIORITY GAPS: regsvr32 loading DLLs (T1218.010), C2 domain (T1071.001)
HANDOFF TO: Detection Engineering team — [Name] — by [Date]
Sigma Rule from CTI
title: Suspicious regsvr32 DLL Execution - Cobalt Strike Loader
status: experimental
description: |
Detects regsvr32.exe loading a DLL file, a technique used by Cobalt Strike
loaders delivered via scheduled tasks. Based on observed campaign activity
targeting financial sector organizations.
references:
- https://[vendor-report-url]
- https://attack.mitre.org/techniques/T1218/010/
author: CTI Team
date: 2024-09-01
tags:
- attack.defense_evasion
- attack.t1218.010
- attack.execution
- attack.t1059
logsource:
category: process_creation
product: windows
detection:
selection_regsvr32:
Image|endswith: '\regsvr32.exe'
CommandLine|contains:
- '.dll'
- '/s'
selection_suspicious_parent:
ParentImage|endswith:
- '\svchost.exe'
- '\taskeng.exe'
- '\wmiprvse.exe'
- '\powershell.exe'
filter_legitimate:
CommandLine|contains:
# Known legitimate regsvr32 use cases
- 'scrobj.dll' # COM script registration (may also be malicious)
- 'Microsoft.Build' # Legitimate build system DLLs
condition: selection_regsvr32 and selection_suspicious_parent and not filter_legitimate
falsepositives:
- Legitimate software installation using regsvr32 from scheduled task runners
- Software distribution tools (SCCM, Intune) that use scheduled tasks + regsvr32
level: high
ATT&CK Coverage Heatmap — Using DeTT&CT
# DeTT&CT workflow for coverage assessment
# 1. Create data source YAML (what logs you collect)
# Edit datasources.yaml with your log collection status
# 2. Create technique YAML (detection quality per technique)
# Edit techniques.yaml with detection scores
# Generate coverage layer for ATT&CK Navigator
python3 dettect.py ds -fd datasources.yaml -l
# Outputs: layer-datasources-*.json — import to ATT&CK Navigator
python3 dettect.py tc -ft techniques.yaml -l
# Outputs: layer-techniques-*.json — shows detection quality per technique
# Generate ATT&CK Navigator comparison:
# Layer 1: Threat actor techniques (from CTI: APT29 ATT&CK layer)
# Layer 2: Your coverage layer (from DeTT&CT)
# Overlay = gaps: techniques used by APT29 where your coverage = 0
# The gap list becomes your detection engineering backlog
# Priority = technique frequency in threat actor layer
# (techniques used by multiple relevant actors = highest priority)