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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Darkcloak — Linux 프로세스 신원 위장 도구로, 11단계 prctl 파이프라인을 통해 comm, argv, cmdline, environ, exe 경로, VMA를 스푸핑하여 다른 프로세스로 위장합니다. | Kitploit
도구/GitHubGitHub/0x574r/darkcloak
Privilege EscalationPersistence MechanismsIDS/IPS EvasionImpersonation ToolsPost-ExploitationBinary AnalysisPapers & ResearchRed TeamingFingerprint Spoofing
GitHub0x574r/darkcloak

Darkcloak

Linux 프로세스 신원 위장 도구로, 11단계 prctl 파이프라인을 통해 comm, argv, cmdline, environ, exe 경로, VMA를 스푸핑하여 다른 프로세스로 위장합니다.

11233개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

DARKCLOAK

NASM Platform Architecture

Linux 프로세스 신원 은폐

DARKCLOAK은 사용자 공간에서 보이는 모든 신원 소스에 대한 조작을 11단계 순차 파이프라인으로 연결하여, 프로세스가 사용자 공간 모니터링 도구에 대해 가장된 프로세스와 구별할 수 없게 될 때까지 점진적으로 변환합니다. 우리가 아는 한, 사용자 공간에서 보이는 모든 신원 소스를 동시에 조작하는 것을 결합한 공개된 도구는 없습니다.

전체 기술 문서는 RAZOR 블로그에서 확인할 수 있습니다.

스푸핑되는 항목

  • task_struct->comm: PR_SET_NAME을 통해
  • argv[0]: 스택 직접 덮어쓰기를 통해
  • 명령줄(/proc/$PID/cmdline): PR_SET_MM_ARG_START/END를 통해
  • 환경 변수(/proc/$PID/environ): PR_SET_MM_ENV_START/END를 통해
  • 실행 파일 경로(/proc/$PID/exe): PR_SET_MM_EXE_FILE을 통해
  • 파일 기반 VMA(/proc/$PID/maps): 익명 메모리로 대체
  • 프로세스 네임스페이스 가시성: unshare를 통해

작동 방식

파이프라인은 조작되는 커널 서브시스템 간의 의존성에 의해 정의된 엄격한 순서로 실행됩니다:

  1. ELF 내성 검사: _start에서 보조 벡터를 파싱하여 PHT를 확인하고 세 개의 PT_LOAD 세그먼트 모두의 가상 주소 범위를 얻습니다
  2. 자격 증명 읽기: getresuid / getresgid로 원래 UID와 GID를 저장하여 나중에 복원합니다
  3. UID 상승: 세 UID 중 하나라도 0이면 setresuid(0,0,0)
  4. 권한 상승: capget/capset을 통해 허용 집합을 유효 및 상속 집합으로 복사합니다
  5. 신원 스푸핑:
    • prctl(PR_SET_NAME) → task_struct->comm 덮어쓰기
    • [rsp+8]에서 스택 직접 쓰기 → argv[0] 덮어쓰기
    • prctl(PR_SET_DUMPABLE, 0) → 비특권 프로세스의 /proc/$PID/mem 접근 및 차단

mmap 트램폴린

PR_SET_MM_EXE_FILE은 VMA가 원본 바이너리에 의해 여전히 백업되어 있는 동안 EBUSY로 실패합니다. RIP가 .text 세그먼트 내부에 있는 동안에는 해당 세그먼트를 언맵할 수 없으므로, 익명화는 임시 익명 페이지에서 실행됩니다:

  1. 4096바이트 익명 페이지 할당(mmap)
  2. 익명화 코드(mm_start→mm_end)와 세그먼트 메타데이터를 해당 페이지에 복사
  3. 페이지를 실행 가능하게 만들기(mprotect)
  4. 해당 페이지로 점프: RIP가 .text를 떠남
  5. 세 개의 PT_LOAD 세그먼트 각각에 대해: 새 익명 영역 mmap → 세그먼트 내용 memcpy → 원본 munmap → 익명 복사본을 원래 주소로 mremap → 원래 권한을 복원하도록 mprotect
  6. 이제 익명화된 .text로 복귀하고 트램폴린 페이지 언맵

바이너리는 인터프리터가 없는 정적 ELF이므로 런타임 VMA 레이아웃은 완전히 결정적입니다: 세 개의 PT_LOAD 세그먼트, 스택, 그리고 커널 vDSO.

빌드

root@kitploit:~
nasm -f elf64 darkcloak.asm -o darkcloak.o
ld darkcloak.o -o darkcloak

구성

스푸핑 대상은 .data 섹션에서 컴파일 시점에 정의됩니다. 기본값은 sshd를 가장합니다:

root@kitploit:~
mimic_name    db 'sshd', 0
mimic_argv    db './sshd', 0
mimic_exe     db '/usr/sbin/sshd', 0
mimic_cmdline db '/usr/sbin/sshd', 0, '-D', 0, '[email protected]', 0, ...
mimic_environ db 'LANG=en_US.UTF-8', 0, 'NOTIFY_SOCKET=/run/systemd/notify', 0, ...

다른 프로세스를 가장하려면 빌드 전에 이 값들을 업데이트하십시오.

사용법

root@kitploit:~
./darkcloak

허용 집합에 CAP_SYS_RESOURCE, CAP_SETUID, CAP_SETGID, CAP_SETPCAP이 필요합니다. CAP_SYS_RESOURCE이 없으면 MM 스푸핑 블록(VMA 익명화 + EXE_FILE 교체)이 완전히 건너뛰어집니다. CAP_SETPCAP이 없으면 도구는 PR_SET_SECUREBITS에서 PR_SET_KEEPCAPS로 대체합니다.

검증

root@kitploit:~
./darkcloak &
PID=$!

cat /proc/$PID/comm
readlink /proc/$PID/exe
cat /proc/$PID/cmdline | tr '\0' ' '
cat /proc/$PID/environ | tr '\0' '\n' | head -3
cat /proc/$PID/maps | head -5
cat /proc/$PID/status | grep -E 'Uid|Gid|Cap'
ps aux | grep $PID

면책 조항

교육 및 연구 목적으로만 공개되었습니다. 소유하고 있거나 테스트에 대한 명시적 서면 승인을 받은 시스템에서만 사용하십시오.

도구 다운로드
ptrace(PTRACE_ATTACH)
  • mmap 트램폴린을 통한 VMA 익명화(아래 참조) → 모든 파일 기반 매핑 제거
  • prctl(PR_SET_MM_ARG_START/END) → /proc/$PID/cmdline 리다이렉트
  • prctl(PR_SET_MM_ENV_START/END) → /proc/$PID/environ 리다이렉트
  • prctl(PR_SET_MM_EXE_FILE) → mm_struct->exe_file 대체
  • 권한 유지: UID 강등에서 살아남기 위해 PR_SET_SECUREBITS(CAP_SETPCAP이 있는 경우) 또는 PR_SET_KEEPCAPS(대체)
  • UID 강등: setresuid(1000,1000,1000) 또는 원래 값 복원
  • GID 강등: setresgid(1000,1000,1000) 또는 원래 값 복원
  • 권한 강등: 유효 및 상속 집합을 지웁니다
  • 네임스페이스 격리: unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • 유지: nanosleep(120s) 후 exit