banner

Noticias

Aug 28, 2023

Aprendizaje automático Parte 3: Atacar modelos de caja negra

Home » Ciberseguridad » Analytics & Intelligence » Aprendizaje Machine Learning Parte 3: Atacando Modelos de Caja Negra

En la primera publicación de esta serie, cubrimos una breve reseña sobre el aprendizaje automático, el enfoque de revocación y ofuscación para detectar scripts ofuscados de PowerShell y mis esfuerzos para mejorar el conjunto de datos y los modelos para detectar PowerShell ofuscado. Terminamos con tres modelos: una regresión logística regularizada L2 (Ridge), un clasificador LightGBM y una arquitectura de red neuronal.

La segunda publicación cubría el ataque a estos modelos desde uncaja blanca perspectiva, es decir, donde tenemos la totalidad del modelo entrenado, incluidas las características de entrada, la arquitectura del modelo, los parámetros/pesos del modelo y los datos de entrenamiento. Recomiendo encarecidamente al menos hojear estas dos primeras publicaciones antes de proceder para asegurarme de que todo esto tenga el mayor sentido posible.

En esta publicación vamos a cubrir los más comunes y difíciles,caja negra perspectiva. Aquí solo sabemos qué características se están extrayendo de cada muestra, incluso la arquitectura permanecerá opaca para nosotros.

Después de leer lo que definitivamente fueron cientos de páginas de investigación académica sobre el aprendizaje automático antagónico, puedo decir con seguridad que una buena parte de la investigación ha sido desde una perspectiva de caja blanca. Recuerde nuestra definición de ataques de caja blanca y caja negra de la segunda publicación de esta serie:

Además, la mayor parte de la investigación parece haber estado en el ámbito del reconocimiento de imágenes. Si bien esto es interesante, definitivamente es un espacio problemático diferente al que estamos tratando. Específicamente, las imágenes pueden tener múltiples píxeles perturbados en una pequeña cantidad sin que la imagen antagónica resultante parezca estar modificada para el ojo humano. Para muchos de los problemas con los que nos enfrentamos en seguridad, por ejemplo, nuestro espacio de problemas de ofuscación de PowerShell, estamos más limitados en a) la cantidad de funciones que podemos modificar yb) hasta qué punto podemos modificar dichas funciones. Es decir, tenemos un subespacio funcional más pequeño de modificaciones que podemos realizar en los scripts de PowerShell en lugar de en las imágenes.

Una serie de ataques de caja negra involucranextracción del modelo (consulte la siguiente sección) para crear un modelo local, a veces conocido como modelo sustituto o sustituto. Luego, los ataques existentes se ejecutan contra el modelo local para generar muestras antagónicas con la esperanza de que estas muestras también evadan el modelo de destino. Esto a menudo funciona debido al fenómeno detransferibilidad de ataque, de la que hablaremos en breve.

Los ataques de caja negra también pueden omitir la extracción del modelo y consultar directamente las entradas en el modelo de destino. Estos ataques, en los que la configuración interna del modelo no es necesaria en absoluto, son lo que en realidad se conoce como ataques de caja negra en la literatura académica. Sin embargo, al utilizar la extracción de modelos, podemos aplicar potencialmente ataques de caja blanca contra clones locales de modelos de caja negra donde solo tenemos un oráculo para enviar entradas y obtener etiquetas.

La extracción de modelos, según Will Pearce y otros, es una de las primitivas más fundamentales en el ML contradictorio. Si bien esta idea probablemente existió durante un tiempo, creo que las primeras formalizaciones de la extracción de modelos (o al menos una que popularizó el método) fueron el artículo de 2016 Transferability in Machine Learning: from Phenomena to Black-Box Attacks using Adversarial Samples" y el Documento de 2017 "Ataques prácticos de caja negra contra el aprendizaje automático", ambos de Papernot et al. El resumen general de su enfoque del documento de 2017 es:

Nuestra estrategia de ataque consiste en entrenar un modelo local para sustituir el DNN objetivo [Red neuronal profunda], utilizando entradas generadas sintéticamente por un adversario y etiquetadas por el DNN objetivo. Usamos el sustituto local para crear ejemplos contradictorios y descubrimos que están mal clasificados por el DNN objetivo.

