Este proyecto es un monitor de tráfico de red que utiliza Scapy para capturar paquetes y un bot de Telegram para notificar eventos relevantes, como conexiones sospechosas o actividad en puertos importantes.
- Monitorea el tráfico entrante en puertos específicos.
- Filtra eventos repetidos mediante un sistema de cache.
- Envía alertas a un bot de Telegram con detalles del evento.
- Permite agregar excepciones (whitelist) a través de un bot para ignorar conexiones conocidas.
- Mantiene un registro interno de conexiones activas y sus duraciones.
- Python 3.6 o superior
- Bibliotecas de Python:
scapyrequestsjson
- Acceso de administrador para monitorear interfaces de red.
-
Clona este repositorio:
git clone https://github.com/FalconAkantor/WatchPort.git cd WatchPort -
Instala las dependencias necesarias:
pip install -r requirements.txt
-
Configura tu bot de Telegram:
- Obtén un token desde BotFather.
- Reemplaza
TELEGRAM_TOKENyCHAT_IDen el código por tu token y el ID del chat donde recibirás las alertas.
En la variable PUERTOS_SOSPECHOSOS, define los puertos que deseas monitorear:
PUERTOS_SOSPECHOSOS = [
21, #FTP
22, # SSH
23, # Telnet
80, # HTTP
443, # HTTPS
445, # Samba
8080, # HTTP alternativo
3389 # Escritorio remoto (RDP)
]El sistema incluye una lista blanca para ignorar conexiones conocidas. Esta lista se almacena en whitelist.json y se actualiza automáticamente al usar el bot de Telegram.
-
Ejecuta el script:
sudo python3 watchport.py
-
Recibirás alertas en Telegram con los detalles de cada conexión sospechosa, incluyendo:
- IP de origen
- IP de destino
- Puerto involucrado
- Tiempo de conexión
-
Si una conexión es segura, puedes agregarla a la whitelist desde el bot haciendo clic en el botón:
➕ Añadir a Whitelist
- Define las variables para el bot de Telegram, los puertos a monitorear y la duración de la caché, ademas de la IP local de tu máquina:
TELEGRAM_TOKEN = "<TU_TOKEN>" CHAT_ID = "<TU_CHAT_ID>" PUERTOS_SOSPECHOSOS = [22, 80, 443, ...] CACHE_EXPIRATION = timedelta(minutes=1) if paquete[IP].dst != "Tu maquina":
- Utiliza
scapy.sniffpara capturar paquetes en todas las interfaces:sniff(iface=None, prn=procesar_paquete, store=False, timeout=60)
- Extrae información como IPs de origen/destino y puerto.
- Filtra el tráfico según:
- Tráfico entrante a la máquina monitoreada.
- Puertos definidos en
PUERTOS_SOSPECHOSOS.
- Envía un mensaje al bot con detalles del evento:
enviar_alerta_con_boton(mensaje, callback_data)
- Incluye un botón para agregar la conexión a la whitelist.
- Las conexiones permitidas no generan alertas.
- La whitelist se guarda en un archivo JSON y se actualiza automáticamente desde el bot.
🚨 Tráfico Detectado 🚨
📅 Hora: 2025-01-26 14:45:25
📥 Origen: 192.168.1.10
📤 Destino: 192.168.1.42
🔐 Puerto: 443
🔄 Contador: 3
⏳ Tiempo conectado: 0d 0h 3m 12s
- Compatibilidad con tráfico IPv6.
- Opciones para filtrar eventos por geolocalización.
Las contribuciones son bienvenidas..
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más información.