5.3 Large gallery model tests
5.3.1 Investigation cases for visualisation
El DNS no solamente es utilizado para la conversi´on de nombres de dominio a direcciones IP, en la actualidad, existen extensiones que permiten por ejemplo la con- vergencia de las redes telef´onicas y el Internet mediante la utilizaci´on de un tipo de registro llamado NAPTR. El sistema deActive Directory de Microsoft funciona gracias a la incorporaci´on del tipo de registro SRV al DNS, y permite el descubrimiento de servicios en una red. Al momento de escribir esta tesis una de las extensiones partic- ularmente interesantes es DNSSEC o la utilizaci´on de firmas dig´ıtales para asegurar y validar las consultas.
Esta tesis no abord´o estas nuevas extensiones y se enfoc´o a crear la base para una soluci´on posterior m´as completa. El siguiente paso es incorporar las nuevas extensiones, as´ı como la evaluaci´on de servidores recursivos. El servicio de transferencia deber´a ser analizado en trabajos posteriores porque ya fue explotado en alguna ocasi´on para lograr comprometer servidores utilizando la implementaci´on dominante BIND. Generalmente las empresas con servidores mantienen listas de acceso para el servicio de transferencias de zonas limitando la factibilidad de un ataque de transferencia de zonas, pero no est´a por dem´as su an´alisis en un trabajo posterior.
Los servidores autoritativos tienen una importancia fundamental en Internet, sin embargo, los servidores recursivos son de igual forma fundamentales para que los usuar- ios de una empresa o proveedor de servicios de Internet puedan utilizar la red de redes. Los servidores recursivos son de igual forma explotados y utilizados en la actualidad para actividades comophishing. Existen m´as variables que se pueden utilizar en la clasi- ficaci´on de paquetes de un servidor recursivo ya que la interacci´on con otros servidores es mucho mayor.
Existe otra gran fuente de informaci´on en la creaci´on de sistemas de clasificaci´on inteligentes para tr´afico de DNS: las respuestas a las consultas. Ligando una respuesta del servidor con la consulta previa se pueden obtener una mayor cantidad de variables que podr´an ser utilizadas en la clasificaci´on.
El enfoque de esta tesis es la investigaci´on de la efectividad de los clasificadores bayesianos en la detecci´on de paquetes sospechosos en servidores autoritativos del DNS. Un sistema completo de detecci´on de ataques en servidores se presenta en la figura 5.1. Un servidor recibe una gran cantidad de peticiones por segundo. El proceso de cap- tura de paquetes es un proceso que afecta directamente la capacidad de procesamiento de un servidor, de igual forma, el proceso de obtenci´on de variables a partir de un paquete del DNS y la posterior clasificaci´on bayesiana requieren ciclos del procesador. Ser´ıa un error de dise˜no ejecutar los procesos de captura de paquetes, obtenci´on de
variables y clasificaci´on bayesiana sobre el mismo servidor que ejecuta el servicio de DNS.
Un dise˜no m´as apropiado consiste en utilizar un servidor de monitoreo diferente al servidor donde corre el servicio de DNS que realice la captura de paquetes, ob- tenci´on de variables a partir de los paquetes del DNS y la clasificaci´on de paquetes sospechosos. La captura de paquetes es realizada mediante la utilizaci´on de un dis- positivo llamado TAP que tiene como funci´on replicar el tr´afico destinado al servidor. Una vez realizada la captura de paquetes, el servidor de monitoreo obtiene las vari- ables de clasificaci´on a partir de los paquetes capturados del DNS, y posteriormente realiza la clasificaci´on bayesiana. Los paquetes catalogados como sospechosos son en- viados a un servidor central de clasificaci´on. El servidor central de clasificaci´on recibe los paquetes marcados como sospechosos de todos los servidores de monitoreo y poste- riormente realiza una reclasificaci´on de los mismos. El usuario retroalimenta el sistema y el clasificador bayesiano aprende mediante la retroalimentaci´on. El servidor central de clasificaci´on env´ıa la nueva red bayesiana generada a partir de la retroalimentaci´on del usuario a los servidores de monitoreo con la finalidad de mejorar la clasificaci´on realizada por cada servidor de monitoreo.
El Internet basa su funcionamiento en la cooperaci´on entre diferentes entidades, los proveedores de servicio comparten tr´afico mediante un protocolo definido, los nave- gadores utilizan un mismo est´andar, y as´ı sucesivamente. La cooperaci´on entre enti- dades administradoras de servidores es fundamental para responder efectivamente a las nuevas amenazas que aparecen d´ıa con d´ıa. Un trabajo posterior deber´a incorporar alg´un mecanismo para comunicar los nuevos ataques encontrados a otras entidades ad- ministradoras de servidores as´ı como desarrolladores de implementaciones de servidores y actuar r´apidamente en conjunto. Existe un est´andar en desarrollo en la IETF llamado Intrusion Detection Message Exchange Format[10] cuya funci´on es interconectar medi- ante un protocolo en com´un a los sistemas de detecci´on de intrusos para compartir la
informaci´on sobre nuevas amenazas encontradas. El ap´endice C describe este protocolo en la versi´on 7 del draft de especificaci´on. Una vez que este protocolo sea estandarizado en la IETF, el mismo deber´a ser incorporado al sistema de clasificaci´on bayesiano para comunicar los resultados a otras entidades.
Las propuestas de mejora descritas con anterioridad permitir´an la creaci´on de un mejor sistema de detecci´on de intrusos en servidores DNS. La incorporaci´on de estas mejoras plantea nuevos retos que para los investigadores del ´area.
Cap´ıtulo 6
Conclusi´on
La soluci´on de clasificaci´on bayesiana desarrollada para comprobar la hip´otesis de esta tesis demostr´o que es posible capturar y utilizar la inteligencia del ser humano en la clasificaci´on de consultas del DNS.
Un servidor autoritativo es sencillo en su funcionamiento, b´asicamente es una base de datos con un protocolo especial para poderla consultar. La cantidad de variables que se pueden obtener a partir de una consulta en un servidor autoritativo es reducida, sin embargo, suficiente para lograr una clasificaci´on adecuada.
El DNS es fundamental para el correcto funcionamiento de Internet. Existen dos servicios b´asicos de infraestructura en Internet, uno es el ruteo que permite que un paquete de datos pueda llegar de un lugar a otro y el otro es el DNS que permite nombrar a los recursos en Internet.
La creaci´on de sistemas computacionales libres de errores y sin problemas de se- guridad es dif´ıcil y casi imposible de lograr con la tecnolog´ıa actual. La complejidad de los sistemas computacionales aunada a la interacci´on de componentes creados por diferentes equipos de programaci´on crea un ambiente propicio para la aparici´on de vul- nerabilidades computacionales. La soluci´on propuesta en esta tesis comprob´o la eficacia de utilizar clasificadores bayesianos en la clasificaci´on de tr´afico a partir de la estruc- tura misma del protocolo. La incorporaci´on de t´ecnicas de inteligencia artificial en IDS es un campo que promete la detecci´on temprana de vulnerabilidades disminuyendo el
impacto de las mismas.
Esta tesis es la base para crear sistemas de detecci´on de intrusos de redes para el servicio de DNS mucho m´as efectivos. El objetivo de esta tesis se cumpli´o a plenitud y NIC M´exico, la empresa encargada de la administraci´on de los servidores autoritativos para los dominios terminados en .mx, tiene una nueva y efectiva herramienta en su arsenal para enfrentar los desaf´ıos que la seguridad computacional plantea.
Bibliograf´ıa
[1] Paul Albitz. DNS and BIND. O’Reilly & Associates, Inc., Sebastopol, CA, USA, 2001.
[2] Rebecca Bace and Peter Mell. Nist special publication on intrusion detection system. Technical report, NIST (National Institute of Standards and Technology), August 2001. Special Publication 800-31.
[3] Daniel Barbara and Sushil Jajodia. Detecting novel network intrusions using bayes estimators. Inthe 1st SIAM International Conference on Data Mining, April 2001.
[4] James Cannady and James Mahaffey. The application of artificial neural networks to misuse detection: initial results. In the 1st International Workshop on Recent Advances in Intrusion Detection (RAID 1998), 1998.
[5] CERT Center. Cert/cc statistics 1988-2005. Electronic document available at
http://www.cert.org/stats/.
[6] J Cheng. Bn powerpredictor. Electronic document available at http://www.cs. ualberta.ca/~jcheng/bnsoft.htm.
[7] K.C. Claffy. Sd supercomputer center researchers find unnecessary traffic sat- urating a key internet rook server. Electronic document available at http: //ucsdnews.ucsd.edu/newsrel/science/sdscRoot.htm.
[8] Susan C.Lee and David V.Heinbuch. Training a neural network-based intrusion detector to recognize novel attacks. IEEE Transactions on Systems, Man, and Cybernetics - Part A: Systems and Humans, 31(4):294–299, July 2001.
[9] Symantec Corporation. Enterprise security news. Electronic document available athttp://enterprisesecurity.symantec.com/content.cfm?articleid=852.
[10] H. Debar, D. Curry, and B. Feinstein. The Intrusion Detection Message Exchange Format. draft-ietf-idwg-idmef-xml (WORK IN PROGRESS), February 2006.
[11] R. O. Duda and P. E. Hart.Pattern Classification and Scene Analysis. John Wiley and Sons, New York, 1973.
[12] Nir Friedman, Dan Geiger, and Moises Goldszmidt. Bayesian network classifiers. Mach. Learn., 29(2-3):131–163, 1997.
[13] IANA. Internet protocol v4 address space. Electronic document available athttp: //www.iana.org/assignments/ipv4-address-space.
[14] Van Jacobson, Craig Leres, and Steven McCanne. Tcpdump/libpcap. Electronic document available at http://www.tcpdump.org/pcap3_man.html, 2002.
[15] Anup K.Ghosh and Aaron Schwartzbard. A study in using neural networks for anomaly and misuse detection. In Proceedings of the 8th USENIX Security Sym- posium, 1999.
[16] J. Klensin. Simple Mail Transfer Protocol. RFC 2821 (Proposed Standard), April 2001.
[17] NLnet Labs. Dns analyzer. Electronic document available at http://www. nlnetlabs.nl/dns-analyzer/index.html, 2003.
[18] Pat Langley, Wayne Iba, and Kevin Thompson. An analysis of bayesian classifiers. In National Conference on Artificial Intelligence, pages 223–228, 1992.
[19] Pat Langley and Stephanie Sage. Induction of selective bayesian classifiers. In Proceedings of the 10th Conference on Uncertainty in Artificial Intelligence, pages 399–406, 1994.
[20] William Lucyshyn Lawrence A. Gordon, Martin P. Leob and Robert Richardson. Computer crime and security survey. Electronic document available at http: //i.cmpnet.com/gocsi/db_area/pdfs/fbi/FBI2005.pdf.
[21] P. V. Mockapetris. RFC 882: Domain names: Concepts and facilities, November 1983.
[22] P. V. Mockapetris. RFC 883: Domain names: Implementation specification, November 1983.
[23] P. V. Mockapetris. RFC 1034: Domain names — concepts and facilities, November 1987.
[24] P. V. Mockapetris. RFC 1035: Domain names — implementation and specification, November 1987.
[25] Paul V. Mockapetris. The domain name system. In Proc. of the IFIP WG 6.5 working conference on Computer-based message services, pages 61–72, New York, NY, USA, 1984. Elsevier North-Holland, Inc.
[26] JeanPhilippe Planquart. Application of neural networks to intrusion detection. Electronic document available at http://rr.sans.org/intrusion/neural.php, 2004.
[27] Y. Rekhter, B. Moskowitz, D. Karrenberg, G. J. de Groot, and E. Lear. Address Allocation for Private Internets. RFC 1918 (Best Current Practice), February 1996.
[28] Jake Ryan and Risto Miikkulainen. Advances in Neural Information Processing Systems, chapter Intrusion detection with neural networks. The MIT Press, 1999.
[29] Mehran Sahami, Susan Dumais, David Heckerman, and Eric Horvitz. A bayesian approach to filtering junk E-mail. InLearning for Text Categorization: Papers from the 1998 Workshop, Madison, Wisconsin, 1998. AAAI Technical Report WS-98-05.
[30] W. Richard Stevens. TCP/IP Illustrated Vol. 1 - The Protocols. Addison-Wesley, 1994.
[31] Cisco Systems. Understanding tcp/ip. Electronic document available at
http://www.cisco.com/univercd/cc/td/doc/product/iaabu/centri4/user/
scf4ap1.pdf.
[32] Andrew Tanenbaum. Computer Networks. Prentice Hall Professional Technical Reference, 2002.
Ap´endice A
Bloques reservados por IANA
Bloque Fecha Status
001/8 Sep 81 IANA - Reserved 002/8 Sep 81 IANA - Reserved 005/8 Jul 95 IANA - Reserved 007/8 Apr 95 IANA - Reserved 023/8 Jul 95 IANA - Reserved 027/8 Apr 95 IANA - Reserved 031/8 Apr 99 IANA - Reserved 036/8 Jul 00 IANA - Reserved 037/8 Apr 95 IANA - Reserved 039/8 Apr 95 IANA - Reserved 042/8 Jul 95 IANA - Reserved 092/8 Sep 81 IANA - Reserved 093/8 Sep 81 IANA - Reserved 094/8 Sep 81 IANA - Reserved 095/8 Sep 81 IANA - Reserved 096/8 Sep 81 IANA - Reserved Bloques /8 no asignados por IANA.
Bloque Fecha Status
097/8 Sep 81 IANA - Reserved 098/8 Sep 81 IANA - Reserved 099/8 Sep 81 IANA - Reserved 100/8 Sep 81 IANA - Reserved 101/8 Sep 81 IANA - Reserved 102/8 Sep 81 IANA - Reserved 103/8 Sep 81 IANA - Reserved 104/8 Sep 81 IANA - Reserved 105/8 Sep 81 IANA - Reserved 106/8 Sep 81 IANA - Reserved 107/8 Sep 81 IANA - Reserved 108/8 Sep 81 IANA - Reserved 109/8 Sep 81 IANA - Reserved 110/8 Sep 81 IANA - Reserved 111/8 Sep 81 IANA - Reserved 112/8 Sep 81 IANA - Reserved 113/8 Sep 81 IANA - Reserved 114/8 Sep 81 IANA - Reserved 115/8 Sep 81 IANA - Reserved 116/8 Sep 81 IANA - Reserved 117/8 Sep 81 IANA - Reserved 118/8 Sep 81 IANA - Reserved 119/8 Sep 81 IANA - Reserved 120/8 Sep 81 IANA - Reserved Bloques /8 no asignados por IANA.
Bloque Fecha Status
173/8 Apr 03 IANA - Reserved 174/8 Apr 03 IANA - Reserved 175/8 Apr 03 IANA - Reserved 176/8 Apr 03 IANA - Reserved 177/8 Apr 03 IANA - Reserved 178/8 Apr 03 IANA - Reserved 179/8 Apr 03 IANA - Reserved 180/8 Apr 03 IANA - Reserved 181/8 Apr 03 IANA - Reserved 182/8 Apr 03 IANA - Reserved 183/8 Apr 03 IANA - Reserved 184/8 Apr 03 IANA - Reserved 185/8 Apr 03 IANA - Reserved 186/8 Apr 03 IANA - Reserved 187/8 Apr 03 IANA - Reserved 197/8 May 93 IANA - Reserved 223/8 Apr 03 IANA - Reserved 240/8 Sep 81 IANA - Reserved 241/8 Sep 81 IANA - Reserved 242/8 Sep 81 IANA - Reserved 243/8 Sep 81 IANA - Reserved 244/8 Sep 81 IANA - Reserved 245/8 Sep 81 IANA - Reserved 246/8 Sep 81 IANA - Reserved Bloques /8 no asignados por IANA.
Bloque Fecha Status
247/8 Sep 81 IANA - Reserved 248/8 Sep 81 IANA - Reserved 249/8 Sep 81 IANA - Reserved 250/8 Sep 81 IANA - Reserved 251/8 Sep 81 IANA - Reserved 252/8 Sep 81 IANA - Reserved 253/8 Sep 81 IANA - Reserved 254/8 Sep 81 IANA - Reserved 255/8 Sep 81 IANA - Reserved Bloques /8 no asignados por IANA.
Ap´endice B
Librer´ıa libpcap
Libpcap[14] es la librer´ıa de c´odigo abierto de captura de paquetes de red por excelencia. Las funciones que componen esta librer´ıa conforman un API portable que permite la creaci´on de sistemas para monitoreo de red de bajo nivel. La librer´ıa est´a de- sarrollada en C y conforma elcoredel sistema de captura de paquetes tcpdump utilizado en UNIX para depuraci´on. Esta librer´ıa fue utilizada en la compresi´on y modificaci´on del paquete DNS Analyzer[17]. A continuaci´on se muestran las funciones que conforman esta librer´ıa y despu´es una descripci´on del prop´osito de cada funci´on.
pcap t *pcap open live(char *device, int snaplen, int promisc, int to ms, char *errbuf);
pcap t *pcap open dead(int linktype, int snaplen);
pcap t *pcap open offline(char *fname, char *errbuf);
pcap dumper t *pcap dump open(pcap t *p, char *fname);
int pcap setnonblock(pcap t *p, int nonblock, char *errbuf);
int pcap getnonblock(pcap t *p, char *errbuf);
int pcap findalldevs(pcap if t **alldevsp, char *errbuf);
char *pcap lookupdev(char *errbuf);
int pcap lookupnet(char *device, bpf u int32 *netp, bpf u int32 *maskp, char *er- rbuf);
int pcap dispatch(pcap t *p, int cnt, pcap handler callback, u char *user);
int pcap loop(pcap t *p, int cnt, pcap handler callback, u char *user);
void pcap dump(u char *user, struct pcap pkthdr *h, u char *sp);
int pcap compile(pcap t *p, struct bpf program *fp, char *str, int optimize, bpf u int32 netmask);
int pcap setfilter(pcap t *p, struct bpf program *fp);
void pcap freecode(struct bpf program *);
u char *pcap next(pcap t *p, struct pcap pkthdr *h);
int pcap datalink(pcap t *p);
int pcap snapshot(pcap t *p);
int pcap is swapped(pcap t *p);
int pcap major version(pcap t *p);
int pcap minor version(pcap t *p);
int pcap stats(pcap t *p, struct pcap stat *ps);
FILE *pcap file(pcap t *p);
int pcap fileno(pcap t *p);
char *pcap geterr(pcap t *p);
char *pcap strerror(int error);
void pcap close(pcap t *p);
void pcap dump close(pcap dumper t *p);
pcap open live pcap open live() es utilizada para obtener un apuntador de captura para posteriormente obtener paquetes de la red. device es un string que especifica el nombre de la interfaz de red que ser´a abierta. snaplet especifica el n´umero m´aximo de bytes a capturar. promisc especifica si la interfaz ser´a configurada en modo promiscuo. to ms especifica el n´umero de milesegundos a esperar para una lectura.
pcap open dead pcap open dead() es usada para crear una estructura pcap t uti- lizada al llamar otras funciones de libpcap.
pcap open offline pcap open offline es llamada para abrir un archivo previamente guardado para lectura. fname especifica el nombre del archivo. El archivo utiliza el mis- mo formato que tcpdump y tcpslice. El nombre “-” es un sin´onimo de stdin. errbuf es us- ado para regresar el texto de error y solamente contiene valor cuando pcap open offline() falla y regresa NULL.
pcap dump open pcap dump open() es llamada para abrir un archivo en modo escritura. El nombre “-” es un sin´onimo de stdout. Si NULL es regresado por la funci´on entonces pcap geterr() podr´a ser utilizado para obtener el texto del error.
pcap setnonblock pcap setnonblock() configura un apuntador de captura, abierto mediante pcap open live() en modo no bloqueante o deshabilita el modo no bloqueante seg´un el argumento (0 para modo no bloqueante o cualquier otra cosa para modo
bloqueante). Si existe un error, -1 es regresado y errbuf contendr´a el texto del error. Esta funci´on no tiene efecto cuando se est´a leyendo o escribiendo en archivos. En caso de que la funci´on pcap setnonblock() se ejecute con ´exito 0 es regresado. En modo no bloqueante cualquier intento de leer del apuntaodr con pcap dispatch() regresar´a un valor al momento y no detendr´a la ejecuci´on del programa esperando la llegada de paquetes. pcap loop() y pcap next() no trabajan en modo no bloqueante.
pcap getnonblock() pcap getnonblock() regresa el estado actual (no bloqueante o bloqueante) del apuntador; regresa 0 en caso de estar utilizando archivos de lectura o escritura. Si existe un error regresa -1 y errbuf contiene el mensaje de error.
pcap findalldevs() pcap findalldevs() construye una lista de dispositivos de red que pueden ser abiertos con pcap open live(). (Nota: existen dispositivos que no pueden ser abiertos con pcap open live() por falta de privilegios por ejemplo). alldevsp es un apuntador al primer elemento de la lista; cada elemento de la lista es del tipo pcap if t.
pcap freealldevs() pcap freealldevs() es utilizado para liberar de memoria una lista previamente creada con pcap findalldevs().
pcap lookupdev() pcap lookupdev() regresa un apuntador a un dispositivo de red que puede ser utilizado por pcap open live() y pcap lookup net(). Si existe un error entonces NULL es regresado y errbuf contiene el mensaje de error.
pcap lookupnet pcap lookupnet() es utilizado para determinar el n´umero de red y m´ascara asociada con el dispositivo de red. Tanto netp y maskp son punteros del tipo bpf u int32. Esta funci´on regresa -1 cuando ocurri´o un error y errbuf contiene el mensaje de error.
pcap loop
pcap next pcap next() lee el pr´oximo paquete (llamando pcap dispatch() con cnt de 1) y regresa un puntero u char a los datos contenidos en el paquete.
pcap dump pcap dump() env´ıa la informaci´on del paquete al archivo abierto con cap dump open(). Nota: los argumentos de llamado de la funci´on son utilizables con los usados por pcap dispatch() o pcap loop(). Si se llama directamente entonces el par´ametro user es del tipo pcap dumper t igual al regresado por pcap dump open().
pcap compile pcap compile() es usado para compilar la cadena str como progra- ma de filtrado. program es un apuntador a una estructura bpf program y su valor es prove´ıdo por pcap compile(). optimize controla si se aplicara optimizaci´on en el c´odigo resultante. Si la funci´on regresa -1 indica un error y la funci´on pcap geterr() deber´a ser utilizada para desplegar el texto del error.
pcap setfilter pcap setfilter() es utilizada para especificar el programa de filtrado. fp es un apuntador a una estructura bpf program. La funci´on regresa -1 si ocurri´o un error en cuyo caso la funci´on pcap geterr() deber´a ser utilizada para desplegar el texto del error.
pcap freecode pcap freecode() es utilizada para liberar la memoria reservada para una estructura del tipo bpf program struct generada por la funci´on pcap compile().
pcap datalink pcap datalink() regresa el tipo de capa de enlace, entre las mas im- portantes encontramos:
DLT NULL, BSD loopback encapsulation.
DLT IEEE802, IEEE 802.5 Token Ring.
DLT FDDI, FDDI.
DLT ATM RFC1483, RFC 1483 LLC/SNAP-encapsulated ATM.
DLT RAW, raw IP.
DLT IEEE802 11, IEEE 802.11 wireless LAN.
DLT LTALK, Apple LocalTalk.
pcap snapshot pcap snapshot() regresa el tama˜no especificado cuando pcap open live fue llamado.
pcap is swapped pcap is swapped() regresa true si el archivo abierto usa diferente