La idea completa es aproximar el límite de decisión del modelo de destino con menos datos (y generalmente diferentes) de los que se entrenó originalmente en el modelo. Básicamente, la extracción del modelo implica enviar primero una serie de muestras etiquetadas conocidas al modelo, que funciona como un oráculo de etiquetado. Imagine enviar un montón de binarios a algún tipo de sitio web que le permita saber si los binarios son maliciosos o no. O imagine tener nuestros modelos de revocación de ofuscación adaptados como una especie de API interna, donde podemos enviar nuestras medidas de características y obtener un resultado de etiqueta de normal u ofuscado, o una puntuación de probabilidad de ofuscación. Con suficientes entradas, podemos entrenar un modelo sustituto local que funcione de manera similar al modelo de destino.

Figura 1 de "Ataques activos de aprendizaje profundo bajo estrictas limitaciones de velocidad para llamadas API en línea" de Shi et al. resume bien el proceso:

Una hipótesis razonable es que cuanto más nos acerquemos a la arquitectura del modelo original, mejor funcionará nuestro modelo local. Esto es algo que exploraremos en esta publicación.

Un enfoque ligeramente diferente consiste en entrenar un modelo inicialmente deficiente con pocas muestras y usar algunas de las técnicas de ataque de caja blanca descritas en la segunda publicación para generar muestras antagónicas. Estas muestras se ejecutan a través del clasificador, y como se describe en esta publicación:

…los ejemplos contradictorios son un paso en la dirección del gradiente del modelo para determinar si el modelo de caja negra clasificará los nuevos puntos de datos de la misma manera que el modelo sustituto. Los datos aumentados están etiquetados por el modelo de caja negra y se utilizan para entrenar un mejor modelo sustituto. Al igual que el niño, el modelo sustituto obtiene una comprensión más precisa de dónde está el límite de decisión del modelo de caja negra.

¿Resultado final de cualquier manera? Tenemos un modelo entrenado localmente que se aproxima al límite de decisión del modelo de destino. Con esto, podemos realizar varios algoritmos de ataque basados ​​en caja blanca que explotan los gradientes internos del modelo, además de cualquier ataque de caja negra también.

Nota al margen: entradas y arquitecturas modelo

Si las entradas al modelo que está atacando son imágenes o texto, de alguna manera tiene suerte, ya que probablemente pueda adivinar la arquitectura base del modelo de destino. Existen pautas establecidas para este tipo de entradas, es decir, Redes neuronales convolucionales para imágenes y LSTM/Transformadores (o Naive Bayes en casos específicos) para texto. En estos ejemplos, vamos a trabajar con datos tabulares, es decir, datos que se muestran en columnas o tablas. ¡Ojalá volvamos a tratar los modelos de ataque basados ​​en texto en otro momento!

Es posible que se pregunte: "¿En serio? ¿Los ataques contra modelos de mala calidad clonados localmente pueden funcionar contra modelos de producción reales?" La respuesta es SÍ, debido a un fenómeno llamado transferencia de ataques. El documento de 2019 "¿Por qué se transfieren los ataques adversarios? Explicación de la transferibilidad de los ataques de evasión y envenenamiento" de Demontis et al. explora esto desde un punto de vista académico, pero haré todo lo posible para explicar el concepto. Además, teniendo en cuenta que este documento tiene solo unos pocos años y no hay un consenso general sobre por qué se transfieren los ataques adversarios, recuerde que esta es todavía una pregunta abierta.

El trabajo fundamental que introdujo este concepto es el artículo de 2016 mencionado anteriormente "Transferability in Machine Learning: from Phenomena to Black-Box Attacks using Adversarial Samples" de Papernot, McDaniel y Goodfellow. Las primeras oraciones del resumen dan una buena visión general del concepto (énfasis mío):

Muchos modelos de aprendizaje automático son vulnerables a ejemplos contradictorios: entradas que están especialmente diseñadas para hacer que un modelo de aprendizaje automático produzca una salida incorrecta.Los ejemplos adversarios que afectan a un modelo a menudo afectan a otro modelo, incluso si los dos modelos tienen arquitecturas diferentes o se entrenaron en diferentes conjuntos de entrenamiento, siempre que ambos modelos se hayan entrenado para realizar la misma tarea.Por lo tanto, un atacante puede entrenar su propio modelo sustituto, crear ejemplos adversarios contra el sustituto y transferirlos a un modelo de víctima, con muy poca información sobre la víctima.

