
HTTP/2 마지막 프레임 동기화(일명 단일 패킷 공격) Scapy 기반 저수준 라이브러리/도구 + 타이밍 공격 익스플로잇
H2SpaceXScapy 기반의 HTTP/2 저수준 라이브러리로, Single Packet Attack(H2 상의 Race Condition)에 사용할 수 있습니다.
저는 글을 작성하여 InfoSec Write-ups에 게재했습니다:
1.2.2
pyproject.toml로 통합하고 setup.py를 제거
[options] 섹션을 수정하여 패키지 검색이 올바르게 정의되도록 함setup.py의 오타로 누락되었던 dev extra(twine)를 노출check_headers_lowercase=False를 준수함(다른 요청 메서드와 일관성 유지)tests/(헤더 유틸리티에 대한 단위 테스트)와 CONTRIBUTING.md(빌드 및 릴리스 가이드) 추가1.2.1
다음 설명 중 일부는 아이디어일 뿐이며 테스트되거나 구현되지 않았습니다.
H2SpaceX는 Python 3(권장: >=3.8.8)에서 작동합니다
pip install h2spacex
scapy 관련 오류가 발생하면:
pip install --upgrade scapy
HTTP/2 TLS 연결을 import하고 연결을 설정할 수 있습니다. 연결을 설정한 후에는 다른 작업을 수행할 수 있습니다:
from h2spacex import H2OnTlsConnection
h2_conn = H2OnTlsConnection(
hostname='http2.github.io',
port_number=443,
ssl_log_file_path="PATH_TO_SSL_KEYS.log" # optional (if you want to log ssl keys to read the http/2 traffic in wireshark)
)
h2_conn.setup_connection()
...
더 많은 예제는 Wiki 페이지를 참조하세요
일부 Portswigger race condition 예제가 포함된 예제를 참조하세요.
James Kettle은 Black Hat 2024에서 타이밍 공격을 위한 개선된 버전의 Single Packet Attack을 소개했습니다:

send_ping_frame() 메서드를 사용하여 이 방식을 쉽게 구현할 수 있습니다.
이 Wiki와 Parse Response (Threaded) + Response Times for Timing Attacks 부분을 참조하세요:
저는 이전에 개발된 라이브러리 h2tinker에서도 몇 가지 아이디어를 얻었습니다.
마지막으로, 직접 도움을 주고 다른 몇 가지 기법을 알려준 James Kettle에게 다시 한번 감사드립니다.