analisis de vulnerabilidad

Embed Size (px)

Citation preview

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

1

Anlisis de VulnerabilidadesAcosta, Nicols Buitrago, Ricardo Newball, McCarthy Ramrez, Maria Anglica Snchez, Julin. 9 de marzo de 2004 Palabras Claves Anlisis de vulnerabilidades, vulnerabilidad, NESSUS, SATAN, Security Analysis Tool for Auditing Networks, N-STEALTH, NIKTO, lib-whisker, Internet Security Scanner. . 1 Introduccin

Resumen En el mercado existen diferentes herramientas para analizar vulnerabilidades de un red. Estas herramientas son muy tiles, para los administradores de red preocupados por al seguridad e integridad de su red y la inforamcin que en ella manejan. Entre los principales analizadores se puede encontrar NESSUS y SATAN, los cuales ofrecen una amplia gama de reglas para evaluar las vulneabilidades y adems permiten la incorporacin de nuevas reglas para hacer mpas riguroso y especfico el anlisis. Sin embargo, estas herramientas se convierten en armas de doble filo, pues pueden ser usadas con el objetivo de mejorar la seguridad de la red o pueden ser usadas por hackers con el objetivo de detectar vulnerabilidades y realizar ataques.

Internet ha facilitado y promovido el desarrollo de las comunicaciones a nivel global en los ltimos aos. Este aumento en la comunicacin, ha estado fuertemente ligado al desarrollo de nuevas redes y nuevas aplicaciones que permiten compartir ms informacin entre usuarios remotos. Ha surgido en las empresas, la importante funcin de los administradores de red, los cuales deben promover un uso correcto de la red y a su vez garantizar la seguridad y confidencialidad de la informacin que manejan. Sin embargo, cada da aumentan los ataques contra redes y contra computadores conectados a la red. La omnipresencia de Internet los est [virus] volviendo pan de cada da y estn aumentando su poder1. El nivel de sofisticacin de estos ataques es cada vez mayor, lo cual exige el desarrollo y actualizacin de herramientas pertinentes. Se puede por tanto evidenciar, la gran importancia de desarrollar mecanismos de autoproteccin contra estos ataques, los cuales deben pasar por una fase de identificacin de los potenciales riesgos a los que se est1 EL TIEMPO. Seccin 1. Pgina 18. Domingo 7 de marzo de 2004.

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

2

expuesto, luego a una fase de anlisis de las debilidades para posteriormente definir acciones de mejora y defensa as como planes de mitigacin ante sucesos indeseables. En las etapas de identificacin y anlisis, los Analizadores de Vulnerabilidades como los que se desarrollan en el presente documento juegan un papel fundamental para una clara y eficaz deteccin de falencias en seguridad.

entre el servidor fingerprint y la forma en que el sistema de archivos representa los links para acceder al directorio raz de username. En el segundo caso el programa comsat supone que etc/utmp es correcto, el sistema de archivos configura este archivo para otorgar permisos y el programa de correo asume que todo esta correcto [22] Sin embargo, existen fuertes crticas sobre los analizadores de vulnerabilidades ya que funcionan bajo un esquema de reglas, que son slo generadas por expertos en el tema y que se configuran para vulnerabilidades. La posibilidad de acceder a estas reglas y conocerlas, permite que personas malintencionadas realicen ataques contra redes no protegidas para estas vulnerabilidades. Adicionalmente, la identificacin y definicin de reglas se deja en manos de expertos que puedan comprender las interacciones de las cuales surgen las vulnerabilidades. Por otra parte, aunque existen diversas formas de realizar auditoras de seguridad apoyadas en las herramientas descritas anteriormente, en todos los casos se utilizan herramientas para la deteccin de las vulnerabilidades. Estas herramientas que detectan fallas de seguridad pueden ser utilizadas de dos formas diferentes: interna o externamente a la maquina que se analiza. Cuando se aplican internamente, se realiza la auditora desde el interior de la mquina (generalmente utilizando el superusuario), lo que otorga numerosas ventajas para la deteccin de vulnerabilidades ya que se tiene acceso a los ficheros crticos del sistema. En el caso de las auditoras externas, la deteccin de vulnerabilidades se realiza desde una mquina diferente a la que est siendo analizada. En este tipo de auditoras se realizan ataques para verificar la existencia de vulnerabilidades. De la variedad y cantidad de ataques que alguna

2y y

Objetivos Conocer que es una vulnerabilidad y como se hacen los anlisis de vulnerabilidades. Conocer cuales son las herramientas existentes para realizar anlisis de vulnerabilidades. Para cada herramienta, entender como funciona, cuales son sus caractersticas y funcionalidades. Conocer como cada herramienta analizadora de vulnerabilidades genera reportes o informacin importante para el anlisis de los riesgos de una red.

y

y

3

Analizadores de Vulnerabilidades

Qu son las vulnerabilidades? Las vulnerabilidades de un sistema surgen a partir de errores individuales en un componente, sin embargo nuevas y complejas vulnerabilidades surgen de la interaccin entre varios componentes como el kernel del sistema, sistemas de archivos, servidores de procesos, entre otros. Estas vulnerabilidades generan problemas de seguridad para la red en cuestin. Entre las vulnerabilidades ms conocidas se encuentran el finger username y la notificacin de mensajes de correo a travs de comsat. Para el primero de estos la vulnerabilidad es originada en la interaccin

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

3

de estas herramientas sea capaz de realizar, depender, en gran parte, el xito en la deteccin de vulnerabilidades. Aunque este factor es, probablemente, el ms importante, conviene considerar otros aspectos como por ejemplo la forma de realizar los ataques. Cabe anotar que las herramientas descritas en este paper realizan un anlisis de debilidades externas del sistema. Es decir, las herramientas que se instalan en una mquina para realizar ataques sobre otra diferente, y de este modo detectar sus vulnerabilidades; presentando, tal vez, el punto de vista ms realista para analizar vulnerabilidades, ya que asumen el papel de hacker externo que pretende comprometer una mquina a travs de la red. En las siguientes secciones se analizarn cuatro analizadores de vulnerabilidades con distintas caractersticas y se detallarn sus caractersticas y su funcionamiento.

NESSUS. Cabe aclarar que se trabajar en la ltima versin estable de NESSUS a la fecha de publicacin de este paper (versin 2.0.10). Sin embargo muchas de las cosas aqu expuestas aplican para otras versiones tanto anteriores como posteriores. A travs de este paper se expondrn las caractersticas principales de Nessus, los resultados de sus escaneos y la veracidad de sus reportes. Ms que sus cualidades se intentar revelar sus defectos. El paradigma de funcionamiento de NESSUS Esta herramienta es bastante diferente a lo que se expone en este paper para el anlisis de vulnerabilidades de una red en particular. Lo que se espera de un programa para efectuar ataques es simplemente un comando como atacar-vctima (Figura 1). NESSUS arroja esta concepcin por la borda y toma una forma completamente distinta de hacer sus tareas. NESSUS fue diseado para ser una herramienta distribuida (Figura 2) y de fcil administracin. De esta forma un administrador de red puede efectuar su anlisis de vulnerabilidades desde cualquier lugar del mundo pero desde el interior de su red. Esto se logra haciendo a NESSUS una herramienta cliente/servidor. El servidor espera solicitudes del cliente para llevar a cabo su anlisis. Los ataques son efectuados desde el servidor y los resultados son enviados directamente al cliente. El cliente adems es el responsable de la configuracin y de la administracin del servidor. [email protected]>$ atacar-victima 192.121.211.10 > resultados.logFigura 1: Este estilo de comando es el que se espera utilizar para una herramienta convencional de anlisis de vulnerabilidades. NESSUS no trabaja de esta manera.

4

PROYECTO NESSUS

Introduccin NESSUS es definido por su autor como un escaneador remoto de seguridad. Este trmino aunque es muy adecuado, de ahora en adelante ser referido como analizador de vulnerabilidades para evitar confusiones con otros analizadores de vulnerabilidades dentro de este paper. NESSUS[1] es un proyecto fundado por Renaud Deraison que intenta crear un analizador de vulnerabilidades gratuito, poderoso, actualizado y fcil de utilizar[1]. Este programa adems es extensible, robusto, seguro, de propsito general (no est limitado a un solo tipo de vulnerabilidades) y ms importante que cualquier otra caracterstica, es su amplia aceptacin por la comunidad. Tambin puede llegar a ser una herramienta mortfera si se le da un mal uso, pero este no es su fin. A continuacin se discutir en detalle las caractersticas y el funcionamiento de

Esta caracterstica de administracin y ejecucin remota permite que no solo puede ejecutarse remotamente sin importar la

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

4

plataforma en la que se ejecute el cliente, sino tambin hace a un lado la restriccin del lugar desde donde se corra el cliente. Fcilmente el administrador de red puede correr NESSUS desde su casa, desde un avin, desde su celular, etc. Todo esto al costo de una instalacin un poco compleja. Pero como todo lo bueno en la vida, esta caracterstica tiene sus problemas y ms adelante se expondrn los mismos. La instalacin del servidor en plataformas Unix es muy sencilla, simplemente se necesita que libpcap est instalado. La instalacin de los clientes es an ms sencilla, ya que lo nico que necesita la mquina en donde se instala es una conexin a Internet.

Figura 2: Funcionamiento de NESSUS. El cliente (Cliente NESSUS) puede configurar, administrar y ejecutar el servidor de NESSUS (Servidor NESSUS). El servidor de NESSUS puede ejecutar su anlisis de vulnerabilidades sobre una o ms vctimas especificadas por el cliente.

Manejo de usuarios Nessus se vale del modelo cliente/servidor para su funcionamiento. El servidor se encarga de llevar a cabo los ataques, y el cliente se encarga de decirle al servidor qu debe hacer y cmo debe hacerlo. El servidor tambin se encarga de enviar los resultados al cliente, para que este provea el procesamiento necesario de los mismos. Est bien, un administrador puede ejecutar sus anlisis desde cualquier parte del mundo, pero a su vez un atacante puede realizar estos ataques desde cualquier parte del mundo y sus anlisis no sern atribuidos a l, sino a la mquina que realiz los ataques, es decir, el servidor de Nessus. Por esta razn Nessus maneja sesiones de usuario independientes del sistema operativo en el que se ejecute (esto tambin lo hace ms portable, ya que no se limita a un mtodo de autenticacin nativo). Un usuario puede ser autenticado a travs de una contrasea, o bien, a travs de un certificado digital. Adems de la autenticacin de la sesin, Nessus se vale de SSL para la encriptacin del flujo de datos entre el cliente y el servidor. Para este fin se debe crear un certificado para el servidor. Este certificado es presentado al usuario para la posterior encriptacin del flujo de datos. Nessus provee al usuario con herramientas tanto para la creacin del certificado como para la creacin de usuarios: nessus-mkcert y nessus-adduser, respectivamente.y

Cmo funciona Ya se sabe cmo se distribuye Nessus y cmo se instala en una red. Tambin se discuti sobre las ventajas de disponer a Nessus de esta manera. Ahora se discutir cmo aprovecha esta disposicin al mximo y qu es lo que puede hacer.

La herramienta nessus-mkcert genera una entidad de certificacin dentro del servidor y un certificado para el servidor. Un cliente tambin puede hacer uso de un certificado para la encriptacin de datos, en cuyo caso la encriptacin se dar en doble va y no solo servidor-cliente. Nessus provee la herramienta nessus-mkcert-client para la creacin del certificado del cliente. Para que un usuario pueda llevar a cabo un anlisis de vulnerabilidades, es necesario que ste se autentique primero. Si el password o el certificado dado por el usuario no es vlido, el

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

5

servidor de Nessus responder con un error de autenticacin, de lo contrario responder con el certificado generado con nessus-mkcert para la posterior encriptacin del flujo de datos entre servidor y cliente. A partir de este momento todo el trfico entre servidor y cliente estar

encriptado. As todos los resultados enviados por el servidor son mucho ms difciles de descifrar sin el conocimiento de la llave utilizada en el algoritmo de encripcin. La Figura 3 ilustra el proceso de autenticacin y comunicacin entre servidor y usuario.

Figura 3: Proceso de configuracin del servidor y de comunicacin entre cliente y servidor. Antes de cualquier cosa el servidor debe conocer tanto el certificado que va a usar como algn usuario. No se puede utilizar Nessus si no existen usuarios. Por razones obvias es necesario que el servidor de Nessus est en ejecucin antes que el cliente pueda hacer uso del mismo. Los pasos 0.1, 0.2 y 0.3 son los pasos preparatorios y son necesarios en caso que no se hayan realizado. Si ya se han realizado pueden obviarse. y

Configuracin del anlisis Una vez el usuario ha sido autenticado, el mismo tiene que indicarle al servidor qu ataques debe llevar a cabo y a cules mquinas analizar. Tambin es necesario especificar cmo llevar a cabo este anlisis. Para llevar a cabo un anlisis de vulnerabilidades es necesario conocer las direcciones IP de las vctimas. Nessus no es ningn tipo de adivino ni tampoco est programado para realizar magia negra para saber de antemano qu sistemas analizar. Puede escanearse tanto un conjunto de computadores, as como computadores en particular. Es decir, puede indicrsele a Nessus si se desea escanear un conjunto de computadores que cumplan con una direccin de red y mscara de red determinadas, o bien se puede indicar la direccin IP exacta de la vctima. Puede tambin especificarse una lista de direcciones IP a las cuales analizar. A la hora del anlisis Nessus se cerciorar que dichas vctimas en realidad se encuentran disponibles, ya que Nessus cuenta con varias

herramientas para lograr este fin. La primera y ms eficiente es el Ping. Esta simplemente enva un paquete ICMP Echo Request hacia la vctima, y si esta responde en un intervalo de tiempo lmite significa que la mquina est disponible. De lo contrario se deshabilitan los ataques para esa mquina en particular. El problema con este mtodo es que por lo general ICMP es bloqueado por firewalls (si el anlisis se est haciendo desde una red externa o desde Internet). Por lo tanto Ping es utilizado nicamente para una ejecucin interna a la red. Nessus tambin provee la opcin de TCP Pings que intentan establecer conexiones a puertos comunes como los son el puerto 80, el puerto 53, etc. Una vez se ha establecido qu mtodo utilizar Nessus para verificar los hosts activos, es hora de verificar qu puertos tiene abiertos la vctima. Para este fin Nessus provee tres medios especiales: el mtodo connect(), el SYN scan y el escaneo de puertos por medio de la herramienta NMAP. El mtodo connect() intenta establecer una conexin (three way

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

6

handshake) con cada puerto escaneado. El SYN scan enva un paquete TCP SYN a la vctima al puerto que se desea escanear. Si se recibe un paquete SYN+ACK correspondiente al paquete SYN previamente enviado, el puerto est vivo. A diferencia del mtodo connect(), el mtodo SYN scan no cierra las conexiones. Aunque el SYN scan es bastante silencioso para el escaneo de un puerto, puede llegar a ser bastante sospechoso para muchos puertos en muchos hosts. Por otro lado NMAP provee una gran cantidad de opciones para llevar a cabo el escaneo de puertos. NMAP es la herramienta ms utilizada para este fin. Adems de proveer gran cantidad de mtodos de escaneo de puertos, NMAP permite establecer la precisin y velocidad a la que se quiere que se realice el escaneo de puertos. Cabe anotar que a mayor velocidad, menor precisin y viceversa. Entre ms puertos se escaneen, ms tiempo tomar. Si se escanean nicamente los puertos necesarios, el anlisis puede tardar menos y hacer menos ruido (con ruido se hace referencia a lo evidente desde el punto de vista de un IDS del anlisis de puertos). Nessus nicamente llevar a cabo ataques para aquellos puertos que estn abiertos. Una vez se han determinado qu hosts y qu puertos de los hosts estn disponibles, Nessus ejecuta un plugin especial denominado el Services Plugin (expuesto en ms detalle en una seccin siguiente). Este plugin tiene la tarea de determinar qu servicios se estn ejecutando en cules puertos. Esta fase es necesaria debido a que muchos servicios se ejecutan sobre puertos no estndar, i.e. Apache sobre el puerto 8080. Este plugin es suficientemente preciso para determinar qu servicios se estn ejecutando sobre qu puerto. Una vez configurados los mtodos de identificacin de hosts y de anlisis de puertos, se deben elegir los plugins (ataques) a ejecutar sobre las vctimas. Nessus provee una gran cantidad de plugins (en una seccin siguiente

se explicarn en ms detalle los plugins). Por ahora basta con resaltar que los plugins son los ataques que se realizarn sobre las vctimas. Nessus categoriza los ataques por familias, las cuales simplemente caracterizan el tipo de vulnerabilidad que un plugin en particular explota, i.e. Ataque CGI, Ataque RPC, etc. Adems de las familias Nessus distingue tres tipos principales de plugins: y Peligrosos: Los plugins peligrosos son en general ataques de denegacin de servicio que pueden hacer que una mquina detenga su funcionamiento. Se consideran peligrosos porque perjudican a las mquinas vctimas y Chequeos seguros (safe checks): Estn simplemente basados en informacin de la vctima y determinan si sta es o no vulnerable a un ataque de denegacin de servicio. Sin embargo, aunque este tipo de plugins es seguro, puede generar muchas falsas alarmas ya que nicamente se determina la versin de un software y esto no es suficiente para saber si un servicio es o no vulnerable. y Otros. Muchos plugins necesitan privilegios especiales para ser ejecutados, por lo que Nessus tambin provee facilidades para especificar nombres de usuario y contraseas para diversos servicios que puedan necesitarlos (ataques SMB, FTP, POP3, etc.). La Tabla 1 muestra las caractersticas configurables de Nessus a travs del cliente.Caracterstica Hosts vctimas Descripcin Nessus necesita que el usuario especifique las vctimas a ser analizadas. Las vctimas se pueden especificar por su nombre de host, por su direccin IP o por la combinacin direccin de red/mscara. Nessus permite que los hosts se especifiquen dentro de un

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

7

archivo para que pueda ser reutilizado posteriormente. Ej.: 127.0.0.1, 198.200.123.2, chie.uniandes.edu.co, 153.215.12.0/24 Mtodo de Una vez especificados los hosts a identificacin analizar, Nessus verificar cules de de hosts activos estos efectivamente estn activos. Para este puede usar uno o ambos mtodos. Estos mtodos son Ping y TCP Ping. Mtodo de Una vez se identifican los hosts escaneo de activos, Nessus necesita verificar qu puertos puertos estn abiertos para determinar qu ataques llevar a cabo. Nessus permite al usuario especificar qu mtodo de escaneo de puertos utilizar: connect(), SYN scan, o cualquiera de los mtodos que utiliza NMAP. Seleccin de Una vez se sabe cmo hacer las plugins cosas, Nessus necesita saber qu hacer. Para esto el usuario debe indicarle a Nessus que plugins ejecutar sobre las vctimas. Todo ataque que necesite de un puerto que no est abierto ser descartado. Tabla 1: Las principales caractersticas configurables de Nessus.

Con estas tres fases preparatorias Nessus proporciona la mayor precisin posible de su anlisis. Sin estos pasos preparatorios el ruido generado por Nessus sera exagerado, tambin la precisin de sus resultados sera menor y adems la rapidez del anlisis sera bastante reducida. Una vez realizados estas tres fases de reconocimiento, Nessus procede a ejecutar los plugins convenientes. En la siguiente seccin se explican los plugins en detalle. La Figura 4 ilustra el proceso de anlisis de vulnerabilidades realizado por Nessus.

Proceso de anlisis de vulnerabilidades Tal y como se expuso en la seccin anterior, tres fases indispensables de preparacin son realizadas para determinar qu plugins (ataques) ejecutar sobre la(s) vctima(s). Primero se determina qu hosts estn disponibles (por medio de un Ping o por medio de un TCP Ping). Los hosts que no estn activos son descartados y se remueven del anlisis. Una vez determinados los hosts activos, se realiza un escaneo de puertos sobre los mismos. Los ataques dirigidos a los puertos que no estn disponibles son descartados. Luego se verifica qu servicios est ejecutando cada puerto, y de acuerdo a este anlisis se asignan los ataques correspondientes a cada puerto.y

Figura 4: Proceso de ejecucin del anlisis de vulnerabilidades. Despus del paso 2, todos los resultados del servidor son enviados al cliente. Los datos que viajan del servidor al cliente estn encriptados. Para esto se utiliza SSL.

y

Knowledge Base Aunque todo este proceso de reconocimiento suena sorprendente, an hay ms. Nessus cuenta con una caracterstica bastante sofisticada para la reutilizacin de anlisis previos. Esto quiere decir que Nessus puede basarse en ataques ya realizados para realizar

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

8

nuevos ataques. Esta caracterstica se denomina Knowledge Base (KB). La KB no es ms que una lista de toda la informacin recopilada sobre un host analizado[7]. Esta caracterstica tan sofisticada sirve a propsitos como evitar la redundancia de los anlisis, as si por ejemplo se determina una vulnerabilidad en el servidor HTTP de una mquina, otro anlisis puede basarse en esta informacin para llevara a cabo sus ataques. La versin actual de Nessus nicamente permite la utilizacin de la KB para el anlisis actual. Una vez se termina la ejecucin del anlisis, la KB es liberada de memoria. En la KB se almacenan todos los resultados del escaneo de puertos, el anlisis de servicios y los hosts activos. A travs de esta base de datos es que los plugins saben cmo realizar sus tareas ms eficientemente. Es una forma de que tanto Nessus como los plugins tengan inteligencia y aprendan de los dems ataques.Plugin s Nessus

Los plugins pueden ser creados en dos lenguajes de programacin (Figura 5): NASL (Nessus Attack Scripting Language) y C. Nessus provee todas las herramientas necesarias para la creacin de plugins en estos dos lenguajes. La documentacin de Nessus recomienda utilizar NASL debido a que es ms portable, sin embargo, C puede llegar a ser necesario por razones de flexibilidad y de capacidades. Todo lo que no se pueda hacer con NASL se podr hacer con C. Sin embargo segn [6] los plugins pueden ser escritos en cualquier lenguaje de programacin. Esto es cierto debido a que la gran mayora de los lenguajes de programacin tiene interfaces con C. Sin embargo no son muchos los plugins creados en otros lenguajes de programacin. La gran mayora est escrita en NASL [6]. Primero se expondr la estructura bsica de un plugin escrito en C (y eventualmente se mostrar un ejemplo real) y sus caractersticas, y luego se discutir la estructura y caractersticas de un plugins escrito en NASL.y

nasl

gcc

Figura 5: Los plugins de Nessus no hacen parte de su ncleo. Su naturaleza modular permite que se creen nuevos mdulos. Nessus provee su propio lenguaje de script (nasl) para crear los plugins. C tambin puede ser utilizado.

y

Plugins Los ataques realizados por Nessus no estn embebidos en su ncleo (hard-coded). Para mayor extensibilidad y modularidad, stos se encuentran como porciones de software externo llamados plugins [2].

Plugins en C Es cierto, si no lo puede hacer NASL, lo puede hacer C. Hay una gran cantidad de libreras creadas para C que no se encuentran en otros lenguajes de programacin. Las propias libreras del sistema operacional estn generalmente escritas en C. Si se escribe un plugin en C, se puede hacer todo lo que no se puede hacer en NASL. Sin embargo, C no es tan portable como se quiere. Pero no es leguaje en s el que no es portable, sino sus libreras. No es lo mismo compilar bajo Solaris 8 que compilar bajo AIX. NASL no tiene este problema de incompatibilidades. Ms adelante se revisar NASL. Para que los plugins escritos en C puedan ser utilizados, estos deben ser compilados en libreras compartidas. Estas libreras generalmente no son portables entre diferentes plataformas. Nessus provee su propia

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

9

herramienta para la compilacin de plugins en C: nessus-build [3]. Para escribir un plugin en C primero se hace necesario la inclusin de ciertas cabeceras provedas por Nessus: includes.h: Este archivo contiene todos los incluyes necesarios para escribir un plugin para nessus. Es decir, todas las libreras y dems que necesitan ser importadas, son importadas por includes.h. nessusraw.h: Si se quiere trabajar con manipulacin directa de paquetes, Nessus tambin provee todas las funciones necesarias para este fin a travs de la inclusin de este archivo. Este archivo provee funciones para la manipulacin directa de IP, UDP, TCP e ICMP. Ataques como el teardrop se valen de las funciones importadas por este archivo para sus fines macabros. La inclusin de este archivo es obligatoria si se va a utilizar manipulacin de paquetes. De lo contrario no es necesaria. Una vez incluidas una o ambas de estas cabeceras (y todas las dems que necesite) son indispensables dos funciones: int plugin_init(struct arglist *desc) Esta indispensable funcin cumple el papel de identificacin del plugin ante el motor de Nessus. Dentro de esta funcin se especifica la funcin del plugin, el autor y todas las caractersticas que describen al plugin. Para los fines de dicha identificacin se vale de las siguientes funciones:plug_set_name() -> El nombre del plugin. plug_set_category() -> La categora del plugin Especifica qu forma de ataque realiza. Existen varias categoras: recopilacin de informacin (ACT_GATHER_INFO), ataque remoto (ACT_ATTACK), denegacin de servicio (ACT_DENIAL), ataque pasivo (ACT_PASSIVE) y escaneador de puertos (ACT_SCANNER).

plug_set_family() -> La familia del plugin.

Simplemente provee una forma de agrupar los diversos plugins por caractersticas comunes. Una familia no es ms que un identificador. Un ejemplo de familia puede ser Windows, y se refiere a un ataque que afecta a plataforma Windows.plug_set_description() -> La descripcin detallada del plugin plug_set_summary() -> La descripcin resumida del plugin plug_set_copyright() -> Los derechos de autor y de copia.

int plugin_run(struct arglist *desc) Dentro de esta funcin se encuentra la ejecucin real del plugin. Toda la lgica del ataque se encuentra dentro de esta funcin. Este es el esqueleto principal de un plugin escrito en C. Son muchas ms las funciones que provee Nessus, sin embargo no es el fin de este paper exponer a fondo la creacin de un plugin en C. A medida que se encuentren funciones no expuestas, stas sern debidamente explicadas y analizadas. Plugins en NASL NASL es un lenguaje de scripting con una sintaxis basada en C. Para mayor informacin sobre la sintaxis de NASL y su especificacin ver [4]. Este lenguaje contiene grades facilidades para la manipulacin de cadenas de caracteres y tambin para la manipulacin de arreglos. Estos dos tipos de datos son fundamentales en el procesamiento de datos a travs de una red. En este paper se discutir la segunda versin de este lenguaje (NASL2), ya que es el recomendado por el autor.y

Los archivos de cdigo en NASL no necesitan de una funcin main ni nada por el estilo, simplemente dentro de un mismo archivo se encontrar todo el cdigo necesario para ejecutar el plugin. Nessus provee todas las libreras y funciones necesarias para escribir casi cualquier plugin. De no ser posible hacer

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

10

algo en NASL, C debe estar a la mano. Un archivo de cdigo NASL consta de una o ms funciones. Se tomar un ejemplo real simple de un plugin de Nessus. Un buen ejemplo ya la vez simple es el plugin que prueba una vulnerabilidad en la pila TCP/IP en la que un host responde satisfactoriamente a una peticin SYN que a su vez contiene la bandera FIN. Este ataque es bastante anticuado, pero sirve para ilustrar la estructura de un plugin escrito en NASL. No se explicar paso a paso el funcionamiento del plugin, nicamente sus partes ms relevantes. Se modific sustancialmente la parte de comentarios, sin embargo su contenido es el mismo (dejando a un lado algunas partes del cdigo que no se consideran relevantes en esta explicacin). Si se quiere saber ms sobre este plugin (y todos los dems plugins) refirase a [5].# Esto es un comentario # Se determina si la descripcin ya # fue especificada. De no ser as se provee # toda la informacin necesaria if(description) { #El ID del plugin. Identificador nico del plugin script_id(11618); # Identificador de la vulnerabilidad que analiza script_bugtraq_id(7487); # La version del plugin. script_version ("$Revision: 1.5 $"); # Se declara una variable (tipo arreglo) que en # una de sus posiciones contiene el nombre # del plugin en el idioma especificado por la llave #del arreglo, en este caso ingls (english). name["english"] = "Remote host replies to SYN+FIN"; # Se establece el nombre del plugin. Con este # nombre se desplegar el plugin # en la lista de plugins de Nessus. script_name(english:name["english"]); # manera en # se provee # Se crea una variable de la misma que se cre una variable para el nombre del plugin, en donde la descripcin detallada del plugin.

desc["english"] = " The remote host does not discard TCP SYN packets which have the FIN flag set. Depending on the kind of firewall you are using, an attacker may use this flaw to bypass its rules. See also: http://archives.neohapsis.com/archives/bugtraq/ 2002-10/0266.html http://www.kb.cert.org/vuls/id/464113 Solution : Contact your vendor for a patch Risk factor : Medium";

# Se establece la descripcin del plugin. Esta es la descripcin detallada # del plugin que Nessus mostrar al cliente. script_description(english:desc["english "]); # Sigue algo de cdigo no relevante. # Se establece la categora del plugin. En este caso es un plugin que # recopila informacin. script_category(ACT_GATHER_INFO); # Ms informacin sobre el plugin que no es relevante #Se sale de satisfactoriamente. exit(0); } este boloque de cdigo

# # The script code starts here # # do not test this bug locally if(islocalhost())exit(0); # Determina un Puerto TCP abierto en la vctima port = get_host_open_port(); if(!port)exit(0); # Se crea un datagrama IP personalizado. # Por ahora nada extrao dentro # de esta cebecera. Esta cabecera # servir para un paquete TCP SYN. ip = forge_ip_packet(ip_hl:5, ip_v:4, ip_off:0, ip_id:9, ip_tos:0, ip_p : IPPROTO_TCP, ip_len : 20, ip_src : this_host(), ip_ttl : 255); # # # # Se crea el paquete TCP con la cabecera IP previamente creada. Puede observarse cmo el parmetro th_flags toma el valor de la bandera SYN

Introduccin a la Computacin Forense 2004-I

Universidad de los Andes. Acosta, Nicols., Buitrago, Ricardo., Newball, McCarthy., Ramrez, Maria A. y Snchez, Julin. Anlisis de Vulnerabilidades

11

# (TH_SYN) y la bandera FIN (TH_FIN). # Es bien sabido que esto no puede ser # un paquete normal, ya que las banderas # SYN y FIN en conjuncin son contradictorias. # Es claro que es un paquete forjado. tcp = forge_tcp_packet(ip:ip, th_sport:10004, th_dport:port, th_win:4096,th_seq:rand(), th_ack:0, th_off:5, th_flags:TH_SYN|TH_FIN, th_x2:0,th_urp:0); # Crea un filtro que describe qu paquetes # se deben recibir, es decir, se ignoran # los paquetes que no cumplan con los # criterios de este filtro. Este filtro # en ltimas indica que nicamente se # tendrn en cuenta las respuestas de # la mquina vctima que contengan las # banderas SYN|ACK (tcp[13] = 18). # Esto significar que la mquina vctima # proces el paquete SYN|FIN enviado como # si fuera un paquete SYN normal. filter = string("tcp and src host ", get_host_ip(), " and dst host ", this_host(), " and src port ", port, " and dst port ", 10004, " and tcp[13]=18"); for(i=0;i