elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  eliminar caracteres nulos de mi shellcode
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: eliminar caracteres nulos de mi shellcode  (Leído 5,261 veces)
black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
eliminar caracteres nulos de mi shellcode
« en: 25 Febrero 2011, 11:32 am »

por fin he conseguido hacer que funciona mi pequeño programa en assembler y ahora toca convertirlo en shellcode, pero todavía tengo caracteres nulos.
En este trozo por ejemplo:


Código:
; ******************************************
; Buscamos la dirección base de kernel32.dll
; ******************************************
      xor eax, eax           
      mov eax, fs:[30h]
      mov eax, [eax+0Ch]
      mov eax, [eax+1Ch]
      mov eax, [eax] 
      mov eax, [eax]
      mov eax, [eax+08h]
   push eax ; guardamos en la pila la direccion base de kernel32.dll

la instrucción mov eax, fs:[30h] me la traduce en assembly como 64 A1 30 00 00 00
y el problema es claramente que el 30h lo traduce a 32 bits (en little endian) y por lo tanto rellena con ceros a la derecha.

luego las instrucciones mov eax, [eax] que se utilizan para saltar a la siguiente dirección (o algo parecido), se traducen como 8b00.

Y no se como puedo eliminar estos caracteres nulos.
¿alguna indea? ¿hay quizá algún programa que codifique la shellcode automaticamente sin caracteres nulos?


un saludo.
En línea

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: eliminar caracteres nulos de mi shellcode
« Respuesta #1 en: 25 Febrero 2011, 15:23 pm »

Utiliza AX en vez de EAX, asi solo envias lo justo y no tiene que rellenar nada. Creo que funcionara.

Sa1uDoS
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: eliminar caracteres nulos de mi shellcode
« Respuesta #2 en: 25 Febrero 2011, 21:39 pm »

No es exactamente eso. Si sólo modificas al puede que el registro te quede 0x42420000 o demás. Para lo que necesitas tienes que hacer una especie de typedef, traduciendo, indicarle al ensamblador cuántos bytes vás a meter...

P. Ej.
Código
  1. push byte 0x1
  2. mov eax, esp
  3.  
Eso sería mejor, aunque no sé si es correcto :P Movería la dirección de 1 a eax.

Suerte!
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: eliminar caracteres nulos de mi shellcode
« Respuesta #3 en: 26 Febrero 2011, 12:02 pm »

No es exactamente eso. Si sólo modificas al puede que el registro te quede 0x42420000 o demás. Para lo que necesitas tienes que hacer una especie de typedef, traduciendo, indicarle al ensamblador cuántos bytes vás a meter...

P. Ej.
Código
  1. push byte 0x1
  2. mov eax, esp
  3.  
Eso sería mejor, aunque no sé si es correcto :P Movería la dirección de 1 a eax.

Suerte!

Si, pero en el registro te quedara 00000001, lo interesante no es que en el registro no te quede con 0, si no que EN LOS OPCODE'S NO SALGAN LOS 0, y si solo pones AX o AH o AL, depende de los bytes que vayas a meter pues en la shellcode deberia quedar JUSTO.

Sa1uDoS ;).
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: eliminar caracteres nulos de mi shellcode
« Respuesta #4 en: 26 Febrero 2011, 12:40 pm »

Mr. Blood, si tengo en un registro 0x42424242 y modifico el AL por ejemplo con el valor 0x0000 me quedaría 0x42420000, lo cual daría errores.

Ahora, para eliminar bytes nulos debes indicar qué longitud tienen los bytes que vas a usar.
No es lo mismo
Código
  1. jmp esp
que
Código
  1. jmp short esp
Aproximadamente el valor sería
Código:
VALOR_DE_JMP 0x00 0x00 0x00 VALOR_DE_EAX
contra
Código:
VALOR_DE_JMP VALOR_DE_EAX
¿Se ve la diferencia?

Suerte!
PD: @Black flowers No, no existen programas mágicos :P
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
SirPallic

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: eliminar caracteres nulos de mi shellcode
« Respuesta #5 en: 26 Febrero 2011, 19:09 pm »

Hola amigo, parece que estas dispuesto a usar el código que te proporcione. Sabía que ibas a tener problemas con fs. Como te dije en el otro post, te voy a dar otro código para el kernel. Yo lo usaba siempre en win98 y vi que también funciona en winXP. mov ebx, dword ptr[ebx+0ch] enter mov ebx, dword ptr[ebx+20h] enter mov ebx, dword ptr[ebx+8h]. El código va siempre antes que todo lo demás, sí no, se borra la dirección. Espero que te sirva (enter es salto de linea). Saludos. Agradece posteando un tutorial  de tu shellcode.
En línea

lShadowl

Desconectado Desconectado

Mensajes: 7


INTJ


Ver Perfil
Re: eliminar caracteres nulos de mi shellcode
« Respuesta #6 en: 27 Febrero 2011, 00:33 am »

PD: @Black flowers No, no existen programas mágicos :P

http://foro.elhacker.net/scripting/batch_codificador_de_shellcodes-t320624.0.html

No es magico pero al menos le codifica la shellcode sin dejarle bytes nulos :).

Saludos!
En línea


Linux Registered User #473016

Sarcasm....because arguing with stupid people is not nearly as fun.
-INTJ
Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: eliminar caracteres nulos de mi shellcode
« Respuesta #7 en: 2 Marzo 2011, 23:42 pm »

00401000 > $  99               CDQ
00401001   .  64:8B52 30    MOV EDX, DWORD PTR FS:[EDX+30]

Salu2! Nox!
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
Re: eliminar caracteres nulos de mi shellcode
« Respuesta #8 en: 15 Marzo 2011, 16:49 pm »

00401000 > $  99               CDQ
00401001   .  64:8B52 30    MOV EDX, DWORD PTR FS:[EDX+30]

Salu2! Nox!

este me ha funcionado para ese caso pero para los otrosddos nulos no me ha funcionado nada:

0040100C   . 8B00                     MOV EAX,DWORD PTR DS:[EAX]
0040100E   . 8B00                     MOV EAX,DWORD PTR DS:[EAX]

nose, cómo puedo quitar estos dos nulos?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eliminar los 3 primeros caracteres de un textbox en visual basic
Programación Visual Basic
ELGRANSOLRAC 4 12,247 Último mensaje 16 Agosto 2005, 00:21 am
por .pUnÏsHEr.
Eliminar Caracteres Repetidos « 1 2 »
.NET (C#, VB.NET, ASP)
birdez 11 16,776 Último mensaje 31 Mayo 2012, 18:21 pm
por birdez
El Gobierno francés se plantea eliminar la ley antidescargas ante sus nulos ...
Noticias
wolfbcn 0 1,530 Último mensaje 3 Agosto 2012, 13:46 pm
por wolfbcn
eliminar caracteres
Programación C/C++
ankora45 1 1,673 Último mensaje 30 Octubre 2012, 18:10 pm
por avesudra
Eliminar caracteres no alphanumericos excepto algunos
Scripting
rulogarcillan 2 1,950 Último mensaje 16 Enero 2015, 20:23 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines