Skip to content
REC · NEW
PIXELTAPES
SUBSCRIBE
● SERIES 8 MIN READ

Kali Linux Ethical Hacking, Part 2: Nmap Recon on Your Own Lab

A laptop beside a paper sketch map of a small network with a magnifying glass

Series: Kali Linux Ethical Hacking, Part 2. Previous: Part 1, a safe practice lab with Kali Linux 2026.2. Next: Part 3, web app testing on OWASP Juice Shop.

Nmap recon on your own lab means mapping what’s alive and listening before you touch anything. You find live hosts with nmap -sn, scan the common ports, then all 65,535, and use -sV to confirm services. Every scan stays inside your own lab or one you have written permission to test, and every result goes into your notes.

First, the legal bit

Disclaimer: This post is for education and authorized security testing only. Scanning or accessing a computer, network or account without permission is illegal, including under India’s Information Technology Act, 2000 and similar laws in other countries. Only scan systems you own, or systems where you have clear written permission from the owner before you start.

Every command below points at a private lab network that you built yourself. If you practise on TryHackMe or Hack The Box, scan only the machine you were assigned, and follow that platform’s rules.

What does Nmap recon mean in an authorized test?

Recon simply means finding out what is there before you touch anything. Which machines are alive? Which ports are open? Which services are listening, and which versions are they running?

Why it comes first

In a real engagement, the client gives you a written scope: a list of addresses you may test, and when. Recon builds the map inside that scope. Everything later, from web testing to reporting, depends on how good that map is. A sloppy map leads to missed findings, and worse, to traffic that wanders outside scope.

Passive and active

Passive recon gathers information without sending packets to the target, such as reading public documentation. Active recon sends traffic to the target, which is what Nmap does. Active recon is exactly the part that needs permission, which is why we keep it inside the lab.

Which Nmap version should you use in October 2026?

As of 21 October 2026, the Nmap changelog lists Nmap 7.992 as the latest release, dated 15 October 2026, after 7.991 on 6 August 2026 and 7.99 on 26 March 2026. The nmap.org homepage (checked 21 Oct 2026) also points to 7.992.

Kali packages may lag a little behind upstream. On the Kali package tracker (checked 21 Oct 2026), the version in kali-rolling is 7.991+dfsg-1kali1. That is fine for everything in this post. Check what you have with:

nmap --version

If you just updated from the older 2026.1 image, run sudo apt update && sudo apt full-upgrade -y and reboot, as we covered in Part 1.

If your Nmap version looks old, follow my Kali update routine before you scan again.

How do you scan your own lab with Nmap?

What you need before you start

  • The lab from Part 1: a Kali VM and one practice target (for example Juice Shop on port 3000) on a host only network, with no bridged adapters.
  • Your target’s lab address. The examples use 192.168.56.101; replace it everywhere with yours.
  • A notes folder: run mkdir -p ~/lab-notes/$(date +%F) once before you start.
  • About 30 minutes. Every scan below is numbered and saved with -oA, so you finish with a full set of evidence.

Follow Steps 0 to 6 in order.

Step 0: Confirm your network

Before scanning, confirm which network is yours. On the Kali VM, run:

ip -br addr

Expected output (sample, your names and numbers may differ):

lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             10.0.2.15/24
eth1             UP             192.168.56.102/24

Look for the address on your host only adapter. In the examples below I’ll use 192.168.56.0/24 as a sample lab subnet, because that is a common host only default. Replace it with whatever your own lab uses, and never with an address you don’t own.

Step 1: Find live hosts

sudo nmap -sn 192.168.56.0/24 -oA ~/lab-notes/$(date +%F)/01-discovery

Expected output (sample from a generic lab):

Nmap scan report for 192.168.56.1
Host is up (0.00020s latency).
Nmap scan report for 192.168.56.101
Host is up (0.00031s latency).
Nmap scan report for 192.168.56.102
Host is up.
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.10 seconds

The -sn option tells Nmap to discover which hosts are up without scanning ports (Nmap reference guide). In a small lab, you should see your Kali VM, your target, and possibly the hypervisor’s own virtual adapter. If you see anything you don’t recognise, stop and check your network settings. It may mean your lab is not as isolated as you thought.

Step 2: Scan the common ports on your target

Say your target is at 192.168.56.101:

sudo nmap 192.168.56.101 -oA ~/lab-notes/$(date +%F)/02-top1000

Expected output (sample for a Juice Shop target):

PORT     STATE SERVICE
3000/tcp open  ppp

The service name ppp is only Nmap’s guess from the port number. Step 4 fixes that.

With no extra options, Nmap scans the 1,000 most common TCP ports. It’s quick and gives you a first picture.

Step 3: Scan every TCP port

Services sometimes sit on unusual ports. A full scan covers all 65,535:

sudo nmap -p- 192.168.56.101 -oA ~/lab-notes/$(date +%F)/03-allports

Expected output: the same kind of port table, possibly with extra ports the default scan missed, and a final Nmap done line. On a minimal Juice Shop VM you may see port 22 too if SSH is installed.

This takes longer, but in a lab you have time. Patience is part of the job.

Step 4: Ask services who they are

Once you know which ports are open, ask Nmap to identify the services on just those ports:

sudo nmap -sV -p 22,80,3000 192.168.56.101 -oA ~/lab-notes/$(date +%F)/04-versions

Expected output (sample, details will differ):

