All Projects → Balasys → dheater

Balasys / dheater

Licence: Apache-2.0 license
D(HE)ater is a proof of concept implementation of the D(HE)at attack (CVE-2002-20001) through which denial-of-service can be performed by enforcing the Diffie-Hellman key exchange.

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to dheater

Pummel
Socks5 Proxy HTTP/HTTPS-Flooding (cc) attack
Stars: ✭ 53 (-62.68%)
Mutual labels:  ddos, attack, ddos-tool, ddos-attack-tool
awesome-ddos-tools
Collection of several DDos tools.
Stars: ✭ 75 (-47.18%)
Mutual labels:  ddos, attack, ddos-tool, ddos-attack
overload
📡 Overload DoS Tool (Layer 7)
Stars: ✭ 167 (+17.61%)
Mutual labels:  ddos, ddos-tool, ddos-attack, ddos-attack-tool
Aoyama
A New version of Python3 botnet, old version: http://github.com/Leeon123/Python3-botnet
Stars: ✭ 161 (+13.38%)
Mutual labels:  ddos, ddos-tool, ddos-attack
Hacking
hacker, ready for more of our story ! 🚀
Stars: ✭ 413 (+190.85%)
Mutual labels:  attack, poc, vulnerability
Poc
Proofs-of-concept
Stars: ✭ 467 (+228.87%)
Mutual labels:  exploit, poc, vulnerability
Raven-Storm
Raven-Storm is a powerful DDoS toolkit for penetration tests, including attacks for several protocols written in python. Takedown many connections using several exotic and classic protocols.
Stars: ✭ 235 (+65.49%)
Mutual labels:  ddos, denial-of-service, ddos-tool
wolfssl-py
Python wrapper for wolfSSL embedded SSL/TLS library.
Stars: ✭ 30 (-78.87%)
Mutual labels:  tls, ssl, tls13
cve-2021-3449
CVE-2021-3449 OpenSSL denial-of-service exploit 👨🏻‍💻
Stars: ✭ 220 (+54.93%)
Mutual labels:  tls, exploit, denial-of-service
Sslyze
Fast and powerful SSL/TLS scanning library.
Stars: ✭ 2,623 (+1747.18%)
Mutual labels:  tls, ssl, tls13
Illustrated Tls13
The Illustrated TLS 1.3 Connection: Every byte explained
Stars: ✭ 372 (+161.97%)
Mutual labels:  tls, ssl, tls13
Wolfssl
wolfSSL (formerly CyaSSL) is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!
Stars: ✭ 1,098 (+673.24%)
Mutual labels:  tls, ssl, tls13
Exphub
Exphub[漏洞利用脚本库] 包括Webloigc、Struts2、Tomcat、Nexus、Solr、Jboss、Drupal的漏洞利用脚本,最新添加CVE-2020-14882、CVE-2020-11444、CVE-2020-10204、CVE-2020-10199、CVE-2020-1938、CVE-2020-2551、CVE-2020-2555、CVE-2020-2883、CVE-2019-17558、CVE-2019-6340
Stars: ✭ 3,056 (+2052.11%)
Mutual labels:  exploit, poc, vulnerability
Pub
Vulnerability Notes, PoC Exploits and Write-Ups for security issues disclosed by tintinweb
Stars: ✭ 217 (+52.82%)
Mutual labels:  exploit, poc, vulnerability
Tlslite Ng
TLS implementation in pure python, focused on interoperability testing
Stars: ✭ 119 (-16.2%)
Mutual labels:  tls, ssl, tls13
Ysoserial
A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization.
Stars: ✭ 4,808 (+3285.92%)
Mutual labels:  exploit, poc, vulnerability
CVE-2021-33766
ProxyToken (CVE-2021-33766) : An Authentication Bypass in Microsoft Exchange Server POC exploit
Stars: ✭ 37 (-73.94%)
Mutual labels:  exploit, poc, vulnerability
Pentesting
Misc. Public Reports of Penetration Testing and Security Audits.
Stars: ✭ 24 (-83.1%)
Mutual labels:  exploit, poc, vulnerability
Tlsfuzzer
SSL and TLS protocol test suite and fuzzer
Stars: ✭ 335 (+135.92%)
Mutual labels:  tls, ssl, tls13
Nonce Disrespect
Nonce-Disrespecting Adversaries: Practical Forgery Attacks on GCM in TLS
Stars: ✭ 103 (-27.46%)
Mutual labels:  tls, attack, vulnerability

D(HE)ater

D(HE)ater is an attacking tool based on CPU heating in that it forces the ephemeral variant of Diffie-Hellman key exchange (DHE) in given cryptography protocols (e.g. TLS, SSH). It is performed without calculating a cryptographically correct ephemeral key on the client-side, but with a significant amount of calculation on the server-side. Based on this, a denial-of-service (DoS) attack can be initiated, called D(HE)at attack (CVE-2002-20001).

Quick start

D(HE)ater can be installed directly via pip from PyPi

pip install dheater
dheat --protocol tls ecc256.badssl.com
dheat --protocol ssh ecc256.badssl.com

or can be used via Docker from Docker Hub

docker pull balasys/dheater
docker run --tty --rm balasys/dheater --protocol tls ecc256.badssl.com
docker run --tty --rm balasys/dheater --protocol ssh ecc256.badssl.com

You can increase load by string extra threads.

