Análisis de Malware Con Cuckoo SandBox
Análisis de Malware Con Cuckoo SandBox
FACULTAD DE INGENIERÍA
TESIS
Que para obtener el título de
Ingeniero en Computación
PRESENTA
Alejandro Bárcenas Godínez
DIRECTOR DE TESIS
Ing. Aldo Jiménez Arteaga
Agradezco a Dios por haberme dado la sabidurı́a, fuerza y paciencia para poder
concluir mis estudios de ingenierı́a en computación.
Agradezco a mis padres, quiénes han forjado lo mejor de ellos en mı́, a través de su
incondicional amor y apoyo en todo momento y me han impulsado a seguir adelante
para nunca desistir a pesar de lo difı́cil de las adversidades. Los AMO.
A mi amigo Humberto, por sus valiosos consejos de vida y su apoyo en los primeros
semestres de la licenciatura.
A mi amigo José Alberto, por aportar ideas durante la realización de esta tesis,
compartir conmigo un poco de su conocimiento, ser mi sensei, y por brindarme su apo-
yo para poder seguir desarrollándome como un profesionista altamente competitivo.
Agradezco a Vane, por haberme permitido ser parte de tu vida y ser una excelente
compañera y amiga durante la carrera.
A mi director de tesis Ing. Aldo Jiménez Arteaga, por haber dedicado su tiempo
para la realización y culminación de esta tesis.
iii
Resumen
El malware es definido como un software malicioso que tiene como propósito in-
filtrarse en las computadoras y servidores de diferentes organizaciones alrededor del
mundo. Este tipo de software altera y modifica programas y/o archivos, y en algunos
casos puede permitir que los equipos infectados sean controlados remotamente por pi-
ratas informáticos para obtener ventajas y beneficios de esta situación.
Hoy en dı́a, el software malicioso, tiene su mayor auge desde su creación. Este puede
llegar a ser tan sofisticado, que puede ocasionar daño en el mundo fı́sico; tal y como es
el caso de Stuxnet, un malware espı́a que reprograma sistemas industriales, afectando
a instalaciones crı́ticas como centrales nucleares.
Por otra parte, se empleó Ubuntu 12.04 Precise Pangolin como Sistema Operativo
de la SandBox y del sistema centralizado encargado de detectar, a través de la red de
v
datos interna de la Secretarı́a de Salud, los equipos con comportamientos anómalos.
Además de tener la ventaja de ser open source, Ubuntu se caracteriza por su robustez,
estabilidad y rapidez para realizar las tareas que son ejecutadas en él. Este Sistema
Operativo al ser un Linux, cuenta con el apoyo y soporte de miles de programadores a
nivel mundial.
Índice general
Índice de figuras XI
Índice de tablas XV
1. Conceptos Generales 1
1.1. Redes de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2. Importancia de las redes de datos en la actualidad . . . . . . . . 1
1.1.3. Dispositivos de red . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.4. Topologı́as de red . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.4.1. Topologı́as fı́sicas . . . . . . . . . . . . . . . . . . . . . 5
1.1.4.2. Topologı́as lógicas . . . . . . . . . . . . . . . . . . . . . 10
1.1.5. Tipos de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.5.1. MAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.5.2. WAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.5.3. Redes inalámbricas . . . . . . . . . . . . . . . . . . . . 12
1.1.6. Protocolos de red . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.6.1. Modelo OSI . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.6.2. Protocolo TCP/IP . . . . . . . . . . . . . . . . . . . . . 18
1.2. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.1. Tipos de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.2. Servicios de Seguridad . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2.3. Amenaza y vulnerabilidad . . . . . . . . . . . . . . . . . . . . . . 28
1.2.4. Análisis de riesgos . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.2.5. Trazabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.2.6. Sistemas de Detección de Intrusos . . . . . . . . . . . . . . . . . 31
1.2.7. SandBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
vii
ÍNDICE GENERAL
3. Recolección de Evidencia 81
3.1. Funcionamiento de un IDS . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.1.1. Métodos para la recolección de datos . . . . . . . . . . . . . . . . 81
3.1.2. Recolección de información e intentos de intrusión . . . . . . . . 82
3.1.3. Respuesta de un IDS ante un intento de ataque . . . . . . . . . . 83
3.1.4. Motor de detección . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.1.5. Módulos de salida . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.2. Estructura de las reglas de Snort . . . . . . . . . . . . . . . . . . . . . . 86
3.2.1. Encabezado de la regla . . . . . . . . . . . . . . . . . . . . . . . . 86
3.2.2. Opciones de la regla . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.3. Eventos generados (Alertas) . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.3.1. Contenido de las reglas disparadas . . . . . . . . . . . . . . . . . 98
3.3.2. Contenido y análisis del payload de los paquetes capturados . . . 113
3.3.3. Análisis en Cuckoo SandBox . . . . . . . . . . . . . . . . . . . . 128
viii
ÍNDICE GENERAL
5. Conclusiones 173
Glosario 177
Bibliografı́a 183
ix
Índice de figuras
1.1. Las redes de datos minimizan las fronteras geográficas. Fuente: Netacad
CISCO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Switch Cisco Serie 2600X de 48 puertos (Administrable). Fuente: cisco.com. 3
1.3. Hub de cuatro puertos Netgear EN104TP. Fuente: netgear.com. . . . . . 4
1.4. Access Point Linksys WAP54G. Fuente: linksys.com. . . . . . . . . . . . 4
1.5. Router Cisco Serie 1900. Fuente: cisco.com. . . . . . . . . . . . . . . . . 5
1.6. Firewall Fortinet Fortigate – 100D. Fuente: fortinet.com. . . . . . . . . . 5
1.7. Topologı́a tipo Malla. Fuente: wikipedia.com. . . . . . . . . . . . . . . . 6
1.8. Topologı́a tipo Estrella. Fuente: wikipedia.com. . . . . . . . . . . . . . . 6
1.9. Topologı́a tipo Árbol. Fuente: wikipedia.com. . . . . . . . . . . . . . . . 7
1.10. Topologı́a tipo Bus. Fuente: wikipedia.com. . . . . . . . . . . . . . . . . 8
1.11. Topologı́a tipo Anillo. Fuente: wikipedia.com. . . . . . . . . . . . . . . . 9
1.12. Topologı́a tipo Hı́brida (Estrella-Bus-Estrella). Fuente: google.com. . . . 9
1.13. Red LAN. Fuente: Netacad CISCO. . . . . . . . . . . . . . . . . . . . . 11
1.14. Red MAN. Fuente: Netacad CISCO. . . . . . . . . . . . . . . . . . . . . 11
1.15. Red WAN. Fuente: Netacad CISCO. . . . . . . . . . . . . . . . . . . . . 12
1.16. Tecnologı́as de las redes inalámbricas. Fuente: ccm.net. . . . . . . . . . . 13
1.17. Modelo OSI. Fuente: Netacad CISCO. . . . . . . . . . . . . . . . . . . . 15
1.18. Modelo TCP/IP. Fuente: Netacad CISCO. . . . . . . . . . . . . . . . . . 18
1.19. Red usando 3 NIDS implementados en segmentos de red estratégicos.
Fuente: Snort IDS and IPS Toolkit, 2007. . . . . . . . . . . . . . . . . . 32
1.20. Red usando HIDS en servidores y computadoras especı́ficas. Fuente:
Snort IDS and IPS Toolkit, 2007. . . . . . . . . . . . . . . . . . . . . . . 33
1.21. Red monitoreada por 4 sensores y una estación de administración cen-
tralizada. Fuente: Snort IDS and IPS Toolkit, 2007. . . . . . . . . . . . 34
1.22. Imagotipo del IDS Snort. Fuente: snort.org. . . . . . . . . . . . . . . . . 35
1.23. Imagotipo de Cuckoo SandBox. Fuente: cuckoosandbox.org. . . . . . . . 38
xi
ÍNDICE DE FIGURAS
xii
ÍNDICE DE FIGURAS
xiii
ÍNDICE DE FIGURAS
xiv
Índice de tablas
xv
Capı́tulo 1
Conceptos Generales
1.1.1. Definición
Una red de datos se define como un grupo de dispositivos, medios y servicios que
trabajan en forma conjunta mediante reglas establecidas, para que exista un proceso de
comunicación entre los diferentes dispositivos, con la finalidad de compartir información
y recursos.
Al igual que ha pasado con otros avances tecnológicos, la evolución de las tecnologı́as
de la comunicación permitió que la naturaleza con la que interactuábamos socialmente
cambiara y se adoptara a una escala global. Como ejemplo de esta evolución tecnológi-
ca, fue la creación e interconexión de redes de datos sólidas.
Las redes de datos en la actualidad son un elemento importante para poder lle-
var a cabo esta comunicación distante, ya que además de poder interactuar con otras
personas, podemos compartir contenido multimedia, lo que implica flujos de video, tex-
to y gráficos. Algunos ejemplos de las herramientas de comunicación más populares
1
1. CONCEPTOS GENERALES
comprenden la mensajerı́a instantánea, los blogs, las wikis, los podcasts, radio online,
herramientas de colaboración, video en demanda, entre otros.
Además de poder establecer una comunicación remota entre uno o varios individuos,
otro uso tradicional de las redes de datos es la compartición de recursos, lo cual significa
que la información, servidores, programas y medios de almacenamiento se encuentren
disponibles para todos aquellos equipos de cómputo que estén conectados a una red de
datos, sin importar la ubicación fı́sica del recurso y el usuario.
Las redes de datos también facilitan la manera en que aprendemos hoy en dı́a. Los
recursos multimedia de e-learning, a diferencia del método tradicional, no se limita a
dos fuentes de conocimiento: el libro de texto y el instructor. Estos recursos pueden
contener videos, voz y datos interactivos; que pueden ser consultados en cualquier mo-
mento sin importar la localización del educando. Es por ello que actualmente el acceso
a una educación de calidad, ya no se limita a vivir cerca del lugar en donde se imparte
la instrucción.
Las redes de datos han tenido un impacto positivo en nuestra sociedad. En el mun-
do actual, estamos conectados como nunca antes y sı́ alguien tiene una idea, puede
compartirla con otras personas para materializarla y hacerla realidad. Las noticias y
nuevos descubrimientos fluyen como nunca antes y en cuestión de segundos se dan a
conocer por todo el mundo. La figura 1.1 ilustra este concepto.
Figura 1.1: Las redes de datos minimizan las fronteras geográficas. Fuente: Netacad
CISCO.
2
1.1 Redes de Datos
Switch
El switch es utilizado para conectar varios dispositivos a través de la misma red de
un edificio u oficina. Éste actúa como controlador y permite a los diferentes equipos
comunicarse entre sı́ y compartir información.
Existen dos tipos de switches: los no administrables y los administrables. Los pri-
meros no necesitan una configuración adicional y funcionan inmediatamente una vez
se les instale dentro de la red, mientras que los switches administrables, pueden ser
supervisados de manera local o remota para establecer una configuración, para poderlo
adaptar a las necesidades de la organización. En la figura 1.2 se muestra un switch
administrable.
Figura 1.2: Switch Cisco Serie 2600X de 48 puertos (Administrable). Fuente: cisco.com.
Hub
Los hubs son dispositivos que trabajan en la capa 1 (capa fı́sica) del modelo OSI y
en la capa de acceso al medio en el modelo TCP/IP. Estos dispositivos concentran las
conexiones, es decir que el grupo de nodos que se encuentren conectados a éste, la red
los tratará como una sola unidad.
Estos dispositivos no pueden dirigir los datos para quién van destinados, por lo
que los datos son enviados a todos los puertos, para que todos los dispositivos puedan
recibirlos. Actualmente se encuentran de salida del mercado y de la implementación de
las redes de datos actuales. La figura 1.3 muestra un hub de cuatro puertos.
3
1. CONCEPTOS GENERALES
4
1.1 Redes de Datos
Router
Un router es un dispositivo que tiene como principal función establecer la conexión
de muchas redes. Estos dispositivos analizan los datos que van a ser enviados o recibidos
para poder seleccionar la mejor ruta de desplazamiento de la información, para su
transmisión eficaz. La figura 1.5 muestra un router.
Firewall
Estos dispositivos especializados cumplen una función importante en la seguridad
de la red al examinar y filtrar la información recibida, según su dirección de origen y
destino, protegiendo la red de posibles ataques. En la figura 1.6 se muestra un firewall.
5
1. CONCEPTOS GENERALES
Malla
La topologı́a de malla presenta la caracterı́stica de que cada nodo se encuentra
conectado a todos los demás nodos que conforman la red. Al tener un enlace punto
a punto y dedicado con los demás nodos que conforman la red, permite llevar los
mensajes por diferentes caminos; eliminado la desventaja de los medios de transmisión
compartidos, lo que evita que la comunicación y transmisión se vea afectada. Lo mismo
pasa sı́ uno de los nodos llegase a fallar. Comparada con las demás topologı́as fı́sicas
de red, esta topologı́a tiene la desventaja de requerir una mayor cantidad de cable,
haciendo que el costo de implementación sea alto. La figura 1.7 describe esta topologı́a.
Estrella
En la topologı́a de estrella, los nodos de una red se conectan a un nodo central, en
la que el nodo central puede ser un hub o un switch. Una ventaja de esta topologı́a
es permitir que todos los nodos se comuniquen de manera conveniente. Si un nodo o
el cable se dañan, no interrumpe el desempeño de la red. La implementación de esta
topologı́a es sencilla. La desventaja de esta topologı́a es que sı́ el nodo central falla,
toda la red quedarı́a sin comunicación. La figura 1.8 ilustra una topologı́a de red tipo
estrella.
6
1.1 Redes de Datos
Árbol
En una topologı́a tipo árbol, los nodos se encuentran distribuidos mediante una confi-
guración jerárquica, en la que el medio de transmisión es un cable ramificado. Pueden
existir una o varias ramificaciones de cable que se conectan a un punto inicial llamado
raı́z o cabecera. A su vez, éstas pueden contener más ramificaciones, lo cual da lugar
a una topologı́a más compleja. Para poder implementar este tipo de topologı́a, los dis-
positivos de red que se emplean son concentradores o switches.
Como principal desventaja de esta topologı́a, es sı́ alguno de los dispositivos de red
llegase a fallar, dejarı́a sin transmitir información hacia esa ramificación y todas las
demás que se extienden debajo de ésta.
Esta topologı́a tiene la ventaja de presentar una estructura con un orden jerárquico,
lo cual proporciona facilidad para la resolución de problemas en caso de fallas. En la
figura 1.9 se muestra una topologı́a de red tipo árbol.
Bus
En una topologı́a tipo bus, todos los nodos se conectan directamente a un canal
único digital, llamado bus o backbone, en una configuración multipunto. Básicamente
cualquier nodo puede transmitir datos hacia otro nodo, propagándose por todo el me-
dio. Esta topologı́a, presenta tres principales desventajas. La primer desventaja es que
al momento de transmitir información desde un nodo origen hacia un nodo destino,
todos los nodos conectados al bus reciben dicha transmisión.
La segunda desventaja es sı́ dos nodos deciden transmitir al mismo tiempo, las
señales que son enviadas por el medio colisionarán y serán erróneas. También se debe
considerar el hecho de que un nodo esté continuamente transmitiendo información a
través del medio.
7
1. CONCEPTOS GENERALES
Finalmente, sı́ falla el backbone, todos los nodos dejarán de transmitir y toda la
red dejará de funcionar.
Para corregir estos problemas, los nodos envı́an información en pequeñas porciones
de datos llamadas tramas. Cada una de estas tramas contiene el identificador del nodo
de destino, para que ası́ únicamente el nodo para quién está dirigida, reciba dicha trama
y los demás nodos la ignoren. Al reducir el tamaño total de la información a transmitir
en tramas, permite que por el mismo bus se intercalen estas tramas. A esto se le llama
multiplexación.
Anillo
Esta topologı́a se caracteriza por la forma de bucle cerrado que forman todos los
nodos que se encuentren en ella. Los enlaces en esta topologı́a son unidireccionales, lo
que significa que el sentido de la transmisión puede realizarse en el sentido de las agujas
del reloj o en el sentido contrario. La principal desventaja de esta topologı́a es que sı́
un nodo llega a fallar, se rompe el anillo y la red se queda sin comunicación.
Existe una segunda versión de esta topologı́a: anillo doble, la cual es similar a la
topologı́a de anillo, con la diferencia de que existe un segundo enlace redundante. En la
topologı́a de anillo doble, un anillo es utilizado como enlace principal, mientras que el
otro se emplea de reserva. En otros casos, la configuración de esta topologı́a es utilizada
para que la transmisión de la información sea en ambas direcciones. La ventaja de esta
variante es una mayor tolerancia a fallos, lo cual garantiza una mayor disponibilidad
de la red. La figura 1.11 muestra una topologı́a de red en anillo.
8
1.1 Redes de Datos
Hı́bridas
Una topologı́a hı́brida es una combinación de las topologı́as descritas anteriormente.
Un ejemplo de esta topologı́a puede ser una compuesta por las siguientes: estrella-árbol,
bus-estrella, etc. La implementación de ésta dependerá de las necesidades de cada una
de las organizaciones. Esta topologı́a permite cubrir el aumento en el número de nodos o
dispositivos, debido a los componentes que la pueden conformar. Generalmente su costo
es muy elevado, mientras que la administración es compleja. La figura 1.12 describe esta
topologı́a de red.
9
1. CONCEPTOS GENERALES
Broadcast
También conocida como bus, en esta topologı́a cada host transmite sus datos hacia
los demás host que están conectados en la red. No hay un orden, por lo que el acceso
se otorga hacia el primer host que transmita sus datos al medio.
Tokens
En esta topologı́a se controla el acceso a la red de los host mediante un token
electrónico, el cual es transmitido secuencialmente a cada uno de ellos. Cuando un host
recibe el token, significa que tiene la oportunidad de transmitir datos a través de la
red. Sı́ dicho host no tiene ninguna información para enviar, transmite el token hacia
el siguiente host, repitiéndose el proceso nuevamente. Los ejemplos más populares de
la transmisión de tokens son Token Ring y la Interfaz de Datos Distribuida por Fibra
(FDDI). En el caso de esta última, el token circula entre los equipos a velocidades muy
altas.
Una red LAN o también llamada Red de Área Local, cubre un área geográfica única,
proporcionando conectividad a estaciones de trabajo en una organización como puede
ser una empresa, una biblioteca o una escuela de tamaño mediano. La extensión es
limitada, ya que la conectividad entre una estación de trabajo y otra es de 100 metros.
Dicha red es administrada por una única organización. La velocidad de transmisión en
la que operan son de 10 Mbps, 100 Mbps y 1 Gbps. La figura 1.13 ilustra una red LAN.
10
1.1 Redes de Datos
1.1.5.1. MAN
Una red MAN o Red de Área Metropolitana recibe su nombre debido a que propor-
ciona cobertura a un área geográfica extensa como por ejemplo una ciudad. Los medios
de transmisión empleados en este tipo de redes pueden ser una combinación de fibra
óptica y par trenzado. Las velocidades de transmisión a las que opera este tipo de redes
sobre par trenzado son 10 Mbps, 20 Mbps, 45 Mbps y 75 Mbps; mientras que en fibra
óptica las velocidades son de 100 Mbps, 1 Gbps y 10 Gbps. La figura 1.14 describe este
tipo de red.
11
1. CONCEPTOS GENERALES
1.1.5.2. WAN
Una red WAN o Red de Área Amplia permite interconectar varias redes LAN y
MAN que se encuentran en distintas ubicaciones. La cobertura geográfica de este tipo de
redes ofrece distancias desde los 100 Km hasta los 1000 Km; lo cual permite comunicar
varios paı́ses e incluso hasta continentes enteros. Estas redes las utilizan organizaciones
particulares y por los ISP para proporcionar servicios a sus clientes. La figura 1.15
ilustra una red WAN.
12
1.1 Redes de Datos
13
1. CONCEPTOS GENERALES
14
1.1 Redes de Datos
Capa de Aplicación
La capa 7 del modelo OSI, ofrece a las aplicaciones la manera de acceder a los
servicios de las capas inferiores. También establece varios protocolos que son utilizados
frecuentemente por los usuarios finales, para el intercambio de datos.
Capa de Presentación
La capa de presentación también es denominada capa 6 del modelo OSI. Dicha capa
se encarga de la sintaxis y la semántica de la información transmitida, de tal manera
que aunque distintos equipos tengan diferentes representaciones internas de caracteres,
la información sea recibida y transmitida de manera legible. Ası́ mismo, esta capa se
encarga de comprimir y descomprimir la información, ası́ como su cifrado y descifrado
de los mismos.
Capa de Sesión
La capa 5 del modelo OSI, permite que ambos extremos de la comunicación esta-
blezcan una sesión, manteniendo y controlando el enlace establecido entre dos máquinas
diferentes. Esta capa da seguimiento sobre quién puede transmitir, impide que ambos
extremos traten de hacer una acción crı́tica al mismo tiempo y permite reanudar una
sesión establecida en caso de una interrupción.
Capa de Transporte
La capa de transporte o capa 4 del modelo OSI, divide los datos recibidos de las
capas superiores en unidades más pequeñas denominados segmentos sı́ es a través del
protocolo TCP, o datagramas en el caso del protocolo UDP. Éstos son transmitidos a
la capa de red y se asegura de que todas estas unidades lleguen correctamente al otro
15
1. CONCEPTOS GENERALES
extremo de la comunicación.
Capa de Red
La capa 3 del modelo OSI determina el camino a seguir de un paquete desde su
origen hasta su destino, a pesar de que ambos no estén conectados directamente. A
esta acción se le denomina enrutamiento y puede basarse en tablas definidas por un
administrador de red (enrutamiento estático) o cuando los dispositivos de red llamados
routers intercambian información de las tablas de rutas (enrutamiento dinámico). Los
protocolos de enrutamiento más empleados son los siguientes:
Actualmente existen dos variantes del protocolo RIP original: RIPv2 y RIPng. El
primero es una mejora del protocolo RIP ya que es un protocolo classless, lo que quiere
decir que soporta VLSM y el segundo soporta IPv6.
Emplea el algoritmo Dijkstra para determinar la mejor ruta entre un origen y des-
tino de un sistema autónomo. Las ventajas de este protocolo es una rápida convergencia
y una escalabilidad mucho mayor de implementaciones de grandes redes de datos, a di-
ferencia de RIP.
16
1.1 Redes de Datos
Capa Fı́sica
La capa 1 ó capa fı́sica del modelo OSI, se encarga de transmitir en un ambiente
fı́sico las cadenas de bits, que van desde un origen hasta un destino, de acuerdo a las
caracterı́sticas mecánicas, fı́sicas, eléctricas y funcionales del medio. Se consideran dos
tipos de medios para la transmisión de datos: medios guiados y no guiados. Los medios
guiados hacen uso del cable como por ejemplo cable coaxial, par trenzado y fibra óptica.
Los medios no guiados o sin cable comprenden microondas, satélites, ondas de radio,
etc.
17
1. CONCEPTOS GENERALES
Capa de Aplicación
Al igual que la capa de aplicación es la capa superior en el modelo OSI, también
lo es en el modelo TCP/IP. Ésta sirve de enlace entre los usuarios, las aplicaciones
que son utilizadas para establecer una comunicación y la red subyacente en la cual son
transmitidos los mensajes.
18
1.1 Redes de Datos
Capa de Transporte
En la capa de transporte se encuentran las reglas o procedimientos que permiten
garantizar una transmisión segura entre un origen y destino, sin importar la naturaleza
de las aplicaciones que intercambian datos. Por otra parte, los protocolos más recono-
cidos para el transporte de datos se explican a continuación:
Capa de Internet
Al igual que la capa de Red del modelo OSI, esta capa se encarga de recibir y
transferir paquetes por el mejor camino a través de la red, para que puedan llegar a
su destino. Es probable que los paquetes hayan sido recibidos en distinto orden al que
fueron enviados, lo cual las capas superiores se encargarán de ordenar.
Establece las convenciones de direcciones IP, ya que introduce las direcciones IPv4
y direcciones IPv6.
Establece la ruta que debe seguir un paquete con base a la dirección IP del
destinatario.
19
1. CONCEPTOS GENERALES
se está conectando el emisor. También especifica las caracterı́sticas del hardware de red
que se utilizará para la red y las caracterı́sticas fı́sicas del medio de comunicaciones,
para que los datos puedan ser transmitidos.
20
1.2 Seguridad
1.2. Seguridad
El concepto de seguridad es una caracterı́stica de cualquier sistema ya sea informáti-
co o no, en el cual se busca protegerlo de sufrir algún peligro o daño, permitiendo ga-
rantizar su adecuada y normal operación.
Seguridad Informática
La seguridad informática tiene sus orı́genes por allá en tiempos de la Segunda Gue-
rra Mundial, cuando a los primeros mainframes desarrollados para hacer cálculos, se les
protegı́a la confidencialidad e integridad de su información mediante candados, chapas,
ası́ como reconocimiento facial del personal autorizado que podı́a acceder. Conforme fue
aumentando la necesidad de salvaguardar la información que contenı́an, se emplearon
métodos más complejos y tecnológicamente más sofisticados.
Las técnicas de intrusión que son empleadas dı́a a dı́a, para comprometer a los sis-
temas actuales han sido más agresivas, lo que ocasiona un mayor impacto para quién
las recibe. Un ejemplo de esto, es el gusano Stuxnet. Stuxnet se propagaba a través
de sistemas de control industrial, para reprogramar estos sistemas y que los atacantes
pudieran tomar control de éstos, sin que los operadores pudieran percatarse de las ac-
tividades ilı́citas que eran realizadas.
21
1. CONCEPTOS GENERALES
Fue la primera amenaza que permitió pasar de un daño virtual a un daño fı́sico, de-
bido a que estaba programado para hacer dos ataques. El primero estaba dirigido a las
instalaciones de enriquecimiento de uranio en Irán, en el cual era capaz de manipular
la velocidad de las partes mecánicas del proceso de enriquecimiento, lo que ocasionarı́a
que se agrietara el rotor principal, destruyendo el centrifugado, mientras que el segundo
ataque contenido en Stuxnet, pretendı́a atacar la central eléctrica de Bushehr de Irán,
en el cual destruirı́a las turbinas exteriores de la planta, imposibilitando el abasteci-
miento de energı́a eléctrica a ese paı́s.
Es por ello que el presente proyecto tiene como objetivo la implementación de una
SandBox, en la cual se analizarán los archivos que fueron detectados como maliciosos
con ayuda de un IDS, el cual proporcionará dichas muestras.
Seguridad de la red
La seguridad de la red se puede definir como la protección de los equipos y dispositi-
vos de red que almacenan y transmiten información dentro y fuera de una organización.
Los ataques informáticos externos comprenden casi tres cuartas partes de los ata-
ques totales en una organización, mientras que los ataques internos representan el por-
centaje restante. Sin embargo, los ataques internos son los que tienen un mayor impacto
negativo en los intereses de una organización, comparado con los ataques externos.
22
1.2 Seguridad
Seguridad fı́sica
La seguridad fı́sica se refiere a la implementación de barreras fı́sicas y mecanismos
de control (diseño, implementación y mantenimiento) que permitan proteger de amena-
zas, los recursos fı́sicos de una organización, los cuales interactúan con la información en
todos sus estados (transmisión, almacenamiento o procesamiento). La seguridad fı́sica
analiza como principales amenazas las catástrofes naturales y artificiales, ası́ como las
amenazas humanas.
Una catástrofe natural y artificial es la amenaza que tiene una menor probabilidad
de que pueda ocurrir, aunque dependiendo de la ubicación geográfica que se tome como
referencia, puede aumentar la probabilidad de ocurrencia. El hecho de que este tipo de
amenazas sean las menos probables de ocurrir, no implica que no se tomen medidas
básicas, ya que sı́ no se hicieran, tendrı́an un impacto negativo mucho mayor para la
organización en cuestión.
Áreas seguras
Los activos que procesen información crı́tica o confidencial deben ser ubicados en
áreas seguras, protegidos por los perı́metros de seguridad definidos, con las adecuadas
barreras de seguridad y controles apropiados. Este objetivo de control previene un ac-
ceso fı́sico no autorizado, daño e interferencia en las instalaciones y en la información
de la organización y establece los siguientes controles:
Perı́metro de seguridad fı́sico. Los perı́metros de seguridad fı́sico deben ser definidos
y usados para proteger áreas que contengan información crı́tica o sensible, ası́ como las
instalaciones de procesamiento de información.
Controles de acceso fı́sico. Las áreas seguras deben ser protegidas por controles de
entrada apropiados para asegurar que sólo personal autorizado cuenta con permiso de
acceso.
23
1. CONCEPTOS GENERALES
la manera de cómo prevenir daño por fuego, inundación, terremoto, explosión, distur-
bios civiles y otros desastres naturales o que pueden ser provocados por el hombre.
Trabajo en áreas seguras. Como área segura se define el lugar fı́sico en el que se
encuentra la información crı́tica de una organización. Se deben establecer pautas para
permitir el trabajo en un área segura.
Áreas de entrega y carga. Los puntos de entrega y carga de una organización deben
ser identificados y separados de los activos de información, a fin de evitar accesos no
autorizados a la organización.
Ubicación y protección del equipamiento. Los equipos deben ser ubicados y prote-
gidos para reducir los riesgos de amenazas ambientales y peligros, ası́ como de accesos
no autorizados.
Seguridad del cableado. Tiene como objetivo proteger contra la intercepción, inter-
ferencia o posibles daños al cableado eléctrico y de telecomunicaciones, que transportan
información y/o apoyan a los servicios de información.
Eliminación de los activos. Tiene como objetivo prevenir la eliminación de los acti-
vos por lo que éstos, la información y el software no deben ser retirados de su sitio sin
previa autorización.
Seguridad de los equipos y activos fuera de las instalaciones. Se deben aplicar con-
troles de seguridad a los activos que se encuentran fuera de la organización, pero que
contienen información de la misma, tomando en cuenta el riesgo que representa que
ésta pueda ser expuesta.
Seguridad en la reutilización o eliminación del equipo. Establece que todos los equi-
pos y activos que contienen medios de almacenamiento, deben ser verificados para
24
1.2 Seguridad
Equipo de usuario desatendido. Los usuarios se deben asegurar que los equipos que
no son supervisados, cuentan con la protección apropiada.
Confidencialidad
La confidencialidad se define como la protección de la divulgación o exposición de
la información a usuarios o sistemas no autorizados. Cuando ocurre lo contrario se dice
que la confidencialidad es incumplida. Para garantizar la confidencialidad de la infor-
mación se establecen mecanismos como clasificación de la información, cifrado de la
información, entre otros.
Integridad
El servicio de integridad permite asegurar que la información no sufra una modi-
ficación o alteración en el contenido de ésta, sin una debida autorización. Ası́ mismo,
durante la transmisión de información también debe existir integridad, por lo cual en la
secuencia de datos que son enviados por un emisor deben ser recibidos tal cual fueron
enviados por un receptor.
25
1. CONCEPTOS GENERALES
Disponibilidad
La disponibilidad permite a los usuarios o sistemas autorizados acceder a la in-
formación sin ninguna interferencia u obstrucción. Sı́ una información es requerida o
solicitada y ésta no es desplegada en un corto lapso de tiempo, se considera que no hay
disponibilidad de la misma.
Los ataques que atentan contra la disponibilidad de información son conocidos como
denegación de servicio (DoS), los cuales consisten en enviar un gran número de cone-
xiones o grandes solicitudes de información hacia un sistema objetivo, por lo que llega
a sobrecargarse y no responde a solicitudes legı́timas de información. También existe
una variante del ataque DoS llamado denegación de servicio distribuido (DDoS), en el
cual un conjunto de conexiones o peticiones se coordinan desde diferentes ubicaciones
y son enviadas al mismo tiempo hacia un objetivo.
Autenticación
El servicio de autenticación consiste en validar y comprobar la identidad de una
entidad quién dice ser, mediante alguno de los siguientes tres métodos de autenticación:
¿Qué sabes?: Tiene como objetivo, validar y comprobar algo que únicamente de-
be saber un individuo o un sistema autorizado, comparándolo con la información que
cuenta en la base de datos al sistema que se desea acceder. Este método hace uso
de contraseñas, NIPs, códigos secretos, etc. Sin embargo, este método no es considera-
do como fuerte y no es adecuado para sistemas que requieren un alto nivel de seguridad.
¿Qué tienes?: Consiste en emplear llaves para el desbloqueo de una barrera fı́sica
o virtual, para poder tener acceso al espacio o sistema deseado. Un ejemplo de des-
bloqueo de una barrera fı́sica, es el uso de una llave que permite abrir un candado o
puertas. Por otro lado, el uso de un token o una tarjeta magnética permite desbloquear
una barrera virtual y por lo tanto, permite tener acceso al sistema o recurso solicitado.
El riesgo de este método, es que las llaves se pueden perder, dañar o ser robadas.
26
1.2 Seguridad
Control de Acceso
El control de acceso es un método que determina cómo un individuo o sistema es
admitido para interactuar con la información. Los controles de acceso son dependientes
del servicio de autenticación, ya que en primera instancia se tiene que determinar si al
individuo o sistema se le otorga permiso al recurso solicitado. Este servicio cuenta con
tres modelos principales de control de acceso lógico, los cuales se explican a continua-
ción:
No repudio
El no repudio es un servicio de seguridad que actúa tanto en el emisor como en el
receptor de la información, en el cual tanto el emisor como el receptor no pueden refutar
que la información ha sido transmitida. Los tipos de no repudio que a continuación se
mencionan, se encuentran definidos en el estándar internacional ISO 14516 “Guı́a para
el uso y administración de proveedores de servicio de confianza electrónicos”, en el que
pueden ser demostrados a una tercera entidad:
Aprobación: Ofrece pruebas de quién es responsable de la aprobación del conte-
nido del mensaje.
Envı́o: Ofrece pruebas de quién fue el que envió el mensaje.
Origen: Ofrece pruebas del origen del mensaje. Es una combinación de aprobación
y envı́o.
Sumisión: Ofrece pruebas de que un agente de entrega ha aceptado el mensaje
para su transmisión.
Transporte: Ofrece pruebas de cualquier intento de negar que los datos no se
transmitieron.
27
1. CONCEPTOS GENERALES
Recepción: Ofrece pruebas de cualquier intento de negar por parte del receptor
que la información no fue recibida, con lo cual se brinda protección al emisor.
Amenaza
Una amenaza es todo elemento, acción o evento capaz de atentar contra la seguri-
dad de la información, causando una alteración total y/o parcial a la información de la
organización, generando un impacto negativo de tipo material, económico, informativo
o prestigio de esta. Las amenazas se clasifican en dos grupos:
28
1.2 Seguridad
Activo: Un activo es aquello que tiene un valor para una organización, que com-
pone el proceso de comunicación y que por ende necesita de protección; para que no
atenten contra su confidencialidad, integridad y disponibilidad. Éstos pueden ser hard-
ware, software, información personal, medios de almacenamiento, servidores, bases de
datos, infraestructura.
El manejo del riesgo residual debe ser juzgado de acuerdo a la zona de confort de la
organización, ya que el objetivo de la seguridad de la información no es llevar el riesgo
residual a cero, sino manejarlo de acuerdo a los intereses de la organización.
29
1. CONCEPTOS GENERALES
Impacto: El impacto establece que tan malo puede ser para una organización que
se concrete la actividad de una amenaza. El impacto se categoriza como se muestra a
continuación:
1.2.5. Trazabilidad
En muchas ocasiones, cuando las organizaciones tienen un incidente informático,
éstas quieren obtener respuestas como: ¿Cuándo ocurrió? ¿Quién lo hizo? ¿Por qué lo
hizo? La trazabilidad permite realizar un seguimiento de las acciones realizadas en el
tiempo, entre un origen y destino, por lo que se puede avanzar hacia una investigación
que permitan responder las preguntas planteadas anteriormente.
Logs
La seguridad no sólo radica en la implementación de controles y medidas de pre-
vención, sino también en controles de identificación, en el caso de que un sistema haya
sido comprometido por un intruso.
30
1.2 Seguridad
Para que los logs puedan considerarse confiables, su integridad debe ser asegurada
de una manera razonable; por lo que sı́ alguien puede escribir y/o borrar eventos de
los logs, se puede decir que no son lo suficientemente confiables como mecanismo de
identificación de actividades anómalas y maliciosas.
Como recomendaciones de las mejores prácticas, los logs deben ser protegidos contra
la manipulación, accesos no autorizados, deben ser cifrados y revisados periódicamente
en busca de identificar alguna actividad sospechosa.
NIDS
Un Sistema de Detección de Intrusos basado en Red, monitorea el tráfico de toda
una red. Normalmente, la tarjeta de red de una computadora funciona en modo no
promiscuo, lo que significa que en este modo de operación, sólo los paquetes que van
destinados para la dirección MAC de la tarjeta de red del host se analizarán. Sin em-
bargo, para el adecuado y correcto funcionamiento del NIDS, su tarjeta de red debe
operar en modo promiscuo, para que pueda capturar y analizar los paquetes que no
van dirigidos a su dirección MAC.
Ası́, en este modo, el NIDS puede vigilar sigilosamente todas las comunicaciones
del segmento de red. El modo promiscuo es necesario para protección de la red. En la
figura 1.19 se observa la implantación de 3 NIDS en segmentos estratégicos de red, lo
que permite monitorear el tráfico de red para todos los dispositivos de los segmentos.
31
1. CONCEPTOS GENERALES
HIDS
Un Sistema de Detección de Intrusos basado en Host, a diferencia del NIDS; sólo
protege el equipo de cómputo en el que reside y su tarjeta de red no opera en modo
promiscuo. Una ventaja del HIDS, a diferencia del NIDS, es que el conjunto de reglas
que son empleadas, se pueden adaptar de acuerdo a las necesidades especı́ficas de la
organización. La reducción en el número de las reglas permite mejorar el desempeño y
reducir una sobrecarga del procesador.
32
1.2 Seguridad
Figura 1.20: Red usando HIDS en servidores y computadoras especı́ficas. Fuente: Snort
IDS and IPS Toolkit, 2007.
DIDS
33
1. CONCEPTOS GENERALES
IPS
La prevención de intrusos es el siguiente paso en la evolución de la detección de in-
trusos. Un Sistema de Prevención de Intrusos, a diferencia de los tres sistemas descritos
anteriormente, que son pasivos, éstos son reactivos.
Un IPS actúa de manera similar a un Firewall, pero ofrece muchas ventajas. Puede
ser configurado como un IDS, para responder a los ataques de acuerdo a la última
versión de firmas de reglas vigentes. Por otro lado, actúa más inteligentemente que un
34
1.2 Seguridad
IDS Snort
Snort es un sistema de detección y prevención de intrusos multiplataforma de código
abierto, el cual observa el tráfico de una red privada y detecta anomalı́as, el cual puede
dar indicios sobre algún tipo de comportamiento inusual causado por software malicioso
en la intranet. Para ello, emplea una serie de reglas, que contienen patrones, expresiones
regulares y coincidencias de malware conocido. La figura 1.22 muestra el imagotipo de
Snort.
1.2.7. SandBox
Una SandBox es un mecanismo de seguridad separada de un ambiente de pro-
ducción, para aislar la ejecución de programas que generalmente están infectados o
contienen código malicioso, ejecución de código no probado, usuarios y sitios web que
no son de confianza.
Una SandBox provee un conjunto de recursos controlados para que las pruebas se
ejecuten en los sistemas invitados, como espacio reservado en disco y memoria, acceso
a la red o la habilidad para que puedan inspeccionar el sistema en el que se están eje-
cutando.
35
1. CONCEPTOS GENERALES
Reglas de ejecución que permite a los administradores tener control total sobre
los procesos que se inician o se están ejecutando.
Cuckoo SandBox
Cuckoo es un sistema de análisis de malware automatizado de código abierto. Se
emplea para ejecutar y analizar archivos, para después obtener resultados completos
del análisis que describen las acciones que realizó el software malicioso, mientras son
ejecutadas en un ambiente seguro y aislado. La siguiente información es la que arroja
el análisis automatizado de Cuckoo SandBox.
Rastros de las llamadas realizadas por todos los procesos generados por el pro-
grama malicioso.
Los archivos que son creados, eliminados y descargados por el malware durante
su ejecución.
Cuckoo SandBox está diseñado para ser usado como una aplicación independiente,
ası́ como para ser integrado en grandes frameworks, gracias a su diseño modular. Puede
ser usado para analizar:
Archivos DLL
Documentos PDF
Scripts de PHP
Archivos CPL
Archivos ZIP
Scripts de Python
36
1.2 Seguridad
Después del trabajo inicial durante verano de 2010, la primera versión beta se
publicó el 5 de febrero de 2011, cuando Cuckoo fue anunciado públicamente y fue dis-
tribuido por primera vez.
El 20 de diciembre de 2012 la versión 0.5 “To The End Of The World” se libera.
El 15 de abril de 2013 la versión 0.6 es lanzada, poco tiempo después de haber sido
lanzada la segunda versión de Malwr.com.
En marzo de 2014 nace la fundación Cuckoo, como una organización sin fines de
lucro, dedicada al crecimiento de Cuckoo Sandbox y a proyectos e iniciativas que exis-
tan a su alrededor.
37
1. CONCEPTOS GENERALES
38
Capı́tulo 2
Una vez que se detectan estas anomalı́as, el Sistema de Detección Intrusos genera
alertas que informan al administrador de la red de dicho comportamiento inusual. Para
la realización de esta tesis, el tráfico de red que disparó esas alertas, fue capturado y
guardado en un registro (log), para su análisis.
39
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
Por otro lado, en la figura 2.2, se detalla el diagrama de bloques para indicar la
configuración que se realizó para la instalación de Cuckoo SandBox. Se compone bási-
camente por 5 procesos, los cuales son necesarios seguir, para que pueda realizarse de
manera eficaz y segura el análisis de muestras maliciosas que hayan sido detectadas por
el Sistema de Detección de Intrusos.
40
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
Para realizar la instalación, primero se agregó una clave GPG. Para ello, se contó
con los privilegios de administrador y se creó un directorio para concentrar los archivos
descargados con la herramienta wget:
41
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
# mkdir / u s r / I n s t a l a c i o n S n o r t C u c k o o
# cd / u s r / I n s t a l a c i o n S n o r t C u c k o o
# w g e t h t t p : / /www . d o t d e b . o r g / d o t d e b . gpg
42
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
El argumento –prefix=/usr indica que los archivos de registro (logs) y los directorios
de bases de datos se ubicaron en /usr y no en el directorio /usr/local/var. El segundo
argumento, –enable-shared, generó una biblioteca compartida.
43
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
# make
# make i n s t a l l
El siguiente paquete que se instaló fue daq. De la misma forma que libpcap, se
descargó el archivo dentro del directorio creado para este fin.
# cd / u s r / I n s t a l a c i o n S n o r t C u c k o o
# w g e t h t t p s : / /www . s n o r t . o r g / downloads / s n o r t / daq − 2 . 0 . 2 . t a r . g z
Este comando comprueba las caracterı́sticas del sistema que afectan a la compi-
lación y a la vez, configuró la compilación según estos valores para crear el archivo
makefile.
44
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
45
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
# cd / u s r / I n s t a l a c i o n S n o r t C u c k o o
# w g e t h t t p : / / l a b s . s n o r t . o r g / s n o r t /2962/ s n o r t . c o n f
# w g e t h t t p : / /www . s n o r t . o r g / downloads / s n o r t / s n o r t − 2 . 9 . 6 . 2 . t a r . g z
Una vez dentro del directorio, se comprobaron las caracterı́sticas del sistema, previas
a la compilación:
# . / c o n f i g u r e −−e n a b l e −s o u r c e f i r e
El primer paso que se realizó, fue crear los siguientes directorios y archivos.
# mkdir / e t c / s n o r t / e t c / s n o r t / r u l e s / v a r / l o g / s n o r t / v a r / l o g / b a r n y a r d 2 / u s r
/ l oc a l / l i b / snort dynamicrules
Se agregó un nuevo grupo llamado snort y un usuario llamado snort. Este usuario
se agregó al grupo homónimo.
# groupadd s n o r t
# u s e r a d d −g s n o r t s n o r t
46
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
# chown s n o r t : s n o r t / v a r / l o g / s n o r t / v a r / l o g / b a r n y a r d 2
Una vez realizado el proceso anterior, los archivos con extensión .conf, .config y
.map se copiaron al directorio /etc/snort, ası́ como el archivo snort.conf, mediante los
siguientes comandos.
# cp / u s r / I n s t a l a c i o n S n o r t C u c k o o / s n o r t − 2 . 9 . 6 . 2 / e t c / ∗ . c o n f ∗ / e t c / s n o r t
# cp / u s r / I n s t a l a c i o n S n o r t C u c k o o / s n o r t − 2 . 9 . 6 . 2 / e t c / ∗ . map∗ / e t c / s n o r t
# cp / u s r / I n s t a l a c i o n S n o r t C u c k o o / s n o r t . c o n f / e t c / s n o r t
L i n e a 4 5 : i p v a r HOME NET 1 7 2 . 1 6 . 0 . 0 / 1 2
L i n e a 4 8 : i p v a r EXTERNAL NET !$HOME NET
47
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
En la lı́nea 517 se declaró el nombre con el que se almacenaron los logs de Snort, ası́
como el tamaño máximo de cada uno de estos archivos. En este caso, se estableció en
128 Mb. El argumento output unified2, se refiere un formato binario optimizado, para
que las alertas puedan ser insertadas de forma eficiente y rápida en los logs.
L i n e a 5 1 7 : output u n i f i e d 2 : f i l e n a m e s n o r t . l o g , l i m i t 128
En la lı́nea 528 se editó el módulo log tcpdump, que registra los paquetes generados
por las alertas de Snort a un archivo con formato tcpdump. Esto es de suma impor-
tancia, debido a que los archivos con formato tcpdump se emplearon para realizar un
análisis automatizado post-proceso con el tráfico capturado, que se explica en el capı́tulo
4.
# mkdir / v a r / l o g / l o g t c p d u m p
# chown −R s n o r t : s n o r t / v a r / l o g / l o g t c p d u m p
A partir de la lı́nea 543 se incluyen los ficheros de reglas para Snort. Para este caso,
en concreto, se comentaron todos los conjuntos de reglas que no sean de utilidad para
la realización de este proyecto. Las reglas que se incluyeron fueron las siguientes:
48
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
i n c l u d e $RULE PATH/ l o c a l . r u l e s
i n c l u d e $RULE PATH/ b l a c k l i s t . r u l e s
i n c l u d e $RULE PATH/ dos . r u l e s
i n c l u d e $RULE PATH/ e x p l o i t −k i t . r u l e s
i n c l u d e $RULE PATH/ i n d i c a t o r −compromise . r u l e s
i n c l u d e $RULE PATH/ i n d i c a t o r −o b f u s c a t i o n . r u l e s
i n c l u d e $RULE PATH/ i n d i c a t o r −s c a n . r u l e s
i n c l u d e $RULE PATH/ i n d i c a t o r −s h e l l c o d e . r u l e s
i n c l u d e $RULE PATH/ malware−backdoor . r u l e s
i n c l u d e $RULE PATH/ malware−cnc . r u l e s
i n c l u d e $RULE PATH/ malware−o t h e r . r u l e s
i n c l u d e $RULE PATH/ malware−t o o l s . r u l e s
i n c l u d e $RULE PATH/ n e t b i o s . r u l e s
i n c l u d e $RULE PATH/ os−windows . r u l e s
i n c l u d e $RULE PATH/ s e r v e r −apache . r u l e s
Para verificar el correcto funcionamiento del IDS Snort, fue necesario crear una regla
de prueba. Para esta verificación, se creó un archivo llamado local.rules de la siguiente
manera:
# cd / e t c / s n o r t / r u l e s
# touch l o c a l . r u l e s
49
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
Nota: Para terminar con el proceso de Snort, basta con presionar ctrl + c.
50
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
La l i n e a 227 f u e s u s t i t u i d a :
output a l e r t f a s t : s t d o u t
por :
output a l e r t f a s t
Se ingresó a MySQL con la contraseña del usuario root que se configuró anterior-
mente:
# mysql −u r o o t −p
Enter password : <Password u s u a r i o r o o t de MySQL>
Una vez que se ingresó como usuario root al manejador de bases de datos MySQL,
se creó la base de datos snort. También se debió establecer una contraseña para el
usuario snort en MySQL. Por otro lado, fueron proporcionados privilegios sobre la base
de datos para el usuario snort creado en Linux.
mysql> create d a t a b a s e s n o r t ;
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on s n o r t . ∗ t o
snort@localhost ;
mysql> SET PASSWORD FOR s n o r t @ l o c a l h o s t=PASSWORD( ’ password u s u a r i o s n o r t ’ )
;
Una vez que se configuró la base de datos, se crearon las tablas, mediante las
51
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
cuales, Snort administra las alertas. Para la creación de dichas tablas se usó el esquema
existente en Barnyard2. El nombre de la base de datos es “snort”.
Se comprobó la creación de las tablas. Para ello, se ingresó a MySQL como usuario
root seleccionando la base de datos snort y se realizó un despliegue de las tablas que
contiene dicha base de datos.
mysql> u s e s n o r t ;
mysql> show t a b l e s ;
En la figura 2.5 se pueden observar las tablas que contiene la base de datos snort.
Figura 2.5: Tablas que contiene la base de datos snort. Fuente: Captura propia.
52
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
Se modificó la variable error reporting (lı́nea 521) con el siguiente valor: error reporting
= E ALL & E NOTICE.
# cp / e t c / apache2 / s i t e s −a v a i l a b l e / d e f a u l t −s s l / e t c / apache2 / s i t e s −e n a b l e d
# a2enmod s s l
# p e a r c o n f i g −s e t p r e f e r r e d s t a t e a l p h a
# p e a r ch a nn e l −u p d a t e p e a r . php . n e t
# p e a r i n s t a l l − a l l d e p s I m a g e C o l o r 2 Image Canvas Image Graph
# / e t c / i n i t . d/ apache2 r e s t a r t
# t a r −z x v f base − 1 . 4 . 5 . t a r . g z
Finalmente se copió el directorio base-1.4.5 a /var/www. Una vez que se copió el ar-
chivo, se asignaron permisos de lectura, escritura y ejecución. Se modificó el nombre
del directorio base-1.4.5 a base. Realizados los pasos anteriores, se concluyó con la
instalación de B.A.S.E.
53
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
54
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
Figura 2.7: Selección del idioma del usuario y la ruta de adodb. Fuente: Captura propia.
Figura 2.8: Configuración de parámetros para realizar la conexión con la base de datos
snort. Fuente: Captura propia.
55
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
Figura 2.9: Definición de los parámetros de autenticación del sistema B.A.S.E. Fuente:
Captura propia.
Figura 2.10: Creación de las tablas de B.A.S.E. en la Base de Datos snort. Fuente:
Captura propia.
56
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
El primer conjunto de reglas que podremos agregar son las reglas locales. Las reglas
locales, son las reglas creadas por el usuario, inicialmente para verificar el correcto
funcionamiento de Snort, y posteriormente para encontrar patrones en especı́fico que el
usuario desee capturar. Estas reglas se deben colocar en el archivo local.rules, ubicado
en /etc/snort/rules. Algunos ejemplos de reglas son:
a l e r t icmp any any −> $HOME\ NET any ( msg : ” Prueba ICMP” ; s i d : 1 0 0 0 0 0 1 ; r e v
:1)
a l e r t t c p any any −> $HOME\ NET 22 ( msg : ” Conexion SSH por e l p u e r t o 22 ” ;
c l a s s t y p e : s u s p i c i o u s −login ; s i d : 1 0 0 0 0 0 8 ; )
a l e r t t c p any any −> $HOME\ NET 23 ( msg : ” Conexion TELNET por e l p u e r t o 23 ”
; sid :1000503;)
Otra manera de maximizar la funcionalidad de Snort, fue descargar las reglas crea-
das por la comunidad de Snort. Este conjunto contiene alrededor de 20000 reglas de
diferentes categorı́as.
Para los que no opten por la opción anterior, existe una segunda alternativa en la
57
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
A continuación se descargó el kit de reglas de Snort versión 2.9. Para poder realizar
la descarga, se debe contar con un previo registro. Recordar que una vez que se realizó
la descarga del kit de reglas, se ubicaron en el directorio creado anteriormente, para
almacenar todas las descargas que hayamos realizado.
# t a r −z x v f s n o r t r u l e s −s n a p s h o t −2962. t a r . g z
# cp p r e p r o c r u l e s /∗ / e t c / s n o r t / p r e p r o c r u l e s /
# cp r u l e s /∗ / e t c / s n o r t / r u l e s /
# cp s o r u l e s /∗ / e t c / s n o r t / s o r u l e s /
# chown −R s n o r t : s n o r t / e t c / s n o r t
# apt−g e t i n s t a l l l i b c r y p t −s s l e a y −p e r l l i b l w p −u s e r a g e n t −determined −p e r l −y
# w g e t h t t p s : / / p u l l e d p o r k . g o o g l e c o d e . com/ f i l e s / p u l l e d p o r k − 0 . 7 . 0 . t a r . g z
58
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
# t a r −z x v f p u l l e d p o r k − 0 . 7 . 0 . t a r . g z
# mv p u l l e d p o r k −0.7.0 p u l l e d p o r k
Antes de proseguir fue necesario conseguir un código Oinkcode, que fungió como
llave privada, para realizar la actualización de las reglas. Se inició sesión con el usuario
qué se creó para descargar el kit de reglas. Posteriormente, se dió clic sobre el nombre
de usuario de Snort, como se muestra en la figura 2.12.
59
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
Las lı́nea 72, 87, 90, 117, 131 se editaron de la siguiente manera respectivamente:
r u l e path=/ e t c / s n o r t / r u l e s / s n o r t . r u l e s
l o c a l r u l e s =/ e t c / s n o r t / r u l e s / l o c a l . r u l e s
s i d m s g=/ e t c / s n o r t / s i d −msg . map
c o n f i g p a t h =/ e t c / s n o r t / s n o r t . c o n f
d i s t r o=Ubuntu −12.04
# chmod 755 / u s r / I n s t a l a c i o n S n o r t C u c k o o / p u l l e d p o r k / p u l l e d p o r k . p l
60
2.1 Instalación del Sistema de Detección de Intrusos (IDS) y Cuckoo SandBox
Figura 2.14: Actualización completa del kit de reglas de Snort con PulledPork. Fuente:
Captura propia.
61
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
# apt−g e t i n s t a l l p y t h o n
# apt−g e t i n s t a l l python−s q l a l c h e m y
# apt−g e t i n s t a l l python−bson
También, se realizó la instalación de paqueterı́as que son opcionales y que por ende,
no son estrictamente requeridas, pero se aconseja instalarlas.
62
2.2 Instalación de Cuckoo SandBox
# p i p i n s t a l l Django ==1.7.1
A continuación, se instaló el paquete Ssdeep. Dicho paquete permite saber que tan
similares son dos o más archivos, mediante la técnica de fuzzy hashing. Se descomprimió
con la herramienta tar :
# wget h t t p : / / s o u r c e f o r g e . n e t / p r o j e c t s / s s d e e p / f i l e s / s s d e e p −2.10/ s s d e e p
−2.10. t a r . g z
# t a r −z x v f s s d e e p −2.10. t a r . g z
# cd s s d e e p −2.10
# ./ configure
# make
# make c h e c k
# make i n s t a l l
Pydeep es el siguiente paquete que se instaló. El paquete Ssdeep debe estar instalado
para poder usar Pydeep.
# apt−g e t i n s t a l l l i b p c r e 3 l i b p c r e 3 −dev
63
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
Otro paquete que se instaló fue Pycrypto. Se descargó con la herramienta wget. Se
procedió a descomprimirlo y se cambió al directorio pycrypto-2.6.1.
# w g e t h t t p : / / f t p . d l i t z . n e t / pub / d l i t z / c r y p t o / p y c r y p t o / p y c r y p t o − 2 . 6 . 1 . t a r .
gz
# t a r −x v z f p y c r y p t o − 2 . 6 . 1 . t a r . g z
# cd p y c r y p t o −2.6.1/
64
2.2 Instalación de Cuckoo SandBox
# p y t h o n s e t u p . py b u i l d
# p y t h o n s e t u p . py i n s t a l l
# wget h t t p s : / / v o l a t i l i t y . g o o g l e c o d e . com/ f i l e s / v o l a t i l i t y − 2 . 3 . 1 . t a r . g z
# tar x v z f v o l a t i l i t y −2.3.1. tar . gz
# cd v o l a t i l i t y −2.3.1
# p y t h o n s e t u p . py b u i l d
# p y t h o n s e t u p . py i n s t a l l
# apt−g e t i n s t a l l tcpdump
# apt−g e t i n s t a l l l i b c a p 2 −b i n
# s e t c a p c a p n e t r a w , c a p n e t a d m i n=e i p / u s r / s b i n / tcpdump
# g e t c a p / u s r / s b i n / tcpdump
/ u s r / s b i n /tcpdump = c ap n et a dm in , c a p n e t r a w+e i p
65
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
El paquete python-mysqldb se instaló, el cual se define como una interfaz que permite
trabajar con bases de datos MySQL desde Python. A continuación, se ingresó a MySQL
como usuario root.
# apt−g e t i n s t a l l python−m y s q l d b −y
# mysql −u r o o t −p
mysql> c r e a t e d a t a b a s e cuckoo ;
mysql> g r a n t a l l p r i v i l e g e s on cuckoo . ∗ t o s n o r t @ l o c a l h o s t i d e n t i f i e d by ’
cuckoo ’ ;
mysql> f l u s h p r i v i l e g e s ;
mysql> q u i t ;
# w g e t h t t p : / / download . v i r t u a l b o x . o r g / v i r t u a l b o x / 4 . 3 . 2 0 / v i r t u a l b o x −4.3 4
.3.20 −96996˜ Ubuntu ˜ p r e c i s e i 3 8 6 . deb
66
2.2 Instalación de Cuckoo SandBox
# apt−g e t −f i n s t a l l
Inicialmente se ejecuta VirtualBox. Una vez inicializado, se creó una nueva máquina
virtual. Se le asignó el nombre de ‘cuckoo1’. El Tipo: ‘Microsoft Windows’ y la versión
‘Windows XP (32 bits)’. Seleccionada la versión del sistema operativo, ası́ como sus
caracterı́sticas, se continuó con la siguiente ventana de configuración.
En esta ventana, se estableció el tamaño de la memoria RAM, que fue de 1024 MB,
ya que es la cantidad sugerida en la documentación oficial de Cuckoo. Prosiguiendo con
la configuración de la máquina huésped, se creó un disco duro virtual. En la siguiente
ventana, se determinó un tamaño fijo para el archivo del disco duro virtual, ya que éste
fue creado con su máximo tamaño y no permite expandir su tamaño.
En la siguiente ventana, se eligió el nombre del archivo del disco duro virtual. Nue-
vamente ingresamos ‘cuckoo1’. En la parte de abajo se indicó el tamaño del disco duro
virtual, el cual se fijó en 10 GB, debido a que es el tamaño que recomienda la guı́a de
instalación de VirtualBox.
Nota: El proceso de la creación del disco duro virtual dependerá de las caracterı́sti-
cas de la máquina anfitrión.
Una vez que se encendió por primera vez la máquina huésped, se especificó la ruta
en donde se encuentra la imagen de nuestro sistema operativo. Una vez seleccionado el
archivo .iso, se continuó con una instalación tı́pica de un sistema Windows XP.
67
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
Se desplegó una nueva ventana con las opciones de rendimiento qué se requirieron
configurar. En este caso, se adaptó el rendimiento de efectos visuales, seleccionando la
opción ‘Ajustar para obtener el mejor rendimiento’.
68
2.2 Instalación de Cuckoo SandBox
69
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
estricto para el sistema huésped Cuckoo, para que pueda ejecutarse adecuadamen-
te el análisis de muestras de malware. Python se descargó desde su sitio web oficial
https://www.python.org/downloads/. Se recomienda la versión 2.7 de Python. Adicio-
nalmente se instaló la librerı́a Python Image, la cual es usada para obtener capturas
de pantallas, mientras se realiza un análisis de malware. También se instaló software
adicional, para que las muestras pudieran tener interacción con aplicaciones. Para ello
se obtuvo Adobe Reader v6.0, Java 1.5.0.12, Office 2003 y Mozilla Firefox 1.0 desde el
siguiente enlace: http://www.oldapps.com/.
El siguiente software que se instaló, fue un agente (Agent.py), que se ejecuta dentro
del huésped; el cual es el responsable de la comunicación y transferencia de datos con el
sistema anfitrión (Ubuntu 12.04). Dicho agente se encuentra en la ruta /opt/cuckoo/a-
gent. Una vez que se encontró, se copió en C:\Python27.
Cuando se ejecutó el agente en Windows con la extensión .py, abrió una ventana
de Python. Para evitar que dicha ventana sea mostrada y el agente se ejecute en back-
ground, basta con cambiar la extensión del archivo Agent.py por Agent.pyw.
El siguiente paso fue añadir un nuevo valor alfanumérico en el Editor del Registro.
Para ingresar al Editor del Registro de Windows, nuevamente se debe presionar la
combinación de teclas Windows + R y escribir la palabra regedit. Para agregar el nuevo
valor alfanumérico, debe realizarse en la siguiente ruta:
Ubicada la carpeta ‘Run’, se dio clic derecho y desplegó un pequeño menú; don-
de se seleccionó un ‘Nuevo Valor Alfanumérico’. Una vez que se creó, se modificó su
nombre, y se llamó ‘Agent’. Del lado derecho, donde se encuentran todos los valores
alfanuméricos de la carpeta ‘Run’, se modificó el valor que se creó. La información
del valor será: “C:\Python27\agent.pyw”. Este valor se debe agregar, para cuando es
encendido el sistema huésped, automáticamente el agente de Python se ejecute, el cual
abre el puerto 8000.
Se ejecutó el agente de Python y se verificó que el puerto 8000 esté a la escucha por
cualquier dirección IP. Este proceso se ilustra a continuación, en la figura 2.16.
70
2.2 Instalación de Cuckoo SandBox
Figura 2.16: El agente Python escucha por el puerto 8000. Fuente: Captura propia.
Una vez que se comprobó el estado del puerto, se realizó una captura instantánea al
sistema invitado. Esta acción se realizó por lı́nea de comandos desde el sistema anfitrión
ejecutando los siguientes comandos:
71
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
# i p t a b l e s −A FORWARD −o e t h 1 −i v b o x n e t 0 −s 1 9 2 . 1 6 8 . 5 6 . 0 / 2 4 −m c o n n t r a c k
−− c t s t a t e NEW −j ACCEPT
# i p t a b l e s −A FORWARD −m c o n n t r a c k −− c t s t a t e ESTABLISHED,RELATED −j ACCEPT
# i p t a b l e s −A POSTROUTING −t n a t −j MASQUERADE
# s y s c t l −w n e t . i p v 4 . i p f o r w a r d =1
72
2.2 Instalación de Cuckoo SandBox
# cd / o p t
# wget h t t p : / / downloads . c u c k o o s a n d b o x . o r g / 1 . 1 / c u c k o o 1 . 1 . t a r . g z
# t a r −z x v f c u c k o o 1 . 1 . t a r . g z
# cd / o p t / cuckoo
# p y t h o n cuckoo . py
73
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
# cd / o p t / cuckoo / u t i l s
# p y t h o n s u b m i t . py r u t a m u e s t r a s m a l w a r e
auxiliary.conf
Este archivo se debe editar si se desea activar o desactivar el uso de un analizador
de paquetes (sniffer) externo, en este caso tcpdump.
cuckoo.conf
En este archivo se elige sı́ cada vez que inicia Cuckoo compruebe que se tenga la
última versión instalada. Si se desea hacer esto, Cuckoo se conectará a una locación re-
mota y verificará que la última versión que estemos ejecutando es la versión más actual.
También en este archivo se configura la conexión con la base de datos, y se define la
dirección IP y el puerto que Cuckoo va a emplear para devolver los resultados obtenidos.
memory.conf
En este archivo de configuración se activa o desactiva el uso de volatility, la cual es
una herramienta que nos ayudará a realizar análisis forense sobre volcados de memoria.
processing.conf
En este archivo se configura la disponibilidad de los módulos de procesamiento. Es-
tos módulos se encuentran en modules/processing. Se define como se asimilan los datos
en bruto obtenidos durante el análisis.
reporting.conf
Este archivo de configuración habilita o deshabilita la generación automatizada de
reportes. Genera un reporte con formato jsondump y un reporte con formato html por
cada muestra de malware analizada.
virtualbox.conf
En este archivo de configuración se especifica la forma en que se ejecuta VirtualBox
y la forma en que interactuará con Cuckoo, ya que puede ser por lı́nea de comandos
o con interfaz gráfica de usuario. En este proyecto se configuró el modo de interfaz
gráfica.
74
2.3 Puesta en producción
Además, la PC debe de contar con dos tarjetas de red, ya que una interfaz se
emplea para la captura de tráfico, y otra para la administración remota.
Este proyecto se basa en el IDS Snort, el cual es el sistema principal para poder
realizar la captura del tráfico de red y su posterior análisis.
75
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
2.3.3. Beneficios
Con la implementación de un IDS en la red, se detecta en tiempo real, principal-
mente tráfico sospechoso, peticiones de resolución de nombres de dominio malicioso y
ataques de denegación de servicios. Esto genera alertas, las cuales mantienen al ad-
ministrador de red informado, para que tome las medidas necesarias, a fin de mitigar
posibles fallas en los servicios y en la red.
Debido a que el IDS Snort, almacena las alertas generadas en una base de datos
dedicada, se puede realizar un análisis posterior con mayor detalle, acerca del compor-
tamiento del tráfico que generó dicho alerta.
76
2.3 Puesta en producción
Ası́ mismo, una vez que termina el análisis en la SandBox, se genera un reporte,
en el cual se muestra diversa información acerca del comportamiento del malware. Un
apartado importante en el reporte, es que se conecta a la base de datos de Virus Total,
y muestra cuántos motores antivirus detectaron la muestra como maliciosa.
77
2. IMPLEMENTACIÓN DEL SISTEMA DE DETECCIÓN DE INTRUSOS Y
CUCKOO SANDBOX
Figura 2.20: Arquitectura de red de la instalación del IDS Snort. Fuente: Elaboración
propia.
2.3.5. Funcionamiento
En el sistema anfitrión, por cada alerta emitida, el Sistema de Detección de Intru-
sos genera un archivo que se almacena en /var/log/log tcpdump/. Éstos se almacenan
con el nombre de tcpdump.log.identificador, en donde el identificador, es determinado
por la fecha y hora con el que se crearon. Es importante mencionar que estos eventos
que se encuentran registrados en los archivos mencionados anteriormente, también son
almacenados en la base de datos snort.
78
2.3 Puesta en producción
En la figura 2.21 se muestra la arquitectura de red que fue empleada, para la reali-
zación de esta tesis.
79
Capı́tulo 3
Recolección de Evidencia
También, este capı́tulo explica la evidencia capturada con ayuda del IDS Snort, y
los reportes generados por Cuckoo SandBox a partir de esta evidencia.
La primera parte que se debe entender, es que un IDS simplemente está observando
el tráfico de una red. En general existen 3 tipos de IDS, lo cual determinará el tipo de
datos que ingresarán a él:
81
3. RECOLECCIÓN DE EVIDENCIA
Sniffeo de paquetes
Cualquier tipo de IDS que observa el tráfico de una red, realiza un sniffeo de paque-
tes. El sniffeo de paquetes es un método clásico para realizar la detección de intrusos, e
inclusive existen técnicas de evasión de IDS; por ejemplo los ataques de fragmentación,
en los cuales un atacante cambia la manera en que los paquetes están fragmentados y
en consecuencia al reensamblarlos, quedan fragmentos vacı́os o superpuestos.
Análisis de logs
Muchos IDS extraen datos de los logs del sistema y alertan sı́ se observan compor-
tamientos anómalos. Las implementaciones originales de IDS emplearon este método
para recolectar datos. Dicho método permite obtener las huellas que un atacante dejó
en los registros del sistema.
Existen dos tácticas básicas para obtener los mejores resultados. Para ello, el tráfico
se puede ajustar a una polı́tica de seguridad determinada, dictada por las necesidades
particulares de una organización o de la misma red. Mientras algunos administradores
eligen permitir sólo el tráfico que ellos saben que es bueno, otros optan por bloquear el
tráfico que ellos saben que es malo. Para realizar la mejor decisión para la organización,
se debe tener en cuenta el tipo de tráfico que probablemente se observe, la cantidad de
82
3.1 Funcionamiento de un IDS
personal que tiene que hacer frente a las alertas, ası́ como el nivel de paranoia generado
por las alertas.
Existen diferentes enfoques de las acciones a tomar por parte del IDS, cuando se
detecta un intento de intrusión.
Respuesta pasiva
Como ya se mencionó, los IDS observan el tráfico de la red, y éstos se configuran
para enviar y/o mostrar alertas a un administrador y/o almacenarlas en un archivo.
Estas alertas pueden ser de diversas maneras, como por ejemplo, notificaciones por
medio de e-mail, páginas o mensajes de texto para el administrador, incluso llamadas
telefónicas automatizadas.
Respuesta activa
Los IPSs y los IDSs con capacidad de respuesta activa, se comportan como un IDS
de respuesta pasiva en cuanto a la detección. Sin embargo, cuando detectan un intento
de ataque, se pueden configurar para tomar medidas proactivas en contra de éstos, en
lugar de simplemente alertar al administrador y esperar a que él tome medidas. Ellos
pueden ser colocados, de tal manera que el tráfico atraviesa las interfaces, descartando
el tráfico que ven como malicioso, para que sólo el tráfico confiable pueda ser enviado al
83
3. RECOLECCIÓN DE EVIDENCIA
destinatario (modo inline). Este enfoque ofrece prevención y protección, debido a que
el sensor puede detener un ataque antes de que alcance a su objetivo, que es algo que
los IDSs de respuesta pasiva no pueden realizar.
Otro tipo de respuesta, es que ellos pueden enviar mensajes inalcanzables de Inter-
net Control Message Protocol (ICMP) al origen, en un esfuerzo de convencimiento de
que el sistema objetivo es inalcanzable.
Snort, a diferencia de otros IDS, genera sólo una alerta por cada paquete que generó
un evento. Esto se debe a que la primera regla que coincide con el payload del paquete,
es la única que generará la alerta.
84
3.1 Funcionamiento de un IDS
Una vez que se ha generado una alerta, el paquete es clasificado de acuerdo al proto-
colo (TCP, UDP, ICMP, IP), para encontrar caracterı́sticas propias de cada protocolo.
Según el tipo de protocolo, se selecciona un árbol RTN y se inicia con un recorrido
de los diferentes nodos RTN, verificando las opciones de los encabezados de las reglas
hasta encontrar una coincidencia. Una vez que se seleccionó un árbol RTN, se inicia el
recorrido de los nodos OTN, en donde están almacenadas las opciones de las reglas.
Finalmente, se determina sı́ un nodo OTN coincide con la información de los datos
del paquete, comparando las opciones de esa regla contra el paquete.
85
3. RECOLECCIÓN DE EVIDENCIA
csv: Permite escribir alertas en un formato más fácil de importar a una base de
datos.
unified 2: Este módulo permite registrar los datos en formato binario básico.
Almacena paquetes y alertas para su posterior análisis.
log null: Permite que se generen alertas para cierto tráfico, pero sin que se
capturen los paquetes.
Database: Snort permite el registro de alertas en una base de datos. Estas pueden
ser: MySQL, Oracle, PostgreSQL y unixODBC.
a c c i ón p r o t o c o l o i p / r e d o r i g e n p u e r t o o r i g e n d i r e c c i ó n o p e r a d o r i p /
red destino puerto destino ( opciones )
Acciones de la regla
La acción de la regla le indica a Snort como debe actuar cuando encuentra un
paquete que equivale a los criterios de la regla. Las acciones por defecto disponibles
en Snort son cinco: alert, log, pass, activate y dynamic. Adicionalmente, sı́ el IDS se
configura en modo inline, existen tres opciones que son: drop, reject y sdrop.
alert: Snort genera una alerta, usando el método de alerta seleccionado, para
posteriormente capturar el paquete.
86
3.2 Estructura de las reglas de Snort
Protocolos
Permite establecer el protocolo de comunicación, el cual Snort analiza por compor-
tamientos sospechosos: TCP, UDP, ICMP e IP.
Direcciones IP
Permite establecer el origen y destino de la comunicación a nivel de capa 3 del
modelo OSI. Este campo se puede indicar de las siguientes formas:
Número de puertos
Permite establecer el origen y destino de la comunicación. Este campo se puede
especificar de las siguientes formas:
Indicando un rango de puertos (p.e. alert udp any any -> $HOME NET 1:1024).
Indicando un puerto en especı́fico (p.e. log tcp any any -> 192.168.1.0/24 80).
87
3. RECOLECCIÓN DE EVIDENCIA
Indicando la captura de todos los puertos menores a 2004 excepto el 1945 (p.e.
log tcp any any -> $HOME NET !1945:2004).
Reglas activadoras/dinámicas
La combinación de reglas activadoras/dinámicas proporcionan al IDS un mejor
desempeño. Se puede contar con una regla que active a otra cuando la primera lle-
ve a cabo una acción para un número determinado de paquetes. La regla activadora
se desempeña sólo como una regla de alerta, a menos de que contenga un campo de
opción requerido: activates. En cambio, las reglas dinámicas actúan sólo como regla de
registro, y tienen un campo de opción diferente: activated by.
88
3.2 Estructura de las reglas de Snort
payload: Estas opciones buscan datos de carga útil dentro del paquete.
89
3. RECOLECCIÓN DE EVIDENCIA
Opciones generales
En la tabla 3.1 se muestran las opciones generales de las reglas de Snort:
Nombre Descripción
msg Esta opción muestra una breve descripción cuando una regla es
activada.
reference Permite incluir referencias a las reglas de sistemas de identificación
externos.
gid Identifica la parte de Snort que genera un evento, cuando una regla
en particular se activa.
sid El sid (Snort ID) se emplea para identificar fácilmente cada regla
de Snort. Los rangos de sid son los siguientes:
90
3.2 Estructura de las reglas de Snort
Opciones payload
En la tabla 3.2 se muestran las opciones payload de las reglas de Snort:
Nombre Descripción
content Permite indicarle a Snort la búsqueda de contenido especı́fico en el
campo de datos del paquete. Sı́ los datos del paquete concuerdan
exactamente con los ingresados en la regla, el resto de las opciones
de la regla se ejecutan.
protected Permite buscar contenido en un paquete, sin revelear el contenido
content en la regla.
hash Especı́fica el algoritmo hash que se ocupa cuando se observa una
regla de contenido protegido. Acepta MD5, SHA256 y SHA512.
nocase Permite buscar contenido sin distinguir entre mayúsculas y
minúsculas.
rawbytes Permite observar los datos del paquete en crudo, ignorando cual-
quier decodificación que haya sido realizado por los preprocesado-
res.
depth Especı́fica un rango de ”n”bytes de un paquete, en los cuales Snort
debe inspeccionar el patrón.
offset Se indica a Snort donde debe empezar a inspeccionar el patrón en
un paquete.
distance Se indica a Snort la cantidad de bytes que debe ignorar, antes de
empezar a inspeccionar el patrón en un paquete.
within Establece que Snort debe inspeccionar el patrón a partir de
”n”bytes desde la última coincidencia.
uricontent Se establece una búsqueda de contenido en las peticiones (URI)
que se realizan a los servidores HTTP.
urilen Indica la mı́nima y máxima longitud; ası́ como el rango de tamaño
de la URI para que coincida.
isdataat Comprueba que la carga útil tiene datos en una ubicación especı́fi-
ca.
pcre Permite usar reglas escritas en perl que son compatibles con ex-
presiones regulares.
byte test Analiza un campo de un byte contra un valor especı́fico.
byte jump Se le indica a una regla leer la longitud de una porción de datos.
ftpbounce Detecta ataques de FTP Bounce.
asn1 Decodifica un paquete o una porción de un paquete y comprueba
sı́ existen codificaciones maliciosas.
91
3. RECOLECCIÓN DE EVIDENCIA
Opciones non-payload
En la tabla 3.3 se muestran las opciones non-payload de las reglas de Snort:
Nombre Descripción
fragoffset Permite comparar el desplazamiento del fragmento IP contra un
valor decimal.
ttl Es usado para verificar el valor time-to-live de un paquete IP. Se
emplea para detectar intentos de trazar la ruta. El rango de valores
que emplea es de 0 a 255.
tos Verifica el valor del campo ToS (Type of Service) en el encabeza-
do IP, el cual indica una serie de parámetros sobre la calidad de
servicio durante el recorrido por una red.
id Se emplea para comprobar el valor del campo id del datagrama.
Este se emplea en caso de que el datagrama sea fragmentado.
Herramientas como scanners y exploits, emplean este campo para
diversos propósitos.
ipopts Esta opción se emplea para verificar el campo opción de la cabe-
cera del datagrama IP.
fragbits Es usado para verificar sı́ los bits reservados y de fragmentación
se encuentran establecidos en el encabezado IP.
dsize Permite establecer el tamaño del payload. Se emplea para verificar
tamaños anómalos de paquetes, que puedan causar desbordamien-
to de búfer.
flags Se usa para comprobar sı́ los bits especı́ficos de las banderas TCP
están activos.
Los bits que verifica son:
F -FIN
S -SYN
R -RST
P -PSH
A -ACK
U -URG
C -CWR
E –ECE
92
3.2 Estructura de las reglas de Snort
93
3. RECOLECCIÓN DE EVIDENCIA
Opciones post-detection
En la tabla 3.4 se muestran las opciones post-detection de las reglas de Snort:
Nombre Descripción
logto Se le indica a Snort que guarde el paquete que activó esa alerta.
session Permite extraer datos de usuario de sesiones TCP, por ejemplo
telnet, ftp, entre otros.
resp Permite a Snort terminar conexiones de protocolo basadas en las
reglas que se activan. Por ejemplo, puede enviar un paquete es-
pecı́fico TCP o ICMP.
react Permite una respuesta activa, que permite el envı́o a una página
web u otro servicio al cliente, para después terminar la conexión.
tag Registra un número en especı́fico de paquetes después de que una
alerta se ha activado.
activates Permite especificar a una regla que agregue otra, cuando un evento
especı́fico de red ocurrió.
activated Permite activar dinámicamente una regla, cuando una alerta en
by especı́fico se activó.
count Especifica el número de paquetes que debe dejar pasar la regla,
antes de que ésta se active. Debe ser empleada con la opción
”activated by”.
replace Es una opción especial para el modo inline de Snort. Se reempla-
zará el contenido coincidente por una cadena de la misma longitud.
detection Establece un rango, en el que debe ser excedido por un host de
filter origen o destino, antes de que la regla pueda generar una alerta.
94
3.3 Eventos generados (Alertas)
Figura 3.2: Alertas emitidas por el IDS Snort. Fuente: Captura propia.
Para la realización de este proyecto solo se toman en cuenta las alertas que indican
un comportamiento anómalo por los equipos finales de los usuarios. Estas se indican
con la clasificación trojan-activity, omitiendo las demás alertas que se generaron.
El primer evento que se generó es el que contiene la firma “Snort Alert [1:28806:2]”,
el cual generó 177 eventos. Esto se observa en la figura 3.3.
95
3. RECOLECCIÓN DE EVIDENCIA
El siguiente evento generado contiene la firma “Snort Alert [1: 28039:4]”. Esta alerta
tuvo una ocurrencia de 81 eventos, tal y como se muestra en la figura 3.5.
El evento generado con la firma “Snort Alert [1:28801:2]”, tuvo un total de 547
alertas. Esto se observa en la figura 3.7.
La alerta con la firma “Snort Alert [1:28423:1]”, disparó 77 alertas. Los detalles de
este evento se observan en la figura 3.8.
El evento con la firma “Snort Alert [1:27919:3], generó un total de 90 alertas, como
se aprecia a continuación en la figura 3.9.
96
3.3 Eventos generados (Alertas)
En la figura 3.10 se muestra el evento con la firma “Snort Alert [1:32125:1]”, la cual
disparó 2 alertas.
Finalmente, el evento con la firma “Snort Alert [1:31527:1]”, tuvo una ocurrencia
de 4 eventos, como se muestra en la figura 3.11.
Cabe recordar que estos eventos, se generaron gracias a la ayuda de las reglas que
se descargaron de la página oficial de Snort. El conjunto de reglas que se empleó fue el
que proporciona la comunidad de Snort de manera gratuita.
97
3. RECOLECCIÓN DE EVIDENCIA
a l e r t t c p $HOME NET any −> $EXTERNAL NET $HTTP PORTS ( msg : ”INDICATOR−
COMPROMISE p o t e n t i a l malware download − s i n g l e d i g i t . exe f i l e
download ” ; f l o w : t o s e r v e r , e s t a b l i s h e d ; u r i l e n : 6 ; c o n t e n t : ” . exe ” ;
f a s t p a t t e r n : o n l y ; p c r e : ” / \ / [ a−z0 − 9 ] \ . exe$ / Ui ” ; metadata : i m p a c t f l a g
red , p o l i c y s e c u r i t y −i p s drop , r u l e s e t community , s e r v i c e h t t p ;
r e f e r e n c e : u r l , u r l q u e r y . n e t / s e a r c h . php?q= %5C %2F %5Ba−zA−Z %5D%5C. %5BEe %5D
%5BXx %5D%5BEe %5D%24&type=r e g e x p&s t a r t =2013−09−07&end=2013−12−06&max
=400; c l a s s t y p e : t r o j a n −a c t i v i t y ; s i d : 2 8 8 0 6 ; r e v : 2 ; )
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
TCP. El origen de la comunicación es cualquier host que pertenezca a la red
172.16.0.0/12 y el puerto de origen puede ser cualquiera.
Opciones de la regla:
El argumento de la opción msg (INDICATOR-COMPROMISE potential malwa-
re download - single digit .exe file download), va a mostrar dicho mensaje que
98
3.3 Eventos generados (Alertas)
Los argumentos de la opción flow (to server, established), indican que se apli-
que la regla solo a un sentido de la comunicación y que sean peticiones hacia
un servidor. El argumento established indica que deben existir conexiones TCP
establecidas.
El argumento urilen (6), establece la longitud de 6 bytes de las URI’s que com-
parará Snort.
El argumento de la opción fast pattern (only), establece que debe usar el conte-
nido “.exe” por el Fast Pattern Matcher, para que no se evalúe como la opción
“content” de la regla.
Los argumentos de la opción metadata (impact flag red, policy security-ips drop,
ruleset community y service http) establecen información adicional acerca de la
regla, sin que afecte los patrones de búsqueda. Los primeros dos argumentos se
emplean en el modo inline de Snort. El tercer argumento proporciona información
acerca de que esta regla pertenece al grupo de reglas de la comunidad de Snort.
El cuarto argumento identifica a la regla como un servicio HTTP.
99
3. RECOLECCIÓN DE EVIDENCIA
a l e r t t c p $EXTERNAL NET $HTTP PORTS −> $HOME NET any ( msg : ”MALWARE−CNC Win
. Trojan . ZeusVM embedded image c o n f i g f i l e download ” ; f l o w : t o c l i e n t ,
e s t a b l i s h e d ; f l o w b i t s : i s s e t , f i l e . j p e g ; f i l e d a t a ; c o n t e n t : ” | FF FE 3F
10 00 0 0 | ” ; f a s t p a t t e r n : o n l y ; p c r e : ” /\xFF\xFE\x3F\ x10 \ x00 \ x00 . { 1 4 } [ \
x2Bx\x2Fa−z0 −9]{20}/ smi ” ; metadata : i m p a c t f l a g red , p o l i c y balanced −
i p s drop , p o l i c y s e c u r i t y −i p s drop , s e r v i c e h t t p ; r e f e r e n c e : u r l ,www.
v i r u s t o t a l . com/ en / f i l e /
C003CA9C9694489F202E5A77FBD4973ADF7286C414EB98D525A8BFBC582D8962/
a n a l y s i s / ; c l a s s t y p e : t r o j a n −a c t i v i t y ; s i d : 3 0 2 1 1 ; r e v : 1 ; )
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
TCP. El origen de la comunicación es cualquier dirección IP que no pertenezca
al segmento de la intranet. Los puertos de origen de la comunicación podrán ser
los puertos HTTP que se mencionaron en la alerta 28806.
Opciones de la regla:
El argumento de la opción msg (MALWARE-CNC Win.Trojan.ZeusVM embed-
ded image config file download), mostrará este mensaje cuando dicha alerta haya
sido disparada, permitiendo identificar esta alerta con mayor facilidad.
Los argumentos de la opción flow (to client, established), indican que se aplique la
regla solo a un sentido de la comunicación y que sean peticiones hacia un cliente.
El argumento established indica que deben existir conexiones TCP establecidas.
100
3.3 Eventos generados (Alertas)
El argumento de la opción fast pattern (only), establece que debe usar el conte-
nido en hexadecimal por el Fast Pattern Matcher, para que no se evalúe como la
opción “content” de la regla.
Los argumentos de la opción metadata (impact flag red, policy balanced-ips drop,
policy security-ips drop y service http) establecen información adicional acerca de
la regla, sin que afecte los patrones de búsqueda. Los primeros tres argumentos
se emplean en el modo inline de Snort. El cuarto argumento identifica a la regla
como un servicio HTTP.
101
3. RECOLECCIÓN DE EVIDENCIA
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
UDP. El origen de la comunicación es cualquier dirección IP que pertenezca al
segmento 172.16.0.0/12. Los puertos de origen de la comunicación pueden ser
cualquiera.
Opciones de la regla:
El argumento de la opción msg (INDICATOR-COMPROMISE Suspicious .pw
dns query), mostrará este mensaje cuando dicha alerta haya sido disparada, per-
mitiendo identificarla con mayor facilidad.
El argumento de la opción flow (to server), indican que se aplique la regla solo
a un sentido de la comunicación y que sean peticiones hacia un servidor, en este
caso un DNS.
La opción fast pattern, establece que debe usar el contenido por el Fast Pattern
Matcher, para que no se evalúe como la opción “content” de la regla.
102
3.3 Eventos generados (Alertas)
afecte los patrones de búsqueda. Los argumentos policy balanced-ips alert y po-
licy security-ips drop; se emplean en el modo inline de Snort. El tercer argumento
identifica a la regla como un servicio DNS.
a l e r t t c p $HOME NET any −> $EXTERNAL NET $HTTP PORTS ( msg : ”MALWARE−CNC Win
. Trojan . Badur v a r i a n t outbound c o n n e c t i o n ” ; f l o w : t o s e r v e r , e s t a b l i s h e d
; c o n t e n t : ” / g e t /? data=” ; depth : 1 1 ; h t t p u r i ; c o n t e n t : ” User−Agent :
win32 | 0D 0A| ” ; f a s t p a t t e r n : o n l y ; h t t p h e a d e r ; metadata : i m p a c t f l a g
red , p o l i c y balanced −i p s drop , p o l i c y s e c u r i t y −i p s drop , r u l e s e t
community , s e r v i c e h t t p ; r e f e r e n c e : u r l ,www. v i r u s t o t a l . com/ en / f i l e /840
b3b76030696b1ce9eccd5ee6d55dd79c0120871094cb9266769c09f03029c / a n a l y s i s
/ ; c l a s s t y p e : t r o j a n −a c t i v i t y ; s i d : 3 1 6 8 3 ; r e v : 1 ; )
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
TCP. El origen de la comunicación es cualquier dirección IP que pertenezca al
segmento de la intranet. Cualquier puerto puede ser el origen.
Opciones de la regla:
La opción msg con su respectivo argumento (MALWARE-CNC Win.Trojan.Badur
variant outbound connection), informa al administrador el motivo por el cual esa
alerta ha sido disparada. Además permite identificar de una forma más sencilla
esa alerta.
103
3. RECOLECCIÓN DE EVIDENCIA
Los argumentos de la opción flow (to server, established), indican que se apli-
que la regla sólo a un sentido de la comunicación y que sean peticiones hacia
un servidor. El argumento established indica que deben existir conexiones TCP
establecidas.
Los argumentos de la opción metadata (impact flag red, policy balanced-ips drop,
policy security-ips drop, ruleset community, service http) proporcionan informa-
ción adicional, sin que interfiera en las demás opciones establecidas. Los primeros
tres argumentos se emplean en el modo inline de Snort. El cuarto argumento pro-
porciona información acerca de que esta regla pertenece al grupo de reglas de la
comunidad de Snort. El último argumento identifica a la regla como un servicio
HTTP.
104
3.3 Eventos generados (Alertas)
a l e r t t c p $HOME NET any −> $EXTERNAL NET $HTTP PORTS ( msg : ”DELETED MALWARE
−CNC Win . Trojan . Bancos outbound c o n n e c t i o n attempt ” ; f l o w : t o s e r v e r ,
e s t a b l i s h e d ; c o n t e n t : ” . exe HTTP/ 1 . 1 | 0D 0A| Accept : ∗ / ∗ | 0D 0A| Accept−
Encoding : g z i p , d e f l a t e | 0D 0A| User−Agent : ” ; f a s t p a t t e r n : o n l y ;
c o n t e n t : ” | 3B | MSIE ” ; h t t p h e a d e r ; c o n t e n t : ! ” Accept−Language : ” ;
h t t p h e a d e r ; r e f e r e n c e : u r l ,www. v i r u s t o t a l . com/ en / f i l e /26
c60976776d212aefc9863efde914059dd2847291084c158ce51655fc1e48d0 /
a n a l y s i s / 1 3 8 2 6 2 0 1 3 7 / ; c l a s s t y p e : t r o j a n −a c t i v i t y ; s i d : 2 8 8 0 1 ; r e v : 2 ; )
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
TCP. El origen de la comunicación es cualquier dirección IP que pertenezca al
segmento de la intranet. Cualquier puerto puede ser el origen.
Opciones de la regla:
La opción msg con su respectivo argumento (DELETED MALWARE-CNC
Win.Trojan.Bancos outbound connection attempt); informa al administrador el
motivo por el cual esa alerta ha sido disparada. Además permite identificar de
una forma más sencilla esa alerta.
Los argumentos de la opción flow (to server, established), indican que se apli-
que la regla solo a un sentido de la comunicación y que sean peticiones hacia
un servidor. El argumento established indica que deben existir conexiones TCP
establecidas.
105
3. RECOLECCIÓN DE EVIDENCIA
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
TCP. El origen de la comunicación es cualquier dirección IP externa. El puerto
de origen son los puertos HTTP que se mostraron en la alerta 28806.
Opciones de la regla:
La opción msg junto con su argumento (EXPLOIT-KIT Multiple exploit kit sin-
gle digit exe detection), aporta información acerca de la actividad maliciosa que
activó esa alerta.
Los argumentos de la opción flow (to client, established), indican que se aplique la
regla solo a un sentido de la comunicación y que sean peticiones hacia un cliente.
106
3.3 Eventos generados (Alertas)
La opción content con el argumento (.exe), junto con las opciones within y el
argumento (6), la opción fast pattern y http header, establece que Snort debe de
inspeccionar en las cabeceras de las solicitudes HTTP el contenido “.exe” a partir
de 6 bytes desde que encontró la última coincidencia. Además se le indica que ese
contenido es usado por el Fast Pattern Matcher.
107
3. RECOLECCIÓN DE EVIDENCIA
a l e r t t c p $HOME NET any −> $EXTERNAL NET $HTTP PORTS ( msg : ”MALWARE−CNC Win
. Trojan . Zeus e n c r y p t e d POST Data e x f i l t r a t i o n ” ; f l o w : t o s e r v e r ,
e s t a b l i s h e d ; c o n t e n t : ” Accept−Encoding | 3A| i d e n t i t y , ∗ | 3B | q =0|0D 0A| ” ;
f a s t p a t t e r n : o n l y ; h t t p h e a d e r ; c o n t e n t : ” | 3B | MSIE ” ; h t t p h e a d e r ;
p c r e : ” / [ ˆ −˜\ r \n ] { 4 } /P” ; metadata : i m p a c t f l a g red , p o l i c y balanced −i p s
drop , p o l i c y s e c u r i t y −i p s drop , r u l e s e t community , s e r v i c e h t t p ;
r e f e r e n c e : u r l ,www. v i r u s t o t a l . com/ en / f i l e /8825
abfca1a6d843ce5670858886cb63bb1317ddbb92f91ffd46cfdcaba9ac00 / a n a l y s i s
/ ; c l a s s t y p e : t r o j a n −a c t i v i t y ; s i d : 2 7 9 1 9 ; r e v : 3 ; )
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
TCP. El origen de la comunicación es cualquier dirección IP que pertenezca a la
intranet. El puerto de origen puede ser cualquiera.
Opciones de la regla:
La opción msg junto con su argumento (MALWARE-CNC Win.Trojan.Zeus encry-
pted POST Data exfiltration), aporta información acerca de la actividad maliciosa
que activó esta alerta.
Los argumentos de la opción flow (to server, established), indican que se apli-
que la regla solo a un sentido de la comunicación y que sean peticiones hacia
un servidor. El argumento established indica que deben existir conexiones TCP
establecidas.
El argumento de la opción content (|3B| MSIE), junto con la opción http header
indica que Snort debe de realizar la búsqueda de dicho contenido en los encabe-
zados de las solicitudes HTTP.
108
3.3 Eventos generados (Alertas)
Los argumentos de la opción metadata (impact flag red, policy balanced-ips drop,
policy security-ips drop, ruleset community, service http) proporcionan informa-
ción adicional, sin que interfiera en las demás opciones establecidas. Los primeros
tres argumentos se emplean en el modo inline de Snort. El cuarto argumento pro-
porciona información acerca de que esta regla pertenece al grupo de reglas de la
comunidad de Snort. El quinto argumento es un identificador propio de la regla
en la que establece el tipo de servicio que Snort va a observar.
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
109
3. RECOLECCIÓN DE EVIDENCIA
Opciones de la regla:
La opción msg junto con su argumento (BLACKLIST User-Agent known ma-
licious user-agent string - update - Win.Backdoor.Upatre), aporta información
acerca de la actividad maliciosa que activó esta alerta.
Los argumentos de la opción flow (to server, established), indican que se aplique
la regla solo a un sentido de comunicación y que sean peticiones hacia un servidor.
El argumento established indica que deben existir conexiones TCP establecidas.
Los argumentos de la opción metadata (impact flag red, policy balanced-ips drop,
policy security-ips drop, service http) proporcionan información adicional, sin que
interfiera en las demás opciones establecidas. Los argumentos impact flag red,
policy balanced-ips drop y policy security-ips drop se emplean cuando el IDS se
configura en modo inline. El último argumento identifica que el tipo de servicio
que Snort monitoreará será HTTP.
110
3.3 Eventos generados (Alertas)
Encabezado de la regla:
Esta regla es una alerta y establece que el protocolo que va a observar va a ser
TCP. El origen de la comunicación es cualquier dirección IP que pertenezca a la
intranet. El puerto de origen puede ser cualquiera.
Opciones de la regla:
La opción msg junto con su argumento (MALWARE-CNC Win.Trojan.Ramnit
variant outbound detected), aporta información acerca de la actividad maliciosa
que activó esta alerta.
Los argumentos de la opción flow (to server, established), indican que se aplique
la regla solo a un sentido de comunicación y que sean peticiones hacia un servidor.
El argumento established indica que deben existir conexiones TCP establecidas.
El argumento de la opción dsize (6), establece el tamaño del payload. Esta opción
se emplea para verificar tamaños anómalos en el paquete.
111
3. RECOLECCIÓN DE EVIDENCIA
112
3.3 Eventos generados (Alertas)
113
3. RECOLECCIÓN DE EVIDENCIA
TCP, ası́ como el payload del paquete que fue capturado. En el encabezado metadata
se establece la fecha (2015-04-08) y hora (12:55:06) en la que fue emitida la alerta, ası́
como al identificador del evento (1-264584) que generó dicha regla.
114
3.3 Eventos generados (Alertas)
115
3. RECOLECCIÓN DE EVIDENCIA
116
3.3 Eventos generados (Alertas)
117
3. RECOLECCIÓN DE EVIDENCIA
118
3.3 Eventos generados (Alertas)
119
3. RECOLECCIÓN DE EVIDENCIA
Figura 3.16: Figura 3.16: Paquete de la firma 28801. Fuente: Captura propia.
La figura 3.16 muestra los encabezados metadata, IP, TCP y el contenido del pa-
quete; que corresponden al evento 28801. En la cabecera metadata se encuentra la fecha
y hora en que se generó dicho evento, junto con su respectivo identificador. En el enca-
bezado IP, se puede consultar la dirección IP de origen y destino. De acuerdo a la regla
establecida se indica que la dirección IP de origen pertenece al segmento 172.16.0.0/12,
mientras que la dirección IP de destino es cualquier dirección IP externa. Para este
evento dichas direcciones IP son la 172.17.1.43 y la 173.236.50.26 respectivamente. En
la cabecera TCP se muestran los puertos de origen y destino, los cuales corresponden
120
3.3 Eventos generados (Alertas)
al 1305 y al 80 respectivamente.
121
3. RECOLECCIÓN DE EVIDENCIA
122
3.3 Eventos generados (Alertas)
123
3. RECOLECCIÓN DE EVIDENCIA
124
3.3 Eventos generados (Alertas)
125
3. RECOLECCIÓN DE EVIDENCIA
126
3.3 Eventos generados (Alertas)
127
3. RECOLECCIÓN DE EVIDENCIA
En la primera parte del reporte de Cuckoo, se muestra el tipo de objeto que fue
analizado, la fecha en que se inició y terminó el análisis, la duración del análisis, ası́
como la versión de Cuckoo con la que se realizó el análisis.
128
3.3 Eventos generados (Alertas)
129
3. RECOLECCIÓN DE EVIDENCIA
Figura 3.21: Análisis con Cuckoo SandBox del evento 28806. Fuente: Captura propia.
Sı́ hay información a mostrar en esta sección, bastará con seleccionar las subseccio-
nes localizadas en el área de análisis estático.
En el área Dropped Files se notifica que el archivo w.exe no descargó archivos adi-
cionales. Por ende, en el área Network Analysis se informa que dicho archivo malicioso
no se conectó a ningún sitio en Internet y que tampoco envı́a información robada del
sistema. En la sección Behavior Summary, se encuentra un historial de aquellos archi-
vos que fueron modificados, el detalle de las exclusiones mutuas (mutexes) ası́ como las
130
3.3 Eventos generados (Alertas)
llaves de registro.
Al final del reporte, se selecciona el nombre del archivo analizado, y desplegará una
tabla con el resumen de las operaciones realizadas sobre el sistema. Estas operaciones
se encuentran separadas por categorı́as, y se diferencian por un color distinto que está
indicado en la sección processes.
131
3. RECOLECCIÓN DE EVIDENCIA
132
3.3 Eventos generados (Alertas)
133
3. RECOLECCIÓN DE EVIDENCIA
Figura 3.22: Análisis con Cuckoo SandBox del evento 28039. Fuente: Captura propia.
El informe mostrado en la figura 3.22, corresponde al evento con ID 28039 que Snort
detectó como una actividad relacionada con un troyano. Esta actividad fue detectada
como maliciosa, ya que la muestra analizada fue una resolución del nombre de dominio
tup27nyt.oiasdgfr.pw.
134
3.3 Eventos generados (Alertas)
Debajo de lo anterior, se observan los detalles de los mutexes y las llaves de registro
que fueron modificadas.
Para poder realizar el análisis de la URL tuvo que realizarse sobre el navegador
135
3. RECOLECCIÓN DE EVIDENCIA
136
3.3 Eventos generados (Alertas)
137
3. RECOLECCIÓN DE EVIDENCIA
138
3.3 Eventos generados (Alertas)
Figura 3.23: Análisis con Cuckoo SandBox del evento 31683. Fuente: Captura propia.
139
3. RECOLECCIÓN DE EVIDENCIA
En el apartado detalles del archivo se muestran las caracterı́sticas del archivo anali-
zado para su identificación. En esta sección se muestra el nombre del archivo analizado,
el tamaño del archivo (1232165 bytes), se identifica al archivo como un archivo ejecu-
table. Por otro lado, también se despliega el CRC32 del archivo Officekeyserial15.exe,
ası́ como las 4 diferentes funciones hash con las cuales es posible identificarlo.
Se muestra el valor del algoritmo de fuzzy hashing Ssdeep, y Yara no encontró una
clasificación para dicho malware. En la sección de Virus Total se muestra que 28 mo-
tores antivirus de 57 identificaron la muestra como malicioso. Durante el análisis se
realizaron 5 capturas de pantalla.
data.bin aut2.tmp
sh.bin svchost.exe
aut1.tmp aut3.tmp
140
3.3 Eventos generados (Alertas)
los archivos que fueron modificados, información respecto a los mutexes, ası́ como las
llaves de registro.
141
3. RECOLECCIÓN DE EVIDENCIA
142
3.3 Eventos generados (Alertas)
Figura 3.24: Análisis con Cuckoo SandBox del evento 28801. Fuente: Captura propia.
Al final del informe, mostrado en la figura anterior, se encuentran todos los proce-
sos involucrados durante el análisis del binario malicioso. Estos procesos se encuentran
separados por categorı́as. Esta tabla puede ser consultada seleccionando cada uno de
los diferentes procesos que fueron creados durante la ejecución de la muestra.
143
3. RECOLECCIÓN DE EVIDENCIA
144
3.3 Eventos generados (Alertas)
145
3. RECOLECCIÓN DE EVIDENCIA
Figura 3.25: Análisis con Cuckoo SandBox del evento 27919. Fuente: Captura propia.
146
3.3 Eventos generados (Alertas)
Para poder realizar el análisis de la URL tuvo que realizarse sobre el navegor Inter-
net Explorer con su correspondiente proceso iexplore.exe con PID 2016.
En la primera parte del reporte de Cuckoo, se muestran los detalles del análisis
realizado sobre la muestra, que en este caso en particular, se trató de una URL. Se
establece la fecha de inicio y término ası́ como la duración del análisis de la URL. De
la misma manera que los reportes mostrados anteriormente, el análisis de la muestra
se realizó sobre la versión 1.1 de Cuckoo SandBox.
147
3. RECOLECCIÓN DE EVIDENCIA
148
3.3 Eventos generados (Alertas)
149
3. RECOLECCIÓN DE EVIDENCIA
Figura 3.26: Análisis con Cuckoo SandBox del evento 32125. Fuente: Captura propia.
Respecto a los eventos 30211, 28423 y 31527, los cuales fueron alertados por el
IDS Snort, en el payload capturado de éstos, no fue encontrada información útil como
para poder obtener una muestra y realizar el proceso de análisis de las muestras con la
SandBox.
150
Capı́tulo 4
Para el administrador de una red este proceso simplifica, en gran medida, el análisis
de una posible amenaza que atente contra los activos crı́ticos de una organización. Ası́
de una manera sencilla y eficaz, podrá determinar sı́ se trata de un falso positivo o en
realidad se trata de un software malicioso detectado en la intranet de la organización
que él administra, para que pueda contenerlo y evitar ası́ su propagación. El análisis de
la muestra que contiene el evento alertado por el IDS Snort, es un proceso delicado, ya
que sı́ se realiza en un ambiente fı́sico y de producción; podrı́a propagarse a otros equi-
pos y sistemas; pudiendo poner en riesgo los activos y la información que reside en éstos.
Para alcanzar este objetivo, se realizó un programa en shell de Unix, el cual tiene
la función principal de obtener el archivo del payload del paquete descargado desde el
IDS de Snort o de un archivo con formato pcap, el cual se obtiene a través de cualquier
sniffer de paquetes como Wireshark, Windump entre otros. Una vez que dicho archivo
ejecutable ha sido obtenido desde el payload del paquete o desde el archivo pcap, éste
puede ser enviado de manera inmediata a la SandBox Cuckoo para su análisis en un
entorno seguro y aislado; evitando ası́ su propagación.
Dicho programa fue realizado para que funcione en la versión 2.9.6.2 del IDS de
Snort, Cuckoo SandBox 1.1, y que ambos se encuentren instalados en un sistema Ubuntu
12.04 Precise Pangolin. Es posible que sı́ se instalan versiones diferentes de los compo-
nentes mencionados anteriormente, el script no funcione correctamente, por lo que se
recomienda adaptarlo a nuevas versiones, para su correcto funcionamiento.
Otras tareas que se pueden realizar a través de este programa son las siguientes:
151
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
Para facilitar la lectura de los resultados del análisis de la muestra, se diseñó una
página web, en la que se despliegan los datos más relevantes que pueden dar un indicio
al administrador de red, que el IDS ha detectado una potencial amenaza, por lo cual
debe actuar inmediatamente para su mitigación de los equipos infectados y ası́ evitar
que se siga propagando o inclusive que usuarios maliciosos puedan tomar control del
equipo infectado.
152
4.1 Estructura y módulos del programa de automatización
Como se muestra en la figura 4.2, una vez que el usuario ha seleccionado el módulo de
análisis de archivos descargados, debe elegir sı́ desea analizar el payload de un paquete
(archivo .bin) o sı́ requiere analizar un archivo .pcap.
Figura 4.2: Análisis de archivo con extensión .bin o .pcap. Fuente: Captura propia.
153
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
En las páginas 205 y 209 del apéndice B se presentan las funciones payload paquetes()
y archivos pcap() las cuales se encargan de realizar el análisis de los archivos .bin o .pcap
para la descarga del archivo que fue detectado como malicioso. Sı́ la descarga ha sido
exitosa, se le indicará al usuario la carpeta en la que ha sido guardada la muestra, como
se muestra a continuación en la figura 4.3:
Figura 4.3: Descarga de archivo desde un archivo .bin y .pcap. Fuente: Captura propia.
Este módulo permite eliminar todos los registros de los incidentes almacenados en
las tablas que contiene la Base de Datos Snort. Es importante mencionar que una vez
que se proceda con esta tarea, no se podrá recuperar ningún evento capturado por el
IDS Snort.
Este módulo se basa en la función llamada borrar base de datos() (apéndice B, pági-
na 216) para poder realizar la eliminación de los registros capturados por el IDS Snort.
A su vez, esta función hace uso de dos programas adicionales, los cuales en conjunto
154
4.1 Estructura y módulos del programa de automatización
permiten eliminar todos los registros tanto en las tablas de la base de datos, ası́ como
los archivos generados por Snort. Uno está realizado en shell de Unix, mientras que el
otro está desarrollado en PHP.
El primer programa del que se apoya la función anterior es eliminar eventos ids, el
cual tiene la función de eliminar todos los archivos generados por las alertas del IDS,
ası́ como ejecutar el programa realizado en PHP para eliminar los valores de las tablas
de la Base de Datos. Por otro lado, el programa eliminar tablas ids.php, realiza una
conexión a MySQL, en la cual se envı́a una serie de consultas para la eliminación de
datos de las siguientes tablas:
Figura 4.4: Mensaje para la eliminación de eventos de las tablas de la Base de Datos de
Snort. Fuente: Captura propia.
155
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
Figura 4.5: Borrado de información de las tablas de la Base de Datos Snort. Fuente:
Captura propia.
Finalmente el usuario será dirigido al menú principal para consultar otros módulos
y realizar otras tareas.
156
4.1 Estructura y módulos del programa de automatización
Una vez que el usuario ha indicado que desea ejecutar Cuckoo SandBox, se desple-
gará una pantalla como la que se muestra en la figura 4.8, confirmando que la SandBox
está lista para poder realizar el proceso de analizar archivos sospechosos automática-
mente.
157
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
4.1.4. Módulo para enviar una muestra para su análisis con Cuckoo
SandBox
Este módulo, depende de que Cuckoo SandBox se encuentre en ejecución. Como se
explicó previamente, la función del módulo anterior es validar la correcta ejecución de
Cuckoo SandBox, por lo que será de apoyo para poder enviar una muestra a la SandBox
para su análisis.
Una vez que la SandBox se encuentra lista para que le sean asignadas tareas de
análisis, como se muestra en la figura 4.9, se debe ingresar el nombre de la muestra
que se desea analizar, y que no necesariamente tiene que ser un archivo obtenido de
158
4.1 Estructura y módulos del programa de automatización
los archivos descargados a través de B.A.S.E., ya que puede ser cualquier archivo que
pudo ser obtenido a través de internet o cualquier otro medio y pueda ser dudoso.
Una vez que la muestra ha sido enviada para su análisis, como se observa en la figura
4.10, el programa notifica que se asignó una nueva tarea con su respectivo identificador,
ası́ como el nombre y tipo de la muestra; en este caso un archivo ejecutable llamado
DoomJuice.exe.
159
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
160
4.1 Estructura y módulos del programa de automatización
Figura 4.11: Proceso de análisis del repositorio de reportes de Cuckoo SandBox. Fuente:
Captura propia.
Para más detalles del archivo analisis reportes cuckoo consultar la página 225 del
apéndice B.
161
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
desde aquı́ se pueden enviar muestras para su análisis, de la misma manera en que se
realiza desde el módulo 4.
Este módulo permite comprobar que el servicio web de Cuckoo esté ejecutándose,
y en caso de no hacerlo, permite activar el servicio para la interfaz gráfica. Para ello,
la función web cuckoo comprueba sı́ ya existen los procesos del servicio de la interfaz
gráfica.
Cuando el usuario elige este módulo, el programa determina sı́ el servicio web de
Cuckoo está ejecutándose. Sı́ este servicio de Cuckoo SandBox se encuentra ejecutándo-
se, el programa devolverá el identificador de los procesos correspondientes a la interfaz
web. De acuerdo con lo descrito anteriormente, en la figura 4.12 se muestran los PID’s
del servicio web de Cuckoo.
Figura 4.12: Servicio web de Cuckoo SandBox en ejecución. Fuente: Captura propia.
Sı́ el servicio web no está activo, este módulo permite notificarle al usuario esto, por
lo que se podrá activar el servicio como se muestra a continuación en la figura 4.13:
162
4.2 Sistema de Consulta de Malware
desde cualquier navegador web, a través del puerto 8080. Esto se muestra a continuación
en la figura 4.14:
# mysql −u r o o t −p
Enter password : <Password r o o t de MySQL>
Una vez que se ingresó con el usuario root del manejador de base de datos MySQL,
se creó la base de datos usuario web.
mysql> create d a t a b a s e u s u a r i o w e b ;
Se selecciona la base de datos anterior y se crea una tabla llamada usuario con sus
respectivas columnas de la siguiente manera:
163
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
mysql> u s e u s u a r i o w e b ;
mysql> CREATE TABLE u s u a r i o ( i d i n t ( 1 ) , nombre VARCHAR( 2 0 ) , password BLOB
(40) , v i s i t c o u n t e r int ( 1 ) ) ;
Una vez creada la tabla usuario, se insertan los valores en la tabla que tendrá por
defecto el usuario administrador del sistema de consulta de malware:
Finalmente se validó la información que contiene la tabla usuario a través del si-
guiente query:
mysql> s e l e c t ∗ from u s u a r i o ;
El sistema de consulta de malware está desarrollado con las tecnologı́as PHP, Ja-
vaScript, jQuery y Bootstrap; el cual está compuesto por los siguientes archivos, los
cuales se explican a continuación:
validacion.php: Archivo que es invocado cuando las credenciales del usuario son
incorrectas. Es desplegado un mensaje de aviso de error de autenticación.
164
4.2 Sistema de Consulta de Malware
165
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
Como lo muestra la figura 4.17, sı́ el usuario ingresa erróneamente sus credenciales,
será desplegado un mensaje como se muestra a continuación; en el cual le es negado el
acceso y deberá intentar nuevamente autenticarse al sistema.
Una vez que el usuario logra autenticarse, obtiene acceso al sistema de consulta de
malware. Es importante validar que exista el archivo Información Muestras.txt y su
nombre sea el correcto, para que pueda ser leı́do por la página web, y los datos de este
puedan ser desplegados en la página web.
Sı́ es la primera vez que se ingresa al sistema, se debe ejecutar el módulo 5 del
programa de shell, para que se genere el archivo mencionado anteriormente y pueda ser
consumida la información de éste por la página web.
166
4.2 Sistema de Consulta de Malware
Figura 4.18: Mensaje de error de lectura del archivo Información Muestras.txt. Fuente:
Captura propia.
Reputación Virus Total (-100 a 100): Calificación otorgada por los usua-
rios de Virus Total, en la que determinan que la muestra es identificada como
maliciosa.
167
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
168
4.2 Sistema de Consulta de Malware
Cuando se desea compartir vı́a e-mail el reporte realizado por Cuckoo SandBox,
respecto a una muestra en especı́fico, se debe seleccionar la opción “Enviar” de la
última columna que aparece en la página web. Posterior a esto, como se aprecia a
continuación en la figura 4.21, se despliega una ventana modal, en la que el usuario
debe ingresar el e-mail del destinatario.
Figura 4.21: Envı́o de correo con el reporte de la muestra analizada. Fuente: Captura
propia.
Para el envı́o exitoso del e-mail, debe ser ingresado un correo electrónico válido. Sı́
el correo electrónico no es válido, el sistema desplegará el siguiente mensaje mostrado
en la figura 4.22:
169
4. AUTOMATIZACIÓN DEL PROCESO DE ANÁLISIS DE UN EVENTO
Una vez que ha sido confirmado el envı́o exitoso del correo electrónico desde el siste-
ma de consulta de malware, se procede a revisar la bandeja de entrada del destinatario,
para la descarga y revisión del reporte de la muestra analizada con Cuckoo SandBox.
La figura 4.24 muestra la recepción del correo electrónico por parte del destinatario.
170
4.2 Sistema de Consulta de Malware
Figura 4.24: Correo electrónico con el reporte de la muestra recibido. Fuente: Captura
propia.
171
Capı́tulo 5
Conclusiones
Una vez que se obtuvo la evidencia por parte del IDS, se implementó en el mismo
servidor la SandBox. Inicialmente se realizaron pruebas manuales para el análisis de los
eventos generados por Snort, pero este proceso fue tedioso y tardado, y más sı́ era ne-
cesario saber con prontitud su comportamiento e impacto que tendrı́a sobre los activos
de información; sin dejar de lado que para un usuario con pobres o nulos conocimientos
sobre administración Linux podrı́a ser muy complicado su correcta operación. Por lo
anterior, se pensó en la realización de un programa para automatizar el proceso de
recolección de evidencia y automatización del análisis.
Para poder tener un panorama general de los análisis de las amenazas, se desarrolló
una página web principalmente en PHP, en la cual son desplegados de manera sen-
cilla y ordenada los datos más relevantes derivados del análisis con la SandBox. Por
ejemplo, en ella es capaz de visualizar el nombre de la muestra analizada, ası́ como su
respectiva suma de verificación (SHA-256) permitiendo identificar unı́vocamente a ésta.
173
5. CONCLUSIONES
Finalmente, son mostrados dos valores que proporcionan la evidencia necesaria para
identificar a la muestra como altamente potencial: la tasa de detección de antivirus y
la reputación de Virus Total. La página también cuenta con un módulo para poder
compartir mediante correo electrónico el reporte de análisis de la muestra.
Por lo anterior, la página web es una herramienta vital dentro del sistema, ya que
permite al administrador del sistema observar y determinar de una manera sencilla el
impacto negativo de la muestra analizada, descartando falsos positivos detectados por
el IDS.
Por lo anterior se concluye, que para Debian 6 Squeeze, por el momento, la imple-
mentación de Cuckoo SandBox no es compatible y funcional; por lo que se descartó la
posibilidad de que éste fuese el sistema operativo anfitrión del sistema.
174
Durante el tiempo que estuvo el IDS en la red de producción de la SEDESA no
sólo se lograron identificar alertas con actividades relacionadas al malware, sino que
se detectaron otros eventos, tales como ataques de DoS a páginas web nacionales y
extranjeras, ası́ como escaneos de segmentos y equipos de red, entre otros.
Para poder brindar dicho servicio, ambos sistemas se pusieron en marcha en una
infraestructura de red funcional y en producción, lo que hizo posible que se pudiera
capturar cualquier tipo de actividad anómala, la cual se almacenó en bitácoras y en
una base de datos para su posterior análisis mediante Cuckoo SandBox.
175
5. CONCLUSIONES
miento teórico, técnico y las habilidades necesarias para afrontar y aportar soluciones a
proyectos relacionados en el ámbito de las redes de datos y seguridad de la información.
Lo anterior fue posible gracias a materias como redes de datos, seguridad informática
I y II, ası́ como el programa de formación de becarios de la Unidad de Servicios de
Cómputo Académico de la Facultad de Ingenierı́a y a la currı́cula CCNA de Cisco que
es impartida en esta Facultad.
Para finalizar, el objetivo de esta tesis, es servir como guı́a a usuarios u organizacio-
nes que necesiten un sistema de bajo costo para la detección y análisis de actividades
maliciosas, que atente contra los activos de información, ası́ como la información que
reside en ellos; para poder actuar con prontitud ante una amenaza y lograr la conten-
ción de ésta, a fin de evitar su propagación para su posterior erradicación total de los
activos de información infectados.
176
Glosario
B.A.S.E. (pp. 51, 53, 54, 55, 56, 153, intérprete, de código abierto, de archivos
154) • Basic Analysis and Security En- de salida en formato unified2, que permite
gine, es un motor de análisis basado en registrar las alertas en una base de datos.
PHP, que busca y procesa una base de Bootstrap (pp. 164, 235) • Conjun-
datos de eventos de seguridad generados to de herramientas de Twitter de código
por un IDS. abierto que simplifica el proceso de crea-
Barnyard (p. 50) • Barnyard es un ción del diseño de las páginas web.
177
C
e-learning (p. 2) • Cursos que son exclusión mutua (pp. 130, 135, 146,
enviados utilizando recursos de red o a 147) • Método empleado en el que
través de Internet. un proceso evita el uso de recursos si-
enlace troncal (pp. 76, 173) • Un multáneos, excluyendo temporalmente a
enlace troncal es un enlace punto a punto todos los demás procesos, para usar un
entre dos dispositivos de red, que trans- recurso compartido en común.
portan más de una VLAN.
178
F
falso positivo (pp. 77, 83, 151, 174, temática que se realiza sobre cualquier
175) • Falla o error de cualquier softwa- conjunto de datos de cualquier longitud.
re de detección de virus, en el que infor- La salida de dicha operación es una huella
ma que un archivo se encuentra infectado, digital de tamaño fijo para ese conjunto
cuando en realidad el archivo está libre de de datos que se les aplicó la función hash.
infecciones de virus informáticos. fuzzy hashing (pp. 63, 128, 140) •
Fast Pattern Matcher (pp. 99, 101, Técnica que divide un archivo en cantida-
102, 104, 105, 107, 108, 110, 111) • El des iguales de bytes y en las que por cada
Fast Pattern Matcher se emplea para se- grupo calcula un hash. A partir de todos
leccionar sólo aquellas reglas que coinci- los hash obtenidos, se calcula un hash fi-
dieron usando el contenido de la regla, sı́ nal, que representará el total del archivo.
y sólo sı́, el contenido fue encontrado en Es este hash el que compara con otros pa-
la regla. ra obtener la similitud con otros archivos.
función hash (pp. 128, 140, 160) • Los algoritmos más conocidos son Ssdeep
Una función hash es una operación ma- y Sdhash.
179
J
JavaScript (pp. 164, 235) • Lengua- jQuery (pp. 164, 235) • Biblioteca
je de programación, que se ejecuta del la- de JavaScript que permite simplificar el
do del cliente para permitir efectos atrac- desarrollo de páginas web, la animación,
tivos y dinámicos en las páginas web. y la gestión de eventos.
llamada al sistema (p. 82) • Una realiza una aplicación para solicitar un
llamada al sistema es un mecanismo que servicio al kernel del sistema operativo.
PHP (pp. 36, 43, 52, 155, 164, 173) chivos multimedia (audio, video, texto y
• Lenguaje popular de programación de notas) que pueden descargarse desde In-
código abierto, diseñado para el desarro- ternet mediante una previa suscripción,
llo web y que puede ser embebido dentro que pueden reproducirse posteriormente
de páginas HTML. en una computadora o un reproductor di-
podcasts (p. 2) • Distribución de ar- gital.
180
R
SED (p. 152) • SED es una potente sistema autónomo (p. 16) • Gru-
herramienta de la lı́nea de comandos para po de redes bajo el control administra-
los sistemas UNIX, la cual permite modi- tivo de una única entidad, que presenta
ficar el contenido de las diferentes lı́neas una polı́tica de enrutamiento propia e in-
de un archivo, con base a una serie de co- dependiente.
mandos o expresiones regulares definidos.
token (p. 26) • Dispositivo electróni- de un usuario para poder tener acceso a
co que facilita el proceso de autenticación un sistema informático.
URI (pp. 91, 99, 104, 114) • Son las cual es una cadena corta de caracteres que
siglas de Uniform Resource Identifier, la sirve para identificar recursos en internet.
VirtualBox (pp. 66, 67, 71, 72, 74, Un volcado de memoria es el proceso en
79) • VirtualBox es una software de el que el contenido de la memoria es des-
virtualización de sistemas operativos, en plegado y almacenado en caso de que un
el que podremos crear sistemas invitado- sistema o aplicación colapse. Este proceso
s/huéspedes. permite a los desarrolladores de software
VLSM (p. 16) • Máscara de Subred y administradores de sistemas, diagnosti-
de Longitud Variable. car, identificar y resolver el problema que
volcado de memoria (pp. 36, 74) • condujo al fallo del sistema o aplicación.
181
Bibliografı́a
[2] Cisco certified network associate routing and switching currı́cula versión 5.
www.netacad.com. Consultado en febrero de 2016.
[10] Alder, R., Babbin, J., Beale, J., Doxtater, A., Foster, J. C., Kohlenberg, T., and
Rash, M. (2004). Snort 2.1 Intrusion Detection Second Edition, chapter Intrusion De-
tection Systems, Introducing Snort 2.1, pages 2, 9–14, 20–23, 25–27, 67–69. Syngress
Publishing, Inc, 2 edition.
[11] Alder, R., Carter, D. E. F., Foster, J. C., Jonkman, M., Marty, R., and Seagren,
E. (2007). Snort IDS and IPS Toolkit, chapter Intrusion Detection Systems, pages
8–11. Syngress Publishing, Inc.
183
BIBLIOGRAFÍA
[12] Beale, J., Foster, J. C., Posluns, J., and Caswell, B. (2003). Snort 2.0 Intrusion
Detection, chapter Intrusion Detection Systems, Advanced Snort, pages 4–6, 478.
Syngress Publishing, Inc.
184
Apéndice A
Archivo auxiliary.conf
[ sniffer ]
# Enable or d i s a b l e t h e u s e o f an e x t e r n a l s n i f f e r ( tcpdump ) [ y e s /no ] .
enabled = yes
# S p e c i f y a B e r k e l e y p a c k e t f i l t e r t o p a s s t o tcpdump .
# b p f = n o t arp
185
A. ARCHIVOS DE CONFIGURACIÓN DE CUCKOO SANDBOX
Archivo cuckoo.conf
[ cuckoo ]
# Enab le or d i s a b l e s t a r t u p v e r s i o n c h e c k . When e n a b l e d , Cuckoo w i l l
connect
# t o a remote l o c a t i o n t o v e r i f y w h e t h e r t h e r u n n i n g v e r s i o n i s t h e l a t e s t
# one a v a i l a b l e .
v e r s i o n c h e c k = on
186
# Enable p r o c e s s i n g o f r e s u l t s w i t h i n t h e main cuckoo p r o c e s s .
# This i s t h e d e f a u l t b e h a v i o r b u t can be s w i t c h e d o f f f o r s e t u p s t h a t
# r e q u i r e h i g h s t a b i l i t y and p r o c e s s t h e r e s u l t s i n a s e p a r a t e t a s k .
p r o c e s s r e s u l t s = on
# L i m i t t h e amount o f a n a l y s i s j o b s a Cuckoo p r o c e s s g o e s t h r o u g h .
# This can be used t o g e t h e r w i t h a watchdog t o m i t i g a t e r i s k o f memory
leaks .
max analysis count = 0
# Temporary d i r e c t o r y c o n t a i n i n g t h e f i l e s u p l o a d e d t h r o u g h Cuckoo
interfaces
# ( web . py , a p i . py , Django web i n t e r f a c e ) .
tmppath = /tmp
[ resultserver ]
# The R e s u l t S e r v e r i s used t o r e c e i v e i n r e a l time t h e b e h a v i o r a l l o g s
# p ro d uc e d by t h e a n a l y z e r .
# S p e c i f y t h e IP a d d r e s s o f t h e h o s t . The a n a l y s i s machines s h o u l d be a b l e
# t o c o n t a c t t h e h o s t t h r o u g h such a d d r e s s , so make s u r e i t ’ s v a l i d .
# NOTE: i f you s e t r e s u l t s e r v e r IP t o 0 . 0 . 0 . 0 you have t o s e t t h e o p t i o n
# ‘ r e s u l t s e r v e r i p ‘ f o r a l l your v i r t u a l machines i n machinery
configuration .
ip = 192.168.56.1
# S p e c i f y a p o r t number t o b i n d t h e r e s u l t s e r v e r on .
p o r t = 2042
187
A. ARCHIVOS DE CONFIGURACIÓN DE CUCKOO SANDBOX
# S h o u l d t h e s e r v e r w r i t e t h e l e g a c y CSV f o r m a t ?
# ( i f you have any custom p r o c e s s i n g on t h o s e , s w i t c h t h i s on )
store csvs = off
[ processing ]
# S e t t h e maximum s i z e o f a n a l y s i s ’ s g e n e r a t e d f i l e s t o p r o c e s s .
# This i s used t o a v o i d t h e p r o c e s s i n g o f b i g f i l e s which can b r i n g memory
leak .
# The v a l u e i s e x p r e s s e d i n b y t e s , by d e f a u l t 100Mb.
a n a l y s i s s i z e l i m i t = 104857600
# Enab le or d i s a b l e DNS l o o k u p s .
r e s o l v e d n s = on
[ database ]
# Specify the database connection s t r i n g .
# Examples , s e e d o c u m e n t a t i o n f o r more :
# s q l i t e : / / / f o o . db
# p o s t g r e s q l : / / f o o : b a r @ l o c a l h o s t : 5 4 3 2 / mydatabase
# mysql : / / f o o : b a r @ l o c a l h o s t / mydatabase
# I f empty , d e f a u l t i s a SQLite i n db / cuckoo . db .
c o n n e c t i o n = mysql : / / s n o r t : s n o r t @ l o c a l h o s t / cuckoo
# Database c o n n e c t i o n t i m e o u t i n s e c o n d s .
# I f empty , d e f a u l t i s s e t t o 60 s e c o n d s .
timeout =
[ timeouts ]
# S e t t h e d e f a u l t a n a l y s i s t i m e o u t e x p r e s s e d i n s e c o n d s . This v a l u e w i l l
be
188
# used t o d e f i n e a f t e r how many s e c o n d s t h e a n a l y s i s w i l l t e r m i n a t e u n l e s s
# otherwise s p e c i f i e d at submission .
d e f a u l t = 120
189
A. ARCHIVOS DE CONFIGURACIÓN DE CUCKOO SANDBOX
Archivo memory.conf
# Volatility configuration
# Basic s e t t i n g s
[ basic ]
# P r o f i l e t o a v o i d w a s t i n g time i d e n t i f y i n g i t
g u e s t p r o f i l e = WinXPSP2x86
# D e l e t e memory dump a f t e r v o l a t i l i t y p r o c e s s i n g .
delete memdump = no
# L i s t o f a v a i l a b l e modules
# e n a b l e d : e n a b l e t h i s module
# f i l t e r : u s e f i l t e r s t o remove b e n i g n s y s t e m d a t a from t h e l o g s
# F i l t e r s a r e d e f i n e d i n t h e mask s e c t i o n a t b e l o w
# L i s t s h i d d e n p r o c e s s e s . Uses s e v e r a l t r i c k s t o i d e n t i f y them
190
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i /CommandReferenceMal23#p s x v i e w
[ psxview ]
enabled = yes
filter = off
# Show c a l l b a c k s
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i /CommandReferenceMal23#c a l l b a c k s
[ callbacks ]
enabled = yes
filter = off
# Show i d t
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i /CommandReferenceMal23#i d t
[ idt ]
enabled = yes
filter = off
# Show t i m e r s
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i /CommandReferenceMal23#t i m e r s
[ timers ]
enabled = yes
filter = off
# Show m e s s a g e h o o k s
# E x p e c t i t t o be v e r y s l o w when e n a b l e d
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i / CommandReferenceGui23#
messagehooks
[ messagehooks ]
e n a b l e d = no
filter = off
# Show s i d s
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i / CommandReference23#g e t s i d s
[ getsids ]
enabled = yes
191
A. ARCHIVOS DE CONFIGURACIÓN DE CUCKOO SANDBOX
filter = off
# Show p r i v i l e g e s
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i / CommandReference23#p r i v s
[ privs ]
enabled = yes
filter = off
# L i s t open h a n d l e s o f p r o c e s s e s
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i / CommandReference23#h a n d l e s
[ handles ]
enabled = yes
f i l t e r = on
# Scan f o r Mutexes ( w h o l e s y s t e m )
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i / CommandReference23#mutantscan
[ mutantscan ]
enabled = yes
f i l t e r = on
# L i s t d e v i c e s and d r i v e r s
192
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i /CommandReferenceMal23#
devicetree
[ devicetree ]
enabled = yes
f i l t e r = on
# Scan f o r s e r v i c e s
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i /CommandReferenceMal23#s v c s c a n
[ svcscan ]
enabled = yes
f i l t e r = on
# Scan f o r k e r n e l d r i v e r s ( i n c l u d e s hidden , u n l o a d e d )
# h t t p : / / code . g o o g l e . com/p/ v o l a t i l i t y / w i k i / CommandReference23#modscan
[ modscan ]
enabled = yes
f i l t e r = on
# Masks . Data t h a t s h o u l d n o t be l o g g e d
# J u s t g e t t h i s i n f o r m a t i o n from your p l a i n VM S n a p s h o t ( w i t h o u t r u n n i n g
malware )
# This w i l l f i l t e r o u t unwanted i n f o r m a t i o n i n t h e l o g s
[ mask ]
e n a b l e d = no
pid generic =
193
A. ARCHIVOS DE CONFIGURACIÓN DE CUCKOO SANDBOX
Archivo processing.conf
[ analysisinfo ]
enabled = yes
[ behavior ]
enabled = yes
[ debug ]
enabled = yes
[ dropped ]
enabled = yes
[ memory ]
e n a b l e d = no
[ network ]
enabled = yes
[ static ]
enabled = yes
[ strings ]
enabled = yes
[ targetinfo ]
enabled = yes
194
[ virustotal ]
enabled = yes
# Add your V i r u s T o t a l API k e y h e r e . The d e f a u l t API key , k i n d l y p r o v i d e d
# by t h e V i r u s T o t a l team , s h o u l d e n a b l e you w i t h a s u f f i c i e n t t h r o u g h p u t
# and w h i l e b e i n g s h a r e d w i t h a l l our u s e r s , i t s h o u l d n ’ t a f f e c t your u s e .
key = a 0 2 8 3 a 2 c 3 d 5 5 7 2 8 3 0 0 d 0 6 4 8 7 4 2 3 9 b 5 3 4 6 f b 9 9 1 3 1 7 e 8 4 4 9 f e 4 3 c 9 0 2 8 7 9 d 7 5 8 0 8 8
195
A. ARCHIVOS DE CONFIGURACIÓN DE CUCKOO SANDBOX
Archivo reporting.conf
[ jsondump ]
enabled = yes
[ reporthtml ]
enabled = yes
[ mmdef ]
e n a b l e d = no
[ maec40 ]
e n a b l e d = no
mode = o v e r v i e w
p r o c e s s t r e e = true
output handles = false
s t a t i c = true
s t r i n g s = true
v i r u s t o t a l = true
[ mongodb ]
e n a b l e d = no
host = 1 2 7 . 0 . 0 . 1
p o r t = 27017
[ hpfclient ]
e n a b l e d = no
host =
p o r t = 10000
196
ident =
secret =
channel =
197
A. ARCHIVOS DE CONFIGURACIÓN DE CUCKOO SANDBOX
Archivo virtualbox.conf
[ virtualbox ]
# S p e c i f y which V i r t u a l B o x mode you want t o run your machines on .
# Can be ” g u i ” , ” s d l ” or ” h e a d l e s s ” . R e f e r t o V i r t u a l B o x ’ s o f f i c i a l
# documentation to understand the d i f f e r e n c e s .
mode = g u i
# Path t o t h e l o c a l i n s t a l l a t i o n o f t h e VBoxManage u t i l i t y .
path = / u s r / b i n /VBoxManage
[ cuckoo1 ]
# S p e c i f y t h e l a b e l name o f t h e c u r r e n t machine as s p e c i f i e d i n your
# VirtualBox con figur ation .
l a b e l = cuckoo1
# S p e c i f y t h e o p e r a t i n g s y s t e m p l a t f o r m used by c u r r e n t machine
# [ windows / darwin / l i n u x ] .
p l a t f o r m = windows
# S p e c i f y t h e IP a d d r e s s o f t h e c u r r e n t v i r t u a l machine . Make s u r e t h a t
the
# IP a d d r e s s i s v a l i d and t h a t t h e h o s t machine i s a b l e t o r e a c h i t . I f
not ,
# the analysis w i l l fail .
ip = 192.168.56.101
198
# ( O p t i o n a l ) S p e c i f y t h e s n a p s h o t name t o u s e . I f you do n o t s p e c i f y a
snapshot
# name , t h e V i r t u a l B o x MachineManager w i l l u s e t h e c u r r e n t s n a p s h o t .
# Example ( S n a p s h o t 1 i s t h e s n a p s h o t name ) :
# snapshot = Snapshot1
# ( O p t i o n a l ) S p e c i f y t h e name o f t h e n e t w o r k i n t e r f a c e t h a t s h o u l d be us e d
# when dumping n e t w o r k t r a f f i c from t h i s machine w i t h tcpdump . I f
specified ,
# o v e r r i d e s t h e d e f a u l t i n t e r f a c e s p e c i f i e d i n cuckoo . c o n f
# Example ( v b o x n e t 0 i s t h e i n t e r f a c e name ) :
# i n t e r f a c e = vboxnet0
# ( O p t i o n a l ) S p e c i f y t h e IP o f t h e R e s u l t S e r v e r , as your v i r t u a l machine
sees i t .
# The R e s u l t S e r v e r w i l l a l w a y s b i n d t o t h e a d d r e s s and p o r t s p e c i f i e d i n
cuckoo . conf ,
# however you c o u l d s e t up your v i r t u a l n e t w o r k t o u s e NAT/PAT, so you can
s p e c i f y here
# t h e IP a d d r e s s f o r t h e R e s u l t S e r v e r as your machine s e e s i t . I f you don
’ t s p e c i f y an
# a d d r e s s here , t h e machine w i l l u s e t h e d e f a u l t v a l u e from cuckoo . c o n f .
# NOTE: i f you s e t t h i s o p t i o n you have t o s e t r e s u l t s e r v e r IP t o 0 . 0 . 0 . 0
i n cuckoo . c o n f .
# Example :
# r e s u l t s e r v e r i p = 192.168.56.1
# ( O p t i o n a l ) S p e c i f y t h e p o r t f o r t h e R e s u l t S e r v e r , as your v i r t u a l
machine s e e s i t .
# The R e s u l t S e r v e r w i l l a l w a y s b i n d t o t h e a d d r e s s and p o r t s p e c i f i e d i n
cuckoo . conf ,
# however you c o u l d s e t up your v i r t u a l n e t w o r k t o u s e NAT/PAT, so you can
s p e c i f y here
# t h e p o r t f o r t h e R e s u l t S e r v e r as your machine s e e s i t . I f you don ’ t
specify a port
199
A. ARCHIVOS DE CONFIGURACIÓN DE CUCKOO SANDBOX
200
Apéndice B
#! / b i n / b a s h
201
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
trap −− ’ ’ SIGTSTP
trap −− ’ ’ SIGINT
menu principal () {
admon analisis malware
echo −e ” Por f a v o r s e l e c c i o n e una o p c i ón : \ n”
echo ” 1 ) Aná l i s i s de a r c h i v o s d e s c a r g a d o s d e l IDS S n o r t . ”
echo ” 2 ) B o r r a r Base de Datos d e l IDS S n o r t . ”
echo ” 3 ) Comprobar e s t a d o de Cuckoo SandBox . ”
echo ” 4 ) A n a l i z a r a r c h i v o d e s c a r g a d o con Cuckoo SandBox . ”
202
echo ” 5 ) A n a l i z a r r e p o s i t o r i o de r e p o r t e s de malware de Cuckoo SandBox .
”
echo ” 6 ) A c t i v a r s e r v i c i o web de Cuckoo SandBox”
echo ” 7 ) S a l i r . ”
echo −e −n ” \n−> ”
}
main ( ) {
menu principal
read answer
case $answer in
1)
archivos ids
;;
2)
borrar BD Snort
;;
3)
status cuckoo
;;
4)
analisis archivo descargado
;;
5)
analisis repositorio
;;
203
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
6)
web cuckoo
;;
7)
kill script
;;
∗)
opcion no valida
;;
esac
}
archivos ids () {
admon analisis malware
echo −e ” Por f a v o r s e l e c c i o n e una o p c i ón : \ n”
echo ” 1 ) A n a l i z a r e l Payload de un p aq ue te . ”
echo ” 2 ) A n a l i z a r a r c h i v o con fo rma to pcap . ”
echo ” 3 ) R e g r e s a r a l menú p r i n c i p a l . ”
echo −e −n ” \n−> ”
read o p c i o n
case $ o p c i o n in
1)
payload paquetes
;;
2)
archivos pcap
;;
204
3)
main
;;
∗)
admon analisis malware
echo −e ”ERROR! Opci ón no vá l i d a ! \ n”
echo ” Para r e g r e s a r oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
archivos ids
fi
;;
esac
}
payload paquetes () {
admon analisis malware
echo ” Por f a v o r i n g r e s a e l nombre d e l p ay l oa d a a n a l i z a r ( ∗ . b i n ) : ”
echo −e −n ”−> ”
read p ay l oa d
i f [ −f $DESCARGAS$payload ] ; then
admon analisis malware
echo ” Obteniendo i n f o r m a c i ón d e l a r c h i v o \ ” $ p a y l oa d \ ” . . . ”
cd $DESCARGAS
h o s t =‘ e g r e p −i h ’ ( Host . ∗ ) ’ $DESCARGAS$payload | sed ’ s / Host . ∗ // g ’ |
sed ’ s / . $ / / ’ ‘ g e t =‘ e g r e p −i h ’ ( ˆGET. ∗ ) ’ $DESCARGAS$payload | sed
’ s /GET // g ’ | sed ’ s /HTTP. ∗ / / g ’ | sed ’ s / ˆ [ \ t ] ∗ / / ; s / [ \ t ] ∗ $
// ’ ‘
d o w n l o a d e d f i l e =‘echo $ g e t | awk −F ” / ” ’ { p r i n t $NF } ’ ‘
URL=‘echo $ h o s t $ g e t ‘
205
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
206
else
admon analisis malware
echo ”ERROR! El a r c h i v o \ ” $ p a y l o ad \ ” no e x i s t e ! ”
sleep 2s
payload paquetes
fi
}
analyses payload () {
admon analisis malware
echo ” A n a l i z a r e l a r c h i v o ahora con Cuckoo SandBox ? [ S/N] ”
echo −e −n ”−> ”
read r e s p u e s t a
case $ r e s p u e s t a in
s | S)
obtiene nombre archivo descargado
;;
n |N)
reanalizar payload
;;
∗)
admon analisis malware
echo ”ERROR! Opci ón no vá l i d a ! ”
echo −e ” \ nPara r e g r e s a r oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
analyses
fi
;;
207
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
esac
}
reanalizar payload () {
admon analisis malware
echo ” Desea a n a l i z a r o t r o a r c h i v o ( ∗ . b i n ) ? [ S/N] ”
echo −e −n ”−> ”
read r e s p u e s t a
case $ r e s p u e s t a in
s | S)
borra temp descargas
payload paquetes
;;
n |N)
admon analisis malware
borra temp descargas
echo ” Para r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
;;
∗)
admon analisis malware
echo ”ERROR! Opci ón no vá l i d a ! ”
echo −e ” \ nPara r e g r e s a r oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
reanalizar payload
fi
208
;;
esac
}
archivos pcap () {
admon analisis malware
echo ” Por f a v o r i n g r e s a e l nombre d e l a r c h i v o pcap a a n a l i z a r ( ∗ . pcap ) :
”
echo −e −n ”−> ”
read pcap
i f [ −f $DESCARGAS$pcap ] ; then
admon analisis malware
echo ” Obteniendo i n f o r m a c i ón d e l a r c h i v o \ ” $pcap \ ” . . . ”
cd $DESCARGAS
t c p t r a c e −xHTTP $DESCARGAS$pcap &> / dev / n u l l
f i l e x p l =‘ l s −1 ∗ . x p l | c u t −d ” ” −f 1 0 ‘
f i l e t i m e s =‘ l s −1 ∗ . times | c u t −d ” ” −f 1 0 ‘
o u t p u t f i l e =‘ l s −1 ∗ . dat | c u t −d ” ” −f 1 0 ‘
i f [ −f $ f i l e x p l ] && [ −f $ f i l e t i m e s ] ; then
rm ∗ . x p l ∗ . times
fi
i f [ −f $DESCARGAS$output file ] ; then
cd $DESCARGAS
h o s t =‘ e g r e p −i h ’ ( Host . ∗ ) ’ $DESCARGAS$output file | sed ’ s / Host . ∗
// g ’ | sed ’ s / . $ / / ’ ‘
g e t =‘ e g r e p −i h ’ ( ˆGET. ∗ ) ’ $DESCARGAS$output file | sed ’ s /GET // g
’ | sed ’ s /HTTP. ∗ / / g ’ | sed ’ s / ˆ [ \ t ] ∗ / / ; s / [ \ t ] ∗ $ / / ’ ‘
d o w n l o a d e d f i l e =‘echo $ g e t | awk −F ” / ” ’ { p r i n t $NF } ’ ‘
URL=‘echo $ h o s t $ g e t ‘
s t a t u s u r l =‘ c u r l −I s −−connect −t i m e o u t 2 $URL | head −n 1 | c u t −
d ” ” −f 2 ‘
rm $ o u t p u t f i l e
209
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
i f [ ” $ s t a t u s u r l ” == ” 200 ” ] ; then
i f [ −d $MUESTRAS MALWARE ] ; then
cd $MUESTRAS MALWARE
wget −e r o b o t s=o f f −o t e m p d e s c a r g a $URL &> / dev / n u l l
i f [ −f $MUESTRAS MALWARE/ t e m p d e s c a r g a ] ; then
mv t e m p d e s c a r g a $DESCARGAS
fi
admon analisis malware
echo ” Se d e s c a r g ó e l a r c h i v o \ ” $ d o w n l o a d e d f i l e \ ” en :
$MUESTRAS MALWARE”
sleep 5s
analyses pcap
else
mkdir $MUESTRAS MALWARE && cd $MUESTRAS MALWARE
wget −e r o b o t s=o f f −o t e m p d e s c a r g a $URL &> / dev / n u l l
i f [ −f $MUESTRAS MALWARE/ t e m p d e s c a r g a ] ; then
mv t e m p d e s c a r g a $DESCARGAS
fi
admon analisis malware
echo ” Se d e s c a r g ó e l a r c h i v o \ ” $ g e t \ ” en : $MUESTRAS MALWARE
”
sleep 5s
analyses pcap
fi
else
admon analisis malware
echo ”ERROR! El a r c h i v o \ ” $ g e t \ ” no s e e n c u e n t r a para su
descarga ! ”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
fi
else
210
admon analisis malware
echo ”ERROR! Hubo un problema a l p r o c e s a r e l a r c h i v o \ ” $pcap \ ” ”
sleep 2s
archivos pcap
fi
else
admon analisis malware
echo ”ERROR! El a r c h i v o \ ” $pcap \ ” no e x i s t e ! ”
sleep 2s
archivos pcap
fi
}
analyses pcap () {
admon analisis malware
echo ” A n a l i z a r e l a r c h i v o ahora con Cuckoo SandBox ? [ S/N] ”
echo −e −n ”−> ”
read r e s p u e s t a
case $ r e s p u e s t a in
s | S)
obtiene nombre archivo descargado
;;
n |N)
reanalizar pcap
;;
∗)
admon analisis malware
echo ”ERROR! Opci ón no vá l i d a ! ”
echo −e ” \ nPara r e g r e s a r oprime e n t e r . . . ”
211
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
analyses pcap
fi
;;
esac
}
reanalizar pcap () {
admon analisis malware
echo ” Desea a n a l i z a r o t r o a r c h i v o ( ∗ . pcap ) ? [ S/N] ”
echo −e −n ”−> ”
read r e s p u e s t a
case $ r e s p u e s t a in
s | S)
borra temp descargas
archivos pcap
;;
n |N)
admon analisis malware
borra temp descargas
echo ” Para r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
;;
∗)
admon analisis malware
echo ”ERROR! Opci ón no vá l i d a ! ”
212
echo −e ” \ nPara r e g r e s a r oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
reanalizar pcap
fi
;;
esac
}
213
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
fi
else
admon analisis malware
echo ” E r r o r ! El nombre de a r c h i v o no e x i s t e ”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
fi
else
echo −e ” E r r o r ! \ n\nNo s e e n c u e n t r a a c t i v o Cuckoo SandBox . Puedes
a c t i v a r Cuckoo SandBox en l a o p c i ón 3 d e l menú p r i n c i p a l . ”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
fi
else
admon analisis malware
echo ”No e x i s t e n d e s c a r g a s por a n a l i z a r ”
sleep 2s
main
fi
}
214
}
borrar BD ( ) {
admon analisis malware
echo −e ”W A R N I N G! \n\ nDesea b o r r a r l a Base de Datos d e l IDS S n o r t
? [ S/N] ”
echo −e −n ”−> ”
}
borrar BD Snort ( ) {
borrar BD
read b o r r a r
case $ b o r r a r in
s | S)
borrar base de datos
;;
n |N)
admon analisis malware
echo ” Para r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
;;
∗)
admon analisis malware
echo ”ERROR! Opci ón no vá l i d a ! ”
215
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
216
echo ” E r r o r ! R e v i s e que s e e n c u e n t r e n l o s s i g u i e n t e s a r c h i v o s :
e l i m i n a r e v e n t o s i d s y e l i m i n a r t a b l a s i d s . php en l a r u t a
$ADMON MALWARE. ”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
fi
}
status cuckoo () {
admon analisis malware
p i d c u c k o o =‘ps −e f | g r e p −v g r e p | g r e p cuckoo . py | awk ’ { p r i n t $2 } ’ ‘
i f [ ” $ p i d c u c k o o ” == ” ” ] ; then
echo ” Cuckoo no s e e n c u e n t r a a c t i v o . Desea a c t i v a r Cuckoo ? [ S/N] ”
echo −e −n ”−> ”
read a c t i v a r
case $ a c t i v a r in
s | S)
admon analisis malware
echo ” C o n f i g u r a n d o i n t e r f a z vboxnet0 . . . ”
i f u p vboxnet0 &> / dev / n u l l
i f c o n f i g vboxnet0 1 9 2 . 1 6 8 . 5 6 . 1 &> / dev / n u l l
sleep 1s
echo −e ” \ nConfigurando Má quina V i r t u a l \ ” cuckoo1 \ ” . . . ”
VBoxManage startvm ” cuckoo1 ”
sleep 1s
cd $CUCKOO && . / cuckoo . py
sleep 2s
i f [ ” $ p i d c u c k o o ” == ” ” ] ; then
217
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
reintentar cuckoo
fi
;;
n |N)
admon analisis malware
echo ” Para r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
;;
∗)
status cuckoo
;;
esac
else
echo ” Cuckoo ya e s t a a c t i v o con e l PID = $ p i d c u c k o o . ”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
fi
}
reintentar cuckoo () {
admon analisis malware
echo ”ERROR! F a l l ó a l i n t e n t a r a c t i v a r e l s e r v i c i o de Cuckoo SandBox . ”
echo −e ” \ n I n t e n t a r de nuevo ? [ S/N] ”
echo −e −n ”−> ”
218
read r e s p u e s t a
case $ r e s p u e s t a in
s | S)
status cuckoo
;;
n |N)
admon analisis malware
echo ” Para r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
;;
∗)
admon analisis malware
echo ”ERROR! Opci ón no vá l i d a ! ”
echo −e ” \ nPara r e g r e s a r oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
reintentar cuckoo
fi
;;
esac
}
219
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
echo −e −n ”−> ”
read d e s c a r g a d o
i f [ −f $DESCARGAS$descargado ] ; then
admon analisis malware
cd $CUCKOO UTILS && . / submit . py $DESCARGAS$descargado
echo −e ” \nÉ x i t o ! Se e s t á r e a l i z a n d o e l an á l i s i s d e l a r c h i v o \ ”
$ d e s c a r g a d o \ ” con Cuckoo Sandbox . ”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
else
admon analisis malware
echo ” E r r o r ! El a r c h i v o \ ” $ d e s c a r g a d o \ ” no e x i s t e ! ”
sleep 2s
analisis archivo descargado
fi
else
echo −e ” E r r o r ! \ n\nNo s e e n c u e n t r a a c t i v o Cuckoo SandBox . Puedes
a c t i v a r Cuckoo SandBox en l a o p c i ón 3 d e l menú p r i n c i p a l . ”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
fi
}
analisis repositorio () {
i f [ −f $ADMON MALWARE/ a n a l i s i s r e p o r t e s c u c k o o ] ; then
ejecuta analisis repositorio
220
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
else
admon analisis malware
echo −e ” \nNo e s p o s i b l e r e a l i z a r e l an á l i s i s de l o s r e p o s i t o r i o s . ”
echo −e ” \ nPor f a v o r r e v i s e que e l s c r i p t \ ” a n a l i s i s r e p o r t e s c u c k o o
\ ” s e e n c u e n t r a en l a s i g u i e n t e r u t a : $ADMON MALWARE”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
fi
}
web cuckoo ( ) {
admon analisis malware
221
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
n |N)
admon analisis malware
echo ” Para r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
;;
∗)
web cuckoo
;;
esac
else
echo ” El s e r v i c i o web de Cuckoo SandBox ya e s t á a c t i v o con l o s
s i g u i e n t e s PID ’ s : $ p i d w e b c u c k o o . ”
echo −e ” \ nPara r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
222
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
fi
}
n |N)
admon analisis malware
echo ” Para r e g r e s a r a l menú p r i n c i p a l oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
;;
∗)
admon analisis malware
echo ”ERROR! Opci ón no vá l i d a ! ”
echo −e ” \ nPara r e g r e s a r oprime e n t e r . . . ”
read e n t e r
223
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
i f [ ” $ e n t e r ” != ” ” ] ; then
reintentar web cuckoo
fi
;;
esac
}
k i l l s c r i p t () {
k i l l $ ( p i d o f . / admon malware ) 2> / dev / n u l l
clear
return 0
}
opcion no valida () {
admon analisis malware
echo ”ERROR! Opci ón no vá l i d a ! ”
echo −e ” \ nPara r e g r e s a r oprime e n t e r . . . ”
read e n t e r
i f [ ” $ e n t e r ” != ” ” ] ; then
main
fi
}
main
224
Archivo analisis reportes cuckoo
#! / b i n / b a s h
fecha () {
f e c h a =‘ date ‘
echo ”La f e c h a e s : $ f e c h a ”
}
nombre muestra ( ) {
nombre=‘awk ’/< span c l a s s=”mono” >/’ r e p o r t . html ‘
nombre=‘echo $nombre | c u t −d ”>” −f 3 | c u t −d ”<” −f 1 ‘
echo ” El nombre de l a muestra a n a l i z a d a e s : $nombre ”
}
reputacion vt () {
v a l i d a =‘awk ’/<h4>/ { p r i n t } ’ r e p o r t . html ‘
v a l i d a =‘echo $ v a l i d a | c u t −d ”>” −f 2 | c u t −d ”<” −f 1 ‘
}
225
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
sha256 archivo () {
SHA256=‘awk ’NR==405’ r e p o r t . html ‘
SHA256=‘echo $SHA256 | c u t −d ”>” −f 3 | c u t −d ”<” −f 1 ‘
echo ” El SHA256 de l a muestra a n a l i z a d a e s : $SHA256”
}
url sha256 () {
SHA256=” S i n SHA256”
echo ” El SHA256 de l a muestra a n a l i z a d a e s : $SHA256”
}
detection rate () {
r a t e =‘awk ’ / D e t e c t i o n Rate : / { p r i n t } ’ r e p o r t . html ‘
r a t e =‘echo $ r a t e | c u t −d ” : ” −f 2 | c u t −d ” ” −f 2 ‘
numerador =‘echo $ r a t e | c u t −d ” / ” −f 1 ‘
denominador =‘echo $ r a t e | c u t −d ” / ” −f 2 ‘
d i v i s i o n=$ ( echo ” $numerador / $denominador ” | bc − l )
p o r c e n t a j e=$ ( echo ” $ d i v i s i o n ∗100 ” | bc − l )
echo ” El ı́ n d i c e de d e t e c c i ón de a n t i v i r u s e s : $ p o r c e n t a j e ” ” %”
}
reputacion archivo () {
cd $ADMON MALWARE
226
v i r u s t o t a l a r c h i v o=h t t p s : / /www. v i r u s t o t a l . com/ e s / f i l e /$SHA256/ v o t e s −
resume /
s t a t u s a r c h i v o =‘ c u r l −I s −−connect −t i m e o u t 3 $ v i r u s t o t a l a r c h i v o |
head −n 1 | c u t −d ” ” −f 2 ‘
i f [ ” $ s t a t u s a r c h i v o ” == ” 200 ” ] ; then
wget −e r o b o t s=o f f $ v i r u s t o t a l a r c h i v o &> / dev / n u l l
r e p u t a c i o n =‘ c u t −d ” \ ” −f 9 i n d e x . html | c u t −d ” e ” −f 6 | c u t −d ”
” −f 2 ‘
echo −e ”La r e p u t a c i ón d e l a r c h i v o $nombre e s de : $ r e p u t a c i o n \n”
i f [ −f i n d e x . html ] ; then
rm i n d e x . html
fi
else
echo −e ”Pá g i n a de V i r u s T o t a l no e n c o n t r a d a ! \ n”
fi
}
reputacion URL ( ) {
r u r l =‘awk ’ / h t t p s / { p r i n t } ’ r e p o r t . html ‘
r u r l =‘echo $ r u r l | c u t −d ”=” −f 2 | c u t −d ”>” −f 1 ‘
p r o t o c o l o =‘echo $ r u r l | c u t −d ” / ” −f 1 ‘
dominio =‘echo $ r u r l | c u t −d ” / ” −f 3 ‘
d i r e c t o r i o 1 =‘echo $ r u r l | c u t −d ” / ” −f 4 ‘
d i r e c t o r i o 2 =‘echo $ r u r l | c u t −d ” / ” −f 5 ‘
v i r u s t o t a l u r l=$ ( echo ” $ p r o t o c o l o // $dominio / e s / $ d i r e c t o r i o 1 /
$ d i r e c t o r i o 2 / v o t e s −resume ” )
s t a t u s u r l =‘ c u r l −I s −−connect −t i m e o u t 3 $ v i r u s t o t a l u r l | head −n 1 |
c u t −d ” ” −f 2 ‘
i f [ ” $ s t a t u s u r l ” == ” 301 ” ] ; then
cd $ADMON MALWARE
wget −e r o b o t s=o f f $ v i r u s t o t a l u r l &> / dev / n u l l
227
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
r e p u t a c i o n =‘ c u t −d ”=” −f 4 v o t e s −resume | c u t −d ” e ” −f 5 | c u t −d
” ” −f 2 ‘
echo −e ”La r e p u t a c i ón de l a URL $nombre e s de : $ r e p u t a c i o n \n”
i f [ −f v o t e s −resume ] ; then
rm v o t e s −resume
fi
else
echo −e ”Pá g i n a de V i r u s T o t a l no e n c o n t r a d a ! \ n”
fi
}
i f [ −d $ANALYSES ] ; then
NUM=0
cd $ANALYSES
a n a l y s e s=$ ( l s −1 | wc − l )
f o r ( ( i =1; i<=a n a l y s e s ; i ++))
do
i f [ −f $ANALYSES/ $ i / r e p o r t s / r e p o r t . html ] ; then
r u t a c u c k o o=$ANALYSES/ $ i / r e p o r t s / r e p o r t . html
p a t h w e b c u c k o o=$WEB CUCKOO/ $ i
f i l e w e b c u c k o o=$WEB CUCKOO/ $ i / r e p o r t . html
r e p o r t s c u c k o o =/web cuckoo / $ i / r e p o r t . html
i f [ −d $WEB CUCKOO ] ; then
i f [ ! −d $ p a t h w e b c u c k o o ] ; then
mkdir $ p a t h w e b c u c k o o
cp $ r u t a c u c k o o $ p a t h w e b c u c k o o
else
i f [ ! −f $ f i l e w e b c u c k o o ] ; then
cp $ r u t a c u c k o o $ p a t h w e b c u c k o o
fi
fi
else
228
mkdir $WEB CUCKOO
mkdir $ p a t h w e b c u c k o o
cp $ r u t a c u c k o o $ p a t h w e b c u c k o o
fi
cd $ANALYSES/ $ i / r e p o r t s
echo ” D i r e c t o r i o $ i a n a l i z a d o ”
i f [ ” $ v a l i d a ” == ” F i l e D e t a i l s ” ] ; then
reputacion archivo
else
reputacion URL
fi
229
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
230
Archivo eliminar eventos ids
#! / b i n / sh
i f [ −f $BARNYARD ] ; then
cat / dev / n u l l > $BARNYARD/ a l e r t
fi
i f [ −f $SNORT ] ; then
rm $SNORT/ s n o r t . ∗
fi
231
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
<?php
// DECLARACIÓN DE VARIABLES
$Icmphdr = ’ icmphdr ’ ;
$Data = ’ data ’ ;
$Iphdr = ’ iphdr ’ ;
$Opt = ’ opt ’ ;
$Signature = ’ signature ’ ;
$Tcphdr = ’ t c p h d r ’ ;
$Event = ’ e v e n t ’ ;
$Acid event = ’ acid event ’ ;
232
$qry5 = mysql query ( ” d e l e t e from $ S i g n a t u r e ” ) ;
$qry6 = mysql query ( ” d e l e t e from $Tcphdr ” ) ;
$qry7 = mysql query ( ” d e l e t e from $Event ” ) ;
$qry8 = mysql query ( ” d e l e t e from $ A c i d e v e n t ” ) ;
i f ( ! $qry1 ) {
echo ” \ n E r r o r en c o n s u l t a ” . mysql error ( ) . ” \n” ;
} else {
echo ” \nÉ x i t o ! Elementos Borrados de l a t a b l a $Icmphdr : ” .
mysql affected rows ( ) . ” \n” ;
}
i f ( ! $qry2 ) {
echo ” \ n E r r o r en c o n s u l t a ” . mysql error ( ) . ” \n” ;
} else {
echo ” \nÉ x i t o ! Elementos Borrados de l a t a b l a $Data : ” .
mysql affected rows ( ) . ” \n” ;
}
i f ( ! $qry3 ) {
echo ” \ n E r r o r en c o n s u l t a ” . mysql error ( ) . ” \n” ;
} else {
echo ” \nÉ x i t o ! Elementos Borrados de l a t a b l a $Iphdr : ” .
mysql affected rows ( ) . ” \n” ;
}
i f ( ! $qry4 ) {
echo ” \ n E r r o r en c o n s u l t a ” . mysql error ( ) . ” \n” ;
} else {
echo ” \nÉ x i t o ! Elementos Borrados de l a t a b l a $Opt : ” .
mysql affected rows ( ) . ” \n” ;
}
233
B. CÓDIGO FUENTE PARA LA AUTOMATIZACIÓN DEL ANÁLISIS DE UNA
MUESTRA CON CUCKOO SANDBOX Y ADMINISTRACIÓN DE EVENTOS
DEL IDS SNORT.
i f ( ! $qry5 ) {
echo ” \ n E r r o r en c o n s u l t a ” . mysql error ( ) . ” \n” ;
} else {
echo ” \nÉ x i t o ! Elementos Borrados de l a t a b l a $ S i g n a t u r e : ” .
mysql affected rows ( ) . ” \n” ;
}
i f ( ! $qry6 ) {
echo ” \ n E r r o r en c o n s u l t a ” . mysql error ( ) . ” \n” ;
} else {
echo ” \nÉ x i t o ! Elementos Borrados de l a t a b l a $Tcphdr : ” .
mysql affected rows ( ) . ” \n” ;
}
i f ( ! $qry7 ) {
echo ” \ n E r r o r en c o n s u l t a ” . mysql error ( ) . ” \n” ;
} else {
echo ” \nÉ x i t o ! Elementos Borrados de l a t a b l a $Event : ” .
mysql affected rows ( ) . ” \n” ;
}
i f ( ! $qry8 ) {
echo ” \ n E r r o r en c o n s u l t a ” . mysql error ( ) . ” \n” ;
} else {
echo ” \nÉ x i t o ! Elementos Borrados de l a t a b l a $ A c i d e v e n t : ” .
mysql affected rows ( ) . ” \n” ;
}
m y s q l c l o s e ( $cnx ) ;
?>
234
Apéndice C
Este apartado contiene el código fuente y los archivos que componen la página web
desarrollada con las tecnologı́as PHP, JavaScript, jQuery y Bootstrap. Cabe recordar
que la principal función de este sistema web es presentar los valores más importantes
de las amenzas, detectadas tras ser analizadas con Cuckoo SandBox. Estos valores son
presentados al usuario de una manera clara y fácil de comprender.
Para el correcto despliegue de la página web, es necesario que los archivos que a
continuación se describen, se encuentren en un directorio llamado login en la ruta /va-
r/www/base.
Archivo index.php
<?php
r e q u i r e o n c e ( ” s e s i o n . c l a s s . php” ) ;
$ s e s i o n = new s e s i o n ( ) ;
i f ( i s s e t ( $ POST [ ” i n i c i a r ” ] ) ) {
$ u s u a r i o = $ POST [ ” u s e r ” ] ;
$password = $ POST [ ” p a s s ” ] ;
$ v a l i d a t e = v a l i d a r U s u a r i o ( $ u s u a r i o , $password ) ;
235
C. CÓDIGO FUENTE DEL SISTEMA DE CONSULTA DE MALWARE.
i f ( $ v a l i d a t e [ ” f l a g ” ] == true ) {
$ s e s i o n −> s e t ( ” u s e r ” , $ u s u a r i o , $ v a l i d a t e [ ” c o u n t e r ” ] ) ;
header ( ” l o c a t i o n : p r i n c i p a l . php” ) ;
} else {
header ( ” l o c a t i o n : v a l i d a c i o n . php” ) ;
}
}
f u n c t i o n v a l i d a r U s u a r i o ( $ u s u a r i o , $password ) {
$ c o n e x i o n = m y s q l i c o n n e c t ( ” l o c a l h o s t ” , ” r o o t ” , ”<Password r o o t MySQL>
” , ” usuario web ” ) ;
$ s q l = ”SELECT ∗ FROM u s u a r i o WHERE nombre=’ $ u s u a r i o ’ AND password=
AES ENCRYPT( ’ $password ’ , ’ k e y a e s ’ ) ” ;
$consulta = mysqli query ( $conexion , $ s q l ) ;
$ r e s u l t = mysqli num rows ( $ c o n s u l t a ) ;
i f ( $ POST [ ’ I n c i d e n t e ’ ] == ’ 1 ’ && $ r e s u l t > 0 ) {
while ( $ o b j = m y s q l i f e t c h o b j e c t ( $ c o n s u l t a ) ) {
$ c o u n t e r = $ o b j −> v i s i t c o u n t e r ;
}
$counter = $counter + 1;
$ u p d a t e q u e r y = ”UPDATE u s u a r i o SET v i s i t c o u n t e r=” . $ c o u n t e r . ”
WHERE nombre = ’ ” . $ u s u a r i o . ” ’ ” ;
mysqli query ( $conexion , $update query ) ;
} else {
while ( $ o b j = m y s q l i f e t c h o b j e c t ( $ c o n s u l t a ) ) {
$ c o u n t e r = $ o b j −> v i s i t c o u n t e r ;
}
}
}
m y s q l i f r e e r e s u l t ( $conexion , $ r e s u l t ) ;
mysqli close ( $link ) ;
i f ( $ r e s u l t > 0) {
$ r e s p o n s e = array ( ” f l a g ” => true , ” c o u n t e r ” => $ c o u n t e r ) ;
return $response ;
236
} else {
$ r e s p o n s e = array ( ” f l a g ” => f a l s e ) ;
return $response ;
}
?>
<!DOCTYPE html>
<html l a n g=” en ” c l a s s=”demo−1 no−j s ”>
<head>
<meta c h a r s e t=”UTF−8” />
<meta http−e q u i v=”X−UA−Compatible ” c o n t e n t=” IE=edge ”>
<meta name=” v i e w p o r t ” c o n t e n t=” width=d e v i c e −width , i n i t i a l −s c a l e =1”>
< t i t l e >S i s t e m a de C o n s u l t a de Malware</ t i t l e >
<meta name=” d e s c r i p t i o n ” c o n t e n t=” Muestras de malware d e t e c t a d a s por
un IDS y que han s i d o a n a l i z a d a s por Cuckoo SandBox . ” />
<meta name=” keywords ” c o n t e n t=” malware , i d s , samples , worms . ” />
<meta name=” a u t h o r ” c o n t e n t=” A l e j a n d r o Bá r c e n a s ”/>
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” c s s /demo . c s s ” />
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” c s s / component . c s s ” />
</head>
<body>
<d i v c l a s s=” c o n t a i n e r ”>
<header c l a s s=” c c h e a d e r ”>
<h1><b>S i s t e m a de C o n s u l t a de Malware</b></h1>
</header>
237
C. CÓDIGO FUENTE DEL SISTEMA DE CONSULTA DE MALWARE.
</p>
<p>
<span c l a s s=” c c l o g i n −addon ”><i c l a s s=” f a f a −key f a −2x f a
−s p i n ”></i ></span>
<i n p u t type=” password ” name=” p a s s ” v a l u e=” ” p l a c e h o l d e r=
” C o n t r a s e ña ”>
</p>
<p>
< s e l e c t name=” I n c i d e n t e ”>
<o p t i o n d i s a b l e d=” ” s e l e c t e d=” ” v a l u e=” 0 ”>La c o n s u l t a
e s por un i n c i d e n t e de s e g u r i d a d ?</ o p t i o n >
<o p t i o n v a l u e=” 1 ”>Si </o p t i o n >
<o p t i o n v a l u e=” 0 ”>No</o p t i o n >
</ s e l e c t >
</p>
<h2 a l i g n= ’ c e n t e r ’>
<p><i n p u t type=” submit ” name=” i n i c i a r ” a l i g n=” c e n t e r ”
v a l u e=” I n i c i a r s e s i o n ”></p>
</h2>
</form>
<?php
i f ( i s s e t ( $ POST [ ’ submit ’ ] ) ) {
$ s e l e c t e d v a l u e = $ POST [ ’ I n c i d e n t e ’ ] ;
}
?>
</div>
</div>
</div>
</body>
</html>
238
Archivo validacion.php
<!DOCTYPE html>
<html l a n g=” en ” c l a s s=”demo−1 no−j s ”>
<head>
<meta c h a r s e t=”UTF−8” />
<meta http−e q u i v=”X−UA−Compatible ” c o n t e n t=” IE=edge ”>
<meta name=” v i e w p o r t ” c o n t e n t=” width=d e v i c e −width , i n i t i a l −s c a l e =1”>
< t i t l e >S i s t e m a de R e g i s t r o de Malware</ t i t l e >
<meta name=” a u t h o r ” c o n t e n t=” A l e j a n d r o Bá r c e n a s ”/>
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” c s s /demo . c s s ” />
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” c s s / component . c s s ” />
</head>
<body>
<d i v c l a s s=” c o n t a i n e r ”>
<header c l a s s=” c c h e a d e r ”>
<h1><b>S i s t e m a de R e g i s t r o de Malware</b></h1>
</header>
239
C. CÓDIGO FUENTE DEL SISTEMA DE CONSULTA DE MALWARE.
Archivo principal.php
<?php
r e q u i r e o n c e ( ” s e s i o n . c l a s s . php” ) ;
r e q u i r e o n c e ( ” s e s i o n . c l a s s . php” ) ;
$ s e s i o n = new s e s i o n ( ) ;
$ u s u a r i o = $ s e s i o n −>g e t ( ” u s e r ” ) ;
$cnx = m y s q l i c o n n e c t ( ” l o c a l h o s t ” , ” r o o t ” , ”<Password r o o t MySQL>” , ”
usuario web ” ) ;
$ c o u n t e r q u e r y = ”SELECT v i s i t c o u n t e r FROM u s u a r i o WHERE nombre=’
$usuario ’” ;
$ c o n s u l t a = m y s q l i q u e r y ( $cnx , $ c o u n t e r q u e r y ) ;
$ r e s u l t = mysqli num rows ( $ c o n s u l t a ) ;
i f ( $ r e s u l t > 0) {
while ( $ o b j = m y s q l i f e t c h o b j e c t ( $ c o n s u l t a ) )
$ c o u n t e r = $ o b j −> v i s i t c o u n t e r ;
}
$ SESSION [ ’ c o u n t e r ’ ] = $ c o u n t e r ;
mysqli close () ;
i f ( $ u s u a r i o == f a l s e ) {
header ( ” L o c a t i o n : i n d e x . php” ) ;
} else {
?>
<!DOCTYPE html>
<html l a n g=” en ” c l a s s=”demo−1 no−j s ”>
<head>
<meta c h a r s e t=”UTF−8” />
<meta http−e q u i v=”X−UA−Compatible ” c o n t e n t=” IE=edge ”>
<meta name=” v i e w p o r t ” c o n t e n t=” width=d e v i c e −width , i n i t i a l −
s c a l e =1”>
< t i t l e >S i s t e m a de C o n s u l t a de Malware</ t i t l e >
<meta name=” a u t h o r ” c o n t e n t=” A l e j a n d r o Bá r c e n a s ”/>
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” c s s /demo . c s s ” />
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” c s s / component . c s s
” />
240
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” a s s e t s / b o o t s t r a p /
c s s / b o o t s t r a p . min . c s s ” />
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” c s s /
e s t i l o s t a b l a s . c s s ”>
<l i n k r e l=” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f=” a s s e t s /
s w e e t a l e r t 2 . c s s ”>
</head>
<body>
<header>
<!−− BOOTSTRAP NAVBAR −−>
<nav c l a s s=” navbar navbar−i n v e r s e navbar−f i x e d −top ”>
<d i v c l a s s=” c o n t a i n e r ”>
<d i v c l a s s=” navbar−h e a d e r ”>
<button type=” button ” c l a s s=” navbar−t o g g l e
c o l l a p s e d ” data−t o g g l e=” c o l l a p s e ” data−t a r g e t=
”#navbar ” a r i a −expanded=” f a l s e ” a r i a −c o n t r o l s=
” navbar ”>
<span c l a s s=” s r −o n l y ”>Toggle n a v i g a t i o n </span>
<span c l a s s=” i c o n −bar ”></span>
<span c l a s s=” i c o n −bar ”></span>
<span c l a s s=” i c o n −bar ”></span>
</button>
<a c l a s s=” navbar−brand ” h r e f=”#”><img s r c=” images
/ unam white . png” s t y l e=” width : 40 px ; margin−top
: −10px ; ”></a>
</div>
<d i v i d=” navbar ” c l a s s=” c o l l a p s e navbar−c o l l a p s e ”>
<u l c l a s s=” nav navbar−nav navbar−r i g h t ”>
< l i ><a h r e f=”#”>Bienvenid@ <?php echo $ s e s i o n −>
g e t ( ” u s e r ” ) ; ?></a></ l i >
<l i c l a s s=” dropdown ”>
<a h r e f=”#” c l a s s=”dropdown−t o g g l e ” data−t o g g l e
=” dropdown ” r o l e=” button ” a r i a −haspopup=”
t r u e ” a r i a expanded=” f a l s e ”> Menú <span
c l a s s=” c a r e t ”> </span></a>
241
C. CÓDIGO FUENTE DEL SISTEMA DE CONSULTA DE MALWARE.
<u l c l a s s=”dropdown−menu”>
< l i ><a h r e f=” h t t p :// <? php p r i n t $ SERVER { ’
SERVER ADDR ’ } ; ? >:8080/ browse / page /1 ”
t a r g e t=” b l a n k ”>I n g r e s a r a l r e p o s i t o r i o
de an á l i s i s de Cuckoo</a></ l i >
< l i ><a h r e f=”#” o n c l i c k=” r e i n i c i a r c o n t a d o r
( ) ”>R e i n i c i a r c o n t a d o r de C o n s u l t a s de
Malware</a></ l i >
<i n p u t i d=” s e s i o n u s e r ” type=” hidden ” name=”
s e s i o n ” v a l u e=”<?php echo $ s e s i o n −> g e t
( ’ u s e r ’ ) ;? > ” />
< l i ><a h r e f=” c e r r a r s e s i o n . php”>C e r r a r S e s i ón
</a></ l i >
</ul>
</ l i >
</ul>
</div ><!−−/.nav−c o l l a p s e −−>
</div>
</nav>
</header>
<!−− BOOTSTRAP NAVBAR −−>
<d i v c l a s s=” c o n t a i n e r ” s t y l e=” margin−top : 40 px ; ”>
<header c l a s s=” c c h e a d e r ”>
<h1><b>S i s t e m a de C o n s u l t a de Malware</b></h1>
</header>
<?php
$ f i l e = fopen ( ” /home/ s n o r t −cuckoo / E s c r i t o r i o /
Informacion Muestras . txt ” , ” r ” ) ;
if (! $file ){
242
echo ’<button c l a s s =”btn btn−primary ” type=”button ”
s t y l e =”margin−bottom : 10 px ; background−c o l o r
:#054586;” > V i s i t a s para c o n s u l t a de malware <
span i d=”c o u n t e r ” c l a s s =”badge”> ’ . $ SESSION [ ’
c o u n t e r ’ ] . ’</span></button><p a l i g n=c e n t e r ><br><
f o n t c o l o r =”r e d”><b>ERROR! </b></f o n t ></br></br>
No ha s i d o p o s i b l e l e e r e l a r c h i v o <b>”
I n f o r m a c i o n Muestras . t x t ”</b>.</br> Favor de
r e v i s a r su nombre y s u s p e r m i s o s . </p> ’ ;
} else {
$loop = 0;
echo ’<button c l a s s =”btn btn−primary ” type=”button ”
s t y l e =”margin−bottom : 10 px ; background−c o l o r
:#054586;” > V i s i t a s para c o n s u l t a de malware <
span i d=”c o u n t e r ” c l a s s =”badge”> ’ . $ SESSION [ ’
c o u n t e r ’ ] . ’</span></button><t a b l e c l a s s =” c e n t e r
t a b l e t a b l e −condensed t a b l e −r e s p o n s i v e t a b l e −
b o r d e r e d”>< t r c l a s s =”panel −d e f a u l t ” s t y l e =”border
−c o l o r : #054586; background−c o l o r : #054586; c o l o r :
w h i t e ;”><th>ID</th><th>Fecha de an á l i s i s </th><th>
Nombre muestra </th><th>SHA256</th><th>Tasa de
D e t e c c i ón de A n t i v i r u s ( %)</th><th>R e p u t a c i ón
V i r u s T o t a l (−100 a 1 0 0 )</th><th>Reporte de
Cuckoo</th><th>Enviar r e p o r t e por e−mail </th></t r
>’ ;
$c = ” ’ ” ;
while ( ! f e o f ( $ f i l e ) ) {
$ l o o p ++;
$line = fgets ( $file ) ;
$ f i e l d [ $ l o o p ] = explode ( ’ ! ’ , $ l i n e ) ;
$muestra = $c . trim ( $ f i e l d [ $ l o o p ] [ 1 ] ) . $c ;
$path = $c . trim ( $ f i e l d [ $ l o o p ] [ 5 ] ) . $c ;
i f ( $ f i e l d [ $ l o o p ] [ 0 ] == ’ ’ ) {
break ;
}
243
C. CÓDIGO FUENTE DEL SISTEMA DE CONSULTA DE MALWARE.
244
” muestra ” : $ ( ’#nombre muestra ’ ) . v a l ( ) ,
” e m a i l ” : $ ( ’#e m a i l ’ ) . v a l ( ) ,
” path ” : $ ( ’#r u t a ’ ) . v a l ( )
};
$ . ajax ({
data : parametro1 ,
url : ’ s e n d m a i l . php ’ ,
type : ’POST ’ ,
beforeSend : function () {
},
success : function ( response ) {
swal ( response )
}
}) ;
})
}
$ . ajax ({
data : u s u a r i o p h p ,
url : ’ r e i n i c i a r c o n t a d o r . php ’ ,
type : ’POST ’ ,
} ) . done ( f u n c t i o n ( msg ) {
<?php
$ SESSION [ ’ c o u n t e r ’ ] = 0 ;
?>
location . reload () ;
}) ;
}
</ s c r i p t >
245
C. CÓDIGO FUENTE DEL SISTEMA DE CONSULTA DE MALWARE.
</ f o o t e r >
</body>
</html>
<?php
}
?>
246
Archivo reiniciar contador.php
<?php
$ u s e r s e s s i o n = $ POST [ ’ s e s i o n u s e r ’ ] ;
$ c o n e x i o n = m y s q l i c o n n e c t ( ” l o c a l h o s t ” , ” r o o t ” , ”<Password r o o t MySQL>” , ”
usuario web ” ) ;
$ u p d a t e q u e r y = ”UPDATE u s u a r i o SET v i s i t c o u n t e r = ’0 ’ WHERE nombre=’” .
$user session . ” ’” ;
mysqli query ( $conexion , $update query ) ;
?>
Archivo sendmail.php
<?php
$ a r c h i v o a d j u n t o = $ POST [ ’ muestra ’ ] ;
$ m y f i l e = ” r e p o r t . html ” ;
$my name = ”<nombre>” ;
$my mail = ”<c o r r e o d e s d e donde s e e n v i a r án l o s c o r r e o s e l e c t r ó n i c o s >” ;
$ m y r e p l y t o = ”<c o r r e o h a c i a donde podr á s e r r e s p o n d i d o e l c o r r e o
e l e c t r ó n i c o e n t r a n t e >” ;
$my subject = ” $archivo adjunto ” ;
$my message = ” Reporte de l a muestra \” $ a r c h i v o a d j u n t o \” a n a l i z a d a con
Cuckoo SandBox . ” ;
$ m y n a m e f o l d e r = ’ Reporte . z i p ’ ;
$ m a i l t o = $ POST [ ’ e m a i l ’ ] ;
$ l i n k = $ POST [ ’ path ’ ] ;
$ a r c h i v e = $ SERVER [ ’DOCUMENT ROOT’ ] . $ l i n k ;
$ m y f i l e n a m e = ’ r e p o r t . html ’ ;
f u n c t i o n m a i l a t t a c h m e n t ( $ f i l e n a m e , $ m a i l t o , $ f r o m m a i l , $from name ,
$ r e p l y t o , $ s u b j e c t , $message , $ n a m e f o l d e r , $ f i l e , $ f i l e n a m e ,
$attached file ) {
i f ( f i l t e r v a r ( $ m a i l t o , FILTER VALIDATE EMAIL) ) {
247
C. CÓDIGO FUENTE DEL SISTEMA DE CONSULTA DE MALWARE.
$ z i p = new Z i p A r c h i v e ;
i f ( $ z i p −> open ( $ n a m e f o l d e r , Z i p A r c h i v e : : CREATE)!==TRUE) {
exit ( ” Imposible a b r i r e l archivo : $name folder ” ) ;
} else {
$ z i p −> a d d F i l e ( $ f i l e , $ f i l e n a m e ) ;
$ z i p −> c l o s e ( ) ;
}
$ f i l e = $name folder ;
$file size = filesize ( $file ) ;
$ h a n d l e = fopen ( $ f i l e , ” r ” ) ;
$ c o n t e n t = fread ( $handle , $ f i l e s i z e ) ;
fclose ( $handle ) ;
$ c o n t e n t = chunk split ( base64 encode ( $ c o n t e n t ) ) ;
$ u i d = md5( uniqid ( time ( ) ) ) ;
$ h e a d e r = ”From : ” . $from name . ” <” . $ f r o m m a i l . ”>\r \n” ;
$ h e a d e r .= ” Reply−To : ” . $ r e p l y t o . ” \ r \n” ;
$ h e a d e r .= ”MIME−V e r s i o n : 1 . 0 \ r \n” ;
$ h e a d e r .= ” Content−Type : m u l t i p a r t / mixed ; boundary=\”” . $ u i d . ” \”\
r \n\ r \n” ;
$ h e a d e r .= ” This i s a multi −p a r t message i n MIME format . \ r \n” ;
$ h e a d e r .= ”−−” . $ u i d . ” \ r \n” ;
$ h e a d e r .= ” Content−type : t e x t / p l a i n ; c h a r s e t=i s o −8859−1\ r \n” ;
$ h e a d e r .= ” Content−T r a n s f e r −Encoding : 7 b i t \ r \n\ r \n” ;
$ h e a d e r .= $message . ” \ r \n\ r \n” ;
$ h e a d e r .= ”−−” . $ u i d . ” \ r \n” ;
$ h e a d e r .= ” Content−Type : a p p l i c a t i o n / o c t e t −stream ; name=\”” .
$ f i l e . ” \”\ r \n” ;
$ h e a d e r .= ” Content−T r a n s f e r −Encoding : b a s e 6 4 \ r \n” ;
$ h e a d e r .= ” Content−D i s p o s i t i o n : attachment ; f i l e n a m e =\”” . $ f i l e . ”
\”\ r \n\ r \n” ;
$ h e a d e r .= $ c o n t e n t . ” \ r \n\ r \n” ;
$ h e a d e r .= ”−−” . $ u i d . ”−−” ;
i f ( mail ( $ m a i l t o , $ s u b j e c t , ” ” , $ h e a d e r ) ) {
248
echo ” El r e p o r t e de l a muestra \” $ a t t a c h e d f i l e \” ha s i d o
enviado exitosamente ! ” ;
unlink ( $ f i l e ) ;
} else {
echo ”ERROR! El c o r r e o no pudo s e r e n v i a d o . ” ;
}
} else {
echo ” D i r e c c i ón de e−m a i l no vá l i d a ! ” ;
}
}
?>
249
C. CÓDIGO FUENTE DEL SISTEMA DE CONSULTA DE MALWARE.
Archivo sesion.class.php
<?php
class sesion {
function construct () {
session start () ;
}
p u b l i c f u n c t i o n s e t ( $nombre , $ v a l o r , $ c o n t a d o r ) {
$ SESSION [ $nombre ] = $ v a l o r ;
$ SESSION [ ” c o u n t e r ” ] = $ c o n t a d o r ;
}
p u b l i c f u n c t i o n g e t ( $nombre ) {
i f ( i s s e t ( $ SESSION [ $nombre ] ) ) {
r e t u r n $ SESSION [ $nombre ] ;
} else {
return false ;
}
}
p u b l i c f u n c t i o n e l i m i n a v a r i a b l e ( $nombre ) {
unset ( $ SESSION [ $nombre ] ) ;
}
250
Archivo cerrarsession.php
<?php
r e q u i r e o n c e ( ” s e s i o n . c l a s s . php” ) ;
$ s e s i o n = new s e s i o n ( ) ;
$ u s u a r i o = $ s e s i o n −> g e t ( ” u s e r ” ) ;
i f ( $ u s u a r i o == f a l s e ) {
header ( ” L o c a t i o n : i n d e x . php” ) ;
} else {
$ u s u a r i o=$ s e s i o n −> g e t ( ” u s e r ” ) ;
$ s e s i o n −> t e r m i n a s e s i o n ( ) ;
header ( ” l o c a t i o n : i n d e x . php” ) ;
}
?>
251