eko nº3:(Eko3R-18.txt):10/11/2001 << Back To eko nº 3
<- [ Eko Magazine 3 Revange ] ----- [ La Venganza del Oso Arturo.... ] -> <-------- [ QQmelo #Ezkracho ] ---------- { QQmelo@Ezkracho.com.ar } ---> <------------------------ [ Configurando IDS ] -------------------------> IDS, o Intrusion Detect System, es la practica de utilizar herramientas inteligentes y automaticas para detectar intentos de intrusion en tiempo real. Personalmente, prefiero el snort... ya que es bastante configurable y tiene muchas opciones para hacerlo amoldable a mi sistema, y lo mas importante, es GNU!. 1) Consiguiendo el paquete... Nada tan sencillo como descargarlo de su page oficial, la cual es la siguiente.... www.snort.org. Alli veremos que existe para muchisimas plataformas, inclusive para win2k. 2) Instalacion del paquete. Para instalarlo correctamente, debemos tener satisfechas las siguientes dependencias. a) Libpcap igual o mayor a 4.0 esta la descargaremos de... www.tcpdump.org b) libc.so.6 (que viene con todos los linuxes)... 3) Puesta en marcha.... Una vez instalado, vamos a probar de poder correr nuestro amigo snort . Para que veamos la ayuda, solo debemos tipear lo siguiente... #snort -h Y se nos desplegara un menu de ayuda grande... -*> Snort! <*- Version 1.6.3 By Martin Roesch (roesch@clark.net, www.snort.org) USAGE: snort [-options] Options: -A Set alert mode: fast, full, or none (alert file alerts only) 'unsock' enables UNIX socket logging (experimental). -a Display ARP packets -b Log packets in tcpdump format (much faster!) -c Use Rules File -C Print out payloads with character data only (no hex) -d Dump the Application Layer -D Run Snort in background (daemon) mode -e Display the second layer header info -F Read BPF filters from file -g Run snort gid as 'gname' user or uid after initialization -h Home network = -i Listen on interface -l Log to directory -n Exit after receiving packets -N Turn off logging (alerts still work) -o Change the rule testing order to Pass|Alert|Log -O Obfuscate the logged IP addresses -p Disable promiscuous mode sniffing -P set explicit snaplen of packet (default: 1514) -q Quiet. Don't show banner and status report -r Read and process tcpdump file -s Log alert messages to syslog -S Set rules file variable n equal to value v -t Chroots process to after initialisaton -u Run snort uid as 'uname' user (or uid) after initialization -v Be verbose -V Show version number -? Show this information Lo primero que haremos, despues de haber leido todo esto, es poner a Snort en modo promiscuo, como si fuera un sniffer. #snort -v Pero, queremos que tenga un formato mas entendible, entonces, le agregamos el flag d y el e, para que nos muestre los encabezados de los paquetes que van llegando. #snort -vde Seleccionando Rangos: -------------------- Ahora, lo que debemos hacer es seleccionar un rango de ip's al que le queremos realizar el analisis, esto lo podremos hacer de la siguiente manera. #snort -vde -i eth0 -h 192.168.0.0/24 Lo que estamos diciendo aqui, es que por medio de la interface 0 "analice" el trafico de la red 192.168.0.1-255. Snort Como Packet Logger ======================== Ahora bien, se presenta la opcion de poder loguear todo el trafico que vemos por pantalla, hacia un archivo. Para eso, debemos crear un directorio, donde dirijamos los logs. Por ejemplo, para este caso, vamos a crear un directorio llamado /snort/log. Para activar los logs, lo que debemos hacer es lo siguiente. #snort -dve -i eth0 -h 192.168.0.0/24 -l /snort/log Y todo el trafico sera guardado en ese directorio. Manejando las alertas ===================== Snort puede manejar alertas, de distinto tipo, en base a un archivo de configuracion que veremos en breve, llamado /etc/snort/snort.conf. Snort tambien es capaz de inyectar las alertas en el syslog, o sea redirigir sus mensajes hacia /var/log/messages, si correspondiera este archivo segun el /etc/syslog.conf. Las alertas tambien pueden ser completas, donde en el directorio de logueo, existira un archivo llamado alert, donde se guardaran todas las alertas originadas segun las reglas del snort.conf. Veamos ejemplos para comprender mejor los puntos antes citados. #snort -dve -i eth0 -h 192.168.0.0/24 -l /snort/log -s -c /etc/snort/snort.conf Loguearia todo en el syslog, y por defecto este lo redirecciona hacia /var/log/messages Ahora, si quisieramos que todas las alertas quedaran logueadas en el directorio /snort/log #snort -dve -i eth0 -h 192.168.0.0/24 -l /snort/log -A full -c /etc/snort/ snort.conf Y alli nos generaria una alerta. Analizando el archivo /etc/snort/snort.conf (Snort como NIDS) ============================================================= Analizando el archivo snort.conf, veremos algunas variables o parametros para configurar. var HOME_NET 192.168.0.0/24 Aca estamos definiendo la red, donde atacara nuestro snort. var EXTERNAL_NET any Defino que la red externa es cualquiera, o sea 0/0 var SMTP $HOME_NET var HTTP_SERVERS $HOME_NET var SQL_SERVERS $HOME_NET Se definen a los servidores Smtp, http y sql dentro de la red a analizar por el snort. Sesion 2: Defino analisis de unicode en el puerto 80: preprocessor unidecode: 80 Defino analisis de rpc en el puerto 111: preprocessor rpc_decode: 111 Luego , analizaremos la sesion 3, para escribir nuestras propias reglas. #include exploit.rules #include scan.rules #include finger.rules #include ftp.rules #include telnet.rules #include smtp.rules #include rpc.rules #include rservices.rules Aqui vemos cada uno de estos archivos, donde escribiremos nuestras reglas. Escribiendo nuestras reglas.... =============================== Las reglas del snort, estan divididas en dos partes, la primera contiene el protocolo origen, destino y mascara de red. La segunda contiene el mensaje a mostrar, y la inspeccion sobre "la firma" a mostrar. Ejemplo: alert tcp any any -> 192.168.1.0/24 111 ( content "|00 01 86 a5|";msg: \ "mountd access";) Analisis del ejemplo... ======================= Lo anterior al parentesis es el encabezado de la regla, y lo que se encuentra dentro del parentesis es el contenido de la regla.... Veamos otra regla... ==================== Hace ya algunos a±os atras, era muy comun ver el error del cgi, llamado phf. Veremos a Snort detectando ese error, y para ello configuraremos una regla. alert tcp any any -> 192.168.1.0/24 80 ( content "cgi-bin/phf"; msg: \ "Intento de acceder al phf!";) Como vemos, es sencillo... lo que no se nos presenta tan sencillo es conseguir las "firmas de los exploits". Cuando algun Stack Buffer Overflow ataca, lo que deberemos hacer es conseguir los datos de los ultimos comandos ejecutados al desbordarlo, que se encuentran en la shellcode, y que constituyen la firma del exploit. Los malditos gusanos (!=/"%$!) Como sufri con el sircam32, recuerdo incluso haber echo un script que revisara a mano el /var/spool/mail. Hoy en dia, cuento con un poderoso antivirus de trent, pero para subsanar eso, copie lo siguiente, en mis reglas alert tcp any any -> any 25 (msg:"Virus - Possible W32.Sircam.Worm@mm";content: "Te mando este archivo para que me des tu punto de vista";nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Possible W32.Sircam.Worm@mm";content: "Espero me puedas ayudar con el archivo que te mando"; nocase;rev:2;) alert tcp any any -> any 25 (msg:"Virus - Possible W32.Sircam.Worm@mm";content: "Espero te guste este archivo que te mando"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Possible W32.Sircam.Worm@mm";content: "Este es el archivo con la informaci=n que me pediste"; nocase;rev:2;) alert tcp any any -> any 25 (msg:"Virus - Possible W32.Sircam.Worm@mm";content: "I send you this file in order to have your advice"; nocase;rev:2;) alert tcp any any -> any 25 (msg:"Virus - Possible W32.Sircam.Worm@mm";content: "I hope you can help me with this file that I send"; nocase;rev:2;) alert tcp any any -> any 25 (msg:"Virus - Possible W32.Sircam.Worm@mm";content: "I hope you like the file that I sendo you"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Possible W32.Sircam.Worm@mm";content: "This is the file with the information that you ask for"; nocase;rev:2;) alert tcp any any -> any 25 (msg:"Virus - Possible VBS.VBSWG2.X@mmworm";content: "name=\"Homepage.HTML.vbs\""; nocase; rev:1;) y bueno... algo es algo ;=). Ahora veamos aun mas! ===================== Digamos que tenemos nuestra maquina como ftp. Lo que queremos hacer, es ver cuando se nos conectan desde afuera, si hacen por ejemplo, cd /etc Configurando la regla... ======================== La regla seria la siguiente: alert tcp any any -> 192.168.0.24/0 (content "cd /etc";msg: "Tratando de investigar el ftp! ";) La misma la agregamo en ftp.rules, nos conectamos al ftp, realizamos un cd /etc, y NADA! ;-(. Algo fallo... lo que pasa, es que el servidor internamente al cd lo ve como CWD. Ahora, a la regla la ponemos de esta forma y realmente anda! Nota sobre la Version en NT: ============================ Sobre la version en nt, viene el codigo fuente para compilar, aunque tambien viene un archivo .exe, que es el snort.exe, que es el ejecutable en si. Tambien tenemos un archivo de configuracion, snort.conf, y las correspondientes rules. Saludos: ======= Romy_boquita,Asesina_Perfecta,Painkiller, Serp0, dr_fdisk, infobyte, Mafia, Potato,dreamtheater, noodle(por chupamedias), El_Sapo,y todos. Basta de bombardeos al pueblos Afghano! <$[ Eko Magazine 3 Revange EOF. ]$> <$$[ Configurando IDS. ]$$>