mirror of
https://github.com/SHOGGOTH-SECTOR/sica-fondt.git
synced 2026-08-01 08:30:20 +00:00
Place useful parts of the surrounding repos into sica-fondt by layer, per the
body model (Ada = membrane; brain/endocrine/capabilities/knowledge non-Ada):
- brain/ LLM reasoning + providers (dapr, hermes, MoMoA)
- capabilities/ REPRAG sidecars: hermes tools/skills, dapr tools, parallel
dispatch, A51 channels, and the OSINT cluster
- knowledge/ LORAG corpus: 754 cyber-skills, agency personas, secure-coding,
MITRE ATT&CK data
- reference/ defensive threat-reference (C3, shhbruh doc) + AdaYaml parser
License handling: AGPL sources (worldosint, advanced_evolution, mercury,
Reticulum) and GPL DeTTECT are SPEC-only clean-room/port descriptions — no
copyleft code copied. MIT/Apache/data parts copied as working trees.
Safety: shhbruh escape/persistence material and C3 covert-C2 kept as reference
only, not wired into the running organism. See CONSOLIDATION.md.
https://claude.ai/code/session_01UehUqEXXJJCsHoA4voCU5c
164 lines
7.0 KiB
Markdown
164 lines
7.0 KiB
Markdown
---
|
||
name: analyzing-indicators-of-compromise
|
||
description: 'Analyzes indicators of compromise (IOCs) including IP addresses, domains, file hashes, URLs, and email artifacts
|
||
to determine maliciousness confidence, campaign attribution, and blocking priority. Use when triaging IOCs from phishing
|
||
emails, security alerts, or external threat feeds; enriching raw IOCs with multi-source intelligence; or making block/monitor/whitelist
|
||
decisions. Activates for requests involving VirusTotal, AbuseIPDB, MalwareBazaar, MISP, or IOC enrichment pipelines.
|
||
|
||
'
|
||
domain: cybersecurity
|
||
subdomain: threat-intelligence
|
||
tags:
|
||
- IOC
|
||
- VirusTotal
|
||
- AbuseIPDB
|
||
- MalwareBazaar
|
||
- MISP
|
||
- threat-intelligence
|
||
- STIX
|
||
- NIST-CSF
|
||
version: 1.0.0
|
||
author: mahipal
|
||
license: Apache-2.0
|
||
atlas_techniques:
|
||
- AML.T0052
|
||
nist_csf:
|
||
- ID.RA-01
|
||
- ID.RA-05
|
||
- DE.CM-01
|
||
- DE.AE-02
|
||
---
|
||
# Analyzing Indicators of Compromise
|
||
|
||
## When to Use
|
||
|
||
Use this skill when:
|
||
- A phishing email or alert generates IOCs (URLs, IP addresses, file hashes) requiring rapid triage
|
||
- Automated feeds deliver bulk IOCs that need confidence scoring before ingestion into blocking controls
|
||
- An incident investigation requires contextual enrichment of observed network artifacts
|
||
|
||
**Do not use** this skill in isolation for high-stakes blocking decisions — always combine automated enrichment with analyst judgment, especially for shared infrastructure (CDNs, cloud providers).
|
||
|
||
## Prerequisites
|
||
|
||
- VirusTotal API key (free or Enterprise) for multi-AV and sandbox lookup
|
||
- AbuseIPDB API key for IP reputation checks
|
||
- MISP instance or TIP for cross-referencing against known campaigns
|
||
- Python with `requests` and `vt-py` libraries, or SOAR platform with pre-built connectors
|
||
|
||
## Workflow
|
||
|
||
### Step 1: Normalize and Classify IOC Types
|
||
|
||
Before enriching, classify each IOC:
|
||
- **IPv4/IPv6 address**: Check if RFC 1918 private (skip external enrichment), validate format
|
||
- **Domain/FQDN**: Defang for safe handling (`evil[.]com`), extract registered domain via tldextract
|
||
- **URL**: Extract domain + path separately; check for redirectors
|
||
- **File hash**: Identify hash type (MD5/SHA-1/SHA-256); prefer SHA-256 for uniqueness
|
||
- **Email address**: Split into domain (check MX/DMARC) and local part for pattern analysis
|
||
|
||
Defang IOCs in documentation (replace `.` with `[.]` and `://` with `[://]`) to prevent accidental clicks.
|
||
|
||
### Step 2: Multi-Source Enrichment
|
||
|
||
**VirusTotal (file hash, URL, IP, domain)**:
|
||
```python
|
||
import vt
|
||
|
||
client = vt.Client("YOUR_VT_API_KEY")
|
||
|
||
# File hash lookup
|
||
file_obj = client.get_object(f"/files/{sha256_hash}")
|
||
detections = file_obj.last_analysis_stats
|
||
print(f"Malicious: {detections['malicious']}/{sum(detections.values())}")
|
||
|
||
# Domain analysis
|
||
domain_obj = client.get_object(f"/domains/{domain}")
|
||
print(domain_obj.last_analysis_stats)
|
||
print(domain_obj.reputation)
|
||
client.close()
|
||
```
|
||
|
||
**AbuseIPDB (IP addresses)**:
|
||
```python
|
||
import requests
|
||
|
||
response = requests.get(
|
||
"https://api.abuseipdb.com/api/v2/check",
|
||
headers={"Key": "YOUR_KEY", "Accept": "application/json"},
|
||
params={"ipAddress": "1.2.3.4", "maxAgeInDays": 90}
|
||
)
|
||
data = response.json()["data"]
|
||
print(f"Confidence: {data['abuseConfidenceScore']}%, Reports: {data['totalReports']}")
|
||
```
|
||
|
||
**MalwareBazaar (file hashes)**:
|
||
```python
|
||
response = requests.post(
|
||
"https://mb-api.abuse.ch/api/v1/",
|
||
data={"query": "get_info", "hash": sha256_hash}
|
||
)
|
||
result = response.json()
|
||
if result["query_status"] == "ok":
|
||
print(result["data"][0]["tags"], result["data"][0]["signature"])
|
||
```
|
||
|
||
### Step 3: Contextualize with Campaign Attribution
|
||
|
||
Query MISP for existing events matching the IOC:
|
||
```python
|
||
from pymisp import PyMISP
|
||
|
||
misp = PyMISP("https://misp.example.com", "API_KEY")
|
||
results = misp.search(value="evil-domain.com", type_attribute="domain")
|
||
for event in results:
|
||
print(event["Event"]["info"], event["Event"]["threat_level_id"])
|
||
```
|
||
|
||
Check Shodan for IP context (hosting provider, open ports, banners) to identify if the IP belongs to bulletproof hosting or a legitimate cloud provider (false positive risk).
|
||
|
||
### Step 4: Assign Confidence Score and Disposition
|
||
|
||
Apply a tiered decision framework:
|
||
- **Block (High Confidence ≥ 70%)**: ≥15 AV detections on VT, AbuseIPDB score ≥70, matches known malware family or campaign
|
||
- **Monitor/Alert (Medium 40–69%)**: 5–14 AV detections, moderate AbuseIPDB score, no campaign attribution
|
||
- **Whitelist/Investigate (Low <40%)**: ≤4 AV detections, no abuse reports, legitimate service (Google, Cloudflare CDN IPs)
|
||
- **False Positive**: Legitimate business service incorrectly flagged; document and exclude from future alerts
|
||
|
||
### Step 5: Document and Distribute
|
||
|
||
Record findings in TIP/MISP with:
|
||
- All enrichment data collected (timestamps, source, score)
|
||
- Disposition decision and rationale
|
||
- Blocking actions taken (firewall, proxy, DNS sinkhole)
|
||
- Related incident ticket number
|
||
|
||
Export to STIX indicator object with confidence field set appropriately.
|
||
|
||
## Key Concepts
|
||
|
||
| Term | Definition |
|
||
|------|-----------|
|
||
| **IOC** | Indicator of Compromise — observable network or host artifact indicating potential compromise |
|
||
| **Enrichment** | Process of adding contextual data to a raw IOC from multiple intelligence sources |
|
||
| **Defanging** | Modifying IOCs (replacing `.` with `[.]`) to prevent accidental activation in documentation |
|
||
| **False Positive Rate** | Percentage of benign artifacts incorrectly flagged as malicious; critical for tuning block thresholds |
|
||
| **Sinkhole** | DNS server redirecting malicious domain lookups to a benign IP for detection without blocking traffic entirely |
|
||
| **TTL** | Time-to-live for an IOC in blocking controls; IP indicators should expire after 30 days, domains after 90 days |
|
||
|
||
## Tools & Systems
|
||
|
||
- **VirusTotal**: Multi-engine malware scanner and threat intelligence platform with 70+ AV engines, sandbox reports, and community comments
|
||
- **AbuseIPDB**: Community-maintained IP reputation database with 90-day abuse report history
|
||
- **MalwareBazaar (abuse.ch)**: Free malware hash repository with YARA rule associations and malware family tagging
|
||
- **URLScan.io**: Free URL analysis service that captures screenshots, DOM, and network requests for phishing URL triage
|
||
- **Shodan**: Internet-wide scan data providing hosting provider, open ports, and banner information for IP enrichment
|
||
|
||
## Common Pitfalls
|
||
|
||
- **Blocking shared infrastructure**: CDN IPs (Cloudflare 104.21.x.x, AWS CloudFront) may legitimately host malicious content but blocking the IP disrupts thousands of legitimate sites.
|
||
- **VT score obsession**: Low VT detection count does not mean benign — zero-day malware and custom APT tools often score 0 initially. Check sandbox behavior, MISP, and passive DNS.
|
||
- **Missing defanging**: Pasting live IOCs in emails or Confluence docs can trigger automated URL scanners or phishing tools.
|
||
- **No expiration policy**: IOCs without TTLs accumulate in blocklists indefinitely, generating false positives as infrastructure is repurposed by legitimate users.
|
||
- **Over-relying on single source**: VirusTotal aggregates AV opinions — all may be wrong or lag behind emerging malware. Use 3+ independent sources for high-stakes decisions.
|