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
SharpFtpC2 — Un condotto di comando e controllo semplificato basato su FTP per interconnettere sistemi remoti. | Kitploit
Strumenti/GitHubGitHub/darkcodersc/sharpftpc2
Strumenti di Crittografia/DecrittografiaCommand and ControlApprendimento e FormazioneRed TeamingSviluppo PayloadAttacco Avversario
GitHubdarkcodersc/sharpftpc2

SharpFtpC2

Un condotto di comando e controllo semplificato basato su FTP per interconnettere sistemi remoti.

Vedi Repository
90182 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

SharpFtpC2 (PoC)



SharpFtpC2 è un piccolo progetto sperimentale volto a esplorare la possibilità di utilizzare FTP(S) per inoltrare comandi e risposte tra due computer remoti. Impiega il protocollo FTP come un tunnel improvvisato attraverso il quale i computer, entrambi agenti come client connessi a un server FTP, possono comunicare. Viene utilizzato un semplice schema di gestione delle sessioni per tenere traccia dello scambio di richieste e risposte.

SharpFtpC2 adotta un sistema di gestione delle sessioni di base. Sebbene piuttosto elementare, serve allo scopo di mantenere le comunicazioni sincronizzate e correlate, aspetto essenziale per il dialogo tra i sistemi remoti.

Vale la pena notare che questo progetto può essere agevolmente portato utilizzando sistemi di controllo versione come git, svn o protocolli simili.

Se sei interessato ai dettagli tecnici della comunicazione di rete, o semplicemente vuoi sperimentare con C# e .NET Core, SharpFtpC2 potrebbe essere un punto di partenza intrigante. Non aspettarti un gioiello rifinito, ma forse, chissà, potresti imparare qualcosa di interessante giocandoci.

SharpFtpC2 è un progetto sperimentale creato per l'esplorazione educativa dell'utilizzo di FTP(S) come canale di comunicazione tra due computer remoti. È fondamentale comprendere che il progetto è progettato come risorsa di apprendimento per persone interessate a comunicazione di rete, C#, Adversary Simulation, Red Team, Malware. Come creatore, esorto gli utenti a non richiedere funzionalità aggiuntive o utilizzare questo progetto per qualsiasi forma di armamento o intento malevolo. L'intenzione principale è educativa e ci si aspetta che gli utenti interagiscano con i contenuti in modo responsabile ed etico.


La Storia Dietro il Progetto

SharpFtpC2 è nato dal desiderio di contribuire al Unprotect Project, in particolare alla sua categoria Network Evasion.

Questa idea di utilizzare FTP come "tunnel" ha radici profonde. In effetti, riporta alla mente ricordi piacevoli del 2005, quando muovevo i primi passi nel mondo della programmazione. All'epoca, incontrai una persona francese straordinariamente creativa con il soprannome BlasterWar. Aveva ideato un progetto chiamato BlasterX, che, sebbene ormai perso nel tempo, era piuttosto avanguardistico per la sua epoca.

L'ingegno di BlasterWar nel suo progetto consisteva nel fornire un'alternativa alla connessione inversa convenzionale, in cui l'agente doveva stabilire una connessione verso il dispositivo di controllo o hacking.

Invece, BlasterWar scelse di utilizzare FTP (File Transfer Protocol) come mezzo alternativo e costruì attorno ad esso un completo Remote Access Tool. Lo strumento includeva funzionalità come Screen Capture, Keylogging e System Management, tutte trasmesse attraverso il tunnel FTP. All'epoca, FTP era molto popolare e una miriade di siti web offrivano server FTP gratuiti al pubblico. Questo lo rendeva un'ideale alternativa alle connessioni inverse o dirette, che richiedevano il port forwarding. Inoltre, forniva un ulteriore livello di offuscamento per il comando e controllo (C2) poiché l'indirizzo IP della macchina dell'hacker non era direttamente esposto.

Oggi, utilizzare FTP come tunnel non è un concetto nuovo, poiché alcuni framework di Command and Control (C2) hanno adottato questo protocollo. Tuttavia, impiegare FTP in questo modo è irto di rischi. In particolare, la trasmissione delle credenziali in chiaro su rete da parte di FTP, combinata con la necessità che entrambe le parti possiedano tali credenziali, lo rende suscettibile a una miriade di attacchi. Sebbene i server FTP abbiano fatto progressi nell'affrontare questi problemi di sicurezza adottando sempre più FTPS, che integra la crittografia SSL/TLS, questo adattamento non è stato una panacea per tutti i rischi intrinseci.

Con un po' di ingegno e prendendo spunto dai protocolli esistenti, è possibile affrontare un numero sostanziale dei rischi attuali.

Provalo

Per compilare questo progetto, hai bisogno di due componenti: Visual Studio e una dipendenza per il controller chiamata CommandLineUtils.

Poiché questo progetto utilizza .NET Core, può essere compilato per varie piattaforme con facilità, senza bisogno di modifiche al codice. Tuttavia, potresti dover implementare funzionalità specifiche adatte alla piattaforma di destinazione.

