Install
openclaw skills install vt-hash-intelInstantly check if a file, URL, domain, or IP is malicious using VirusTotal. Paste any MD5/SHA1/SHA256 hash, URL, domain name, or IP address into the chat an...
openclaw skills install vt-hash-intelCheck any IOC (Indicator of Compromise) against VirusTotal's 70+ security engines. Supports four IOC types:
| Type | Example | VT Endpoint |
|---|---|---|
| Hash (MD5/SHA1/SHA256) | 44d88612fea8a8f36de82e1278abb02f | /files/{hash} |
| URL | https://malicious-site.com/payload | /urls/{id} |
| Domain | evil-domain.com | /domains/{domain} |
| IP Address | 1.2.3.4 | /ip_addresses/{ip} |
VT_API_KEY environment variable must be set. Free key: https://www.virustotal.com/gui/my-apikey
The script auto-detects IOC type:
http:// or https://1.2.3.4evil.com)The script also handles defanged IOCs automatically:
hxxp:// → http://hXXp:// → http://evil[.]com → evil.com1[.]2[.]3[.]4 → 1.2.3.4SKILL_DIR="$(dirname "$(find /root/.openclaw -name 'SKILL.md' -path '*/vt-hash-intel/*' 2>/dev/null | head -1)")"
# Single IOC (auto-detect type)
python3 "$SKILL_DIR/scripts/vt_lookup.py" <ioc>
# Mixed batch (hashes + URLs + domains + IPs together)
python3 "$SKILL_DIR/scripts/vt_lookup.py" <hash> <url> <domain> <ip>
# Force type if auto-detection is wrong
python3 "$SKILL_DIR/scripts/vt_lookup.py" --type domain example.com
The JSON output always contains these common fields:
ioc: the queried valueioc_type: "hash" | "url" | "domain" | "ip"detection_ratio: e.g. "45/72"threat_level: "clean" | "low" | "medium" | "high"threat_emoji: ✅ | ⚠️ | 🟠 | 🔴detections: array of engines that flagged itreputation: VT community reputation scorevt_link: direct link to the VT reporterror: non-null if something went wrongHash-specific fields: sha256, md5, sha1, file_name, file_type, file_size_human, threat_label, popular_threat_name, crowdsourced_yara, sandbox_verdicts, sigma_rules
URL-specific fields: url, final_url, title, categories
Domain-specific fields: registrar, creation_date, dns_records, categories, popularity_ranks
IP-specific fields: asn, as_owner, country, network
IMPORTANT: Always present full contextual analysis regardless of threat level. Even when an IOC is "clean" (0 detections), the contextual information is extremely valuable for security analysis. A clean VT result does NOT mean an IOC is safe — it may be too new, targeted, or simply not yet submitted.
For hashes — present:
For URLs — present:
For domains — always present these even if clean:
For IPs — always present these even if clean:
Threat level classification (same for all types):
| Malicious Detections | Level | Emoji |
|---|---|---|
| 0 | clean | ✅ |
| 1–5 | low | ⚠️ |
| 6–15 | medium | 🟠 |
| 16+ | high | 🔴 |
Always provide actionable recommendations based on threat level AND context:
For batch results with mixed types, present a summary table first (IOC | type | verdict | detection ratio | key finding), then detailed reports for each item.
| Error | Cause | Response |
|---|---|---|
NotFoundError | IOC not in VT DB | "Not found in VT. This does NOT mean it's safe." |
AuthenticationError | Bad/missing API key | "Check VT_API_KEY in your .env file." |
QuotaExceededError | Rate limit hit | "Rate limited. Wait and retry." |
UnrecognizedIOC | Cannot detect type | "Cannot identify this IOC type. Try --type flag." |
ConnectionError | Network issue | "Cannot reach VT API. Check network." |
User: 帮我查一下这个hash 44d88612fea8a8f36de82e1278abb02f Agent: Detects MD5 hash → runs lookup → presents file threat report.
User: Check this URL: https://suspicious-site.com/download.exe Agent: Detects URL → runs lookup → presents URL analysis with categories and detections.
User: 这个域名安全吗?evil-domain.com Agent: Detects domain → runs lookup → presents domain report with DNS, WHOIS, and detections.
User: 查一下这些IOC: 44d88612fea8a8f36de82e1278abb02f hxxps://bad-site[.]com/malware evil.com 1.2.3.4 Agent: Detects mixed types → runs batch lookup → presents summary table then individual reports sorted by severity.