Toolkit pengujian kerentanan DoS (D) berkinerja tinggi. Mengimplementasikan berbagai vektor serangan L4/7. Pendekatan async pada jaringan membantu menurunkan kebutuhan CPU/RAM saat melakukan interaksi jaringan yang kompleks sekalipun.
CATATAN ? Toolkit ini tidak memiliki kemampuan yang diperlukan untuk pengujian kinerja yang tepat pada server atau jaringan target. Tujuannya adalah untuk memahami tingkat perlindungan, dengan melakukan serangan yang dirancang khusus untuk memanfaatkan kelemahan umum dan mengabaikan tindakan perlindungan umum.
PERINGATAN ❗ Jangan menguji infrastruktur (server, situs web, perangkat jaringan, dll) tanpa persetujuan pemiliknya. Pengaturan default paket disesuaikan untuk menghindari dampak besar yang tidak diinginkan saat menjalankan pengujian.
Terinspirasi oleh proyek MHDDoS.
Dari PyPI:
$ pip install fiberfox
Dari sumber:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ python setup.py install
Bangun gambar Docker:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ docker build -t fiberfox .
Contoh:
$ fiberfox
--targets tcp://127.0.0.1:8080 http://127.0.0.1:8081
--concurrency 512
--rpc 1024
--strategy STRESS
--duration-seconds 3600
--proxies-config ./proxies.txt
Fitur:
--concurrency
(atau -c
) menentukan jumlah coroutine asinkron yang akan dijalankan. Fiber tidak membuat thread OS baru sehingga Anda dapat menjalankan banyak thread dengan overhead yang tidak signifikan. Untuk vektor serangan TCP, jumlah serat kira-kira sesuai dengan jumlah maksimal koneksi TCP terbuka. Untuk serangan UDP, menjalankan terlalu banyak serat biasanya akan memperburuk kinerja.SLOW
atau CONNECTIONS
), pastikan untuk menyiapkan lebih banyak fiber daripada target yang Anda miliki.Dokumentasi lebih lanjut tentang bendera:
$ python fiberfox --help
usage: fiberfox [-h] [--targets [TARGETS ...]] [--targets-config TARGETS_CONFIG] [-c CONCURRENCY] [-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}] [--rpc RPC] [--packet-size PACKET_SIZE]
[-d DURATION_SECONDS] [--proxies [PROXIES ...]] [--proxies-config PROXIES_CONFIG] [--proxy-providers-config PROXY_PROVIDERS_CONFIG] [--log-level {DEBUG,INFO,ERROR,WARN}]
[--connection-timeout-seconds CONNECTION_TIMEOUT_SECONDS]
options:
-h, --help show this help message and exit
--targets [TARGETS ...]
List of targets, separated by spaces (if many)
--targets-config TARGETS_CONFIG
File with the list of targets (target per line). Both local and remote files are supported.
-c CONCURRENCY, --concurrency CONCURRENCY
Total number of fibers (for TCP attacks means max number of open connections)
-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}, --strategy {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}
Flood strategy to utilize
--rpc RPC Number of requests to be sent to each connection
--packet-size PACKET_SIZE
Packet size (in bytes)
-d DURATION_SECONDS, --duration-seconds DURATION_SECONDS
How long to keep sending packets, in seconds
--proxies [PROXIES ...]
List of proxy servers, separated by spaces (if many)
--proxies-config PROXIES_CONFIG
File with a list of proxy servers (newline-delimited). Both local and remote files are supported.
--proxy-providers-config PROXY_PROVIDERS_CONFIG
Configuration file with proxy providers (following MHDDoS configuration file format). Both local and remote files are supported.
--reflectors-config REFLECTORS_CONFIG
File with the list of reflector servers (IP per line). Only required for amplification attacks. Both local and remote files are supported.
--log-level {DEBUG,INFO,ERROR,WARN}
Log level (defaults to INFO)
--connection-timeout-seconds CONNECTION_TIMEOUT_SECONDS
Proxy connection timeout in seconds (default: 10s)
Vektor serangan ditentukan oleh opsi --strategy
saat menjalankan skrip.
Catatan: paket sedang dalam pengembangan aktif, metode lainnya akan segera ditambahkan.
Serangan L4 dirancang untuk menargetkan lapisan transport dan dengan demikian terutama digunakan untuk membebani kapasitas jaringan secara berlebihan. Membutuhkan pengetahuan minimum tentang target.
Strategi | Lapisan | Mengangkut | Desain | Catatan |
---|---|---|---|---|
UDP | L4 | UDP | Banjir sederhana: mengirimkan paket UDP yang dihasilkan secara acak ke target | Secara otomatis membatasi serat saat menerima NO_BUFFER_AVAILABLE dari perangkat jaringan. Untuk mencegah hal ini terjadi, jangan mengkonfigurasi lebih dari 2 serat per target saat menguji serangan banjir UDP. |
TCP | L4 | TCP | Banjir sederhana: mengirimkan paket TCP yang dihasilkan RPC secara acak ke dalam koneksi TCP terbuka. | Mendukung konfigurasi untuk ukuran satu paket dan jumlah paket yang akan dikirim ke setiap koneksi terbuka. |
CONNECTION | L4 | TCP | Membuka koneksi TCP dan menjaganya tetap hidup selama mungkin. | Agar efektif, serangan jenis ini memerlukan jumlah serat yang lebih banyak dari biasanya. Perhatikan bahwa server modern cukup baik dalam menangani koneksi terbuka yang tidak aktif. |
Kelas khusus serangan L4.
UDP adalah protokol tanpa koneksi. Itu tidak memvalidasi alamat IP sumber kecuali pemrosesan eksplisit dilakukan oleh lapisan aplikasi. Artinya penyerang dapat dengan mudah memalsukan datagram untuk memasukkan alamat IP sumber yang berubah-ubah. Seringkali protokol aplikasi dirancang sedemikian rupa sehingga paket yang dihasilkan sebagai respons jauh lebih besar sehingga menciptakan efek amplifikasi (sesuai dengan namanya). Dengan mengirimkan datagram tersebut ke banyak server (reflektor) yang berbeda, penyerang dapat menghasilkan lalu lintas yang signifikan ke perangkat target (korban).
Serangan amplifikasi diterapkan:
Strategi | Protokol | Faktor Amplifikasi | Kerentanan |
---|---|---|---|
RDP | Protokol Desktop Jarak Jauh (RDP) | ||
CLDAP | Protokol Akses Direktori Ringan (CLDAP) tanpa koneksi | 56 tahun 70 | |
MEM | Memcache | 10.000 hingga 50.000 | |
CHAR | Protokol Penghasil Karakter (CHARGEN) | 358.8 | Permintaan pembuatan char |
ARD | Desktop Jarak Jauh Apple (ARD) | ||
NTP | Protokol Waktu Jaringan (NTP) | 556.9 | TA14-013A |
DNS | Sistem Nama Domain (DNS) | 28 hingga 54 | TA13-088A |
Semua serangan amplifikasi memerlukan daftar server refleksi yang harus disediakan.
Serangan L7 dirancang untuk menyalahgunakan kelemahan dalam protokol lapisan aplikasi atau detail implementasi spesifik aplikasi (atau kernel OS). Umumnya lebih kuat namun mungkin memerlukan pengetahuan tentang cara kerja sistem yang ditargetkan.
Strategi | Lapisan | Mengangkut | Desain | Catatan |
---|---|---|---|---|
GET | L7 | TCP | Mengirimkan permintaan HTTP GET yang dihasilkan secara acak melalui koneksi TCP terbuka | Tidak memerlukan 200 kode respons HTTP OK (karena tidak menggunakan respons sama sekali). Meskipun serangan yang dilakukan terhadap penyeimbang beban atau WAF mungkin tidak efektif (dibandingkan dengan banjir L4 TCP). |
STRESS | L7 | TCP | Mengirimkan urutan permintaan HTTP dengan isi besar melalui satu koneksi TCP terbuka. | Untuk memaksimalkan performa, pastikan host target mengizinkan pipelining (mengirimkan permintaan baru dalam koneksi persisten tanpa membaca respons terlebih dahulu). Tidak memerlukan 200 kode respons HTTP OK (karena tidak menggunakan respons sama sekali). Meskipun serangan yang dilakukan terhadap penyeimbang beban atau WAF mungkin tidak efektif (dibandingkan dengan banjir L4 TCP). |
BYPASS | L7 | TCP | Mengirimkan permintaan get HTTP melalui koneksi TCP terbuka, membaca respons kembali. | Pembacaan terpotong dilakukan dengan recv byte dari koneksi, tanpa menguraikannya menjadi respons HTTP. |
SLOW | L7 | TCP | Mirip dengan STRESS, mengeluarkan permintaan HTTP dan berupaya untuk tetap menggunakan koneksi dengan membaca kembali satu byte dan mengirimkan muatan tambahan dengan penundaan waktu antara operasi pengiriman. | Idealnya, waktu tunda harus diatur dengan benar untuk menghindari koneksi direset oleh rekan karena waktu tunggu habis (tergantung pada pengaturan rekan). |
CFBUAM | L7 | TCP | Mengirimkan satu HTTP GET, setelah penundaan yang lama mengeluarkan lebih banyak permintaan melalui koneksi TCP yang sama. | |
AVB | L7 | TCP | Menerbitkan paket HTTP GET ke dalam koneksi terbuka dengan penundaan yang lama antara operasi pengiriman. Untuk menghindari koneksi direset oleh rekan karena waktu habis baca, penundaan maksimum diatur ke 1 detik. |
Dengan mengkonfigurasi satu set server proxy, seseorang dapat mensimulasikan serangan terdistribusi bahkan ketika menjalankan toolkit dari satu mesin. Ketika proxy tersedia, fiberfox
menghubungkannya terlebih dahulu, dan membuat koneksi ke target dari mesin tersebut. Dengan melakukan hal ini, sistem dapat melewati langkah perlindungan pemblokiran IP yang paling sederhana. Toolkit ini mendukung protokol HTTP/SOCKS4/SOCS5, dan otentikasi pengguna/kata sandi. Ia juga secara dinamis mengelola serangkaian proxy yang disediakan untuk menghindari penggunaan proxy yang tidak responsif atau tidak memenuhi persyaratan serangan.
Ada beberapa pertimbangan saat menggunakan proxy yang harus Anda ingat:
Keberhasilan serangan yang dilakukan saat ini sebagian bergantung pada kapasitas server proxy. Misalnya, saat menggunakan proxy publik, kecepatan jaringan mungkin rendah karena proxy terlalu penuh. Dalam hal ini, pertimbangkan untuk menggunakan infrastruktur swasta atau cluster server proxy khusus berbayar.
Server proxy sendiri mungkin dapat memitigasi beberapa vektor serangan. Misalnya, saat menggunakan pendekatan "koneksi lambat", server proxy dapat dikonfigurasi untuk membatasi atau menutup koneksi. Dengan cara “melindungi” target dengan melakukan hal tersebut. Perhatikan bagaimana pengaturan proxy mengintervensi mekanisme serangan (jaringan, protokol, dll).
Salah satu tujuan dari toolkit ini adalah untuk memberikan informasi pemantauan yang komprehensif untuk memandu pencarian kerentanan.
Alat ini melaporkan jumlah statistik per setiap target: jumlah paket, lalu lintas, dan tarif. Untuk serangan berbasis TCP (L4 dan L7), ia juga melaporkan histogram paket yang dikirim dalam satu sesi (sesi di sini berarti lalu lintas yang dikirim dalam satu koneksi terbuka). Idealnya, histogram harus condong ke sisi kiri. Artinya peer menutup koneksi lebih awal dari paket "permintaan per koneksi" dikirim. Jika sebagian besar berada di sebelah kanan, target menerima apa yang dianggap sebagai "lalu lintas sampah".
Hati-hati dengan analisis. Kecepatan jaringan rendah, frekuensi upaya koneksi tinggi, tingkat kesalahan tinggi, dan banyak lagi. Semua sinyal tersebut mungkin menunjukkan fakta bahwa target tetap kuat menghadapi serangan dan target sudah mati. Untuk mendapatkan pemahaman penuh mengenai tingkat perlindungan, Anda harus menggunakan informasi pemantauan pada sisi target (misalnya kemampuan untuk bekerja dengan benar ketika mendapat tantangan).
Perhatikan bahwa tarif keluar ditampilkan kira-kira. Pengukuran waktu pengiriman setiap paket meliputi penundaan penjadwalan (untuk serat) dan pemilihan/penggabungan. Dalam kebanyakan kasus, hal ini dapat diabaikan. Meskipun hati-hati dengan analisis saat menjalankan 10k+ serat.
feature-*
cabang untuk mulai membuat perubahan. Rilis di bawah lisensi MIT. Lihat LISENSI untuk lisensi penuh.
████
████▒▒██
████ ▒▒██
██▒▒ ▒▒▒▒▒▒██
██▒▒██ ██
████ ██▒▒██ ██
██▒▒▒▒██████ ██▒▒██ ▒▒ ████
██▒▒▒▒██ ████ ██████▒▒▒▒▒▒██ ▒▒▒▒██████████████
██▒▒ ████▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒████
██▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████
██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒██
████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
████ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ████▒▒▒▒▒▒▒▒▒▒ ██ ▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██ ████ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██▒▒██ ▒▒ ▒▒▒▒▒▒▒▒▒▒██
██████████████████████▒▒▒▒██ ▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒██ ▒▒▒▒██
██▒▒▒▒ ██▒▒▒▒▒▒▒▒████ ▒▒▒▒██
██▒▒▒▒▒▒██▒▒▒▒▒▒██ ██ ██
██████▒▒▒▒▒▒██ ██ ████
██████ ██ ██████
██ ████
██████