Exemplu de pentesting framework (BlacksmithAI) cu asistenta AI

Configurare noua (How To)

Situatie

BlacksmithAI este un framework open-source avansat pentru testarea penetrării, care utilizează mai mulți agenți de inteligență artificială pentru a automatiza evaluările de securitate. Sistemul coordonează agenții specializați pe parcursul întregului ciclu de viață al testării penetrării, de la recunoaștere până la etapa post-exploatare, folosind instrumente profesionale de securitate într-un mediu controlat.

Nota bene si Atenție: !Chiar și în scopuri educationale, NU utilizati în afara scopului confirmat și autorizat in scris de către detinător! Sunt admise fără confirmare sau autorizare doar: testphp.vulnweb.com si https://juice-shop.herokuapp.com/ sau orice presupune hostare locală fără acces în internet.

Caracteristici principale:

  • Arhitectură multi-agent prezintă agenți specializați pentru fiecare etapă a testării de penetrare;
  • Instrumente profesionale au la bază o imagine Docker preconfigurată cu instrumente de securitate standard în industrie;
  • Suport pentru OpenRouter, VLLM și furnizori personalizați;
  • Interfețe web și terminal permite alegerea între o interfață modernă sau interacțiune CLI;
  • Raportarea automatizată generează rapoarte de securitate, însoțite de dovezi;
  • Prezintă instrumente CLI neinteractive concepute pentru execuția agenților AI.

Cazuri de utilizare

  • Evaluări automate de securitate
  • Monitorizare continuă a securității
  • Teste de penetrare în scop educativ
  • Identificarea și validarea vulnerabilităților
  • Cercetare și dezvoltare în domeniul securității

Arhitectură

BlacksmithAI utilizează un sistem multi-agent ierarhic.

Ierarhia agenților:

  • Orchestrator
  • Centru de comandă și control(C2)
  • Gestionează planificarea misiunilor și delegarea sarcinilor
  • Coordonează subagenții și generează rapoarte finale

Subagenți specializați:

  • Agent de recunoaștere: Cartografierea suprafeței de atac și colectarea de informații
  • Agent de scanare/enumerare: Scanare profundă și enumerarea serviciilor
  • Agent de analiză a vulnerabilităților: Cartografierea vulnerabilităților și evaluarea riscurilor
  • Agent de exploatare: Exploatare de tip „proof-of-concept”
  • Agent post-exploatare: Evaluarea impactului și analiza pivot

Fiecare agent are acces la instrumente specifice, adaptate rolului său.

Cerințe preliminare

Cerințe de sistem

  • Sistem de operare: Linux(recomandat), macOS sau Windows cu WSL2
  • Memorie RAM: minimum 4 GB(recomandat 8 GB)
  • Spațiu pe disc: 2 GB+, inclusiv imaginile Docker
  • Docker: versiunea 20.10+ cu Docker Compose
  • Python: versiunea 3.12+ (gestionat prin uv)

Dependențe software

Sunt necesare următoarele instrumente:

Manager de pachete și mediu Python
uv

# Containerizare
Docker și Docker Compose

# Mediu de execuție și instrumente frontend
Node.js 18+ (se recomandă versiunea LTS)
pnpm (manager rapid de pachete JavaScript)

Solutie

1. Python: uv

  • uv este un manager de pachete Python rapid și modern, precum și un instrument de gestionare a mediilor de execuție
  • un fel de combinație „turbo” între pip, pipx și virtualenv.

# Se poate instala prin scriptul oficial de instalare
curl -LsSf https://astral.sh/uv/install.sh | sh

Dacă preferați o versiune împachetată în Python:

pip install uv
# sau
pipx install uv

Pentru verificare se poate rula urmatoarea comanda:

uv –version

Nota Bene:

Se recomandă scriptul autonom pentru funcționalitate completă și actualizări automate
Pentru Windows, utilizați PowerShell:

powershell -ExecutionPolicy ByPass -c „irm https://astral.sh/uv/install.ps1 | iex”

2. Docker și Docker Compose

Docker ne permite să containerizăm și să rulăm servicii backend, baze de date etc.

Instalare pe Ubuntu / Debian

sudo apt update
sudo apt install -y docker.io docker-compose

macOS

brew install –cask docker

După instalare, porniți Docker Desktop și verificați:

docker –version
docker compose version

Dacă vedeți afișarea versiunii, sunteți gata de lucru.

Sfat: Pe Linux, s-ar putea să doriți să vă adăugați utilizatorul la grupul docker:

sudo usermod -aG docker $USER
# Apoi reporniți terminalul

3. Node.js 18+

Este utilizat Node.js pentru instrumentele frontend. Este necesară versiunea Node 18+ pentru compatibilitate cu pnpm și cu ecosistemul modern.

Ubuntu / Debian:

# Utilizarea configurării NodeSource (recomandată pentru versiuni precise)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash –
sudo apt install -y nodejs

macOS:

Instalați cu Homebrew:

brew install node@18

Pentru verificare instalare:

node –version
npm –version

4. pnpm (Fast JavaScript Package Manager)

pnpm este recomandat pentru instalări rapide și consecvente, precum și pentru fișiere de blocare previzibile.

Puteți instala folosind una dintre următoarele metode:

Din npm

npm install -g pnpm

Folosind un script independent(npm nu este necesar)

curl -fsSL https://get.pnpm.io/install.sh | sh –

Cu Corepack(manager de instrumente integrat în Node.js)

corepack enable
corepack prepare pnpm@latest –activate

De verificat apoi instalare:

pnpm –version

De verificat si mediul de dezvoltare

Încercați aceste verificări:

uv –version
node –version
pnpm –version
docker –version
docker compose version

Configurarea vLLM

Dacă doriți să utilizați modelele locale vLLM:

Setup LLM:

cd blacksmithAI/blacksmithAI
uv add vllm
uv add huggingface_hub

uv run hf auth login #dacă nu sunteți autentificat

Servire LLM

vllm serve mistralai/Devstral-2-123B-Instruct-2512 \
–host 0.0.0.0 \
–port 8000 \
–max-model-len 8192 \
–gpu-memory-utilization 0.75

Instalarea propriu-zisă a BlacksmithAI

Pasul 1: Clonați depozitul

git clone https://github.com/yohannesgk/blacksmith.git

Pasul 2: Instalați dependențele Python

# Instalați dependențele folosind uv
cd blacksmithAI/blacksmithAI
uv sync

Pasul 3: Compilați imaginea Docker mini-kali

Containerul mini-kali oferă toate instrumentele de testare de penetrare într-un mediu sigur și izolat.

# porniți-l cu
cd blacksmithAI/blacksmithAI
docker compose up -d

Pasul 4: Instalarea dependențelor frontend(opțional)

Săriți peste acest pas dacă utilizați doar interfața terminalului.

cd blacksmithAI/frontend
pnpm install
cd ../..

Începere rapidă cu Makefile

Pentru o configurare mai simplă, utilizați comenzile Makefile furnizate. Rulați make help pentru a vedea toate comenzile disponibile.
Configurare completă(o singură comandă):

make setup

Această comandă efectuează:

  • Instalarea dependențelor Python (make install)
  • Crearea imaginii Docker (make docker-build)
  • Instalarea dependențelor frontend (make frontend-install)

Configurare inițială

După instalare, configurați-vă mediul:

# 1. Copiați fișierul de exemplu pentru mediu
cp blacksmithAI/.env.example blacksmithAI/.env

# 2. Editați fișierul .env cu cheile API
nano blacksmithAI/.env

# 3. Editați config.json pentru furnizorul dvs. LLM
nano blacksmithAI/config.json

Pentru rularea în modul CLI BlacksmithAI

make start-cli

sau

uv run main.py

Această comandă:

  • Pornește containerul Docker mini-kali(O mini instanta Kali Linux într-un container Docker)
  • Lansează interfața CLI

Modul interfață web

Interfața web necesită mai multe terminale. Executați aceste comenzi în terminale separate:

# Terminalul 1: Porniți containerul Docker
make docker-up

# Terminalul 2: Porniți frontend-ul
cd frontend && pnpm build && pnpm start

# Terminalul 3: Porniți serverul de dezvoltare LangGraph
cd blacksmithAI && uv run langgraph dev

sau

cd blacksmithAI && uv run langgraph up

Apoi accesați: http://localhost:3000

Pentru VLLM(LLM local)

# Instalați VLLM
make vllm-install

# Porniți serverul VLLM
make vllm-serve
# Sau pentru sisteme mai mici:
make vllm-serve-small

Comenzi disponibile în Makefile:

make help Afișează toate comenzile disponibile
make install Instalează dependențele Python
make setup Finalizează configurarea inițială
make frontend-install Instalează dependențele frontend-ului
make docker-build Creează imaginea Docker pentru mini-kali
make docker-up Pornește containerul Docker
make docker-down Oprește containerul Docker
make docker-logs Vizualizează jurnalele Docker
make vllm-install Instalează VLLM pentru LLM local
make vllm-serve Pornește serverul VLLM (model 123B)
make vllm-serve-small Pornește serverul VLLM (model 7B)
make start-cli Pornește modul CLI
make start-ui Afișează instrucțiunile de configurare a interfeței web
make start-all Pornește rapid modul CLI
make stop Oprește toate serviciile
make clean Curăță containerele Docker
make status Afișează starea containerului Docker
make check-deps Verifică dacă dependențele sunt instalate
make check-config Verifică fișierele de configurare
make quickstart Afișează ghidul de pornire rapidă

Pornire rapidă

# Configurare inițială
make setup
cp blacksmithAI/.env.example blacksmithAI/.env
# Editează fișierul .env cu cheile tale API

# Pornește CLI
make start-cli

# Pornește interfața web(3 terminale)
make docker-up
cd frontend && pnpm build && pnpm start
cd blacksmithAI && uv run langgraph dev

# Oprește totul
make stop

Configurare

Creați un fișier .env pornind de la exemplu:

cp blacksmithAI/.env.example blacksmithAI/.env

Utilizare OpenRouter(furnizor LLM în cloud):

Editați fișierul .env și adăugați cheia API:

OPENROUTER_API_KEY=cheia-API-openrouter-aici

Utilizare VLLM (furnizor LLM local):

Nu sunt necesare variabile de mediu. Asigurați-vă că serverul VLLM rulează:

# Exemplu de pornire a serverului VLLM
vllm serve <numele-modelului> –port 8000

Configurarea aplicației

Editați fișierul blacksmithAI/config.json pentru a configura furnizorii și modelele LLM:

{
„defaults”: {
„provider”: «openrouter», // sau „vllm”, sau personalizat (openai)
},
„providers”: {
„openrouter”: {
„base_url”: „https://openrouter.ai/api/v1/chat/completions”,
„default_model”: „mistralai/devstral-2512:free”,
„default_embedding_model”: „openai/text-embedding-3-small”,
„default_model_config”: {
„context_size”: 200000,
„max_retries”: 3,
„stream_usage”: true,
„max_tokens”: null
},
„default_embedding_model_config”: {
„max_retries”: 3,
„embedding_ctx_length”: 8191
}
},
„vllm”: {
„base_url”: „http://localhost:8000/v1/chat/completions”,
„default_model”: „mistralai/devstral-2512”,
„default_embedding_model”: „text-embedding-3-small”,
„default_model_config”: {
„context_size”: 200000,
„max_retries”: 3,
„stream_usage”: true,
„max_tokens”: null
},
„default_embedding_model_config”: {
„max_retries”: 3,
„embedding_ctx_length”: 8191
}
}
}
}

Puteți adăuga suport pentru mai mulți furnizori, cum ar fi openai, claude… și mulți alții, prin simpla editare a fișierului config.json și adăugarea cheii API în .env

De exemplu, dacă doriți să adăugați suport pentru openai, puteți adăuga acest lucru la providers în config.json:

 “openai”: {
“base_url”: “….”,
“default_model”: “gpt-5-mini”,
“default_embedding_model”: “text-embedding-3-small”,
“default_model_config”: {
“context_size”: 200000,
“max_retries”: 3,
“stream_usage”: true,
“max_tokens”: null
},
“default_embedding_model_config”: {
“max_retries”: 3,
“embedding_ctx_length”: 8191
}
}

Deoarece numele furnizorului este setat aici la `openai`, trebuie să adăugați OPENAI_API_KEY=**** în fișierul de mediu. Așadar, adăugați numele furnizorului cu majuscule (provider_name) + API_KEY în fișierul de mediu.
Setați noul furnizor ca implicit modificând:

„defaults”: {
„provider”: „openai”
},

Acum totul este configurat pentru openai.

Puteți scala cu ușurință folosind metoda de mai sus și puteți adăuga mai mult suport.
Opțiuni de configurare

  • defaults.provider: Furnizorul LLM implicit de utilizat
  • base_url: Punctul final API pentru furnizor
  • default_model: Identificatorul modelului LLM
  • default_embedding_model: Model pentru încorporări(utilizat în baza de date vectorială)
  • context_size: Dimensiunea ferestrei de context a modelului selectat (necesară pentru summerizare, pentru a preveni depășirea ferestrei de context)
  • max_retries: Numărul de încercări de reîncercare pentru cererile eșuate
  • max_tokens: Numărul maxim de tokenuri în răspunsuri (null = valoarea implicită a modelului)

