Pensando em ataques a WAFs baseados em Machine Learning

Franco Piergallini Guida    20 octubre, 2020
Pensando em ataques a WAFs baseados em Machine Learning

Uma das peças fundamentais para a correta implementação do machine e deep learning são os dados. Esses tipos de algoritmos precisam consumir, em alguns casos, uma grande quantidade de dados para encontrar uma combinação de “parâmetros” internos que os permitam generalizar ou aprender, a fim de prever novas entradas. Se você está familiarizado com a segurança de computadores, provavelmente o que notou é que os dados são o que sobra, a segurança é sobre os dados e nós os encontramos representados de diferentes maneirasfiles, logs, network packets, etc.

Normalmente, esses dados são analisados ​​manualmente , por exemplo, usando file hashes, regras personalizadas como assinaturas e heurísticas definidas manualmente. Esses tipos de técnicas exigem muito trabalho manual para acompanhar as mudanças no cenário das ameaças cibernéticas, que crescem dramaticamente exponencialmente a cada dia. Em 2016, havia cerca de 597 milhões de executáveis ​​de malware exclusivos conhecidos pela comunidade de segurança de acordo com a AVTEST e, até agora, em 2020, há mais de um bilhão.

Imagem 1: fonte https://www.av-test.org/es/estadisticas/software-malicioso/

Para este volume de dados, uma análise manual de todos os ataques é humanamente impossível. Por esse motivo, algoritmos deep e machine learning são amplamente utilizados em segurança, por exemplo: antivírus para detectar malware, firewall para detectar atividades suspeitas na rede, SIEMs para identificar tendências suspeitas em dados, entre outros.

Assim como um cibercriminoso pode explorar uma vulnerabilidade em um firewall para obter acesso a um web serveros algoritmos de machine learning também são suscetíveis a um possível ataque, como vimos nestas duas partes anteriores: Adversarial Attacks, o inimigo da inteligência artificial 1 e Adversarial Attacks, o inimigo da inteligência artificial 2. Por tanto, antes de colocar tais soluções na linha de fogo, é fundamental considerar suas fraquezas e entender o quão maleáveis ​​elas são sob estresse.

Exemplos de ataques a WAF

Vejamos alguns exemplos de ataques a dois WAFs, onde cada um cumpre um objetivo simple: detectar XSS e sites maliciosos analisando o texto de um URL específico. A partir de grandes sets de dados, onde XSS e sites maliciosos foram rotulados corretamente, um algoritmo do tipo logistic regression foi treinado para prever se ele é malicioso ou não.

Os sets de dados para XSS e para sites maliciosos usados ​​para treinar esses dois algoritmos de logistic regression são basicamente uma coleção de URLs classificados como “bons” e “ruins”:

Imagem 2: URLs maliciosos
Imagem 3: XSS
Imagem 3: XSS

Onde os dados de setembro contêm 420.000 URLs de sites maliciosos entre bons e ruins e, do lado do XSS, existem 1.310.000.

Por se tratar de um ataque de white box, temos acesso a todo o processo e manipulação de dados para treinamento do algoritmo. Portanto, podemos perceber que o primeiro passo nos dois cenários é aplicar uma técnica chamada TF-IDF (Term frecuency – Inverse document frecuency), que nos dará uma importância a cada um dos termos dada sua frequência de aparecimento em cada um dos URLs em nossos conjuntos de dados.

De nosso objeto TF-IDF podemos obter o vocabulário gerado para ambos os casos, e uma vez que o algoritmo seja treinado podemos acessar facilmente e ver quais desses termos lhe conferem maior peso. Por sua vez, a partir desses termos, podemos facilmente manipular o output do algoritmo. Vejamos o caso da classificação de sites maliciosos.

Classificação de sites maliciosos

De acordo com o algoritmo, se algum desses termos aparecer em um URL, há uma grande probabilidade de que seja um site não malicioso:

Imagem 4: peso dos termos para considerá-los NÃO maliciosos
Imagem 4: peso dos termos para considerá-los NÃO maliciosos

Isso significa que, simplesmente adicionando um desses termos ao meu URL malicioso, poderei influenciar o algoritmo ao máximo à minha mercê. Tenho meu URL malicioso que o algoritmo detecta com certeza de que é realmente um site malicioso:

Imagem 5: URL malicioso
Imagem 5: URL malicioso

Com 90% de confiança, ele classifica o URL como malicioso. Mas se adicionarmos o termo ‘photobucket’ ao URL, o algoritmo já o classifica como “bom”:

Imagem 6: URL malicioso com um termo que dá "confiança"
Imagem 6: URL malicioso com um termo que dá “confiança”

Poderíamos até mesmo aumentar essa probabilidade simplesmente adicionando outro termo ao URL, por exemplo “2011”:

Imagem 7: URL com 2 termos que dão "confiança"
Imagem 7: URL com 2 termos que dão “confiança”

Vamos passar para o cenário XSS. Temos um payload que o algoritmo classifica corretamente como XSS e com 99% de confiança (neste exemplo, o label 1 corresponde a XSS e 0 a não XSS):

Imagem 8: Carga útil XSS detectável
Imagem 8: Carga útil XSS detectável

Vejamos os termos com menor peso para inverter essa previsão:

Imagem 9: peso dos termos para diminuir a previsão de ataque XSS
Imagem 9: peso dos termos para diminuir a previsão de ataque XSS

Como fizemos antes, adicionamos alguns desses termos para manipular a saída do algoritmo. Após alguns testes, encontramos o payload que inverte a previsão, tivemos que adicionar o termo “t / s” cerca de 700 vezes para atingir a meta:

Imagem 10: carga útil capaz de inverter a previsão XSS
Imagem 10: carga útil capaz de inverter a previsão XSS

E com certeza, nosso algoritmo prevê isso como NO XSS:

Imagem 11: Sem detecção de XSS devido à carga útil usada
Imagem 11: Sem detecção de XSS devido à carga útil usada

Caso alguém se interesse pelo assunto, deixamos para eles os links dos projetos WAF de sites maliciosos e do WAF de XSS . Algumas referências foram retiradas do livro Malware Data Science.

Ter acesso às etapas e modelos de pré-processamento de dados torna mais fácil gerar esses tipos de ataques. Se o invasor não tivesse acesso a eles, seria um esforço maior para encontrar o pré-processamento correto dos dados e a arquitetura ou algoritmo do modelo preditivo. No entanto, ainda é possível recriar esses ataques usando outras técnicas, como transferibilidade, em que amostras adversárias que são especificamente projetadas para causar classificação incorreta em um modelo também podem causar classificações incorretas em outros modelos treinados independentemente. Mesmo quando os dois modelos são suportados por algoritmos ou infraestruturas claramente diferentes.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *