JA3 ha ido ganando cierta popularidad dentro de la comunidad de seguridad para señalar fácilmente herramientas conocidas o malware mediante una firma que puede generarse fácilmente a partir de los valores de seguridad de la capa de transporte (TLS) utilizados durante la comunicación que emplea dicho cifrado. Aunque las firmas JA3 son fáciles de usar y parecen una forma sencilla de que los defensores detecten comunicaciones maliciosas, pueden ser manipuladas con la misma facilidad para eludir la detección y mezclarse con el tráfico TLS/SSL normal.
En este artículo, empezaremos a desvelar algunos de los métodos que utilizan los servidores y agentes de comando y control (C2) para eludir la detección. Nos centraremos en las técnicas de evasión utilizadas por conocidos marcos C2 que utilizan varias técnicas para evadir la detección. Con respecto a las firmas JA3 específicamente, los desarrolladores de estas herramientas han realizado algunos esfuerzos para evitar la detección. Además, hay pruebas claras de que estas mismas técnicas de evasión están siendo utilizadas activamente por malware para eludir la detección.
Desentrañando JA3/S: una introducción
En primer lugar, vamos a resumir brevemente qué es JA3 y por qué se puede utilizar para detectar tráfico malicioso. JA3 es un método de huella digital del apretón de manos TLS que fue publicado por primera vez por John Althouse, Jeff Atkinson y Josh Atkins de Salesforce en 2017. El tráfico de Internet que implementa TLS transmitirá valores entre sí en un esfuerzo por establecer una conexión segura. Los siguientes valores se utilizan para formar un hash JA3 ( SSLVersion , Cipher, SSLExtension, EllipticCurve, EllipticCurvePointFormat) y para el hash JA3S(SSLVersion,Cipher,SSLExtension). Estos valores se transmiten en claro antes del cifrado para que el cliente y el servidor sepan qué tipo de cifrado pueden utilizar. Son la base de lo que se utiliza para formar un hash JA3/S. Estos valores pueden utilizarse para identificar ciertos tipos de tráfico malicioso cuando son fiables. Para una explicación más detallada puedes ver el post original de SalesForce.
Comprensión de la aleatorización JA3/S y el enmascaramiento de cifras
Como ya se ha mencionado, parte de la firma JA3/S se deriva del cifrado. La lista de cifrado se transmite durante la negociación de hola cliente/servidor. Un ejemplo de esto se puede ver en la imagen de una captura de paquete a continuación.

Durante este proceso, el servidor elegirá el cifrado más alto disponible que admitan ambos extremos de la conexión. Esto significa que para cada conexión realizada entre un extremo y un servidor, se esperaría que la firma JA3/S fuera la misma y diera como resultado la misma firma JA3/S. Sin embargo, al utilizar la aleatorización JA3/S, el servidor elegirá un cifrado aleatorio de la lista de cifrados admitidos. Sin embargo, al utilizar la aleatorización JA3/S, el servidor elegirá un cifrado aleatorio de la lista de cifrados admitidos. Al utilizar un cifrado diferente, el hash JA3/S que se deriva de estos valores acabará siendo diferente.
Para eludir la detección, los autores malware tendrán que manipular los valores TLS utilizados, que son la base de la firma JA3. De este modo, podrán eludir la detección. Una forma fácil de hacerlo es elegir aleatoriamente un conjunto de cifrado. Esta técnica se conoce como aleatorización JA3/S.
Una tendencia creciente: JA3/S en marcos C2
El equipo de investigación de Akamai ha compartido información al respecto. En resumen, los resultados de su investigación muestran que las huellas TLS saltaron de 18.652 huellas distintas a nivel mundial en agosto de 2018 a más de 1.300 millones a finales de febrero de 2019. Esto sugiere que tras la investigación y el interés en las huellas digitales JA3/S por parte de la comunidad de seguridad, los autores de malware y los controladores de bots implementaron técnicas para eludir las firmas TLS.
La aleatorización JA3/S/Cipher-Stunting también ha comenzado a introducirse en C2 Frameworks como Empire a partir de la versión maestra 3.0, según el registro de cambios de Github. La imagen de abajo muestra el código fuente de Empire GitHub, que destaca una muestra de cómo se puede lograr la aleatorización JA3.

Evadir la detección: Más de un enfoque
Como ocurre con todas las técnicas novedosas utilizadas en la comunidad de seguridad para identificar amenazas, los atacantes siempre han sido rápidos a la hora de cambiar de táctica para eludir las estrategias de detección. Aunque hemos visto que las herramientas del equipo rojo utilizan la aleatorización JA3 para frustrar la detección, existen otros métodos para hacer lo mismo. Como dice el adagio, "hay más de una forma de despellejar a un gato". Por ejemplo, la suplantación de JA3 puede hacerse imitando los valores TLS de los navegadores comunes o incluso utilizando el cliente HTTPS del sistema operativo subyacente para eludir la detección.
Conclusiones: El reto de la detección
Queda claro que con cualquier técnica que pueda ser utilizada para detectar "maldades" por los profesionales de la seguridad, los atacantes se adaptarán rápidamente para continuar operando sin ser detectados. Identificar C2 Frameworks con firmas JA3 se vuelve difícil cuando el Framework está implementando la aleatorización JA3/S u otra técnica. Las herramientas y técnicas de seguridad que utilizan los defensores deben ser muy flexibles y capaces de adaptarse rápidamente a los cambios. Si no lo hacen, el C2 seguirá eludiendo la detección y operando bajo el radar de los profesionales de la ciberseguridad. Las firmas JA3, incluso sin manipulación, son un indicador de baja fidelidad de la actividad maliciosa y las técnicas descritas en el post las hacen aún menos fiables debido a la facilidad con la que pueden manipularse.
Teniendo esto en cuenta, las firmas JA3 pueden utilizarse como indicador suplementario de compromiso, pero no debe confiarse demasiado en ellas debido a su baja fidelidad y a la facilidad con la que pueden ser manipuladas. La calidad de las detecciones basadas en firmas depende de la fiabilidad de los datos subyacentes y de su mantenimiento. Lo ideal sería que la detección de C2 utilizara una estrategia de detección de redes polifacética, ágil y capaz de generalizar. Por supuesto, este planteamiento requiere una inversión mucho mayor, pero a largo plazo dará sus frutos.
Echa un vistazo mi segundo blog en el que examino un método conocido como perfiles C2 maleables.