Utilizare

Opțiunea 1: Interfața terminalului(CLI)

Interacționează direct prin terminal, beneficiind de control deplin asupra agentului.

blacksmith_cli

# Pornește containerul Docker mini-kali
docker run -i –rm -p 9756:9756 mini-kali-slim -d

sau

cd blacksmithAI/blacksmithAI
docker compose up -d

# Rulare BlacksmithAI
cd blacksmithAI/blacksmithAI && uv run main.py

sau

cd blacksmithAI && make start-cli

Urmați instrucțiunile afișate pentru a iniția sarcinile de testare de penetrare.\

Opțiunea 2: Interfața web

Interfață

Se poate accesa interfața pentru gestionarea testelor de penetrare.

# Terminal 1: Porniți containerul mini-kali
docker run -i –rm -p 9756:9756 mini-kali-slim -d

sau

cd blacksmithAI/blacksmithAI
docker compose up -d

# Terminalul 2: Porniți interfața frontend
cd blacksmithAI/frontend
pnpm build
pnpm start

# Terminalul 3: Porniți serverul de dezvoltare LangGraph
cd blacksmithAI/blacksmithAI
uv run langgraph dev

Accesați interfața utilizatorului la adresa: http://localhost:3000

Opțiunea 3: Versiunea cloud

Este disponibilă o versiune găzduită pentru testare rapidă, fără configurare locală.

Instrumente și funcționalități

BlacksmithAI oferă acces la instrumente profesionale de testare de penetrare prin intermediul containerului Docker mini-kali. Toate instrumentele sunt concepute pentru execuție neinteractivă, prin stdin/stdout.

Instrumente de recunoaștere

Creează harta suprafeței de atac prin colectarea pasivă și activă de informații:

assetfinder – descoperă subdomeniile și resursele
subfinder – enumerează subdomeniile
whois – oferă informații privind înregistrarea domeniilor
dig – caută înregistrărilor DNS
nslookup – instrument de interogare DNS
hping3 – scanează rețeaua și analiza pachetelor
dnsrecon – enumerare și recunoaștere DNS

Scanare și enumerare

nmap – este cartograful de rețea și scaner de porturi
masscan – este scanerul de porturi de mare viteză
enum4linux-ng – enumerează SMB/Windows
nikto – scanează servere web(identifică potentiale vulnerabilităti)
whatweb – identifică tehnologiile web
fingerprintx – identifică amprentarea serviciilor
gobuster – enumeră directoarele și DNS-ului(dar poate oferi si mini-atacuri)
wpscan – scaner de vulnerabilități WordPress

Analiza vulnerabilităților

nuclei – scaner de vulnerabilități rapid și personalizabil
sslscan – analizator de configurații SSL/TLS si verificare versiune criptare(cifrare)

Instrumente de exploatare

sqlmap –  injectare SQL automatizată
hydra – oferă forțarea parolelor prin metoda brute-force
medusa – auditor paralel de autentificare în rețea
ncrack – oferă spargerea autentificării în rețea
python/go/perl/ruby – scripturi personalizate de exploatare

Post-exploatare

Evaluează impactul și identifică oportunitățile de pivotare după o exploatare reușită

netcat – “debugator” de rețea și transfer de date
socat – reluare multifuncțională
ssh -D – tunelare proxy SOCKS
impacket – asigură manipularea de protocol Windows(psexec, secretsdump)

Utilitare generală

Instrumente de asistență pentru diverse sarcini.

curl Transfer de date cu sintaxă URL
httpie Client HTTP ușor de utilizat
trufflehog Scaner de parole și date de autentificare

Funcționalități viitoare

  • Browser web: MCP-Playwright pentru navigare web automatizată
  • Interpret de cod: Interpret de cod MCP pentru execuția Python
  • Bază de date de exploatări: Integrare cu Exploit-DB sau alți furnizori de scripturi de exploatare
  • Instrumente interactive: Suport pentru Metasploit și alte cadre interactive

Fluxul de lucru al agenților

BlacksmithAI urmează o metodologie structurată de testare de penetrare prin executarea coordonată a agenților:

1. Agentul Orchestrator

Rol: Comandant general

Orchestratorul este punctul central de coordonare care:

  • Menține planul de misiune la nivel înalt
  • Gestionează o listă de sarcini de îndeplinit
  • Delegtă sarcinile către subagenți specializați
  • Generează rapoarte finale structurate cu constatările, gravitatea, dovezile și îndrumări de remediere

2. Agent de recunoaștere

Rol: Cartografierea suprafeței de atac

Realizează o hartă detaliată a mediului țintă:

  • OSINT pasiv: înregistrări DNS, certificate SSL, date WHOIS
  • Scanare activă a rețelei: identificarea porturilor și a serviciilor
  • Identificarea statck-ului potrivit: identificarea tehnologiilor și a versiunilor

3. Agent de scanare și enumerare

Rol: Inspecție aprofundată

După cartografierea suprafeței de atac, acest agent:

  • Efectuează enumerarea utilizatorilor
  • Analizează API-urile și punctele finale
  • Identifică versiunile și configurările incorecte
  • Identifică potențialele puncte de intrare

4. Agent de analiză a vulnerabilităților

Rol: Evaluarea riscurilor

Analizează rezultatele scanării pentru a:

  • Corela serviciile cu vulnerabilitățile cunoscute(CVE-uri, defecte logice,bugs)
  • Stabil priorități în funcție de impact si posibilitatea de exploatare.
  • Genera  rezumate concise ale dovezilor
  • Crea  ipoteze de atac

5. Agent de exploatare

Rol: Executarea demonstrării de concept

Validează vulnerabilitățile prin exploatare controlată:

  • Execută exploit-uri într-un mod controlat
  • Validează impactul fără a provoca daune colaterale
  • Furnizează dovezi clare ale compromiterii
  • Obține dovezi(de ex., acces la shell, extragerea datelor)

6. Agent post-exploatare

Rol: Evaluarea impactului

După o exploatare reușită:

  • Evaluează raza de acțiune a compromiterii
  • Identifică căile de pivotare pentru mișcarea laterală
  • Descoperă credențialele și mecanismele de autentificare

Vizualizarea workflow-ului(fluxului de lucru)

Orchestrator

Agent de recunoaștere > Harta suprafeței de atac

Agent de scanare/enumerare > Informații detaliate despre servicii

Agent de analiză a vulnerabilităților > Prioritizarea vulnerabilităților

Agent de exploatare > Demonstrare de concept

Agent post-exploatare > Evaluarea impactului

Orchestrator > Raport final

Troubleshooting probleme cu dependinte sau diverse probleme ce pot apărea:

Depanare probleme cu Docker

Containerul nu pornește

# Verificați dacă Docker rulează
docker ps

# Vizualizați jurnalele containerului
docker logs mini-kali-slim

Porturi asignat deja si aflat in conflict

# Verificați ce utilizează portul 9756
lsof -i :9756

# Utilizați un alt port
docker run -i –rm -p 9757:9756 mini-kali-slim -d

Probleme legate de furnizorul LLM

Erori de conexiune OpenRouter

  • Verificați cheia API din fișierul .env
  • Verificați starea OpenRouter: https://status.openrouter.ai/
  • Asigurați-vă că aveți conexiune la internet

Erori de conexiune VLLM

  • Verificați dacă serverul VLLM rulează: curl http://localhost:8000/v1/models
  • Verificați configurația portului în config.json
  • Asigurați-vă că aveți suficientă memorie GPU/memorie pentru VLLM

Probleme legate de frontend

Erori de compilare

# Ștergeți și recompilați
cd blacksmithAI/frontend
rm -rf node_modules .next
pnpm install
pnpm build

Interfața utilizatorului nu se conectează

  • Asigurați-vă că serverul de dezvoltare LangGraph rulează
  • Verificați dacă există erori în consola browserului
  • Verificați dacă portul 3000 nu este ocupat

Probleme legate de performanța agentului

Răspunsuri lente

  • Treceți la un model LLM mai rapid
  • Verificați resursele sistemului (RAM/CPU)

Agentul s-a blocat într-o buclă

  • Reduceți complexitatea sarcinii
  • Consultați documentația instrumentului
  • Verificați jurnalele agentului pentru a identifica eventualele erori

Erori frecvente

„Module not found”

# Reinstalează dependențele
cd blacksmith/blacksmithAI
uv sync

„Permission denied”

# Corectează permisiunile fișierelor cu
chmod +x blacksmith/blacksmithAI/main.py

Tip solutie

Permanent

Voteaza

(7 din 12 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?