
Piattaforma di penetration testing all-in-one con proxy MITM, web fuzzer, gestore di connessioni inverse e sistema di plugin per test di sicurezza ed exploitation automatizzati.
Leggi il whitepaper • Documentazione ufficiale • Segnala problemi • Vai al sito ufficiale • Unisciti alla community • Architettura del progetto
:book:Selezione lingua: English • 中文
La convergenza della sicurezza è una riforma delle operazioni di sicurezza e della gestione della sicurezza per le imprese nella nuova normalità, ed è anche una priorità assoluta per le imprese in questo contesto.
Basandosi sul concetto di convergenza della sicurezza, il team di Yaklang.io ha sviluppato Yaklang, un linguaggio verticale nel campo della sicurezza. Per quei prodotti/strumenti che non possono essere integrati in modo nativo nella piattaforma Yak, Yaklang può essere utilizzato per riscrivere le loro "alternative di alta qualità". Per i prodotti con un ecosistema completo e un alto riconoscimento, Yaklang può essere compilato e integrato direttamente, apportando le necessarie modifiche al codice sorgente per adattarsi meglio al linguaggio Yaklang. Per i professionisti della sicurezza che non vogliono scrivere codice, Yakit fornisce GUI adeguate per tutte le capacità di Yaklang, e con gli aggiornamenti delle versioni, la GUI diventerà più matura.
Per rendere le capacità di sicurezza di Yaklang più vicine all'uso pratico, abbiamo scritto un server gRPC per Yak e utilizzato questo server per costruire un client: Yakit.
CDSL è definito come CyberSecurity Domain Specific Language, un linguaggio di programmazione specifico per il dominio della cybersecurity; abbiamo scritto una macchina virtuale a stack per gestire lo stato runtime di questo linguaggio Turing-completo. Speriamo di realizzare la convergenza delle capacità di sicurezza e l'unificazione della piattaforma sottostante attraverso il mezzo "CDSL".
Per rendere il CDSL sviluppato autonomamente nel campo della sicurezza più vicino agli scenari di utilizzo reali, abbiamo scritto un server gRPC per Yaklang e costruito il client Yakit basato su di esso. In pratica, si controllano le capacità del motore attraverso la GUI di Yakit. Il server gRPC di Yakit rende la distribuzione più comoda e veloce, indipendente dalla piattaforma, con la possibilità di scegliere la distribuzione remota o l'avvio locale direttamente sull'host.
Panoramica delle capacità di sicurezza:
La console MITM può sostituire al 100% BurpSuite per eseguire tutte le operazioni (scaricare e installare certificati, intercettare richieste e risposte, modificare i pacchetti intercettati, ecc.). Inoltre, fornisce un flusso di lavoro completo e fluido: intercettazione => History => Repeater/Intruder. Si intercettano i dati, si visualizzano i dati storici in History, si selezionano i pacchetti da "scavare" e si inviano a Web Fuzzer per operazioni di Repeater/Intruder. Oltre a questi scenari tipici, MITM offre funzionalità più flessibili come scansione passiva tramite plugin, hot-reload, sostituzione di pacchetti, marcatura, ecc.
Il principio del modulo MITM di Yakit è avviare un proxy HTTP che inoltra automaticamente il traffico. Quando l'utente avvia l'intercettazione manuale, l'inoltro automatico si ferma, le richieste vengono bloccate e vengono estratte, sottoposte a decompressione Gzip, gestione chunk, decodifica, ecc., rendendo le richieste leggibili dall'uomo e visualizzate nell'interfaccia utente. L'utente può visualizzare, modificare o riprodurre le richieste. Durante la riproduzione, i pacchetti HTTP costruiti dall'utente vengono riparati per garantirne la validità. Il motore Yak ha implementato manualmente una libreria HTTP, quindi gli utenti possono personalizzare pacchetti di richiesta e risposta malformati per sfruttare vulnerabilità in scenari speciali.
Il modulo Web Fuzzer consente all'utente di inviare richieste HTTP personalizzate in formato raw. Per rendere l'uso semplice e intuitivo, permettendo all'utente di preoccuparsi solo dei dati, il backend di Yakit fa molto lavoro. Alcune informazioni necessarie per la trasmissione e l'analisi dei dati nel raw HTTP vengono riparate e completate dal backend di Yakit, ad esempio la correzione di CRLF, il completamento di Content-Type, la trasmissione in chunk, il completamento di boundary, la correzione di Content-Length, ecc.
Il modulo Web Fuzzer supporta l'uso di tag Fuzz per integrare in modo naturale e perfetto funzionalità come Host collision, Intruder, directory brute-force, ecc. Ad esempio, in uno scenario di brute-force su un singolo parametro, come l'ID utente, è possibile utilizzare il tag {{int(1-10)}} per generare automaticamente gli ID da testare. Per scenari con più parametri, si utilizza il prodotto cartesiano come parametri di brute-force, eliminando la necessità di selezionare una modalità di attacco e importare dizionari come nel modulo Intruder di BurpSuite, riducendo notevolmente i passaggi operativi e adattandosi alle abitudini dell'utente. Naturalmente, oltre alla generazione automatica di parametri tramite tag, Web Fuzzer supporta anche l'importazione di dizionari esterni, ad esempio {{file(/tmp/username.txt)}}. Per scenari dati più complessi, Web Fuzzer supporta l'inserimento di tag hot-reload; ad esempio, per forzare numeri di carta d'identità di una determinata regione, è possibile inserire script Yak direttamente nel modulo Web Fuzzer per generare dati da testare. Invece, il modulo Intruder di BurpSuite, in tali scenari, richiede di scrivere codice per generare un dizionario e poi importarlo.
Per maggiori informazioni sui tag Fuzz, consulta: Panoramica di Fuzztag
Molti scenari di exploit richiedono callback di servizi con diversi protocolli. Gli strumenti di exploit tradizionali necessitano di un server pubblico che ascolti una porta per ogni servizio. Ad esempio, per un exploit di tipo LDAP, è necessario avviare un servizio HTTP, un servizio LDAP e quindi inviare una richiesta di attacco per completare l'exploit. I servizi tradizionali richiedono una porta unica per ogni servizio. La tecnologia di multiplexing delle porte e dei protocolli di Yaklang consente di ascoltare su una singola porta, riconoscere il protocollo della richiesta e rispondere di conseguenza. I vantaggi della tecnologia di multiplexing di Yaklang includono il risparmio di risorse di sistema, la facilità di test manuali, ecc. Inoltre, poiché il principio di base è il riconoscimento manuale delle intestazioni di vari protocolli e l'implementazione manuale basata sugli standard, è possibile costruire pacchetti di protocollo flessibili. Ad esempio, è possibile costruire protocolli malformati per l'exploit o trasportare dati attraverso protocolli DNS, ICMP, ecc. Ciò può essere utilizzato per mantenere i permessi di una backdoor o per sfruttare vulnerabilità in situazioni in cui il protocollo TCP non è disponibile.
Allo stesso tempo, Yakit implementa un modulo di callback basato sulla tecnologia di multiplexing delle porte e dei protocolli, che include funzionalità di Reverse Shell, exploit tramite callback e rilevamento di callback. Reverse Shell consente di ascoltare una porta specifica come ricevente di una shell inversa; una volta ricevuta, è possibile controllare il server remoto come con SSH. Nelle esigenze tradizionali di penetration test per le callback, era necessario utilizzare Nc per ascoltare una porta, ma alcuni tasti come backspace e frecce direzionali producevano caratteri illeggibili, e l'esperienza d'uso della shell inversa era molto diversa da quella di una SSH nativa. Invece, Reverse Shell di Yakit può offrire un'esperienza simile a quella di una SSH nativa. La parte di exploit tramite callback consente di ascoltare una porta e impostare payload per callback di diversi protocolli; ricevuta una richiesta, il protocollo viene riconosciuto automaticamente e viene restituito il payload corrispondente, realizzando l'exploit. La funzione di rilevamento callback fornisce rilevamento di callback TCP, DNSLog e ICMP, utilizzabili per il rilevamento di esecuzione di comandi.
Per ulteriori contenuti tecnici, consulta:
Se hai suggerimenti costruttivi o segnalazioni di bug sui nostri prodotti, ti invitiamo ad aprire una issue.
Oppure contattaci tramite l'account ufficiale WeChat. Siamo anche aperti a contatti per licenze commerciali e collaborazioni.
Per unirti al gruppo di discussione o per comunicare con i tecnici, contatta e aggiungi l'account operativo WeChat per unirti alla community:
Codice QR dell'account pubblico:
Questo strumento è destinato esclusivamente ad attività di sicurezza aziendale autorizzate legalmente e per l'apprendimento personale. Se è necessario testare la funzionalità dello strumento, si prega di allestire un ambiente di destinazione personalmente.
Quando si utilizza questo strumento per il rilevamento, è necessario assicurarsi che l'azione sia conforme alle leggi e ai regolamenti locali e che si disponga di autorizzazioni sufficienti. Non eseguire scansioni su obiettivi non autorizzati.
È vietato eseguire operazioni di reverse engineering, decompilazione, tentativi di decifrare il codice sorgente, inserire backdoor o diffondere malware su questo software.
Se è necessario utilizzare Yakit per scopi commerciali, assicurarsi di aver ottenuto l'autorizzazione ufficiale; in caso contrario, perseguiremo le relative responsabilità.
Se si rilevano i suddetti comportamenti proibiti, ci riserviamo il diritto di perseguire legalmente le responsabilità.
Se si verificano comportamenti illegali durante l'uso di questo strumento, l'utente dovrà assumere le conseguenze corrispondenti e noi non ci assumeremo alcuna responsabilità legale o connessa.
Prima di installare e utilizzare questo strumento, leggere attentamente e comprendere appieno i termini
Le clausole di limitazione, esonero di responsabilità o altre clausole che riguardano i tuoi diritti importanti possono essere evidenziate in grassetto, sottolineato o altre forme per attirare la tua attenzione.
A meno che tu non abbia letto completamente, compreso appieno e accettato tutti i termini del presente accordo, non installare né utilizzare questo strumento. L'uso dello strumento o qualsiasi altra dichiarazione esplicita o implicita di accettazione del presente accordo sarà considerata come accettazione dei termini e delle condizioni.