Installation von Kali Linux unter Windows

Kali Linux App mit Windows Subsystem for Linux

Mit Einführung des Windows Subsystems for Linux (WSL) in Windows 10 ist es nun möglich, Linux Distributionen auf Windows Installationen auszuführen. Seit März 2018 zählt auch Kali Linux dazu. Im Prinzip verhält sich Kali auf Windows wie jede andere Kali Installation, außer, dass die Penetration Testing Features separat nachinstalliert werden müssen.

Als erstes installiert man in einer administrativen PowerShell das WSL Feature nach:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Nach einem abschließenden Reboot wird Kali aus dem Windows Store installiert – einfach nach „Kali Linux“ suchen und die angezeigte App installieren oder über den folgenden direkten Link installieren:
https://www.microsoft.com/en-us/store/p/kali-linux/9pkr34tncv07

Von einigen Antiviren-Programmen wird Kali und dessen Tools als Malware erkannt und blockiert. Daher fügt man am Besten den Ordner, in dem sich das Kali chroot befindet, zur Antiviren-Ausnahmeliste. Am Beispiel des Windows Defenders lässt sich das natürlich mit einer administrativen PowerShell konfigurieren – leider sind Windows Store Apps ja User-spezifisch, sodass die Ausnahme im Kontext eines jeden Users, der Kali nutzt, ausgeführt werden muss. Zudem kann sich die ID hinter dem eigentlichen Package Namen ändern, sodass dieser vorher geprüft werden muss.

Add-MpPreference -ExclusionPath "%LOCALAPPDATA%\Packages\KaliLinux.54290C8133FEE_ey8k8hqnwqnmg"

Mit freigeschalteter AV-Softwäre öffnet man als nächstes nun die so installierte Kali-„App“, in dem man in einer CLI kali eingibt, richtet einen User ein, räumt die Installation auf, aktualisiert die Distrubution und installiert dann die eigentlichen Penetration Testing Tools nach, so wie sie benötigt werden. Für die einzelnen Module (Meta-Packages) gibt es hier eine Übersicht – ich installiere im folgenden Beispiel alle Tools (die kursive Zeile installiert beispielhaft nur die Metasploit Tools).

sudo apt update
sudo apt full-upgrade
sudo apt auto-remove
sudo apt auto-clean
sudo apt-get full-upgrade
sudo apt-get dist-upgrade
sudo apt-get install kali-linux-all
sudo apt-get install metasploit-framework

Danach ist Kali voll funktionsfähig – Happy Penetrating!

Wer eine GUI für Kali nutzen möchte, kann diese optional noch nachinstallieren (z.B. Enlightenment E17).

sudo apt-get install e17
Kali Linux als Docker Container

Die zweite Variante ist es, die Container-Variante zu nutzen. Die Container Variante ist recht praktisch, da man z.B. für jeden Kunden eine eigene Container-Instanz aus einem Container-Image erstellen und nutzen kann. Der Nachteil ist der höhere Einrichtungsaufwand.

Bei der Container Variante installiert man als erstes in einer administrativen PowerShell das Container Feature und Hyper-V Feature nach:

Enable-WindowsOptionalFeature -Online -FeatureName containers -All
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Nach einem Reboot benötigt man eine Docker Installation. Die Sourcen für die Docker Engine können entweder hier heruntergeladen und installiert werden oder über die PowerShell – zur späteren einfacheren Bedienung füge ich den Docker Pfad mit dem letzten Befehl gleich in die Windows PATH Variable mit hinzu.

