Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cowcloud — Soluzione serverless AWS per la distribuzione di carichi di lavoro di ricognizione e scansione delle vulnerabilità. Invia le attività tramite interfaccia web; i worker EC2 eseguono script Python personalizzati con strumenti come Nmap. | Kitploit
Strumenti/GitHubGitHub/nccgroup/cowcloud
Sicurezza dell'Infrastruttura CloudFrameworks per Penetration TestingScanner di VulnerabilitàScripting e AutomazioneRaccolta InformazioniSicurezza CloudDevSecOpsUtilità e Framework
GitHubnccgroup/cowcloud

cowcloud

Soluzione serverless AWS per la distribuzione di carichi di lavoro di ricognizione e scansione delle vulnerabilità. Invia le attività tramite interfaccia web; i worker EC2 eseguono script Python personalizzati con strumenti come Nmap.

6023 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

CowCloud

una soluzione serverless per distribuire carichi di lavoro in AWS

CowCloud è stato originariamente creato per eseguire strumenti di ricognizione e scan di vulnerabilità in modo distribuito; per esempio, un caso d'uso potrebbe essere quello dei cacciatori di bug bounty. Questa soluzione è pensata per astrarre gli utenti finali dal lavoro sottostante necessario per distribuire i carichi di lavoro in AWS. CowCloud offre agli utenti un'interfaccia web intuitiva per visualizzare e creare nuove attività che successivamente vengono consumate dal codice Python in esecuzione sui nodi worker (istanze EC2). È previsto che il codice Python venga personalizzato così come le AMI EC2. Ad esempio, supponiamo di voler eseguire scan Nmap. In quel caso puoi semplicemente scegliere un'AMI dal Catalogo AMI e aggiornare il campo image_id in Terraform/ec2_module/ec2_module.tf. Poi, il file ec2py/template.py dovrà essere aggiornato per personalizzare gli argomenti per lo scan Nmap (-Pn, -p 443, ecc.). Infine, il campo user_data nel file di configurazione Terraform/ec2_module/ec2_module.tf dovrà essere aggiornato per installare Nmap e le sue dipendenze.

Un'altra opzione è installare ed eseguire diversi strumenti commerciali; in tal caso potresti voler creare la tua istanza EC2 o uno snapshot. In questo caso installeresti tutte le dipendenze e attiveresti le licenze in modo da poter usare questa AMI come immagine gold per i tuoi worker.

Screenshot

CowCloud può essere suddiviso in tre componenti principali:

  • una configurazione Terraform
  • un front-end in React JS
  • un'app Python che gira sui nodi worker

