Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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
ScareCrow — ScareCrow - Framework di creazione payload progettato per il bypass dell'EDR. | Kitploit
Strumenti/GitHubGitHub/optiv/scarecrow
Framework di ExploitGenerazione di PayloadShellcodePenetration TestingRed TeamingSviluppo PayloadArchived
GitHuboptiv/scarecrow

ScareCrow

ScareCrow - Framework di creazione payload progettato per il bypass dell'EDR.

Vedi Repository
2.9k529213 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

QUESTO REPOSITORIO È STATO ARCHIVIATO

Per visualizzare l'ultima versione di ScareCrow o per inviare un problema, fare riferimento a https://github.com/Tylous/ScareCrow.



ScareCrow

Ulteriori Informazioni

Se vuoi saperne di più sulle tecniche utilizzate in questo framework, dai un'occhiata alla Parte 1 e alla Parte 2

Descrizione

ScareCrow è un framework per la creazione di payload per il side loading (non l'iniezione) in un processo Windows legittimo (bypassando i controlli di Application Whitelisting). Una volta che il loader DLL viene caricato in memoria, utilizza una tecnica per rimuovere gli hook di un EDR dalle DLL di sistema in esecuzione nella memoria del processo. Questo funziona perché sappiamo che gli hook dell'EDR vengono posizionati quando un processo viene creato.

ScareCrow può colpire queste DLL e manipolarle in memoria utilizzando la funzione API VirtualProtect, che cambia i permessi di una sezione della memoria di un processo in un valore diverso, in particolare da Execute–Read a Read-Write-Execute.

ScareCrow utilizza 1 dei 2 metodi per rimuovere gli hook

Disco

Quando viene eseguito, ScareCrow copia i byte delle DLL di sistema memorizzate su disco in C:\Windows\System32\. Queste DLL sono memorizzate su disco "pulite" dagli hook dell'EDR perché vengono utilizzate dal sistema per caricare una copia inalterata in un nuovo processo quando viene creato. Poiché gli EDR hookano solo questi processi in memoria, rimangono inalterati. ScareCrow non copia l'intero file DLL, ma si concentra solo sulla sezione .text delle DLL. Questa sezione di una DLL contiene l'assembly eseguibile, e facendo ciò, ScareCrow aiuta a ridurre la probabilità di rilevamento poiché la rilettura di interi file potrebbe far sì che un EDR rilevi una modifica a una risorsa di sistema. I dati vengono quindi copiati nella giusta regione di memoria utilizzando l'offset di ciascuna funzione. Ogni funzione ha un offset che indica il numero esatto di byte dall'indirizzo di base in cui risiede, fornendo la posizione della funzione sullo stack.

Per fare ciò, ScareCrow cambia i permessi della regione di memoria .text utilizzando VirtualProtect. Anche se si tratta di una DLL di sistema, poiché è stata caricata nel nostro processo (che controlliamo), possiamo cambiare i permessi di memoria senza richiedere privilegi elevati.

Syscall Indiretti

ScareCrow carica lo shellcode in memoria decrittandolo prima, il quale è crittografato con uno dei tre metodi di crittografia (descritti di seguito). Una volta decrittografato e caricato, lo shellcode viene quindi eseguito. A seconda delle opzioni del loader specificate, ScareCrow imposterà diverse funzioni di esportazione per la DLL. La DLL caricata inoltre non contiene la funzione DLLMain standard che tutte le DLL tipicamente necessitano per funzionare. La DLL verrà comunque eseguita senza problemi perché il processo in cui carichiamo cercherà quelle funzioni di esportazione e non si preoccuperà della presenza di DLLMain.

Esempio Binario

Dopo

KnownDLLs

KnownDLLs è un elenco di DLL che vengono caricate da Windows durante il processo di avvio del sistema. Poiché queste DLL sono considerate essenziali per il funzionamento del sistema operativo, vengono memorizzate nella cache per ridurre i tempi di caricamento e migliorare le prestazioni all'avvio delle applicazioni. KnownDLLs include DLL come kernel32.dll, kernelbase.dll e ntdll.dll.

Utilizzando queste KnownDlls, ScareCrow mappa una copia della DLL da \KnownDlls\<dllname> utilizzando una combinazione di NtOpenSection e NtMapViewOfSection per caricarla nella memoria del processo. ScareCrow non carica l'intera DLL, ma solo la sezione .text della DLL (poiché questa contiene tutte le syscall). Da lì, ScareCrow utilizza syscall indiretti per chiamare NtProtectVirtualMemory e cambiare i permessi della sezione di memoria .text della DLL per consentire a ScareCrow di sovrascrivere gli hook dell'EDR prima di ripristinare i permessi.

Per ulteriori informazioni puoi leggere il dettagliato articolo di modexp.

Una volta rimossi gli hook, ScareCrow utilizza quindi syscall personalizzate per caricare ed eseguire shellcode in memoria. ScareCrow fa questo anche dopo che gli hook dell'EDR sono stati rimossi per aiutare a evitare il rilevamento da parte di strumenti di raccolta di telemetria non basati su userland e hook, come Event Tracing for Windows (ETW) o altri meccanismi di registrazione eventi. Queste syscall personalizzate vengono utilizzate anche per eseguire la chiamata VirtualProtect per rimuovere gli hook posizionati dagli EDR, descritta sopra, per evitare il rilevamento da qualsiasi controllo anti-manomissione degli EDR. Questo viene fatto chiamando una versione personalizzata della syscall VirtualProtect, NtProtectVirtualMemory. ScareCrow utilizza Golang per generare questi loader e poi assembly per queste funzioni syscall personalizzate.

Durante il processo di creazione del loader, ScareCrow utilizza una libreria per mimetizzarsi in background dopo che un beacon effettua il check-in. Questa libreria fa due cose:

I file firmati con certificati di firma codice sono spesso soggetti a un controllo meno approfondito, rendendo più semplice l'esecuzione senza essere contestati, poiché i file firmati da un nome fidato sono spesso meno sospetti di altri. La maggior parte dei prodotti antimalware non ha il tempo di convalidare e verificare questi certificati (ora alcuni lo fanno, ma tipicamente i nomi dei vendor comuni sono inclusi in una whitelist). ScareCrow crea questi certificati utilizzando una versione Go del tool limelighter per creare un file pfx12. Questo pacchetto prende un nome di dominio inserito dall'utente per creare un certificato di firma codice per quel dominio. Se necessario, puoi anche utilizzare il tuo certificato di firma codice, se ne hai uno, utilizzando l'opzione della riga di comando valid.

  • ScareCrow contiene anche la capacità di prendere l'intera catena e tutti gli attributi da un certificato di firma codice legittimo da un file e copiarli su un altro file. Questo include la data di firma, controfirme e altri attributi misurabili. Questa opzione può utilizzare file DLL o .exe da copiare usando l'opzione della riga di comando clone, insieme al percorso del file da cui copiare il certificato.

Considerazione OpSec:

  Quando si firma il loader con microsoft.com, utilizzarli contro i prodotti WINDOWS DEFENDER ATP potrebbe non essere altrettanto efficace poiché possono convalidare il certificato in quanto appartiene a loro. Se stai utilizzando un loader contro un prodotto Windows, utilizza eventualmente un dominio diverso.
  • Spoof degli attributi del loader: Questo viene fatto utilizzando file syso, che sono una forma di file di risorse incorporati che, quando compilati insieme al nostro loader, modificano le porzioni di attributi del nostro codice compilato. Prima di generare un file syso, ScareCrow genererà un nome file casuale (basato sul tipo di loader) da utilizzare. Una volta scelto, questo nome file mapperà gli attributi associati a quel nome file, assicurando che vengano assegnati i valori corretti.

Esempio di Attributi File

Scarica lo strumento