Este script sirve para monitorear todas las conexiones de red activas en tu computadora y verificar si las direcciones IP remotas a las que tu equipo está conectado son maliciosas o sospechosas, usando la API pública de VirusTotal. Además, te permite cerrar manualmente procesos (conexiones) que consideres peligrosos.
Es muy útil para auditorías de seguridad, análisis forense o simplemente para detectar malware o programas espía conectados a internet.
⸻
Requisitos Previos
Antes de ejecutar este script, asegúrate de tener: 1. Python 3.8+ instalado en tu sistema. 2. Las librerías necesarias:
pip install requests psutil
3. Una clave API de VirusTotal, que puedes obtener gratis creando una cuenta en:
https://www.virustotal.com/gui/join-us Luego la colocas en esta línea:
API_KEY = "TU_API_KEY_AQUI"
⸻
Cómo funciona cada parte
- Importaciones y configuración
import requests import psutil import os import platform import time
• requests: para hacer peticiones HTTP a la API de VirusTotal.
• psutil: permite obtener información sobre los procesos y conexiones de red del sistema.
• os y platform: sirven para ejecutar comandos del sistema (como kill o taskkill).
• time: se usa para introducir pausas y evitar el límite de peticiones de la API.
⸻
- Verificación de IP con VirusTotal
def verificar_ip_virustotal(ip):
Esta función consulta la API de VirusTotal y devuelve si una IP es segura, sospechosa o maliciosa.
Ejemplo de uso individual:
print(verificar_ip_virustotal("8.8.8.8"))
Cada consulta devuelve información basada en los últimos análisis públicos de la IP.
⸻
- Obtener conexiones activas
def obtener_conexiones():
Esta función analiza todas las conexiones de red abiertas por tu sistema. Usa psutil.net_connections(kind='inet') para obtener: • PID: ID del proceso (identificador único). • Proceso: Nombre del programa que abrió la conexión (por ejemplo, Chrome, Python, Discord). • Puerto local y remoto: Muestran la comunicación de red. • Dirección remota: IP y puerto del servidor al que estás conectado. • Estado: Muestra si la conexión está activa (ESTABLISHED), en espera, etc.
También llama a verificar_ip_virustotal() para saber si esa IP remota tiene reportes en VirusTotal.
Ejemplo de salida interna (diccionario):
{ "PID": 4123, "Proceso": "chrome.exe", "Puerto Local": 52344, "Dirección Remota": "142.250.72.78:443", "VirusTotal": "✅ Segura", "Estado": "ESTABLISHED" }
⸻
- Mostrar resultados en pantalla
def mostrar_conexiones():
Esta función imprime una tabla clara con todas las conexiones activas. Ejemplo de salida:
4123 chrome.exe 52344 142.250.72.78:443 ✅ Segura ESTABLISHED
2451 python.exe 51566 13.107.21.200:443
⸻
- Cerrar una conexión sospechosa
def cerrar_conexion(pid):
Permite finalizar un proceso completo (no una conexión individual, ya que eso depende del proceso). Funciona en: • Windows: usa taskkill /PID • Linux/Mac: usa kill -9
Ejemplo:
cerrar_conexion(4123)
Advertencia: Finalizar procesos del sistema o de red importantes puede cerrar tu conexión a Internet o aplicaciones críticas. Usa esta función solo para procesos sospechosos.
⸻
- Menú interactivo
def menu():
Este es el punto de entrada principal del script. El menú muestra las conexiones en tiempo real, y luego te pregunta si deseas cerrar alguna.
Ejemplo del flujo completo:
4123 chrome.exe 52344 142.250.72.78:443 ✅ Segura ESTABLISHED
2451 python.exe 51566 13.107.21.200:443
🔴 ¿Deseas cerrar alguna conexión? (s/n): s 📌 Ingresa el PID o PIDs separados por comas: 2451 ✅ Proceso con PID 2451 finalizado exitosamente. 👋 Saliendo del programa.
⸻
Cuándo usar este script
✅ Usos recomendados • Auditoría personal de red: Para revisar qué aplicaciones se conectan a Internet. • Análisis forense: Para descubrir conexiones sospechosas luego de una infección. • Ciberseguridad: Para detectar y detener procesos que envían datos a servidores desconocidos. • Monitoreo continuo: Puedes ejecutar este script cada cierto tiempo o automatizarlo con cron (Linux) o el Programador de Tareas (Windows).
⸻
Cómo ejecutarlo
Guarda el código como monitor_red.py y ejecútalo desde la terminal:
python monitor_red.py
Si deseas detenerlo manualmente, presiona Ctrl + C.
⸻
Mejoras posibles • Guardar los resultados en un archivo .csv o .json. • Agregar una opción para monitoreo en tiempo real cada 60 segundos. • Integrar un sistema de alertas por email o notificaciones si detecta IPs maliciosas. • Usar threading o asyncio para consultas más rápidas a VirusTotal.