
Bueno, efectivamente, como lo decía Gustavo, nuestra charla es respecto del uso de redes adversarias generativas para detectar ciberamenazas y realmente es el resumen de dos proyectos de investigación que estamos haciendo en la Universidad del Rosario e al respecto del uso de visión por computador para ciberseguridad. Uno podría pensar que la visión por computador eh es algo digamos que no no tan cercano a la ciberseguridad, pero realmente sí. Realmente hay varios puntos de intercepción donde se puede eh utilizar la visión por computador para desafíos de ciberseguridad y eso es lo que vamos a hacer, ¿vale? E bueno, básicamente pues bueno, nuestro equipo de trabajo es es un equipo de trabajo diverso. Tenemos Ariel, que él es estudiante del doctorado en
tecnologías de la información de la Universidad Autónoma del Estado de Puebla. Él está conectado de manera remota. Está Juan Nicolás Sepúlveda, que es estudiante de último año del programa de matemáticas aplicadas y Ciencias de la computación de la Universidad del Rosario. Está Santiago Alférez, que es eh investigador posdoctoral de la Universidad Politécnica de Cataluña y eh y bueno, estoy yo que también pertenezco a la Universidad del Rosario. Bueno, básicamente vamos a hablar un poquito al respecto de primero de lo que motiva este tipo de trabajos de investigación, ¿cierto? cuál es nuestro nuestro driver. Después quisiera hablar al respecto eh de el objetivo específico del proyecto. Luego Santiago nos va a hablar un poco respecto de las
redes neuronales, redes neuronales convolucionales, eh lo que necesitamos entender, pues, para poder meternos en el proyecto y luego ya vamos a hablar particularmente de la detección, detección de de amenazas utilizando eh imágenes y particularmente las redes GAN. Te algo. Dime para los este de acá dices o cuál
Vale, listo. Entonces, eh, bueno, primero quiero preguntarles, ¿alguien conoce a a esta chica, a Katy Jones? ¿Alguien ha escuchado hablar de ella? Katy Jones, ¿no? No le suena. De pronto no ella no los ha contactado por LinkedIn, ¿no? O por Instagram tampoco. Mírenla bien. Bueno, ella básicamente eh es es un un perfil eh conocido desde el 2019 más o menos e y ella está afiliada al a una a un centro de pensamiento, un team tank. Eh, bueno, o dice ser estar afiliada a un team tank, ¿vale? Y eh y dice también trabajar pues en colaboración con la Universidad de Michigan. Resulta que este perfil realmente es un perfil que no es real, es un perfil falso, ¿vale? Y
básicamente eh después de que de que salió una investigación al respecto de ese perfil, eh salieron varias acusaciones que indicaban que esa imagen era una imagen realmente generada por computador, una imagen generada con redes adversarias generativas, básicamente, ¿vale? no es una persona real, sino que es una imagen generada por computador y básicamente se se acusa eh en general pues hay varios sospechosos, pero principalmente a China. De hecho, me acordaba de la charla de Marco por la mañana que hablaba de los apets. E y los apets, como estrategia de los gobiernos para poder hacer espionaje, los gobiernos también utilizan eh perfiles de LinkedIn falsos, ¿vale? Y esto fue lo que sucedió con ella. Básicamente había una red de perfiles
falsos creados con imágenes eh de imágenes generadas de manera eh artificial y esa red de personas conectadas entre ellos en LinkedIn comenzaron a conectar a otras personas, ¿vale? a personas reales, básicamente targets específicos en Estados Unidos, pertenecientes, por ejemplo, a la Secretaría de Estado o pertenecientes, por ejemplo, a miembros asesores de senadores americanos o eh miembros, por ejemplo, de eh board of directors, de empresas públicas americanas. Entonces, ella, ¿por qué se o este perfil en particular, ¿por qué se se volvió famoso? porque este perfil logró conectar con varias personas considerados de alto valor dentro del gobierno de los Estados Unidos. Y esto es un perfil pues que se cree, los conectaba para poder después hacerles
ofertas e de trabajo, ¿vale? Básicamente, pero las ofertas de trabajo realmente pues no son trabajos regulares, sino que son trabajos de espionaje. De hecho, eh hay una noticia, ustedes la pueden buscar, este mismo este mismo eh año salió una un exagente del del FBI con una pena de 20 años de cárcel por haber exfiltrado información sensible, confidencial, pero esa persona fue contactado por LinkedIn, básicamente. Entonces, esta es una estrategia que lo la han usado los países de manera regular, particularmente en este caso se acusa a China de haber hecho este tipo de estrategias y ellos básicamente lo que hacen es contactar una persona, ¿cierto?, una persona real y esa persona se da cuenta que él a su vez está
contactado, conectado en LinkedIn con otras personas. Entonces, digamos que siente algo de confianza porque sabe que quien lo está contactando a su vez tiene tres o cuatro contactos en común. Entonces, así se van estableciendo redes de aparente confianza y finalmente se logra eh pues que estas personas, estos espías logren eh contactar a a a las personas pues que ellos que ellos buscan. ¿Vale? Entonces, esto es un poco esto es como un abrebocas de lo que vamos a ver hoy. Hoy vamos a ver imágenes generadas de amenazas, pero también imágenes generadas pues por de manera artificial por un sistema de redes neuronales. Bueno, nuestro principal objetivo con esta investigación es básicamente desarrollar artefactos de tipo eh perdón, detectar artefactos de
tipo apt, ¿vale? Artefactos eh avanzados que tengan que se puedan llevar a imágenes. Ustedes se pueden preguntar, ¿cómo se lleva un Malwar? eh a imagen o cómo luce un malware en forma de imagen. Vamos a darles ahorita unos ejemplos para para que puedan verlo, ¿vale? Y la la idea es poder hacer una detección de estos artefactos en forma de imágenes y demostrar también que que las amenazas más avanzadas, que incluso vienen ofuscadas con con codificadores más más potentes, tipo Chicataganay, por ejemplo, eh pueden también, por ejemplo, e engañar a soluciones de detección de amenazas, ¿vale? Entonces, la idea de la red adversaria generativa es poder eh hacer el entrenamiento de una red neuronal capaz de soportar ese tipo de
de engaños por parte de un adversario. Eso es básicamente lo que lo que queremos demostrar el día de hoy. ¿Listo? Entonces vamos ahora aquí con el background. Eh, Santiago, si quieres puedes comenzar. Eh, muchas gracias, Daniel por invitarme a la charla. Si, voy a comenzar eh haciendo un poquito del background, algún fundamento sobre la principal, digamos, técnica o herramientas que usamos en esta propuesta de trabajo, que es las redes neuronales. Hay hay muchos ejemplos de cómo cómo usarlas hoy en día. Yo creo que para ninguno de nosotros es raro hablar de ello. Por ejemplo, mi fondo está lo generé hace 5 minutos, bueno, hace 10 minutos con con Dali 3, eh colocando el título del de la
presentación. Me lo botó así. Eh, pero otra otra aplicación muy interesante tiene que ver con aplicaciones en la biomedicina, en el cual es el campo que principalmente trabajo. Eh, por ejemplo, hay enfermedades eh tod Ah, no sé qué pasó. Si si se si me están escuchando. Sí, sí, sí, Santiago. Dame un segundo. Sí. No, no, en la anterior. Sí. No, todavía no. no había que pasarla. Si por ejemplo hay aplicaciones en medicina para predecir eh por ejemplo síntomas de enfermedades a través de de diferentes fuentes, una de ellas son los los smartwatch eh que que son capaces, por ejemplo, de predecir el sueño de de nosotros o por ejemplo para predecir una eh unas enfermedades como el síncope, que es un
desmayo que hay a cualquier momento y que la persona se puede caer de unas escaleras y es super peligroso y con toda esta información obtenida se puede recopilar o por ejemplo predecir la el nivel de glucosa a través de variables. Ahora sí, la siguiente, por favor. Eh eh entonces, esto es una red neuronal. La red neuronal básicamente es un modelo, ¿cierto? Es un modelo muy sencillo que nos transforma unas entradas a un espacio de representación no lineal, ¿vale? Eh, estas estas que están en azul son eh las neuronas, digamos, de una capa oculta y se puede representar muy fácilmente, digamos, matemáticamente. Si le das a la a la a la tecla, por para la siguiente. Eh, esto es una
representación de la de las activaciones. La salida de estas neuronas básicamente es es una eh ponderación de las entradas con unos pesos. pasadas por una función de activación. La ponderación es simplemente una representación lineal y la función de activación es lo que nos activa en en en muy buena medida la parte no lineal y la representación no lineal. De esta manera, eh al final obtenemos una salida siguiente con con los fes, los cual lo hace otra vez una combinación lineal y otra vez puede pasar por otra función de activación, pero en este caso, por ejemplo, no lo hace porque es una regresión. estos pesos omega que están en en esa ecuación sencilla. Eh, el objetivo
siguiente es es por ejemplo encontrar una para un problema de regresión ministrar una función de costo o función de pérdida, que en este caso, por ejemplo, es esta suma de diferencias al al cuadrado. Mimilizando esta función obtenemos nuestra nuestra solución a estos pesos omega. siguiente, por eh, en este caso, este es un ejemplo, otro ejemplo de clasificación, ya dije el el de el del 5P, por ejemplo, pero que es muy conocido, que es el el el MNIST, que son imágenes, por ejemplo, de 28 por 28 píxeles de escala de grises. Son muchísimas imágenes, 60.000 para entrenar, 10.000 para para probar. Pero una forma sencilla de probar una red neuronal de pocas capas es convirtiendo esta
imagen en un vector 784 valores entre 0 y 255 etiquetados de entre 0 y 9. Entonces, el objetivo es, vamos a entrenar un clasificador. Vamos a construir, por ejemplo, dos capas ocultas con 256 unidades en la primera capa y 128 en la segunda y 10 en la última, por una por cada clase. Y vamos a tener al final montros que son alrededor de 235,146 eh, que que ya mostramos ahora en la una representación esquemática en la siguiente, por favor. Eh, esta sería una representación, es decir, tenemos dos capas ocultas y hay más conexiones entre ellas. Viene la la capa la la capa de entrada, se combinan todas y se ponderan. Pasan a la primera capa, las la salida de la primera capa
se vuelve las entradas de la segunda y la y así sucesillamente hasta la salida. Eh, siguiente, por favor. Entonces, aquí lo que lo que hacemos, por ejemplo, en la el caso de la capa oculta es que al final se obtiene otra vez una combinación lineal como una salida pre, que es estos Z, una por cada neurona. Y estas neuronas a su vez, eh, siguiente, por favor, se pueden eh pasar por una función de activación. En este caso, la modelación de un problema de clasificación viene dado por una por una otra función de activación que se llama softmax, que básicamente también normaliza las entradas, pero eh hace que la suma de probabilidades sean uno, porque el problema de clasificación se
puede modelar muy sencillamente con con un problema de probabilidad. ¿Qué hacemos para solucionar estos pesos? Pasamos otra vez por una función de de costo que en este caso se llama el cross entropy, que es muy conocida, en donde cuando sea muy bajo significa que el problema de clasificación se ha logrado con éxito. Entonces, tratamos de mimilizar esta función. Siguiente, por favor. Aquí simplemente los yes pueden ser uno y cero en el cuando pertenecen a la a una clase y cero cuando no pertenecen a la a la a una de las clases. Siguiente, por favor. ¿Cómo se entrena una renda neuronal? Una renda neuronal se entrena con un algoritmo numérico de optimización que se llama el el
estocastic gradient desert, que más menos eh que perdón que consiste en encontrar una ruta hacia el mínimo. ¿Cómo se encuentra esta ruta mediante el gradiente? En en cálculo vectoral se sabe que el gradiente nos da la dirección de máximo crecimiento, pero colocándole un menos nos da la dirección de mínimo crecimiento. Entonces, a través de un gradiente podemos hallar un pequeño delta multiplicándolo con por con una razón, por ejemplo, raw en este caso, que se le llama el learning rate o tasa de aprendizaje. Y esto nos sirve para actualizar los pesos. Siguiente. Eh, por ejemplo, en este caso, teta nos representan todos los parámetros omegas de toda la red. Entonces, el teta de t + 1 eh siguiente
va a ser igual al teta de t anterior menos el r por el gradiente. Esto nos actualiza todos los pesos y podemos podemos eh actualizar de forma algorítmica y normalmente esta actualización, por ejemplo, se logra hacer por eh subconjuntos de lotes que se llaman minibates. Eh y todas las redes neuronales utilizan básicamente este algoritmo con algunas modificaciones. Siguiente, por favor. Entonces, aquí voy a hablar un poquito de las redes convolucionales. Las redes convolucionales se basan en la operación de convolución. una convolución que es es una operación matemática en la cual cogemos un filtro que en este caso, por ejemplo, son a la derecha de estos eh rectángulos que están verticales y horizontales. Cuando hay una
convolución, por ejemplo, esta imagen de tigre con estos filtros nos detalla las los resalta los detalles horizontal verticales, mientras que el filtro de horizontal nos detalla los detalles verticales. La idea de la convolución es un filtro que encuentre patrones comunes y que nos resalte esto de la imagen. Aquí a la izquierda, en esta figura como de una caricatura, ¿qué nos encuentra la red convolucional? Ella prende los pesos para encontrar las mejores características y los mejores patrones. Las primeras capas aprenden cosas generales, pero a medida que va profundizándose aprenden cosas más específicas hasta formal. por ejemplo, puede representar detalles de del rostro del del tigre en este caso. Y a la última capa, pues nos da la etiqueta.
Eh, siguiente, por favor. Est, ya es la última. Esto es es una red mucho más potente, eh, es una arquitectura más potente que llama Resnet 18. No, no, no lo voy a a explicar cada parte porque tienen unos bloques esenciales, pero digamos que está es importante porque más adelante pues hablarán de de esto. La idea de la Resnet, aparte de tener en este caso 18 bloques y esto es pequeño en hoy en día, es que tiene una conexión residual. Esta conexión residual tiene una gran ventaja y es que nos elimina, digamos, eh algo que se llama el vanishing gradient, que es una desaparición del gradiente cuando se entrena. Hay un algoritmo que llama back propagation, que va de ad delante hacia
atrás y es básicamente derivadas. Este camino hace que la derivada sea uno y y hace que no se desaparezca tanto el gradiente y nos permite optimizar mucho mejor eh la red. Y ya básicamente mi mi esto. Muchas gracias. Gracias, Santiago. Vale, muy bien. Hasta ahí. ¿Cómo están? Más o menos. Yo yo sé que puede ser un poco denso porque eh de pronto para las personas que estudiamos ciberseguridad no es eh inmediato, ¿cierto? Eh el tema de las redes neuronales, pero realmente hay muchísimas aplicaciones de las redes neuronales eh normales o las convolucionales, ¿cierto? En temas de ciberseguridad. Entonces, eh que también sirva esta charla para motivarlos a estudiar redes neuronales, ¿vale? de al final se van a dar cuenta que la
matemática está en todo y los conceptos detrás de las redes neuronales pues son básicamente lo que Santiago nos ha explicado, son funciones de activación, funciones de cross entropy, funciones de pérdida y al final todo eso es básicamente pues matemáticas que permite hacer este tipo de de soluciones eh clasificatorias ¿vale? Entonces, eh si alguien tiene interés en entender un poquito cómo funcionan este tipo de conceptos, eh les recomendamos mucho una un proyecto que existe que es open source, que se llama Fast Tai. ¿Han escuchado? ¿Alguien ha escuchado de pronto de Fast Tai? Es es muy bueno. Es una eh es una un proyecto eh para aprendizaje de deep learning para personas que no son específicamente matemáticos. Entonces,
es un es una forma de aprender de redes neurunales yendo del de un top level, digamos, a a un a un bottom. Es más eh eh se aprende de una manera más práctica, ¿vale? Y de hecho, con la librería de Fast fue con la que desarrollamos el proyecto que les vamos a mostrar hoy, ¿vale? Bueno, entonces básicamente eh ejemplos de aplicación de redes neuronales en en temas de ciberseguridad hay muchos, ¿vale? Eh hay hay varios temas, por ejemplo, que se pueden hacer. Ahorita estamos trabajando en un proyecto que integra el uso de LLMs para la construcción de árboles de ataque. ¿Saben qué son árboles de ataque, cierto? Los árboles de ataque básicamente son como los que están a la
derecha, ¿vale? Ese de la derecha es un árbol de ataque que define los procedimientos de ataque uno a uno que tiene que hacer un adversario para lograr un objetivo final que es el que está abajo, un attack gold. Entonces ese árbol de ataque que está a la derecha es muy interesante porque te dice cómo hacer un ataque, ¿vale? Pero, ¿qué sucede? Que ese árbol que está a la derecha no fue construido por nosotros, fue construido por GPT4. Entonces, lo interesante aquí es que, por ejemplo, se está utilizando un modelo basado en redes neurales, en este caso redurales generativas, eh, para lograr que se se el LLM le aporte al analista de ciberseguridad en un procedimiento de ataque. De hecho, este
lunes que viene la sustentación de de un estudiante, el estudiante que hizo esta investigación, eh, un estudiante de la maestría en matemáticas aplicadas y ciencias de la computación que él hizo pues este proyecto y lo lo va a sustentar. el tiene la sustentación de su proyecto el próximo el próximo lunes. Y a la en la izquierda está el diagrama de flujo que se sigue para hacer uso del LLM para construir esos árboles de ataque. ¿Vale? Bueno, ejemplos particulares de computer vision en ciberseguridad hay muchos. Este de acá de la izquierda utiliza técnicas de visión por computador similares a las que mostraba Santiago, pero para detección de anomalías en redes e de cómputo, básicamente detección de
tráfico malicioso, ¿vale? y utiliza básicamente los logs de un router o de un switch eh para volverlos eh objetivos, volver los archivos, perdón, que sean entrenables, que sean eh usados para el entrenamiento de una renda neuronal utilizando una arquitectura de Transformers de visión por computador. A la derecha tenemos una empresa, por ejemplo, que se llama Cloudwalk, que creó ese dispositivo. Es un dispositivo como el que existe, por ejemplo, en los aeropuertos. Aquí en Colombia, pues tenemos el el caso de de migración, que se puede hacer eh autenticación biométrica para ingresar o o eh ingresar o salir del país. Y básicamente ellos hacen el reconocimiento facial pues de la de la persona y se hace de esa forma
la autenticación del ciudadano o del extranjero utilizando rostros. Eso pues también por supuesto hace parte de la de ciberseguridad. También en qué de qué otras maneras se puede utilizar la visión por computador en ciberseguridad para la detección de correos fraudulentos. Y ustedes podrían preguntarse, "Pero, ¿cómo así? Para detectar un correo de fishing se utiliza técnicas de visión por computador?" La respuesta sí. ¿Se puede utilizar técnicas de visión por computador? Hay dos empresas, Mimecast y Cyberfish, que lo utilizan porque ellos hacen básicamente un reconocimiento eh del mensaje que está llegando y analizan aspectos, por ejemplo, eh como la resolución de la imagen, ¿cierto? el tipo de palabras incluidas dentro de dentro del mensaje también y eh le dan
básicamente al usuario una descripción de qué tan probable es que el correo que esté recibiendo sea fishing, pero todo eso lo hacen analizando el cuerpo del mensaje utilizando técnicas de visión por computador. A la derecha pues es el panel está el panel de Cyberfish, lo pueden buscar, es una empresa que está está eh les está yendo muy bien porque usan técnicas pues distintas para hacer la detección de este tipo de de amenazas. Y bueno, ese es el panel básicamente administrador que que ofrece la empresa. ¿Vale? Muy bien. Ahora vamos a hablar de de las eh detección de de amenazas ofuscadas utilizando las redes neuronales convolucionales, ¿vale? Eh, entonces, bueno, una vez ya contextualizados, vamos a ver cómo nosotros usamos estas
técnicas de visión computacional para detectar amenazas. Entonces, el primer paso es cómo convertimos, en este caso, un binario a una imagen. Entonces, para eso, eh, tenemos que recordar, bueno, este es el paper sobre el que estamos trabajando. Est, es una investigación de la Universidad del Rosario desarrollada por el profesor Daniel y otros estudiantes. Eh, entonces, dale la otra. Eh, primero vamos a ver cómo se convierte un binario imagen. Posteriormente cómo construimos nuestro dataset para el entrenamiento de la red. Les vamos a contar un poco sobre nuestra arquitectura de la solución y por último unas técnicas de interpretabilidad que nos van a permitir esos resultados de la red e interpretarlos de una manera que nos sirva para sacar
conclusiones. Entonces, bueno, lo primero que tenemos que recordar es que hay distintos tipos de lenguajes de programación, ¿no? Está los lenguajes clásicos de alto nivel con los que casi todo el mundo trabajamos. Después de eso, pues se ha interpretado, compilado el lenguaje, pues eso se vuelve unos upcodes, ¿sí?, que luego el computador interpreta como binario y finalmente pues ya lo ejecuta en el hardware. Entonces, lo que nosotros vamos a hacer es sabiendo esto, vamos a tomar el binario que es el código una vez ya compilado, eh, y lo vamos a volver una imagen y luego nos vamos a poder devolver hasta los upodes. Entonces, una vez analizada la imagen, pues nos podemos devolver al binario y del
binario saber cuáles fueron las instrucciones que alertaron a la red. Entonces, dale. Eh, bueno, pues como sabemos, si abrimos un binario, pues en cualquier herramienta de eh que les guste, pues se va a ver algo así, ¿no? Entonces, aquí esto está en hexadecimal usualmente, eh, y aquí están pues los codes o o el texto que se genera a partir de ese binario. Entonces, ahora sí, ¿cómo convertimos nosotros binario a una imagen? Entonces, pues sabemos que esto está en hexadecimal y esto lo suelo agrupar en bytes. Un byte son 8 bits y entonces cada par de letras o números aquí pues me representa un byte. Entonces pues un byte puede tomar un valor entre 0 y 25, ¿sí? Que es la misma
escala que puede tomar un color, por ejemplo, en escala de grises. Entonces, ¿qué hacemos? Cogemos el byte y calculamos su valor numérico y luego eso lo convertimos a la escala de grises. Entonces, por ejemplo, el renglón de abajo, pues podría verse como esa tira de cuadritos de color donde cada byte es un píxel de la imagen, ¿de acuerdo? Y luego cuando hacemos eso con todo el binario, vamos a obtener algo como lo siguiente, que es algo así. ¿De acuerdo? Una vez tomamos todo el binario y lo convertimos a una imagen, pues se va a ver algo así. Nuevamente, cada byte va a representar un píxel en la imagen y luego esto sí va a ser lo que le vamos a
pasar a la red, donde vamos a utilizar técnicas de visión computacional para analizarlo. ¿Sí? Entonces, claro, los archivos pueden ser muy grandes y muy pequeños. Entonces, ¿cómo sabemos nosotros qué tamaño va a tener la imagen? Entonces, vamos a verlo. Aquí nosotros definimos una tabla que nos dice, dependiendo del tamaño del binario, asimismo va a ser el ancho de la imagen. ¿Sí? Entonces, pues si el binario, por ejemplo, es de menos de 10 KB, entonces la imagen pues cada 32 píxeles vamos a cortar y vamos a generar una nueva línea. Y entonces así pues van a quedar unos rectángulos y si el si el binario es más grande pues la imagen también se va a hacer más ancha y
entonces pues de esta forma logramos mantener la proporción porque si todas las imágenes estuvieran en el mismo ancho, pues entonces los binarios más grandes serían larguísimos, eh, y entonces ya parecería es como una tira. vertical y no como un cuadradito, que es como lo óptimo para una red que lo analice. ¿Listo? Entonces, ¿cómo construimos nuestro dataset? Pues para detectar entre Goodw y malware, pues necesitamos ejemplos de GoodW y ejemplos de malware. Los ejemplos de Goodw son muy fáciles, son prácticamente cualquier cosa que podamos sacar de internet. En nuestro caso utilizamos la tienda de Microsoft, entonces nos pusimos a descargar un montón de aplicativos de la tienda de Microsoft Store y pues ya tenemos nuestros ejemplos de Goodware.
Ahora, para el malware pues lo que hicimos fue eh acceder a Virus Share. Virus Share es un repositorio de malware eh privado, digamos, que uno solo puede acceder con invitación. Entonces uno lo que hace es crea una request donde dice, "Oye, necesito acceso a tu repositorio para estos fines." Y ellos deciden si te dan el acceso o no. A nosotros nos lo dieron y entonces ya también tenemos nuestro repositorio eh de Virus Share que es de Malware. Adicionalmente, pues nosotros queríamos eh detectar no solamente binarios así como tal, sino también ofuscados. Entonces, el siguiente paso para construir nuestro dataset es estos binarios que ya tenemos los vamos a ofuscar. Entonces vamos a utilizar dos técnicas, equisor y
chicata. Entonces vamos a ver en qué consisten estas técnicas de ofuscación. Entonces, bueno, lo primero es para qué ofuscamos. Pues ya creo que varios deben saberlo, pero el principal objetivo de ofuscar es tratar de esconder la intención que tiene en este caso nuestro binario, ¿no? Entonces como que revolvemos los bits, las instrucciones tienen nombres raros, las variables tienen nombres raros, todo esto con el fin de que alguien que quiera analizar el archivo, pues se demore más tiempo, pues porque le va a costar más, porque va a haber eh relleno que no sirve para nada o van a haber cosas que no se pueden leer a menos de que te devuelvas en la ofuscación. Entonces tenemos dos tipos. El equisor
es el más sencillo. Simplemente tomamos el binario, la cadena de bits, y le aplicamos una llave con la operación Xor. Básicamente lo que hace es compara con la llave y si los bits son iguales, te retorna cero. Y esto es muy útil porque, ¿qué permite? te permite que pues si tú te quieres devolver, simplemente vuelves a hacer la misma operación, aplicas nuevamente la llave y tienes el original, como podemos ver aquí. Entonces, para ofuscar tenemos eh A, que es nuestro binario, B, que es la llave de ofuscación, hacemos la operación y obtenemos C. Ese es nuestro binario ofuscado. Y si nos queremos devolver, nuevamente operamos con B y retornamos al original. Pero claro, así como esto
es muy fácil de implementar, también es muy fácil de detectar. Entonces, muchos de los servicios antimalware pues ya detectan eh binarios ofuscados conor. Entonces, también quisimos probar con chicata. chicata es está construido sobre quisor, pero es mucho más potente. Tiene la cualidad de que es polimórfico. Esto quiere decir que cada vez que se ejecuta me va a dar un resultado distinto, lo que va a provocar que las eh las firmas que se generen para intentar identificarlo, pues no vayan a ser siempre útiles porque este siempre va a estar cambiando. Esto qué hace? Lo que hace es aplica unor y luego aplica otro y otro y otro, pero cada vez va cambiando la llave. Entonces, como cada
vez va cambiando la llave, pues si en algún momento tú te quieres devolver y tienes una llave mal, todo de ahí para atrás está mal. Sí, porque si tuviéramos la misma llave, recordemos que volvemos a lo mismo. Entonces, al cambiar la llave, son muchas capas de ofuscación, una encima de la otra y si te si te equivocas en un paso, pues te retorna basura, nada, porque pues no hiciste bien el proceso. Entonces, estos son los dos tipos de fuscación en los que nos centramos. Eh, esto pues lo [Música] hicimos, dale ahí siguiente. Eh, lo hicimos usando metasploit. Si tienen ahí un metasploit lo pueden hacer con estos comandos. Entonces, uno simplemente pues le pasa eh el ejecutable y le puede
hacer chicata, le puede hacer equisor. Entonces, pues nosotros creamos un directorio y pues con un script lo fuimos corriendo sobre todos los binarios y así. Entonces, tenemos tres categorías. Bueno, tenemos dos categorías que es Goodw y malware y tres subcategorías que es no fuscado, y chicata. Bien. Eh, listo. Entonces, ahora vamos con la arquitectura. Entonces, nuestra arquitectura pues eh se ve así. Eh, la parte de procesamiento pues fue lo que ya trabajamos, ¿no? Tomamos un binario, lo convertimos a imagen y ahora viene algo que es el detector de entropía, que eso tiene un nombre muy buah, pero realmente es algo muy sencillo, simplemente lo que mide es qué tan aleatorio es el el el binario,
digamos. Si está muy desordenado, quiere decir que la entropía es alta, entonces muy probablemente esté ofuscado porque lo que estamos viendo como que no tiene tanto sentido, no sigue ningún tipo de patrón. En cambio, si la entropía es baja, significa que hay patrones, por ejemplo, eh hay instrucciones que se están repitiendo, hay palabras que se están usando varias veces, entonces eso da un tipo de orden haciendo que la entropía sea más baja. Entonces nosotros simplemente medimos la entropía, si es alta, entonces lo pasamos eh por el clasificador ofuscado, o sea, para malware ofuscado. Si es baja, pues lo pasamos para el clasificador no ofuscado. Eh, una red convolucional, como ya nos había dicho Santiago. Y
luego esto pues tenemos un aplicativo montado en Huginf para los que lo conocen. Eh, entonces ahí lo que hacemos es le subimos el binario, ya está todo el pipeline como hecho del preprocesamiento y ya pues en en la herramienta nos sirve para detectar si es goodware o malware y nos dice también si está ofuscado o no. Esto es muy bueno, pues porque es como un un complemento virus total, ¿no? Esto está montado y ustedes pueden acceder, no sé si por ahí tenemos el link. Bueno, creo que no lo pusimos. Aquí tenemos un ejemplo. Ah, sí, aquí está el link. Entonces, si quieren acceder, pueden subir su su binario y probarlo. No es perfecto porque pues las redes
neuronales no son perfectas, pero nos da unos muy buenos resultados. Eh, y ya ahora vamos a ver pues eh las técnicas de interpretabilidad, cómo nosotros ya con la predicción de la red podemos devolvernos para obtener información valiosa. Sí, gracias Nicolás. Aquí si quieren probar el esta arquitectura que nosotros desarrollamos, pues pueden hacerlo a través de este link, ¿vale? Eh, básicamente ustedes pueden subir cualquier archivo que deseen y la aplicación por detrás va a ser la conversión a imagen y luego la eh la entrega a una de las dos redes neuronales que ya están entrenadas y les saca el resultado. Si quieren que lo hagamos aquí rápidamente eh en vivo, pues también lo podemos hacer en un
segundito. Aquí está. Vale, básicamente esta es la aplicación que está montada. Eh, aquí, bueno, ahí está cargando. Podemos aquí hacer básicamente la selección de cualquier archivo. Puede ser un PDF, una imagen, lo que ustedes deseen. Por ejemplo, bueno, vamos a escoger este que está aquí, este PDF, y le damos processe. Él ahí, eh, básicamente, bueno, este fue muy rápido porque el archivo era un PDF muy chiquitico de apenas 238K, pero miren que en este caso eh lo convirtió a imagen. Esta es la imagen que generó. Es una imagen típica de un archivo PDF y él no encontró pues nada malicioso y por eso pues lo clasificó como goodware eh con una probabilidad del 98.98. Ustedes pueden subirle algún
malware, si lo tienen, pueden subirlo y mirar si efectivamente la herramienta se los detecta como malware. Nuestro objetivo, pues, con este tipo de soluciones es básicamente eh apuntarle a un sueño que siempre hemos tenido desde la academia y es dejar de ser un país eh implementador, ¿cierto? implementador de tecnologías extranjeras y volvernos un país propositor. Para ser propositor tenemos que hacer investigación, tenemos que construir nuestras propias soluciones, tenemos que proponer nuestras arquitecturas y hacer no necesariamente que se queden en artículos de investigación, sino que también se vuelvan prototipos funcionales. Entonces, este es un ejemplo de los demos, pues de prototipos que que desarrollamos que buscan apuntar hacia hacia esa ilusión de poder hacer que Colombia se convierta en generador de
tecnología y no solo en implantador de tecnología que viene de Europa o que viene pues de de Norteamérica. Bueno, listo. Entonces, ahora vamos a hablar un poquito al respecto de la interpretabilidad. Tú sigues aquí.
Sí. Listo. Entonces, bueno, como ya vimos, la herramienta está muy buena, pero pues, ¿qué nos muestra? Nos muestra un dibujito y nos dice, "Ah, sí, es Goodw." Pero pues nos gustaría ir más allá. Sí, nos gustaría saber cómo fue, digamos, eh el el proceso que hizo la red, cómo digámoslo así se le ocurrió a la red que esto efectivamente era goodware o no. Entonces para esto nosotros utilizamos una técnica que se llama gratcam, eh, que básicamente lo que hace es se mete dentro de la red y ve lo que la red ve. ¿Sí? Entonces, por ejemplo, aquí esto es una red que se entrenó para detectar animales y no solo animales, sino su especie. Entonces, ¿qué vemos aquí?
Tenemos una imagen original, la pasamos y la red dijo, "Ah, esto es un elefante africano." ¿Sí? Y entonces nosotros decimos, "Bueno, pero ¿cómo llegó a esa conclusión?" Entonces, con esta eh técnica que se llama gratcam, nosotros podemos crear un mapa de calor en donde la red se concentró más. Entonces podemos ver que se concentró más pues en los elefantes, sobre todo como en la cabeza del elefante grande y así pudo detectar que pues efectivamente era un elefante y por mírense, fíjense que no miró el pasto, no miró el cielo. Sí. Entonces así mismo pues podemos hacer para los binarios. Entonces, bueno, sí, aquí pues el mapa de calor nos ayuda a identificar qué es lo que ve la red. Entonces, esto es como
los ojos de la red hacia dónde están viendo. Ahora sí, eh pues nosotros aquí lo que hicimos fue pasarlo. Esto es un binario y aquí pues en distintas capas de la red analizamos esto, cómo se veía. Y si se fijan, pues distintas capas se encargan de distintas cosas. Esto es una característica que tienen las redes en general. Eh, entonces pues, por ejemplo, vemos que algunas se centran como la parte de la mitad, otras se centran en esa franja. eh que está ahí, que es una franja interesante que la mayoría de archivos la suelen tener. Pueden ser algunos headers, puede ser que marca como el límite entre donde están las librerías y donde está el contenido. Eh, y entonces,
¿qué es lo importante aquí? Que yo ya luego me puedo ir, por ejemplo, a esta línea y puedo buscar en el archivo qué bytes son los que están alumbrando, son los que están más vivos, digamos, más prendidos. y luego me devuelvo eh haciéndole como el proceso de reversing a los upodats y miro, bueno, cuáles son los codats dentro del binario que me trigerearon, digamos, esa alerta por parte de la red. Y ahí es cuando yo me doy cuenta es, ah, bueno, es que este ejecutable se quería conectar a una dirección IP remota o es que quería ejecutar un proceso o llamar una librería de LL o algo así por el estilo. Este es el verdadero
valor. ¿De acuerdo? Entonces, eh ahora vamos a ver cómo estamos incluso mejorando este proceso de las redes eh con las redes GAN. Eh pero entonces esta es la la investigación en la que nos estábamos basando hasta el momento. Listo Ariel. Eh, sí. Bueno, voy a explicar el ejemplo que desarrollamos utilizando Gans para mejorar el aprendizaje y reducir los falsos negativos en la detección. Y al final mostraré el repositorio en donde pueden conseguir el código y pueden replicar las pruebas realizadas. Adelante. Bueno, antes de empezar eh tenemos una frase famosa del filósofocáclito, que es que ningún hombre entra dos veces en el mismo río debido a que cada vez va a ser un hombre diferente y también el río va a ser
diferente. Bueno, esto refiriéndose al proceso de aprendizaje continuo al que estamos acostumbrados a la realidad. Eh, siguiente. Una red adversaria generativa es replicando este comportamiento en los ambientes, en la vida real, un sistema que tiene principalmente dos actores. Uno es el generador que funciona como un falsificador de arte, el cual está cada momento aprendiendo en base a lo que existe del arte real y con la retroalimentación de los discriminadores, generando obras para que sean lo más parecido a las reales. Y bueno, en este caso generando datos que sean lo más realistas posibles o que parezcan pertenecer a una clasificación. Del otro lado tenemos al discriminador, el cual como un detective que está constantemente analizando lo que hace el
generador y lo que existe en la vida real, está observando cada una de las características para determinar si algo es real o no y si los datos que se están dando pertenecen o no a una clasificación. en el siguiente. En el proceso de entrenamiento del generador está constantemente con retroalimentaciones del discriminador, generando nuevas muestras, prestando atención en los detalles más minuciosos para en algún momento poder llegar a engañar al discriminador y generar muestras que sean creíbles. Eh, siguiente. siguiente. Ah, en el proceso del No, en la anterior, sí, está bien. En el proceso de aprendizaje del discriminador es este nuevamente ir revisando cada una de las muestras, ir teniendo retroalimentación después de hacer una clasificación sobre si lo que él
consideró como real era o no era real y correspondía o no generador o a o al ser de datos reales. Y de esta misma manera está recibiendo retroalimentación sobre si la clasificación que predijo corresponde o no corresponde a la que realmente es. Eh, siguiente presentación, por favor. Eh, lo que estamos desarrollando dentro de los tipos de gans es una gan condicional en la cual existen etiquetas de la clasificación a la que pertenece un set de datos, al igual que si eso o no es real. El generador, en este caso crea las imágenes mediante ruido aleatorio y las etiquetas de la clasificación a la que tiene que pertenecer. intenta generarlo de forma de que sea real la
imagen, pero al mismo tiempo que pertenezca a la clasificación, pero no la detecte el discriminador. Por otra parte, el discriminador recibe las imágenes y devuelve las etiquetas y intenta de detectar si es real o no la imagen, que bueno, en este caso si pertenece o no a un software y al mismo tiempo si pertenece o no pertenece a la clasificación del malgo. Eh, siguiente presentación, por favor. En nuestra solución usamos un generador basado en la arquitectura que tiene Fastle del generador básico, creando imágenes de 224 por 224 píxeles. En el caso del discriminador, utilizamos la arquitectura comentada por el doctor Santiago previamente, el Resnet 18, el cual recibe las imágenes de 224 por 224, las cuales fueron redimcionadas a
partir del CED original y devuelve las etiquetas de si pertenece a Woodware o malware y al mismo tiempo si es real o no. Eh, siguiente, por favor. En las imágenes utilizadas e son las que fueron generadas con los binarios de Microsoft Store de Virus Share. Del lado de la muestra de No Fuscada utilizamos 10,311 imágenes para el proceso de validación. El resto del set fue para el entrenamiento. En cambio, de lado de ofuscados utilizamos igual más de 10,000 imágenes para el proceso de validación y un set más amplio para el proceso de entrenamiento. Esto debido a que al ser ofuscadas tienen distintas características y distintos patrones que se requiere aprender. y es el doble de datos aproximadamente
al dato de del no fuscado debido a que está en la muestra tanto Xor como Chicataganay. Eh, siguiente. En el experimento comparamos dos resultados. el de entrenar la un modelo previamente este desarrollado con las imágenes existentes para descubrir más detalles o el utilizar la redgun con tanto el discriminador como el generador. En ello lo que buscamos es reducir los falsos negativos, es decir, los malware que pueden pasar por goodware y el generar más imágenes para el desarrollo de más pruebas. El siguiente. Al ser muchas imágenes y ser procesos pesados, esto no se puede ejecutar en una computadora cualquiera. utilizamos la arquitectura de cómputo de alta capacidad de Universidad del Rosario, en el cual hay un gestor de
ejecuciones conocido como SLORM y tenemos computadoras nodo de ejecución tanto de CPU como de GPU, como se puede observar en la imagen. Sí, esta es una de las restricciones más grandes que hay para trabajar con este tipo de proyectos realmente eh porque esta infraestructura es costosa y no siempre pues está accesible para los desarrolladores. Nosotros en una parte del proyecto utilizamos una becaunales dentro de la infraestructura de Nvidia, pero después pues ya usamos la infraestructura propia de la universidad, que es este cluster de high performance computing, eh que tiene estas máquinas que básicamente uno las puede eh les puede poner jobs para que hagan el entrenamiento de manera continua y dedicado pues al al proyecto
de investigación. Perdón Ariel ya continúa este, bueno, podemos observar la diferencia entre el progreso del entrenamiento contra de validación del caso del software no fuscado. En él podemos ver que en ambos experimentos fue muy parecido a la precisión a la que se llegó. Eh, en siguiente imagen, pero en estos resultados que son las matrices de confusión en las que observaremos la clasificación real a la que pertenece cada uno de los elementos y la que fue predecida, podemos observar que efectivamente se redujo el el caso de los falsos negativos, en este caso en cinco elementos, que representa un avance para el caso de arquitecturas críticas que requieren evitar cualquier tipo de fuga de seguridad. Eh, siguiente imagen, ¿no?
Gracias. Eh, y en el caso del ofuscado también podemos observar que hubo un progreso parecido durante el entrenamiento. Este siguiente. Y bueno, en este caso se ve más notorio el progreso de la reducción de los falsos negativos, que es a lo que buscábamos llegar en el caso del software ofuscado. Eh, según, por favor. Y bueno, aquí podemos ver ejemplos de imágenes generadas que corresponden a software ofuscado y no ofuscado y a goodware y malware que podrán ser utilizados en futuros entrenamientos. Claro, este caso ya es digamos que un caso, por ejemplo, de tipo aptare muy malware muy avanzado que está ofuscado. Eh, para nosotros probablemente, o sea, sea muy difícil detectar la diferencia entre el goodware y el malware, porque
ahí ya se difuminan los patrones, pero para el modelo de redes neurales convolucionales sí que eh sí que es él sí que nota la diferencia pues entre las imágenes de la izquierda y las imágenes de la derecha. Entonces, eh básicamente es un son detalles muy pequeñitos, pero que el modelo sí es capaz de detectar y y así hace pues la discriminación entre las dos categorías existentes. Distorial. Eh, finalmente tenemos el repositorio en donde pueden consultar el código desarrollado, así como algunas muestras para poder hacer pruebas en local. También se encuentra la prueba de entreopía y el código para generar imágenes. Y eso sería todo de mi parte. Super. Aí, gracias. Vale. Y ya para terminar en un minuto, eh, básicamente,
bueno, que hemos visto muchos temas hoy, ¿cierto? Pero básicamente lo primero que que que quisiera como concluir es que las redes neuronales efectivamente permiten resolver problemas que no sean determinísticos. Para resolver un problema determinístico no hace falta una red neuronal. Cierto, cuando tenemos un problema con muchas variables, ¿cierto? Con más de 1000 variables, por ejemplo, como son en el caso de las imágenes, pues en esos casos sí que se amerita tener una red neuronal eh que procese toda esa cantidad de features y que haga una clasificación. Entonces, para ese tipo de desafíos que existen en ciberseguridad, pues es muy conveniente tener una solución basada en redes neuronales. El segundo punto es que efectivamente eh Computer Vision, que es
una de las áreas de la inteligencia artificial, se puede aplicar a lo que nosotros querramos siempre y cuando el objeto de estudio se pueda llevar a imagen. Si yo tengo algo que quiero analizar y lo puedo convertir a imagen, eh es susceptible, por ende, de ser analizado con técnicas de computer visual, ¿vale? Sería el segundo como highlight. Y el tercero, que las redes neuronales, las redes adversarias generativas, las redes GAN, permiten justamente mejorar la capacidad de la soluciones. Así como lo mencionaba Ariel, eh una una redunar normalita tiene sus limitaciones, pero si yo la entreno de manera competitiva utilizando Gun, logro efectivamente que la solución entienda que el adversario puede introducirle ruido para engañarla y eso
hace pues que la red así mismo mejore su su accuracy de manera progresiva. ¿En qué estamos trabajando ahorita? Estamos trabajando en un en una eh idea que tenemos y es poder detectar malware eh de contexto, malware específico para un contexto, por ejemplo, para el contexto colombiano. Entonces ese malware que existe, por ejemplo, en nuestro contexto es un malware muy específico, pero no tenemos tantas muestras como quisiéramos porque es malware que pues las muestras que hay las tienen algunas organizaciones, pero no son de fácil acceso. La idea es poder ese malware específico, volverlo a imagen, pero adicionalmente las redes Gun y hacer una extensión o una un crecimiento de la base de datos utilizando GANS. Así
como las GAN sirven para generar imágenes como las que les mostré al inicio eh de la de la persona que se había infiltrado en LinkedIn, pues también se puede utilizar para ampliar una base de datos de entrenamiento de imágenes. Entonces, nuestra idea es poder justamente con poquitas imágenes generar más del mismo tipo para tener una base de datos más grande de imágenes y de esa forma construir un detector de malware de contexto específico, como por ejemplo un malware para un detector de malware en un escenario nacional. ¿Vale? Muchísimas gracias. Eh, y creo que ya pasamos a la parte de preguntas. Sí, señor. No, justo se acabó. Apago el computador. [Aplausos]
Eh, buenas tardes. Eh, tengo una pregunta. En términos de complejidad computacional y precisión del algoritmo, ¿cómo podrían comparar un análisis de imagen y una regular sobre un binario?
Preguntas, Camilo, ¿cuál? O sea, ¿cuál sería la diferencia entre haciéndola con imágenes o sin imágenes? Sí, o sea, en términos de complejidad, más que nada, si yo hago la urística directamente sobre el binario o si uso un análisis de imagen para hacerlo sobre imágenes, Ajá. ¿Hay una gran diferencia o? Sí, claro. La hay principalmente porque bueno, yo creo que la mayoría seguramente en algún momento hemos hecho análisis estático o dinámico de malware, ¿cierto? Cuando uno hace análisis estático o dinámico, eh, ¿qué es lo que haces? Haces el proceso de reversing, haces el análisis de las de las llamadas entre dependencias, ¿cierto? Eh, que es básicamente lo que Olive BG nos muestra como un árbol, ¿cierto? un árbol de de
invocaciones. Eh, lo que hace el analista de Malware es hacer un análisis eh específicamente para ver cuáles son las variables que están siendo invocadas y cuáles son los procesos que están siendo realizados. En el caso de análisis eh con imágenes, mira que es un tipo estático de análisis, no es dinámico. Entonces, ahí ya viene la primera diferencia porque es un análisis eh de malware, pero de tipo estático, no dinámico. Esa sería la primera diferencia. Y la segunda, efectivamente, eh, mientras un analista se enfoca en pedacitos del código, que es lo que analiza las variables, las librerías importadas exportadas variables centrantes, salientes, en el caso de la imagen, el la red neurunal se se enfoca en todo eh la completitud de la imagen.
Entonces, eh digamos que se enfoca probablemente en cosas que el analista de manera visual y manual no puede analizar. Entonces, por eso se vuelve un problema, digamos que de muchas más variables a considerar en lugar de una sola, unas solas pocas variables, que es lo que generalmente se analiza cuando se hace el análisis forense. Entonces ahí digamos que ya se se vuelve más interesante porque analiza cosas que probablemente el analista no logra analizar de manera manual. ¿Sí me entiendes? Respond. Listo, listo. Gracias Camil. Sí, acá hay otra pregunta. Gustavo,
¿cómo estás? Muy buena charla. Eh, sí, más que nada como se centra en esto de la entropía. Justo yo me había topado con Marward que va y pasea estos controles, entonces eh mete datos basura de baja entropía. Entonces, como veo que sacan la imagen, o sea, un análisis estático, eh, cómo le hacen como esta parte de que hay malware que para bypasear estos controles meten demasiado dato de baja entropía y y termina bypaseando. Entonces, a su vez uno de los controles, me parece que era eh dividir el malware como en pedazos para sacar como una media. Entonces, ¿cómo le ves de eso de del control del bypass del malware del de la entropía? Claro. Sí,
realmente listo. Realmente, mira, lo que lo queotos hacemos es Ah, bueno, primero que es entropía. ¿Alguien puede decirnos que es entropía así de manera muy práctica? Porque ese es un concepto eh interesante. ¿Alguien sabe qué es entropía? ¿Nel qué? De aleatoriedad. Sí. Entonces, básicamente es una, bueno, matemáticamente es más complejo, ¿no? Juan Nicolás, eh, que estudia matemáticas, él él sabe el concepto formal, pero básicamente sí, de manera pragmática es el nivel de aleatoriedad. Entonces, cuando se hace la fuscación, efectivamente, lo que se busca es eh hacerlo más eh más entrópico, es decir, agregarle aleatoriedad para que se vea más más disperso, más eh difícil, digamos que de de detectar un patrón. Entonces, lo que nosotros hacemos con el
entropy tester es básicamente validar la entropía de ese malware entrante y validar qué tan eh difuminado está. Sí, está muy difuminado porque el él fue ofuscado con algún ofuscador o porque el desarrollador le agregó eh le agregó código, por ejemplo, para engañar, eso para nosotros va a ser sospechoso. Entonces, entre más entropía tenga, básicamente, independiente de si fue agregada manualmente o agregada a través de un ofuscador, eso nos va a decir que efectivamente eh va hacia la red neuronal para clasificar malware eh ofuscado, ¿vale? O sea, eh no nos interesa tanto quién lo agregó, si fue manualmente agregado por el desarrollador o fue a través de un ofuscador de metasploid. Lo importante es que la la alta entropía hace que el
malware se vaya hacia la red neuronal, eh especialmente diseñada para malware ofuscado o malware con alta entropía, que sería lo mismo, ¿vale? En el caso de que nos engañen y nos hagan creer que el malware eh no está fuscado, cuando en realidad sí lo estaba, no importa, porque entonces se va por el camino de abajo, por otro camino que dirige hacia la red neuronal eh diseñada para Malwar no Fuscado. Entonces, por cualquiera de los dos caminos, él va a enfrentarse por con un clasificador basado en redes neuronales convolucionales que lo va a discriminar. Entonces, básicamente, si pasa nuestro primera barrera, pues lo intentamos contener en la segunda la segunda eh barrera que serían las los
clasificadores. No sé si respondí a tu pregunta. Sí, más o menos. Eh, sí, justo en la parte que ya mencionas que, o sea, si no detecta ofuscación igual le va a revisar. Entonces, con ese lado. Ajá. Ajá. Igual eh te agradezco por tu pregunta porque me parece que tocas un punto interesante y es una oportunidad de mejora y es podríamos por ejemplo con estas redes eh GAN que van aprendiendo con el tiempo, pues podríamos por ejemplo entrenar un modelo que detectara este tipo de modificaciones eh de los desarrolladores que añaden cosas con baja entropía. Entonces podría ser una oportunidad de mejora interesante y también se podría hacer, por ejemplo, con otra red neuronal. Lo que pasa es
que el cómputo pues ya sería más pesado, ¿no? Pero gracias.
¿Alguien tiene otra pregunta? Pronto hay otra pregunta.
Sí, buenas tardes. Eh, hola, buenas tardes. Mi pregunta era, eh, ¿cuál fue el criterio por el cual decidieron elegir para la ofuscación? Para la llave de ofuscación. Sí, gracias. Eh, realmente eh no hubo un criterio en particular, o sea, nosotros nos enfocamos en los dos eh los dos mecanismos de ofuscación más populares que que existen. El más básico que esor y el más eh o de los más avanzados que es Chikataganay. Que a propósito, ¿saben qué significa chicata ganai? ¿Cierto? Chicataganay es una es una eh una palabra compuesta japonesa que significa eh no way o básicamente no no tiene solución, ¿vale? Y el chicataganai es básicamente un equisor eh repetido muchísimas veces. Es el mismo de toda la
vida, pero repetido muchas veces y cada vez con una llave distinta. Entonces, eh lo que hicimos fue, digamos que siendo muy prácticos, fue ir a los extremos, al más sencillo y al más complejo, al más sencillo XOR, al más complejo Chicataganay. De esa forma buscábamos, digamos que eh entrenar nuestras dos soluciones de redes neuronales con los dos extremos y y buscar que todo lo que cayera en el medio, pues también estuviera incluido. Gracias. Allá hay otra pregunta. ¿En dónde? Allá. Sí, señor.
Vale, vale. Este, una este, ¿qué inconvenientes tuvieron al aplicar las redes neuronales? ¿Se escucha bien? Sí, sí, señor. Que, ¿qué conveniente tuvimos al aplicar las redes neuronales? Pues uno de los inconvenientes eh pues fue el tamaño de la imagen, porque al final las imágenes se tienen que reescalar. para que coincidan con el tamaño de entrada de la red. Entonces, pues eso hace que se distorsione un poquito. Por eso una de las formas de mitigar eso, pues fue eh bueno, la tabla que les mostramos que dependiendo del tamaño del binario, pues así mismo era el ancho. Otra de las complicaciones también es que como estábamos trabajando con el centro de cómputo de la universidad que no tiene acceso a internet, todos
los modelos los teníamos que subir ya como cargados y teníamos que bajarlos. Entonces, eso de estar subiendo y bajando modelos y datos también fue un proceso pesado, pero pues se aprendió a manejarlo y pues se pudo superar esa dificultad también. Diría que es lo principal. No sé si complementas con Sí, sí, efectivamente. O sea, lo más crítico, como comentábamos antes, de trabajar con proyectos de computer vision la infraestructura. Eh, nosotros tuvimos una una eh una beca, como lo comentaba antes, de Nvidia eh de $5,000 para usar en el data center de Nvidia. Eh, esos $5,000 se consumieron rápidamente. Sí. Entonces, eh en la primer en el primer proyecto en el proyecto que en la primera parte del
proyecto que explicó justamente Juan Nicolás, entonces ya para la segunda parte ya no teníamos dinero. Lo que hicimos fue usar el HPC de la universidad, pero ya habían restricciones efectivamente porque es un el HPC funciona muy bien, pero está cerrado, está, digamos que en una en una red privada, entonces tú no puedes eh desde ahí eh sacar tráfico ni ni ingresar tráfico de manera eh autónoma, sino que te toca hacerlo todo a través de una VPN y por SSH. Entonces, eh fue un poquito demorado, sobre todo porque teníamos dos datasets, cada uno de 30,000 muestras, eh, y y el proceso pues es tarda tarda bastante eh, primero haciendo el la el ingreso de los datos y
luego, por supuesto, el entrenamiento. Entonces, ese es uno de los requerimientos más complicados en este tipo de proyectos e y el manejo pues de las redes neuronales. Listo. No sé si haya alguna otra pregunta. Ah, okay. Bueno, gracias por por la presentación y pues no entiendo muy bien estos temas, pero eh creo que es un asunto que depende mucho como de la geometría del o sea, qué tanto influye como la geometría de la imagen que se logra eh pues como en los resultados, porque digamos con la tabla que nos mostrabas ahora, pues como en un punto de de transición de de un tipo al otro, eh como esos cuadritos donde estoy partiendo como el el binario para
convertirlo en imagen, eh, pues, o sea, si es un poquito más cortico, un poquito más largo, pues cambia la geometría como resultado y eso eso digamos influye como en los resultados de Claro, claro. E tú tú llegaste a un punto muy importante. Básicamente cada binario, dado que tiene un tamaño especial o distinto, va a generar una imagen con un tamaño distinto. Entonces, el binario más grande genera una imagen más grande, el más chiquito una imagen más chiquita. Pero entonces la red neuronal, y es de hecho lo que tú preguntas complementa la pregunta anterior, la red neuronal no va a tener un dataset con imágenes de tamaños iguales, sino que van a ser 30,000 imágenes, por ejemplo, pero cada una con
un tamaño distinto. Entonces ahí viene también un poco la magia detrás y es que la red neuronal tiene que entrenarse con objetos de entrenamiento que son de características distintas y tamaños diferentes. Eso lo complica. Sí. Y él lo que hace es aprender básicamente como lo explicaba Santiago, así como cuando yo detecto eh una una imagen, ¿cierto? Él ponía el ejemplo del tigre, ¿cierto?, que mostraba en su slide cómo se detectaba eh las orejas, la nariz, la boca. En este caso pasa exactamente lo mismo. La reina neuronal lo que va a hacer es detectar dentro de la imagen aquellas características eh que le indiquen que es un malware o que es un goodw independiente de que la imagen sea
chiquita o que sea un poco más grande, pero siempre el patrón visual va a va a tener similitudes aunque la imagen sea de tamaños distintos. Entonces, eso es un poco lo interesante aquí, que para un analista de manera visual o manual no lo va a poder notar, pero una red neuronal sí que lo nota, independiente del tamaño de la imagen e independiente de que el patrón en un caso se vea muy poquito y en otro caso se vea mucho más claro. Eh, ¿hay otra pregunta, Gustavo? acá.
Gracias. Eh, bueno, eh, primero que todo, pues de nuevo, gracias, interesante. Y la pregunta de pronto es por desconocimiento, por curiosidad, eh, dicen que hay un punto importante en el performance cuanto a hardware, ¿no? Procesamiento y demás. Eh, no sé si ya lo han tomado como métricas o tienen algún concepto de cómo mejorar este rendimiento, ¿no? Como lo hacemos en código. De pronto esta función consume tanto y si hacemos una mejora, eh, pues sí, en procesamiento podemos llegar a algo o cómo se hace en redos neuronales este tipo de procesos.
Eh, pues eh no no se ha considerado tanto, pero se podría, por ejemplo, hay ahora unos nuevos frameworks que están saliendo para trabajar con redes que básicamente lo que me ayudan es como a comprimirlas. Entonces, tengo casi el mismo objeto, pero mucho más pequeño. Entonces, Nvidia y otras empresas y y laboratorios que se dedican a esto han sacado unas formas de comprimir modelos, de manera que hacen casi lo mismo, pero con un tiempo de procesamiento mucho mayor porque son menos cantidad de operaciones para llegar a una una predicción. Gracias por tu pregunta. Mira que tenemos una experiencia muy buena y es que el entrenamiento de la rena urnal es pesado, es pesadísimo, es muy cierto,
pero el modelo entrenado pesa 4.4 megas, es un archivo de 4.4 megas el el modelo entrenado. Entonces, después de que logres entrenar el modelo, ese ese archivo, ese ese modelo entrenado, lo puedes llevar fácilmente a un computador, a un smartphone. Nosotros lo subimos a Hoging Face, o sea, lo Sí es cierto que es demorado y costoso el entrenamiento, pero después de que lo tienes entrenado, el modelo ya entrenado lo puedes subir donde tú quieras. Nuestra ilusión, ¿cuál sería? Que se pueda eh masificar tanto como se desee. Sí, llevándolo a un escenario de smart cities, eh tú podrías garantizar de que esa solución se despliega en end points, pero también se despliega en servidores, que se despliega también dispositivos
intermedios. Entonces, eso es algo interesante y es que eh el entrenamiento es pesado, pero no necesariamente el uso lo va a hacer. De hecho, tenemos métricas también de de lo que cuesta computacionalmente el análisis de un malware con el modelo ya entrenado y es muy mínimo, o sea, es mucho más liviano que una solución antimalware porque el modelo ya lo está entrenado. El reto, ¿cuál es? Claramente que cada cierto tiempo hay que volver a generar un modelo, eh, reentrenarlo, pues para que quede actualizado, porque si yo entré en un modelo hoy y espero que el mal que me detecte malware eh dentro de un mes o dentro de dos meses, probablemente no lo va a hacer porque pues se desactualiza.
Al igual que cualquier solución antimalware, hay que actualizarla. Entonces, hay en es tipos de casos habría que hacerle un update al modelo entrenado, pero básicamente si no es una preocupación para nosotros realmente porque sabemos que el entrenamiento es pesado, pero el deployment no lo es. El deployment y el uso no lo es. Vale, gracias por tu pregunta. Listo. Muchas gracias a todos. Muchas gracias. Gracias. Gracias.