Dev.to Security πŸ” Cybersecurity πŸ‘ 0 πŸ“– 5 min read

Installing Kali Linux on an Apple Silicon Mac for Bug Bounty: Storage Audits, VM Sizing & Performance Tuning

Running a penetration testing lab on a 256 GB MacBook (Apple Silicon M-series) feels like walking a tightrope. Kali Linux has a reputation for being disk-hungry, and macOS aggressively uses free SSD space for swap files

Running a penetration testing lab on a 256 GB MacBook (Apple Silicon M-series) feels like walking a tightrope. Kali Linux has a reputation for being disk-hungry, and macOS aggressively uses free SSD space for swap files and sleep images. If your available disk drops below 15–20 GB, macOS begins to throttle, apps freeze, and your VM can suffer silent disk corruption.

In this guide, we break down the exact disk mathematics of installing Kali Linux on a 256 GB Mac SSD, how to prepare your storage, the step-by-step installation via UTM, and how to configure a lean, high-performance Bug Bounty environment tailored for HackerOne and Intigriti.

1. Storage Reality Check: How Much Space Do You Really Have?

Before downloading any ISO, you need your real container metrics, not the generic graph in macOS System Settings. Run this in your Terminal:

diskutil info /System/Volumes/Data | grep -E "Container Total Space|Container Free Space"

The Sizing Equation on a 256 GB SSD:

  • Total Usable Capacity: ~245.1 GB (APFS Container)
  • Healthy Free Space Buffer for macOS: ~20 GB to 25 GB minimum (required for APFS snapshotting, dynamic swap memory, and system updates).
  • Current Free Space: ~56.2 GB
+-------------------------------------------------------------+
|  Used macOS Data (~188.9 GB)  |  Free Space (~56.2 GB)      |
+-------------------------------+-----------------------------+
                                |  Kali VM   | macOS Safe Swap|
                                |  (12-30 GB)|  Buffer (25 GB)|
                                +-----------------------------+

2. Disk Footprint: Now vs. Later

A common beginner mistake is allocating a fixed 50 GB virtual hard drive. On APFS, you should never pre-allocate disk space for a virtual machine. Always use Sparse / Dynamic Provisioning.

Phase Virtual Disk Allocated Real SSD Space Occupied What is Happening
Clean Install (Fresh VM) 35 GB (Cap) ~11.5 GB to 13.0 GB Base Kali OS + XFCE desktop + core networking tools
Lean Bug Bounty Setup 35 GB (Cap) ~18.0 GB to 22.0 GB ProjectDiscovery suite (nuclei, subfinder, httpx), Burp Suite, targeted SecLists
Full Tool Suite (Bloat) 35 GB (Cap) ~32.0 GB to 35.0 GB Uncompressed wordlists (rockyou.txt, heavy dictionary lists), large Docker images

Key Rule: By setting a 35 GB dynamically expanding disk, your Mac only loses ~12 GB on day one. It only grows as you create files or install tools inside Kali, preserving your Mac's swap safety buffer.

3. Pre-Install Storage Clean: Freeing 3–5 GB

Before installing, prune unnecessary toolchains and stale caches without touching your development source code:

  1. Remove unused toolchains (e.g. inactive Rust toolchains):
   rm -rf ~/.rustup ~/.cargo

