18/09/2018, 15:02

Giải mã mật khẩu – Phần 2: Chiến thuật giải mã mật khẩu

Chào mừng các cracker đã trở lại! Kỳ trước tôi bắt đầu viết loạt bài về giải mã mật khẩu, với phần mở đầu là Các nguyên lý và kĩ thuật giải mã mật khẩu cơ bản của nghệ thuật giải mã mật khẩu. Trong phần đầu tôi đã giới thiệu với bạn những thông tin cơ bản và cần thiết nhất ...

Giải mã mật khẩu 1

Chào mừng các cracker đã trở lại!

Kỳ trước tôi bắt đầu viết loạt bài về giải mã mật khẩu, với phần mở đầu là Các nguyên lý và kĩ thuật giải mã mật khẩu cơ bản của nghệ thuật giải mã mật khẩu. Trong phần đầu tôi đã giới thiệu với bạn những thông tin cơ bản và cần thiết nhất để các bạn có thể hiểu được về giải mã mật khẩu.

Thông thường, khi các cracker mới tìm hiểu về giải mã mật khẩu thường sẽ tìm một công cụ hoặc kĩ thuật để giải mã mật khẩu, nhưng rất tiết điều đó chưa phải là quan trọng nhất. Mỗi loại mật khẩu đều có chiến thuật giải mã phù hợp và hiệu quả. Có thể kể một vài loại như là MD5, SHA, NTLM, WPA, online hoặc offline, salt hoặc non-salt. Các bạn đừng lo lắng, tôi sẽ giúp bạn sử dụng một chiến thuật giải mã mà đã được kiểm nghiệm trong thực tế rất hiệu quả. Chiến thuật này được xây dựng dựa trên việc phân tích dữ liệu 5 triệu tài khoản Gmail bị public.

Trong hướng dẫn này, tôi muốn thảo luận về chiến thuật giải mã mật khẩu. Nhiều người mới tìm hiểu về giải mã  mật khẩu chỉ cần chạy công cụ crack mật khẩu và mong đợi một bước đột phá. Hoặc chạy wordlists rất lớn và hy vọng cho tốt nhất. Nếu nó không crack được mật khẩu, chúng ta sẽ mất thời gian và cảm thấy chán nản. Ở đây tôi muốn phát triển một chiến thuật lặp lại nhiều lần cho việc crack mật khẩu sẽ làm việc trên phần lớn mật khẩu, mặc dù không phải tất cả. Không có chiến thuật nào đảm bảo cho các cracker (kể cả chuyên gia) giải mã thành công mọi mật khẩu.

Theo dự định ban đầu của tôi, tôi sẽ giới thiệu bài này vào phần cuối cùng của loạt bài. Nhưng tôi nhận thấy đây là một bài quan trọng và thú vị, vì thế tôi quyết định sẽ giới thiệu với các bạn luôn trong phần 2 này.

XEM THÊM: Giải pháp bảo mật toàn diện cho Doanh Nghiệp

Xây dựng chiến thuật giải mã mật khẩu

Giả định ở đây là chúng ta cần giải mã khẩn cấp một lượng lớn mật khẩu khác nhau. Đầu tiên ta phải nắm rõ được loại mật khẩu cần giải mã mật khẩu là gì. Các loại mã hóa này là mã hóa một chiều. Ví dụ như, Mật khẩu của các hệ thống Windows có định dạng NTLM nằm trong file SAM. Còn các hệ thống Linux mật khẩu trong file/etc/shadow kiểu mã hóa tùy từng hệ điều hành. Tôi xin giới thiệu công cụ hash-identifier trên linux có thể giúp bạn xác định loại hash (đoạn text dữ liệu sau khi được mã hóa) đó là gì?

giai-ma-mau-khau-phan-2-securitybox.vn

Ngoài ra chúng ta có thể dùng John the Ripper để xác định, tỉ lệ xác định đúng khoảng 90%. Còn Cain and Able hay Hashcat chúng ta phải xác định trước loại mã hóa đó là gì.

chien-thuat-giai-ma-mat-khau

Chúng ta có thể thấy hình trên là một số loại hash mà cudahashcat hỗ trợ. Các bạn có thể dùng lệnh hashcat – h để xem chi tiết. Hoặc có thể đọc trên trang chủ của hashcat.

Bruteforce các mật khẩu yếu

Mặc dù có vẻ hơi trái so với bình  thường, tôi thường bắt đầu bằng cách này cố gắng bruteforce các mật khẩu rất ngắn. Nếu mật khẩu dài thì có thể mất đến hàng giờ, hàng ngày. Nhưng với mật khẩu ngắn thì chúng ta chỉ mất vài phút để có thể vét cạn được hết.

Tôi thường để độ dài mật khẩu bruteforce từ 5 trở xuống (cái này tùy thuộc vào cấu hình phần cứng của bạn). Trong một số trường hợp chúng ta có thể thành công một số mật khẩu.

Ngoài ra ở bước này, tôi sẽ tiến hành bruteforce mật khẩu chỉ có số, thông thường tôi cho chạy từ 6 đến 8 chữ số(vì từ 1 đến 5 đã chạy rồi). Mật khẩu số 8 kí tự yêu cầu phải thử 100 triệu khả năng. Nếu phần cứng của các bạn mạnh, các bạn hoàn toàn có thể đẩy lên 12 chữ số, chỉ cần khoảng 1 nghìn tỉ khả năng thôi.

giải mã mật khẩu 3

Như hình trên là cấu hình tool Cain and Abel brute force mật khẩu từ 1 đến 6 kí tự và chỉ chứa số.

Low-Hanging Fruit 1

“Low-hanging Fruit” trong lĩnh vực giải mã mật khẩu dùng để ám chỉ những mật khẩu được đặt bởi người dùng mà mang tính chất đối phó. Ví dụ một website yêu cầu mật khẩu tối thiểu khi tạo tài khoản mới là 6 kí tự. Thì có một số lượng mật khẩu sẽ được đặt là “123456”, “654321”, “qwerty”…

Một khi chúng ta đã crack được một vài mật khẩu ngắn bằng bruteforce, chúng ta có thể dùng luôn mật khẩu đấy để giải mã những mật khẩu liên quan. Có thể là mật khẩu thu thập được từ một công ty, tài khoản đăng nhập các website của một người dùng, hoặc là hệ thống thiết bị trong các khu công nghiệp công nghệ cao.

Mặc dù có thể tài khoản bị bẻ khóa có thể bị hạn chế một số quyền, có nhiều cách để leo thang đặc quyền cho tài khoản sysadmin hoặc root.

Để đơn giản mỗi lần chạy bạn nên chạy một nhóm các mật khẩu có thể có liên quan đến nhau, để tăng hiệu quả giải mã.

Thử các mật khẩu phổ biến

Là con người, mỗi chúng ta là một cá thể tồn tại duy nhất, tuy nhiên chúng ta lại thường có xu hướng suy nghĩ giống nhau. Người dùng khi được yêu cầu đặt mật khẩu thường đặt theo thói quen hoặc chỉ để thỏa mãn chính sách mật khẩu được yêu cầu và đương nhiên là phải dễ nhớ. Đó là lý do tại sao bạn sẽ thường xuyên nhìn thấy một số mật khẩu như là “12345678” (mật khẩu wifi) hay bảo mật hơn “Vannam1987”. Mặc dù rất đơn giản nhưng nó vẫn đáp ứng được các chính sách mật khẩu như là 8 kí tự, chữ hoa, chữ thường, chữ số. Mật khẩu kiểu này và các biến thể của nó thường hay được sử dụng.

Để giải quyết vấn đề này, tôi thường sử dụng phương pháp từ điển để tiến hành giải mã mật khẩu. Các từ điển như là ngày tháng năm sinh, họ tên, họ tên kết hợp ngày tháng năm sinh, chứng minh thư, biển số xe, địa chỉ nhà. Ngoài ra tôi còn sử dụng một số từ điển tổng hợp quốc tế như là “rockyou”. Về từ điển tên người Việt, bạn có thể tham khảo bộ từ điển vipasswordict của Xnohat.

Nếu có thông tin của đối tượng, chúng ta hoàn toàn có thể xây dựng từ điển riêng để giải mã mật khẩu của đối tượng đó.

Phương pháp này có tỉ lệ thành công khá cao, nhất là những tài khoản online. Việc xây dựng được bộ tài khoản ưng ý cũng không quá phức tạp, tôi sẽ giới thiệu với các bạn trong phần tiếp theo.

Low-Hanging Fruit 2

Qua 3 bước trên bạn đã có được một số lượng mật khẩu trong khoảng thời gian tối thiều rồi. Bây giờ chúng ta sẽ đi đến các mật khẩu có độ phức tạp cao hơn. Trong lần giải mã lần này, chúng ta sẽ xử lý các mật khẩu có độ dài và độ phức tạp. Khi chúng ta  được yêu cầu thay đổi mật khẩu thường xuyên thì các bạn sẽ làm gì, hẳn là sẽ có bạn cũng như nhiều người khác chọn cách đơn giản nhất là thêm hoặc thay đổi con số ở đầu hoặc cuối mật khẩu. Một số công cụ cho phép giải mã mật khẩu theo “Rule”. Các rule ở đây là các luật để thử các mật khẩu dựa vào mật khẩu gốc. Ví dụ như là thêm số vào đầu hoặc cuối, chuyển “i” thành “1”, chuyển “a” thành “@”. Các công cụ Hashcat và John the Ripper hỗ trợ phương pháp này. Đây cũng là một trong các nguyên nhân tôi thích sử dụng 2 tool này.

Hybrid Attack

Cho đến lần quét này chúng ta có thể đã giải mã được hơn 50% mật khẩu, các bước tiếp theo sẽ khó khăn hơn vì mật khẩu còn lại chưa giải mã được sẽ dài và kết hợp nhiều kí tự chữ hoa, chữ thường, số và kí tự đặc biệt như là “3@$yPa$sW0rd”(easypassword @@). Đây là một trong nhưng mật khẩu tương đối khó. Nó là một biến thể khó của các mật khẩu thông dụng.

Tiếp theo, chúng ta phải cần một danh sách mật khẩu kết hợp từ điển chữ số, chữ hoa, chữ thường kết hợp với rule. May mắn là John the Ripper nó sẽ tự động làm cho chúng ta. Còn Hashcat cũng có tùy chọn cấu hình.

giải mã mật khẩu 4

Trong hình trên, chúng ta có thể thấy một số rule kết hợp như thêm số, hoặc chữ hoa vào các vị trí chỉ định.

Cuối cùng, nếu tất cả đều thất bại

Nếu tất cả các cách trên đều không giải mã được mật khẩu, lúc này chúng ta buộc phải nhờ vào sức mạnh của phần cứng hoặc là may mắn. Có thể đối với 1 CPU đơn lẻ thì rất chậm, nhưng có thể tăng tốc từ 1000x trở lên bằng hệ thống botnet, ASIC, hoặc GPU. Tốc độ giải mã nhanh nhất mà 25 GPU kết hợp có thể lên đến 348 tỷ hash/s.

Ngay cả khi chúng ta buộc phải bruteforce, chúng ta cũng phải có chiến lược riêng cho nó. Ví dụ: Nếu chúng ta biết rằng chính sách mật khẩu của đối tượng là 8 kí tự, mà các bước trên không giải mã được thì hãy thử bruteforce với 8 kí tự. Có thể nó sẽ giúp bạn giảm thiểu thời gian và thành công một số mật khẩu.

Trong trường hợp này, bạn nên tìm cách để biết được các thông tin về đối tượng, càng nhiều càng tốt.

Tôi xin kết thúc phần 2 ở đây, trong phần tới tôi sẽ giới thiệu cho các bạn chi tiết về việc xây dựng các từ điển.

Nếu có bất kì thắc mắc hoặc góp ý, xin vui lòng cho chúng tôi biết. Xin cảm ơn!

XEM NHIỀU NHẤT: Facebook kích hoạt tính năng kiểm tra an toàn tại Hoa Kỳ sau một cuộc tấn công khủng bố ở New York

Securitybox giải pháp an ninh mạng toàn diện. Đánh giá bảo mật mạng từ các chuyên gia hàng đầu trong lĩnh vực an ninh mạng.

Thông tin liên hệ:

Công ty cổ phần An toàn thông tin MVS – SecurityBox

Địa chỉ: Tầng 9, Tòa nhà Bạch Dương, Số 459 Đội Cấn, Ba Đình, Hà Nội

Hotline: (+84) 982.593.866 (Mr. Cường)

Email: info@securitybox.vn

Theo chuyên gia an ninh mạng: Ngô Cao Đại

0