Ethical › Module 2 › Lesson 1
Passive Recon: What the Internet Already Says
Public pages, job posts, and DNS as footprints — not hacking a neighbor.
Visual · passive_recon_footprint
Passive recon reads what a domain already published — public pages, job ads, DNS — on example.com or a name YOU own. It is not scanning a neighbor.
Opening
A footprint is what the internet already printed. Reading it is literacy. Hunting strangers is not this course.
Module 1 drew the permission line: written scope, a machine or domain you own, and no “I was practicing” defense. Footprinting is the first map on that line. In Cyberlium wording, a footprint is a public fact a name already published — a homepage title, a careers page that lists a stack, a DNS A record anyone can ask a resolver for. Passive reconnaissance is collecting those facts without turning your curiosity into a probe of someone else’s network. You read what is already out there for example.com (the IETF designated example host) or for a domain THE USER OWNS. You do not Google-dork a bank login, Shodan-search random webcams, or treat a neighbor’s personal site as a homework target. This lesson is ORIGINAL Cyberlium teaching of the footprinting domain. It is not official CEH training, not an EC-Council exam dump, and not a license to collect people. Next lesson names the moment a packet you crafted leaves your machine — that is active recon, and it needs written permission. Here you practice the quieter skill: write down public facts, lock the notes, and refuse targets you do not own. Topic 4 already taught personal digital footprints; this module is the authorized-tester version of the same idea, still on names you control or example.com.
1. Passive means you did not poke the target network — you read published sources
Passive recon, as this course uses the word, is collection from sources that were already meant to be public: a homepage, a robots.txt that the site itself serves to anyone, a job posting the company published, WHOIS and DNS answers that registries and resolvers give out as part of how the internet works. The test is not “I did not log in.” The test is “I did not send a crafted probe, a scan, a login guess, or a dork aimed at someone else’s private surface.” Visiting https://example.com in a browser, or asking a recursive resolver for example.com A records, is literacy on a designated example name. Walking Shodan for “webcam default password” or building Google queries like inurl:admin site:someone-elses-bank is not a lab. Those queries are how people hunt strangers. This path does not teach that hunt.
A useful picture: a shop puts its hours on the door and a help-wanted sign in the window. Reading the hours and the sign is passive. Jiggling the back lock “to see if it is a real door” is active. Calling every other shop on the street because you are “in training” is still not your assignment. example.com exists so documentation and courses have a name that is safe to type. A domain you registered and pay for is yours. A classmate’s blog, a café landing page, a school portal, and a random .gov are not yours. If you cannot say in one sentence why the name is in scope, it is not in scope.
Command guide
Passive vs poke — WHAT/WHY (read published sources)
═══ COMMANDS ═══
Command — copy this
cat >> "$NOTES" << 'EOF' passive_means: read published pages/jobs/DNS — do not probe strangers shop_picture: hours on the door = passive; jiggling the back lock = active allowed: example.com OR a domain I own EOF
2. What public pages and job posts actually leak — on YOUR name or example.com
Public pages leak more than marketing copy. A homepage title and a Server or CSP header (you already practiced reading those on example.com in Topic 7) tell you the site is alive and how it describes itself. A /about page may name a city. A careers page on a company YOU run may list “we hire Python and AWS” — that is a footprint of YOUR org, useful when you later write a defender report about what you published. On example.com, the lesson is the habit: one GET or one browser visit, write the title and the status code, stop. You do not spider every link. You do not follow into login forms. You do not paste other people’s employee names into a dossier.
Job posts are famous in recon talks because they name tools. That fame is not a hall pass. You may read a careers page on a domain you own, or note conceptually that “a public job ad can mention a stack.” You may not harvest LinkedIn of a company you do not work for as a Cyberlium homework pile, and you may not dork for resumes of strangers. DNS is the cleaner public channel for this lesson: names, mail exchangers, and name servers are published so the internet can route. Lesson 3 will run nslookup and whois against example.com. Lesson 1 only needs you to treat DNS as a footprint source, not as a zone-transfer attack kit. AXFR against random domains is out. Shodan against hosts you do not own is out. Google dorks aimed at other people’s login pages are out.
Command guide
Public page literacy — WHAT/WHY (example.com or YOUR domain)
═══ INSTALL ═══
Linux (Debian/Ubuntu):
Command — copy this
sudo apt install curl sudo apt install python3
macOS:
Command — copy this
brew install python3
Windows: Built-in (PowerShell: Invoke-WebRequest) Download https://python.org/downloads/
═══ COMMANDS ═══
Command — copy this
curl -sS -m 8 -I "https://example.com/" | head -n 20
Command — copy this
python3 - << 'PY'
from urllib.request import Request, urlopen
url = 'https://example.com/'
raw = urlopen(Request(url, headers={'User-Agent':'CyberliumPassiveRecon/1.0'}), timeout=8).read(4096)
low = raw.decode('utf-8','replace').lower()
print('status_bytes', len(raw), 'has_title', '<title>' in low)
print('ethics: example.com or MY domain; no login dorks; no Shodan')
PY3. Allowed names: example.com, or a domain THE USER OWNS — nothing else
Write the allowed list on paper before you open a terminal. (1) example.com — reserved for examples; one polite GET or a DNS lookup is the course default. (2) A domain you registered, whose registrar account you control, whose bills you pay. Optional later: a lab VM whose hostname you created. That is the whole list for Module 2. Not the café. Not the ISP CPE. Not school.edu. Not a news site you like. Not “any host that answers ping.” Skill does not create consent. A public website is still someone else’s computer. Reading their marketing is one thing; turning their site into a recon lab with dorks, scrapers, and Shodan is another. This course picks the first and forbids the second.
If you do not own a domain, you still complete the lesson on example.com. Do not “borrow” a friend’s hostname. Do not pick a random blog because example.com felt too easy. Easy is the point: you are learning the ethics of the map, not filling a binder with other people’s facts. Notes go to $HOME/cyberlium-lab with chmod 600 — the same hygiene as Topics 2, 6, 7, and 8. The file holds YOUR observations of an allowed name. It does not hold a classmate’s email, a scraped staff directory, or a Shodan screenshot of a stranger’s camera.
Command guide
Allowed-name list — WHAT/WHY then lock notes
═══ COMMANDS ═══
Command — copy this
cat >> "$NOTES" << 'EOF' allowed_1: example.com (IETF example host) allowed_2: (a domain I registered — or n/a) not_allowed: classmate blog, cafe portal, school.edu, random .gov EOF
4. What you record: facts, source, date — not a people dossier
A footprint note is boring on purpose. Domain. Date (UTC). Source (browser, one GET, or DNS). Homepage title or “n/a.” HTTP status if you fetched. One-line ethics: “example.com or a domain I own; no dorks of other logins; no Shodan of random hosts; no neighbor.” Empty files fail. Files that list other people’s staff fail even if the data was “public.” Public-to-the-web is not the same as in-scope-for-this-course. chmod 600 so another local account does not read your lab tree. You will expand the same file in Lessons 3 and 4 with WHOIS and DNS rows. Start the habit now so the lab is fill-in, not invention.
A useful failure: you fetch example.com, get 200, write the title, and feel that the lesson is “too small.” That feeling is how people graduate into unauthorized recon. The skill is stopping. Next lesson will make the stop even sharper: when your packet is a probe, you need writing that says you may send it. Passive recon is the warm-up that proves you can collect without hunting.
5. Wrong vs right: dorking strangers vs reading example.com or YOUR domain
Worked failure — same curiosity, opposite blast radius. Right never treats a neighbor, a school portal, or a random Shodan hit as a footprint lab.
Wrong
Google-dork inurl:login or inurl:admin on companies you do not own. Query Shodan for random cameras, routers, or “default password.” Scrape a neighbor’s site, a café Wi-Fi portal, or a school staff directory into a dossier. Call it CEH homework. Save world-readable notes with other people’s emails. This course is not official CEH training and does not give you that hunt.
Right
Read public pages and DNS for example.com or a domain YOU own. One polite GET or browser visit is enough. Write title, status, date, and an ethics line in $HOME/cyberlium-lab, chmod 600. No login dorks of strangers. No Shodan-against-random. No neighbor. Next: Active Recon — when a packet leaves your machine, you need written permission.
6. Hands-on: one allowed fetch, then lock passive-recon-notes.txt
On a computer you own, create cyberlium-lab if needed. Optional: one timed GET to https://example.com (or YOUR domain). Write the notes file. If you skip the GET and only record “I will use DNS in Lesson 3,” that is still valid for this lesson’s ethics — fill the definitions. Do not add a second host because example.com was boring. chmod 600. The script below refuses any host other than example.com unless you set OWNED_DOMAIN to a name you truly control; it never becomes a crawler.
Command guide
passive_recon_notes.sh — example.com or YOUR domain, one GET, no dorks / no Shodan
═══ INSTALL ═══
Linux (Debian/Ubuntu):
Command — copy this
sudo apt install python3 sudo apt install dnsutils
macOS:
Command — copy this
brew install python3
Windows: Download https://python.org/downloads/ Use nslookup (built-in)
═══ COMMANDS ═══
Command — copy this
cd "$HOME/cyberlium-lab"
Command — copy this
cat > passive_recon_fetch.py << 'PY'
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
HOST = "example.com"
ALLOWED = {"example.com"}
if HOST not in ALLOWED:
raise SystemExit("refusing host — Module 2 allows example.com or a domain YOU own")
url = f"https://{HOST}/"
req = Request(url, method="GET", headers={"User-Agent": "CyberliumPassiveRecon/1.0"})
try:
with urlopen(req, timeout=8) as resp:
status = resp.status
raw = resp.read(4096) # cap — not a full-site scrape
title = ""
lower = raw.decode("utf-8", errors="replace")
if "<title>" in lower.lower():
start = lower.lower().index("<title>") + 7
end = lower.lower().find("</title>", start)
title = lower[start:end].strip()[:120] if end > start else ""
print("host:", HOST)
print("url:", url)
print("status:", status)
print("title:", title or "(no title in first 4k)")
print("ethics: public page of allowed name; no dorks; no Shodan; no neighbor")
except HTTPError as e:
print("host:", HOST)
print("http_error:", e.code)
except URLError as e:
print("fetch_failed:", e.reason)
print("still valid: write notes from a browser visit or skip fetch and use DNS later")
PYCommand — copy this
python3 passive_recon_fetch.py || python passive_recon_fetch.py
Command — copy this
{Mission: passive-recon-notes.txt in cyberlium-lab (mode 600)
1) In your own words, define passive recon as reading published pages, job posts, and DNS — not probing a neighbor, not dorking other people’s logins, not Shodan-against-random. 2) Optional: one timed GET or browser visit to example.com (or a domain YOU own). Fill host, date, title/status in $HOME/cyberlium-lab/passive-recon-notes.txt and chmod 600. 3) Ethics line in the file: allowed name only. No classmate blogs as “practice.” No café. No school portal.
Stuck? Ask Cyberlium AI Mentor
If “public on the internet means I may collect anyone” still feels true, ask for a hint — not a dork list. Try: "Hint only: why is one GET to example.com (or MY domain) a footprint lesson, why Google dorks of other login pages and Shodan-against-random are out of scope, and where do locked notes live?" You still fill passive-recon-notes.txt. No neighbor. No school staff scrape.
You now treat a footprint as a published fact on a name you are allowed to study — example.com or a domain you own — and you treat dorks, Shodan hunts, and neighbor scraping as out of this course. Passive recon is the quiet map. Notes are locked in cyberlium-lab. This is original Cyberlium material covering the same domain as CEH v13 Module 2, not official training and not an exam dump. Next — Active Recon: Touching a Target You Own — names the moment a packet you sent becomes a probe, and why that moment needs writing.
Knowledge Check
APPLY: A classmate wants to Google-dork inurl:admin on a local shop and dump hits into Discord as “passive CEH.” What is passive recon here, and what do you do?
Multiple choice
Knowledge Check
APPLY: True or False: Visiting example.com is too easy, so you should Shodan-search webcams and dork school login pages to make the footprint “real.”
True or False
Knowledge Check
APPLY: You are filling passive-recon-notes.txt. Which pairing matches the allowed target and hygiene?
Multiple choice
Knowledge Check
APPLY: curl of http://192.168.0.1/ shows a home router login (TP-Link / Netgear / Huawei / "Router Admin"). Is that DEMO in scope as a hacking target?
Multiple choice