Queste sono le funzionalità principali:

  • La soluzione usa Amazon Cognito (con un user pool) così gli utenti possono registrarsi e accedere alla webapp
  • App React JS come applicazione front-end. Il front-end mostra le attività e i worker e permette di aggiungere nuove attività
  • API Gateway con integrazione Lambda per gestire il CORS e interagire con alcune delle funzioni Lambda per creare e ottenere informazioni dalla DynamoDB
  • CloudFront per la gestione di SSL e cache
  • WAF con regole e condizioni sugli indirizzi IP per limitare l'accesso alla webapp (opzionale)
  • Bucket S3 per archiviare i risultati dell'esecuzione e l'app front-end; un bucket S3 separato viene usato come repository di codice per l'app Python.
  • Un'app Python come nucleo per l'esecuzione delle attività sulle istanze EC2 (worker); le azioni dello strumento possono essere suddivise in una serie di passaggi:
    • L'app Python consuma i messaggi
    • esegue scan
    • comprime l'output
    • e cripta l'output con AES256-CBC e una password
    • quindi carica il risultato su un bucket S3
  • Ogni volta che viene creato un nuovo worker, il repository Python viene scaricato da un bucket S3 e quindi viene eseguito il file ec2py in esso incluso.
  • Ogni volta che viene creato un nuovo worker, un EIP può essere assegnato automaticamente all'istanza (opzionale)
  • Gruppi di log CloudWatch per archiviare i log da varie fonti come errori Lambda, eccezioni che si verificano nello strumento Python ec2app, API Gateway, log Docker e molto altro
  • Lifecycle hook per cambiare lo stato dei worker su DynamoDB e impedire che i worker vengano terminati mentre un'attività è ancora in esecuzione
  • Strategia di autoscaling basata sul numero di attività in coda e sulla configurazione impostata (ulteriori informazioni su come funziona l'algoritmo si trovano in autoscalingStrategy.py)
  • Mapping delle sorgenti di eventi Lambda collegato alla tabella delle attività in DynamoDB, per gestire le azioni di autoscaling quando gli elementi nel database aumentano o diminuiscono
  • SNS per inviare nuovi messaggi (attività) a un SQS; questi messaggi vengono poi letti dai nodi worker
  • Il servizio Step Functions viene usato per creare un conto alla rovescia ed eliminare i gruppi di log CloudWatch dopo la scadenza di retention_time
  • Se ec2py esegue strumenti (es. Nmap) all'interno di container Docker, lo stdout può essere registrato in CloudWatch e visualizzato tramite il front-end; controlla la variabile nel file (spiegato nella sezione Amministratore/manutentore sotto)

Diagram:

Deprecated

Le seguenti opzioni sono disponibili nella configurazione Terraform:

Come risultato dell'esecuzione di Terraform, viene creato un nuovo file (config.js) che contiene la configurazione necessaria all'app React JS per autenticarsi rispetto alla directory dell'user pool Cognito. Dopo che l'infrastruttura è stata distribuita, devi compilare l'app React e caricare la cartella build. Inoltre, devi caricare il codice Python in un bucket S3 che funge da repository di codice. Questo processo è stato automatizzato in due script setup.bat e setup.sh così non devi preoccupartene; tutto questo è solo per riassumere questa fase.


Passaggi per l'installazione:

L'infrastruttura viene distribuita di default nella regione us-east-1, anche se questo può essere modificato nel file locals.tf all'interno della cartella Terraform.

Passaggi:

  • Dovresti creare un utente con privilegi di amministratore nel tuo account AWS
  • (Opzionale) Crea un'AMI 'golden' con gli strumenti che vuoi
  • Vai alla cartella Terraform e aggiorna variables.tf; la variabile ami deve puntare a un'AMI EC2 esistente, che può essere la tua AMI golden o una dal Catalogo EC2
  • Scarica e installa aws-cli, NPM, Yarn e Terraform sul tuo computer
  • Configura aws-cli per usare il tuo account AWS con aws configure. Verifica di averlo configurato correttamente eseguendo questo comando: aws sts get-caller-identity; se configurato correttamente non dovrebbe restituire un errore
  • (Opzionale) Genera una coppia di chiavi SSH per le istanze EC2. Se non hai intenzione di usare SSH sui worker, aggiorna il modulo ec2_module di conseguenza aws ec2 create-key-pair –key-name cowCloud –query “cowCloud” –output text > ec2_module/cowCloud.pem
root@kitploit:~
git clone [email protected]:nccgroup/cowcloud.git
# Deploy the infra
cd cowcloud
cd Terraform
terraform init
terraform plan
terraform apply --auto-approve
  • Prendi nota del valore (sito web) mostrato nell'output di Terraform: questo è l'URL per accedere al front-end
  • Una volta distribuita l'infrastruttura, devi solo eseguire setup.sh o setup.bat per compilare e caricare il codice front-end ed ec2py

Ora sei pronto per partire! Registrati, accedi e crea una nuova attività!

Flusso dell'utente finale

Una volta che tutto è stato distribuito e il front-end è accessibile, dovresti seguire questi passaggi:

  • Visita il sito web e clicca sul pulsante di accesso (per registrarti ti verrà richiesto di inserire un'email valida, un nome utente e una password)
  • Valida l'email cliccando sul link che ricevi nella tua casella di posta
  • Accedi con email/nome utente e password
  • Clicca sulla scheda chiamata "add a new task" e aggiorna il documento JSON per specificare il dominio di destinazione, quindi invia il modulo; ora riceverai un ID attività, un link e una password che verranno visualizzati qui sotto.
  • Torna alla dashboard e attendi di vedere come viene avviata una nuova istanza EC2 e l'attività viene eseguita dal nodo worker
  • Se l'attività viene eseguita in un container Docker, lo stdout può essere visualizzato tramite l'interfaccia web
  • Dopo che l'attività è stata completata, viene spostata nella tabella di archivio; ora puoi visitare il link fornito, scaricare il risultato, decrittarlo con la password fornita e decomprimere l'output dello strumento o il risultato CowCloud\ec2py> python .\decypt_file.py 2e8cf87c-5389-11ec-abec-d6d1f378b18d
  • Il worker viene terminato automaticamente una volta completata l'attività

Screenshot

Amministratore/manutentore

  • La persona incaricata di distribuire e mantenere l'infrastruttura deve igienizzare e validare correttamente gli input degli utenti finali forniti tramite la web app. In altre parole, deve assicurarsi che il codice in ec2py/template.py non sia vulnerabile all'iniezione di comandi del sistema operativo. Questo punto è evidenziato perché è l'aspetto più critico del sistema. È stata prestata particolare attenzione per limitare l'ambito delle autorizzazioni e dell'esposizione dei worker e ridurre così i rischi associati. Tuttavia, è responsabilità dell'amministratore occuparsi di questo aspetto della sicurezza del sistema. Le policy di ruolo associate al profilo delle istanze EC2 sono elencate nel file readme.md all'interno della cartella Terraform

    • Inoltre, esiste una funzione Lambda chiamata workers_manager.py che viene chiamata dallo strumento ec2py per eseguire azioni più privilegiate. Queste azioni sono state spostate in una funzione Lambda per limitare il rischio nel caso in cui qualcuno compromettesse la chiave di accesso del ruolo associato al profilo EC2. Funziona comunque con IMDSv2. Le policy di ruolo associate alla funzione Lambda workers_manager.py sono elencate nel file readme.md all'interno della cartella Terraform
  • Se vuoi catturare lo stdout e mostrarlo tramite l'interfaccia web mentre l'attività è in esecuzione, vai a ec2py/template.py e segui questi passaggi::

    • La variabile extra_docker_params include le informazioni necessarie affinché i tuoi container Docker inviino lo stdout ai gruppi di log CloudWatch. Dovrai includere questa variabile nella riga di comando quando vuoi visualizzare lo stdout tramite il front-end.
    root@kitploit:~
    cmd = f"docker run {extra_docker_params} --rm -v {tmp_folder}target.txt:/root/Tools/reconftw/target.txt -v {tmp_folder}reconftw.cfg:/root/Tools/reconftw/reconftw.cfg -v {tmp_folder}Recon/:/root/Tools/reconftw/Recon/ six2dez/reconftw:main -l target.txt -w".split(' ')
    

Disinstallazione

Puoi distruggere l'infrastruttura eseguendo questo semplice comando: terraform destroy --auto-approve; questo rimuoverà tutte le risorse esistenti. Nota: non interrompere questo processo poiché potrebbe lasciare alcuni elementi nel cloud che dovresti poi identificare e rimuovere manualmente.


Flusso dell'utente finale

Screenshot

Flusso principale

Screenshot


Note per gli sviluppatori

  • Se apporti una modifica all'app ec2py ricordati di sincronizzare le modifiche con il repository S3; devi quindi terminare le istanze correnti e rilanciarne una nuova per ricevere le ultime modifiche
  • Quando un componente del modulo gateway viene modificato, potresti dover ridistribuire l'API REST, per farlo:
    • terraform destroy --auto-approve -target module.gateway_module.aws_api_gateway_deployment.lambda
    • terraform apply --auto-approve -target module.gateway_module

Ringraziamenti speciali a:

  • Sabrina MM https://www.linkedin.com/in/sabrina-marisol-martinez-a4bb54181/
  • Ricardo Martinez Martin (NCC Group)
  • Conor McErlane (NCC Group)
  • Simon Harraghy (NCC Group)
Scarica lo strumento
extra_docker_params
template.py
  • Il front-end fornisce un pulsante per interrompere le attività durante la loro esecuzione e un altro pulsante per visualizzare i log dei container Docker
  • Se vuoi cambiare qualcosa nel codice front-end o nelle cartelle ec2py, dovrai propagare queste modifiche ai bucket S3 e invalidare la cache per il front-end; puoi fare tutto semplicemente eseguendo setup.bat/sh
  • variabledefault valuedescription
    eipenablefalseSe true, la soluzione alloca un pool di indirizzi IP elastici associati ai nodi worker man mano che vengono avviati. Il numero di EIP da riservare viene calcolato con questa formulasum([var.max_workers, var.maximum_number_of_terminating_machines])
    cidr_whitelist[]La whitelist CIDR per consentire solo determinati intervalli IP nel firewall. Es. ["195.95.131.0/24"]
    max_workers e max_queued_tasks_per_workermax_workers: 3, max_queued_tasks_per_worker: 10Queste due impostazioni determinano quando scalare dentro o fuori, es. max_workers 3, max_queued_tasks_per_worker 10. Ciò significa che se il numero di attività supera dieci, verrà creata una nuova istanza EC2. Se ci sono più di venti attività, saranno disponibili al massimo tre istanze EC2 per distribuire i carichi di lavoro (controlla l'algoritmo presente in questo script Terraform/dynamodb_module/autoscalingTool/autoscalingStrategy.py).
    maximum_number_of_terminating_machines2Definisce il numero di istanze impostate per terminare ma che sono in attesa finché il processo/scan non completa l'attività.
    heartbeat_timeout900Definisce il tempo per cui quei worker rimangono in attesa. Dopo la scadenza di questo tempo, il worker verrà terminato forzatamente.
    instance_typet2.microhttps://aws.amazon.com/ec2/instance-types/
    aminullhttps://aws.amazon.com/es/amazon-linux-ami/
    retention_time7Imposta il tempo di conservazione (in giorni) per i log e la scadenza degli elementi della tabella di archivio (attività completate).