악성코드Linux 보안사이버보안

Bincrypter Linux 악성코드 난독화 탐지하기

2025년 3월 27일
12분 읽기
Sandfly Security Team
Bincrypter Linux 악성코드 난독화 탐지하기

요약

디스크 탐지를 회피하기 위해 실행 파일을 암호화하고 난독화하는 새로운 Linux 스크립트에 대해 설명합니다.

Bincrypter Linux 악성코드 난독화 탐지하기

2025년 3월 27일

악성코드

THC의 새로운 Linux 스크립트는 디스크 탐지를 회피하기 위해 실행 파일이나 스크립트를 암호화하고 난독화합니다. 그런 다음 파일리스 공격으로 디스크에 흔적을 남기지 않는 방식으로 코드를 실행합니다. 꽤 훌륭한 유틸리티이지만, 이 글에서는 Sandfly와 함께 명령줄 도구로 이를 탐지하는 방법을 보여드리겠습니다. 이 도구의 소스는 여기에 있습니다:

THC Bincrypter Linux 암호화 및 난독화 도구

패키지의 기능 분석은 다음과 같습니다:

먼저 이해해야 할 것은 이 도구가 디스크에 있는 바이너리만 암호화한다는 것입니다. 실행 중인 프로세스를 암호화하지는 않습니다. 디스크의 바이너리를 암호화하면 YARA나 기존 안티바이러스의 레거시 파일 스캔을 매우 쉽게 회피할 수 있습니다. 이것이 Linux 악성코드를 찾기 위해 이러한 방법을 권장하지 않는 이유입니다. 그러나 실행 중인 프로세스에는 암호화가 없으므로 이것이 우리의 탐지 대상입니다.

두 번째로 이해해야 할 것은 바이너리가 memfd 소켓에 로드되어 실행되므로 디스크에 없이도 실행될 수 있다는 것입니다. 이를 통해 원래 페이로드 바이너리를 제거할 수 있어 파일 스캔 탐지도 회피할 수 있습니다. memfd를 사용하여 악성코드를 숨기고 탐지하는 방법에 대해 더 읽고 싶다면 아래 문서를 참조하세요:

명령줄 포렌식으로 Linux memfd_create() 파일리스 악성코드 탐지하기

시연을 위해 이 도구를 사용하여 netcat 바이너리를 암호화했습니다. 아래에서 암호화된 바이너리와 암호화되지 않은 바이너리의 디렉토리를 볼 수 있습니다. 크기를 주목하고, 바이너리를 gzip으로 압축한 것도 주목하세요. 암호화된 바이너리는 잘 압축되지 않습니다. 이는 간단한 "이게 암호화된 건가요?" 확인 방법입니다. gzip 후 크기가 원본과 거의 동일하다면, 파일이 압축된 실행 파일(역시 의심스러움)이거나 암호화된 것입니다.

Linux 악성코드 탐지

암호화된 netcat을 리스너로 실행하면 프로세스 목록에서 여기서 볼 수 있습니다. 다시 말하지만, 실행되면 암호화 보호가 사라지므로 조사를 위해 그곳에 노력을 집중할 것입니다. 원래 페이로드 드로퍼는 시스템에서 제거될 수 있고 흔적이 남지 않습니다. 이 시점에서는 모든 것이 메모리에 상주합니다.

/proc/PID 디렉토리로 가서 빠른 조사를 해보겠습니다. 간단한 'ls' 디렉토리 목록은 exe의 *memfd:*에 대한 이상한 링크로 첫 번째 단서를 제공합니다. 바이너리는 숨기고 있지 않는 한 memfd: 소켓에서 실행되어서는 안 됩니다.

조사하려는 디렉토리로 가려면 아래에서 프로세스 ID를 PID로 대체하세요:

cd /proc/PID ls -al

실행 중인 바이너리는 암호화되지 않았으므로 메모리에서 가져와서 호스트 밖에서 여유롭게 분석할 수 있습니다. 페이로드 전달의 일부로 바이너리가 디스크에서 삭제되었는지는 중요하지 않습니다. 아래와 같이 /proc 디렉토리에서 새 파일로 복사하기만 하면 memfd 소켓에 있어도 복구는 매우 쉽습니다:

cp /proc/PID/exe /tmp/malicious.bin

/proc/PID/fd로 가서 디렉토리를 나열하여 의심스러운 프로세스의 파일 디스크립터를 검사할 수도 있습니다. 파일리스 memfd 공격에서 파일 디스크립터는 저장되는 파일의 종류를 알려줍니다. memfd: 소켓의 바이너리(ELF) 파일은 나쁜 소식입니다. 이를 수행하는 명령은 다음과 같습니다:

cd /proc/PID/fd file -L file_descriptor_number

쉬운 버튼을 원한다면, Sandfly는 아래와 같이 memfd 소켓의 Linux ELF 유형으로 이 공격을 자동으로 식별하고, 경고를 생성하며, 모든 포렌식 아티팩트를 수집합니다.

Sandfly AI 분석 결과

의심스러운 프로세스가 netstat이나 ss와 같은 시스템 도구에서 이런 종류의 것을 숨기고 있어도 /proc/PID/stack 파일을 보면 네트워크가 활성화되어 있는지 확인할 수 있습니다. accept() 호출 참조는 연결을 기다리는 백도어/서버일 가능성이 높다는 확실한 증거입니다.

cat /proc/PID/stack

lsof 명령은 열린 파일, 소켓, 네트워크 포트 등과 같은 다른 많은 프로세스 속성의 응축된 스냅샷을 보여줍니다.

lsof -p PID

암호화된 파일은 주변에 있는 높은 엔트로피 스크립트/바이너리를 확인하여 찾을 수도 있습니다. 이런 종류의 파일을 찾는 데 사용할 수 있는 sandfly-entropyscan이라는 무료 도구가 있습니다:

Sandfly 엔트로피 스캐너

이 도구를 사용하면 파일 시스템 전체에서 높은 엔트로피 파일을 볼 수 있습니다. bincrypter 도구는 스크립트 유형으로 만들지만, 다른 공격자가 사용할 수 있는 다른 종류의 패킹/암호화 유틸리티에 대해서는 ELF로 검색을 제한할 수 있습니다.

공격은 memfd 소켓에서 실행되는 프로세스가 거의 항상 악성이므로 Sandfly에서 많은 경고를 생성합니다. 이 도구가 사용되고 있다면 찾을 수 있는 것들 중 일부입니다.

Linux 악성코드 탐지

전반적으로 bincrypter는 기존 파일 스캔 탐지로부터 디스크의 페이로드를 보호하는 멋진 도구이지만, 실행되면 노출됩니다.

Sandfly에서는 Linux의 기존 안티바이러스 파일 스캔이 이와 같은 기법으로 쉽게 우회할 수 있어 대부분 시간 낭비라고 생각합니다. Sandfly가 하는 것처럼 침해 전술을 헌팅하는 것이 더 잘 작동하고 새로운 공격 방법을 탐지할 더 많은 기회를 제공합니다. 우리의 에이전트리스 Linux 보안 플랫폼이 이것과 다른 많은 종류의 위협을 즉시 찾을 수 있는 방법에 대해 알아보려면 문의하세요.


Bincrypter 및 기타 Linux 보안 위협에 대한 자세한 정보는 Sandfly Security에 문의하시기 바랍니다.

원문 기사 보기

Sandfly Security 공식 블로그에서 영문 원문을 확인하세요.

원문 읽기 →

Sandfly 보안 솔루션 체험

이 기사에서 소개한 보안 기술들을 실제로 경험해보세요.