DEV Community

LeoJulieta
LeoJulieta

Posted on

Phishing IA en WhatsApp: Detecta y Bloquea el Fraude en 5 Pasos

Phishing con IA en WhatsApp: cómo detectarlo y bloquearlo paso a paso

Denuncias de medios latinos, datos reales y scripts gratuitos


Introducción

En los últimos meses WhatsApp se ha convertido en el nuevo campo de batalla del phishing impulsado por IA. Los delincuentes combinan la enorme base de usuarios de la app con modelos de lenguaje y síntesis de voz para crear mensajes de texto y audios que suenan idénticos a una conversación real. El País, La Nación y El Comercio ya han publicado casos en los que familias enteras recibieron “llamadas” de supuestos bancos con voces generadas por IA que pedían datos de acceso.

Si buscas en Google Trends la frase “WhatsApp phishing IA” verás un pico de búsquedas que supera el 300 % respecto al año anterior. Eso indica que la amenaza es real y que necesitas herramientas prácticas hoy mismo para no ser la próxima víctima.


1. ¿Cómo funciona un bot de phishing en WhatsApp?

Paso Qué hace el atacante Herramientas típicas
1️⃣ Compra o alquila números de teléfono virtuales (Twilio, MessageBird). API de WhatsApp Business no oficial.
2️⃣ Genera el contenido del mensaje con un LLM (ChatGPT‑4, Claude, Gemini). Prompt: “Escribe un mensaje de urgencia de un banco que solicita el número de tarjeta”.
3️⃣ Convierte el texto en audio usando TTS de alta calidad (ElevenLabs, Azure Speech). Voz neutra, entonación constante.
4️⃣ Envía el mensaje o audio a cientos de contactos mediante scripts automatizados. Python + Selenium o PyWhatKit.
5️⃣ Incluye un enlace acortado a una página de phishing que replica el portal del banco. Bitly + página estática en Netlify.

El resultado: un mensaje que parece legítimo, con una voz “humana” y un enlace que lleva a una página de captura de credenciales.


2. Señales de alerta que puedes detectar en segundos

Tipo Señal concreta Qué hacer
Audio Pausas perfectamente uniformes, ausencia de “um/eh”, entonación plana. Usa Whisper (CLI) para transcribir y buscar palabras raras: whisper audio.ogg --model base.
Texto Errores de gramática “urgente, favor de verificar su cuenta”, uso excesivo de mayúsculas. Ejecuta python detect_phish.py "texto del mensaje" (ver código abajo).
Enlace URL acortada, dominio que no coincide con el banco (e.g., bit.ly/xyz). Pega la URL en VirusTotal o usa curl -I <url> para ver la redirección.
Remitente Número desconocido que no está en tu agenda y que nunca ha escrito antes. Bloquéalo y reporta a WhatsApp (Reportar > Spam).

3. Código práctico: filtro de phishing en tiempo real

A continuación tienes un script Python totalmente funcional que puedes ejecutar en tu PC o Raspberry Pi para analizar cada mensaje entrante y enviar una alerta a Telegram.

# phishing_filter.py
import re, json, requests
from pathlib import Path
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression

# 1️⃣ Cargar modelo entrenado (puedes usar el dataset de Kaggle "whatsapp_phishing")
MODEL_PATH = Path("model.pkl")
vectorizer = TfidfVectorizer(max_features=5000, ngram_range=(1,2))
clf = LogisticRegression(max_iter=1000)

if MODEL_PATH.exists():
    import joblib
    clf, vectorizer = joblib.load(MODEL_PATH)
else:
    raise FileNotFoundError("Entrena el modelo primero (ver README).")

# 2️⃣ Función de detección
def is_phish(text: str) -> bool:
    X = vectorizer.transform([text])
    prob = clf.predict_proba(X)[0,1]
    return prob > 0.85   # umbral ajustable

# 3️⃣ Envío de alerta a Telegram
TELEGRAM_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "YOUR_CHAT_ID"
def telegram_alert(msg):
    url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
    requests.post(url, data={"chat_id": CHAT_ID, "text": msg})

