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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6
21  Programación / Programación C/C++ / no consigo hacer funcionar a shellexecute. en: 29 Marzo 2011, 00:26 am
estoy que no doy una, he probado todas las combinaciones pero no consigo ejecutar un maldito programa con shellexecute. Lo quetengo es un programa en c++ que utiliza esta instrucción para ejecutar otro programa:
Código
  1. ShellExecute(NULL,"open", "miPrograma.exe",NULL,NULL, SW_SHOW);
pero compila, pasa de largo y no hace nada.
la aplicación miPrograma.exe se encuentra en la misma carpeta que el que estoy ejecutando.
he probado tambien así:
miPrograma.exe
así: (poniendo miPrograma.exe en C:\)
Código
  1. ShellExecute(NULL,"open", "miPrograma.exe",NULL,"C:\", SW_SHOW);
  2.  
  3.  
pero nada, ninguna funciona.
Sólo me ha funcionado esto:
Código
  1. ShellExecute(NULL,"open", "calc.exe",NULL,NULL, SW_SHOW);
ya que la calculadora es accesible desde cualquier punto.
no obstante si coloco la calculadora en c:\ y hago esto:
Código
  1. ShellExecute(NULL,"open", "calc.exe",NULL,"C:\", SW_SHOW);
  2.  
  3.  
ya no funciona tampoco.
22  Seguridad Informática / Análisis y Diseño de Malware / Re: duda de cómo se introducen cadenas en la pila (manualmente). en: 28 Marzo 2011, 23:53 pm
me parece que el se refiere a otra cosa....
Código
  1. 00401002      53            PUSH EBX
esto reemplaza el opcode null osea el zero terminator a eso te refieres?

osea

Código
  1. lstrCadena db "Hola",0

te refieres a ese 0 el zero terminator?.... si es así con lo que te dice sagrini se hace el push ebx pone el zero terminator en la pila.... si no es asi.. pon como es tu cadena! y nosotros te podremos ayudar( que no sea en hex si no en ascii).

Salu2!
claro, es el cero terminador. Pero no entiendo cómo lo sustituyes por push ebx, ya que push ebx envía 4 nulos ¿me equivoco?
Y yo necesito un nulo justo al final de mi cadena.
Código:
   push 636578h      ;incluye un 00 al inicio automaticamente (que es el nulo del final de la cadena)
   push 456e6957h ;caracteres de winexec en sentido contrario

lo que mando a la pila son los caracteres de WinExec en orden inverso. Pero al final tengo que poner un nulo, es decir despues del 63 va un 00. En mi caso he enviado el 636578h en lugar de 00636578h aunque a fin de cuentas son equivalentes.

La pregunta era que cómo me deshago de ese 00 terminador.
23  Seguridad Informática / Análisis y Diseño de Malware / Re: duda de cómo se introducen cadenas en la pila (manualmente). en: 27 Marzo 2011, 23:36 pm
pero cuando hago por ejemplo esto, para meter la cadena enla pila:
Código:
   push 636578h      ;incluye un 00 al inicio automaticamente (que es el nulo del final de la cadena)
   push 456e6957h ;caracteres de winexec en sentido contrario
   mov ecx,esp
   push ecx
   push esi       ;dirección base de kernel32
   mov ebx,eax
   call eax ; llamamos a getprocaddress
el primer push pasado a opcodes es: 68 78 65 63 00, lo cual implica un nulo. A eso me refiero. ¿como evitas eso?


el opcode nulo está en mi cadena, en la que quiero utilizar yo.  ;D
24  Seguridad Informática / Análisis y Diseño de Malware / Re: duda de cómo se introducen cadenas en la pila (manualmente). en: 27 Marzo 2011, 13:59 pm
El push eax mete el caracter nulo, concretamente mete 4 xD.
pero cuando hago por ejemplo esto, para meter la cadena enla pila:
Código:
   push 636578h      ;incluye un 00 al inicio automaticamente (que es el nulo del final de la cadena)
   push 456e6957h ;caracteres de winexec en sentido contrario
   mov ecx,esp
   push ecx
   push esi       ;dirección base de kernel32
   mov ebx,eax
   call eax ; llamamos a getprocaddress
el primer push pasado a opcodes es: 68 78 65 63 00, lo cual implica un nulo. A eso me refiero. ¿como evitas eso?

25  Seguridad Informática / Análisis y Diseño de Malware / Re: posible problema con integridad de la pila en: 26 Marzo 2011, 16:39 pm
pues algo va mal en mi programa, y no logro averuguar qué. Si hago como tu dices , cuando llamo a WinExec para ejecutar calc.exe me devuelve FILE NOT FOUND (en olly) aunque he comprobado que la cadena y los parametros estan correctamente colocados en la pila antes de llamar a la funcion WinExec. Parece como que haya undesajuste en la pila por algún sitio. Lo curioso es que si no hago nada de eso (es decir si no balanceo la pila,y dejo todo como está) sí funciona. El programa tal y como está puesto en este post está con la pila sin balancear. Si hago lo que tú me dices no me funciona.
26  Seguridad Informática / Análisis y Diseño de Malware / Re: duda de cómo se introducen cadenas en la pila (manualmente). en: 26 Marzo 2011, 15:59 pm
Vaya complicación!
Yo hago:
Código
  1. xor eax, eax
  2. push eax
  3. push 0x41424344 ; DDCCBBAA
  4. push 0x41424344 ; DDCCBBAA
  5. mov eax, esp
  6.  

Y en EAX tienes tu cadenita (o la dirección, que es lo que necesitas)

tienes razón queda mucho más sencillo. El único problema es que no se como evitar caracteres nulos, sin ir mas lejos el que hay que poner al final de la cadena.
27  Seguridad Informática / Análisis y Diseño de Malware / Re: duda de cómo se introducen cadenas en la pila (manualmente). en: 26 Marzo 2011, 13:35 pm
vaya, pues si que es más fácil tu método. Lo voy a probar.
28  Seguridad Informática / Bugs y Exploits / Re: me da un access violation al entrar en la shellcode. en: 25 Marzo 2011, 23:39 pm
este es el equivalente para visual c++:

Código:
#pragma section("mycode",execute)
__declspec(allocate("mycode"))char code[] = "\x33\xDB...sigue la shellcode";
29  Seguridad Informática / Análisis y Diseño de Malware / duda de cómo se introducen cadenas en la pila (manualmente). en: 25 Marzo 2011, 12:12 pm
sabeis como se calculan los espacios que hay que restar a esp para introducir una cadena en la pila? En el siguiente código yo meto 8 cacacteres pero en cambio necesito restar 0bh es decir 11 espacios para que el programa funcione. Ademas ni siquiera necesito empezar la cadena en la parte superior, es decir en el espacio 11 sino que empezando en el espacio 8 funciona. No entiendo el porqué de esto.

Código:
 sub esp, 0bh ; dejamos espacio en la pila para meter nuestra cadena
   mov byte ptr [ebp-08h], 57h  ; 'W'
   mov byte ptr [ebp-07h], 69h  ; 'i'
   mov byte ptr [ebp-06h], 6eh  ; 'n'
   mov byte ptr [ebp-05h], 45h  ; 'E'
   mov byte ptr [ebp-04h], 78h  ; 'x'
   mov byte ptr [ebp-03h], 65h  ; 'e'
   mov byte ptr [ebp-02h], 63h  ; 'c'
   mov byte ptr [ebp-01h], dl   ; 0x00
   lea ecx, [ebp-08h] ; cargamos la direccion que apunta a nuestra cadena
   push ecx
   push esi       ;dirección base de kernel32
   call eax ; llamamos a getprocadress

30  Seguridad Informática / Bugs y Exploits / Re: me da un access violation al entrar en la shellcode. en: 24 Marzo 2011, 20:48 pm
mmm creo que esta trabajando en windows, digo por el header windows.h :P.

Para mi que el problema es q no tiene permisos de ejecucion en la sección de datos, por eso cuando salta para ejecutar en char code le tira el access violation. Si es eso trata de meter char code en la sección ejecutable, fijate que te dice el compilador si declaras code asi:

Código
  1. char code[] __attribute__((section (".text"))) = ...

En linux con gcc funciona pero no se en windows.

sí, es en windows y he probado con gcc y funciona  :D
en cambio con visual c++ no , >:(, me da un montón de errores de compilación. En cualquier caso el problemaes el que tu dices de los permisos, así que será cuestión de buscar la instrucción equivalente en visual c++.

A todo esto la shellcode no haceotra cosa que lanzar la calculadora de windows y debería de funcionar en cualquier sistema.

Un saludo.
Páginas: 1 2 [3] 4 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines