Xem: Hack điện thoại Android
Xem thêm bài:
Xâm nhập Wifi bằng WPS
Hãy thận trọng khi sử dụng WiFi miễn phí tại Việt Nam
Ẩn sóng Wireless cho an toàn
I. WPS là gì?
WPS là một tính năng có mặt trong gần như tất cả các router wireless được sản xuất trong những năm gần đây. Tính năng này cho phép một máy tính có thể kết nối đến một mạng không dây thong qua việc nhập mã PIN mà không cần phải nhớ mật khẩu của mạng đó.
Nghe có vẻ khá khôi hài khi mà các nhà nghiên cứu khuyên bạn hãy đặt mật khẩu tốt nhất là trên 14 kí tự bao gồm các ký tự đặc biệt và các dấu câu. Và rồi họ lại thiết kế ra một cách truy cập mà người ta chỉ cần nhớ có 8 số nguyên. Thực ra ý tưởng này cũng khá hiệu quả bởi vì mã PIN chỉ được dán trực tiếp vào thiết bị của bạn
Nếu router nhà bạn có biểu tượng sau, tôi nghĩ bạn nên dành ra ít phút để đọc bài viết này
II. Quá trình mã hóa WPS diễn ra như thế nào
Bạn có thể xác định router của mình có đang bật WPS không bằng cách login vào router, vào phần wireless connection và xem phần Wifi-Protected-Setup có đang enable hay không. Đây là hình minh họa trên router D-Link của tôi
Thực ra quá trình từ khi bạn nhập mã PIN cho đến khi router cung cấp mật khẩu phải trải qua đến 8 quá trình mã hóa. Thuật toán này được thiết kế để có các yếu tố thay đổi theo thời gian
Enrollee = Access Point (router wireless của bạn)
Registrar = Supplicant = Client/Attacker
PKE = Diffie-Hellman Public Key Enrollee
PKR = Diffie-Hellman Public Key Registrar
Authkey và KeyWrapKey được lấy từ Diffie- Hellman shared key.
Authenticator = HMACAuthkey(last message || current message)
EKeyWrapKey = Stuff encrypted with KeyWrapKey (AES- CBC)
PSK1 = first 128 bits of HMACAuthKey(1st half of PIN) PSK2 = first 128 bits of HMACAuthKey(2nd half of PIN)
E-S1 = 128 random bits
E-S2 = 128 random bits
E-Hash1 = HMACAuthKey(E-S1 || PSK1 || PKE || PKR) E-Hash2 = HMACAuthKey(E-S2 || PSK2 || PKE || PKR)
R-S1 = 128 random bits
R-S2 = 128 random bits
R-Hash1 = HMACAuthKey(R-S1 || PSK1 || PKE || PKR) R-Hash2 = HMACAuthKey(R-S2 || PSK2 || PKE || PKR)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 |
Nửa thứ 1 của mã PIN | Nửa thứ 2 của mã PIN | checksum |
Nhìn có vẻ phức tạp nhưng thật ra có một mẹo nhỏ ở đây. Bạn thấy rằng thật ra bit cuối cùng chỉ là bit để kiểm tra xem 7 bit đầu tiên của mã PIN là đúng hay sai. Nghĩa là mã PIN chỉ có 7 bit
Thuật toán ở trên cũng không thực sự cần sự có mặt của cả 7 bit. Thuật toán trên chỉ kiểm tra sự hợp lệ của 4 bit đầu tiên, và nó CHỈ KIỂM TRA 3 BIT CÒN LẠI KHI 4 BIT ĐẦU HỢP LỆ. Điều này dẫn đến một việc rất thú vị là thay vì bạn phải đoán từ 00000000 đến 99999999 thì bạn chỉ cần đoán từ 0000-9999 cho phần đầu và sau đó là 000 đến 999 cho phần sau. Hãy làm một vài phép toán đơn giản, từ việc phải đoán đến 10^7 trường hợp bạn chỉ cần đoán 10^4 +10^3 trường hợp (giảm đến 99.89%)
Vậy là với tính năng WPS, bạn đã đem lại sự mạo hiểm cho mạng không dây của mình, điều này tương tự với chuyện thay 14 ký tự phức tạp thành 4 con số nguyên.
III. Cải tiến WPS – Tốt nhưng chưa đủ
Trong 3 năm qua (lần đầu tiên áp dụng WPS là 2011), các nhà sản xuất đã áp dụng thêm một số biện pháp để giúp tiêu chuẩn này an toàn hơn khỏi những kẻ tò mò. Thay vì được phép thử toàn bộ các trường hợp, bạn chỉ có thể nhập một vài mã PIN trong một thời điểm mà thôi
Tuy nhiên một nhà nghiên cứu ở Thụy sĩ vừa tìm ra một điểm yếu khác trong WPS khiến cho việc giới hạn này không còn là trở ngại cho việc tấn công vào các mã PIN nữa
Vấn đề nằm ở thong điệp M3 trong quá trình 8 bước mã hóa trên
STA nonce | E-Hash1AES(HMAC(PIN1),E-S1) | E-Hash2AES(HMAC(PIN2),E-S2) | HMAC |
Sẽ thế nào nếu bạn đoán được E-S1 và E-S2? Như vậy bạn có thể thực hiện việc bruteforce ngay cả khi offline. Lý do là router sẽ gửi cho bạn dữ liệu nếu bạn gửi cho nó một mã hash (chia làm 2 phần) của một thuật toán đã biết, và nó mã hóa 2 phần này bằng thuật toán AES với khóa là một số ngẫu nhiên nào đó. Vậy nếu bạn biết được cặp số này bạn có thể tính toán với mỗi mã PIN tuần tự cho đến nó khi trùng với dữ liệu mà router đã gửi.
Nhà nghiên cứu này đã tìm ra ít nhất 2 firmware khác nhau mắc các vấn đề liên quan đến việc mã hóa.
Firmware thứ nhất gặp vấn đề trong việc tạo các số ngẫu nhiên, số này là số non-cryptographic và có tất cả 2^32 trường hợp có thể phát sinh, một sai lầm nữa là thong điệp M1 liên quan đến việc router sẽ gửi cho bạn một số ngẫu nhiên để làm session ID. Nhưng chính số ngẫu nhiên này lại có thể giúp bạn xác định được số thứ 2 trong quá trình mã hóa M3
X(i+1)=(1103515245Xi x 12345)mod 2^32
Lưu ý Xi và X(i+1) nghĩa là 2 số kề nhau
Với một chút toán học, bạn sẽ nhận ra rằng kết quả trên sẽ không bao giờ lặp lại trong chu kì 2^32 trường hợp nói trên
Frimware thứ hai tốt hơn một chút, tuy vẫn gặp vấn đề tương tự như trên nhưng nó sẽ cho ra một vài kết quả goống nhau cho những lần chạy khác nhau
Một vấn đề nữa giúp việc tấn công kể trên có vẻ khả thi là các tổ hợp mã hóa của mã PIN không mang tính “stretching” (đây là một thuật ngữ trong mật mã chỉ việc lặp đi lặp lại một quá trình hash hoặc mã hóa) vốn có tác dụng cản trở quá trình bruteforce bằng cách gia tăng quá trình xử lý các hàm băm
Kết luận
Bạn nên tắt tính năng WPS ngay lập tức vì với năng lực tính toán của CPU ngày nay, các hacker có thể bẻ khóa các mã PIN của bạn chỉ trong vài phút với một kết nối đủ ổn định
Theo CEH
Lượt xem (16689)
Để lại bình luận: