
Kit de ferramentas abrangente para Ghidra headless.
Este projeto foi realmente divertido e meu primeiro "grande" projeto! Soluções melhores, mais inteligentes e mais robustas existem agora: https://github.com/LaurieWired/GhidraMCP
Até mais, cowboy espacial.
Este Toolkit Ghidra é um conjunto abrangente de ferramentas projetado para simplificar e automatizar várias tarefas associadas à execução do Ghidra em modo Headless. Este toolkit fornece uma ampla gama de scripts que podem ser executados tanto dentro quanto ao lado do Ghidra, permitindo que os usuários realizem tarefas como Caça a Vulnerabilidades, Comentários de Pseudocódigo com ChatGPT e Geração de Relatórios com Visualização de Dados na base de código analisada. Ele permite que o usuário carregue e salve seus próprios scripts e interaja com a API integrada do script.
Automação em Modo Headless: O toolkit permite que os usuários iniciem e executem o Ghidra em modo Headless de forma contínua, possibilitando processamento automatizado e em lote de tarefas de análise de código.
Repositório/Gerenciamento de Scripts: O toolkit inclui um repositório de scripts pré-construídos que podem ser executados dentro do Ghidra. Esses scripts cobrem várias funcionalidades, capacitando os usuários a realizar tarefas diversas de análise e manipulação. Permite que os usuários carreguem e salvem seus próprios scripts, oferecendo flexibilidade e opções de personalização para seus requisitos específicos de análise. Os usuários podem gerenciar e organizar facilmente sua coleção de scripts.
Opções Flexíveis de Entrada: Os usuários podem utilizar o toolkit para analisar arquivos individuais ou pastas inteiras contendo vários arquivos. Essa flexibilidade permite uma análise eficiente tanto de bases de código de pequena escala quanto de grande escala.
Antes de usar este projeto, certifique-se de ter o seguinte software instalado:
pip install sekiryu.Para usar o script, basta executá-lo contra um binário com as opções que deseja executar.
sekiryu [-F ARQUIVO][OPÇÕES]Observe que realizar uma análise binária com Ghidra (ou qualquer outro produto) é um processo relativamente lento. Portanto, espere que a análise binária leve vários minutos, dependendo do desempenho do host. Se você executar o Sekiryu em um aplicativo muito grande ou em uma grande quantidade de arquivos binários, esteja preparado para ESPERAR
O "server.py" é basicamente construído para permitir que scripts interajam com o Ghidra entre si e com o sistema host.
Um usuário pode facilmente desenvolver seu próprio script, carregá-lo e salvá-lo na pasta de scripts e usar as funções conhecidas
da API para interagir com o Ghidra.
Para usá-lo, o usuário deve importar xmlrpc em seu script e chamar a função como, por exemplo: proxy.send_data
Os scripts são salvos na pasta /modules/scripts/; você pode simplesmente copiar seu script para lá.
No arquivo ghidra_pilot.py, você pode encontrar a seguinte função, que é responsável por executar um script headless do Ghidra:
def exec_headless(file, script):
"""
Executa a análise headless do Ghidra
"""
path = ghidra_path + 'analyzeHeadless'
# Configurando variáveis
tmp_folder = "/tmp/out"
os.mkdir(tmp_folder)
cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"
# Executando o Ghidra com o arquivo e script especificados
try:
p = subprocess.run([str(path + cmd)], shell=True, capture_output=True)
os.rmdir(tmp_folder)
except KeyError as e:
print(e)
os.rmdir(tmp_folder)
O uso é bastante direto: você pode criar seu próprio script e depois adicionar uma função no ghidra_pilot.py como:
def yourfunction(file):
try:
# Configurando script
script = "modules/scripts/your_script.py"
# Iniciar a função exec_headless em uma nova thread
thread = threading.Thread(target=exec_headless, args=(file, script))
thread.start()
thread.join()
except Exception as e:
print(str(e))
O arquivo cli.py é responsável pela interface de linha de comando e permite adicionar argumentos e comandos associados como este:
analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Sua Mensagem de Ajuda", action="store_true")
O módulo xmlrpc.server não é seguro contra dados construídos de forma maliciosa. Se você precisar analisar
dados não confiáveis ou não autenticados, consulte Vulnerabilidades XML.
Para mais informações sobre a Bushido Security, visite nosso site: https://www.bushido-sec.com/.