Su artículo se propone probar dos hipótesis, a saber, que "las transferibilidades de muestras antagónicas tanto dentro de la técnica como entre técnicas son fenómenos consistentemente fuertes en el espacio de las técnicas de aprendizaje automático" y que "los ataques de caja negra son posibles en entornos prácticos contra cualquier clasificador de aprendizaje automático desconocido". Su artículo presenta un caso convincente para cada uno, y también demuestra la transferibilidad de diferentes clases de modelos, resumidas en la figura 3 en la página 5 del artículo:

Los valores en cada celda son el porcentaje de muestras (imágenes MNIST aquí, el caso de prueba de facto para ataques adversarios) diseñadas para evadir una arquitectura modelo particular, que cuando se aplica a otra arquitectura modelo también cambió su etiqueta de clasificación. Es decir, el porcentaje de muestras antagónicas elaboradas localmente con éxito que también engañan al modelo de destino. Tenga en cuenta que esta cifra no incluye los conjuntos Random Forests o Boosted Decision Tree (la columna Ens es un conjunto personalizado de las 5 técnicas existentes). El tipo de modelo sustituto está en el lado izquierdo y el tipo de modelo al que se dirige está en la parte inferior. Podemos ver algunos patrones:

A partir de esto, mi teoría es que si puede hacer coincidir ampliamente la arquitectura del modelo de destino, tiene más posibilidades de que sus ataques contra el sustituto se transfieran.

¿Cómo se comparará esto con nuestros conjuntos de datos de ejemplo?

Nuestro objetivo aquí es recrear un modelo sustituto local con solo tener acceso al modelo como un oráculo de etiquetado (es decir, los modelos de destino entrenados de la primera publicación). Luego ejecutaremos los ataques de caja blanca desde el segundo poste contra nuestro suplente, esperando suficiente transferibilidad de ataque. Si bien esto es muy similar a los procesos de las dos primeras publicaciones, tenemos un par de pasos adicionales.

Primero, necesitamos un nuevo conjunto de datos para usar en la extracción del modelo. Seleccioné 1500 archivos aleatorios de PowerShellCorpus y ejecuté cada uno a través de un conjunto aleatorio de ofuscaciones de Invoke-Obfuscation que me dio 3000 muestras en total. Luego ejecuté el código de extracción de funciones en cada script y generé el archivo BlackBox.ast.csv que ahora está actualizado en ./datasets/ en el repositorio de Invoke-Evasion.

El siguiente paso esextracción del modelo , donde entrenamos un modelo local sustituto en el conjunto de datos etiquetado por el modelo de destino. Para lograr esto, utilicé cada modelo de destino para generar un conjunto respectivo de etiquetas para el nuevo conjunto de datos. Si bien estas etiquetas no son la verdad exacta, ya que ninguno de nuestros modelos fue perfecto, las etiquetas reflejan el límite de decisión del propio modelo de destino. Dividí el conjunto de datos en un tren/prueba estándar con una proporción de 80/20, como hicimos en la primera publicación.

En la sección anterior mencioné que cuanto mejor haga coincidir su modelo local con la arquitectura del modelo objetivo, mayor será la probabilidad de que su ataque diseñado engañe al objetivo. Quería ver qué pasos de "reconocimiento del modelo" podrían ayudar a arrojar luz sobre la arquitectura del modelo de destino. La gran pregunta en mi mente es determinar si el objetivo es lineal, basado en un árbol, una red neuronal o una tercera opción. Los algoritmos basados ​​en árboles a menudo funcionan extremadamente bien con prácticamente cualquier conjunto de datos, por lo que mi hipótesis es que los bosques aleatorios y los árboles potenciados por degradado coincidirán bien con cada conjunto de datos del modelo de destino. Debido a esto, idealmente queremos determinar si el modelo es probablemente una red neuronal o lineal primero, con el resultado del proceso de eliminación basado en árboles.

Esta es definitivamente una pregunta abierta y algo que no creo que haya sido muy considerado en la academia. Sin embargo, quiero reiterar nuevamente que no soy un experto aquí; si hay trabajo existente en esta área (o alguien tiene ideas adicionales), ¡hágamelo saber!

Mis dos ideas principales que detallaré en breve son:

Comencé ajustando los siguientes modelos en cada conjunto de datos de destino, haciendo una búsqueda aleatoria cruzada básica (usando RandomizedSearchCV) para hiperparámetros comunes para los algoritmos superficiales (es decir, todo menos la red neuronal):

Luego usé HopSkipJump para generar muestras antagónicas para cada modelo. Por alguna razón, no pude hacer que la red neuronal generara correctamente suficientes muestras usando HopSkipJump, así que usé el ataque Fast Gradient Method (FGM) en su lugar. ¿Por qué elegir estas arquitecturas específicas como modelos locales? Quería seleccionar una variedad de cosas que realmente se usan en la producción y quería cobertura lineal (regresión logística), conjuntos de árboles (bosques aleatorios/árboles potenciados) y redes neuronales.

Estas muestras antagónicas se compararon con cada modelo local y el modelo de destino para obtener precisiones comparables. Sin embargo, lo que es más importante, saqué las muestras específicas mal clasificadas por cada modelo local. Estas muestras se compararon con el modelo de destino, dando un porcentaje de muestras antagónicas elaboradas con el modelo local que también engañó al modelo de destino. Este es eltransferibilidad idea de la que hablábamos antes. Si bien la eficacia general del total de muestras antagónicas locales contra el objetivo es un punto de datos interesante, lo que realmente nos importa es la eficacia del modelo sustituto local en la elaboración de muestras antagónicas que engañan al modelo objetivo.

A continuación, tomé el modelo de regresión logística de mejor rendimiento, que es lineal, y modifiqué en gran medida un coeficiente único para una muestra para ver si esto afectaba el resultado del modelo. El objetivo aquí era ver si el modelo era potencialmente lineal para otro punto de referencia.

Aquí está el resultado de nuestro proceso de búsqueda de evasión-transferibilidad contra el primer modelo:

Estos resultados son interesantes. El modelo que coincidía más estrechamente con los datos etiquetados del modelo de destino era Random Forest, el sustituto de regresión logística (que coincidía más estrechamente con la arquitectura del modelo de destino) tenía la mayor cantidad de muestras antagónicas transferidas al modelo de destino, pero XGBoost tenía el porcentaje más alto de muestras antagónicas que se transfirieron al objetivo de regresión logística.

Aquí está el resultado de nuestro proceso de búsqueda de evasión-transferibilidad contra el segundo modelo:

Estos resultados también son interesantes. Los modelos que coincidieron más estrechamente con los datos etiquetados del modelo de destino fueron Random Forest y XGBoost, mientras que Neural Network tuvo la mayor cantidad de ataques adversarios que se transfirieron, así como el mejor porcentaje de transferencia de ataques al objetivo de LightGBM. En comparación con los otros dos modelos objetivo, Model2 también parece ser el más resistente contra las muestras antagónicas.

Aquí está el resultado de nuestro proceso de búsqueda de evasión-transferibilidad contra el primer modelo:

Estos resultados son tan interesantes como los dos anteriores. La mayoría de los modelos tenían una precisión extremadamente cercana en los datos etiquetados del modelo de destino, mientras que Logistic Regression y XGBoost tenían la mayor cantidad de muestras antagónicas transferidas a la red neuronal de destino. La Red Neuronal tuvo el mejor porcentaje de transferencia de ataques, pero el segundo peor número de ataques transferidos.

En función de los resultados, mi estrategia para determinar la arquitectura del modelo mediante la medición de la transferibilidad del ataque del modelo sustituto no parece funcionar demasiado bien en este caso. Como confirmación, para cada modelo tomé el sustituto más prometedor para cada objetivo y realicé los mismos ataques que hicimos contra los modelos de caja blanca en la segunda publicación. Esto no terminó siendo tan efectivo y terminé con una gran cantidad de modificaciones para cada script. Específicamente, los scripts modificados obtendrían una puntuación muy baja en la probabilidad de ofuscación frente al sustituto local, pero el objetivo aún los clasificaría como ofuscados.

