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']}")
Cómo usarlo
- Instala dependencias
pip install scikit-learn pandas joblib requests
-
Entrena el modelo (un script
train.pyestá en el repo). -
Ejecuta
python phishing_filter.pycada 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
// 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)
}
})
}
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) | Sí | Comunidad GitHub | Ideal para usuarios técnicos. |
| Bot Node.js con API no oficial | Gratis | Alto (filtra en tiempo real) | Sí | 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)