четверг, 12 апреля 2012 г.

[Hack wi-fi] Chương 5. Săn lùng hanshake.

Chương 5. Săn lùng handshake và bẻ khóa WPA.


Cũng đã hơn nửa tháng sau khi mình post topic hack WEP rồi nhỉ. Trong thời gian đó các bạn đã bẻ khóa được bao nhiên mạng wi-fi rồi?
Hôm nay mình sẽ hướng dẫn sơ qua cho các bạn cách bẻ khóa WPA/WPA2. Sau khi hoàn thành bước 1 và bước 2 (xem lại chương 4 http://rtfalcon.blogspot.com/2012/03/huong-dan-hack-wifi.html) mà vẫn không "tóm" được một handshake nào thì bạn phải làm gì? (nếu bạn đã quên từ handshake trong wifi hacking nghĩa là gì thì mình xin nhắc lại: đó là hash bị mã hóa có chứa thông tin về password, được gửi đi từ máy tính của user đến router trong quá trình authentication) Và đúng lúc này, trong đầu bạn nảy ra một ý nghĩ: "nếu người dùng không muốn thực hiện thao tác authentication (xác thực) thì tại sao mình lại không thể ép họ làm điều đó?". May thay, trong gói Aircrack có một tool rất hữu dụng mang tên "aireplay-ng", giúp cho ta có thể gửi lệnh deauthentication (đăng xuất) cho người dùng, và sau khi disconnect khỏi router thì họ sẽ connect lại ... và đây chính là điều chúng ta mong chờ.
Lúc này, bạn nhanh tay bật một terminal khác (Ctrl+Alt+T) và gõ:

root@bt:~# aireplay-ng --deauth 5 -a [BSSID] -c [Station] [Interface]

Có thể bạn đã đoán ra rằng dòng lệnh trên thực hiện 5 deauthentication session, và sau khi thực hiện lệnh này (Đâu có ai cấm bạn thực hiện dòng lệnh này nhiều lần đâu nhỉ) thì xác xuất tóm được handshake cần thiết sẽ tăng lên đáng kể.

Thực ra thì còn có một cách khác thực hiện bẻ khóa wifi một cách dễ dàng. Gõ lệnh sau đây:

root@bt:~# besside-ng [Interface]

Application trên sẽ dò khóa và tóm packets từ tất cả những mạng wifi lân cận, nó sẽ tự động bẻ khóa tất cả những WEP key nó tìm thấy và lưu tất cả WPA handshakes tìm được vào một file. Ở trong log của nó (besside.log) bạn có thể tìm thấy những pass WEP nó hack được.
Sau khi thực hiện xong tất cả những thao tác trên thì bạn đã tích góp được một *.cap file với dung lượng khá lớn có chứa handshakes đúng không nào? Để cẩn thận hơn thì bạn có thể gõ lệnh sau đây để check xem trong file này có chứa handshakes không:
root@bt:~# aircrack-ng 

Nếu thực sự file này có chứa handshake thì bạn sẽ thấy kết quả như sau:

dtIZZ.png
Aircrack phát hiện ra handshake rồi kìa

Nhưng đừng mừng vội. Với aircrack-ng bạn chỉ có thể đánh giá sự hiện diện của handshake trong file thôi, đơn giản là vì aircrack-ng sở hữu một EAPOL parser khá tồi, vì vậy nên nó có thể phát hiện ra handshake ở những chỗ... không hề chứa handshake (đúng hơn là có handshake nhưng handshake này không thể sử dụng được). Có thể sau khi đọc xong những dòng này bạn sẽ nản chí... Nhưng không! Không được nản chí lúc này, chúng ta đã tiến rất gần tới mục tiêu rồi mà?! Phải đấu tranh đến cùng chứ... Và lúc này bạn mở một terminal khác lên và gõ lệnh:

root@bt:~# wireshark 

Sau khi load xong GUI interface của wireshark và mở file *.cap cần thiết, bạn gõ lệnh sau đây vào dòng "Filter" để loại bỏ những thông tin không cần thiết:
(eapol || wlan.fc.type_subtype == 0x08) && not malformed

Cùng phân tích kết quả nhé:

flQL0.png
Screenshot 1

vbT3U.png
Screenshot 2

Packet đầu tiên chúng ta tóm được (Screenshot 1) là Beacon frame, mang thông tin về mạng W-lan cũng như thông tin về ESSID. Sự hiện diện của Beacon frame trong file là một lợi thế không thể phủ nhận.
Sau đó chúng ta thấy các gói EAPOL-packets, cũng tức là những thành phần của handshake. Một EAPOL-handshake đầy đủ phải chứa bốn packets, từ msg (1/4) đến msg (4/4), nhưng trong trường hợp này thì chúng ta không gặp may lắm, vì chỉ tóm được những gói (1/4) và (2/4) thôi. Tuy vậy bạn cũng không nên thất vọng quá, vì trong gói msg (1/4) và msg (2/4) có chứa đầy đủ thông tin về password WPA-PSK hash rồi, cũng tức là bạn đã có đủ công cụ cần thiết để bẻ khóa wi-fi, mỗi tội bạn phải tìm ra 2 packets (1/4) & (2/4) liền nhau và thuộc cùng một handshake thôi...

Ở screenshot 2 chúng ta thấy hai packets (1/4) và (2/4) liền nhau (được khoanh tròn). Trong đó bạn có thể thấy rằng access point (Station) TP-Link trong EAPOL-handshake đầu tiên gửi một con số ngẫu nhiên (ANonce) vớt độ dài 131 bytes cho client (Client), và nhận lại hai dòng SNonce và MIC (được client tính ra dựa trên con số ANonce nhận được). Mặt khác, hãy để ý đến thời gian mà xem, 2 gói msg (1/4) và (2/4) này cách nhau những 1 giây, vì vậy nên xác xuất 2 packets này thuộc 2 handshakes khác nhau là khá cao, đồng nghĩa với việc bạn sẽ không thể dò được từ khóa trong khi nó có trong từ điển), và chính vì thiếu packets (3/4) và (4/4) nên bạn không thể kiểm tra xem 2 packets này có thuộc cùng một handshake hay không.

Quay lại với Screenshot 1. Hãy để ý đến 2 packets được khoanh đỏ xem, thời gian nhận được chỉ chênh lệch nhau có 0,0025 giây, đồng nghĩa với việc xác xuất 2 packets này thuộc cùng một handshake là khá cao. Click chuột phải vào Beacon frame và những EAPOL-packets khả thi, chọn Mark Packet (toggle) và lưu vào một file khác, sử dụng menu "Save as...", và đừng quên chọn mục "Marked packets".

Sau chương 5 này mình muốn rút ra kết luận, đó là để bẻ khóa thành công thì tốt nhất là bạn vẫn nên dùng những handshake "đầy đủ", tức là phải đủ bộ msg từ (1/4) đến (4/4). Để tóm được hết những packets đó thì bạn phải được trang bị một adapter khỏe, có thể "nghe rõ" được cả access point, cả client. Tiếc thay không phải lúc nào bạn cũng được trang bị một adapter tốt, vì vậy chúng ta đành chấp nhận phải làm quen với những handshake bị cắn xén, cũng như học cách "hồi sinh" chúng thôi.