
엔트로피 스캐너 for Linux, 악성코드와 관련된 패킹 또는 암호화된 바이너리를 탐지합니다. 악성 파일과 Linux 프로세스를 찾아내고 암호학적 해시와 함께 출력합니다.
sandfly-entropyscan은 파일이나 실행 중인 프로세스를 빠르게 스캔하여 엔트로피(무작위성 측정)와 Linux/Unix ELF 형식 실행 파일인지 여부를 보고하는 유틸리티입니다. 일부 Linux 맬웨어는 패킹되거나 암호화되어 매우 높은 엔트로피를 보입니다. 이 도구는 높은 엔트로피를 가진 실행 파일과 프로세스를 빠르게 찾을 수 있으며, 이는 종종 악성입니다.
엔트로피는 무작위성의 척도입니다. 바이너리 데이터의 경우 0.0은 무작위가 아니며 8.0은 완전히 무작위입니다. 좋은 암호화는 무작위 백색 소음처럼 보이며 8.0에 가깝습니다. 좋은 압축은 중복 데이터를 제거하여 압축되지 않은 경우보다 더 무작위로 보이게 하며 일반적으로 7.7 이상입니다.
많은 맬웨어 실행 파일은 탐지를 피하고 리버스 엔지니어링을 어렵게 만들기 위해 패킹됩니다. 대부분의 표준 Linux 바이너리는 자신이 무엇인지 숨기려 하지 않기 때문에 패킹되지 않습니다. 높은 엔트로피 파일을 검색하는 것은 높은 엔트로피와 실행 가능이라는 두 가지 속성만으로 악성일 수 있는 프로그램을 찾는 좋은 방법입니다.
sandfly-entropyscan 사용법:
-csv
결과를 CSV 형식으로 출력 (파일명, 경로, 엔트로피, elf_file [true|false], MD5, SHA1, SHA256, SHA512)
-delim
CSV 파일의 기본 구분자 ","를 원하는 구분자("|" 등)로 변경
-dir string
분석할 디렉토리 이름
-file string
분석할 단일 파일의 전체 경로
-proc
실행 중인 프로세스 확인 (기본값은 ELF만 확인)
-elf
ELF 실행 파일만 확인
-entropy float
이 값보다 크거나 같은 엔트로피를 가진 파일/프로세스 표시 (최소 0.0 - 최대 8.0, 기본값 0은 모든 파일 표시)
-version
버전 표시 후 종료
/tmp 아래에서 실행 가능한 모든 파일 검색:
sandfly-entropyscan -dir /tmp -elf
/var/www 아래에서 높은 엔트로피(7.7 이상) 실행 파일(종종 패킹 또는 암호화됨) 검색:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
모든 실행 중인 프로세스의 엔트로피와 암호화 해시를 CSV 형식으로 생성:
sandfly-entropyscan -proc -csv
엔트로피가 7.7보다 높은 프로세스 검색 (패킹 또는 암호화되었을 가능성을 나타냄):
sandfly-entropyscan -proc -entropy 7.7
/bin 아래 모든 파일의 엔트로피와 암호화 해시 값을 생성하고 CSV 형식으로 출력 (예: 해시 저장 및 비교용):
sandfly-entropyscan -dir /bin -csv
엔트로피가 7.7보다 큰 모든 파일(ELF 여부 무관)을 디렉토리에서 스캔: (압축 파일, png, jpg, 오브젝트 파일 등 잠재적으로 큰 파일 목록)
sandfly-entropyscan -dir /path/to/dir -entropy 7.7
파일을 빠르게 확인하고 엔트로피, 암호화 해시 생성 및 실행 파일인지 표시:
sandfly-entropyscan -file /dev/shm/suspicious_file
맬웨어 문제가 있다고 생각되는 시스템을 수시로 점검하십시오. 또는 스캔을 자동화하여 예상치 못한 곳에 높은 엔트로피가 나타나는 경우 출력을 얻을 수 있습니다. 또는 이상한 위치에 있는 실행 가능한 ELF 형식 파일(예: /tmp나 사용자의 HTML 디렉토리에 있는 파일)을 플래그 지정할 수 있습니다. 예:
시스템의 /var/www 디렉토리에 높은 엔트로피 바이너리가 나타났습니까? 누군가 웹사이트에 맬웨어 드롭퍼를 넣었을 수 있습니다:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
cron 작업을 설정하여 /tmp, /var/tmp 및 /dev/shm 디렉토리에서 엔트로피가 높든 아니든 모든 종류의 실행 파일을 스캔하십시오. tmp 디렉토리 아래의 실행 파일은 종종 맬웨어 드롭퍼일 수 있습니다.
sandfly-entropyscan -dir /tmp -elf
sandfly-entropyscan -dir /var/tmp -elf
sandfly-entropyscan -dir /dev/shm -elf
시스템에서 실행 중인 고압축 또는 암호화된 바이너리를 수시로 점검하기 위해 또 다른 cron 또는 자동화된 보안 스위프를 설정하십시오:
sandfly-entropyscan -proc -entropy 7.7
git clone https://github.com/sandflysecurity/sandfly-entropyscan.git
go build
./sandfly-entropyscan
다양한 플랫폼용으로 빌드하는 몇 가지 기본 빌드 스크립트가 있습니다. 이를 사용하여 빌드하거나 필요에 맞게 수정할 수 있습니다. 사고 대응자의 경우 조사 상자에 미리 컴파일된 바이너리를 준비해 두는 것이 유용할 수 있습니다.
build.sh - 실행 시 현재 실행 중인 OS용으로 빌드.
파일이 실행 가능한 ELF 형식인지 확인하기 위해 간단한 방법을 사용합니다. 여러 플랫폼의 ELF 형식 파일을 식별할 수 있습니다. 맬웨어에 Intel/AMD, MIPS 및 Arm 드롭퍼 바이너리가 있더라도 모두 식별할 수 있습니다.
컴파일 방식이나 합법적인 이유로 패킹되어 높은 엔트로피를 가진 합법적인 바이너리를 플래그 지정할 수 있습니다. .zip, .gz, .png, .jpg 등의 다른 파일도 압축 형식이기 때문에 매우 높은 엔트로피를 가집니다. 압축은 파일의 중복성을 제거하여 더 무작위로 보이고 높은 엔트로피를 갖게 만듭니다.
Linux에서 라이브러리 디렉토리를 스캔하면 일부 라이브러리(.so 파일)가 플래그 지정될 수 있습니다.
그러나 높은 엔트로피를 가진 실행 바이너리는 종종 악성이라는 것이 우리의 경험입니다. 특히 실행 파일이 일반적으로 있어서는 안 되는 영역(예: tmp 또는 html 디렉토리)에서 발견되는 경우 더욱 그렇습니다.
엔트로피 계산은 파일의 모든 바이트를 읽고 합산하여 최종 숫자를 얻어야 합니다. 매우 큰 파일 시스템이나 매우 큰 파일에서 많은 CPU 및 디스크 I/O를 사용할 수 있습니다. 프로그램에는 2GB 이상의 파일에 대해 엔트로피를 계산하지 않고 일반 파일 형식이 아닌 파일(예: /dev/zero와 같은 장치)에 대해서도 엔트로피를 계산하지 않는 내부 제한이 있습니다.
그런 다음 MD5, SHA1, SHA256 및 SHA512 해시를 계산합니다. 각각은 파일을 다시 검토해야 합니다. 최신 시스템에서는 적절한 속도이지만 매우 큰 파일 시스템을 크롤링하는 경우 완료하는 데 시간이 걸릴 수 있습니다.
프로그램에 ELF 파일만 보도록 지시하면 ELF 형식이 아닌 한 엔트로피/해시 계산이 발생하지 않으므로 많은 시간을 절약할 수 있습니다(예: 실행 파일이 아닌 대규모 데이터베이스 파일을 무시합니다).
이 프로그램을 자동화하려면 특별히 원하지 않는 한 전체 루트 파일 시스템을 크롤링하지 않는 것이 좋습니다. 대상 접근 방식이 더 빠르고 수시 점검에 더 유용합니다. 또한 ELF 플래그를 사용하면 실행 파일 형식만 처리하므로 검색 시간이 크게 단축됩니다.
사고 대응자의 경우, 전체 최상위 "/" 디렉토리에 대해 sandfly-entropyscan을 실행하여 조사할 가능성이 있는 패킹된 후보 목록을 빠르게 얻는 것이 좋은 생각일 수 있습니다. 이렇게 하면 CPU 및 디스크 I/O가 급증합니다. 하지만 그 시점에서는 관리자가 알아차렸을 때 이미 박스가 598시간 동안 암호화폐를 채굴하고 있었을 것이므로 신경 쓰지 않을 것입니다.
다시 말하지만, ELF 플래그를 사용하여 문제가 될 가능성이 있는 실행 파일 후보에 접근하고 잡음을 무시하십시오.
scripts/testfiles.sh라는 스크립트가 있으며 두 개의 파일을 만듭니다. 하나는 무작위 데이터로 가득 차고 다른 하나는 전혀 무작위가 아닙니다. 스크립트를 실행하면 파일을 만들고 실행 파일 탐지 모드에서 sandfly-entropyscan을 실행합니다. 두 개의 파일이 표시되어야 합니다. 하나는 매우 높은 엔트로피(8.0 또는 그 근처)이고 다른 하나는 0.00의 낮은 엔트로피여야 하는 비무작위 데이터로 가득 찬 파일입니다. 예:
./testfiles.sh
현재 디렉토리에 높은 엔트로피의 무작위 실행 파일 유사 파일을 생성합니다.
현재 디렉토리에 낮은 엔트로피의 실행 파일 유사 파일을 생성합니다.
high.entropy.test, entropy: 8.00, elf: true
low.entropy.test, entropy: 0.00, elf: true
upx 유틸리티를 로드하여 실행 파일을 압축하고 어떤 값이 반환되는지 확인할 수도 있습니다.
Sandfly Security는 Linux용 에이전트 없는 엔드포인트 탐지 및 사고 대응 플랫폼(EDR)을 제공합니다. 자동화된 엔트로피 검사는 Linux 엔드포인트에 소프트웨어를 로드하지 않고 침입자를 찾기 위해 검색하는 수천 가지 중 하나일 뿐입니다.
아래에서 무료 라이선스를 받고 자세히 알아보세요:
https://www.sandflysecurity.com @SandflySecurity