奇妙なLinuxバイナリ

奇妙なLinuxバイナリ

いつものように見事に分解またはデコンパイルされない実行可能ファイルがあります。

fileldd通常とは異なる出力を提供します。

$ 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いくつかのヒントも提供されています。

$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. $

返品:

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

何が問題なの?

答え1

流出者の署名で判断すると、我々は複雑な問題に対処UPX実行可能ファイル。

UPXは、さまざまな実行可能フォーマットのための無料、移植可能、拡張可能な高性能実行可能パッカーです。

通常UPXバイナリ/悪意のあるプログラム/ウイルスのパッケージング/ブロックに使用されます。これは、署名/核心がほとんどのウイルス対策ソリューションでホワイトリストに登録されているためです。

一部のマルウェア実行ファイルでは、UPXは外部層になる可能性があり、UPX層を「圧縮解除」した後に別のパッケージング/圧縮技術を使用する別の「内部」パッカーがあります。

バイナリを解凍するにはupx

MacPortsを使用してMacOSにUPXをインストールします。

sudo port install upx

Debianとその派生製品にUPXをインストールします。

sudo apt-get install upx-ucl

実行可能なバイナリを解凍しました:

upx -d exe_file

パッケージ化:

upx exe_file

比較のために解凍した後exe_file

upx -d exe_file

質問からコマンドを再実行しましたが、結果はかなり異なりました。

$ 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

関連質問Linuxバイナリが実行するタスクの理解

関連情報