Que é Fuzzing?

Que é fuzzing

Introdución: Que é Fuzzing?

En 2014, piratas informáticos chineses pirateado en sistemas de saúde comunitarios, unha cadea de hospitales dos Estados Unidos con ánimo de lucro, e roubou os datos de 4.5 millóns de pacientes. Os hackers explotaron un erro chamado Heartbleed que foi descuberto na biblioteca de criptografía OpenSSL uns meses antes do hackeo.

Heartbleed é un exemplo dunha clase de vectores de ataque que permite aos atacantes acceder a un obxectivo enviando solicitudes incorrectas o suficientemente válidas como para pasar comprobacións preliminares. Aínda que os profesionais que traballan en diferentes partes dunha aplicación fan todo o posible para garantir a súa seguridade, é imposible pensar en todos os casos de esquina que poidan romper unha aplicación ou facelo vulnerable durante o desenvolvemento.

Aquí é onde entra o "fuzzing".

Que é un ataque fuzzing?

Fuzzing, proba fuzz ou ataque fuzzing, é unha técnica de proba de software automatizada que se usa para introducir datos aleatorios, inesperados ou non válidos (chamados fuzz) nun programa. O programa está supervisado para detectar comportamentos pouco habituais ou inesperados, como desbordamentos do búfer, fallos, fugas de memoria, bloqueos de fíos e infraccións de acceso de lectura/escritura. A ferramenta de fuzzing ou fuzzer úsase entón para descubrir a causa do comportamento inusual.

O fuzzing baséase na suposición de que todos os sistemas conteñen erros á espera de ser descubertos, e pódense dar tempo e recursos suficientes para facelo. A maioría dos sistemas teñen moi bos analizadores ou que evitan a validación de entrada ciberdelincuentes de explotar calquera erro hipotético nun programa. Non obstante, como mencionamos anteriormente, é difícil cubrir todos os casos de esquina durante o desenvolvemento.

Os fuzzers úsanse en programas que reciben entradas estruturadas ou teñen algún tipo de límite de confianza. Por exemplo, un programa que acepte ficheiros PDF terá algunha validación para garantir que o ficheiro ten unha extensión .pdf e un analizador para procesar o ficheiro PDF.

Un fuzzer eficaz pode xerar entradas o suficientemente válidas como para superar estes límites pero o suficientemente inválidas como para provocar un comportamento inesperado máis abaixo no programa. Isto é importante porque só ser capaz de superar as validacións non significa moito se non se causa máis dano.

Os fuzzers descobren vectores de ataque moi similares e inclúen a inxección de SQL, a creación de secuencias de comandos entre sitios, o desbordamento do búfer e os ataques de denegación de servizo. Todos estes ataques son o resultado de introducir datos inesperados, non válidos ou aleatorios nun sistema. 

 

Tipos de Fuzzers

Os fuzzers pódense clasificar en función dalgunhas características:

  1. Obxectivos de ataque
  2. Método de creación de fuzz
  3. Coñecemento da estrutura de entrada
  4. Coñecemento da estrutura do programa

1. Obxectivos de ataque

Esta clasificación baséase no tipo de plataforma na que se está a probar o fuzzer. Os fuzzers úsanse habitualmente con protocolos de rede e aplicacións de software. Cada plataforma ten un tipo particular de entrada que recibe e, polo tanto, require diferentes tipos de fuzzers.

Por exemplo, cando se trata de aplicacións, todos os intentos de fuzzing ocorren nas distintas canles de entrada da aplicación, como a interface de usuario, o terminal de liña de comandos, as entradas de formularios/texto e as cargas de ficheiros. Polo tanto, todas as entradas xeradas polo fuzzer teñen que coincidir con estas canles.

Os fuzzers que tratan con protocolos de comunicación teñen que tratar con paquetes. Os fuzzers dirixidos a esta plataforma poden xerar paquetes falsificados ou incluso actuar como proxies para modificar os paquetes interceptados e reproducilos.

2. Método de creación de fuzz

Os fuzzers tamén se poden clasificar en función da forma en que crean datos para fuzz. Históricamente, os fuzzers crearon fuzz xerando datos aleatorios desde cero. Así o fixo inicialmente o profesor Barton Miller, o iniciador desta técnica. Este tipo de fuzzer chámase a fuzzer baseado na xeración.

Non obstante, aínda que teoricamente se poderían xerar datos que superen un límite de confianza, levaría moito tempo e recursos facelo. Polo tanto, este método adoita utilizarse para sistemas con estruturas de entrada sinxelas.

