Hola a todos Quedan menos de diez días para el comienzo del curso de
"Ingeniería inversa" . En este sentido, queremos compartir otra traducción interesante sobre el tema. Vamos!

Breve reseña

La imagen de las amenazas está cambiando rápidamente: constantemente aparecen nuevos ciberataques y los antiguos se vuelven más sofisticados. En estas circunstancias, los profesionales de seguridad enfrentan desafíos cada vez más complejos. Todos los días, tienen que procesar y analizar millones de muestras de malware previamente desconocido y completamente nuevo, desarrollar firmas antivirus efectivas para describir familias enteras de malware y proporcionar escalabilidad de herramientas a medida que aumenta el número de muestras para análisis. Al mismo tiempo, es necesario tener en cuenta los recursos limitados para las herramientas de automatización de análisis de malware. Para ayudar a los profesionales de TI a manejar estos diversos desafíos, Talos ofrece una nueva plataforma de código abierto llamada BASS.
BASS (leído como "bajo") es un marco para generar automáticamente firmas antivirus basadas en muestras de grupos de código malicioso formados previamente. Su objetivo es reducir el consumo de recursos por el núcleo ClamAV al aumentar la proporción de firmas basadas en plantillas en relación con las firmas hash, y simplificar el trabajo de los analistas que desarrollan firmas basadas en plantillas. Con el soporte de contenedores Docker, el marco escala bien.
Vale la pena señalar que hasta ahora solo la versión alfa de BASS está disponible y queda mucho por finalizar. Este proyecto tiene un código fuente abierto, y estamos trabajando activamente en él, por lo que estaremos encantados de recibir cualquier comentario de la comunidad y recomendaciones para su mejora. El código fuente de BASS está disponible
aquí .
El proyecto BASS se anunció en 2017 en la conferencia
REcon en Montreal, Canadá.
Relevancia
Los especialistas de Talos reciben más de 1.5 millones de muestras únicas diariamente. En su mayor parte, se relacionan con amenazas conocidas y son eliminadas inmediatamente por un escáner de malware (ClamAV). Sin embargo, después del escaneo, hay muchos archivos que aún necesitan un análisis más detallado. Los ejecutamos en el sandbox y realizamos análisis dinámicos, lo que nos permite separarlos en otros maliciosos y seguros. Procesamos las muestras de malware seleccionadas en esta etapa para crear firmas de ClamAV basadas en ellas, lo que ayudará a filtrar aún más estas amenazas en una etapa anterior, durante el escaneo.

Durante tres meses, de febrero a abril de 2017, se agregaron 560,000 nuevas firmas a la base de datos ClamAV, es decir, un aumento de 9,500 firmas por día. Una parte importante de ellos los recibimos automáticamente en forma de firmas hash. Dichas firmas tienen un inconveniente significativo en comparación con las firmas de plantilla o bytecode (estos son otros dos tipos compatibles con el núcleo ClamAV): una firma hash corresponde a un solo archivo. Además, un aumento en el número de firmas hash conduce al hecho de que la base de datos ClamAV ocupa más memoria. Es por eso que preferimos las firmas basadas en patrones. Son mucho más simples y rápidos de administrar que el código de bytes, y al mismo tiempo le permiten describir grupos completos de archivos.
Bajo
El marco BASS está diseñado para facilitar la creación de plantillas basadas en firmas ClamAV. Los genera automáticamente, procesando segmentos de código binario ejecutable.

BASS toma como base grupos de códigos maliciosos, pero no incluye los medios para crearlos. Debido a esto, la tecnología sigue siendo conveniente y flexible. Intencionalmente hicimos que la interfaz de entrada fuera universal para que fuera fácil adaptarse a las nuevas fuentes de clústeres. Ahora usamos varias de esas fuentes, incluidos los clústeres basados en indicadores de compromiso (IoC) de nuestro entorno limitado, hashing estructural (cuando tenemos un archivo ejecutable intencionalmente malicioso y estamos buscando muestras adicionales que tengan una estructura similar) y malware recibido de campañas de spam.
En la primera etapa, las instancias maliciosas pasan a través de los desempaquetadores del núcleo ClamAV. Puede descomprimir archivos de varios formatos y archivos ejecutables comprimidos (por ejemplo, UPX), y también extraer objetos incrustados (como archivos EXE dentro de documentos de Word). Los artefactos recibidos se analizan cuidadosamente, se recopila información. Ahora para la siguiente etapa, el filtrado, usamos sus tamaños y la cadena mágica UNIX.
Luego se filtra el clúster de código malicioso. Si los archivos no cumplen con los requisitos de BASS (mientras que la plataforma funciona solo con archivos ejecutables de PE, pero no es difícil agregar soporte para los archivos binarios ELF y MACH-O), se eliminan del clúster o, si quedan muy pocos objetos, el clúster se rechaza por completo.
El clúster filtrado pasa a la fase de generación de firma. Primero, los archivos binarios se desmontan. Para hacer esto, utilizamos IDA Pro, pero se puede reemplazar fácilmente con otro desensamblador con capacidades similares, por ejemplo, radare2.

Después del desmontaje, es necesario identificar un código común en las muestras para generar firmas sobre la base. Este paso es importante por dos razones. Primero, el algoritmo de generación de firma requiere recursos computacionales significativos y funciona mejor con segmentos de código cortos. En segundo lugar, es preferible obtener firmas de muestras de código que sean similares no solo sintácticamente, sino también semánticamente. Para comparar el código, utilizamos la utilidad BinDiff. Una vez más, también es fácil de reemplazar, y en el futuro podremos integrar otras utilidades en el marco para comparar.
Si el clúster es pequeño, BinDiff compara cada ejecutable con todos los demás. De lo contrario, el alcance de la comparación se reduce, de lo contrario, el proceso puede ser demasiado largo. En base a los resultados obtenidos, se construye un gráfico donde los vértices denotan las funciones y los bordes indican su similitud. Para encontrar una buena función general, es suficiente encontrar un subgrafo conectado con un alto índice de similitud general.

El subgrafo ƒ1, ƒ2, ƒ4, ƒ6 con altos indicadores de similitud de vértices (ver la figura anterior) es un excelente candidato para el papel de una función común.
Tan pronto como se reclutan varios de estos candidatos, los comparamos con la lista blanca para evitar crear firmas basadas en las funciones ordinarias de las bibliotecas asociadas estáticamente con la muestra. Para hacer esto, las funciones se envían a la instancia de
Kam1n0 , cuya base de datos hemos llenado previamente con funciones de muestras obviamente puras. Si se detecta un clon de cualquier función, el procedimiento de selección de subgrafo se repite para seleccionar el más adecuado de los restantes. Si la verificación no revela nada, el conjunto de funciones se pasa a la siguiente etapa.
Entonces la generación de la firma comienza directamente. Las firmas ClamAV basadas en plantillas están diseñadas para detectar subsecuencias en datos binarios. Por lo tanto, aplicamos a todas las funciones extraídas el algoritmo de búsqueda para la subsecuencia común más grande (LCS, la subsecuencia común más larga).
Desde el punto de vista computacional, este algoritmo es bastante costoso incluso para dos muestras y es notablemente más difícil para varias, por lo que utilizamos su variedad heurística, descrita por
Christian Blichmann . El resultado podría verse más o menos así:

Finalmente, debe probarlo antes de publicar la firma. Verificamos automáticamente la firma utilizando nuestro conjunto de pruebas para detectar falsos positivos. Para una mayor confiabilidad, utilizamos Sigalyzer, una nueva característica de nuestro complemento
CASC IDA Pro ClamAV para generar y analizar firmas (se actualizará más adelante). Sigalyzer marca secciones del binario que coinciden con la firma ClamAV que funcionó para él. Por lo tanto, se forma una representación visual visual de la firma.
Arquitectura
BASS se implementa como un grupo de contenedores Docker. El marco está escrito en Python e interactúa con todas las herramientas necesarias a través de los servicios web. La arquitectura fue creada por analogía con el proyecto
VxClass , que también generó firmas ClamAV usando IDA Pro y BinDiff, pero luego se cerraría y, a diferencia de BASS, no sería accesible al público en general.

Limitaciones
BASS funciona exclusivamente con ejecutables binarios, ya que la firma se genera a partir del código de muestra. Además, solo analiza ejecutables x86 y x86_64. El soporte para otras arquitecturas puede aparecer en el futuro.
Hasta ahora, BASS no se adapta bien a los virus de archivos, que incrustan fragmentos de código pequeños y muy diferentes en objetos infectados, y con puertas traseras, que consisten principalmente en código binario inofensivo (a menudo robado), que se complementa con funciones maliciosas. Estamos luchando con estas deficiencias trabajando para optimizar la fase de agrupamiento.
Y una vez más, queremos recordarle que BASS se encuentra en la etapa de prueba alfa, y hasta ahora no todo funciona sin problemas. Pero esperamos beneficiar a la comunidad al desarrollar este marco como un proyecto de código abierto, y estaremos encantados de cualquier idea y crítica.
App
La diferencia entre la subcadena común más grande y la subsecuencia común más grandeLa siguiente ilustración muestra la diferencia entre la subcadena común más grande y la subsecuencia común más grande. La subsecuencia común más grande se indica en nuestra publicación con el acrónimo inglés LCS.

Eso es todo. Y ya el 20 de junio será posible familiarizarse en detalle con el programa del curso en
la jornada de puertas abiertas , que se llevará a cabo en el modo de seminario web.