Executando binários ELF no OSX

11

Tenho uma pergunta relacionada ao CTF e queria saber se alguém pode me indicar a direção certa.

Eu trabalho no OSX Yosemite e estava passando por alguns jogos de guerra e desafios mais antigos do CTF. Meu objetivo é executar o binário ELF do desafio "nativamente" no meu iterm (depois de scp localmente), embora perceba que apenas os binários MACH podem ser executados pelo sistema subjacente.

No entanto, isso é possível através da emulação, talvez (por exemplo, QEMU) ou qualquer outro método, a fim de evitar a abertura de uma VM inteira apenas para executar um binário?

Agradeço antecipadamente.

nilminus
fonte
Esse problema é relevante à segurança, pois é encontrado principalmente em CTFs de segurança e jogos de guerra (foi assim que fiquei preso nisso). Acredito que a comunidade de segurança tenha maiores chances de encontrar esse tópico específico. Vou tentar lá também.
Nilminus 28/08/2015
3
Sua pergunta não é sobre segurança, é sobre a execução de binários.
Neil Smithline

Respostas:

2

Por si só, os binários da ELF não significam nada. Poucos binários são executados sozinhos - você precisaria de bibliotecas, APIs e ABIs e outras coisas brilhantes.

Ao executar o QEMU, você ainda precisa da maior parte do sistema operacional - apenas que não esteja tão intimamente ligado ao sistema host que suspeito.

Em teoria, se você tivesse algo como 'wine', mas agindo como um linux (ou outro * nix syle OS) -> camada de compatibilidade com o OS X, poderia obter o que deseja, mas esse animal não existe.

Portanto, não, você não pode executar um binário ELF pré-compilado arbitrário no OS X

Journeyman Geek
fonte
11
Esta pergunta refere-se a um cenário de segurança bastante específico no espaço do superusuário. imagine um binário estático (bibliotecas compiladas na imagem em vez de vinculadas dinamicamente) que um invasor deseja colocar em um sistema de destino e executar (esse é um cenário básico de jogo de segurança do CTF). ele não precisará de bibliotecas externas, embora o seu ponto de vista sobre ABIs (por exemplo, syscalls) seja justo. você está certo no caso geral, mas esta questão não é especificamente sobre o caso geral. imho não deveria ter sido movido do site de segurança.
quixotic
2

A resposta é provavelmente: depende de como o arquivo ELF foi gerado.

Com base neste artigo e nesta frase:

  • Um equívoco comum é que os arquivos ELF são apenas para executáveis ​​...
  • Já vimos que eles podem ser usados ​​para peças parciais ...

Nem todos os arquivos ELF serão executados, mesmo se você tiver uma configuração adequada.

Com base neste artigo , há um grupo de arquivos ELF chamado FatELF:

  • FatELF é um formato de arquivo que incorpora vários binários ELF para diferentes arquiteturas em um arquivo
  • Envie um arquivo que funcione no Linux e no FreeBSD

Com base nesta página da Apple

  • A parte BSD do kernel do OS X é derivada principalmente do FreeBSD

Portanto, para o Mac OS X, o FatELF é o "começo da resposta".

E, finalmente, com base nesta página :

Conversor de arquivo de objeto

Esse utilitário pode ser usado para converter arquivos de objeto entre os formatos COFF / PE, OMF, ELF e Mach-O para todas as plataformas x86 de 32 e 64 bits. Pode modificar os nomes dos símbolos nos arquivos de objetos. Pode construir, modificar e converter bibliotecas de funções entre plataformas . Pode despejar arquivos de objetos e arquivos executáveis. Também inclui um desmontador muito bom que suporta os conjuntos de instruções SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP e Knights Corner. Código-fonte incluído (GPL).

Você tem a chance de ativar o que deseja.

PS: existe outra página sobre o XBinary , não a analisei .

Este documento discute o XBinary, um novo software que permite adicionar suporte no nível do kernel para a execução de arquivos em formatos binários arbitrários no Mac OS X

apagando_tudo
fonte