....-      ......-     ...........................-   ... ..........-    ...
   . Codigo      Titulo                           Tema              Autor
     SWP02-11    Herramientas para analisis de Vulnerabilidades     sicario
....-      ......-     ...........................-   ... ..........-    ...


								Agosto, 2002

 La seguridad  informatica es un tema al que le dan muy poca importancia, no
solo  usuarios  finales, tambien  desarrolladores de  software, web masters,
soporte tecnico y lo que es peor, administradores de red.
 Existen muchas herramientas orientadas a la  seguridad, no podriamos tratar
en este articulo sobre  todas ellas, asi que  por el momento vamos a centrar
nuestra atencion en algunas que serviran  para analizar las vulnerabilidades
en sus servidores.
 Esta de mas decir que estas mismas herramientas, pueden ser utilizados para
encontrar huecos de seguridad y tratar de penetrar nuestros sistemas.
 Las herramientas  para analisis de vulnerabilidades en un host que  veremos 
son las siguientes:
. NMAP
. SATAN
. SAINT
. Nessus
. Retina
. SARA

NMAP ( GPL )
----
http://www.insecure.org/nmap
 Es  un  herramienta  para escaneo y exploracion  de seguridad  en  una red. 
Creado por Fyodor, se utiliza para determinar en grandes redes que servicios
estan activos en un  servidor, permitiendonos  conocer  los puertos abiertos
y que sistema operativo esta corriendo, por medio de huellas TCP/IP.
 El NMAP no es un tool para analizar vulnerabilidades, pero al mostrarte los
puertos y que software esta siendo utilizado en un host, se convierte en una
de las herramientas  mas utilizadas por Hackers para obtener informacion del
objetivo, ya una vez conocido que puertos estan abiertos, puedes deducir que
servicios da ese host  y con  otras tecnicas, como el hacer telnet al puerto
especifico, puedes obtener las versiones del daemon. El scan  de  puertos es
una  tecnica  basica en el Hacking y es muchas veces el principio para poder
acceder a un servidor.
 La ultima version liberada es la 3.0, el cual es la ultima  version estable
desde la 2.53. Segun la informacion  proporcionada por  Fyodor, reconoce mas
de 700 versiones de Sistemas  Operativos y  dispositivos  de red ( Printers, 
Webcams, Routers, etc ), tambien  reconoce 2148  asignaciones de puerto, 451
servicios SunRPC y 144 protocolos de IP.
 Otra  novedad  de NMAP, es la version  para plataformas  Windows, gracias a
Ryan  Permeh ( de eEye ), Andy  Lutomirski, y  Jens  Vogt, esta  version  es
denominada NmapWin.

Sintaxis:

       nmap [Tipos] [Opciones] <servidor o red #1 ... [#N]>

Tipos de Escaneo :
 Usa nmap -h para ver un listado de todas las opciones disponibles.

-sT	Escaneo del tipo TCP connect(), es la forma mas  basica de  escaneo,
	ya  que  solo  realiza  una   comprobacion  de   todos  los  puertos
	interesantes  que  puedan estar a  la escucha de una conexion, no es
	necesario tener	privilegios  de  root  para  utilizar esta opcion.
        No es muy seguro, debido a que  es  muy  facil  de  detectar, por el
	registro que deja al realizar varias conexiones. 
-sS	Escaneo  del  tipo  TCP  SYN, conciste  en  enviar  un  paquete SYN,
	esperando una respuesta SYN|ACK si  el puerto esta abierto  o RST si
	esta cerrado, en caso de encontrarse un puerto a la escucha se envia
	automaticamente RST para cortar la comunicacion, una de sus ventajas
	es que evita dejar  registro en  algunos servidores, dependiendo del
	tipo  de  filtro  de seguridad que  tengan, ya que algunos firewalls
	controlan  el  envio  de  paquetes  SYN. Tambien  se  le conoce como
	Half Open, debido  a  que  no abre una conexion TCP completa. Ademas
	necesita de privilegios de root para su ejecucion.
-sF -sX -sN	Escaneo del tipo Stealth FIN, Xmas Tree o Nul scan. 
-sP	Escaneo  del  tipo  Ping. Se  utiliza  para  simplemente  saber  que
	servidores se encuentran activos en una red, enviando paquetes  ICMP
	a cada direccion IP. 
-sU	Escaneo del tipo UDP. Se  utiliza para saber que puertos UDP estan a
	la escucha en un servidor.
-b <ftp host>	Ataque del tipo  FTP Proxy. El poder utilizar el servicio de
	FTP de un servidor  como proxy, nos da la posibilidad de realizar un
	escaneo  de manera  oculta, para  poder  pasar  un firewall que este 
	filtrando determinados puertos.
	La sintaxis del uso de este parametro es el siguiente:
	-b usuario:clave@servidor:puerto
	Hay que tener en cuenta  que el servicio de FTP debe ser  vulnerable
	a este tipo de ataque.

Opciones adicionales :

-pO	Con  esta  opcion se realiza el escaneo sin necesidad de realizar el
	envio de un Ping.
-PT	Esta  opcion  utiliza  un Ping TCP  para  saber si un  servidor esta 
	activo, enviando  paquetes  TCP ACK y  no ICMP, si el servidor  esta
	activo responde con un RST.
-PS	Esta opcion envia paquetes SYN, los servidores activos responden con
        un RST.
-PI	Esta opcion realiza un PING verdadero, esperando un echo ICMP.
-PB	Este tipo de Ping utiliza paquetes ICMP y ACK al mismo tiempo.
-O	Con  esta  opcion  es posible  determinar el Sistema Operativo de un 
        Host, comparando la huella TCP/IP con un archivo, donde se halla una
        base de datos con huellas de sistemas operativos conocidos.
-I	Si  el  identd esta corriendo en un servidor, el  uso de esta opcion 
	conbinada con sT, para conexion completa de TCP, nos permite conocer
	con que usuario se esta ejecutando un servicio.
-f	Esta  opcion  permite  fragmetar los paquetes de IP enviados, ya sea 
	por los escaneos de tipo SYN,  FIN,  XMAS,  o  NULL; con el objetivo
	de poder evitar en cierta forma los filtros de los firewalls.
-o <file>	Esta opcion permite enviar el  resultado de un escaneo hacia
	un archivo.
-p <puertos>	Al realizar  un  escaneo, los puertos utilizados por defecto
	son desde el 1 al 1024, incluyendo  los  que se encuentren en el
	/etc/services con esta opcion podemos  especificar que puertos seran
	tomados  en cuenta durante el escaneo, inclusive podemos especificar
	rangos.
-F	Con esta opcion indicamos que  en el escaneo solo se tomen en cuenta
	los puertos del /etc/services

 NMAP, permite  utilizar nombres de host o rangos de IP en la especificacion
del objetivo a escanear, es decir podemos hacer lo siguiente:
	206.138.105.*		
	206.138.*
	212.200.40.12-14	<-- aqui hara un escaneo desde la 12 a la 14
	uni.edu.pe
	*.edu.pe
	*.*.100.4-5		<-- aqui  hara  un escaneo de  todos los IPs
				    que terminen entre 100.4 y 100.5

Ejemplos :
	<root@hybrid># nmap -sS -O identidad.gob.pe
	Este ejemplo realiza un escaneo del tipo SYN oculto y adicionalmente
	tratara de determinar el Sistema Operativo  corriendo en el objetivo
	que en este caso es identidad.gob.pe
	
 Tambien puedes ejecutar el NMAP con un entorno grafico, con le sentencia:
 xnmap
 El cual muestra una ventana con los diversos tipos de Scan.	
 A  continuacion vamos  a observar el resultado real del escaneo realizado a
un servidor. Usando la version 2.53.	

--------

<root@gnr># nmap -sS -O www.xxxx.com.pe

Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
Interesting ports on www.xxxx.com.pe (xxx.xx.xxx.xx):
(The 1487 ports scanned but not shown below are in state: closed)
Port       State       Service
7/tcp      filtered    echo
11/tcp     filtered    systat
19/tcp     filtered    chargen
21/tcp     open        ftp
22/tcp     filtered    ssh
23/tcp     open        telnet
25/tcp     open        smtp
67/tcp     filtered    bootps
68/tcp     filtered    bootpc
79/tcp     open        finger
80/tcp     open        http
98/tcp     open        linuxconf
109/tcp    open        pop-2
110/tcp    open        pop-3
111/tcp    filtered    sunrpc
113/tcp    open        auth
119/tcp    open        nntp
135/tcp    filtered    loc-srv
136/tcp    filtered    profile
137/tcp    filtered    netbios-ns
138/tcp    filtered    netbios-dgm
139/tcp    filtered    netbios-ssn
143/tcp    open        imap2
161/tcp    filtered    snmp
177/tcp    filtered    xdmcp
389/tcp    filtered    ldap
513/tcp    filtered    login
514/tcp    filtered    shell
515/tcp    open        printer
600/tcp    filtered    ipcserver
635/tcp    filtered    unknown
1110/tcp   filtered    nfsd-status
1524/tcp   filtered    ingreslock
2049/tcp   filtered    nfs
3306/tcp   filtered    mysql
5631/tcp   filtered    pcanywheredata

TCP Sequence Prediction: Class=random positive increments
                         Difficulty=5037695 (Good luck!)
Remote operating system guess: Linux 2.1.122 - 2.2.14
	
--------
 Como  dice  el  resultado "Good luck!", con un  servidor asi, que se podria
hacer ?
 Para  encontrar  alguna  forma de  penetrar este  sistema, empezariamos por 
analizar los puertos : 
23/tcp     open        telnet 
79/tcp     open        finger <--- Parece increible!
25/tcp     open        smtp
515/tcp    open        printer
21/tcp     open        ftp
 El  resto  se lo dejo a la imaginacion. Por  cierto  el  administrador  fue 
informado de la poca seguridad en su servidor. 

SATAN
-----
 Security Analysis Tool for Auditing Networks o simplemente SATAN ( nada que 
ver con el gran Lucifer ), fue  creado  en  el  a~o 1993, por  Dan  Farmer y 
Wietse Venema, dos  grandes de la seguridad. Su finalidad era de servir como
ayuda  a  los  administradores   reconociendo   problemas  de  seguridad  en 
plataformas  Unix,  mostrando  un  reporte  en  formato  HTML  que  era  muy 
entendible para luego ser analizada. 
 Debido  a que  este  programa  podia ser usado por Hackers y Crackers, para
penetrar sistemas, fue considerado un programa muy peligroso y sus creadores
recibieron duras criticas en su momento. 
 Hoy  en  dia este  programa  ya  no es  usado, debido a que no tiene nuevas 
actualizaciones  desde 1995  aproximadamente, la ultima version es la 1.1.1,
por  lo tanto  seria muy  ilogico usar este programa hoy en dia. Pero fue un 
pionero en lo que se refiere  a herramientas de analisis, que sirvio para la
creacion de otros, los cuales veremos a continuacion.

SAINT ( Open Source )
-----
http://www.saintcorporation.com/
 Security Administrator's Integrated Network Tool (SAINT), este programa fue
creado basado en  SATAN,  funciona  por  medio de  la  consola  y muestra un
reporte en formato HTML del analisis, muy facil de entender.
 Analisa  hosts y redes remotas, extrayendo la mayor cantidad de informacion
sobre los  servicios, como  finger, http, ftp, NFS, NIS, etc. Luego  muestra
potenciales agujeros de seguridad, usualmente por una configuracion  erronea
de los servicios, bugs muy conocidos en  el sistema, politicas de  seguridad
muy pobres, esta informacion es mostrada en HTML, visible ya sea desde Lynx,
Mosaic o Netscape. 
 El poder de esta utilidad radica en el modo de exploracion, basandoce en la
colexion de  datos iniciales y de reglas configuradas por el propio usuario,
examina las  relaciones de  confianza  y  dependencia con hosts secundarios, 
esto da al usuario la posibilidad de analizar  no solo su red y hosts, si no
examinar las inherentes implicaciones reales  en la confianza de la red y de
los servicios, para ayudar en tomar decisiones  razonables sobre el nivel de
seguridad de los sistemas involucrados.
 SAINT ha sido probado en los siguientes Sistemas Operativos:
- SunOS 
- IRIX 
- HP-UX
- GNU/Linux 
- FreeBSD 
- OpenBSD 
- AIX
- Ultrix
- Tru64
 Segun los desarrolladores del programa, deberia funcionar en cualquier SO
basado en Unix, es cuestion de probar.
 SAINT necesita de los siguientes  paquetes instalados: PERL, Netscape, NMAP
( opcional ) y Samba ( opcional ).

Instalacion:
1. Desde el prompt del sistema operativo digitamos: 
[gnr@localhost gnr]#./configure
[gnr@localhost gnr]#make
[gnr@localhost gnr]#make install
 Una vez instalado lo ejecutas digitando  ./saint y empezar a usar SAINT con
la interfaz  grafica, la  ejecucion de   SAINT se realiza siempre como root. 
Tambien es posible usarlo desde la consola, solo tienes que ejecutar :
./saint -H 
 Para ver todas las opciones disponibles, sin parametro alguno se ejecuta la
interfaz grafica.
 Las opciones principales son:
- Configuration Management, donde  puedes  cambiar  la configuracion que por
  defecto posee el SAINT.
- Target Selection, donde especificas el host a scanear, el nivel del scan y
  arrancas el scan.
- Data Analysis,  donde  se  visualiza el  resultado del scan, con secciones
  adicionales.
  . Vulnerabilities
  . Information
  . Trust

 SAINT no alerta de vulnerabilidades especificas, lo que hace es agrupar las
multiples vulnerabilidades en un determinado servicio, como FTP. Dejando  la
tarea de  ordenar y decidir  cual parche  es el que se debe aplicar sobre el
bug, al administrador. 
Esto podria ser un problema, si tomamos en cuenta un administrador demasiado
ocupado para ordenar y deducir que exactamente tiene que corregir.

Nessus ( GPL )
------
http://www.nessus.org/
 Esta herramienta para auditoria de seguridad aparecio en el a~o 1998 cuando
la herramienta mas completa de seguridad era SATAN, el cual no estaba siendo
actualizada como debia ser, desde 1995. Hoy en dia es conciderado el mejor.
 Es  un scanner remoto de vulnerabilidades, su uso es muy sencillo, debido a
que  esta  hecho  bajo  la arquitectura cliente/servidor, el server corre en 
GNU/Linux, FreeBSD, NetBSD y Solaris, el  cliente  puede estar  en  la misma 
plataforma  o en  windows, inclusive  posee  un  cliente  Java. En GNU/Linux 
podemos  utilizar  el  cliente  por  medio de consola o a travez del entorno 
grafico y se pueden realizar varios tests de hosts al mismo tiempo.
 A diferencia de otros Scaners, Nessus no  trabaja sobre puertos especificos
relacionados  a  algun  servicio, es decir si  nosotros  configuramos un Web
Server en el purto 8080, Nessus lo encontrara y probara su seguridad. 
 Otra  gran  ventaja de Nessus, es el  de trabajar  con plugins, lo cual nos
permite mantener  constantemente actualizado  el Nessus y tener la capacidad
de detectar nuevos agujeros de seguridad que sean descubiertos.
 Al encontrar Nessus una vulnerabilidad, muestra un mensaje de Security hole
found, indicandonos cual es el servicio afectado, cual es el nivel de riesgo
y que se deberia hacer para corregirlo. 
 El mensaje de Security warning(s) found, es para darnos una advertencia  de
un  posible  agujero  de seguridad y  cual es su nivel de riesgo, ademas  de 
proporcionar una posible solucion.
 El mensaje Security notes found, es informacion concerniente a los diversos
servicios corriendo en determinados puertos.

Instalacion:
1. Si posees Gnome como entorno grafico y Ximian como window manager, puedes
usar  la  siguiente  sentencia, para  realizar  una instalacion directamente 
desde  internet, teniendo  en  cuenta  los  riesgos de ejecutar este tipo de 
procesos, NO hacerlo como root:

 [gnr@localhost gnr]#lynx -source http://install.nessus.org | sh

2. La  siguiente  forma de instalacion requiere descargar todos los archivos
de instalacion.
 Luego de descargar todos los files necesarios:
nessus-libraries-x.x.tar.gz 
libnasl-x.x.tar.gz 
nessus-core.x.x.tar.gz 
nessus-plugins.x.x.tar.gz                                 

 En GNU/Linux  debemos asegurarnos que en el archivo /etc/ld.so.conf este la
la siguiente linea : /usr/local/lib

[root@localhost root]#cat /etc/ld.so.conf | grep /usr/local/lib

 Si no esta lo a~adimos y ejecutamos :

[root@localhost root]#ldconfig

 Una vez hecho eso, procedemos a instalar en el orden siguiente:

nessus-libraries

[root@localhost root]#tar -zxvf nessus-libraries-x.x.tar.gz  
[root@localhost root]#cd nessus-libraries-x.x ; ./configure ; make
[root@localhost root]#make install

 Esta misma operacion se tiene que realizar con :
libnasl
nessus-core
nessus-plugins
 Luego de la instalacion tienes que crear un usuario, con la sentencia : 

 El server de Nessus se ejecuta con la sentencia: nessusd -D
 Para ejecutar el cliente en modo grafico desde Linux usas: nessus
 En el directorio de /files encontrara 3 archivos:
 - nessus1.jpg Que muestra la ventana principal del cliente Nessus, ingresas
   tu login y tu clave, luego le das en el boton de Log in.
   Tambien esta la opcion de Nessusd Host, donde  por defecto  es localhost,
   si vas a utilizar un servidor remoto donde se este ejecutando el servidor
   de Nessus, lo especificas ahi, incluyendo el puerto.
 - nessus2.jpg Que muestra la pesta~a de Target selection, donde especificas
   cual sera el Host a scanear y das inicio al scan.
 - nessus3.jpg Muestra al cliente de Nessus realizando la exploracion de  un
   Host.
 El menu de opciones principales del cliente Nessus, muestra otras opciones,
como el de Plugins, donde  puedes especificar  que plugins  seran tomados en
cuenta para el scan, ademas de poder hacer el mantenimiento de ellos.
 En el  directorio /files, encontrara usted el resultado de un scan real, en
formato HTML. El scan fue realizado a una  maquina, corriendo  Caldera  Open 
Linux Server 3.1.1.

Retina ( Propietario ) 
------
http://www.eeye.com/html/Products/Retina/
 Este  analizador  de  vulnerabilidades  es  conciderado uno de los mejores, 
corre sobre el SO Windows NT 4.0 con SP 3 o superior, Windows 2000 o Windows
XP, ademas necesita del Internet  Explorer  4.01  o superior.
 Su uso es muy sencillo debido a la interfase grafica  que  posee, mostrando
los posibles metodos que  un Hacker puede utilizar para  vulnerar e ingresar
a nuestro sistema.
 Dentro de los servicios que analiza Retina, tenemos los siguientes modulos:
- Vulnerabilidad de contrase~as 
- Servidores de Base de Datos
- Firewalls y Routers
- Servidores Proxy
- NetBios 
- HTTP, CGI y WinCGI 
- FTP 
- DNS
- Denegacion de servicio (DoS)
- POP, SMTP y LDAP
- TCP/IP y UDP 
- Registro de Windows 
 La  caracteristica  mas  resaltante de este programa, es sin duda el uso de
la  tecnologia  que los  desarrolladores  del  programa denominan Fix It, el
cual  permite  al  administrador  de  la  red corregir  automaticamente  los
problemas  de seguridad  encontrados, tratando  de  simular una inteligencia 
artificial. 
 Otra caracteristica de Retina, al igual que Nessus no asume por defecto que
un servicio  esta usando un puerto por defecto, ya que examina los datos del
input/output  de cada puerto para determinar cual es el servicio que se esta
ejecutando.
 Tambien posee un sistema de auto  update, para actualizaciones en  linea de 
sus modulos y estar al dia en  la deteccion de nuevos agujeros de seguridad.

Sara ( GPL )
----
http://home.arc.com/sara/
 Security Auditors Research Assistant, herramienta muy parecida a SAINT, ya
que su  desarrollo  se  basa en SATAN, e  igual que SAINT utiliza un entorno
grafico basado en  HTML, para la configuracion, ejecucion y el reporte luego
de finalizar el scan, para ser  evaluado por el administrador y analizar los
posibles agujeros de seguridad en su sistema.
 Corre bajo plataformas  operativas  del tipo UNIX, incluso puede utilizarce
en MAC OS X.
 En el directorio files/ encontrara usted un reporte generado por SARA, como
ejemplo.

 Existen otras herramientas:
 - COPS
 - ISS ( Internet Security Scanner )
 - Cybercop Scanner
 - Veterscan
 - CIS ( Cerberus Internet Scanner )
 - Queso

 El como usarlos los dejo de tarea.

 Bueno  para  terminar, no se  podria considerar  una herramienta  mejor que
otra, todas sirven, si lo que perseguimos es el mantener  segura nuestra red
frente a cualquier futuro intento de  penetracion, es  recomendable combinar
varias de estas utilidades.
 El analisis de vulnerabilidades es una de las medidas a tomar para asegurar
la integridad en nuestra  red, no se sientan del todo seguros al observar un
resultado de estas herramientas al no ver alguna  posible vulnerabilidad, no
menosprecien la capacidad de un Hacker, existen  otras acciones que ayudan a
elevar el nivel de seguridad, como  el  establecer  politicas  de seguridad,
implementacion de un firewall, actualizacion continua de nuevas versiones en
los daemons o  actualizaciones para corregir algun bug, todas ellas trabajan
en conjunto.
 Para  aquellos que  quieran usar estas herramientas con otros fines, que no
sea el de analizar su red, solo tengan cuidado.
 Saludos a alguien muy especial, TANK Girl.
 Cualquier comentario/sugerencia enviar un correo al mail de SWP:
 swp-fw@bigfoot.com



  "La historia del pensamiento humano recuerda las oscilaciones del pendulo,
  las  cuales hace  ya siglos que perduran. Despues de  un largo  periodo de
  sue~o, viene  el  despertar; y entonces  se liberta de las cadenas con las
  que todos los interesados -gobernantes, magistrados, clerigos-  le  habian 
  cuidadosamente amarrado. Las rompe. Somete a severa critica todo cuanto se
  le  habia  ense~ado;  y  pone al  desnudo  la  vanidad de  los  prejuicios
  religiosos, politicos, legales y sociales en cuyo seno habia  vegetado. En
  aras de su  espiritu de  investigacion se  lanza por caminos desconocidos,
  enriquece  nuestro  saber  con  descubrimientos imprevistos:  crea  nuevas
  ciencias."
                                                         Piotr Kropotkin
                                                         La Moral Anarquista


                     .-                               -.
                         Security Wari Projects / SWP
                      (c) Todos los Derechos Reservados
                                 PERU / 2002
                      -                               -