# 4️⃣ Simulación de lectura de mensajes (reemplaza con la API que uses)
def read_new_messages():
    # Ejemplo: leer de un archivo JSON exportado de WhatsApp
    with open("new_messages.json") as f:
        return json.load(f)

for m in read_new_messages():
    if is_phish(m["body"]):
        telegram_alert(f"⚠️ Posible phishing detectado:\n{m['body']}\nDe: {m['sender']}")
Enter fullscreen mode Exit fullscreen mode

Cómo usarlo

  1. Instala dependencias
   pip install scikit-learn pandas joblib requests
Enter fullscreen mode Exit fullscreen mode
  1. Entrena el modelo (un script train.py está en el repo).
  2. Ejecuta python phishing_filter.py cada vez que exportes los chats o conecta el script a la API no oficial de WhatsApp Business para que procese los mensajes en tiempo real.

4. Bloqueo automático con la API no oficial de WhatsApp Business

Si prefieres una solución “plug‑and‑play”, sigue estos pasos (requiere Node.js):

npm i @open-wa/wa-automate
Enter fullscreen mode Exit fullscreen mode
// bot.js
const { create, Client } = require('@open-wa/wa-automate')
const axios = require('axios')

create().then(client => start(client))

function start(client) {
  client.onMessage(async msg => {
    // 1️⃣ Detectar enlaces sospechosos
    const urlRegex = /(https?:\/\/[^\s]+)/g
    const urls = msg.body.match(urlRegex) || []

    // 2️⃣ Si hay URL acortada, expandirla
    for (let u of urls) {
      if (u.includes('bit.ly') || u.includes('tinyurl.com')) {
        const resp = await axios.get(`https://unshorten.me/json/${u}`)
        if (resp.data.success && /bank|login/.test(resp.data.destination)) {
          await client.sendText(msg.from, '⚠️ Enlace sospechoso detectado y bloqueado.')
          await client.deleteMessage(msg.id, true)
          return
        }
      }
    }

    // 3️⃣ Analizar texto con un endpoint de detección (puedes usar el script Python vía HTTP)
    const phish = await axios.post('http://localhost:8000/predict', {text: msg.body})
    if (phish.data.phish) {
      await client.sendText(msg.from, '⚠️ Mensaje de posible phishing bloqueado.')
      await client.deleteMessage(msg.id, true)
    }
  })
}
Enter fullscreen mode Exit fullscreen mode

Este bot elimina automáticamente los mensajes que contienen enlaces acortados o que superan el umbral de riesgo del modelo Python.


5. Buenas prácticas para usuarios y organizaciones

Acción Por qué ayuda Cómo implementarla
Activar 2FA en todas las cuentas Incluso si roban la contraseña, el segundo factor bloquea el acceso. Usa autenticadores como Authy o Google Authenticator.
Verificar siempre la URL del banco Los atacantes usan dominios parecidos (bank-login.com). Marca como favorito el sitio oficial y accede siempre desde él.
Desactivar la previsualización de enlaces en WhatsApp Evita que se cargue contenido malicioso sin que lo veas. Ajustes → Chats → Desactivar “Vista previa de enlaces”.
Mantener actualizado el sistema y la app Las vulnerabilidades de WhatsApp se parchean frecuentemente. Habilita actualizaciones automáticas.
Reportar mensajes sospechosos WhatsApp usa los reportes para mejorar sus filtros. En el chat → Más opciones → Reportar.

6. Comparativa de soluciones (DIY vs. comerciales)

Solución Precio Nivel de automatización Necesita código Soporte Comentario
Script Python + Telegram Gratis Medio (requiere ejecución manual) Comunidad GitHub Ideal para usuarios técnicos.
Bot Node.js con API no oficial Gratis Alto (filtra en tiempo real) Comunidad Riesgo de bloqueo de cuenta por WhatsApp.
Cofense PhishMe (enterprise) $15 USD/usuario/mes Muy alto No Soporte 24/7 Enfocado a empresas, incluye capacitación.
**Meta “Whats

Herramienta mencionada: Groq Cloud

Top comments (0)