estranho binário do Linux

3

Eu tenho um arquivo executável que não está se prestando para desmontar ou decompilar bem como de costume / esperado.

file e ldd estão gerando uma saída diferente da usual:

$ file exe_file
exe_file: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), statically linked, stripped

$ ldd exe_file
    not a dynamic executable

strings também está dando dicas de que algo está errado:

$strings exe_file
UPX!
.....
PROT_EXEC|PROT_WRITE failed.
$Info: This file is packed with the UPX executable packer http://upx.sf.net $
$Id: UPX 3.91 Copyright (C) 1996-2013 the UPX Team. All Rights Reserved. $

Além disso:

$ ls -la exe_file
-rwxr-xr-x 1 root root 59896 Jan 22 15:26 exe_file

O que está acontecendo?

    
por Rui F Ribeiro 24.01.2018 / 03:39

1 resposta

5

A partir das assinaturas dos relatórios, estamos lidando com um arquivo executável UPX .

UPX is a free, portable, extendable, high-performance executable packer for several executable formats.

Normalmente, o UPX é usado para empacotar / mascarar binários / malware / vírus, pois suas assinaturas / núcleos estão na lista de permissões da maioria das soluções antivírus.

Lembre-se de que, em alguns arquivos executáveis de malware, o UPX pode ser a camada externa, e você pode ter outro empacotador "interno" de outras tecnologias de compactação após compactar a camada UPX.

Para descompactar o binário, é necessário instalar o upx .

Instalando o UPX no MacOS usando MacPorts:

sudo port install upx

Instalando o UPX no Debian e derivados:

sudo apt-get install upx-ucl

Para descompactar o arquivo binário executável:

upx -d exe_file

Para empacotá-lo:

upx exe_file

Para comparação, após descompactar exe_file com:

upx -d exe_file

Nós reexecutamos os comandos na pergunta e os resultados são bem diferentes:

$ file exe_file
exe_file: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=3c233e12c466a83aa9b2094b07dbfaa5bd10eccd, stripped

$ ldd exe_file
    linux-vdso.so.1 (0x00007ffd431d3000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f7f7fb7d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7f7f7de000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f7f7f56b000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7f7f367000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f7f7ffc6000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7f7f14a000)

# ls -la exe_file
-rwxr-xr-x 1 root root 130736 Jan 22 15:26 exe_file

questão relacionada Entendendo o que um binário do Linux está fazendo

    
por 24.01.2018 / 03:39