
Engenharia reversa de software usando um simulador de sistema completo
RESim é uma ferramenta de análise dinâmica de sistemas que fornece insights detalhados sobre processos, programas e fluxo de dados em computadores em rede. RESim simula redes de computadores através do uso dos modelos de alta fidelidade da plataforma Simics de processadores, dispositivos periféricos (por exemplo, placas de interface de rede) e discos. Os modelos de plataforma de computadores em rede carregam e executam software alvo copiado de imagens extraídas dos sistemas físicos simulados.
RESim auxilia na engenharia reversa e análise de vulnerabilidades de redes de sistemas baseados em Linux e Windows, inventariando processos em termos dos programas que executam e dos dados que consomem. Fontes de dados incluem arquivos, interfaces de dispositivos e mecanismos de comunicação entre processos. A execução de processos e o consumo de dados são documentados por meio de análise dinâmica de um sistema simulado em execução, sem instalação ou injeção de software no sistema simulado, e sem conhecimento detalhado do kernel que hospeda os processos.
RESim também fornece visibilidade interativa em programas executados individualmente através de plug-ins para os desmontadores/depuradores IDA Pro e Ghidra. O desmontador/depurador permite definir pontos de interrupção para pausar a simulação em eventos selecionados no tempo futuro ou passado[2]. Por exemplo, o RESim pode direcionar o estado da simulação para reverter até a modificação mais recente de um endereço de memória selecionado.
Checkpoints recarregáveis podem ser gerados a qualquer momento durante a execução do sistema.
Uma simulação do RESim pode ser pausada para inspeção, por exemplo, quando um processo especificado é escalonado para execução, e posteriormente continuada, potencialmente com estado de memória ou registradores alterados. O analista pode modificar explicitamente o conteúdo da memória ou registradores, e também pode aumentar dinamicamente a memória com base em eventos do sistema, por exemplo, alterar uma entrada de arquivo de senha quando lida pelo programa su.
A análise é realizada inteiramente através da observação do estado da memória e do processador do sistema alvo simulado, sem necessidade de shells, injeção de software ou tabelas de símbolos do kernel. Diz-se que a análise é externa porque as funções de observação não têm efeito no estado do sistema simulado.
RESim foi integrado ao fuzzer American Fuzzing Lop (AFL). Este sistema de fuzzing injeta dados fuzzeados diretamente no buffer de leitura da aplicação, simplificando a configuração e o fluxo de trabalho do fuzzing. RESim reproduz e analisa automaticamente quaisquer crashes detectados, identificando as causas dos crashes, por exemplo, corrupção do controle de execução.
Consulte o Guia do Usuário do RESim para obter informações adicionais. Uma breve demonstração do RESim pode ser vista aqui: (https://nps.box.com/s/rf3n104ualg38pon6b7fm6m6wqk9zz50)
Imagens de disco de exemplo são descritas neste readme
RESim é derivado de uma plataforma de análise forense e verificação de software criada para o DARPA Cyber Grand Challenge. Esse repositório está aqui: https://github.com/mfthomps/cgc-monitor. Um artigo descrevendo esse trabalho está em https://www.sciencedirect.com/science/article/pii/S1742287618301920 E um excelente resumo do uso do Simics no CGC Monitor está em https://software.intel.com/content/www/us/en/develop/blogs/simics-software-automates-cyber-grand-challenge-validation.html
[1]Simics é um simulador de sistema completo desenvolvido pela Intel, que detém todas as marcas registradas relevantes. [2]Simics 7 tornou obsoleta a "execução reversa", mas o RESim a adiciona de volta.
This software was created by United States Government employees
and may not be copyrighted.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.