Me devané los sesos en busca de una explicación para esto, y Will pudo ayudarme a arrojar luz sobre varias cosas. Esto resultó en dos cambios importantes en mi enfoque: etiquetas blandas y darle la vuelta a mi perspectiva de todo el problema.

Will detalla el efecto de las etiquetas duras frente a las blandas en la extracción de modelos en la diapositiva 21 de su presentación BlackHat EU de 2021:

Intuitivamente, esto tiene sentido. Una etiqueta rígida como normal u ofuscado proporciona menos información que un conjunto de probabilidades como ofuscado=0,73. Cuanta más información tengamos, mejor podremos hacer coincidir las partes internas del modelo: ¡hay mucho espacio entre las etiquetas binarias duras como 0 y 1!

Consideremos la situación en la que nuestras API mágicas de ofuscación de invocación dan una probabilidad de ofuscación como 0,73 en lugar de solo una etiqueta binaria 0/1. ¿Cómo podemos aprovechar esta información adicional? Recuerda la primera publicación en la que hablamos de clasificación versus regresión: ¡la clasificación nos da etiquetas, mientras que la regresión nos da un número!

Veamos qué sucede si etiquetamos nuestro conjunto de datos contradictorio con la probabilidad de que el script esté ofuscado, en lugar de solo la etiqueta dura normal/ofuscado. Mantendremos un umbral de 0,5 o mayor para indicar que la muestra está ofuscada, pero esto se puede ajustar (y a menudo es para cambiar el equilibrio de falsos positivos y falsos negativos).

Dado que estamos haciendo regresión en lugar de clasificación, necesitamos un conjunto de algoritmos ligeramente diferente. Las redes neuronales, los bosques aleatorios, los árboles potenciados por gradientes y las máquinas de vectores de soporte tienen equivalentes de regresión. Sin embargo, en lugar de Regresión logística (nombre confuso para un clasificador aquí, lo sé) vamos a utilizar la regresión lineal clásica, la regresión de lazo (L1), la regresión de cresta (L2) y la regresión bayesiana de cresta en lugar de la bayesiana ingenua bayesiana. Luego, para cada uno, verificaremos el error cuadrático medio (RMSE) en el conjunto de prueba, una métrica de regresión común que eleva al cuadrado la diferencia entre cada predicción y su valor real, suma todos los cuadrados y saca la raíz cuadrada. del total:

También tomaremos cada modelo de regresión, haremos una predicción para cada muestra y las convertiremos nuevamente en etiquetas duras al ver cuáles son iguales a .5 o más. Esto nos permitirá obtener una medida de precisión. Todo esto es una especie de enfoque del tipo de regresores de aproximación de clasificador. Los detalles están en elBlackBox.ipynbnotebook en el repositorio Invoke-Evasion.

Un problema con el que me encontré es que, dado que estamos creando modelos de regresión en lugar de modelos de clasificación, no podemos usarlos de manera inmediata con HopSkipJump u otros algoritmos de ataque. Hice algunos intentos de implementar un modelo de clasificación personalizado que envolvía el modo scikit-learn de regresión, pero ART aún no funcionaba correctamente con ellos. Estoy seguro de que hay una manera de hacer esto, pero todavía hay un problema importante que aún no hemos considerado...

Un gran desafío que encontré al tratar de entender la situación de aprendizaje automático antagónico aquí es cómo convertir el conjunto de datos numérico antagónico modificado nuevamente en un script de trabajo. Como mencioné en esta serie de publicaciones, la mayoría de las investigaciones académicas sobre el aprendizaje automático antagónico se han centrado en los datos de imágenes. La perturbación de características adversas para las imágenes es bastante fácil, o más bien sin restricciones: simplemente modificamos los bits para obtener píxeles y luego enviamos la imagen a nuestro clasificador de destino. Prácticamente todos los algoritmos de evasión de aprendizaje automático adversarios se utilizan de esta manera. Usted proporciona una matriz de muestras de datos y un algoritmo de ataque y se producen muestras perturbadas/adversarias, es decir, matrices de números que engañan al modelo de destino cuando se procesan.

