Zápisek z nasazení CyberStrikeAI: i jednoduché nasazení chce pozornost k detailům
Poslední dobou se mi v prstech motá CyberStrikeAI, AI-nativní platforma pro bezpečnostní testování napsaná v Go. Říkal jsem si, že „nasazení na jedno kliknutí“ přece znamená naklonovat, pustit skript a hotovo, ale narazil jsem na pár nepříjemností. Dokud to mám v čerstvé paměti, sepisuji celý postup – spousta těchto nástrah přitom není chybou samotného nástroje, ale opomenutých detailů.

Nejprve: co je zač
CyberStrikeAI se profiluje jako „akční systém pro AI-nativní bezpečnost“. Je napsaný v Go a spojuje plánování, provádění, lidský dohled, uchovávání důkazů a přehrávání průběhu do jedné auditovatelné pracovní plochy. Mezi hlavní součásti patří agent poháněný Eino, nativní nástroje MCP, znalostní báze RAG, vizuální workflow a modelování s analýzou útočného řetězce.
Vestavěno je přes 100 nástrojových receptů pokrývajících celý kill chain: síťové skenování jako nmap, masscan a rustscan; webové skenování jako sqlmap, nikto, gobuster a ffuf; skenování zranitelností jako nuclei, wpscan a dalfox; dále enumerace subdomén, API bezpečnost, bezpečnost kontejnerů a cloudu, binární analýza, exploitace, lámání hesel, forenzika a post-exploatace. V podstatě máte připravené a zorchestrované všechno, co k autorizovaným penetračním testům potřebujete.
Dále je tu plugin pro Burp Suite a rozšíření do prohlížeče, takže zachycený provoz můžete rovnou hodit do platformy k AI asistované analýze. Chytrý návrh – svůj stávající způsob práce kvůli tomu měnit nemusíte.
Příprava prostředí před nasazením
Dokumentace vyžaduje dva předpoklady a hlídejte si verze, ať se nespálíte:
- Go 1.25+(verze je výslovně uvedená v go.mod; při nižší verzi kompilace rovnou skončí chybou)
- Python 3.10+(potřebuje část nástrojů, například api-fuzzer nebo http-framework-test)
Nástraha č. 1: verze Go. Napoprvé jsem použil starší Go dodávané se systémem a chyba se objevila až ve fázi kompilace. Doporučuji si verzi nejdřív go version ověřit, a pokud nestačí, stáhnout si z oficiálních stránek novou. Právě tento typ „předpokladu“ se nejčastěji přehlédne, protože chyba vyleze až mnohem později.
Nasazení na jedno kliknutí: co skript udělá za vás
Oficiální příkazy pro jednoklikové nasazení jsou velmi úsporné:
git clone https://github.com/Ed1s0nZ/CyberStrikeAI.git
cd CyberStrikeAI
chmod +x run.sh && ./run.sh
run.sh toho ale dělá víc, než byste čekali; postupně provede:
- ✅ Kontrola a ověření prostředí Go a Pythonu
- ✅ Vytvoření virtuálního prostředí Pythonu
- ✅ Instalace závislostí Pythonu
- ✅ Stažení závislostí Go
- ✅ Sestavení projektu
- ✅ Spuštění služby
Detail č. 1: virtuální prostředí si spravuje skript sám. Adresář venv/ vytváří a udržuje sám run.sh a nástroje potřebující Python (api-fuzzer, http-framework-test a další) toto prostředí používají automaticky. Nezakládejte si ho ručně, snadno dojde ke konfliktu.
Ověření spuštění: body, které musíte zkontrolovat
Až skript doběhne, nespěchejte hned na prohlížeč, podívejte se nejdřív do terminálu:
- Zkontrolujte, že terminál hlásí ● ONLINE, následovaný skutečnou adresou webového rozhraní.
- Adresu otevřete: výchozí HTTPS režim používá lokální self-signed certifikát, prohlížeč vás varuje a stačí výjimku jednou přijmout.
- Nová instalace vygeneruje jednorázové heslo správce: terminál ho vypíše pod nápisem ADMIN SETUP REQUIRED, hned po prvním přihlášení si ho změňte.
Detail č. 2: HTTPS, nebo HTTP. Skript run.sh startuje ve výchozím stavu s parametrem --https (lokální self-signed TLS, který je podle autorů šetrnější k souběžným streamům). Pokud chcete čisté HTTP, musíte výslovně použít ./run.sh --httppříslušný přepínač. Při ručním spuštění přidejte parametr --https nebo nastavte proměnnou prostředí CYBERSTRIKE_HTTPS=1.
V produkci self-signed certifikát nepoužívejte; nakonfigurujte v config.yaml volby server.tls_cert_path a server.tls_key_path.
Nástraha č. 2: chyba z neshody protokolu. Pokud v logu uvidíte „client sent an HTTP request to an HTTPS server“, znamená to, že se nějaký klient pořád připojuje přes http:// na TLS port. Stačí upravit URL a nemá smysl hrabat se do konfigurace serveru.

