Estudio de Caso: Profesional - Seguridad Informática

0

 


Análisis de Datos en Seguridad Informática

Enlace ChatGpt:  https://chat.openai.com/share/68c3b802-7508-4be5-a1b1-5f9c27e204a7

La seguridad informática se refiere a la protección de sistemas, redes y datos contra amenazas y ataques cibernéticos. Implica implementar medidas para prevenir, detectar y responder a posibles riesgos de seguridad.

La generación de análisis de datos desempeña un papel crucial en la seguridad informática al proporcionar insights a partir de la recopilación y evaluación de información relevante. Mediante el análisis de datos, se pueden identificar patrones, anomalías y tendencias que pueden indicar posibles amenazas, permitiendo a los profesionales de seguridad tomar decisiones informadas para fortalecer la defensa cibernética. En resumen, la combinación de seguridad informática y análisis de datos contribuye a salvaguardar la integridad, confidencialidad y disponibilidad de la información en entornos digitales.

Generar un conjunto de datos de seguridad informática puede ser un ejercicio interesante para analizar patrones maliciosos, evaluar medidas de seguridad y prevenir posibles vulnerabilidades. A continuación, te proporciono un script de Python que genera un conjunto de datos CSV con 100 registros de seguridad informática ficticios:

import csv
import random
from faker import Faker

fake = Faker()

# Crear el encabezado del CSV
header = ["Fecha y Hora", "IP de Origen", "IP de Destino", "Tipo de Evento", "Usuario", "Éxito/Fracaso", "Descripción Detallada"]

# Lista de tipos de eventos y usuarios ficticios
tipos_evento = ["Inicio de Sesión Exitoso", "Intento de Acceso No Autorizado", "Transferencia de Archivos", "Cambio de Contraseña"]
usuarios = ["usuario1", "usuario2", "admin", "guest"]

# Generar 100 registros de seguridad ficticios
registros = []
for _ in range(100):
    fecha_hora = fake.date_time_this_decade()
    ip_origen = fake.ipv4()
    ip_destino = fake.ipv4()
    tipo_evento = random.choice(tipos_evento)
    usuario = random.choice(usuarios)
    exito_fracaso = random.choice(["Éxito", "Fracaso"])
    descripcion_detallada = fake.sentence()

    registro = [fecha_hora, ip_origen, ip_destino, tipo_evento, usuario, exito_fracaso, descripcion_detallada]
    registros.append(registro)

# Escribir los registros en un archivo CSV
with open("dataset_seguridad_informatica.csv", mode="w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerow(header)
    writer.writerows(registros)

print("Dataset generado con éxito.")

Este script utiliza la biblioteca Faker para generar datos ficticios de manera realista. Puedes instalar la biblioteca Faker ejecutando pip install faker en tu entorno de Python si aún no la tienes instalada.

Ten en cuenta que estos datos son completamente ficticios y no deben utilizarse para realizar análisis de seguridad real. Además, este script puede necesitar ajustes según tus requisitos específicos.

Para realizar estas estadísticas y visualizaciones, puedes utilizar varias bibliotecas en Python, como pandas, matplotlib y seaborn. A continuación, te proporciono un script que realiza las estadísticas mencionadas y crea visualizaciones:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Cargar el conjunto de datos
df = pd.read_csv("dataset_seguridad_informatica.csv", parse_dates=["Fecha y Hora"])

# Frecuencia de Eventos
total_eventos = len(df)
frecuencia_eventos = df["Tipo de Evento"].value_counts()

# Usuarios Únicos
usuarios_unicos = df["Usuario"].nunique()
frecuencia_usuario = df["Usuario"].value_counts()

# Direcciones IP Únicas
ip_unicas = df[["IP de Origen", "IP de Destino"]].stack().nunique()
frecuencia_ip = pd.concat([df["IP de Origen"], df["IP de Destino"]]).value_counts()

# Tasa de Éxito/Fracaso
tasa_exito_fracaso = df["Éxito/Fracaso"].value_counts(normalize=True)

# Horarios de Mayor Actividad
df["Hora"] = df["Fecha y Hora"].dt.hour
horas_actividad = df["Hora"].value_counts().sort_index()

dias_semana_actividad = df["Fecha y Hora"].dt.day_name().value_counts()

# Top N Usuarios/Direcciones IP
top_n_usuarios = df["Usuario"].value_counts().head(5)
top_n_ip = pd.concat([df["IP de Origen"], df["IP de Destino"]]).value_counts().head(5)
# Duración de Sesiones
sesiones_exitosas = df[df["Éxito/Fracaso"] == "Éxito"]
duracion_promedio_sesiones = sesiones_exitosas.groupby("Usuario")["Fecha y Hora"].diff().mean()

# Patrones Temporales
patrones_temporales = df.resample("D", on="Fecha y Hora").size()

# Distribución de Tipos de Eventos
plt.figure(figsize=(10, 6))
sns.countplot(data=df, y="Tipo de Evento", order=frecuencia_eventos.index)
plt.title("Distribución de Tipos de Eventos")
plt.xlabel("Frecuencia")
plt.ylabel("Tipo de Evento")
plt.show()

# Tendencias de Éxito/Fracaso por Usuario
plt.figure(figsize=(12, 8))
sns.countplot(data=df, x="Fecha y Hora", hue="Éxito/Fracaso", palette="viridis")
plt.title("Tendencias de Éxito/Fracaso por Usuario")
plt.xlabel("Fecha y Hora")
plt.ylabel("Frecuencia")
plt.xticks(rotation=45)
plt.show()

# Frecuencia de Eventos por IP de Origen y Destino
plt.figure(figsize=(12, 8))
sns.countplot(data=df, x="IP de Origen", order=frecuencia_ip.index, palette="viridis")
plt.title("Frecuencia de Eventos por IP de Origen")
plt.xlabel("IP de Origen")
plt.ylabel("Frecuencia")
plt.xticks(rotation=45)
plt.show()

plt.figure(figsize=(12, 8))
sns.countplot(data=df, x="IP de Destino", order=frecuencia_ip.index, palette="viridis")
plt.title("Frecuencia de Eventos por IP de Destino")
plt.xlabel("IP de Destino")
plt.ylabel("Frecuencia")
plt.xticks(rotation=45)
plt.show()

Este script utiliza pandas para manipular y analizar datos, y seaborn y matplotlib para visualizar estadísticas. Asegúrate de tener estas bibliotecas instaladas (pip install pandas matplotlib seaborn) antes de ejecutar el script. Este es solo un ejemplo, y puedes ajustar y expandir el código según tus necesidades específicas.

1. Distribución de Tipos de Eventos:

  • Esta gráfica utiliza un gráfico de barras (countplot) para visualizar la frecuencia de cada tipo de evento en el conjunto de datos.
  • En el eje y, se encuentran los tipos de eventos (inicio de sesión exitoso, intento de acceso no autorizado, etc.).
  • En el eje x, se muestra la frecuencia de cada tipo de evento.


2. Tendencias de Éxito/Fracaso por Usuario:

  • Esta gráfica utiliza un gráfico de barras (countplot) para mostrar la tendencia de éxito y fracaso para cada usuario a lo largo del tiempo.
  • En el eje x, se encuentran las fechas y horas.
  • Las barras se dividen por colores para representar el éxito y el fracaso de los eventos.


3. Frecuencia de Eventos por IP de Origen y Destino:

  • Estas dos gráficas utilizan gráficos de barras (countplot) para mostrar la frecuencia de eventos para las direcciones IP de origen y destino.
  • En el eje x, se encuentran las direcciones IP.
  • En el eje y, se muestra la frecuencia de eventos para cada dirección IP.





4. Distribución de Tipos de Eventos por IP de Origen y Destino:

  • Esta gráfica utiliza un gráfico de barras (countplot) para mostrar la distribución de tipos de eventos para las direcciones IP de origen y destino.
  • Cada dirección IP tiene su propio gráfico con la frecuencia de cada tipo de evento.

5. Frecuencia de Actividad por Día de la Semana:

  • Esta gráfica utiliza un gráfico de barras (countplot) para mostrar la frecuencia de actividad para cada día de la semana.
  • En el eje x, se encuentran los días de la semana.
  • En el eje y, se muestra la frecuencia de eventos para cada día.

Estas gráficas son herramientas visuales que te permiten entender mejor la distribución y tendencias en tu conjunto de datos de seguridad informática. Puedes ajustar y personalizar estas visualizaciones según tus necesidades y preferencias específicas.

 

Sin comentarios