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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Shell Remota en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Shell Remota en C  (Leído 6,906 veces)
fary
Moderador
***
Desconectado Desconectado

Mensajes: 1.061



Ver Perfil WWW
Shell Remota en C
« en: 27 Marzo 2011, 14:48 pm »

Buenas, estoi intentando hacer una Shell Remota en C  ya que nunca hice una en este lenguaje y me pica la curiosidad  :xD el caso es que no me sale...

El código que tengo es este:

Código
  1. #include <windows.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. int main()
  6. {
  7.    PHANDLE leer;
  8.    PHANDLE escribir;
  9.  
  10.    SECURITY_ATTRIBUTES sa;
  11.    STARTUPINFO si;
  12.    PROCESS_INFORMATION pi;
  13.  
  14.    DWORD bytes;
  15.  
  16.    CreatePipe(leer,escribir,&sa,0);
  17.  
  18.    si.cb = 68;
  19.    si.dwFlags = 257;
  20.  
  21.    si.hStdError = escribir;
  22.    si.hStdOutput = escribir;
  23.  
  24.    CreateProcessA(0,"cmd.exe /c ping 127.0.0.1", &sa, &sa, 1, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi);
  25.    Sleep(100);
  26.    CloseHandle(escribir);
  27.  
  28.    char buffer[1024];
  29.    char total[1024];
  30.  
  31.    int ret = ReadFile(leer,buffer,250,&bytes,0);
  32.  
  33.    lstrcat(total,buffer);
  34.  
  35.    while(ret != 0)
  36.    {
  37.        ret = ReadFile(leer,buffer,250,&bytes,0);
  38.        lstrcat(total,buffer);      
  39.    }
  40.  
  41.    MessageBoxA(0,total,0,0);
  42.    system("PAUSE");
  43.  
  44.    return 0;
  45. }
  46.  

Alguien sabe que hago mal?

salu2!
En línea

Un byte a la izquierda.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Shell Remota en C
« Respuesta #1 en: 27 Marzo 2011, 15:31 pm »

Esta es la buen forma de hacerlo:
Código:
http://goodfellas.shellcode.com.ar/docz/asm/WritingSmallShellcode.pdf
:D
En línea

fary
Moderador
***
Desconectado Desconectado

Mensajes: 1.061



Ver Perfil WWW
Re: Shell Remota en C
« Respuesta #2 en: 27 Marzo 2011, 15:36 pm »

Muchas gracias Karcrack sin duda lo leeré pero tambien me gustaria saber que ago mal en el código que postee.

salu2!
En línea

Un byte a la izquierda.
[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Shell Remota en C
« Respuesta #3 en: 27 Marzo 2011, 16:53 pm »

¿No tendrías que crear el pipe luego de iniciar la shell? Estas llamando a CreatePipe con dos handles nulos (o ni eso, que no están inicializados a 0), al igual que tampoco inicializaste a 0 los miembros de PROCESS_INFORMATION y STARTUPINFO (salvo cb, que sí lo pusiste bien).

Saludos
« Última modificación: 27 Marzo 2011, 17:19 pm por [Zero] » En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
fary
Moderador
***
Desconectado Desconectado

Mensajes: 1.061



Ver Perfil WWW
Re: Shell Remota en C
« Respuesta #4 en: 27 Marzo 2011, 18:02 pm »

Muchas gracias a los dos, ya lo consegui hacer... el caso es que me quedo así:

Código
  1. #include <windows.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. int main()
  6. {
  7.    SECURITY_ATTRIBUTES sa;
  8.    STARTUPINFO si;
  9.    PROCESS_INFORMATION pi;
  10.  
  11.    void * leer;
  12.    void * escribir;
  13.  
  14.    ZeroMemory(&sa,sizeof(&sa));
  15.  
  16.    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
  17.    sa.bInheritHandle = TRUE;
  18.    sa.lpSecurityDescriptor = NULL;
  19.  
  20.    CreatePipe(&leer,&escribir,&sa,0);
  21.  
  22.    GetStartupInfoA(&si);
  23.  
  24.    si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
  25.    si.wShowWindow = SW_HIDE;
  26.    si.hStdOutput = escribir;
  27.    si.hStdError  = escribir;
  28.    si.hStdInput = leer;
  29.  
  30.    CreateProcessA(0,"c:\\windows\\system32\\cmd.exe /c dir",0,0,TRUE,0,0,0,&si,&pi);
  31.    Sleep(200);
  32.    CloseHandle(escribir);
  33.  
  34.    char buffer[1024];
  35.    DWORD bleidos;
  36.    ReadFile(leer,buffer,1024,&bleidos,0);
  37.    MessageBoxA(0,buffer,0,0);
  38.  
  39.    system("PAUSE");
  40.    return 0;
  41. }


No es una "MegaShell" pero su "apaño" hace  :P
salu2!
En línea

Un byte a la izquierda.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Shell Remota en C
« Respuesta #5 en: 27 Marzo 2011, 19:11 pm »

@Drinky94: Mejor seria que en vez de utilizar una ruta hardcodeada pusieses la variable de entorno adecuada; %ComSpec% :) Y eso de usar Sleeps es muy cutre :P :P
En línea

fary
Moderador
***
Desconectado Desconectado

Mensajes: 1.061



Ver Perfil WWW
Re: Shell Remota en C
« Respuesta #6 en: 27 Marzo 2011, 20:34 pm »

Te refieres a esperar a que se cree el proceso usando WaitForSingleObject, no?

salu2!
En línea

Un byte a la izquierda.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Shell Remota en C
« Respuesta #7 en: 27 Marzo 2011, 21:26 pm »

Hasta que el proceso no se crea no continua la ejecución de tu programa :D
En línea

fary
Moderador
***
Desconectado Desconectado

Mensajes: 1.061



Ver Perfil WWW
Re: Shell Remota en C
« Respuesta #8 en: 27 Marzo 2011, 23:42 pm »

Hasta que el proceso no se crea no continua la ejecución de tu programa :D

No se me ocurre como hacerlo... de una forma rápida, alguna pista?

salu2!
En línea

Un byte a la izquierda.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Shell Remota en C
« Respuesta #9 en: 28 Marzo 2011, 16:14 pm »

No hay que hacer nada :huh: Con hacer CreateProces() sobra... hasta que el proceso no se ha creado no vuelve la ejecución a tu programa...
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
shell remota y .NET
.NET (C#, VB.NET, ASP)
moe88 5 5,442 Último mensaje 4 Junio 2006, 01:49 am
por ByteCoderz
Shell Remota
Programación Visual Basic
xDie 3 1,720 Último mensaje 4 Octubre 2006, 19:25 pm
por ~~
shell remota
Programación C/C++
daryo 0 1,434 Último mensaje 4 Enero 2013, 16:27 pm
por daryo
problema con shell remota
Programación C/C++
daryo 0 1,319 Último mensaje 4 Julio 2014, 22:58 pm
por daryo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines