ip-investigation
Skill35 starsChanged 46 days agoMITView on GitHub
Use when a user asks to investigate, check, enrich, or characterize an IP address (IPv4 or IPv6). Chains VirusTotal, Shodan, AbuseIPDB, GreyNoise, OTX, and optionally Censys in parallel, then consolidates findings and prioritizes follow-up IOCs. Invoked by /cti-orchestrator when the target is an IP.
- Reads credentials
In this repository79 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- abuseipdb-apiSkill
- achSkill
- campaign-trackingSkill
- carding-financial-fraudSkill
- censys-apiSkill
- china-cyber-espionageSkill
- claim-extractionSkill
- confidence-levelsSkill
- control-coverage-mappingSkill
- crowdstrike-apiSkill
- cti-hyperloopSkill
- cti-orchestratorSkill
- cti-setupSkill
- darkweb-collectionSkill
- devils-advocacySkill
- domain-investigationSkill
- dprk-cyber-espionageSkill
- feedback-loopsSkill
- greynoise-apiSkill
- hacktivismSkill
- hash-investigationSkill
- horizon-scanningSkill
- indicator-pivotingSkill
- infostealersSkill
- initial-access-brokersSkill
- intelligence-sharingSkill
- intelligence-writingSkill
- ioc-enrichment-workflowSkill
- ioc-exportSkill
- iran-cyber-espionageSkill
- key-assumptions-checkSkill
- kql-writingSkill
- likelihood-languageSkill
- lookup-abuseipdbSkill
- lookup-censysSkill
- lookup-crowdstrikeSkill
- lookup-greynoiseSkill
- lookup-liberty91Skill
- lookup-mispSkill
- lookup-openctiSkill
- lookup-otxSkill
- lookup-ransomwareliveSkill
- lookup-reversinglabsSkill
- lookup-sentinelSkill
- lookup-shodanSkill
- lookup-urlscanSkill
- lookup-virustotalSkill
- malware-analysisSkill
- maturity-assessmentSkill
- mitre-attackSkill
- osint-methodologySkill
- otx-apiSkill
- phishing-social-engineeringSkill
- pir-managementSkill
- quality-controlSkill
- quality-of-information-checkSkill
- ransomware-ecosystemSkill
- reversinglabs-apiSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 36
Check if the IP is already in data/iocs/ — if yes, load existing enrichment and note age
- Very specific: line 69
If GreyNoise returns noise: true and classification: benign, AND AbuseIPDB confidence <10, this is likely mass-scanning background noise.
- Distinctive: line 157
All lookups returned "not found" → report no signal.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ip-investigation
Investigate an IP address end-to-end. Chain multiple lookup-* skills, consolidate results, prioritize follow-up IOCs, and return a rated investigation summary. You invoke skills — you don't call APIs directly.
This skill invokes: /lookup-liberty91 (first-party — run first), /lookup-virustotal, /lookup-shodan, /lookup-abuseipdb, /lookup-greynoise, /lookup-otx, optionally /lookup-censys, optionally /lookup-reversinglabs (network threat-intel + sample fan-out), optionally /lookup-crowdstrike (IOC reputation + actor/malware links), optionally /lookup-misp and/or /lookup-opencti (internal correlation), optionally /lookup-sentinel (exposure check in your own telemetry), then /source-assessment, /tlp-guide, /confidence-levels.
When to invoke
- User asks to investigate, check, or enrich an IP
- User pastes an IP and asks "what is this?" / "is this malicious?"
- Another skill hands off an IP indicator for follow-up
- IOC triage pipeline
Inputs
indicator: <IPv4 or IPv6 address>
context: <optional — why is the user asking? where did this come from?>
tlp_ceiling: <optional — CLEAR/GREEN/AMBER/AMBER+STRICT/RED, default AMBER>Procedure
1. Validate + triage (before spending API quota)
- Reject RFC 1918 / loopback / link-local / documentation-range (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24) unless the user specifically asks — these are not public infrastructure and enrichment is wasted
- Check if the IP is already in
data/iocs/— if yes, load existing enrichment and note age - Decide whether to include Censys (skip by default due to 250/month quota)
2. Parallel lookups
Invoke in parallel (agents should batch these calls):
/lookup-liberty91 ioc-lookup <value> # FIRST-PARTY, if $LIBERTY91_API_KEY is set — run first: is this already in your own platform, with what verdict, confidence and TLP?
/lookup-greynoise ip <value> # FAST — filter out noise early
/lookup-virustotal ip <value> # reputation aggregate
/lookup-abuseipdb ip <value> # abuse reports
/lookup-shodan ip <value> # infrastructure fingerprint
/lookup-otx ip <value> # community pulsesAdd to the same parallel batch if credentials are configured:
/lookup-reversinglabs ip <value> # if $REVERSINGLABS_USER is set. Network reputation from RL's malware-analysis corpus — files seen contacting this IP, RL classification. One API call, no pivot fan-out.
/lookup-crowdstrike indicator <value> # if $CROWDSTRIKE_CLIENT_ID is set. Falcon Intel view — malicious confidence, linked actors + malware families, report refs. One API call.
/lookup-misp search-attributes --value <value> # if $MISP_URL + $MISP_KEY are set. Internal correlation against your own catalogued events.
/lookup-opencti lookup <value> # if $OPENCTI_URL + $OPENCTI_TOKEN are set. Internal correlation against your OpenCTI knowledge base (observables + indicators in one call).Optionally add (escalation — separate API budget):
/lookup-censys ip <value> # ONLY if Shodan insufficient + quota available
/lookup-reversinglabs ip <value> --pivot files,domains,urls --max-results 25
# only when you want sample fan-out from the IP — each --pivot entry is a separate API call3. Short-circuit on noise
If GreyNoise returns noise: true and classification: benign, AND AbuseIPDB confidence <10, this is likely mass-scanning background noise. Summarize briefly and stop — no need to burn full analysis on it. Note: noise: true with classification: malicious is still interesting (opportunistic attacker infrastructure).
4. Consolidate
Build a unified view:
indicator: <ip>
type: ipv4 | ipv6
consolidated_verdict: malicious | suspicious | clean | benign-noise | unknown
detection_signals:
- source: virustotal
detection_ratio: <X/Y>
verdict: <...>
- source: abuseipdb
abuse_confidence: <0-100>
recent_reports: <count>
- source: greynoise
noise: <bool>
riot: <bool>
classification: <...>
infrastructure:
asn: <...>
org: <...>
country: <...>
open_ports: <[...] from shodan>
services: <top 5 from shodan>
vulnerabilities: <CVE list>
certificates: <present/absent>
community_context:
pulse_count: <from otx>
key_actors_attributed: <any pulse authors or malware families?>
pivot_candidates:
- type: domain
value: <hostname from shodan/vt>
reason: <"resolves to this IP", "shares cert", etc.>
- type: hash
value: <communicating_files from vt>
reason: <...>5. Prioritize follow-up IOCs
Rank pivot candidates by investigative value:
- Certificate matches (highest — strong infrastructure link)
- Communicating files (medium-high — active C2 signal)
- Passive DNS resolutions (medium — historical association)
- Recent WHOIS/registration overlaps (medium)
- Generic ASN/org neighbors (low)
Return the top 3-5 candidates to the invoking skill or orchestrator for optional deep-dive via /domain-investigation, /hash-investigation, or /indicator-pivoting.
5b. Exposure check — was it seen in OUR environment? (if Sentinel is configured)
If $SENTINEL_WORKSPACE_ID + app credentials are set and the verdict is malicious or suspicious, chain /lookup-sentinel to sweep the IP across the workspace's available tables (DeviceNetworkEvents, CommonSecurityLog, SigninLogs, … — that skill discovers what exists before querying). Report hits with first/last seen and affected devices/accounts; report a miss as "not observed in collected telemetry over <window>", never "not compromised". Skip for benign-noise verdicts.
6. Apply rigor
Before returning, chain:
/source-assessment— rate each lookup result (defaults in each lookup skill's frontmatter)/tlp-guide— mark the investigation output (default AMBER)/confidence-levels— score the consolidated verdict (MISP 0-100)
7. Return
title: "IP Investigation: <ip>"
tlp: AMBER
confidence: <0-100>
summary: <2-3 sentences>
verdict: <...>
detection_signals: <...>
infrastructure: <...>
community_context: <...>
pivot_candidates: <top 3-5>
source_ratings:
virustotal: B2
shodan: B2
...
investigation_date: <ISO8601>
recommended_next_steps:
- <e.g., "pivot on domain X via /domain-investigation">When to stop
- GreyNoise benign-noise short-circuit (step 3)
- All lookups returned "not found" → report no signal; don't escalate
- Clear malicious verdict with high confidence → return; leave deeper pivots to the user
Rate-limit awareness
Respect the lookup skills' own rate limits. Parallelizing 5 lookups on one IP = 5 API calls total, well within all free tiers. Don't loop over a list without throttling — use /ioc-enrichment-workflow for bulk.
Related skills
/domain-investigation,/hash-investigation,/url-investigation— sibling investigation skills/indicator-pivoting— deeper graph traversal from a starting IOC/ioc-enrichment-workflow— bulk IOC list enrichment/threat-actor-profiling— if the IP is attributed to a known actor, consider profiling/cti-orchestrator— typically the caller
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

