Vai al contenuto
Home » Shellerate: un framework per generare shellcode

Shellerate: un framework per generare shellcode

L’anno scorso, in preparazione al corso Cracking the
Perimeter
,
avevo seguito il corso x86 Assembly Language and Shellcoding on
Linux
. Questo mi permise di
rinfrescare la programmazione in assembler per x86 e di imparare un po’ di
python.

A distanza di qualche mese, il progetto
shellerate acquista una sua
importanza e maturità, almeno nella mia routine di coding.

Installare shellerate è abbstanza semplice e richiede di utilizzare pip, qui
nell’esempio uso la versione 3 del comando.

$ pip3 install shellerate --user

Da questo momento è possibile utilizzare le API di shellerate in modo da creare
i primi shellcode, anche se sto lavorando ad uno script che colleghi un po’ le
varie possibilità.

Per generare lo shellcode per una bind shell in ambiente Linux x86, in ascolto
sulla porta 4444, sono sufficienti 2 righe di codice.

from shellerate.bind_shellcode import *

b=BindShellcode(4444, 'x86', 'linux')
b.generate()
print("Shellcode: %s" % b.shellcode())

L’output, potrà poi essere utilizzato all’interno di un exploit che stiamo
scrivendo. Se si ha poi la necessità di farne una versione offuscata, per ora
solo attraverso la versione che scritti per la
SLAE32
, basta
aggiungere una riga di codice.

from shellerate.bind_shellcode import *

b=BindShellcode(4444, 'x86', 'linux')
b.encode()
b.generate()
print("Shellcode: %s" % b.shellcode())

Come si può vedere, ho cercato di tenere l’API il più possibile pulita e
minimal, in modo da rendere il codice di un exploit che usa shellerate,
semplice da leggere.

Creare una versione dello stesso shellcode, con un
egg hunter
è semplice tanto quanto la versione offuscata:

b=BindShellcode(4444, 'x86', 'linux')
b.egg_hunter()
b.generate()
sc = b.shellcode()

print("Egg Hunter: %s" % sc["egg_hunter_code"])
print("Shellcode: %s" % sc["egg_hunter_shellcode"])

Sto lavorando in questi giorni ad un encoder custom che ho utilizzato per
risolvere una delle quest di
vulnserver.exe e che prevede,
con una tecnica imparata nel corso della certificazione OSCE, di scrivere uno
shellcode utilizzando delle istruzioni di sottrazione e di push.

Tutta farina del sacco di Mati Aharoni che ha presentato questa tecnica in
questo talk a Defcon 16.

Io ho solo messo insieme qualche pezzo e scritto un codice, utilizzato anche
nel mio ultimo tentativo di certificazione, per offuscare uno shellcode. Posso
assicurare che ha funzionato.

Presto questo codice sarà nella nuova versione di shellerate che,
probabilmente, potrà essere pronta per essere qualcosa di più che un esercizio
di stile.

Enjoy it.

Tag:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.