(Reclaims ~2.5 GB immediately if you do not compile Rust projects).

  1. Clean Homebrew cache:
   brew cleanup -s
  1. Delete downloaded disk images:
   rm -f ~/Downloads/*.dmg ~/Downloads/*.iso

(Note: If you work on web apps or GitLab source builds, **keep your ~/.nvm and Node runtimes intact; never delete Node to make room for a VM).

4. Step-by-Step Kali Linux Installation via UTM

On Apple Silicon (M1/M2/M3/M4), standard VirtualBox does not provide stable, hardware-accelerated virtualization. We use UTM, which interfaces directly with Apple’s native Virtualization Framework.

Step 1: Download the Correct Kali Image

  1. Visit kali.org/get-kali/#kali-installer-images.
  2. Download the Apple Silicon (ARM64) installer ISO (e.g., kali-linux-XXXX.X-installer-arm64.iso). > ⚠️ Warning: Do not download the default amd64 installer. Running x86_64 code requires emulation, which is up to 10x slower and causes high CPU battery drain.

Step 2: Configure the VM in UTM

  1. Open UTM $\rightarrow$ Click Create a New Virtual Machine (+).
  2. Select Virtualize (do NOT select Emulate).
  3. Choose Linux.
  4. Check Use Apple Virtualization (recommended for kernel stability and shared directory support).
  5. Under Boot ISO Image, browse and select your downloaded Kali ARM64 .iso.
  6. Configure System Hardware:
    • Memory: 4096 MB (4 GB) β€” Sweet spot for 16 GB MacBooks (leaves 12 GB for macOS).
    • CPU Cores: 4 Cores.
  7. Configure Storage:
    • Size: 35 GB.
    • Ensure Pre-allocate disk space is unchecked.
  8. Click Save.

Step 3: Run the Kali Installer

  1. Start the VM in UTM. Select Graphical Install.
  2. Follow standard prompts (Language, Timezone, Keyboard).
  3. Software Selection Step:
    • Leave [*] Desktop environment (XFCE) checked.
    • Check [*] ... collection of tools: top10 (keeps the initial install lightweight).
    • Do not check the everything metapackage (which downloads 20+ GB of rarely used tools).
  4. Finish installation, shut down the VM, remove the ISO from the CD/DVD drive in UTM settings, and boot into your new Kali desktop.

5. Post-Install Performance Tuning

Run these commands inside your Kali terminal immediately after first boot:

# Update repositories and install guest integration tools
sudo apt update && sudo apt install -y spice-vdagent

# Enable smooth clipboard sharing and auto-resolution resizing
sudo systemctl enable --now spice-vdagent

In UTM VM Settings:

  • Display: Set to VirtIO-GPU for fluid 60 FPS UI rendering.
  • Sound: Set to AC97 or Intel HD Audio.

6. Sizing a Lean Bug Bounty Toolkit (HackerOne & Intigriti)

To keep your VM under 25 GB while maintaining an elite reconnaissance setup:

1. The Core Recon Stack (Go-based)

Instead of installing monolithic frameworks, install lightweight, single-binary tools:

# Install Go if not present
sudo apt install -y golang

# Add Go bin to PATH
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.zshrc && source ~/.zshrc

# Fast Subdomain & Asset Discovery
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

2. Fast Web Fuzzing

sudo apt install -y ffuf

3. Wordlist Disk Optimization

Avoid extracting massive uncompressed archives on your SSD. Use targeted SecLists subsets:

sudo apt install -y seclists

# The two essential lists that cover 90% of web recon:
# 1. /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
# 2. /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt

7. Configuring Burp Suite for Platform Compliance

Before hunting on HackerOne or Intigriti, configure your request headers in Burp Suite to prevent WAF bans and identify your traffic to customer SOC teams:

  1. Open Burp Suite inside Kali.
  2. Navigate to Settings $\rightarrow$ Tools $\rightarrow$ Proxy.
  3. Under Match and Replace Rules, click Add:
    • Rule Type: Request header
    • Header Name & Value:
      • For HackerOne: X-HackerOne-Research: <your-username>
      • For Intigriti: X-Intigriti-User: <your-username>
  4. Now, every single HTTP probe, repeater dispatch, or intruder payload will carry your official platform signature.

Summary Checklist

  • [x] Host storage audited: ~56 GB free on 256 GB SSD.
  • [x] Disk safety buffer maintained (>20 GB reserved for macOS swap).
  • [x] UTM configured with 4 Cores, 4 GB RAM, and a 35 GB dynamically growing disk.
  • [x] Kali ARM64 native image installed (zero x86 emulation overhead).
  • [x] Lightweight Bug Bounty toolkit deployed without disk bloat.
πŸ“° Read the original article on Dev.to Security

Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes β€” full credit and traffic to the original publisher.