Unha solución a este problema é mutar os datos que se sabe que son válidos para xerar datos o suficientemente válidos como para pasar un límite de confianza, pero o suficientemente inválidos como para causar problemas. Un bo exemplo diso é a Fuzzer DNS que toma un nome de dominio e despois xera unha gran lista de nomes de dominio para detectar dominios potencialmente maliciosos dirixidos ao propietario do dominio especificado.

Este enfoque é máis intelixente que o anterior e reduce significativamente as posibles permutacións. Os fuzzers que usan este método chámanse fuzzers baseados en mutacións

Hai un terceiro método máis recente que fai uso de algoritmos xenéticos para converxer nos datos fuzz óptimos necesarios para eliminar vulnerabilidades. Funciona perfeccionando continuamente os seus datos fuzz, tendo en conta o rendemento de cada dato de proba cando se introduce nun programa. 

Os conxuntos de datos con peor rendemento elimínanse do conxunto de datos, mentres que os mellores son mutados e/ou combinados. A nova xeración de datos úsase entón para probar de novo. Estes fuzzers denomínanse Fuzzers baseados en mutacións evolutivas.

3. Coñecemento da estrutura de entrada

Esta clasificación baséase en se un fuzzer coñece e utiliza activamente a estrutura de entrada dun programa para xerar datos fuzz. A fuzzer mudo (un fuzzer que descoñece a estrutura de entrada dun programa) xera fuzz de forma maioritariamente aleatoria. Isto podería incluír fuzzers baseados tanto na xeración como na mutación. 


Se se fornece un fuzzer co modelo de entrada dun programa, o fuzzer pode tentar xerar ou mutar datos para que coincidan co modelo de entrada proporcionado. Este enfoque reduce aínda máis a cantidade de recursos gastados en xerar datos non válidos. Tal fuzzer chámase a fuzzer intelixente.

4. Coñecemento da estrutura do programa

Os fuzzers tamén se poden clasificar en función de se coñecen o funcionamento interno do programa que están difuminando e usan esa conciencia para axudar á xeración de datos fuzz. Cando se usan fuzzers para probar un programa sen comprender a súa estrutura interna, denomínase proba de caixa negra. 

Os datos de fuzz xerados durante as probas de caixa negra adoitan ser aleatorios a menos que o fuzzer sexa un fuzzer baseado en mutacións evolutivas, onde "aprende" supervisando o efecto da súa fuzzing e usando iso. información para refinar o seu conxunto de datos fuzz.

Por outra banda, as probas de caixa branca usan un modelo da estrutura interna do programa para xerar datos fuzz. Este enfoque permite que un fuzzer chegue a lugares críticos dun programa e probalo. 

Ferramentas de Fuzzing populares

Hai moitos fuzzings ferramentas aí fóra usado polos probadores de pluma. Algúns dos máis populares son:

Limitacións do Fuzzing

Aínda que Fuzzing é unha técnica de proba de pluma realmente útil, non está exenta de defectos. Algúns destes son:

  • Leva bastante tempo correr.
  • Os fallos e outros comportamentos inesperados atopados durante as probas de caixa negra dun programa poden ser difíciles, se non imposibles de analizar ou depurar.
  • Crear modelos de mutación para fuzzers intelixentes baseados en mutacións pode levar moito tempo. Ás veces, quizais non sexa posible porque o modelo de entrada é propietario ou descoñecido.

 

Non obstante, é unha ferramenta bastante útil e necesaria para quen queira descubrir erros antes que os malos.

Conclusión

Fuzzing é unha poderosa técnica de proba de pluma que se pode usar para descubrir vulnerabilidades no software. Hai moitos tipos diferentes de fuzzers, e novos fuzzers estanse desenvolvendo todo o tempo. Aínda que o fuzzing é unha ferramenta incriblemente útil, ten as súas limitacións. Por exemplo, os fuzzers só poden atopar tantas vulnerabilidades e poden consumir bastante recursos. Non obstante, se queres probar esta incrible técnica por ti mesmo, temos un API gratuíta de DNS Fuzzer que podes usar na nosa plataforma. 

¿Que esperas? 

Comeza a fumar hoxe!

Evitando a censura TOR

Evitando a censura de Internet con TOR

Evitando a censura de Internet con TOR Introdución Nun mundo onde o acceso á información está cada vez máis regulado, ferramentas como a rede Tor convertéronse en cruciais para

Le máis "