
Um fuzzer multi-plataforma para sondar binários de espaço de usuário, clientes e servidores de rede.
Um fuzzer multi-plataforma para cutucar binários de espaço de usuário, clientes e servidores.
Ele encontrou bugs em mais de 50 aplicativos e bibliotecas de grandes empresas e código aberto.
Configuração simples para começar a fuzzar no Linux, Mac e Windows.
O Litefuzz tem um propósito: fuzzar e fazer triagem em todas as principais plataformas, suportar aplicativos CLI/GUI, clientes de rede e servidores para encontrar bugs relacionados à segurança.
Ele simplifica o processo e facilita a descoberta de bugs de segurança em muitos alvos diferentes, entre plataformas, fazendo apenas algumas concessões honestas.
Ele não foi construído para velocidade, escalabilidade ou para ganhar prêmios na academia. Aplica técnicas simples em vários ângulos para produzir resultados. Para fuzzing de arquivos baseado em console, você provavelmente deve usar apenas o AFL. Ele tem desempenho superior, capacidades de instrumentação (e execuções não instrumentadas mais rápidas), escala e pode criar malditos jpegs do nada. Para fuzzing de rede, o mutiny fuzzer também funciona bem se você tiver PCAPs para reproduzir e o frizzer parece promissor também. Mas se você quiser experimentar este, ele pode fuzzar esses tipos de alvos em todas as plataformas com apenas uma única ferramenta.
./ e dê ao seu alvo... um lite fuzz.``` $ sudo apt install -y latex2rtf
$ ./litefuzz.py -l -c "latex2rtf FUZZ" -i input/tex -o crashes/latex2rtf -n 1000 -z --========================-- --======| litefuzz |======-- --========================--
[STATS] run id: 3516 cmdline: latex2rtf FUZZ crash dir: crashes/latex2rtf input dir: input/tex inputs: 1 iterations: 1000 mutator: random(mutators)
@ 1000/1000 (3 crashes, 127 duplicates, ~0:00:00 remaining)
[RESULTS]
completed (1000) iterations with (3) unique crashes and 127 dups
check crashes/latex2rtf for more details
Este é um alvo local simples que o AFL++ é perfeitamente capaz de lidar e foi dado apenas como um exemplo rápido. A Litefuzz foi projetada para fazer muito mais em termos de fuzzing de rede e GUI, como você verá ao se aprofundar.
## por quê
Sim, outro fuzzer e um que não acompanha muito bem as tendências e convenções atuais. Compensações foram feitas para atender a certos requisitos. Esses requisitos são: um fuzzer que funcione por padrão em múltiplas plataformas, que fuzze tanto alvos locais quanto de rede e que seja muito fácil de usar. Não estou tentando convencer ninguém de nada, mas vamos fornecer algum contexto. Alguns alvos exigem muito esforço para integrar fuzzers como AFL à cadeia de construção. Isso não é um problema, pois este fuzzer não requer instrumentação, sacrificando a cobertura precisa obtida pela instrumentação em prol da facilidade e portabilidade. O AFL também não suporta fuzzing de rede nativamente, e embora existam projetos baseados nele que o façam, eles estão longe de serem diretos de usar e geralmente exigem mais modificações de código e harnesses para funcionar (história semelhante com [Libfuzzer](https://llvm.org/docs/LibFuzzer.html)).
Ele não faz fuzzing paralelo, nem suporta algo como as melhorias de velocidade impressionantes que o [modo persistente](https://lcamtuf.blogspot.com/2015/06/new-in-afl-persistent-mode.html) pode fornecer, portanto não consegue escalar nem perto de fuzzers com tais capacidades. Novamente, este não é um fuzzer de última geração. Mas não requer código-fonte, configurar uma build adequadamente ou certos recursos do SO. Ele pode até fuzzer algumas GUIs de clientes de rede e aplicativos interativos. Ele vive "da terra" de várias maneiras e muitos dos recursos, como mutadores e minimização, foram escritos do zero.
Ele foi projetado para "simplesmente funcionar" e esforço foi investido na automação da configuração e instalação das poucas dependências que precisa. Este fuzzer foi escrito para servir a um propósito, para fornecer valor em muitos cenários e ambientes de alvos diferentes e, mais importante, pelo que todos os fuzzers devem ser julgados: a capacidade de encontrar bugs. E **ele encontra** [bugs](https://github.com/sec-tools/beta/blob/main/README.md#trophies). Ele não presume que exista código-fonte do alvo, então pode cobrir software fechado razoavelmente bem. Pode ser executado como parte de automação com pouca modificação, mas é voltado para ser divertido de usar para pesquisadores de vulnerabilidades. No entanto, é mais útil pensar nele como um projeto de P&D, em vez de um produto completo. Além disso, não há configuração complicada onde ele esteja ligeiramente quebrado de fábrica ou precise de mais trabalho para funcionar em sistemas operacionais modernos.