Código equipo azul y rojo
Y seguí preguntando a chatgpt y me volvió a responder Diez ejemplos adicionales de código que podrían ser útiles en un contexto de ciberseguridad, relacionados con diversas tareas para el Equipo Rojo (pentesters) y el Equipo Azul (defensores). Cada ejemplo está descrito para entender su función y cómo se relaciona con la seguridad de la información.
---
### 1. Escaneo de Puertos Abiertos (Python) Este script utiliza la biblioteca socket para escanear puertos abiertos en un servidor específico.
```python import socket
def escanear_puertos(host): print(f"Escaneando puertos abiertos en {host}...") for puerto in range(1, 1024): # Escaneo básico en puertos del 1 al 1023 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(0.5) resultado = sock.connect_ex((host, puerto)) if resultado == 0: print(f"Puerto {puerto} está abierto") sock.close()
escanear_puertos("192.168.1.1") ```
Descripción: Este script ayuda al Equipo Rojo a identificar puertos abiertos en una máquina, lo cual es un primer paso para detectar servicios vulnerables en un objetivo.
---
### 2. Generación de Hash para Contraseñas (Python) Este código genera un hash seguro para una contraseña usando bcrypt.
```python import bcrypt
def generar_hash(password): password_bytes = password.encode('utf-8') hashed = bcrypt.hashpw(password_bytes, bcrypt.gensalt()) return hashed
print(generar_hash("mi_contraseña_segura")) ```
Descripción: El Equipo Azul puede usar este script para almacenar contraseñas de manera segura en una base de datos, asegurándose de que los datos de autenticación no sean almacenados en texto plano.
---
### 3. Autenticación de Dos Factores (Python) Ejemplo de generación de un código OTP para 2FA (Autenticación de Dos Factores) con la biblioteca pyotp.
```python import pyotp
# Generar una clave secreta clave_secreta = pyotp.random_base32() totp = pyotp.TOTP(clave_secreta)
# Generar un código OTP print("Código OTP:", totp.now()) ```
Descripción: Este código puede integrarse en un sistema de autenticación que use 2FA, añadiendo una capa adicional de seguridad para proteger las cuentas de los usuarios.
---
### 4. Detección de Cambios en Archivos (Python) Utilizando hashlib para verificar cambios en archivos críticos del sistema.
```python import hashlib
def hash_archivo(ruta_archivo): hasher = hashlib.sha256() with open(ruta_archivo, 'rb') as archivo: contenido = archivo.read() hasher.update(contenido) return hasher.hexdigest()
print(hash_archivo("archivo_importante.txt")) ```
Descripción: Este script es útil para el Equipo Azul, ya que permite verificar la integridad de archivos críticos, asegurándose de que no hayan sido alterados por agentes externos.
---
### 5. Prevención de Ataques de Fuerza Bruta (Python) Implementación de un límite de intentos de inicio de sesión.
```python intentos_fallidos = {}
def iniciar_sesion(usuario, contrasena): max_intentos = 5 if intentos_fallidos.get(usuario, 0) >= max_intentos: print("Cuenta bloqueada. Demasiados intentos fallidos.") return False # Suponer que la contraseña es "segura" if contrasena == "segura": print("Inicio de sesión exitoso") intentos_fallidos[usuario] = 0 return True else: intentos_fallidos[usuario] = intentos_fallidos.get(usuario, 0) + 1 print("Contraseña incorrecta") return False
iniciar_sesion("usuario1", "incorrecta") ```
Descripción: Esto ayuda al Equipo Azul a protegerse de ataques de fuerza bruta al limitar el número de intentos de inicio de sesión.
Recomendado por LinkedIn
---
### 6. Enumeración de Usuarios en Servicios de Red (Python) Con la biblioteca paramiko, se verifica la existencia de un usuario en un servicio SSH.
```python import paramiko
def verificar_usuario_ssh(host, usuario): cliente = paramiko.SSHClient() cliente.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: cliente.connect(host, username=usuario, password="intento_incorrecto") except paramiko.AuthenticationException: print(f"Usuario {usuario} parece existir en {host}") except: print("Conexión fallida o usuario inexistente")
verificar_usuario_ssh("192.168.1.1", "root") ```
Descripción: Esto permite al Equipo Rojo identificar si un usuario específico existe en el sistema, lo cual puede ser un vector de ataque en redes.
---
### 7. Escaneo de Vulnerabilidades con Nmap (Bash) Ejecutar un escaneo de vulnerabilidades con Nmap desde un script de Bash.
```bash #!/bin/bash nmap -sV --script=vuln 192.168.1.1 ```
Descripción: Este script ejecuta un escaneo de servicios y busca vulnerabilidades conocidas en un sistema específico, facilitando la identificación de problemas de seguridad en servidores o dispositivos de red.
---
### 8. Sistema de Detección de Intrusos Simple (Python) Monitoreo de conexiones sospechosas con psutil.
```python import psutil
def detectar_conexiones_sospechosas(): conexiones = psutil.net_connections(kind="inet") for conexion in conexiones: if conexion.status == "ESTABLISHED": print(f"Conexión establecida: {conexion.laddr} -> {conexion.raddr}")
detectar_conexiones_sospechosas() ```
Descripción: El Equipo Azul puede usar este script para detectar conexiones activas y verificar si son legítimas o si podrían indicar actividad sospechosa.
---
### 9. Automatización de Copias de Seguridad (Python) Script para realizar copias de seguridad de archivos importantes.
```python import shutil import os from datetime import datetime
def respaldo(archivo): fecha = datetime.now().strftime("%Y%m%d%H%M%S") shutil.copy2(archivo, f"{archivo}_{fecha}.bak")
respaldo("archivo_importante.txt") ```
Descripción: Automatizar las copias de seguridad ayuda al Equipo Azul a preservar la integridad de los datos críticos en caso de un ataque o falla del sistema.
---
### 10. Escaneo de Seguridad en Aplicaciones Web (SQL Injection Test) (Python) Prueba de inyección SQL básica para una aplicación web.
```python import requests
def probar_inyeccion_sql(url): payload = "' OR '1'='1" response = requests.get(f"{url}?usuario={payload}") if "error" not in response.text: print("Posible vulnerabilidad de inyección SQL") else: print("No se encontró vulnerabilidad")
probar_inyeccion_sql("http://localhost/login") ```
Descripción: Este script automatiza una prueba para identificar vulnerabilidades de inyección SQL en aplicaciones web, una herramienta esencial para el Equipo Rojo en pruebas de penetración.
---
Estos ejemplos representan funciones clave tanto para la defensa como para la penetración en sistemas de seguridad de la información. Aportan un enfoque práctico a tareas que pueden encontrarse en el día a día de un especialista.
Autor Donal Sandro Noblejas Huaman Lima Perú