$version = (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/docker/docker/master/VERSION" -UseBasicParsing).Content.Trim()
Invoke-WebRequest -Uri "https://master.dockerproject.org/windows/amd64/docker-$($version).zip" -OutFile "$env:TEMP\docker.zip" -UseBasicParsing
Expand-Archive -Path "$env:TEMP\docker.zip" -DestinationPath $env:ProgramFiles
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

Nach erfolgreicher Installation muss Docker über die PowerShell im System registriert und gestartet werden:

dockerd --register-service
Start-Service Docker

Im nächsten Schritt lädt man den Kali Docker Container herunter und startet ihn.

docker pull kalilinux/kali-linux-docker
docker run -it kalilinux/kali-linux-docker

Analog zur WSL Variante folgt auch in der Container Variante nun das Aufräumen, Aktualisieren und Nachinstallieren der eigentlichen Kali Tools.

sudo apt update
sudo apt full-upgrade
sudo apt auto-remove
sudo apt auto-clean
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install kali-linux-all

Mit exit verlässt man nach Abschluss der Installation den Container wieder und erstellt (commited) es als neues Image, damit man aus dem Image neue Container für die jeweiligen Zwecke/Kunden erstellen kann. Mit dem ersten Befehl geben wir uns eine Übersicht der bestehenden Container mit Container ID aus, danach starten wir den entsprechenden Container. Abschließend erstellen wir aus dem Container ein neues Image mit dem Namen kali. und löschen unseren ursprünglichen „Konfigurations-Container“.

docker ps -a
docker start <Container ID>
docker attach <Container ID>
docker commit <Container ID> kali
docker rm <Container ID>

Ausführen von Kali Containern

Jetzt, da wir ein Image nach unseren Bedürfnissen angepasst haben, starten wir daraus unsere jeweiligen Container.
Die Parameter --run und -p <Source-Port>:<Destination-Port> sind dabei optional.
--rm bewirkt, dass der Container nach Verlassen automatisch gelöscht wird um unsere Festplatte nicht mit vergessenen Containern vollzuschreiben.
-p <Source-Port>:<Destination-Port> erstellt ein Port-Mapping zwischen der Docker-Instanz und der lokalen Maschine. Ein Port-Mapping wird z.B. benötigt für Tools wie NetCat und Metasploit, bei denen Listener konfiguriert sein müssen und auf eine Möglichkeit eine Möglichkeit warten um z.B. eine Remote Shell zu übernehmen.

docker run -it --rm -p 4711:4711 kali
Kali Linux als VM in Desktop Hypervisorn

Die dritte Variante ist die Nutzung von Kali Linux als VM in Desktop Hypervisorn wie Hyper-V, VMware Workstation, VMware Workstation Player oder VirtualBox. Diese Variante ist zwar die Einfachste, benötigt aber auch die meisten Resourcen auf dem Host.

Da es für VMware Workstation, VMware Workstation Player und VirtualBox ein OVA Template gibt, ist hier die Installation denkbar einfach: Hypervisor Software installieren, das entsprechende OVA hier herunterladen, importieren und starten. Fertig.

Ein wenig aufwendiger ist es für Hyper-V, da es hierfür kein OVA Template gibt und Kali in jedem Fall manuell installiert werden muss.

Bei der Verwendung von Hyper-V legt man eine Standard-VM an, lädt sich hier die Kali Version seiner wahl herunter und mountet das heruntergeladene ISO Image als virtuelles CD Laufwerk in die VM, von dem dann auch gebootet wird. Im Live-Boot Menü der ISO wählt man Start Installer aus und folgt der geführten Installation. Nach Abschluss der Installation loggt man sich in seine Desktop Umgebung ein, startet ein Terminal und installiert die Hyper-V Tools (File Copy [Guest Services], KVP, VSS) nach:

apt install -y hyperv-daemons

Abschließend deaktiviert man den Linux I/O Scheduler, da Hyper-V bereits einen eigenen I/O Scheduler mitbringt. Dazu öffnet man den GRUB Loader und editiert die Zeile GRUB_CMDLINE_LINUX_DEFAULT="quiet" wie folgt:

nano /etc/default/grub
NANO> GRUB_CMDLINE_LINUX_DEFAULT="quiet elevator=noop"
NANO> [CTRL]+[X]
update-grub2
reboot

Danach ist Kali auch mit Hyper-V einsatzbereit.

Einschränkungen

Insbesondere in der VM-Variante unterliegt Kali auf Windows einigen Einschränkungen. Die gravierendste davon ist das Tool aircrack-ng zur Analyse und Penetration von WLANs. Der eigentliche WLAN-Adapter des Hosts ist in der VM selbst ein Ethernet-Adapter und nicht aircrack-ng kompatibel. Um aircrack-ng in der VM nutzen zu können benötigt der Host daher einen dedizierten und kompatiblen WLAN Adapter, der direkt in die VM gemountet und nicht über das Host-OS virtualisiert wird.

Quellen:
https://www.kali.org/news/kali-linux-in-the-windows-app-store/
https://wjmccann.github.io/blog/2017/12/03/Kali-Linux-in-Docker-on-Windows-10

2 Antworten

  1. Mike sagt:

    Ich habe da ein Problem….

    $version = (Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/docker/docker/master/VERSION).Content.Trim() Invoke-WebRequest „https://master.dockerproject.org/windows/amd64/docker-$($version).zip“ -OutFile „$env:TEMP\docker.zip“ -UseBasicParsing

    In Zeile:1 Zeichen:127
    + … ocker/docker/master/VERSION).Content.Trim() Invoke-WebRequest „https: …
    + ~~~~~~~~~~~~~~~~~
    Unerwartetes Token „Invoke-WebRequest“ in Ausdruck oder Anweisung.
    + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

    • Servus. Token Fehler kommen von fehlenden oder falschen Text-Markierungen (z.B. “ oder ‚). Im o.g. Fall haben sie gefehlt. Habe den Code nochmal korrigiert, konnte es aber selbst nicht ausprobieren, ob’s jetzt passt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.