Data Structures

Proyecto: El ataque de los bots

Objetivo

Durante esta actividad, los alumnos serán capaces de:


Subcompetencias a demostrar con esta evidencia

Competencia Subcompetencia
y nivel de dominio
SICT0300:
Solución de problemas con computación

Soluciona problemas de diferentes niveles de complejidad mediante la aplicación de metodologías computacionales y de tecnologías de información en ambientes controlados y de incertidumbre.

SICT0301B:
Evaluación del problema

Evalúa los componentes que integran una problemática de acuerdo a principios y procesos computacionales.

SICT0302B:
Toma de decisiones

Toma decisiones en la solución de problemas en condiciones de incertidumbre y diferentes niveles de complejidad con base a metodologías de investigación y de cómputo.

SICT0303B:
Implementación de acciones

Implementa acciones científicas e ingenieriles o procesos computacionales que cumplen con el tipo de solución requerida.


Introducción

De acuerdo al FBI los ataques cibernéticos a través de redes de bots han proliferado al grado de provocar grandes afectaciones en todos los sectores. [CONDLIFFE] reportó que “el FBI cerró una enorme botnet, pero quedan muchos más. Una nueva ley ha permitido a los federales declarar la guerra a una de las amenazas de ciberseguridad más perniciosas del mundo”.

Un forma de detectar este tipo de situaciones es a través de la recopilación de toda la información pertinente que nos permitan hacer búsquedas optimizadas para la detección oportuna de accesos maliciosos a través de redes de bots.

Referencias

[CONDLIFFE]
Jamie Condliffe. The FBI Shut Down a Huge Botnet, but There Are Plenty More Left. Recuperado el 11 de agosto de 2020 de https://www.technologyreview.com/.

Descripción

En los equipos de dos personas ya conformados, diseñar e implementar una aplicación en C++ que reciba como argumento de la línea de comando el nombre de un archivo de bitácora (log) de un servidor con información sobre intentos de accesos inválidos (ver el formato de los archivos de bitácoras y ejemplos de archivos de bitácoras). Posteriormente, debe abrir y leer el contenido completo de dicho archivo y desplegar en la salida estándar las respuestas a las siguientes cuatro preguntas:

  1. ¿Cuáles son las cinco direcciones IP (sin el importar el número de puerto) que tuvieron más accesos ilegales?

  2. ¿Con qué frecuencia aparecen cada uno de los distintos mensajes de error (razón de la falla)?

  3. ¿Cuántos números de puertos distintos fueron atacados en total?

  4. ¿En qué semana se detectaron una mayor cantidad de accesos ilegales? Se puede suponer que: 1) una semana inicia el día lunes y termina el domingo, y 2) las fechas de los archivos de bitácoras corresponden al año 2020.

Se debe reflexionar y seleccionar de manera muy consciente las estructuras de datos y algoritmos a utilizar para responder a cada una de las preguntas anteriores. En una actividad posterior (póster argumentativo de reflexión) deberán justificar el porqué de cada una de las decisiones que tomaron.

Está permitido usar en el programa cualquiera de los contenedores y algoritmos provistos por la biblioteca estándar de C++. También está permitido usar implementaciones propias o vistas en clase de las estructuras de datos y algoritmos que consideren convenientes. Recuerden que cualquier decisión tomada deberá contar con una justificación adecuada, tomando en cuenta principalmente la complejidad del tiempo de los algoritmos seleccionados.

Cualquier detalle no mencionado aquí de manera explícita deberá ser resuelto según el criterio de cada equipo.


Formato de los archivos de bitácoras

Cada línea de los archivos de bitácoras está compuesto de los siguientes elementos separados entre sí por un espacio en blanco:

Ejemplo:

Aug 04 03:18:56 200.40.196.20:8066 Illegal user

Aquí se indica que el 4 de agosto a las 3 de la mañana con 18 minutos y 56 segundos hubo un acceso fallido debido a un usuario ilegal el cual llegó de la dirección IP 200.40.196.20 en el número de puerto 8066.


Ejemplos de archivos de bitácoras

¿Qué se debe entregar?

Se debe colocar en un comentario en la parte superior de cada archivo fuente la información personal de los autores (matrícula y nombre). Todos los archivos del proyecto (excepto el ejecutable) deben colocarse dentro de un archivo ZIP llamado proyecto_integrador.zip el cual se debe entregar como se indica a continuación.

Upload Instructions

To deliver the proyecto_integrador.zip file, please provide the following information:

Request PIN

Solo es necesario que lo entregue un miembro del equipo.

La fecha límite es el martes 30 de noviembre.