Search Skills
What it is: Knowing where to search is just as important as knowing what to search for. These are the key resources used in both offensive and defensive security.
The fun thing: Before touching a single target, you can already know what software it’s running, whether it’s vulnerable, and whether there’s working exploit code — all from public sources.
Shodan
A search engine for internet-connected devices — servers, cameras, routers, industrial control systems. Shodan scans the internet continuously and records what’s running on every open port.
apache 2.4.1 # every server advertising this version
port:22 country:GB # SSH servers in the UK
org:"British Airways" # everything BA has publicly exposed
hostname:tryscanme.thm # THM's practice target
Useful filters:
| Filter | What it does | Example |
|---|---|---|
country: | Restrict to a country code | country:IE |
port: | Filter by port number | port:22 |
org: | Scope to a company or ASN | org:"Amazon" |
hostname: | Match a domain or hostname | hostname:fakebank.thm |
Reading a Shodan result:
185.243.115.47 — Amsterdam, DigitalOcean
Apache/2.4.58 (Ubuntu)
PHP/8.2.10
Open ports: 22, 80, 443, 8080
→ Before sending a single packet: you know the OS, web server version, backend language, and every open port. Search CVE apache 2.4.58 and you have your attack candidates.
Key insight: Shodan shows what the server already advertises to the whole internet. Reading it isn’t scanning — it’s reading public information.
VirusTotal
Submits a file, URL, domain, or hash to 70+ antivirus engines simultaneously and returns a consensus verdict.
What you can submit:
| Input | Use case |
|---|---|
| File | Suspicious email attachment |
| URL | Sketchy link someone sent you |
| Domain | Is this domain known for malware? |
| Hash (MD5 / SHA256) | Check a file without uploading it |
Reading results:
0 / 72flagged → probably clean45 / 72flagged → malware
The hash trick: every file has a unique fingerprint. If the malware is known, its hash is already in the database — no need to upload the file. Faster, and safe if the file contains sensitive data.
Key insight: Blue team uses it to triage suspicious files. Red team uses it to check whether a payload will get caught before deploying it.
CVE — Common Vulnerabilities and Exposures
A universal dictionary of known vulnerabilities. Every confirmed vulnerability gets a unique ID:
CVE-2025-55182
↑ ↑
Year Unique number
Some high-impact ones get nicknames: Heartbleed, Log4Shell, EternalBlue.
CVSS score — rates each CVE on three factors:
| Factor | Question it answers |
|---|---|
| Impact | What damage can this cause? |
| Complexity | Is it easy to exploit? |
| Availability | How likely is exploitation? |
Score is 0–10. Organisations patch highest scores first.
ExploitDB (exploit-db.com) compiles CVEs alongside Proof of Concept (PoC) scripts — working code that demonstrates the vulnerability.
Key insight: When nmap gives you
Apache/2.4.58, your next move isCVE apache 2.4.58→ ExploitDB → is there a PoC? That’s your attack chain in three steps.
Documentation & Man Pages
Official documentation is always more reliable than third-party tutorials. First stop, not last.
For any command-line tool on Linux:
man nmap # full nmap manual
man nc # netcat reference
man curl # curl options
Scroll with arrow keys, q to quit, / to search within the page.
GitHub
Researchers publish PoC code, exploit tools, and vulnerability analyses on GitHub — often faster than official channels.
Search pattern:
CVE-2026-1337 site:github.com
→ Repositories with PoC code, scanner scripts, or detailed breakdowns.
Caveat — not all PoCs are trustworthy:
| Type | Risk |
|---|---|
| Incomplete PoC | Won’t work, wastes time |
| Intentionally flawed | Misleads defenders / researchers |
| Malicious “PoC” | The repo itself is the malware |
Always read the code before you run it. A PoC that calls home or drops a backdoor is a classic attack vector against researchers.