Per iniziare rapidamente a testare questo progetto, ti consiglio di utilizzare Docker con l'immagine stilliard/pure-ftpd. Questa immagine supporta una serie di opzioni, consentendoti di configurare rapidamente il tuo server FTP con facilità.

docker pull stilliard/pure-ftpd

Senza TLS

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark stilliard/pure-ftpd

Con TLS (Consigliato)

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x --tls=2" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark -e "TLS_CN=localhost" -e "TLS_ORG=maislaf" -e "TLS_C=FR" stilliard/pure-ftpd

Sentiti libero di personalizzare le impostazioni secondo le tue esigenze. Tuttavia, sconsiglio vivamente di esporre questo server FTP di test a reti locali o pubbliche. Sarebbe più prudente limitare l'esposizione di questo container alla sola macchina host.

L'opzione ADDED_FLAGS ti permette di ottimizzare il server pure-ftpd. Le spiegazioni di tutte le flag sono disponibili qui.

Alcune flag potrebbero richiedere modifiche al funzionamento del protocollo C2. Ad esempio, se utilizzi l'opzione -K per conservare tutti i file, la possibilità di eliminare file tramite FTP sarà disabilitata. Poiché l'attuale protocollo C2 utilizza questa funzionalità, potresti dover considerare approcci alternativi, come la ridenominazione o lo spostamento dei file.

Crittografia C2 (RSA + AES)

Per garantire l'integrità e la riservatezza di tutte le comunicazioni tra gli agenti e il C2, la crittografia è stata integrata senza soluzione di continuità nel protocollo di comunicazione, utilizzando gli algoritmi RSA e AES-GCM a 256 bit. L'obiettivo principale di questa funzionalità è impedire la possibilità che un server FTP compromesso possa fornire comandi malevoli. Impiegando la crittografia, l'iniezione di comandi diventa impossibile senza accesso alla chiave pubblica dell'agente. Allo stesso modo, non è possibile iniettare risposte false da parte dell'agente senza possesso della chiave pubblica del C2.

Per semplificare il processo di generazione delle proprie coppie di chiavi (una coppia per l'agente e una per il C2), ho incluso uno strumento di terze parti chiamato RSAKeyHelper. Ogni volta che esegui l'applicazione, ti presenterà una coppia di chiavi pubblica e privata appena generate, che possono essere utilizzate all'interno del programma se scegli di impiegare la crittografia.

Banner Image

Per verificare che tutto funzioni come previsto, ho integrato anche una funzionalità nello stesso strumento che ti consente di testare la crittografia delle stringhe.

Banner Image

Comandi Supportati

  • Eseguire un comando shell e ricevere la risposta.
  • Terminare il processo dell'agente.

Changelog

09 Giugno 2023 - v1.0b

  • Prima release.

16 Giugno 2023 - v1.0

  • Introdotto il supporto per la crittografia, utilizzando algoritmi RSA e AES-GCM a 256 bit, per salvaguardare l'integrità e la riservatezza delle comunicazioni tra agenti e server C2.

21 Giugno 2023 - v2.0

  • Ottimizzazione del codice: la base di codice è stata ottimizzata per migliori prestazioni.
  • Miglioramento del protocollo: il protocollo di comunicazione è stato migliorato ed è ora più modulare, consentendo una maggiore flessibilità.
  • Supporto per diverse coppie di chiavi RSA: C2 e agenti possono ora operare con diverse coppie di chiavi RSA, consentendo loro di coesistere senza conflitti sullo stesso server FTP.
  • Implementazione del delegato di validazione delle azioni pericolose: è stato implementato un delegato di validazione per richiedere conferma all'utente prima di eseguire azioni potenzialmente pericolose.

23 Giugno 2023 - v3.0 Finale

  • È stata implementata una correzione di bug per l'esecuzione dei comandi shell. Tutti i comandi dovrebbero ora essere eseguiti senza causare il blocco dell'intera applicazione.
  • È stato aggiunto il controllo della versione del protocollo tra il Command and Control (C2) e gli agenti. Se viene rilevata una discrepanza nella versione del protocollo, l'agente verrà ignorato dal C2.

La release della versione "3.0 Finale" segna il culmine di questo progetto. Non aggiungerò ulteriori funzionalità; l'obiettivo di questo PoC era dimostrare la creazione di un C2 affidabile e sicuro utilizzando FTP(S). Sei incoraggiato a sviluppare la tua versione con funzionalità personalizzate. Come esercizio, potresti considerare l'implementazione di un tasking multi-thread per evitare che l'applicazione si blocchi durante attività di lunga durata.

Continuerò comunque a fornire supporto per il progetto in termini di correzione di eventuali bug o opportunità di ottimizzazione.

Screenshot

(Lista degli agenti) Main

(Esegui comando sull'agente attivo (contesto)) Command

(Finestra di debug della console dell'agente con conferma utente per azioni pericolose) Agent

Scarica lo strumento