¿Cómo funciona el sled NOP con MSFVenom? [cerrado]

0

Estoy generando cargas útiles con MSFVenom y aquí hay una salida de muestra:

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"

En este caso, la opción -n 200 es agregar un slep NOP de 200 bytes, pero no está visible en la carga útil. Supongo que está usando algún tipo de codificación para el trineo NOP (¿es eso lo que significa Successfully added NOP sled from x86/opty2 ?)

Lo que estoy tratando de entender: el propósito de un sled NOP es deslizarse dentro del shellcode, si el sled NOP necesita ser descodificado primero, ¿eso no supera el punto? ¿Cuál es la ventaja aquí?

EDITAR:

Aquí hay una salida de muestra sin el -n 200 . No entiendo cómo esta podría ser la misma longitud total.

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"

La única diferencia es la falta de línea.   Successfully added NOP sled from x86/opty2

    
pregunta Juicy 17.03.2015 - 22:15
fuente

1 respuesta

2

Tu trineo NOP está ahí, simplemente está codificado. Si compara la salida final real, puede ver que los 2 búferes tienen diferentes longitudes si no usa un trineo.

La línea: 86/shikata_ga_nai succeeded with size 355 indica el tamaño de la carga útil principal antes de agregar el sled, por lo que el tamaño informado no diferirá con o sin un sled.

    
respondido por el schroeder 17.03.2015 - 22:37
fuente

Lea otras preguntas en las etiquetas