Skip to main content

HTTP/2 Single Packet Attack low level library based on Scapy

Project description

H2SpaceX   H2SpaceX

pypi: 1.2.1 Python: 3.8.8 License: GPL v3

HTTP/2 low level library based on Scapy which can be used for Single Packet Attack (Race Condition on H2)

Dive into Single Packet Attack Article

I wrote an article and published it at InfoSec Write-ups:

TODO

  • Single Packet Attack - POST
    • implement
  • Single Packet Attack - GET
    • Content-Length: 1 Method
    • POST Request with x-override-method: GET header
  • Response Parsing
    • implement
    • implement threaded response parser
    • add response times in nano seconds for timing attacks
    • Body Decompression
      • gzip
      • br
      • deflate
  • Proxy
    • Socks5 Proxy

More Research

Some following statements are just ideas and not tested or implemented.

  • More Request in a Single Packet
    • Increase MSS (Idea by James Kettle)
    • Out of Order TCP Packets (Idea by James Kettle)
    • IP Fragmentation
  • Proxy the Single Packet Request through SOCKS
  • Single Packet Attack on GET Requests
    • Content-Length: 1 Method (Idea by James Kettle)
    • x-override-method: GET Method (Idea by James Kettle)
    • Index HPACK Headers to Make GET Requests Smaller
    • HEADERS Frame without END_HEADER Flag
    • HEADERS Frame Without Some Pseudo Headers

Installation

H2SpaceX works with Python 3 (preferred: >=3.8.8)

pip install h2spacex

Error in Installation

if you get errors of scapy:

pip install --upgrade scapy

Quick Start

You can import the HTTP/2 TLS Connection and set up the connection. After setting up the connection, you can do other things:

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()
...

see more examples in Wiki Page

Examples

See examples which contain some Portswigger race condition examples.

Examples Page

Enhanced Single Packet Attack Method (Black Hat 2024) for Timing Attacks

James Kettle introduced an improved version of Single Packet Attack in Black Hat 2024 for timing attacks:

Impvoved Version Image

You can implement this method easily using send_ping_frame() method.

See this Wiki and Parse Response (Threaded) + Response Times for Timing Attacks part:

Improved Version of SPA Sample Exploit

Reference of Improved Method:

References & Resources

I also got some ideas from a previous developed library h2tinker.

Finally, thanks again to James Kettle for directly helping and pointing some other techniques.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

h2spacex-1.2.1.tar.gz (26.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

h2spacex-1.2.1-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file h2spacex-1.2.1.tar.gz.

File metadata

  • Download URL: h2spacex-1.2.1.tar.gz
  • Upload date:
  • Size: 26.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for h2spacex-1.2.1.tar.gz
Algorithm Hash digest
SHA256 2e4a9ccc03965c4a7a4e617a7080b3fa63bf63b72e27e579aa25f113090ea208
MD5 421ff45c4240d179f59f0917d4b5dc0a
BLAKE2b-256 4322331c5cef9a9b31b6533470bbdde3863601f688d2d5a5a748c4db3fe39518

See more details on using hashes here.

File details

Details for the file h2spacex-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: h2spacex-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for h2spacex-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 235a4dadacc28beb018c70308ee75a93cab20ae0a2089a21899d1de4622c46e5
MD5 d20d9bd8f741906f368d0cde21907778
BLAKE2b-256 de405974ed6020b4d5791ad29d6463327ce2440f9239017b4932bf176ee59199

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page