이상한 리눅스 바이너리

이상한 리눅스 바이너리

평소/예상만큼 훌륭하게 분해되거나 디컴파일되지 않는 실행 파일이 있습니다.

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 바이너리가 수행하는 작업 이해

관련 정보