Exploramos la posibilidad de enmascarar características de varios algoritmos de ataque en la segunda publicación sobre cómo atacar modelos de caja blanca. Aunque restringimos las modificaciones a un subconjunto más pequeño de características más fáciles de modificar, esto aún no es ideal. Si tenemos una serie de funciones modificadas a partir de una muestra original, ¿cómo a) convertimos esto de nuevo en un script que b) se ejecuta yc) aún ejecuta la funcionalidad prevista del script?

Como hablamos en el segundo post, ¿qué es el ??? proceso en la siguiente figura:

Estaba teniendo dificultades para entender esto hasta que leí parte de la fuente de la rama mlsecevasion de Counterfit y tuve otra conversación con Will que cambió por completo mi perspectiva. Transmitió una idea clave de Hyrum Anderson:¡Todo esto es realmente solo un problema de optimización!

Los algoritmos de ataque de caja negra ML están optimizando las características de entrada medidas para el problema contradictorio máximo-mínimo del que hablamos en la segunda publicación, donde queremos maximizar la función de error/pérdida del modelo para una muestra, pero minimizar la cantidad de cambios a realizar entonces. En lugar de optimizar la modificación de las funciones vectorizadas directamente, ¿por qué no optimizamos una serie de acciones secuenciales que afectan esas funciones?

Básicamente, primero queremos enumerar una serie de acciones de modificación que podemos ejecutar en una muestra específica que cambian las funciones extraídas para dicha muestra. Por ejemplo, Counterfit tiene un conjunto de adiciones/superposiciones de secciones de PE, importaciones para agregar y marcas de tiempo para probar PE. Para nuestra situación, querríamos algo que agregue características "normales", y podemos usar los enfoques de explicabilidad de la segunda publicación para guiar este proceso. Entonces podemos usar un algoritmo como HopSkipJump para encontrar una combinación de esas características que produzca el resultado que queremos.

En cambio, nuestro enfoque se verá así:

En el caso de Counterfit, están tomando un vector que representa las modificaciones a realizar y lo introducen en algo como HopSkipJump. Para algunos trabajos futuros, espero crear un módulo Counterfit para esta ofuscación de PowerShell, pero mantendremos las cosas un poco más manuales por ahora.

Existe otra alternativa al uso de algoritmos de ataque, la optimización bayesiana, "una estrategia de diseño secuencial para la optimización global de las funciones de caja negra". Recuerde en la primera publicación cuando hablamos brevemente sobre Optuna, un marco que se creó para ajustar hiperparámetros para algoritmos de aprendizaje automático. Optuna implementa varios métodos de optimización bayesiana y es súper flexible, con un enfoque general de:

La otra idea clave aquí es que¡No tenemos que usar Optuna solo para ajustar hiperparámetros! La función de objetivo representa una caja negra, y podemos usarla para ejecutar una serie de acciones de modificación para realizar en nuestro script de destino y devolver el puntaje de probabilidad de ofuscación de nuestro modelo de destino. Este es un enfoque que también implementó Counterfit, utilizando el marco Hyperopt en lugar de Optuna.

Si esto suena como aprendizaje por refuerzo, no está completamente fuera de lugar. Como no soy tan alfabetizado en las matemáticas relevantes como me gustaría, diré que creo que este enfoque es similar al aprendizaje por refuerzo en principio, pero diferente en la práctica. Mi intuición es que este enfoque probablemente funcionará para conjuntos más pequeños de cambios atómicos que no dependen tanto del orden: un mayor número de acciones secuenciales que dependen mucho del contexto probablemente funcionarán mejor con un enfoque de aprendizaje por refuerzo adecuado. Sin embargo, dado que tenemos un ciclo de retroalimentación corto de ofuscación de medidas de script de ofuscación de transformación seleccionada, es probable que no necesitemos la mayor sobrecarga de un enfoque de aprendizaje de refuerzo completo.

Vamos a juntar todo aquí, combinando el enfoque de los regresores de aproximación del clasificador con la optimización bayesiana de las modificaciones del script.

