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
KDStab — BOF combinazione di KillDefender e Backstab | Kitploit
Strumenti/GitHubGitHub/octoberfest7/kdstab
Strumenti DifensiviEscalation di PrivilegiFramework di ExploitPost-ExploitRed TeamingSviluppo Payload
GitHuboctoberfest7/kdstab

KDStab

BOF combinazione di KillDefender e Backstab

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

KDStab

6/28/2022: Microsoft ha rilasciato una patch che impedisce l'apertura di un handle al token di MsMpEng.exe, e di conseguenza la parte KillDefender di questo strumento non funziona più. Backstab dovrebbe funzionare ancora. Non sono sicuro dell'ID della patch, potrebbe funzionare su sistemi meno recenti non patchati. Verificato su Win10 21H2 e Win11.

Questa è un'implementazione combinata di Beacon Object File di Backstab di Yaxser e KillDefender di pwn1sher per l'uso con Cobalt Strike.

image

Introduzione

KDStab è uno strumento di post-sfruttamento per sconfiggere Windows Defender (in teoria potrebbe funzionare anche per altre soluzioni, ma non è stato testato) in modo che altri strumenti post-ex possano essere utilizzati con meno timore di rilevamento. Sfrutta Backstab e KillDefender per raggiungere questo obiettivo, entrambi chiamati quando appropriato dal comando kdstab di Cobalt Strike.

KDStab è stato testato con successo su x64 Windows 10, Windows 11 e Server 2019.

KDStab richiede privilegi di Amministratore o di Sistema.

Funzioni principali:

  1. Enumerare l'integrità di un processo

  2. Spogliare un processo dei suoi privilegi e impostare la sua integrità su Non attendibile (Untrusted)

  3. Uccidere un processo protetto da PPL

  4. Elencare gli handle per un processo protetto da PPL

  5. Chiudere un handle specifico per un processo protetto da PPL

Esempi

Controllare il livello di integrità di un processo

image

Spogliare un processo dei suoi privilegi e impostare il suo token su Non attendibile

image

Risultato del comando /STRIP

image

Uccidere un processo protetto da PPL

image

Contesto

Mi sono imbattuto in KillDefender di pwn1sher subito dopo la sua uscita e l'ho trovato fantastico; oltre a rendere inutile MsMpEng.exe (Defender), lascia il processo in esecuzione, cosa che sembra desiderabile dal punto di vista OPSEC (oltre al fatto che il comportamento predefinito del servizio WinDefend è riavviare MsMpEng.exe in caso di errore - cosa che tornerà utile in seguito).

Anche se accecare Defender è fantastico per un impegno, come professionisti siamo responsabili di ripristinare gli asset del cliente allo stato in cui li abbiamo trovati; inoltre, non vogliamo davvero lasciare i loro sistemi esposti ad altri attori perché abbiamo Kill(ed)Defender.

Il problema è che è difficile "ripristinare" MsMpEng.exe al suo stato di funzionamento. KillDefender funziona spogliando il processo target dei suoi privilegi (SeDebugPrivilege, ecc.) e impostando l'integrità del suo token su non attendibile. Non è possibile semplicemente "riescalare" il token a System e ripristinare i privilegi, il processo deve essere ucciso e avviata una nuova istanza. Naturalmente MsMpEng.exe è anche un processo PsProtectedSignerAntimalware-Light, quindi anche come System non possiamo semplicemente terminare il processo. Frustrantemente, il gruppo TrustedInstaller è stato recentemente rimosso da MsMpEng.exe (puoi trovare altre ricerche al riguardo), rendendo inefficace quella tecnica per uccidere veramente il processo MsMpEng.exe (o il servizio WinDefend) che è in circolazione da molti anni. Detto questo, l'unica opzione apparentemente praticabile è riavviare la macchina, il che potrebbe causare problemi al cliente se parliamo di server e DC.

Armato di questo problema, ho iniziato a cercare e ho subito trovato Backstab di Yaxser. Backstab è in grado di uccidere processi protetti da PPL sfruttando il driver di ProcExp; questo è un driver firmato Microsoft di Sysinternals che gioca a nostro favore. Backstab esegue alcune azioni non sicure dal punto di vista OPSEC; scarica il driver su disco e crea chiavi di registro. Tuttavia, se Defender è già accecato... :).

