Installing Google Chrome on Kali Linux: Low-Friction Workflow for Security Engineers
The default browser stack in Kali—typically Firefox ESR—does its job, but certain penetration testing workflows and web application assessments are streamlined with Google Chrome. Chrome’s extension catalog, devtools workflow, and compatibility often outclass competitors, especially when deep integration or advanced proxying is a requirement.
Classic issue: Chrome isn’t in the Kali or Debian main apt repositories for licensing reasons. So installation requires some manual steps and attentiveness to dependencies.
1. System Update Is Not Optional
Before bringing in Chrome, sync the current package set. Outdated libc or font libraries = subtle breakages later.
sudo apt update && sudo apt upgrade -y
2. Download Official Chrome .deb Package
Fetch Chrome directly from Google’s CDN—don’t trust third-party mirrors. The URL below pulls the stable release for amd64 (x86_64):
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
If using ARM hardware (rare in Kali), this method won’t work—Chrome for Linux is not offered for ARM.
3. Install Pre-Requisites—Or Prepare for Broken UI
Chrome expects libraries not always present on pen-testing distributions:
sudo apt install -y libappindicator3-1 fonts-liberation
These handle status icons (notification integration) and fallback fonts. Absence leads to warning messages and missing UI elements.
4. Package Installation with Error Handling
Proceed via dpkg
; resolve dependency failures with apt. This is always a two-step process, Chrome .deb
is rarely fully self-contained:
sudo dpkg -i google-chrome-stable_current_amd64.deb
# Likely: "dependency problems - leaving unconfigured"
sudo apt -f install -y
Note: If "no such package" errors arise—check /etc/apt/sources.list
, and ensure all standard Debian repositories are enabled.
5. Smoke Test: Launch and Version Check
Confirm install and access:
google-chrome --version # Outputs e.g., Google Chrome 124.0.6367.208
google-chrome &
For GUI access, look under Internet or Web Browser in the desktop menu.
6. Optional: Set Chrome as Default Handler
For command-line URL redirects, some tools expect the system’s default browser handler:
xdg-settings set default-web-browser google-chrome.desktop
Desktop environments (XFCE, GNOME) may require an additional setting in their GUI preferences to fully propagate this change.
7. Post-Install: Real-World Penetration Testing Tips
Key Extensions
Wappalyzer
(fingerprinting)ModHeader
(header manipulation)HackTools
(basic encoding, common payloads)
Proxying with Burp Suite or ZAP
Configure system proxy or use Chrome’s explicit proxy settings:
Settings → System → Open your computer’s proxy settings
Point HTTP(S) proxy at 127.0.0.1:8080
. Don’t forget to exclude traffic to 127.0.0.1 itself to avoid Burp Suite loopbacks.
Incognito Mode Gotcha
Incognito mode disables most extensions. For plugin-based testing (e.g., SSRF), rerun Chrome with --incognito --disable-extensions
if you want baseline browser behavior.
8. Troubleshooting Common Pitfalls
A. GPG Key Issues When Updating
If apt outputs:
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY...
Execute:
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo apt update
B. Broken Dependencies After dpkg
Run:
sudo apt --fix-broken install
Logs will show specific missing libraries; occasionally a manual apt install
of the listed package is necessary.
C. Segfaults or GPU Bugs
On certain VMs, Chrome may crash immediately due to hardware acceleration issues:
google-chrome --disable-gpu
If running as root, use --no-sandbox
but avoid this on production systems—Chrome’s sandbox is critical for security.
Side Notes and Non‑Obvious Tips
- Multiple Chrome Versions: Chrome Beta and Dev can coexist, but local profiles will conflict; specify
--user-data-dir=/tmp/chrome-test
to isolate. - Headless Testing: Use
google-chrome --headless --remote-debugging-port=9222
for scripted automation, e.g., with Selenium. - Offline Installations: Air-gapped environments require all dependencies via
apt download
; seedpkg -I google-chrome-stable_current_amd64.deb
for full requirements.
Summary
The above approach avoids flaky PPA scripts and manual repo edits. Chrome install via official .deb
plus dependency handling works reliably on recent Kali releases (tested: 2024.1, 2023.4). Some proxy features and extension support can still lag after major browser updates—track changelogs if relying on bleeding-edge features.
Known issue: Some extensions (notably those doing deep protocol spoofing) only work on Chrome, not Chromium—there is a difference. Alternatives (like Brave or Ungoogled Chromium) may not support all the same APIs.
Questions or specifics about proxy chaining, debugging, or extension limitations? Open an issue or submit logs.
Happy hunting.