PORT     STATE  SERVICE VERSION
22/tcp   open   ssh     OpenSSH (version shown here)
80/tcp   closed http
3000/tcp open   http    (Node.js web app details or a fingerprint)

If Nmap can’t name the service, it prints a fingerprint block instead. That is normal for custom web apps.

Swap in the ports you actually found. The -sV option probes open ports to work out the service and version. OWASP Juice Shop, for example, usually listens on port 3000 when run with its defaults, but trust your scan over my example.

Step 5: Run the default scripts, gently

sudo nmap -sC -sV -p 3000 192.168.56.101 -oA ~/lab-notes/$(date +%F)/05-scripts

Expected output: the port line from Step 4, plus indented script results under it, such as an http-title line showing the shop’s page title.

-sC runs Nmap’s default script set, which gathers extra details such as page titles and server headers. On your own lab target, it’s a good way to learn what Nmap can tell you. On anything you don’t own, the answer is simple: don’t.

Step 6: Check your evidence

ls ~/lab-notes/$(date +%F)/

Expected output: three files for each scan, ending in .nmap, .xml and .gnmap, for example 01-discovery.nmap, 01-discovery.xml and 01-discovery.gnmap. Fifteen files means all five scans were saved.

Sonar style rings from one computer stopping at the wall of a small walled garden, showing a scan kept inside your own lab
Every scan in this post stays inside the lab you built.

How do you read Nmap results without guessing?

Nmap output looks dense at first. Take it one column at a time.

Port states

Each line shows a port, its state and a service name. “open” means something answered. “closed” means the host replied but nothing is listening there. “filtered” means something, often a firewall, stopped Nmap from getting a clear answer. Filtered does not mean safe. It only means unknown.

Service names are a best guess

In a plain scan, the service column is just Nmap’s guess from the port number. Port 80 says “http” because that is the usual service, not because Nmap checked. Only after -sV does Nmap try to confirm the service and version. Treating that guess as a finding is a common mistake in beginner write ups.

Versions need double checking

Even with -sV, a version can be wrong or incomplete. A web app might hide its version, or a proxy might answer in front of it. Treat a version as a lead to check, not a fact to report. In your lab, you can confirm it directly because you installed the target yourself, which makes the lab a good place to learn how often Nmap is right.

What defenders see

My day job sits close to network detection and response, and from that side, a full port scan is loud. Hundreds of connection attempts from one address in a few seconds stand out clearly. That’s a useful lesson for both sides: an attacker’s recon is often a defender’s best early warning. If you want open source tools for the defending side too, my roundup of security GitHub repos for October 2026 is a good next stop.

When I’m ready to use these scans to fix my own systems rather than just map them, I follow the steps in my Kali Linux defensive audit with Lynis and oletools.

If you want to see exactly what your scan looks like on the wire, capture it in your own lab with Wireshark and tshark.

Corridor of open, closed and frosted glass doors representing open, closed and filtered ports
Open, closed and filtered, the three port states you will see most.

How should you keep notes and scope files?

Good notes turn a scan into evidence. They also protect you if anyone ever asks what you did and when.

Save every scan

Nmap can write its results to files for you:

mkdir -p ~/lab-notes/2026-10-21
sudo nmap -sV -p- 192.168.56.101 -oA ~/lab-notes/2026-10-21/target-full

The -oA option saves normal, XML and grepable output at once (Nmap reference guide). The XML version is handy later, because many reporting tools can import it.

Keep a scope file

Create a small text file with the addresses you are allowed to scan, one on each line, and point Nmap at it:

echo "192.168.56.101" > ~/lab-notes/scope.txt
sudo nmap -sV -iL ~/lab-notes/scope.txt

With -iL, Nmap reads its targets from the file, so you can’t fat finger an address on the command line. It is a small habit that keeps real engagements inside scope.

Screenshots and a short log

Alongside the files, keep a short daily log: date, time, target, command and one line on what you learned. Add a screenshot only when it shows something the text doesn’t. When you write your first report, you’ll be glad you did.

What to do next

Here is your practice plan for this week:

  1. Run nmap --version and note the version alongside today’s date.
  2. Confirm your lab subnet with ip -br addr and write it into scope.txt.
  3. Run the five steps above against your own target, one at a time, and save each with -oA.
  4. For every open port, write down what Nmap guessed, what -sV confirmed, and what you know to be true because you installed it.
  5. Compare a default scan with a full -p- scan and note any ports the default missed.
  6. Try one beginner network room on TryHackMe or an easy machine on Hack The Box, scanning only the assigned target.
  7. When you’re comfortable reading these scans by hand, you can let an AI agent run the same Nmap commands with your approval. My step by step MCP setup for Kali shows you how to keep it inside your lab.

In Part 3 of Kali Linux Ethical Hacking, we’ll take one of those open ports, the Juice Shop web app, and start mapping it with an intercepting proxy. It’s live now: Web App Testing Basics on OWASP Juice Shop. And if you’d like an AI agent to run these same scans for you, fully offline, I walk through that in Fully Local AI for Kali.

Written by DeepuMore about me, my work and my lab at deepu.live

Leave a comment

Your email stays private. First-time comments are held for a quick review.

AUTO-PLAY · UP NEXT

Keep the tape rolling

Never miss a new tape.

One email a week with everything new on PixelTapes. No spam, unsubscribe anytime.