dheat --thread-num 4 --protocol tls ecc256.badssl.com
docker run --tty --rm balasys/dheater --thread-num 4 --protocol tls ecc256.badssl.com
docker run --tty --rm balasys/dheater --thread-num 4 --protocol ssh ecc256.badssl.com

Check

Without attacking a server or accessing its configuration it is still possible to determine whether Diffie-Hellman (DH) key exchange is enabled and if so what DH parameters (prime, genrator, key size) are used. Command line tools such as CryptoLyzer (TLS, SSH KEX/GEX), testssl.sh (TLS only), or ssh-audit (SSH KEX only) can do that work.

TLS

cryptolyze tls1_2 dhparams example.com
cryptolyze tls1_3 dhparams example.com

testssl.sh --fs example.com

SSH

cryptolyze ssh2 dhparams example.com

ssh-audit example.com

Mitigation

Configuration

Diffie-Hellman (DHE) key exchange should be disabled if no other mitigation mechanism can be used and either elliptic-curve variant of Diffie-Hellman (ECDHE) or RSA key exchange is supported by the clients. The fact that RSA key exchange is not forward secret should be considered.

TLS

Elliptic-curve (named group) setting is necessary only if the underlying cryptographic library supports negotiation Diffie-Hellman groups by implementing RFC7919 in TLS 1.2 or supporting the Finite Field Diffie-Hellman parameter groups named groups in TLS 1.3.

Library Version FFDHE goups
in TLS 1.2
FFDHE groups
in TLS 1.3
OpenSSL < 3.0 no no
OpenSSL ≥ 3.0 no yes
GnuTLS ≥ 3.5.6 yes no
GnuTLS ≥ 3.6.3 yes yes
Apache
SSLCipherSuite ...:!kDHE
SSLOpenSSLConfCmd Groups x25519:secp256r1:x448:secp521r1:secp384r1
NGINX
ssl_ciphers ...:!kDHE;
ssl_ecdh_curve x25519:secp256r1:x448:secp521r1:secp384r1;
Postfix
  1. Diffie-Hellman key exchange algorithms can be removed by setting the tls_medium_cipherlist configuration option.

    tls_medium_cipherlist ...:!kDHE

  2. Maximal number of new TLS sessions that a remote SMTP client is allowed to negotiate can be controlled by configuration option smtpd_client_new_tls_session_rate_limit configuration option.

    smtpd_client_new_tls_session_rate_limit 100

Others

See moz://a SSL Configuration Generator for configuration syntax.

DH parameter files

If DH key exchange need to be supported recommended private key length value should be set to ensure the best performance of DH key exchange this option value should be set appropriately to achieve the best performance without a security risk.

You can check whether you DH parameter file contains the recommended private key value by the following command:

tools/dh_param_priv_key_size_setter /path/to/dh/parameter/file.pem

The result looks like the following. If the original private key size is None it some cryptographic libraries use the public size for private key size unless the application server overrides this behaviour. This will cause much lower performance than small private keys would be used.

Original private key size: None
Set private key size: None
-----BEGIN DH PARAMETERS-----
MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz
+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a
87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7
YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi
7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD
ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==
-----END DH PARAMETERS-----

To set the recommended private key size in a DH parameter file use the following commmand:

tools/dh_param_priv_key_size_setter --private-key-size KEY_SIZE /path/to/dh/parameter/file.pem

For appropriately private key sizes see Table 2 of NIST SP 800-57 Part 1. Alternatively you can download the well-know DH parameters where the recommended private key size is set according to OpenSSL default values from data directory.

SSH

OpenSSH
  1. Diffie-Hellman key exchange algorithms can be removed by setting the KexAlgorithms configuration option.

    KexAlgorithms -diffie-hellman-group1-sha1,diffie-hellman-group1-sha256,diffie-hellman-group14-sha1,diffie-hellman-group14-sha256,diffie-hellman-group15-sha256,diffie-hellman-group15-sha512,diffie-hellman-group16-sha256,diffie-hellman-group16-sha512,diffie-hellman-group17-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha512

  2. Maximum number of concurrent unauthenticated connections can be controlled by some configuration options

Fail2Ban

TLS

Apache

There are no relevant filters.

  1. apache-ssl.conf in fail2ban directory should be copied to the filter.d directory under the fail2ban configuration directory

  2. the followings should be added to the jail.local file in the fail2ban configuration directory

    [apache-ssl]
    
    port    = https
    logpath = %(apache_error_log)s
    maxretry = 1
Postfix

There is a relevant filter, but it is applied only in ddos mode. The followings should be added to jail.local.

[postfix]
mode = ddos
Dovecot

There is a relevant filter, but it is applied only in ddos mode. The followings should be added to jail.local.

[dovecot]
mode = aggressive

or a specific filter can be used without changing the mode of dovecot.

  1. dovecot-ssl.conf in fail2ban directory should be copied to the filter.d directory under the fail2ban configuration directory

  2. the followings should be added to jail.local in tge fail2ban configuration directory

    [dovecot-ssl]
    
    port    = pop3,pop3s,imap,imaps,submission,465,sieve
    logpath = %(dovecot_log)s
    backend = %(dovecot_backend)s
    maxretry = 1

SSH

OpenSSH

There is a relevant filter, but it is applied only in ddos mode. The followings should be added to jail.local.

[sshd]
mode = ddos

License

The code is available under the terms of Apache License Version 2.0. A non-comprehensive, but straightforward description and also the full license text can be found at Choose an open source license website.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].