Nuestro objetivo general: tome la secuencia de comandos de entrada ofuscada DBOdemo1.ps1 y devuelva una secuencia de comandos modificada que conserva la funcionalidad de la secuencia de comandos original mientras que nuestro modelo de red neuronal sintonizado lo marca como normal. También queremos agregar la menor cantidad posible de caracteres al guión.

Nuestro enfoque completo de principio a fin será:

La idea principal aquí es que estamos extrayendo el modelo de destino con la mayor eficacia posible y utilizando las ideas de la caja blanca de ese modelo sustituto local para guiar la construcción de funciones que modifican el script de destino ofuscado. Luego optimizamos el uso de estas funciones de modificación contra el modelo de caja negra de destino. Este enfoque nos permite minimizar el tiempo y la cantidad de consultas contra la API de caja negra.

Los resultados de nuestro estudio de optimización que duró 30 minutos se ven así:

Y el script optimizado final se ve así:

En 30 minutos terminamos con una secuencia de comandos optimizada que aumentó el tamaño de la secuencia de comandos original en solo un 23,06 %, pero tenía una puntuación de ofuscación del modelo de destino de 35,24, muy por debajo del umbral de 50 para Normal.

La pregunta final en mi mente es "¿Esta muestra contradictoria se transfiere a los otros dos modelos de destino?" Vamos a ver:

Esta muestra optimizada tuvo éxito con el modelo de destino 3, la red neuronal, así como con el modelo 1, la regresión logística. Sin embargo, no se transfirió al conjunto de árbol potenciado LightGBM (modelo 2). Esto es probable porque nosotros:

Evadir modelos lineales, como la regresión logística, es fácil. Evadir conjuntos de árboles, como Random Forests o Gradient Boost Decision Trees, o Neural Networks, es un poco más difícil. Evadir las versiones de caja negra de estos modelos es aún más difícil, o al menos requiere más tiempo y esfuerzo.

La mayoría de los ataques en la literatura implican generar varias muestras adversarias y probar qué tan efectivas son contra un modelo de destino, como hicimos con nuestros tres modelos de destino. Que yo sepa, no hay tanto trabajo por ahí (¡prometí que traté de buscar!) que involucre datos tabulares prácticos de ataques de caja negra del mundo real, como los ejemplos aquí. Dependiendo de la arquitectura del modelo de destino y de si el modelo es de caja blanca o de caja negra, la evasión de una sola muestra puede tener diferentes niveles de dificultad.

El campo del aprendizaje automático adversario tiene menos de una década, y los primeros ataques formalizados se lanzaron alrededor de 2014. La mayor parte del trabajo hasta ahora ha sido académico y se ha centrado en gran medida en los ataques de caja blanca contra los clasificadores de imágenes. Si bien existen marcos prácticos como Adversarial Robustness Toolbox, la mayoría de los algoritmos de ataque tienen restricciones que los hacen no aplicables o no deseables para nuestros escenarios de ataques de seguridad. Específicamente, no todos los algoritmos de ataque se pueden usar en datos tabulares/sin imágenes, y la mayoría no le permite limitar qué características se modifican (lo que se conoce como enmascaramiento de características).

Desde el lado del algoritmo de ataque adversario, la gran idea que Will me transmitió es que¡Todo esto es solo un problema de optimización! La seguridad de la información, como muchas industrias, a menudo ignora los avances de otros campos que podrían ayudarnos inmensamente. Mi ejemplo personal de esto fue cuando Andy y yo trabajábamos en el problema/herramienta que finalmente se convirtió en el enfoque gráfico original de BloodHound. Seguimos tropezando con el problema hasta que Andy discutió nuestros desafíos con su amigo Sam, quien se lamentó: "Amigo, ¿cómo ¿No habéis oído hablar de la teoría de grafos?"

El problema de "cómo tomamos estos números adversarios y los transformamos de nuevo en un ataque utilizable" es un problema real en la ejecución práctica de estos ataques. Sin embargo, si cambiamos nuestra forma de pensar sobre el problema, podemos usar enfoques influenciados por el marco Counterfit, o el marco mismo, para optimizar las acciones adversarias.

