Kits de phishing que utilizan operaciones bit a bit para eludir la detección
17 de marzo de 2026
Por David Johnson y el equipo de investigación de amenazas de Mimecast
- Los operadores de kits de phishing están aplicando técnicas de ofuscación mediante operaciones de control de bits para alterar la lógica tradicional del flujo de control
- Esta técnica aumenta considerablemente el tiempo de análisis al transformar las sentencias condicionales legibles en operaciones matemáticas comprimidas
- Los atacantes utilizan operaciones de bits para filtrar a los visitantes no deseados, entre los que se incluyen herramientas de seguridad, dispositivos móviles y navegadores sin interfaz gráfica.
Lo que estamos observando
Los autores de amenazas están utilizando operaciones de control de bits para ocultar páginas web que, en su mayoría, tienen como objetivo la recopilación de credenciales. En lugar de utilizar sentencias condicionales sencillas, están condensando múltiples comprobaciones en complejas operaciones bit a bit. Esto hace que el código sea considerablemente más difícil de analizar y aumenta el tiempo que necesitan los sistemas de detección para identificar estos kits.
Los atacantes utilizan estas operaciones por diversas razones, entre ellas filtrar a los visitantes no deseados —investigadores de seguridad, escáneres automatizados, dispositivos móviles, navegadores sin interfaz gráfica— y, al mismo tiempo, dificultar enormemente que los equipos de respuesta ante incidentes comprendan qué hace realmente el código cuando lo detectan.
Cómo funciona el flujo de control y por qué es importante
El flujo de control describe cómo un programa pasa de una instrucción a la siguiente. En términos sencillos, el flujo de control refleja los procesos de toma de decisiones humanos.
Piense en la decisión de llevarse un paraguas: esa acción depende de si llueve o no. Esta lógica se traduce en: SI está lloviendo fuera, ENTONCES llévese un paraguas.
En programación, esta misma lógica condicional determina qué acciones ejecutará el código en función del estado de las variables. El flujo de control abarca tres categorías principales:
- Instrucciones condicionales (if-else, switch): decisiones basadas en condiciones
- Estructuras de bucle (for, while, do-while): acciones repetidas
- Instrucciones de salto (break, continue, return, goto): redireccionamiento de la ejecución del programa
En el contexto de los kits de phishing, esto se refiere a una lógica condicional que determina cómo interactúa la página web con la víctima.
Cómo los atacantes interrumpen el flujo de control
Con el fin de ocultar el flujo de control, los autores de kits de phishing agrupan varias sentencias condicionales mediante operaciones binarias. En lugar de crear sentencias «if-else» independientes para cada condición, asignan valores binarios que pueden recuperarse y evaluarse de forma conjunta.
Ejemplo de situación:Un kit de phishing diseñado para atacar a los usuarios de ordenadores de sobremesa de una organización concreta podría bloquear las conexiones procedentes de dispositivos móviles. Este concepto se extiende a numerosas situaciones relacionadas con las características de los visitantes esperados frente a las de los inesperados.
El objetivo es limitar la interacción de personas o máquinas no deseadas, en particular de investigadores de seguridad y herramientas de análisis automatizadas. Además, estas comprobaciones supervisan el comportamiento de los usuarios en la página de phishing, detectando si la velocidad de introducción de texto parece poco natural o si el visitante intenta abrir las herramientas de desarrollo.
Mediante el uso de operaciones binarias, los kits de phishing dificultan considerablemente las labores de análisis, lo que complica a los equipos de seguridad la comprensión de la verdadera funcionalidad del código.
Tres niveles de ofuscación que estamos observando
Nivel 1: Código legible estándar
En las implementaciones típicas de los kits de phishing, las comprobaciones condicionales se presentan como código sencillo:Este código se entiende a la primera. Un analista puede identificar rápidamente que el kit comprueba la presencia de dispositivos móviles e indicadores de navegadores sin interfaz gráfica, utilizando sentencias «if» anidadas para gestionar cuatro combinaciones posibles. El flujo lógico sigue siendo transparente y fácil de seguir.
Nivel 2: Introducción a los indicadores de bits
El siguiente nivel de ofuscación incorpora operaciones con bits, al tiempo que se mantiene cierta legibilidad:
El código sigue siendo parcialmente legible, pero introduce la manipulación de bits. Cada condición establece un bit concreto dentro de la variable «flags ». Disponemos de 4 variables a las que podemos asignar valores binarios:
- isMobile = 0001 (bit 0)
- noCookies = 0010 (bit 1)
- hasAutomationAPIs = 0100 (bit 2)
- isHeadless = 1000 (bit 3)
Estas cuatro condiciones binarias dan lugar a 16 estados posibles (del 0000 al 1111), que representan que ninguna de las variables coincide, que todas las variables coinciden y cualquier combinación de ambas situaciones. Un analista aún puede identificar las comprobaciones condicionales, pero comprender cómo se utiliza la variable «flags» más adelante requiere una investigación más exhaustiva.
Nivel 3: Ofuscación avanzada
Esta etapa final del proceso de ofuscación recurre a una ofuscación intensa mediante matrices hexadecimales, nombres de variables poco habituales y operaciones binarias complejas:
Este código parece mucho más complejo, pero, en esencia, hace lo mismo que el segundo ejemplo (con algunas combinaciones ligeramente más amplias).
- Declara variables para comprobaciones como «isMobile», «Cookies» y «AutomationAPIs».
- Comprueba cada una de las variables, establece el bit correspondiente en 0 o 1 (verdadero o falso) y las guarda todas juntas en una nueva variable `_0xe`. La función también hace referencia a algunos valores que no se utilizan en ningún otro lugar; esto tiene como objetivo confundir a los analistas y hacerles perder más tiempo.
- Se realiza un «popcount» en la variable `_0x10`. Popcount es un método para contar cuántos «1» hay (esto se utilizará para determinar el número total de variables).
- La variable `_0x11` gestiona las combinaciones de 0000 a> 1111; aquí se analizan todas las combinaciones posibles.
- Las dos variables restantes, `_0x12` y `_0x13`, realizan lo que se ha comentado anteriormente: una comprueba si los bits de orden superior están a 1 y la otra analiza el valor en su conjunto para ver si supera una cantidad determinada.
La lógica subyacente a todos los ejemplos es similar: comprobar las características de los visitantes y decidir qué mostrar. Esa complejidad no tiene más fin que hacer perder tiempo a los analistas y dificultar la detección automática.
Lo que ocurre en la naturaleza
Según los ejemplos analizados por el equipo de investigación de amenazas de Mimecast, cuando se implementa en campañas que dan lugar a páginas destinadas a la recopilación de credenciales, esta lógica ofuscada determina principalmente si se muestra el formulario de phishing o si se redirige a contenido inofensivo.
Si el código detecta herramientas de automatización, navegadores sin interfaz gráfica, la ausencia de cookies o dispositivos móviles (en función del perfil objetivo), redirige de forma silenciosa al visitante a un sitio web legítimo, sin dejar rastro alguno de intención maliciosa. Los investigadores de seguridad que analizan la URL encuentran contenido inofensivo, mientras que los destinatarios previstos ven el formulario destinado a la recopilación de credenciales.
Esta presentación selectiva prolonga considerablemente la vida útil de las campañas de phishing, ya que los sistemas de seguridad automatizados no logran identificar el comportamiento malicioso durante los análisis iniciales.
Destinatarios
Técnica globalobservada en múltiples familias de kits de phishing dirigidos a diversos sectores y regiones
Aspectos a tener en cuenta en la detección
El uso de operaciones bit a bit en un sitio web puede considerarse inusual en el contexto de una página web típica. Cuando se observen operaciones bit a bit, se deben tener en cuenta otros indicadores (antigüedad del dominio, certificado, datos de envío, etc.) a la hora de determinar si un sitio web es legítimo o no.
Mantenga su ventaja en materia de inteligencia sobre amenazas
Únase a los miles de profesionales de la seguridad que confían en nuestras alertas seleccionadas, nuestros análisis de expertos y los indicadores de compromiso (IOC) de nuestras campañas para defenderse de las últimas amenazas cibernéticas.
El registro se ha realizado correctamente
Le agradecemos que se haya suscrito para recibir actualizaciones sobre nuestras notificaciones de inteligencia sobre amenazas.
¡Nos pondremos en contacto con usted!