Ho deciso di portare entrambi questi strumenti in formato BOF in modo che possano essere utilizzati tramite un Beacon di Cobalt Strike senza bisogno di scaricarli su disco (il binario originale di Backstab veniva bloccato all'esecuzione da Defender).

Sono nuovo sia del C/C++ che della scrittura di BOF e ho imparato molto durante il processo. Troverai alcune incongruenze nel codice (come Backstab_bof scritto e compilato su Linux con gcc e KillDefender_bof scritto e compilato in Visual Studio) dovute al fatto che ho imparato durante la creazione, ma ho fatto una discreta quantità di test per garantire la funzionalità e ho anche creato molte guide nello script aggressor per garantire un uso corretto e input corretti ai BOF. Spero che troviate questo strumento utile.

Modifiche e Note di Programmazione:

Alcune modifiche notevoli sono state apportate al codice sorgente degli strumenti e sono state effettuate alcune scelte programmatiche che verranno menzionate qui:

  1. Il driver ProcExp non è più memorizzato/caricato come risorsa, ma è un array di byte hardcoded in backstab_src/resource.c

  2. C'erano diverse perdite di memoria nel codice originale di Backstab che ho trovato e risolto

  3. Il POC di KillDefender fallisce quando l'utente non è System; ho aggiunto un frammento per enumerare l'utente in esecuzione e ottenere i privilegi di System tramite impersonificazione del token di Winlogon se necessario.

  4. KillDefender è stato modificato per permettere agli utenti di specificare quale processo targetizzare; inoltre è stata aggiunta una modalità "Check" per enumerare il livello di integrità di un processo (che può confermare che un processo è stato spogliato con successo dei suoi privilegi e integrità).

  5. Backstab utilizza abbastanza API e chiamate C diverse che Cobalt Strike non è stato in grado di gestire la risoluzione di tutte le risoluzioni dinamiche delle funzioni - Trustedsec in soccorso! Ho implementato la loro risoluzione dinamica delle funzioni per integrare quella di CS in modo che tutte le API necessarie potessero essere chiamate.

  6. L'Backstab originale ha diverse dichiarazioni switch/case che hanno causato problemi durante il porting, quindi sono state sostituite con dichiarazioni if/else. Inoltre, praticamente tutte le variabili globali sono state eliminate per motivi simili.

  7. So che è strano che uno strumento sia stato scritto per Visual Studio e l'altro per GCC; questo è un danno collaterale delle mie difficoltà nel portarli con successo e di molti dolori di crescita lungo il percorso. Gli strumenti futuri dovrebbero trarre vantaggio da molte lezioni che ho imparato qui.

  8. Sia KillDefender_bof che Backstab_bof esistono come repository autonomi. NOTA CHE IL CODICE È DIVERSO TRA I REPOSITORY AUTONOMI E QUESTO STRUMENTO. Questo è stato fatto per renderli più flessibili e in grado di integrarsi in un unico pacchetto.

Per Compilare:

Non ho provato a compilare nessuno dei due strumenti per x86; se hai davvero bisogno di una versione per questa architettura, lascio a te il compito di capire come fare.

Per compilare Backstab_bof con gcc:

root@kitploit:~
x86_64-w64-mingw32-gcc -o backstab.x64.o -Os -c main.c -DBOF -D_UNICODE

Assicurati di aver aggiornato il tuo mingw all'ultima versione! Ho avuto problemi con la mia versione che aveva file header obsoleti, ma l'ultima versione ha file header corretti.

Per compilare KillDefender_bof usando il prompt dei comandi nativo x64:

root@kitploit:~
cl.exe /c /GS- /TP killdefender_bof.cpp /FoKillDefender.x64.o

Crediti

  1. Yaxser e il suo strumento Backstab: https://github.com/Yaxser/Backstab

  2. pwn1sher e il suo strumento KillDefender: https://github.com/pwn1sher/KillDefender

  3. Trustedsec per il suo repository CS-Situational-Awareness-BOF che è stato di grande aiuto durante il processo di porting. Ho utilizzato frammenti del suo codice in questo progetto e consiglio vivamente a chiunque stia iniziando a scrivere BOF di dare un'occhiata al repository: https://github.com/trustedsec/CS-Situational-Awareness-BOF

Scarica lo strumento