Ethical Hacking
Kali Linux Overview
Your lab is running. Now it is time to get properly acquainted with the machine you will be working from for the rest of this course. Kali Linux is not complicated — but it does work differently from Windows and macOS in ways that matter from day one.
Kali Linux is a platform, not just a tool
The reputation Kali has in popular culture is wildly out of proportion to what it actually is. It is a Linux-based operating system built specifically for penetration testing and security research — developed and maintained by Offensive Security. Think of it less like a single tool and more like a fully equipped workshop: the workbench, the lighting, and 600+ specialist tools all set up and ready to go the moment you boot it.
It does not make you a hacker the moment you install it. It does not do anything automatically. It is a well-organised platform sitting on a stable Debian Linux base, designed so that security professionals can open a terminal and get to work without spending hours on setup. The skill is in knowing which tool to use, when to use it, and what the output actually means.
Everything you will do in the practical lessons from here onwards happens inside Kali. Getting comfortable with its structure now will save you a lot of friction later.
Download Kali Linux — free, official, always up to date
Kali Linux is completely free to download and use. The official download page at kali.org/get-kali offers several versions — for most learners following this course, the VirtualBox pre-built image is the right choice. It imports directly into VirtualBox with no installation required and is ready to use in minutes.
Download Kali LinuxChoose: Virtual Machines → VirtualBox (64-bit) — this is the image used throughout this course.
The Kali desktop — finding your way around
Kali uses the XFCE desktop environment by default — a lightweight graphical interface that looks similar to a traditional desktop. The most important element is the terminal, which you will use far more than any graphical application. Here is the layout you will see when Kali boots.
The terminal is the black window with the green prompt. That is where every command in this course gets typed. The graphical interface exists but most professional work happens in the terminal — it is faster, more precise, and gives you complete control over what runs and how.
The terminal prompt — reading it correctly
Every time you open a terminal in Kali, you will see a prompt that looks like this:
root
The username you are logged in as. Kali runs as root by default — the most powerful user account on any Linux system. Root has no restrictions. Every command runs with full system access.
kali
The hostname — the name of the machine. In your lab, this will say kali unless you have renamed it. On a real engagement, professionals often change the hostname to something less conspicuous.
~
The current directory. The tilde symbol means you are in the home directory — /root on Kali. As you navigate around the filesystem, this changes to show where you currently are.
#
The character that ends the prompt and where you start typing. A hash symbol means root access. A dollar sign ($) means a regular non-root user. On Kali you will almost always see #.
Essential commands — the ten you will use constantly
You do not need to memorise hundreds of Linux commands. A small core set covers the vast majority of what you will do during any engagement. These ten commands appear in almost every practical exercise from here onwards.
| Command | Purpose | Example |
|---|---|---|
| pwd | Print current directory — shows exactly where you are in the filesystem | pwd |
| ls | List files and folders in the current directory | ls -la |
| cd | Change directory — navigate to a different folder | cd /etc |
| cat | Read and display the contents of a file | cat /etc/passwd |
| grep | Search through text for a specific pattern or keyword | grep "root" /etc/passwd |
| man | Open the manual page for any command — the built-in help system | man nmap |
| mkdir | Create a new directory — useful for organising engagement files | mkdir engagement1 |
| chmod | Change file permissions — controls who can read, write, or execute a file | chmod +x script.sh |
| ifconfig | Show network interface details — your IP address and connection status | ifconfig eth0 |
| apt | Package manager — install, update, or remove software on Kali | apt update |
The man command deserves special mention. Any time you encounter a tool or command you are not sure about, type man followed by the command name and Linux will show you its full documentation. Every flag, every option, every example — all built in. It is the fastest way to learn any tool without leaving the terminal.
Kali's tool categories — finding the right tool fast
With 600+ tools available, the question becomes: where do you find what you need? Kali organises everything into categories accessible from the Applications menu. Each category groups tools by what they are used for — so even if you do not know the name of a specific tool, you can find the right category and browse from there.
01 - Information Gathering
WHOIS, theHarvester, Maltego, Recon-ng, dnsenum, Shodan CLI
02 - Vulnerability Analysis
Nikto, OpenVAS, Nmap scripting engine, legion
03 - Web Application
Burp Suite, sqlmap, dirb, gobuster, wfuzz
04 - Database Assessment
sqlmap, mdb-tools, sqlite3, oscanner
05 - Password Attacks
Hydra, John the Ripper, hashcat, crunch, wordlists
06 - Exploitation Tools
Metasploit Framework, searchsploit, exploitdb
Running your first real commands in Kali
The best way to get comfortable with any environment is to use it. The commands below are not attack tools — they are basic navigation and system commands that familiarise you with how Kali works. Run them in your lab now while reading through each one.
The scenario: Your lab is set up and Kali is running. Before starting any security work, you spend ten minutes navigating the filesystem, checking the network configuration, and confirming the key tools are installed. This is standard practice at the start of any new engagement — know your environment before you start working in it.
# pwd — print the current directory
# This tells you exactly where you are in the filesystem right now
pwd
# ls -la — list all files including hidden ones with full details
# -l = long format (shows permissions, size, date)
# -a = all files (includes hidden files that start with a dot)
ls -la
# uname -a — show system information
# Displays the kernel version, architecture, and hostname all at once
# Useful at the start of any engagement to confirm what system you are on
uname -a
/root total 48 drwx------ 8 root root 4096 Nov 12 09:14 . drwxr-xr-x 19 root root 4096 Nov 12 08:55 .. -rw------- 1 root root 412 Nov 12 09:14 .bash_history -rw-r--r-- 1 root root 570 Jan 31 2010 .bashrc drwxr-xr-x 2 root root 4096 Nov 12 08:57 Desktop drwxr-xr-x 2 root root 4096 Nov 12 09:02 Documents drwxr-xr-x 2 root root 4096 Nov 12 08:57 Downloads Linux kali 6.5.0-kali3-amd64 #1 SMP PREEMPT_DYNAMIC Kali 6.5.6-1kali1 x86_64 GNU/Linux
Breaking it down:
The output of pwd. You are currently in /root — the home directory for the root user. This is where Kali starts you by default every time a new terminal opens.
These are file permission strings. The first character tells you if it is a directory (d) or file (-). The next nine characters show read (r), write (w), and execute (x) permissions for the owner, group, and everyone else. You will see these constantly during privilege escalation exercises.
The kernel version your Kali installation is running. The x86_64 at the end confirms you are running a 64-bit system — which is required for most modern security tools to function correctly.
# Confirm your network interface is up and has an IP address
# eth0 is the primary wired network adapter in Kali
# Look for "inet" followed by an IP address starting with 192.168.56
ifconfig eth0
# Confirm a key tool is installed and working
# nmap --version prints the version of Nmap installed on the system
# If Nmap is missing, install it with: apt install nmap
nmap --version
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.102 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::a00:27ff:fe12:34ab prefixlen 64 scopeid 0x20<link>
ether 08:00:27:12:34:ab txqueuelen 1000 (Ethernet)
Nmap version 7.94 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.4.6 libpcre2 libz openssl libssh2
Compiled without: nping
Breaking it down:
This is Kali's IP address on the private lab network. Both machines are now on the 192.168.56.0/24 subnet — Kali at .102 and Metasploitable at .101. Every tool you run in the practical lessons will use the Metasploitable IP as its target.
Nmap is installed and ready. The version number matters — certain Nmap scripts and features require specific versions. 7.94 is a recent stable release with full scripting engine support, which is what you need for the scanning lessons coming up.
Keeping Kali updated — one command, run it regularly
Security tools get updated frequently. New vulnerability databases, new detection methods, new scripting capabilities. Running an outdated version of a tool during an engagement can mean missing vulnerabilities that a more recent version would have caught.
Keeping Kali updated is a single two-part command. Run it before any major exercise and after any significant period of not using the lab.
# Step 1 — apt update
# Downloads the latest package list from Kali's software repositories
# This does NOT install anything yet — it just refreshes the list of what is available
# Always run this before upgrading so apt knows what the latest versions are
apt update
# Step 2 — apt upgrade
# Installs the latest versions of everything currently installed on the system
# -y automatically answers yes to any confirmation prompts so it runs without interruption
# This step actually downloads and installs the updates
apt upgrade -y
Hit:1 http://kali.download/kali kali-rolling InRelease Reading package lists... Done Building dependency tree... Done Reading state information... Done 42 packages can be upgraded. Reading package lists... Done Building dependency tree... Done 42 upgraded, 0 newly installed, 0 to remove. Need to get 124 MB of archives. After this operation, 2,048 kB of additional disk space will be used. Get:1 http://kali.download/kali kali-rolling/main amd64 nmap 7.94 [5,926 kB] ... Processing triggers for man-db (2.11.2-2) ... done.
Breaking it down:
After apt update, this line tells you how many installed packages have newer versions available. Running apt upgrade will download and install all of them. The number varies depending on how recently you last updated.
The total download size for all the updates. On a fast connection this takes a few minutes. The update command needs internet access — temporarily switch your Kali network adapter from Host-Only to NAT just for the update, then switch it back when done.
Without -y, apt asks you to confirm before downloading each batch of updates. With -y, it proceeds automatically. Saves several keystrokes on a routine update — but do not use -y on commands you are not sure about, as it removes the chance to review what is about to happen.
Teacher's Note: You now have everything you need to start the practical section of this course. A running lab, a target machine, and a working Kali environment with the core tools confirmed installed. Section II starts with DNS enumeration — and everything from here runs in this exact setup.
Practice questions
Scenario:
Scenario:
Scenario:
Quiz
Scenario:
Scenario:
Scenario:
Up Next · Lesson 11
DNS Enumeration
Section II begins — your first active recon technique, run directly against your lab target for the first time.