external/anthropic-cybersecurity-skills/skills/performing-threat-landscape-assessment-for-sector/SKILL.md
Conduct a sector-specific threat landscape assessment by analyzing threat actor targeting patterns, common attack vectors, and industry-specific vulnerabilities to inform organizational risk management.
npx skillsauth add seikaikyo/dash-skills performing-threat-landscape-assessment-for-sectorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A sector-specific threat landscape assessment analyzes the cyber threat environment facing a particular industry vertical (healthcare, financial services, energy, government, manufacturing) by examining which threat actors target the sector, their preferred attack vectors and TTPs, common vulnerabilities exploited, historical incident data, and emerging threats. This produces actionable intelligence for risk management, security investment prioritization, and board-level reporting.
attackcti, requests, pandas, matplotlib librariesDifferent sectors face different threat profiles. Financial services face sophisticated nation-state actors (Lazarus Group) and cybercriminal groups focused on financial fraud. Healthcare faces ransomware groups exploiting urgency and legacy systems. Energy and critical infrastructure face nation-state groups (TEMP.Veles, Sandworm) with destructive capabilities. Government faces espionage-focused APTs (APT29, APT28, Turla).
A comprehensive assessment includes: threat actor profiling (groups targeting the sector), attack vector analysis (initial access methods observed), TTP mapping (techniques commonly used against sector), vulnerability landscape (CVEs commonly exploited), incident trend analysis (breach frequency, impact, recovery time), and emerging threats (new groups, evolving techniques, supply chain risks).
Sector-specific intelligence comes from ISACs (Information Sharing and Analysis Centers), government advisories (CISA, FBI, NSA), vendor threat reports (CrowdStrike Annual Threat Report, Mandiant M-Trends, Verizon DBIR), and academic research on sector-specific attacks.
from attackcti import attack_client
import json
class SectorThreatAssessment:
SECTOR_GROUPS = {
"financial": ["FIN7", "FIN8", "FIN11", "Carbanak", "Lazarus Group",
"Cobalt Group", "TA505", "GOLD SOUTHFIELD"],
"healthcare": ["FIN12", "Ryuk", "Conti", "Wizard Spider",
"GOLD ULRICK", "Vice Society"],
"energy": ["TEMP.Veles", "Sandworm Team", "Dragonfly",
"XENOTIME", "ERYTHRITE", "Berserk Bear"],
"government": ["APT29", "APT28", "Turla", "Gamaredon Group",
"Mustang Panda", "APT41", "Lazarus Group"],
"manufacturing": ["APT41", "TEMP.Veles", "Dragonfly",
"HEXANE", "MAGNALLIUM"],
"technology": ["APT41", "Lazarus Group", "APT10",
"HAFNIUM", "Winnti Group"],
}
def __init__(self, sector):
self.sector = sector.lower()
self.lift = attack_client()
self.groups = self.lift.get_groups()
self.assessment = {
"sector": sector,
"threat_actors": [],
"common_techniques": {},
"attack_vectors": {},
"risk_summary": {},
}
def analyze_sector_actors(self):
"""Analyze threat actors known to target this sector."""
target_groups = self.SECTOR_GROUPS.get(self.sector, [])
actor_profiles = []
for group_name in target_groups:
group = next(
(g for g in self.groups
if g.get("name", "").lower() == group_name.lower()
or group_name.lower() in [a.lower() for a in g.get("aliases", [])]),
None
)
if group:
group_id = ""
for ref in group.get("external_references", []):
if ref.get("source_name") == "mitre-attack":
group_id = ref.get("external_id", "")
break
techniques = []
if group_id:
techs = self.lift.get_techniques_used_by_group(group_id)
for t in techs:
for ref in t.get("external_references", []):
if ref.get("source_name") == "mitre-attack":
techniques.append({
"id": ref.get("external_id", ""),
"name": t.get("name", ""),
})
break
profile = {
"name": group.get("name", ""),
"aliases": group.get("aliases", []),
"description": group.get("description", "")[:300],
"attack_id": group_id,
"technique_count": len(techniques),
"techniques": techniques[:20],
}
actor_profiles.append(profile)
print(f" [+] {group.get('name')}: {len(techniques)} techniques")
self.assessment["threat_actors"] = actor_profiles
print(f"[+] Profiled {len(actor_profiles)} threat actors for {self.sector}")
return actor_profiles
def identify_common_techniques(self):
"""Find the most commonly used techniques across sector actors."""
from collections import Counter
technique_counter = Counter()
for actor in self.assessment["threat_actors"]:
for tech in actor.get("techniques", []):
technique_counter[f"{tech['id']}:{tech['name']}"] += 1
common = technique_counter.most_common(20)
self.assessment["common_techniques"] = [
{
"technique": tech.split(":")[0],
"name": tech.split(":")[1] if ":" in tech else "",
"actor_count": count,
"actors_using": [
a["name"] for a in self.assessment["threat_actors"]
if any(t["id"] == tech.split(":")[0] for t in a.get("techniques", []))
],
}
for tech, count in common
]
print(f"\n=== Top Techniques for {self.sector.upper()} ===")
for entry in self.assessment["common_techniques"][:10]:
print(f" {entry['technique']} {entry['name']}: "
f"used by {entry['actor_count']} groups")
return self.assessment["common_techniques"]
assessment = SectorThreatAssessment("financial")
assessment.analyze_sector_actors()
assessment.identify_common_techniques()
def analyze_attack_vectors(assessment):
"""Analyze initial access vectors common for the sector."""
initial_access_techniques = [
t for t in assessment.assessment["common_techniques"]
if t["technique"].startswith("T1566") or t["technique"].startswith("T1190")
or t["technique"].startswith("T1133") or t["technique"].startswith("T1078")
or t["technique"].startswith("T1195")
]
# Supplement with known sector-specific vectors
sector_vectors = {
"financial": {
"primary": ["Spearphishing (T1566)", "Exploit Public-Facing App (T1190)",
"Valid Accounts (T1078)", "Supply Chain Compromise (T1195)"],
"emerging": ["MFA Fatigue/Push Bombing", "QR Code Phishing (Quishing)",
"Business Email Compromise", "API Key Theft"],
},
"healthcare": {
"primary": ["Spearphishing (T1566)", "Exploit Public-Facing App (T1190)",
"External Remote Services (T1133)", "Valid Accounts (T1078)"],
"emerging": ["IoMT Device Exploitation", "Telehealth Platform Attacks",
"Medical Device Firmware Attacks", "Supply Chain via EHR Vendors"],
},
"energy": {
"primary": ["Spearphishing (T1566)", "Exploit Public-Facing App (T1190)",
"External Remote Services (T1133)", "Supply Chain Compromise (T1195)"],
"emerging": ["OT/ICS Protocol Exploitation", "Remote Access to SCADA",
"Engineering Workstation Compromise", "Vendor VPN Exploitation"],
},
}
vectors = sector_vectors.get(assessment.sector, {})
assessment.assessment["attack_vectors"] = vectors
return vectors
def generate_sector_report(assessment):
data = assessment.assessment
report = f"""# {data['sector'].title()} Sector Threat Landscape Assessment
Generated: {datetime.datetime.now().isoformat()}
## Executive Summary
This assessment analyzes the cyber threat landscape for the {data['sector']} sector,
identifying {len(data['threat_actors'])} active threat groups, their preferred techniques,
and recommended defensive priorities.
## Threat Actor Summary
| Actor | ATT&CK ID | Techniques | Key Focus |
|-------|-----------|------------|-----------|
"""
for actor in data["threat_actors"]:
report += (f"| {actor['name']} | {actor['attack_id']} "
f"| {actor['technique_count']} | {actor['description'][:60]}... |\n")
report += f"""
## Most Common Techniques
| Rank | Technique | Name | Groups Using |
|------|-----------|------|-------------|
"""
for i, tech in enumerate(data.get("common_techniques", [])[:15], 1):
actors = ", ".join(tech["actors_using"][:3])
report += f"| {i} | {tech['technique']} | {tech['name']} | {actors} |\n"
vectors = data.get("attack_vectors", {})
report += f"""
## Attack Vectors
### Primary Vectors
"""
for v in vectors.get("primary", []):
report += f"- {v}\n"
report += "\n### Emerging Vectors\n"
for v in vectors.get("emerging", []):
report += f"- {v}\n"
report += """
## Recommendations
1. Prioritize detections for the top 10 techniques used by sector-targeting groups
2. Conduct threat-informed red team exercises mimicking identified actors
3. Join sector ISAC for real-time threat sharing
4. Implement controls for identified initial access vectors
5. Review supply chain security posture for sector-specific risks
"""
with open(f"threat_landscape_{data['sector']}.md", "w") as f:
f.write(report)
print(f"[+] Sector report saved: threat_landscape_{data['sector']}.md")
generate_sector_report(assessment)
development
拋棄式 HTML mockup 比稿:產出 2 到 3 個設計立場不同的變體(密度 / 版式 / 強調軸,不是換色),各附取捨說明,最後給有立場的對比結論。適用:「畫個草圖」「比較 A 版 B 版」「先看方向再做」「給我看幾種做法」。要 production 元件或設計已定案時不適用。
tools
需求不明時的意圖萃取訪談:一次一題、每題附上自己的猜測、聽出「真正想要 vs 覺得應該要」,直到能預測使用者反應(約 95% 信心)才動工。適用:需求缺少對象 / 動機 / 成功標準 / 約束,或使用者點名「訪談我」「先確認一下」「我們確定嗎」。明確自足的指示、純資訊查詢、機械性操作不適用。
development
對非平凡決策啟動新鮮 context 對抗審查(找碴不背書),在修正還便宜的時候抓出錯誤方向。適用:高風險改動(production、資安敏感邏輯、不可逆操作)、不熟的程式碼、要宣稱「這樣是安全的 / 可行的」之前。機械性操作與一行修改不適用。
testing
Reference for writing and editing agent skills well — the vocabulary and principles that make a skill predictable. Consult when authoring, reviewing, or pruning a SKILL.md.