Mi esperanza es que la comunidad académica adversaria de aprendizaje automático continúa progresando en la investigación adversa práctica más allá de los ataques adversarios de caja blanca en los clasificadores de imágenes (¡como este!). Los problemas del mundo real son más desafiantes que solo jugar con MNIST, y hay muchas posibilidades de una gran colaboración con profesionales de la industria de la seguridad para abordar algunos de estos escenarios prácticos. Hay una tonelada de modelos de árboles potenciados por gradientes no enfocados en imágenes desplegados en el mundo real como cajas negras: ¿cómo podemos atacarlos de manera efectiva mientras minimizamos nuestra cantidad de consultas?

También recuerde que para tener prácticamente cualquier esperanza de que un ataque adversario funcione contra un modelo de caja negra, ¡necesita conocer las características de entrada! Con imágenes, esto es obvio, pero para los sistemas del mundo real esto puede volverse más complicado y puede requerir ingeniería inversa para comprender los mecanismos de extracción de características.

Y, por último, recuerde que los modelos ML son una "solución viva", como dijo Lee Holmes: "Lo único que se debe tener en cuenta con los modelos o firmas ML es que nunca se 'terminan'. Si no se vuelve a capacitar según falsos positivos y falsos negativos, has perdido". Para abreviar, omití muchas de las preocupaciones del mundo real para la implementación y el mantenimiento del modelo. El subcampo emergente de MLOps se ocupa de muchos de estos problemas, y planeo revisar la practicidad de implementar los modelos que hemos discutido a lo largo de esta serie a medida que aprenda más sobre esta disciplina emergente.

Pero que pasa con las defensas??!!?

Sí, lo sé, lo sé, por favor no me digan que soy un jugador irresponsable del equipo rojo. Redactaré una publicación de seguimiento que reflexione sobre algunas de las defensas en torno a este espacio problemático, sin embargo, todavía estoy tratando de ponerme de pie para cosas como la destilación y el entrenamiento de adversarios. Pero los dejaré con una idea que el padrino adversario de ML, Ian Goodfellow, declaró hace unos cuatro años:

También es importante enfatizar que todas las defensas hasta el momento se basan en modelos de amenazas poco realistas donde el atacante está muy limitado... como problema de investigación, ha sido muy difícil de resolver incluso en la versión limitada y sigue siendo un área de investigación muy activa con un muchos desafíos importantes que resolver.

Para el trabajo futuro en esta área específica, aquí hay algunos objetivos generales que espero alcanzar:

Ahora que estamos al final de esta manguera de información repartida en tres publicaciones, espero que hayan disfrutado leyendo este material tanto como yo disfruté investigarlo y escribirlo. Este ha sido un viaje largo pero gratificante para mí, y si esto ha despertado su interés en este campo, ¡salte! Puede unirse a nosotros en DEF CON AI Village Discord, el canal #DeepThought en BloodHound Slack, o no dude en enviarme un correo electrónico a will [at] harmj0y.net.

Learning Machine Learning Parte 3: Atacar modelos de caja negra se publicó originalmente en Publicaciones de los miembros del equipo de SpecterOps en Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.

*** Este es un blog sindicado de Security Bloggers Network de Posts By SpecterOps Team Members - Medium escrito por Will Schroeder. Lea la publicación original en: https://posts.specterops.io/learning-machine-learning-part-3-attacking-black-box-models-3efffc256909?source=rss----f05f8696e3cc---4

caja blanca caja negra Un ataque de caja blanca ataque de caja negra extracción de modelo transferibilidad de ataque Nota al margen: entradas y arquitecturas del modelo Los ejemplos adversos que afectan a un modelo a menudo afectan a otro modelo, incluso si los dos modelos tienen arquitecturas diferentes o fueron entrenados en diferentes conjuntos de entrenamiento, siempre ya que ambos modelos fueron entrenados para realizar la misma tarea. transferibilidad de extracción de modelo BlackBox.ipynb ¡todo esto es realmente solo un problema de optimización! estudio de la función objetiva, ¡no tenemos que usar Optuna solo para el ajuste de hiperparámetros! Nuestro objetivo general: la extracción del modelo del modelo de destino, ¡todo esto es solo un problema de optimización! Mi esperanza es que la comunidad académica adversaria de aprendizaje automático
COMPARTIR