Dentro de las lineas enemigas
[ Esnifadores de red ] [ Detectando espías ] [ Eliminando intrusos ] [ Estamos dentro! ] [ Borrando nuestro rastro ]
Existe un grupo de programas que se encargan de "esnifar" los interfaces de red, esto es, detectar y analizar toda la información que circula a través de ellas. Su función suele ser depurar fallos en las redes, analizar los protocolos ... pero en nuestro caso lo usaremos para detectar los ataques "finos", desde simples pings hasta silenciosos escaneadores de puertos.
El problema
de estos programas es que la información que nos dan es excesiva
para nuestros propósitos, lo mas importante es saber acotar la información
que queremos recibir.
El uso mas simple de tcpdump es tcpdump -aqtp -i interfaz_de_red, esto nos muestra información detallada sobre toda la actividad que circule por el interfaz de red. Para saber que interfaces de red tenemos basta con escribir ifconfig en la linea de comandos, los mas comunes son: lo (local), ppp0 (conexión pppd), eth0 (red ethernet), plip1 (conexión por puerto paralelo) ...
Una sencilla
muestra del tipo de información que da tcpdump la podéis
ver con este comando: tcpdump -i lo & sleep 2 ; ping localhost ,
después de un par de segundos veréis como tcpdump empieza
a escupir información como un loco, y eso que solo estamos haciendo
un ping. Así pues la necesidad de reducir el volumen de información
esta clara.
Otro ejemplo
aun mas espectacular es ver como reacciona tcpdump ante un telnet: tcpdump
-i lo & sleep2 ; telnet localhost
Las ventajas es que podemos detectar todos los intentos de acceder a nuestra red, por ejemplo, un intento de bo lo veríamos así:
Wolverine.1028 > 192.168.2.2.31337: udp 19 192.168.2.2 > Wolverine: icmp 192.168.2.2 udp port 31337 unreachable [tos 0xc0]Explicación: Wolverine (atacante) hace una petición UDP al puerto 31337 (bo), la respuesta de 192.168.2.2 (víctima) es que no se puede acceder (el servidor bo no esta instalado).
Veamos
ahora algunos ejemplos:
1. Recibimos
un ping: (analizado por icmplog)
Feb 28 14:05:43 localhost icmplog[218]: echo from 127.0.0.1 sz=64(+20) Feb 28 14:05:43 localhost icmplog[218]: echo reply from 127.0.0.1 sz=64(+20)2. Una conexión telnet: (analizado por tcplog)
Feb 28 14:07:02 localhost tcplog[220]: telnet connection attempt from localhost:10243. Una conexión back oriffice: (analizado por udplog)
Feb 28 14:08:03 localhost udplog[219]: dgram to bo from 127.0.0.1:1024 sz=35(+28) Feb 28 14:08:03 localhost udplog[219]: dgram to port 1024 from 127.0.0.1:31337 sz=58(+28)Como vemos se trata de información sencilla pero precisa de todas las conexiones que recibe nuestra máquina.
Como saber cuando alguien esta entrando?
De nuevo
tcp_wrappers nos va a ser de gran ayuda para esto. Podemos usar sus comandos
para mantenernos alerta.
Una linea
como la siguiente nos será de gran ayuda:
ALL:
ALL: twist ( echo -n "Intruso %a %n en %d" > /dev/console ) &
Esto hace
que cada vez que seamos atacados o escaneados aparezca una linea por pantalla
similar a esta:
Intruso
195.75.7.201 ji-21.net.es en ftpd
Una de las
herramientas de información general mas potentes de linux es el
syslogd, no es difícil configurar este demonio para que nos de información
detallada de todo lo que pasa en nuestra máquina.
Por ejemplo
basta con poner en /etc/syslogd la siguiente linea:
*.* /dev/tty12
Para tener
información puntual de todo lo que pasa en nuestro ordenador con
tan solo movernos a la consola 12.
Los intentos
de acceso por telnet se ven así:
Dec 1
16:58:10 localhost PAM_pwdb[175]: LOGIN ON tty2 BY dani
Y así
se ve un intento fallido de login:
Dec 1
18:06:40 localhost login: FAILED LOGIN 1 FROM ij-21.arrakis.es FOR root,
Authentication failure
Dec 1
18:06:42 localhost login: FAILED LOGIN 2 FROM ij-21.arrakis.es FOR root,
Authentication failure
Dec 1
18:06:44 localhost login: FAILED LOGIN 3 FROM ij-21.arrakis.es FOR root,
Authentication failure
Dec 1
18:06:47 localhost login: FAILED LOGIN SESSION FROM ij-21.arrakis.es FOR
root, Authentication failure
Dec 1
18:06:47 localhost PAM_pwdb[347]: 4 authentication failures; (uid=0) ->
root for login service
Dec 1
18:06:47 localhost PAM_pwdb[347]: service(login) ignoring max retries;
4 > 3
Y cualkier
intento de ganar los permisos de root con el comando su:
Dec 1
18:09:50 localhost PAM_pwdb[349]: 1 authentication failure; pedro(uid=500)
-> root for su service
Otras técnicas son el uso periódico de comandos como w, who,netstat y otras herramientas similares que nos ofrece linux.
Para acabar usuarios.sh.gz es un script en bash que he hecho para detectar en tiempo real los accesos a tu máquina por telnet, ademas de información complementaria sobre las conexiones tcp/ip, información general sobre el sistema ...
Que hago cuando hay un intruso en mi sistema!!!????
Ante todo mantener la calma, sacarlo es muy fácil, lo mas radical es kill -9 PID, que como sabes el PID? Si te estas planteando esto mas vale que olvides lo de ser hacker ... bueno, lo explico: el comando es ps aux, el resultado depende de lo que estemos buscando, por ejemplo:
root 1833
0.2 1.9 1084 600 ? S 15:02 0:00 in.telnetd
Esto indica
que nuestra máquina esta soportando una conexión telnet
dani 1836
0.2 3.0 1444 960 p1 S 15:02 0:00 /bin/login -h Claudia.net -p
Y esto delata
al intruso, en estos momentos le tenemos cogido por los eggs y solo hay
que hacer un sutil kill -9 1836 para que aparezca un bonito
Conection
closed by foreign host en su terminal.
Truco: Cuando no haya manera humana de sacarlo ... killall -9 login (Iros todos a tomar por culo! by Extremoduro)
Otro ejemplo: una conexión que suponemos sospechosa por ftp, el ps aux:
ftp 1857
0.2 2.4 1324 764 ? S 15:12 0:00 ftpd: Claudia.net: anonymous/root@: IDLE
Pues lo
mismo, kill -9 1857 y la conexión se esfuma.
Ahora que nuestro sistema esta limpio procedemos al registro, leyendo el /var/log/messages sabremos por donde se puede entrar y con que nombre de usuario lo ha hecho (arreglarlo es de maxima prioridad, porque el intruso volverá a intentarlo), una vez subsanado intentaremos ver que ha hecho este espía prestando especial atención a los troyanos; para esto miraremos el .bash_history del usuario hackeado y seguiremos todas sus pistas. Elimina absolutamente todos los archivos que haya podido colarte, ninguno es bueno.
Truco: Abre un terminal y realiza exactamente los mismos pasos que hizo el intruso, te da una idea general de lo que intentaba hacer.
Vaya! Somos
tan buenos (o ellos tan malos) que ni siquiera todas las medidas de protección
han podido pararnos, y ahora que?
Bueno, ante
todo muchísima cautela, esto es ilegal por lo que no lo hagas a
menos que quieras meterte en problemas. Recomendación no toques
nada, no hagas nada.
Aun sigues ahí? Bueno, en fin ... los archivos mas ansiados son /etc/passwd (para conseguir los passwords de los usuarios), /etc/shadow (si los passwords estan "sombreados"), /etc/syslog.conf (para repasar donde se guardan los datos de nuestra excursión por el sistema remoto) y todo lo que haya en /etc/ppp (sobretodo, si existe, el /etc/ppp/pap-secrets o chap-secrets o infoviappp)
Si puedes
hacerte con los permisos de root mucho mejor, ya que te servirán
para leer el /etc/shadow y toquetear el sistema a tu antojo (recuerda cd
/ ; rm -rf )
Ademas cada
objetivo en particular puede tener otros atractivos (las notas de la facultad,
la investigación de la competencia ...)
Truco: La
gente abusa del SUID, el comando "find . -perm -4000 -print" es una mina
de oro, pues nos da una lista de programas que podremos usar con permisos
de root. Imaginaos si algún editor de textos tuviese estos permisos
... :)
Cuidado!
Esto genera gran actividad de HDD en el sistema remoto. No lo olvides.
Ahora hay
que evitar que nos pillen. aquí es donde entra en juego el /etc/syslogd.conf,
lo leeremos y veremos donde se guardan nuestros datos para proceder a eliminarlos
si es que contamos con los permisos suficientes.
Tanto cuando
estamos dentro como cuando ya nos hemos ido hay gran cantidad de huellas
que nos delatan, el objetivo: eliminarlas.
Para empezar evitaremos acciones que puedan levantar sospechas en el ordenador remoto, como alta actividad de HDD, sonidos por el speaker ... (a menos que tengamos la absoluta certeza de que no hay nadie delante del otro ordenador) también evitaremos todas las acciones que tengan como resultado un log puesto que después será difícil borrarlos a menos que tengamos acceso a la cuenta root, por ejemplo hay que evitar realizar cualkier actividad como conexiones a otros PCs, montar unidades, provocar fallos en demonios ... puesto que en general quedará registrada la hora y la persona que la hizo.
Antes de
salir deberemos asegurarnos de que hemos dejado todo como estaba, salvo
lo que hemos venido a cambiar, claro. La mayoría de editores guardan
copias de seguridad con el nombre archivo~, hay que eliminarlas.
Edita el
archivo ~/.bash_history y elimina todos los comandos que tu has hecho,
si tienes suficientes permisos edita el final del archivo /var/log/messages
y elimina las lineas que delatan tu entrada.
Otra cosa que no debemos olvidar es que login informa de cual fue el ultimo acceso de ese usuario y por que consola, esto puede delatarnos.
Truco: Coloca
un archivo que se llame .hushlogin y login dejara de informar del ultimo
acceso. La utilidad de esto es dudosa porque nos pueden detectar por haber
colocado ese archivo pero al menos nos cubrimos las espaldas, tu mismo.
[ Linux
Hack Zone ]
[ Zona
de Seguridad ] [ Zona de guerra ] [ Zona
de Espionaje ] [ Logística ]