Técnicas para detectar vulnerabilidades de activos
1. TÉCNICAS PARA DETECTAR LAS
VULNERABILIDADES DE ACTIVOS
Seguridad en Computación
e Informática
Universidad Nacional Federico Villarreal
Facultad de Ingeniería Industrial y de Sistemas
Escuela de Ingeniería de Sistemas
3. En la actualidad todas las empresas en sus
distintos rubros cuentan con una gran gama de
activos de información, entre ellos podemos
mencionar: aplicativos, servidores ya sean
web, de correo o de aplicaciones, páginas
web, etc. Todos ellos enlazados con la
información o data de la organización y que
constituye el principal activo de toda
organización, ya que en ella se encuentra todo
el know how que marca la diferencia en el
mercado de vanguardia.
Entonces las organizaciones deben tomar en
cuenta medidas o técnicas representadas en
programas, métodos que nos sirven para
detectar estas vulnerabilidades o debilidades y
no caer en un futuro cercano en una pérdida
lamentable o robo inescrupuloso de nuestros
activos de información.
4. 1 CASO:
Toda empresa posee activos de TI ya sea servidores,
aplicaciones o elementos de red de una
infraestructura de TI, lo cual se tiene que identificar
las vulnerabilidades que poseen estas como también
saber gestionarlas para así evitar conflictos de
riesgos que afecten mis procesos de negocio.
5. Existe una herramienta de SW que me permite escanear, detectar, evaluar y remediar
cualquier vulnerabilidad, la cual es:
GFI LANguard N.S.S (Network Security Scanner)
Es una solución empresarial para salvaguardar los sistemas y redes de ataques hacker
y brechas de seguridad mediante:
Análisis de vulnerabilidad
Administración de parches.
Auditoria de red y software.
8. Beneficios del GFI LANguard N.S.S.
Previene caídas de TI que puedan afectar los procesos de
negocio, debido a la exposición por vulnerabilidad.
Ayuda a los administradores de TI a asegurar sus redes
más rápido y más eficientemente.
Proporciona informes adaptables de escaneos realizados a
través de toda la red incluyendo aplicaciones y recursos.
9. El Google Hacking consiste en
explotar la gran capacidad de
almacenamiento de información
de Google, buscando
información específica que ha
sido añadida a las bases de datos
del buscador.
10.
11. Nos ayuden a encontrar
información sensible.
Puntos de entrada sensibles a
posibles ataques.
Cualquier tipo de información
que tuviera carácter de
sensibilidad, estaremos
ejecutando un Google hack.
24. Infiltrator es una herramienta que
permite escanear redes para poder
auditar la red en buscar de
vulnerabilidades.
Tiene la capacidad de revelar y
catalogar un gran número de
información de las computadoras
que ha escaneado como: Software
instalado, usuarios, discos,
información sobre SNMP, puertos
abiertos entre otros.
25. Búsqueda de información y escaneo:
Obtiene información como: Registros, políticas de contraseñas,
usuarios y grupos, trabajos y sesiones, puertos TCP y UDP que se
encuentre abiertos, datos sobre Servidores web, y muchos otros.
26. Auditoria de seguridad
Infiltrator tiene la capacidad de alertar sobre eventos peligrosos, gracias a la
BD de auditoria con la que viene integrada.
28. Técnica para detección de vulnerabilidades de
Software
Funciona comparando una secuencia de códigos, que
contengan cierto token, con un patrón.
Los patrones que generalmente intenta comparar son
String.
Es muy útil para encontrar y remover algunos
problemas potenciales de seguridad antes que el
programa sea lanzado al público
29. Herramientas: Flawfinder
Trabaja usando una BD con funciones de C/C++ conocidas por
presentar diversos problemas tales como: Sobrecarga de Buffer,
problemas de formateo de String, uso de metacaracteres entre
otros.
Luego se toma el codigo fuente y se compara con los códigos
existentes en la BD, ignorando los comentarios y los strings.
Flawfinder genera una lista de Hits (fallas de seguridad en
potencia) y las ordena por nivel de riesgo, siendo las mas
riesgosas mostradas primero
30.
31.
32. •Consiste en probar, de forma más o menos inteligente, el
comportamiento de una aplicación frente a unos datos
generados específicamente para hacer que un programa
falle, ya sea generando datos en una codificación diferente,
enviando cadenas largas o probando a desbordar valores
numéricos.
•Una de las partes más importantes del fuzzing es la
automatización y la instrumentalización.
•Suelen incorporar monitores para detectar la caída de la
aplicación que se esté probando. Además, permiten grabar
la sesión y datos relativos a la caída, como volcado de
memoria, captura de red o desensamblado de la función
afectada.
•Existe una herramienta llamada Sulley que posibilita
generar un fuzzer específico para cada aplicación. Está
programada en python por el creador de Paimei y es
mantenida con regularidad.
33. • Un ejemplo sencillo para fuzzear un servidor web:
View sourceprint
01.from sulley import *
02.
03.# Inicializamos el bloque de datos
04.s_initialize("HTTP Simple Request Fuzz")
05.
06.#
Definición "GET[espacio]/petición[espacio]HTTP/
1.0[nueva línea][nueva línea]"
07.s_static("GET")
08.s_delim(" ")
09.s_delim("/")
10.s_string("peticion")
11.s_static(" HTTP/1.0")
12.s_static("rnrn")
13.
14.sess = sessions.session()
15.target = sessions.target("127.0.0.1",80)
16.sess.add_target(target)
17.sess.connect(s_get("HTTP Simple Request
Fuzz"))
18.sess.fuzz()
34. • El primer paso es definir el nombre del bloque con s_initialize:
View sourceprint
s_initialize("HTTP Simple Request Fuzz")
Desde aquí y hasta la siguiente llamada a s_initialize, definirá modelos de
datos. Luego, dependiendo del tipo de dato, elegirá la forma más lógica de
fuzzearlo. Acto seguido, se define la petición que Sulley enviará al servidor.
En este caso, sólo nos interesa fuzzear los delimitadores y la petición:
1.s_static("GET")
2.s_delim(" ")
3.s_delim("/")
4.s_string("peticion")
5.s_static(" HTTP/1.0")
6.s_static("rnrn")
35. Sulley nos provee de un conjunto de primitivas suficientes para definir un protocolo
tanto textual como binario. La lista de primitivas es la siguiente:
s_binary: Acepta valores binario en varios formatos (0xc0 0xff ee ea x00 fe 00
01 02 0xc50xc2 f0 0d).
s_static: Valor que no cambia.
s_dunno, s_raw and s_unknown: alias de s_static.
s_byte, s_char: 1 byte.
s_word, s_short: 2 bytes.
Con el protocolo definido, pasemos a la sesión. Cada sesión puede ser guardada en
un fichero serializado para tener la posibilidad de pausar el proceso y retomarlo.
También creamos el objeto que albergará la información del objetivo:
1.sess = sessions.session()
2.target = sessions.target("127.0.0.1",80)
3.sess.add_target(target)
4.sess.connect(s_get("HTTP Simple Request Fuzz"))
5.sess.fuzz()
Dentro de target, se indicará el host y el puerto al que deberá conectar Sulley para
las pruebas. Aquí también deberíamos definir las opciones de los monitores, aunque
no se aplique a este caso. El objetivo se añade a la sesión (sess.add_target(target)) y
creamos el árbol de pruebas. Internamente, Sulley mantiene un grafo con cada una
de las fases por las que tiene que pasar:
36. View sourceprint
1.sess.connect(s_get("sess.connect(s_get("HTTP Simple Request Fuzz"))"))
• Con esto ya estamos preparados para lanzar el proceso. Esta última línea, crea un nuevo
nodo en el árbol (previamente definimos “HTTP Simple Request Fuzz” con la llamada a
s_initialize). Para terminar, la llamada sess.fuzz() comienza el proceso:
38. Es un archivo de procesamiento
por lotes
Se trata de archivos de texto sin
formato, guardados con la
extensión BAT
Contienen un conjunto de
comandos MS-DOS.
39. VARIABLES DEL SISTEMA
• %COMPUTERNAME% = Nombre de host.
• %SYSTEMROOT% = Carpeta de administración Normalmente
c:windows
• %TEMP% = directorio donde se encuentran los archivos
temporales
• %WINDIR% = directorio de windows.
• %USERNAME% = usuario con el que se inicio sesión
%USERPROFILE% = directorio donde se encuentran los
archivos del usuario que inicio sesión
%PROGRAMFILE% = directorio donde se encuentran los
archivos de programas
• %OS% = muestra el sistema operativo que estamos
ejecutando
%LOGONSERVER% = nombre de nuestro server (mihost)
41. CONCLUSIONES
• Las vulnerabilidades de activos de información siempre existirán
en todas las organizaciones amenazando la integridad, la
consistencia y la confidencialidad de los datos, ocasionando
grandes pérdidas de información en muchos casos irreparables.
1º Conclusión
• La detección de vulnerabilidades es un trabajo arduo, al que
debe prestarse mucha atención para reforzar las debilidades y
reducir al máximo las posibilidades de intrusión de terceros.
2º Conclusión
• Hoy por hoy, en las organizaciones es importante tener
diversas herramientas de software que permiten identificar,
evaluar y categorizar las vulnerabilidades de los activos de TI
como también notificar acciones correctivas a estas
vulnerabilidades y generar reportes de las vulnerabilidades por
cada activo en cuestión.
3º Conclusión
• Tan importante es tener presencia Web, como
conocer sus peligros potenciales.
4º Conclusión
42. RECOMENDACIONES
Toda organización debe estar lista con un plan de prevención antes las
vulnerabilidades presentes en cada activo informático, aplicando los métodos
y técnicas acertadas que aseguren la solidez, disponibilidad y privacidad de la
información.
Para tener una bajo nivel de riesgos de ti en las organizaciones es necesario que las
vulnerabilidades sean identificadas y corregidas a través de herramientas tecnológicas
de detención de vulnerabilidades de TI.
Hacer un seguimiento de los documentos indexados por los robots de los
buscadores con el fin de tener un panorama de lo que está disponible para el
público y lo que no debería de estarlo.
A pesar de ser prácticamente imposible detectar todas las posibles
vulnerabilidades que puede presentar una red o un software, se recomienda
usar diversas herramientas, de distintos fabricantes, para poder aumentar el
rango de detección de los puntos vulnerables.