Prvotní konfigurace: AI kanál je nutnost
Bez tohoto kroku je platforma v podstatě k ničemu. Po prvním spuštění otevřete https://127.0.0.1:8080/ (port je dán volbou server.port v config.yaml) a vstupte do System Settings → Basic Settings → AI Channel Configuration, přidejte kanál a vyplňte provider, Base URL, API key, model a limit tokenů.
Místo toho můžete upravit rovnou config.yaml; struktura vypadá přibližně takto:
ai:
default_channel: openai-main
channels:
openai-main:
provider: openai_compatible
api_key: "${OPENAI_API_KEY}"
base_url: "https://api.openai.com/v1"
model: "gpt-4o"
Detail č. 3: rozsah platnosti výchozího kanálu. Volba ai.default_channel platí pro nové konverzace a pro úlohy bez výslovně vybraného kanálu; na stránce chatu jde navíc pro každou konverzaci zvolit libovolný uložený kanál. Když tedy používáte více modelů, nemusíte konfigurovat jen jeden.
Zadáte-li provider openai_compatible, připojíte většinu služeb s rozhraním kompatibilním s OpenAI; base_url lze změnit na https://api.deepseek.com/v1 a model na deepseek-chat, se službou qwen3-max je to stejné. Modely od čínských poskytovatelů připojíte prakticky bez řečí, což je příjemné.
⚠️ Bezpečnostní upozornění: do config.yaml nikdy nesmí přijít skutečný klíč. Dokumentace výslovně říká, že reálné přihlašovací údaje se nemají commitovat – injectujte je přes proměnné prostředí.
I upgrade chce svůj postup
Upgrade řeší jeden oficiální skript, ale napoprvé mu musíte přidat právo spuštění:
chmod +x upgrade.sh && ./upgrade.sh --yes
Co udělá: zálohuje config.yaml a adresář data/ → stáhne nový kód z GitHub Release → aktualizuje číslo verze v config.yaml → restartuje službu.Lokální adresáře tools/, roles/ a skills/ zůstávají zachovány vždycky– což je zásadní: vaše vlastní nástrojové recepty nebudou přepsány.
Nástraha č. 3: závislosti upgrade skriptu. Ke stažení balíčku Release potřebuje curl nebo wget a rsync pro bezpečnou synchronizaci kódu (podle dokumentace doporučený, resp. nezbytný). Pokud vás začne brzdit rate limit GitHub API, musíte si nejdřív export GITHUB_TOKEN="..." obstarat token nebo chvíli počkat, a teprve potom upgrade pustit znovu.
Když se něco zvrtne, lze obnovit z .upgrade-backup/, nebo ručně zkopírovat data a config.yaml zpátky a znovu spustit run.sh.
Zásadní pravidlo: před upgradem si vždy pročtěte release notes cílové verze, zvlášť když zasahují do konfigurace, databáze nebo API. Dokumentace to říká trefně – „záloha je nutná i při pouhé opravné verzi; samotné číslo verze není zárukou kompatibility“.
Rychlý přehled struktury adresářů
Když víte, k čemu který adresář slouží, pozdější údržba vás nesejme:
- cmd/ – server, vstupní bod MCP stdio, nástroje
- internal/ – agent, jádro MCP, handlery, C2, bezpečný exekutor
- web/ – statická SPA a šablony
- tools/ – nástrojové recepty ve formátu YAML (více než 100 ukázek)
- roles/ – konfigurace rolí (více než 12 předpřipravených rolí pro bezpečnostní testování)
- skills/ – adresář Agent Skills (SKILL.md + volitelné soubory)
- agents/ – definice více agentů v Markdownu (orchestrator.md + subagenti)
- config.yaml – konfigurace běhu
- run.sh / upgrade.sh – spouštěcí / upgrade skript
Bezpečnost za vás nástroj nevyřeší
Platforma integruje vysoce rizikové schopnosti jako správu WebShell a vestavěné C2 (listenery, šifrované beacony, relace, fronty úloh). Postoj autorů je zcela jednoznačný:používat ji výhradně na systémech, které sami vlastníte nebo k jejichž testování máte výslovné oprávnění.
Než ve sdíleném nebo produkčním prostředí zapnete vysoce rizikové nástroje, pročtěte si bezpečnostní model a hardening guide. Součástí je i zachytávání volání nástrojů – konfigurovatelné kontroly regulárními výrazy před provedením v MCP, přičemž ochrana vládních domén je zapnutá už ve výchozím stavu.
Služba navíc ve výchozím stavu naslouchá jen na 127.0.0.1; pokud ji chcete vystavit ven, udělejte si nejdřív hardening. Není to zdvořilostní fráze, ale upozornění, které do dokumentace napíše jen ten, kdo si už jednou pořádně naběhl.

Závěrem
Když se ohlédnu zpět, samotné nasazení neprovázely žádné vážné potíže – skript odvedl 90 % práce. Zastavit mě a jít do dokumentace donutily jen „nepovšimnuté“ detaily: verze Go, virtuální prostředí, které si nesmíte zakládat ručně, výchozí HTTPS a tím pádem neshoda protokolu, záloha před upgradem a klíče, které nepatří do konfigurace.
Každý z těchto detailů je sám o sobě triviální, ale přehlédnout jeden vás může stát půlhodiny hledání. Čím vyspělejší nástroj, tím víc se vyplatí „číst dokumentaci“ – složitost je zabalená do skriptu a všechno, co zbývá, vězí právě v detailech konfigurace.
Projekt je součástí knownsec 404Starlink a je vydaný jako open source pod licencí Apache 2.0. Kdo dělá autorizované bezpečnostní testy, může ho zkusit.
Nasadit na jedno kliknutí neznamená pochopit na jedno kliknutí – právě detaily jsou tím, co vám nakonec ušetří čas.
Repozitář: github.com/Ed1s0nZ/CyberStrikeAI (přesunuto na github.com/AIPentest/CyberStrikeAI)
Požadavky na prostředí: Go 1.25+ / Python 3.10+
Licence: Apache License 2.0
⚠️ Pouze pro autorizované testování