Skip to content
Back to skills

Osint

ASecurity

Drive extro_osint with the right kind, feeds, pivots, and keys.

  • 86 stars
  • 0 votes
  • 2 copies
  • 4 views
  • Added September 10, 2026
securityrustgorubyrailstestinggitapisecurity

Works with

  • terminal
  • api

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add 0dayInc/pwn --skill osint --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Osint?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Osint
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/0dayinc-osint/badge)](https://www.skillsdirectory.com/skills/0dayinc-osint)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: osint
description: Drive extro_osint with the right kind, feeds, pivots, and keys.
license: MIT
allowed-tools: [pwn, terminal, extrospection]
metadata:
  bundled: true
  references:
    - https://attack.mitre.org/tactics/TA0043/
    - NIST-SP-800-115
---

# OSINT (extro_osint)

Use this whenever the ask is public-source intel on an IP, domain, email,
phone, handle, person, company, CVE, VIN, MAC, FCC ID, patent, or URL.
The verb is `extro_osint` (`PWN::AI::Agent::Extrospection.osint`). Do not
substitute `extro_snapshot(sections: [:osint])` - that only lists feed
availability. Do not scrape random sites when this organ already covers
the query.

## When to use

- reverse phone, person, @handle, company, CIK, NPI
- IP / ASN / BGP / Shodan / reputation
- domain CT / whois / RDAP / harvest
- CVE EPSS + CISA KEV
- VIN, MAC OUI, ham callsign, FCC ID, patent

Hand off live scanning to `penetration-testing` / `NmapIt`. Firmware IDs
can start here (`:fcc_id`) then `hardware-and-firmware-testing`.

## Methodologies

- MITRE ATT&CK TA0043 Reconnaissance (passive collection)
- NIST SP 800-115: target identification / OSINT as a technical technique
- OSSTMM data channel (passive only unless the operator named active DNS)

Stay passive by default. `amass` is passive unless
`ai.agent.extrospection.osint.bridges.amass_passive` is false.

## How to call

Prefer the tool:

```
extro_osint(query: "8.8.8.8")
extro_osint(query: "@defunkt", kind: "social")
extro_osint(query: "target.tld", feeds: ["dns", "crtsh", "theharvester"])
```

Or `pwn_eval`:

```ruby
PWN::AI::Agent::Extrospection.osint(query: '8.8.8.8', kind: :ip)
```

One atomic indicator per call. `kind: :auto` is fine when the string is
unambiguous. Force `kind:` when auto can steal the query (below).

## Force kind when auto is wrong

| Query looks like | Auto often picks | Force |
|---|---|---|
| IPv4 | `:ip` (ok) | - |
| `00:11:22:33:44:55` | `:mac` (ok; MAC beats IPv6) | - |
| 17-char VIN | `:vin` | - |
| `CVE-2021-44228` | `:cve` | - |
| `@user` / `@user@host` | `:social` | - |
| `a@b.c` | `:email` | - |
| `https://...` | `:url` | - |
| `NPI 1679576722` | `:npi` only with the `NPI` prefix | prefix or `kind: :npi` |
| `W1AW` | `:callsign` | - |
| bare `defunkt` | `:username` | `kind: :social` + `feeds: ["social_sweep"]` if presence is the ask |
| `Acme Robotics LLC` | `:company` | - |
| `birth record Jane Doe` | `:vital_records` | keep the keyword |
| `2ABIP-ESP32` | `:fcc_id` | `kind: :fcc_id` if no hyphen |
| 10-15 digits | `:phone` | E.164 `+1...` if possible |
| free text name | `:person` | `kind: :person` |

Do not pass a paragraph as `query`. Extract the indicator first.

## Pick feeds; do not boil the ocean

Default feeds-for-kind can be a dozen HTTP calls. Narrow when you know
the question:

| Question | feeds |
|---|---|
| Where is this IP / is it noisy? | `ipapi_is`, `iplocate`, `greynoise`, `abuseipdb` |
| What certs / names? | `crtsh`, `certspotter` |
| Passive domain harvest | `theharvester`, `amass` (bins; skip if absent) |
| Handle presence | `keybase`, `github`, `social_sweep` (`limit: 50`) |
| Company | `opencorporates`, `sec_edgar`, `courtlistener` |
| CVE worth exploiting? | `epss`, `cisa_kev` |
| Breach on email | `haveibeenpwned` (needs key) |

Read `results[:summary]` and per-feed `{skipped:}` / `{error:}`. A skipped
keyed feed is not a finding - it means no key.

## Keys (vault or ENV)

Set under `ai.agent.extrospection.osint.api_keys.*` or ENV. Missing key
returns `{skipped:}` and the rest of the call still runs.

| Feed | ENV |
|---|---|
| shodan | `SHODAN_API_KEY` |
| hunter | `HUNTER_API_KEY` |
| abuseipdb | `ABUSEIPDB_API_KEY` |
| virustotal | `VIRUSTOTAL_API_KEY` / `VT_API_KEY` |
| greynoise | `GREYNOISE_API_KEY` |
| haveibeenpwned | `HIBP_API_KEY` |
| securitytrails | `SECURITYTRAILS_API_KEY` |
| steam | `STEAM_API_KEY` |

If several keyed feeds skip, say which keys are missing. Do not invent
Shodan banners.

## Pivot loop

1. First call: one indicator, auto or forced kind, default or tight feeds.
2. From `summary`, pull the next indicator (domain from cert, email from
   hunter, @handle from keybase, ASN from bgpview).
3. Second call on that indicator. Tag the chain in the answer.
4. `record` defaults true (`observe(category: :osint)`). Later
   `extro_observations(category: :osint)` instead of repeating the same
   query in-session.
5. Stop when the original ask is evidenced (who / where / exposure), not
   after one feed listing.

## Pitfalls

- `extro_snapshot(sections: [:osint])` is inventory. It does not look up
  the target.
- `social_sweep` is soft-404 prone (confidence <= 0.5). Confirm hits.
- `theharvester` / `amass` / `spiderfoot` / `reconng` no-op without the
  local bin. Install via `pwn setup --profile net` or skip those feeds.
- Active amass touches target DNS. Leave passive unless asked.
- Default `limit` is 5. Raise only for sweep/harvest.
- Do not treat `{error:}` on one feed as a failed OSINT pass.

## Verification

`results[:kind]` matches the indicator, at least one feed returned data
(not only skips), and the answer cites that summary. If every useful feed
skipped, the artefact is the missing-key list plus any public-feed hits.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.