Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
P
P
A
A LOS IDENTIFICADORES
DE SESION
S
S LAS COOKIES
O
O P RO G R A M A N D O CO O K I E S ! ! !
P A S Oa
P A a
a
a
a
a
a
aa
a
a
a
a
a 3 SERVIDORES ON LINE PARA TUS PRACTICAS DE HACK
N M ERO 20
(2
PAR
TE)
SISTEMA DE DETECCION
DE INTRUSOS !!!
* DETECTANDO PUERTOS EXTRAOS
Y CONEXIONES SOSPECHOSAS
* REGLAS DE CABECERA
DE CONTENIDO Y DE CONTROL
MENU
MENUS A NUESTRO GUSTO
X
Y
COMO METER VARIOS
JUEGOS EN 1 DVD
8 414090 202756
Director de la Publicacin
EDITORIAL: EDITOTRANS S.L. J. Sents
C.I.F: B43675701
PERE MARTELL N 20, 2 - 1 E-mail contacto
43001 TARRAGONA (ESPAA) director@hackxcrack.com
Director Editorial
I. SENTIS Diseo grfico:
E-mail contacto J. M. Velasco
director@editotrans.com
Ttulo de la publicacin
Los Cuadernos de HACK X CRACK. E-mail contacto:
Nombre Comercial de la publicacn grafico@hackxcrack.com
PC PASO A PASO
Web: www.hackxcrack.com
Direccin: PERE MARTELL N 20, 2 - 1. Redactores
43001 TARRAGONA (ESPAA) AZIMUT, ROTEADO, FASTIC, MORDEA, FAUSTO,
ENTROPIC, MEIDOR, HASHIMUIRA, BACKBONE,
ZORTEMIUS, AK22, DORKAN, KMORK, MAILA,
TITINA, SIMPSIM... ... ... ... ...
Quieres insertar publicidad en PC PASO A Contacto redactores
PASO? Tenemos la mejor relacin precio-difusin
del mercado editorial en Espaa. Contacta con
redactores@hackxcrack.com
nosotros!!!
Colaboradores
Sr. Ruben Sentis Mas de 130 personas: de Espaa, de Brasil, de
Tfno. directo: 652 495 607 Argentina, de Francia, de Alemania, de Japn y
Tfno. oficina: 877 023 356
E-mail: miguel@editotrans.com
algn Estadounidense.
E-mail contacto
colaboradores@hackxcrack.com
Imprime
I.G. PRINTONE S.A. Tel 91 808 50 15
3 STAFF
4 CURSO DE PHP: MANE JO DE SESIONES DISTRIBUCIN:
14 CURSO DE TCP/IP: TCP ( TRANSMISION CONTROL SGEL, Avda. Valdeparra 29 (Pol. Ind.)
PR O T OC OL. 28018 ALCOBENDAS (MADRID)
3 4 XB OX (VI): MENU X Tel 91 657 69 00 FAX 91 657 69 28
3 7 CURSO DE SEGURIDAD EN REDES - IDS (II) WEB: www.sgel.es
Existen varias formas de mantener la sesin del navegante, se explicarn algunas, las
ms conocidas y que encontrareis en la mayora de portales.
Adems, las variables definidas a nivel de Otro ejemplo de la utilizacin de las sesiones
sesin permanecen accesibles desde todas es el comercio electrnico, cuando compramos
las pginas php del site, durante toda la vamos almacenando productos en el carrito
sesin del usuario, por lo tanto son una de la compra y, aunque cambiemos de pgina
especie de variables globales que permanecen web, los productos siguen estando en el carrito.
activas mientras la sesin est activa. Esto es gracias a que la informacin relativa
a esos productos est almacenada en variables
Una sesin estar activa siempre que el de sesin.
usuario se comunique con el servidor web, Existen dos formas de mantener y continuar
cambie de una pgina web a otra, enve un una sesin mientras el usuario navega por las
formulario, etc. Cada sesin tiene un tiempo pginas web. En la primera de ellas es
mximo de inactividad permitida (lo normal mediante el uso de las cookies (datos
suele ser 20 minutos, pero se puede cambiar guardados en el cliente) y en la segunda, el
ese valor), si un usuario permanece sin identificador de la sesin se incluye en la URL
actividad durante un periodo de tiempo de la pgina como un parmetro ms. El
determinado o abandona el sitio Web, todas mdulo de gestin de sesiones que proporciona
sus variables e identificadores de sesin son PHP permite utilizar ambas formas.
borrados.
El mdulo de sesiones admite ambas formas.
Dentro del fichero php.ini, modificando el Las Cookies son la mejor opcin, pero como
valor de la variable session.cookie_lifetime no son fiables (los clientes no estn obligados
se modifica el tiempo de vida (o tiempo de a aceptarlas), no podemos confiar en ellas. El
inactividad) de la sesin. segundo mtodo incrusta el "session id"
directamente en las URLs.
<?php
session_start();
session_unregister($nombre);
?>
<HTML>
<HEAD>
<TITLE>Sesion Paso 2</TITLE>
Los valores de las variables almacenadas </HEAD>
en la sesin se recogen utilizando <BODY>
$HTTP SESSION VARS[nombre variab <TABLE BORDER=1>
le] pero tambin se puede utilizar su <TR>
versin reducida $ SESSION, tal como <TD>Nombre: <?= $GLOBALS[nombre]?></TD>
podemos ver en el ejemplo anterior. </TR>
<TR>
Como podemos observar la recogida de <TD>Apellidos: <?= $_SESSION[apellidos]?></TD>
los valores de las variables tambin la </TR>
podemos realizar mediante el array <TR>
$GLOBALS que guarda todas las variables <TD>SesionId: <?= $HTTP_SESSION_VARS[sesionId]?></TD>
2.8 session_unregister
3. Cookies
El uso de las cookies es muy habitual en Los parmetros caducidad y secure son nmeros enteros
las Webs en los que debe existir un y no podemos sustituirlos con una cadena de texto
seguimiento de las acciones del usuario. vaca, en su lugar debemos utilizar un cero (0).
<?php
//Leemos el contenido de una cookie
print(\$alumno: . $ alumno);
?>
<?php
//Borra una cookie
setcookie(nombre);
?>
Las conexiones de las que hemos hablado Para poder realizar este chat entre 3
son siempre conexiones entre dos personas mediante cables de 2 conectores
puntos, y as son todas las conexiones se hace imprescindible la presencia de un
en TCP. Aunque puedas estar en un chat intermediario que gestione todas las
hablando con 100 personas a la vez, en conexiones de todos los usuarios. Esta es
realidad toda esa comunicacin se realiza precisamente la misin de un servidor
a travs de pares de conexiones. de chat.
Esto en realidad no es tal y como lo pinto. Este Una solucin mucho ms eficiente es
nmero cambiante realmente existe, pero su principal englobar en un slo paquete los datos
finalidad no es la de identificar conexiones, si no transmitidos y la confirmacin de los datos
ms bien la de mantener el estado de evolucin de recibidos.
una conexin, y saber as en todo momento qu
paquetes se pueden enviar y qu paquetes se pueden
recibir a travs de esa conexin.
la mquina B, que recibe los paquetes. comunicacin, a no ser que sea un mal-
Por tanto, la mquina A empieza a enviar nacido (que los hay), tendr que actuar
paquetes a toda velocidad y sin en consecuencia, relajndose un poco y
compasin, esperando las confirmaciones dndonos tiempo a asimilar lo que ya nos
de la mquina B. Como B no da abasto, ha enviado.
no es capaz de enviar las confirmaciones
de recepcin a tiempo. Al no llegar las Ms adelante veremos en detalle cmo
confirmaciones, A se pondr a reenviar se implementa el control de flujo en TCP.
los paquetes anteriores, al mismo tiempo
que contina enviando paquetes a diestro
y siniestro, por lo que la congestin, ! Todo esto que...
sumando los paquetes nuevos y los viejos,
ser muchsimo mayor. Todo esto que estamos explicando despus lo tocaremos
en la realidad. Veremos los paquetes TCP y dnde est
localizado cada concepto del que hablamos.
Por el canal de entrada irn llegando los servidor el resto de nuestros intentos de
paquetes uno tras otro. Se irn conexin, el servidor nos responder con
almacenando en el buffer de recepcin, RST a cada nuevo intento de conexin,
y no sern procesados hasta que llegue para que nos olvidemos de esa conexin
el ltimo paquete, que contiene el flag y nos centremos en la que ya tenemos.
PSH. Como este paquete es el que
completa el archivo de 400B, para cuando 4.7.5. Flag SYN (Synchronization)
llegue, el sistema receptor ya podr
procesar los datos de los 4 paquetes y Cuando este flag est activo (vale 1, en
reconstruir el archivo original. lugar de 0), estamos indicando al otro
extremo que deseamos establecer una
Como decamos, el flag PSH debe nueva conexin. Este flag se utiliza
combinarse con el flag URG cuando haya nicamente al abrir una nueva conexin.
datos urgentes. El flag URG ser el
encargado de decir al receptor que ha Ms adelante veremos el mecanismo
de atender los datos con mxima exacto por el que se establecen las
prioridad, y el flag PSH se asegurar de conexiones, as como algunas cuestiones
que el paquete no se retrase esperando de seguridad relacionadas con este flag.
en los buffers.
4.7.6. Flag FIN (Finish)
4.7.4. Flag RST (Reset)
Cuando este flag est activo (vale 1, en
Cuando este flag est activo (vale 1, en lugar de 0), indicamos al otro extremo
lugar de 0), estamos indicando al otro de la conexin de que, por lo que a
extremo de la conexin que algo no anda nosotros respecta, la conexin ya se
bien, ya que los datos que nos han llegado puede cerrar.
no coinciden con nuestra conexin, por
lo que se ha perdido la sincronizacin Normalmente, una vez que enviemos
entre ambas partes. nuestro propio FIN, tendremos que
esperar a que nuestro compaero nos
Ante cualquier campo incorrecto que enve el suyo. Una vez puestos los dos
recibamos (nmeros de secuencia de acuerdo en que no hay ms que hablar,
invlidos, o flags no esperados) se puede cerrar la conexin pacficamente.
tendremos que responder con un paquete
con este flag activo, para que el otro
Tanto RST como FIN se utilizan para
extremo se entere del problema, y se
finalizar conexiones, pero la diferencia es
cierre la conexin para re-sincronizar
que RST avisa de una situacin de error,
ambas partes.
mientras que FIN avisa de una
terminacin sin problemas.
Un uso tpico de este flag es cuando
estamos intentando conectar con un
servidor, enviando varios paquetes para Ante una terminacin con RST,
establecer la conexin, y al final uno de normalmente las aplicaciones avisarn al
ellos tiene xito. Si despus de ese usuario, por ejemplo con una ventana
paquete de conexin siguen llegando al avisando que se ha perdido la conexin.
adems, el prximo paquete tendr que mensaje (vaco si hace falta) cuya nica
ser como mximo de 250 bytes. finalidad sea precisamente avisar del
cambio de la ventana. Por otra parte, la
En respuesta, A enva un nuevo paquete, responsabilidad del emisor (el que ha
comenzando en el byte 2500, y congestionado al otro) es dejar de enviar
conteniendo tan slo 250 bytes. ms datos, y esperar un tiempo prudencial
para continuar la transmisin pasados
Todo esto es muy bonito, A y B son muy unos dos minutos, si es que el receptor
amigos, y A le va enviando a B las cosas no ha enviado una nueva ventana antes.
poco a poco cuando ste se agobia. Pero
esto en realidad no es una idea muy 4.9. Suma de comprobacin
buena. Si A va haciendo caso a B segn Al igual que en el caso de UDP, la suma
ste le vaya diciendo lo que puede de comprobacin se calcula mediante una
manejar, y B va avisando a A segn vaya operacin de aritmtica binaria (suma en
liberando hueco en su buffer de recepcin, complemento a uno de 16 bits) que se
los paquetes que se transmitan irn realiza sobre una cabecera especial que
siendo cada vez ms pequeos. contiene los datos ms relevantes.
En el peor de los casos, podra llegar a Cada vez que se recibe un paquete TCP,
ser 0 la ventana de B, y en el instante hay que realizar esta misma operacin
en que hiciese hueco para un msero con los datos recibidos, y comparar el
byte, avisar a A, por lo que A le enviara nmero obtenido con el campo suma de
un paquete con un nico byte de datos. comprobacin del paquete. Si ambos
Esto dara lugar a una transferencia muy nmeros no son iguales, los datos son
poco efectiva de los datos, donde muchos incorrectos, y ser necesaria una
de los paquetes seran de un tamao retransmisin de los mismos. En ese caso,
ridculo. no enviaremos la confirmacin de
recepcin pertinente, esperando a que el
Por tanto, es aconsejable no ir emisor decida retransmitir el paquete al
ajustndose literalmente al tamao de ver que no les respondemos.
la ventana, si no dejar unos pequeos
mrgenes. Por ejemplo, cuando se detecte Aunque ya lo coment en el anterior
que la ventana va decreciendo por artculo, os recuerdo que tenis detallada
momentos, lo mejor es esperar un tiempo la operacin de la suma de comprobacin
para dejar que la ventana vuelva a en el RFC 1071, y que tenis un cdigo
recuperar toda su capacidad, y continuar de ejemplo en C en la siguiente URL:
entonces la transmisin. Si fusemos con http://www.netfor2.com/tcpsum.htm
prisas, empendonos en enviar ms y
ms datos, la reduccin de tamao de la En este caso no tenis que realizar ninguna
ventana sera cada vez mayor, y la modificacin sobre el cdigo, ya que sirve
transferencia cada vez menos eficiente. precisamente para calcular la suma de
comprobacin de TCP.
En el caso de que la ventana llegue a ser
La cabecera que se forma para llevar a
cero, la responsabilidad del receptor (el
cabo la suma de comprobacin es la
que se ha congestionado) es avisar
siguiente:
cuando su ventana se recupere, con un
4.11. Opciones
Pero, significa esto que los datos tienen La opcin definida se utiliza nicamente
que ir en un nico paquete para ellos al establecer una nueva conexin. Lo que
solos? Esto podra ser poco eficiente, ya indica este campo opcional es el mximo
que los datos urgentes podran ser tan tamao de los segmentos que estamos
slo unos pocos bytes, y nos obligara a dispuestos a recibir. Un segmento es cada
enviar paquetes casi vacos slo para una de las partes en las que se dividen
poder transmitir el dato urgente. los datos, por lo que nuestro compaero
de conexin no debe enviarnos nunca
Por ejemplo, el CONTROL-C del que paquetes ms grandes de lo que
hablbamos, es un comando muy breve, indiquemos con esta opcin. En el caso
y sera un desperdicio enviar paquetes de que no usemos este campo opcional,
vacos que slo llevasen ese comando. nos podr enviar paquetes de cualquier
Por tanto, TCP permite combinar en tamao ajustndose, eso s, a nuestra
un mismo paquete datos urgentes ventana de recepcin.
con datos no urgentes.
Y qu relacin hay entonces entre la
Para conseguir esto, el campo puntero
ventana de recepcin y el tamao mximo
de urgencia nos indica el punto a partir
de segmento?
del cual terminan los datos urgentes.
Si, por ejemplo, nuestro paquete contiene Pues la ventana es un parmetro dinmico,
1000 bytes de datos, y el puntero de que va variando segn la congestin que
urgencia es 150, sabremos que los 150 hay en cada momento, mientras que el
primeros bytes del paquete son urgentes, tamao mximo de segmento es una
y los otros 850 son datos normales. constante para toda la sesin, que se
Por supuesto, esto slo tendr sentido si establece de antemano. Muchas veces,
el flag URG est activo. Si no es as, el el tamao mximo de segmento ser
campo puntero de urgencia menor que la ventana. Esto puede parecer
simplemente ser ignorado. absurdo, pero no es as, ya que el tener
- Descubriremos cmo realizar nuestros propios menus gracias a una versin hackeada
de la version oficial.
- Meteremos varios Juegos en un DVD
http://www.megagames.com/console/
cgi-bin/dl.cgi?id=xbox&file=cpxmenux!rar
! Tambin puedes...
archivo por otro con la misma extensin y DIR es el directorio dentro de la carpeta ISO
listo, el men ya tiene la pinta y la msica donde se encuentra el juego.
que nos gusta.
Entre juego y juego hay que dejar una lnea
Ahora nos dirigimos a la carpeta sshot, donde en blanco.
encontraremos la imagen previa del media
player, es una imagen con extensin png y As quedara el mo:
sus dimensiones son de 400 Pixeles de ancho
y 300 de alto. TITLE=Nintendo.
INFO=Emulador.
La borramos y ponemos aqu una imagen con GFX=nintendo.png
extensin png (de las mismas medidas) por DIR=Nintendo
cada juego que vayamos a poner en el DvD.
TITLE=Super Nintendo
Acordaros de los nombres, ya que ahora
INFO=Emulador.
tendremos que decirle al men qu imagen
GFX=Snintendo.png
va con cada juego. DIR=Super nintendo
Arrancamos el archivo
MenuX-xdi.bat y nos
configurara el men
segn le hemos dicho.
Ya esta, quemamos en
un DvD el contenido de
la carpeta ISO tal y como
he explicado en nmeros anteriores.
Como recordatorio digamos que snort trabaja Recordemos como se iniciaba snort....
en varios modos, como esniffer, como
capturador-grabador de paquetes o como snort de l directorio de logs c directorio y fichero del
NIDS, lo que nos ocupa es conocer las
archivo de configuracin
capacidades de snort en modo IDS,
concretamente en modo NIDS (NetworkIDS)
Ejemplo:
En este (NIDS) modo podemos ejecutar snort snort de l /var/snort_logs/ -c /etc/snort/snort.conf
en dos modos:
Modo logging, que grabar en disco todos Si queremos utilizar algn modo de alertas
los paquetes que circulan por la red o hacia como los que definimos anteriormente, la
o desde un host. orden sera (observa la opcin A que es
quien indica el modo de alerta):
Modo Alerta, en el cual comprobar si
snort de A fast l /var/snort_logs/ -c /etc/snort/snort.conf
existen reglas de comportamiento de los
paquetes y en su caso nos vuelca un informe Hay algunas matizaciones con los modos
o registro de aquellos paquetes que Syslog y SMB, ms adelante las descubriremos,
concuerdan con las mismas, advirtindonos por ahora slo es necesario que recuerdes
de las infracciones que se cometan. que se pueden usar y que existen.
A su vez, el modo alerta dispone de algunas Si queremos usar snort sin generar alertas
opciones que se pueden lanzar desde la lnea bastara utilizar la sintaxis:
de comandos de snort, estas son: snort de l /var/snort_logs/
Para complicar ms la cosa, podemos Las reglas que snort puede aplicar al trfico
formatear la salida de logs es decir, darle de red se basan en las cabeceras de los
un aspecto para su posterior lectura entre paquetes y en el cuerpo o contenido de los
los modos de presentacin ms habituales mismos y en el control de flujo, por tanto
estn: podremos aplicar reglas de cabecera, reglas
de contenido y reglas de control.
CSV (Comma Separated Values), es un
modo habitual para observar los registros LAS VARIABLES:
desde una hoja de clculo o base de Datos
Antes de meternos de lleno en las reglas,
Syslog, para personalizar la salida hacia el vamos a ver unas cuantas cosas. Para que
servidor Syslog snort pueda comparar esas reglas con algo
o desde alguna parte se utilizan variables,
Database, para escribir la salida a Bases de la sintaxis genrica de las variables es:
Datos tipo MySQL, ODBC, ORACLE, etc.. var nombre de variable valor de variable
Null, no crea archivos de logs pero s alertas Todas las variables se definen en el archivo
de configuracin (snort.conf) y se procesan
Tcpdump o Windump, formato de salida de arriba abajo, y como es comprensible,
para aplicaciones tcpdumo o windump deben estar definidas e inicializadas antes de
usarse.
SnmpTrap, enviar registros SNMP
Ejemplos:
Unified, Formato de salida binario que puede var DNS SERVER 172.28.0.98
ser ledo por diversas aplicaciones, es el var INTERNAL NET 172.28.0.0/16
mtodo de salida ms rpido var INTERNAL NETS [172.28.0.0/16, 192.168.1.0/24, 10.0.0.0/8]
Hasta se pueden lanzar mensajes de error Lgicamente el hecho de incluir una regla en
para que avise de los mismos... por ejemplo: el archivo de configuracin no lo es todo... lo
var ESTA_ES_MIRED $(RED_INTERNA:? Vic_Thor, define RED_INTERNA) importante es conocer qu tiene esa regla. En
el archivo de configuracin simplemente se le
Echa un vistazo al archivo snort.conf para dice a snort que deseamos utilizar tal o cual
ver las variables que usa... entre ellas
regla y ser en los archivos especificados
encontrars estas con estos valores (o
donde tendremos que definir el
parecidos):
comportamiento de la regla.
LAS REGLAS
Protocolos usados
Puertos origen y/o destino
Tras definir las variables tendremos que decidir
qu reglas vamos a incluir en el IDS y las Direcciones IP origen y/o destino
directivas del pre-procesador que queramos...
Las reglas de Contenido inspeccionan:
Normalmente las reglas a ser utilizadas se
declaran mediante las lneas include y las La totalidad o parte de la informacin que
directivas del pre-procesador mediante las no es cabecera.
lneas preporcessor:
Ejemplo sacado del archivo de configuracin Las reglas de Control de flujo
original inspeccionan:
Las reglas se definen de una forma muy Como estars pensando, esa regla no es que
sencilla: sea precisamente efectiva, puesto que tendr
un trabajo enorme debido a que todas las
Accin Protocolo IP/red origen Puerto sesiones de navegacin de la red se volcarn
origen Direccin IP/red Destino Puerto en los logs y alertas.
destino Contenido control de flujo
Vamos a afinar un poquito ms... pongamos
Vamos a detallarlo:
que queremos alertar de slo aquellas
Accin puede ser: pass, log, alert, dynamic navegaciones hacia pginas de sexo....
o activate
Ahora todas las pginas visitadas en cuya
Protocolo puede ser: ICMP, TCP, IP o UDP, direccin web aparezca la palabra sexo sern
hay otros pero fundamentalmente estos. las registradas, las otras no...
Origen y/o Destino son: Direcciones IP alert tcp 172.28.0.0/16 any -> any 80 (content: sexo;)
individuales o direcciones de red en notacin
CIDR
Claro, que si el servidor pornogrfico no utiliza
Direccin es decir si va hacia el origen o hacia el puerto 80 tampoco saltara la alerta, la
el destino solucin ser fcil, no?
Figura 2.
Le pisaremos un poquito el terreno a nuestro Como muestra la figura anterior, disponemos
Componentes de una
compaero que est haciendo el curso de de tres Clases de Direcciones IP A-B-C, bueno
direccin IP
tambin existen D y E, pero de momento no
TCP/IP y brevemente repasemos cmo es
para nosotros.
una direccin IP :)
CLASE A
Componentes de una direccin IP
Una manera fcil de reconocer si un dispositivo
forma parte de una red Clase A es verificar el
primer octeto de su direccin IP, cuyo valor
debe estar entre 0 y 127. Con una excepcin,
todas aquellas direcciones que comiencen por
127.xxx.xxx.xxx, que son consideradas como
direcciones de loopback (el tema loopback
ya se explic en anteriores nmeros de la
revista).
Figura 1. En toda direccin IP existe una parte de
Componentes de una CLASE B
Red y una parte destinada para el host
direccin IP
Las direcciones IP (Ipv4) son de 32 bits, Las direcciones IP Clase B siempre tienen valores
que van del 128 al 191 en su primer octeto.
representadas en 4 grupos de 8 bits cada una
A grandes rasgos, los nmeros de puerto hacia otras redes pero slo de aquellas
tienen los siguientes intervalos asignados: comunicaciones que usen puertos por encima
del 1024, sera as:
Los nmeros inferiores a 255 se usan para
aplicaciones pblicas.
log tcp 172.28.0.0/16 any -> any 1024:65535
Los nmeros del 255 al 1023 son
asignados a empresas para aplicaciones o tambin:
comerciales.
log tcp 172.28.0.0/16 any -> any 1024:
Los nmeros superiores a 1023 no estn
regulados. es decir, el carcter dos puntos ( : ) podemos
usarlo como un separador de rangos, de forma
Convencionalmente usamos determinados que si aparece antes del nmero lo
nmeros de puerto asociados a ciertas interpretaremos como hasta y si aparece
aplicaciones o servicios, pero nada nos impide despus del nmero de puerto lo
alterar ese convenio siempre y cuando interpretaremos como desde, ejemplo:
cliente y servidor se pongan de acuerdo y se
dirijan las peticiones por los puertos 1025: desde el 1025
acordados. :1024 Hasta el 1024
1:1000 desde el uno al 1000
Entre los servicios y puertos ms comunes,
estn:
La palabra any significa cualquiera y recuerda
que podemos usar la exclamacin ( ! ) para
negar cualquier cosa, en este caso un puerto,
por ejemplo
Bueno y un sin fin de ellos ms, seguro que -> Hacia el Destino
por Internet o por nuestros foros encontrars <- Desde el destino
ms informacin de cada uno de ellos, lo que <> Bidireccional, entre el origen y el destino
son y para qu se usan... adems, hasta los
hay propios de UDP, de TCP o para ambos...
vamos que tampoco hay que saberse la lista Es fcilmente comprensible, pongamos esta
de los 65000 y pico como si fuesen la lista regla:
de los Reyes Godos....
alert tcp 172.28.0.0/16 any -> any 80
Por otra parte y volviendo a las reglas de
snort, es posible explicar a nuestras reglas Alertar de los paquetes tcp que fluyan desde
si queremos utilizar ms de un puerto, imagina la red 172.28.0.0/16 hacia cualquier otra y
que quieres registrar el trfico de nuestra red con destino el puerto 80.
Observa que si un equipo de otra red entrase Es bastante potente... podemos vigilar y
en la nuestra aunque sea por el puerto 80, seguir los pasos de quien rompe las reglas
esos paquetes no se registraran, para ello que establecimos... de ese modo podemos
tendramos que haber usado <- monitorizar en tiempo real que demonios est
haciendo nuestro sospechoso
Pero claro, si ussemos esa notacin, no se
registraran los que nuestra red emite... o Si combinamos sabiamente todo lo que ya
sea, que si queremos todos, desde fuera o llevamos aprendido podemos empezar a
desde dentro, usaramos <> monitorizar el trfico de nuestra red a medida
incluyendo slo aquellas reglas que se
Antes de pasar a las reglas de contenido, necesiten.
veamos otra forma til de definir las reglas,
el uso de los mtodos Activate y Dynamic En el ejemplo anterior utilizamos algo nuevo
hasta ahora, msg: Texto, no le prestes
Empecemos con un ejemplo para verlo ms mayor importancia, simplemente ser un texto
claro.... descriptivo que se guardar junto con las
activate tcp any any -> any 80 (activates: 80; msg: OJO, Peticin Web;) alertas y registros, esa forma es parte de las
dynamic tcp any any -> any 80 (activated_by: 80; count: 25;) reglas de contenido que veremos a
continuacin, pero antes vamos a realizar un
Bien, lo primero es que cort la lnea antes par de prcticas para afianzar lo aprendido...
de dynamic... esto no es as, slo para
mejorar la visualizacin de la regla, Prctica 1. Detectar puertos
realmente ira todo seguidito Extraos y conexiones
sospechosas.
Lo que s es importante es que exista
correlacin entre el nmero que sigue a
Imaginemos que somos los administradores
activates: y el nmero que sigue a
de una red y queremos saber varias cosas:
activated_by
Bueno, podramos seguir, con estos ejemplos Una vez abierto el editor gedit, escribimos
imagino que ya sabes por donde voy.... estas lneas para crear el nuevo archivo de
configuracin:
El seguimiento de esta prctica la haremos
con un snort corriendo en un equipo LiNUX,
por ltima vez te repito la diferencia en la
estructura de directorios entre ambos sistemas
operativos en cuanto a snort se refiere:
Reglas de contenido
Profundidad (depth:)
Es una opcin til puesto que snort no cualquier paquete, con uricontent se examinar
analizar en todo el contenido del paquete, nicamente el contenido de la direccin URL
slo en los bytes indicados, con lo que de una visita a un servidor web, con ello se
evitamos un trabajo en exceso. ahorra procesar todo el contenido del paquete
y buscar solamente en la direccin web escrita
Desplazamiento (offset:)
Uso: uriconent: contenido uri
Establece el nmero del byte a partir del cual
empezar a ser sern analizado el contenido Ejemplos:
del paquete. alert tcp any any -> any 80 (uricontent %255c;)
Si no se utiliza la opcin nocase, snort alert tcp any any -> any 23 (content: login failed; session
analizar exactamente el contenido de la printable;nocase; msg:ATENCION Intento de acceso por TELNET;)
opcin content:, lo que se llama case Explicaciones
sensitive, si deseamos ignorar la diferencia
entre maysculas y minsculas usaremos Escribe ATENCIN intento de acceso por
nocase. TELENET como cabecera de en el archivo de
alertas generado.
Uso: nocase;
Aunque existen otras opciones en el contenido
Ejemplos: de las reglas, stas que hemos comentado
alert tcp any any -> any any (content: sexo; nocase;) son las ms usadas, puedes revisar el resto
en:
Explicaciones
http://www.snort.org/docs/snort manual/node14.html
Alertar de contenidos en los que sexo, Sexo,
SEXO, sExO, etc.. estn presentes, si bien, No todas las opciones que se pueden aplicar
a partir de la versin 2.1 de snort, ya se toma a las reglas son de cabecera de paquetes o
como opcin por defecto. de contenido de los mismos, hay ms... hay
unas cuantas que son muy interesantes (otras
Contenido URI: uricontent: menos) que se pueden utilizar tras la deteccin
(Post-detection) o para controlar el flujo de
Anteriormente vimos que con la opcin los paquetes (flow)
content, se examinaba el contenido de
Etiquetas (tag: )
Ejemplos: Ejemplos:
alert tcp any any -> any 23 (content: login failed; alert tcp any any -> any 23 (tag:host,10, packets;)
session printable;nocase; flow:from_server;) alert tcp any any -> any 23 (tag:host,20, seconds;)
Explicaciones Ejemplos:
alert icmp any any > any any (resp:icmp_host; msg: Entrada de un Ping;)
Registrar 10 paquetes (primera sintaxis) o
durante 20 segundos (segunda sintaxis) el Explicaciones
trfico telnet que se establezca entre servidor
y cliente. Esta alerta generar un registro cuando
cualquier equipo de la red intente enviar un
CONTRAMEDIDAS Y ACCIONES
ping a cualquier destino, cancelar las
respuestas del ping y enviar un resultado al
El grupo de opciones que se detallan a
origen del tipo Host inalcanzable, vamos que
continuacin permitirn tomar a snort una
prohibimos los pings y registramos sus
determinacin acerca de lo que debe hacer
intentos...
con la conexin que dispar la alarma.
Estas opciones se encuadran dentro de las Hay que tener en cuanto algo importante...
llamadas Flex Resp respuestas flexibles y si usamos este tipo de reglas indebidamente
para que puedan ser utilizadas debemos podremos causar una negacin de servicios
realizar previamente algunas modificaciones (DoS) en la red o bucles entre las sesiones
en el paquete snort, concretamente ser que se establezcan entre cliente y servidor,
preciso instalar un juego de libreras salas con cautela.
llamadas libnet y compilar de nuevo el
cdigo fuente de snort con opciones que OPCIONES ESPECFICAS PARA
no estn previamente contempladas. PROTOCOLOS
Antes de explicarte como se hace eso, veamos
sus caractersticas: En conjuncin con cualquiera de las reglas
explicadas anteriormente, podemos utilizar
otras que van en consonancia con el protocolo
Respuestas en tiempo real (resp:
definido en la alerta...
sesp: y react:)
Son muchas y variadas, algunas bastante
Estas opciones permiten entre otras cosas tiles y otras menos usadas, si dispones de
desconectar la sesin o enviar mensajes ICMP unos conocimientos medios de TCP/IP las
al cliente. entenders a la perfeccin, en caso contrario
te crearn muchas dudas, para resolverlas....
Uso: ya sabes:
alert tcp $EXTERNAL NET any > $HTTP SERVERS $HTTP PORTS
( m s g : " W E B I I S u n i c o d e d i r e c t o r y t rave r s a l a t t e m p t " ;
flow:to server,established; content:"/..%c0%af../"; nocase;
classtype:web application attack; reference:cve,CVE 2000 0884;
sid:981; rev:6;)
Esta opcin puede ser usada por los plugins En el prximo apartado veremos las directivas
de salida para documentar apropiadamente del pre-procesador, entonces lo comprenders
la alerta generada y enlazar con webs externas mejor, pero antes vamos a realizar alguna
del tipo bugtraq, securityfocus, etc... p r c t i c a . . . q u e ya va s i e n d o h o ra .
Paso 1) Descargar el cdigo fuente de snort Existe otra versin mas actual, la 1.1.x
pero al menos yo no consegu que funcionase
Lo primero descargar las fuentes de snort
correctamente, recientemente ha aparecido
desde la pgina oficial:
otra versin ms moderna de snort y puede
http://www.snort.org/dl/snort-2.1.1.tar.gz que s sean operativa con ella, pero no vamos
a empezar ahora actualizando snort... lo dejo
Una vez descargado el cdigo fuente, lo para ti si quieres probar esa ltima revisin
guardamos en un directorio y descomprimimos
que es la 2.1.2
el tarball en el directorio que queramos, en
el ejemplo que se sigue el archivo descargado
de snort.org se guard en /root/Taller snort/temp Las libreras libnet tambin las guardamos
y los archivos descomprimidos en en el mismo directorio que antes, para no
/root/Taller snort/temp/snort-2.1.1 tener desperdigadas todas las utilidades. Si
te fijas en la pantalla que puse anteriormente,
Para descomprimirlo podemos usar la orden
el conjunto de libreras libnet estn
tar (como vimos en el primer artculo) y si
estamos usando Xwindow, bastar con hacer /root/Taller_snort/Libnet-1.0.2a
doble-clic en el archivo snort-2-1.1.tar.gz y
Pantalla 8. extraerlo en la carpeta que queramos. Y las descomprimimos igual que antes,
Descomprimir las
por ejemplo en la carpeta libnet que cuelga
fuentes de snort en los
En la siguiente pantalla se muestran los pasos de /root/Taller_snort/temp, como ilustra
directorios indicados
anteriores: la pantalla anterior.
./configure --enable-flexresp,
Observa que no se indic el directorio de
precisamente esta es la opcin que
instalacin del Gestor de Bases de Datos
buscbamos, esto habilitar la posibilidad de
MySQL, los parmetros citados anteriormente
incluir en nuestras reglas las
slo necesitan especificar el directorio si el
contramedidas en tiempo real
script ./configure no encuentra el programa.
./configure --with-postgresql=DIR, ms
Para esta prctica no necesitamos smb ni
de lo mismo pero para Gestores PostGreSQL
mysql, eso ser para el prximo artculo...
pero as ya llevamos camino adelantado.
./configure --with-oracle=DIR, lo mismo
para ORACLE
Llegados a este punto deberamos tener snort
preparado.... podemos probarlo para ver si
./configure --with-openssl=DIR, Soporte
todo es correcto, por ejemplo:
para SSL, se usa con plug-ins XML
snort T c/etc/snort/snort.conf.old
Pantalla 11.
Directorios de snort
Pantalla 9. Verificacin
Te estars preguntando... Y qu fue de para Windows
de la instalacin de
nuestro querido Windows?
snort con opciones
especiales
Pues nada... Si instalaste la versin de snort Por tanto la orden sera:
Vamos que lo nico que deberamos tener en 1) Los directivos de la empresa tienen
equipos con IPs: 172.28.0.50 y
cuenta es que la estructura de directorios no
172.28.0.99, nuestra intencin es que todo
es la misma que en LiNUX, siempre digo que aquel que intente hacer un ping a estos
no lo repetir ms... y siempre caigo en los equipos reciba un mensaje del tipo Host
mismo... repito por penltima vez, pero Inalcanzable pero ellos SI DEBEN poder
hacer ping a los dems.
ms breve...
Observa tambin que las reglas en que A estas alturas ya sabemos lo que es y para
aparece !$EQUIPO_ADMIN, con esto nos lo que sirve el pre-procesador, tratemos de
aseguramos que sean TODOS excepto el explicar un poquito ms sus caractersticas y
admin..... sus componentes.
Entre las directivas del pre-procesador o plug- Es como cuando llamas al novio o a la novia
ins ms comunes tenemos: por telfono...
Prepocesador stream4
http://www.forohxc.com/hijacking/articulo1
Se basa en dos conceptos: TCP 4/hijacking.pdf
statefulness y Session reassembly
(Reconstruccin de conexiones completas o La razn por la que TCP negocia las conexiones
incompletas del protocolo TCP y reensamblado es precisamente porque:
de la sesin).
TCP es un protocolo orientado a conexin
Para entender Statefulness es necesario (si no se completa el mecanismo del saludo
hablar un poquito del protocolo TCP, ms
de tres vas no se establece una comunicacin
concretamente de cmo se establecen las
efectiva).
conexiones TCP, el saludo de tres vas y
las seales TCP o flags: Detecta errores si los paquetes se pierden
(se realiza un seguimiento de cada transmisin
TCP y el Saludo de tres vas y si uno de los extremos no recibe o recibe
mal, se pide de nuevo el paquete con nmero
de secuencia perdido).
Cuando dos equipos se comunican mediante
Se abren puertos en el lado del cliente y
TCP, ocurre algo as:
del servidor para mantener viva la
1) Sincronizacin (SYN) que enva el emisor comunicacin.
al receptor Se termina de forma educada (seal FIN)
o por las bravas (seal RST).
2) Respuesta SYN-ACK, que enva el
receptor al emisor
Adems, tanto el cliente como el servidor no
3) Envo ACK del emisor al receptor se comunican byte por byte o paquete por
paquete, negocian un tamao y cantidad de
De esta forma emisor y receptor se "ponen datos de antemano, a esto se llama Ventana
de acuerdo" para el envo y recepcin del TCP (TCP Window) que no es otra cosa que
mensajes, se envan los socket la cantidad mxima de informacin que
correspondientes, los nmeros de puerto, la
secuencia....
reinicia o cambian los nmeros de secuencia noinspect, por defecto desactivada... faltara
por lo que en ocasiones tambin pueden mas... esto desactiva la inspeccin de paquetes
producirse falsos positivos si esos casos se
producen con demasiada frecuencia. Lo mejor preprocessor stream4: noinspect
es no incluirla, recuerda que disable es
desactivar, de tal modo que snort estar al timeout: Por defecto a 30 segundos, es el
loro si se producen malas artes en nuestra tiempo en el que stream4 dejar de atender
red... claro que siempre se puede incluir para una conexin si no hay actividad en la misma...
vigilar a quien se cree mas listo...
empezamos a entender ahora lo que es un preprocessor stream4: timeout 25
honeypot... un seuelo, un equipo
aparentemente indefenso.... memcap: es el nmero mximo de memoria
expresada en bytes que utilizar stream4 para
preprocessor stream4: disable evasion alerts reensamblar los paquetes, por defecto unos
8 megas, es conveniente asignar ms si nos
ttl_limit, este parmetro marcar el tiempo lo podemos permitir, revisa los procesos que
mximo tolerado entre el envo y recepcin corren en tu mquina para saber la RAM que
de paquetes dentro de una misma sesin. te queda disponible y ajustar mejor este
Habitualmente el nmero de routers, saltos, parmetro.
etc entre el origen y el destino es el mismo
que entre el destino y el origen (por donde preprocessor stream4: memcap 65000000
voy, vengo) pero tampoco tiene por qu ser
as, y de eso se ocupa este parmetro. stream4_reassemble: es un plugin especfico
para la reconstruccin de los paquetes TCP
Si el nmero de saltos de vuelta en el paquete por puertos, puede tener varias opciones:
es excesivo con respecto al nmero de saltos clientonly, serveronly, both, noalertsy
que sufri en la ida... algo pasa.... a lo peor ports. Y reconstruir el trfico por los puertos
alguien secuestr la conexin o hizo que indicados (ports lista de puertos...) atendiendo
nuestros datos se enrutaran de forma no a la conexin establecida por el servidor, el
convencional hacia un destino intermedio.... cliente o ambos (clientonly, serveronly,
Es difcil indicar un nmero mgico, depender both) y generando alertas o no generndolas
de los protocolos de enrutamiento que usen (noalerts)
nuestras redes y a las que nos conectamos,
pero como orientacin, no debera existir una preprocessor stream4_reassemble both
diferencia de ms de 10 saltos, es decir, si ports 21 23 25 53 80 138 139 445
caracteres para los diferentes idiomas, el Ports: se indicarn entre llaves el puerto o
archivo por defecto es unicode.map, este puertos por los que escucha el servidor web
archivo lo encontrars en el directorio /etc
de la instalacin de snort, es un archivo de Ejemplos:
texto que puedes modificar
La siguiente directiva especifica un servidor
codemap <integer> hace referencia al juego por defecto (ya sea apache o IIS) que escucha
de caracteres usado por unicode, por ejemplo por los puertos 80, 8080 y 8000
si buscas dentro del archivo unicode.map,
preprocessor http_inspect_server: default profile all ports {80 8080 8000}
encontrars que el nmero 1252 corresponde
al juego de caracteres ANSI - Latin I La siguiente directiva es la misma pero para
el servidor web instalado en la direccin IP
Dentro de la carpeta /contrib, hay un fuente 172.28.0.99 configurado por le puerto 80
en C que se llama ms_unicode_generator.c
que te permitir crear tus propios archivos y preprocessor http_inspect_server: server 172.28.0.99 profile all ports {80}
Elimina los espacios sobrantes o ajusta a RPC tambin utiliza puertos, pero a diferencia
un espacio la decodificacin del protocolo. de protocolos como telnet o ftp, un servicio
RPC basado en un servidor RPC puede
Puedes encontrar otras opciones de inters lanzarse sobre puertos no reservados, esto
aqu: es lo que se llama rpcbind o portmapper.
Configurar el preprocesador
preprocessor portscan2-ignorehosts:
arpspoof
172.28.0.50/16 172.28.0.200/16
El uso de la directiva es muy simple: Por este mes hemos terminado... hemos
avanzado MUCHO, nos queda los MAS
preprocessor arpspoof_detect_host: JUGOSO, pero tendrs que esperar al
172.28.0.50 00.05.1c.08.ae.7c prximo nmero.... para entonces
preprocessor arpspoof_detect_host: configuraremos un Sistema de deteccin
172.28.0.25 01.00.c9.af.cd.92 de Intrusos con registro de alertas en una
Es decir, relacionar las direcciones IP con Base de Datos y Servicios Web para ver
las verdaderas direcciones MAC de cada los resultados a todo color, con formatos
equipo que queramos proteger, si alguien
de salida ms legibles y cmodos de
en la red intenta utilizar estas direcciones IP
interpretar y no tan crudos como los
o MACs y no se corresponden con la lista
mostrada, se disparar una alerta.
informes que hemos obtenido en este
artculo.
Puedes ver la MAC asignada a un equipo si
envas un ping a su direccin ip y luego
Aprenderemos a configurar samba para
consultas la tabla arp mediante la orden
comunicarnos con clientes Windows y
arp a
Service For Unix para comunicarnos con
clientes LiNUX, enviaremos las alertas
ping 172.28.0.1
por mensajera interna, por mail, hacia
arp a
una Base de Datos, seremos capaces de
utilizar servidores syslog, y tambin
Y si quieres ver tu propia mac, puedes hacerlo
utilizar otras herramientas para mantener
con:
las reglas a punto, vamos todo un elenco
de posibilidades para estar informado de
ipconfig/all (en windows)
TODO lo que pasa por nuestra red.
ifconfig (en Linux)
Y tambin... cmo no... intentaremos
Configurar el pre-procesador saltarnos a snort.... o al menos haremos
toda clase de pruebas de comportamiento
fnord
(stress-test) para ver si nuestras reglas
y directivas son apropiadas y tenemos
Una forma que snort identifica los ataques
desconocidos es buscando shellcodes y
todo, todito, todo bien configurado.
secuencias NOP.