Pentest Swarm AI – autonomiczny pentest z rojem agentów AI

Czym jest i do czego służy ?

Pentest Swarm AI to projekt open source (licencja AGPL-3.0) rozwijany przez Armur AI, pozycjonowany w README jako otwarta, samodzielnie hostowana alternatywa dla komercyjnego XBOW. Zamiast jednego agenta w chmurze dostawcy dostajemy rój dziesiątek agentów AI, których zadaniem nie jest wyłącznie skanowanie celu, ale faktyczna eksploatacja i udowadnianie podatności.

Według opisu repozytorium agenci łączą ataki w łańcuchy (BOLA/IDOR, fałszowanie JWT, mass assignment, SSRF, injection), budują i oceniają ścieżki ataku, a następnie potwierdzają realne podatności w tempie maszynowym. Projekt jest napisany w Go 1.24 i korzysta z kilku natywnie wbudowanych narzędzi bezpieczeństwa.

Grupa docelowa jest wąska i jednoznacznie zdefiniowana: pentesterzy, łowcy bug bounty, red teamerzy oraz badacze bezpieczeństwa. W chwili obecnej repozytorium ma około 3018 gwiazdek, a sam projekt oznaczony jest statusem alpha.

Warto podkreślić filozofię projektu: nie jest to własny model językowy, a „uprząż” (harness), która daje modelowi ręce – realne narzędzia, koordynację roju, egzekwowanie zakresu testów i raporty poparte dowodami. Można podłączyć model chmurowy (Claude, dowolny endpoint zgodny z OpenAI API, Together AI, Gemini, OrcaRouter) albo model w pełni lokalny (Ollama, LM Studio), co pozwala pracować w trybie air-gapped bez wysyłania danych na zewnątrz.

Ważne: narzędzie jest przeznaczone wyłącznie do autoryzowanych testów bezpieczeństwa, programów bug bounty, CTF-ów i badań edukacyjnych. README wprost wymaga pisemnej zgody właściciela systemu przed uruchomieniem jakiegokolwiek skanowania i zrzeka się odpowiedzialności za nielegalne użycie.

Kluczowe funkcjonalności

Rój, a nie pipeline. Autorzy mocno rozgraniczają te pojęcia. Większość narzędzi „multi-agent” to pojedynczy LLM-planner zlecający zadania w stałej kolejności (recon → klasyfikacja → eksploatacja → raport). Pentest Swarm AI opiera się na trzech prymitywach inteligencji roju:

  • Stigmergia – agenci koordynują się, czytając i zapisując ustalenia na wspólnej tablicy (blackboard), a nie przez centralnego planistę. Waga feromonowa ustalenia przyciąga innych agentów i z czasem wygasa, więc nieaktualne ścieżki naturalnie giną.
  • Emergencja – łańcuchy ataków pojawiają się bez planowania ich przez pojedynczego agenta: ustalenie z rekonesansu budzi klasyfikatora, wysokiej wagi klasyfikacja budzi agenta eksploatacji, a wyniki wracają na tablicę i budzą agenta raportującego.
  • Decentralizacja – każdy agent ma własny predykat wyzwalający; dodanie nowego agenta nie wymaga przepisywania orkiestratora.

Narzędzia bezpieczeństwa. Wbudowany zestaw obejmuje subfinder, httpx, nuclei, naabu, katana, dnsx, gau (rodzina ProjectDiscovery) oraz adapter nmap z parsowaniem XML i walidacją zakresu. W planach (Wave 2) są adaptery sqlmap, Metasploit i ZAP oraz mostek Burp MCP.

Pamięć i infrastruktura. Czarna tablica opiera się na Postgres 16 z rozszerzeniem pgvector (transakcyjne zapisy, podobieństwo wektorowe, wygasanie feromonów w SQL), a Redis 7 odpowiada za rate limiting i stan sesji.

Tryby pracy i playbooki. Repozytorium zawiera playbooki bug-bounty, external-asm, ci-cd, internal-network oraz ctf-solver.

Wbudowane cele testowe. Szybki start nie wymaga własnej infrastruktury – wystarczy wskazać dołączone, celowo podatne laboratorium (crAPI, Juice Shop, VAmPI, DVGA), które uruchamia się, jest atakowane i wygaszane po zakończeniu.

Weryfikacja zamiast domysłów. Flaga --verify potwierdza ustalenia względem żywego celu za pomocą sygnału poza modelem LLM (callback out-of-band, różnica w odpowiedziach, timing). Flaga --jev dodaje opcjonalny filtr fałszywych alarmów, a --jev-adaptive pozwala rojowi oceniać i priorytetyzować warianty ścieżek ataku. Obie opcje są domyślnie wyłączone.

Łańcuchy eksploatacji. Polecenia chain run/list/update obsługują rosnącą bibliotekę nazwanych łańcuchów powiązanych z CVE, a chain forge pozwala naszkicować nowy łańcuch na podstawie advisory – z walidacją i przeglądem człowieka przed publikacją.

Interfejsy. Interaktywny launcher TUI, pełnoekranowy podgląd na żywo z wykresami i topologią roju, dashboard webowy na localhost:7777 (status alpha), serwer MCP (pentestswarm mcp serve) dla Claude Desktop i Cursor, rozszerzenie VS Code oraz GitHub Action publikujący wyniki w SARIF.

Bezpieczeństwo działania. Zakres testów jest egzekwowany dwukrotnie – na warstwie narzędzi i w executorze. Rejestr sprzątania uruchamia się zawsze przy SIGINT, awarii i wyczerpaniu budżetu, w odwrotnej kolejności. Punktacja podatności opiera się na CVSS v3.1 zgodnie ze specyfikacją FIRST, a dla Claude’a domyślnie włączone jest cache’owanie promptów.

Status funkcji. README uczciwie etykietuje dojrzałość: sekwencyjny runner 5-fazowy, narzędzia ProjectDiscovery, rejestr sprzątania, tryb --strict i CVSS są oznaczone jako stable; scheduler roju, backend Postgres, serwer MCP, rozszerzenie VS Code, GitHub Action i playbooki jako beta; dashboard jako alpha; adaptery sqlmap/Metasploit/ZAP, model dostrojony i benchmarki Cybench/AutoPenBench jako planned.

Instrukcja instalacji (Linux, macOS, Windows).

W repozytorium nie ma pliku docker-compose.yml, ale README udostępnia gotowy obraz Dockera oraz cztery inne metody instalacji. Poniżej wyłącznie polecenia z dokumentacji projektu.

Linux i macOS

Do wyboru jedna z metod:

npm install -g @armurai/pentestswarm                                       # npm (Node >=16)
curl -fsSL https://raw.githubusercontent.com/Armur-Ai/Pentest-Swarm-AI/main/scripts/install.sh | sh   # macOS/Linux
brew install Armur-Ai/tap/pentestswarm                                     # Homebrew
go install github.com/Armur-Ai/Pentest-Swarm-AI/cmd/pentestswarm@latest    # Go toolchain
docker run --rm ghcr.io/armur-ai/pentestswarm:latest --help                # Docker

Windows

Skrypt curl | sh oraz Homebrew są opisane w README jako ścieżki dla macOS/Linux. Na Windowsie pozostają metody przenośne: npm (Node >=16), instalacja przez toolchain Go oraz obraz Dockera:

npm install -g @armurai/pentestswarm
go install github.com/Armur-Ai/Pentest-Swarm-AI/cmd/pentestswarm@latest
docker run --rm ghcr.io/armur-ai/pentestswarm:latest --help

Uruchomienie

pentestswarm run

To polecenie otwiera interaktywny launcher TUI: wybierasz dostawcę modelu i wklejasz klucz (Together AI, Claude, OpenAI, Gemini albo w pełni lokalne Ollama / LM Studio – bez klucza), wskazujesz cel (URL lub jedno z dołączonych laboratoriów: crAPI, Juice Shop, VAmPI, DVGA) i wybierasz widok na żywo – dashboard webowy na localhost:7777, pełnoekranowy TUI, albo oba jednocześnie. W launcherze działa też test gotowości (Go, Docker, narzędzia, dostawca), który nigdy nie blokuje startu.

Warianty skryptowe (CI / automatyzacja)

run jest nakładką na scan, więc wszystko da się zautomatyzować:

# szybki test na dołączonym laboratorium, lokalny model, bez klucza API
pentestswarm scan --lab --lab-target crapi --provider ollama --swarm --tui

# realny, autoryzowany cel z modelem chmurowym
export PENTESTSWARM_ORCHESTRATOR_API_KEY=your-key-here
pentestswarm scan <authorized-target> --scope <target> --swarm --follow

# potwierdzanie ustaleń zewnętrznym oraklem
pentestswarm scan <authorized-target> --scope <target> --swarm --verify

Przydatne polecenia pomocnicze z README:

pentestswarm doctor          # kontrola stanu systemu
pentestswarm install-tools   # pobranie toolchainu recon/exploit
pentestswarm demo            # cała kampania offline (materiał z GIF-a)
pentestswarm serve           # serwer API + dashboard

Instalacja ze źródeł (rozwój)

git clone https://github.com/Armur-Ai/Pentest-Swarm-AI.git
cd Pentest-Swarm-AI
./scripts/setup.sh    # narzędzia, Postgres/Redis/Ollama
make build            # kompilacja binarki
make test             # testy
make dev              # tryb hot-reload

Konfiguracja dostawcy modelu

Jeden klucz konfiguruje orkiestrator, a agenci dziedziczą dostawcę. Przykład dla Together AI i modelu GLM 5.3 z README:

orchestrator:
  provider: "together"             # endpoint domyślnie wskazuje API Together
  model: "zai-org/GLM-5.3"        # lub Qwen/..., deepseek-ai/..., itd.
  api_key: ""                      # albo export PENTESTSWARM_ORCHESTRATOR_API_KEY
  context_window: 128000

Wymaganiem twardym jest natywne wywoływanie funkcji/narzędzi (tool calling) po stronie modelu.

Link do Repozytorium

https://github.com/Armur-Ai/Pentest-Swarm-AI

Dokumentacja projektu: https://armur-ai.github.io/Pentest-Swarm-AI/


Pentest Swarm AI korzysta z dorobku wcześniejszych projektów – w sekcji Credits README wymienia m.in. PentestGPT, PentAGI, Strix, CAI, HackingBuddyGPT, Shannon, BlacksmithAI i PentestAgent.