🌱 Beginner

Kali Linux Setup Guide

Configure your Kali Linux attack machine with essential tools, optimized settings, and custom configurations for professional penetration testing.

Installation Options

💿

Virtual Machine

Recommended for beginners. Easy snapshots and isolation.

  • ✓ VMware / VirtualBox
  • ✓ Pre-built OVA available
  • ✓ 4GB RAM minimum
  • ✓ 80GB disk recommended
🖥️

Bare Metal

Best performance for resource-intensive tasks.

  • ✓ Native hardware access
  • ✓ WiFi adapter support
  • ✓ Dual-boot option
  • ✓ Full GPU access
🐳

Docker

Lightweight for specific tool needs.

  • ✓ Quick deployment
  • ✓ Minimal overhead
  • ✓ Tool isolation
  • ✗ Limited hardware access

Post-Installation Setup

1. Update System

bash
# Full system update
sudo apt update && sudo apt full-upgrade -y

# Clean up
sudo apt autoremove -y && sudo apt autoclean

2. Install Essential Packages

bash
# Development tools
sudo apt install -y git curl wget vim tmux htop tree jq

# Python tools
sudo apt install -y python3-pip python3-venv pipx
pipx ensurepath

# Network tools
sudo apt install -y net-tools dnsutils whois traceroute

# Additional pentest tools
sudo apt install -y seclists wordlists bloodhound neo4j crackmapexec evil-winrm

3. Configure Shell (ZSH + Oh My ZSH)

bash
# Install Oh My ZSH
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# Install useful plugins
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting

# Edit ~/.zshrc and add plugins:
# plugins=(git zsh-autosuggestions zsh-syntax-highlighting sudo)

4. Create Project Structure

bash
# Create organized workspace
mkdir -p ~/pentests/{clients,tools,wordlists,exploits,notes}

# Symlink common wordlists
ln -s /usr/share/wordlists ~/pentests/wordlists/system
ln -s /usr/share/seclists ~/pentests/wordlists/seclists

# Set up project template
cat > ~/pentests/template.sh << 'EOF'
#!/bin/bash
PROJECT=$1
mkdir -p ~/pentests/clients/$PROJECT/{recon,scans,exploits,loot,notes,report}
echo "Project created: ~/pentests/clients/$PROJECT"
cd ~/pentests/clients/$PROJECT
EOF
chmod +x ~/pentests/template.sh

Essential Tools

Reconnaissance

bash
# Install recon tools via pipx
pipx install subfinder
pipx install httpx-toolkit
pipx install nuclei

# Install from apt
sudo apt install -y amass masscan rustscan

Web Testing

bash
# Install web tools
sudo apt install -y feroxbuster ffuf gobuster
pipx install sqlmap

# Install Burp Suite (if not included)
# Download from portswigger.net

Active Directory

bash
# AD tools
sudo apt install -y bloodhound neo4j
pipx install impacket
pipx install certipy-ad
pipx install bloodyAD

# Install Rubeus, Mimikatz (Windows tools)
# Download from GitHub releases

Password Cracking

bash
# Cracking tools
sudo apt install -y hashcat john

# Download wordlists
cd ~/pentests/wordlists
wget https://github.com/danielmiessler/SecLists/archive/master.zip
unzip master.zip && rm master.zip

tmux Configuration

Why tmux?

tmux allows you to maintain persistent terminal sessions, split screens, and keep tools running even if your SSH connection drops.
bash
# ~/.tmux.conf - Pentest optimized config
# Set prefix to Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# Enable mouse
set -g mouse on

# Start windows/panes at 1
set -g base-index 1
setw -g pane-base-index 1

# Easy split commands
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"

# Quick reload config
bind r source-file ~/.tmux.conf \; display "Config reloaded!"

# Status bar styling
set -g status-bg black
set -g status-fg green
set -g status-right '#[fg=cyan]%Y-%m-%d %H:%M'

# Increase scrollback
set -g history-limit 50000

Useful Aliases

bash
# Add to ~/.zshrc or ~/.bashrc

# Quick scans
alias quicknmap='nmap -sC -sV -oA nmap_quick'
alias fullnmap='nmap -sC -sV -p- -oA nmap_full'
alias udpnmap='sudo nmap -sU --top-ports 100 -oA nmap_udp'

# Web enumeration
alias dirsearch='feroxbuster -u'
alias fuzz='ffuf -w /usr/share/seclists/Discovery/Web-Content/common.txt -u'

# Listeners
alias listen='sudo nc -lvnp'
alias webserv='python3 -m http.server 80'

# Copy to clipboard (install xclip)
alias copy='xclip -selection clipboard'

# Quick IP
alias myip='curl -s ifconfig.me'
alias localip='hostname -I | cut -d" " -f1'

# Start services
alias startdb='sudo systemctl start postgresql'
alias startneo4j='sudo neo4j start'

# Quick notes
alias note='vim ~/pentests/notes/$(date +%Y-%m-%d).md'

VM Optimizations

VMware

  • ✓ Install open-vm-tools
  • ✓ Enable 3D acceleration
  • ✓ Allocate 4+ CPU cores
  • ✓ Use SSD storage
  • ✓ Shared folders for file transfer

VirtualBox

  • ✓ Install Guest Additions
  • ✓ Enable PAE/NX
  • ✓ Use VBoxSVGA adapter
  • ✓ Bidirectional clipboard
  • ✓ USB 3.0 controller