Hãy suy nghĩ như một hacker và tự hỏi bản thân, tùy thuộc vào cấu trúc của mật khẩu, mật khẩu có thể được bẻ khóa nhanh như thế nào.
Khi một hacker hoặc thâm nhập kiểm tra phá vỡ một hệ thống và muốn truy cập mật khẩu văn bản rõ ràng từ một dump cơ sở dữ liệu, trước tiên họ phải bẻ khóa các hash mật khẩu được lưu trữ. Nhiều kẻ tấn công đã lao vào khái niệm này: họ đã thử bất kỳ cuộc tấn công mật khẩu tùy ý nào mà họ muốn, và hầu như không có lý do gì. Cuộc thảo luận này sẽ cho thấy một số phương pháp bẻ khóa mật khẩu hiệu quả và làm thế nào để sử dụng phân tích thống kê của mật khẩu kết hợp với các công cụ để tạo ra một phương pháp có giới hạn thời gian để đạt được một bẻ khóa hiệu quả và thành công. Tại sao điều này lại quan trọng?
Bẻ khóa mật khẩu là một sự nghiệp sắp chết. Người dùng cần tạo mật khẩu phức tạp hơn và một số nhà phát triển backend bắt đầu sử dụng các cơ chế như Bcrypt để thay thế các hàm băm tiêu chuẩn. Bcrypt hash mất nhiều thời gian hơn để tạo ra và do đó, mật khẩu trở nên khó bẻ khóa hơn. Các hacker cần tạo ra các giá trị băm rất nhanh để bẻ khóa mật khẩu hiệu quả, vì vậy Bcrypt là một công cụ rất mạnh mẽ để chống lại các cuộc tấn công như vậy. Để minh họa cho ví dụ này, chương trình bẻ khóa mật khẩu được sản xuất bởi 25 cụm GPU được giới thiệu vào năm 2012 có thể đạt được tốc độ tạo băm NTLM 350 tỷ băm mỗi giây, so với tốc độ tạo băm Bcrypt 71.000 băm. Sử dụng điều này làm mô hình so sánh, đối với mỗi hash Bcrypt được tạo, 5 triệu hash NTLM có thể được tạo ra. Khi đối mặt với thuật toán Bcrpyted, tin tặc phải thực hiện nhiều dự đoán tính toán hơn về mật khẩu và không thể dựa vào việc sử dụng lực brute cho mọi khả năng.
Lưu ý: Không cần phải thực hiện các bước tấn công gia tăng nếu kẻ tấn công biết độ dài của mật khẩu rất ngắn đến mức không mất nhiều thời gian để bẻ khóa không gian khóa.
Hiệu quả thời gian trở thành yếu tố then chốt để bẻ khóa mật khẩu thành công. Mặc dù sẽ rất tốt để bao phủ toàn bộ không gian quan trọng của mật khẩu người dùng, thời gian cần thiết để làm điều đó thường không khả thi. Vì vậy, khi bẻ khóa, điều quan trọng là trước tiên hãy thử các cuộc tấn công tiết kiệm thời gian nhất và nếu không thành công, tiếp tục với các cuộc tấn công mật mã chậm hơn bao phủ nhiều không gian khóa hơn. Phương pháp nhanh nhất là một cuộc tấn công từ điển đơn giản dựa trên mật khẩu người dùng thường được sử dụng và các mật khẩu trước đó. Từ đó, bạn nên cố gắng thao túng từ điển để thêm số hoặc ký hiệu vào cuối hoặc thay đổi chữ cái. Điều này được gọi là tấn công lai hoặc tấn công dựa trên quy tắc. Tiếp theo, bạn có thể thử sử dụng chức năng học máy để tạo mật khẩu có thể. Chuỗi Markov là một ví dụ điển hình. Bằng cách kết hợp các yếu tố phổ biến tồn tại trong tiếng Anh để tạo thành các từ (ví dụ: "ing", "er", "qu"), bạn có thể tạo ra một phỏng đoán tốt về mật khẩu, chẳng hạn như mật khẩu dưới đây. Mặc dù rất dễ dàng để bẻ khóa mật khẩu cụ thể này bằng bất kỳ phương pháp nào, nhưng để đơn giản hóa tất cả các vectơ tấn công, chúng tôi sẽ sử dụng mật khẩu này. Password1234Password1234
Cuối cùng, các cuộc tấn công brute force có mục tiêu (được gọi là tấn công mặt nạ) bao phủ tất cả không gian khóa của một mật khẩu nhất định dựa trên cấu trúc mật khẩu. Khi tôi nói "cấu trúc" của mật khẩu, tôi đề cập đến loại ký tự và thứ tự được sử dụng để tạo mật khẩu. Ví dụ, một "cấu trúc" có chữ hoa, tiếp theo là 7 chữ nhỏ, tiếp theo là 4 chữ số (được ghi là). Password1234ullllllldddd
Chữ cái nhỏ, chữ hoa, ký hiệu, số (l) (u) (s) (d)
Vì vậy, nếu kẻ tấn công quyết định sử dụng cấu trúc này để tạo ra tất cả các khả năng kết hợp ký tự, cuối cùng anh ta hoặc cô ấy sẽ tìm thấy mật khẩu. Sau đó, câu hỏi của kẻ tấn công trở thành: cấu trúc nào nên được nhắm mục tiêu đầu tiên khi tấn công một tập hợp các giá trị băm? Password1234
Để giúp trả lời câu hỏi này, tôi đã thực hiện một số phân tích thống kê về các bản dump mật khẩu phổ biến để xem liệu có tồn tại một cấu trúc mật khẩu phổ biến hơn các cấu trúc mật khẩu khác hay không và mức độ chính xác của cấu trúc này. Kích thước mẫu với hơn 34 triệu mật khẩu bị lộ công khai bao gồm các bản dump mật khẩu nổi tiếng như RockYou, LinkedIn, phpBB…
Hình dưới đây cho thấy tần số của cấu trúc mặt nạ đối với mỗi mặt nạ duy nhất. Đường màu đỏ biểu thị đường 50%, xuất hiện sau mặt nạ thường xuyên thứ 13.
Điều này có nghĩa là 13 cấu trúc mặt nạ duy nhất đầu tiên chiếm 50% mật khẩu mẫu. Cấu trúc của hơn 20 triệu mật khẩu trong mẫu nằm trong 13 mặt nạ đầu tiên. Những kết quả này khá gây sốc về tính phổ biến của mật khẩu có cấu trúc. 50% còn lại tồn tại bên trong đuôi dài bên phải, đã được thu nhỏ trong biểu đồ này. Trên thực tế, trong số 260.500 mặt nạ duy nhất, chỉ có 400 mặt nạ được hiển thị trong biểu đồ này. Khái niệm về mật mã có cấu trúc phổ quát này thật đáng kinh ngạc; Tuy nhiên, điều này không có gì đáng ngạc nhiên khi bạn xem xét cách người dùng tạo và ghi nhớ mật khẩu của họ. Dựa trên dữ liệu phân tích, có một số yếu tố logic giúp giải thích làm thế nào điều này có thể xảy ra. Khi người dùng được yêu cầu cung cấp mật khẩu có chữ hoa, nó được sử dụng như ký tự đầu tiên hơn 90% thời gian. Khi được yêu cầu sử dụng số, hầu hết người dùng sẽ thêm hai chữ số vào cuối mật khẩu (có thể là năm tốt nghiệp). Tùy chọn phổ biến tiếp theo là kết thúc mật khẩu bằng bốn chữ số (có thể là năm trước hoặc năm nay). Trong trường hợp này, con số phổ biến nhất tiếp theo có một số ở cuối và ba số ở cuối. Những điểm chung về cấu trúc như vậy cho phép kẻ tấn công dự đoán cấu trúc của mật khẩu người dùng có khả năng là gì.
Tận dụng kiến thức cấu trúc này, có thể an toàn giả định rằng người dùng rất có thể sẽ đặt mật khẩu của họ thành than (chữ cái ngẫu nhiên), ngay cả khi tất cả chúng đều bắt đầu bằng 9 chữ cái và có 9 chữ cái. Do đó, chúng ta giả sử rằng với một cấu trúc mật mã, nếu chúng ta nhìn thấy các chữ cái liên tiếp, nó rất có thể là một từ. Đây là một giả định rất hữu ích cho crackers vì nó loại bỏ rất nhiều không gian key. Sau đó, nó trở thành một cuộc tấn công hỗn hợp khai thác sự quan trọng thống kê của cấu trúc mật mã chung. Khoai tây Espwivwdhpp
Thông thường, với tư cách là người kiểm tra thâm nhập, ngay cả khi chúng ta phá vỡ một tập hợp các giá trị băm, chúng ta có thể không có thời gian để phá vỡ tất cả các giá trị băm. Tuy nhiên, phá vỡ chúng có thể giúp nâng cấp quyền truy cập vào hệ thống và mang lại những khám phá hữu ích hơn cho khách hàng. Do đó, khi bẻ khóa mật khẩu, có thể hữu ích để xác định bao nhiêu thời gian sẽ được phân bổ để bẻ khóa một tập hợp các giá trị băm. Sử dụng các cấu trúc được tìm thấy trong phân tích trước đó, kẻ tấn công có thể xác định 10 cấu trúc phổ biến hàng đầu mà anh ta muốn ghi đè dựa trên các yêu cầu về độ phức tạp của mật khẩu được sắp xếp theo thời gian hoàn thành nhanh nhất. Cuối cùng, một kẻ tấn công có thể giới hạn thời gian đối với phương pháp của mình bằng cách dành không quá một giờ để thực hiện crack. Điều này đã được phát hiện trong một thử nghiệm thâm nhập gần đây để lấy hash. Dưới đây là ảnh chụp nhanh kết quả của cracker dựa trên CPU.
Trong trường hợp này, cấu trúc được hoàn thành nhanh nhất là chúng ta định nghĩa nó là một chữ hoa, tiếp theo là ba chữ nhỏ ("W" cho "Word") và sau đó là bốn chữ số. Có 69 mật khẩu khớp với cấu trúc trong bộ băm và CPU tiêu chuẩn của tôi có thể lướt qua tất cả các khả năng của cấu trúc trong một phút. Chúng tôi đã dừng crack ở phút 62 và crack đã tạo ra 221 băm crack độc đáo, khớp với 491 tài khoản, dẫn đến tổng cộng 11% rò rỉ. Lý do cho sự khác biệt lớn về số lượng mật khẩu bị bẻ khóa và rò rỉ tài khoản là do cài đặt Office thường khiến mọi người sử dụng mật khẩu thông thường. Nếu kẻ tấn công xác định rằng mật khẩu chung đang được sử dụng trong môi trường, tất cả người dùng có cùng mật khẩu cũng sẽ bị đe dọa. U (W3) dddd
Mặc dù các cuộc tấn công hỗn hợp hoặc các cuộc tấn công dựa trên quy tắc (ví dụ) có thể phá vỡ một số mật khẩu trong số đó nhanh hơn, cấu trúc của các mật khẩu tấn công có thể cho phép chúng ta bao phủ nhiều không gian khóa hơn. Phương pháp này là bước tiếp theo hiệu quả nếu một cuộc tấn công Faster được chứng minh là không thể phá hủy băm mục tiêu thành công. Ngoài ra, điều quan trọng cần nhớ là ví dụ này được thực hiện trên một CPU khá tầm thường và thực hiện các cuộc tấn công tương tự trên một GPU mạnh mẽ có thể rút ngắn thời gian này xuống còn vài giây. Do đó, thời điểm chính xác không quan trọng bằng việc thực hiện lý thuyết một cách hiệu quả. best64
giúp chúng ta tấn công các cấu trúc mật khẩu phổ biến nói chung; Tuy nhiên, có một số công cụ có thể giúp định vị một ứng dụng cụ thể. Các công cụ như CeWL có thể thu thập các từ từ từ các trang web và được sử dụng để tạo danh sách từ hoặc từ điển dành riêng cho công ty. Nó có hiệu quả vì các công ty có xu hướng sử dụng mật khẩu liên quan đến ngành, công ty hoặc công việc của họ. Ngoài ra, vì chúng tôi xác định rằng mật khẩu thường được sử dụng là phổ biến trong môi trường làm việc, mật khẩu đã bị bẻ khóa cũng có thể được sử dụng làm cơ sở cho các mật khẩu khác, có thể tương tự. Ví dụ, nếu chúng ta phát hiện ra rằng "" là mật khẩu của một người dùng, chúng ta có thể đưa "" vào danh sách từ mới, đưa nó vào bộ quy tắc và sau đó phát hiện ra rằng một người khác có mật khẩu "". Khái niệm sử dụng các từ cơ bản của crack (chẳng hạn như ' ') và sửa đổi với các ký tự xung quanh rất hiệu quả khi crack các giá trị băm được đổ từ môi trường doanh nghiệp, có thể truy xuất trở lại khái niệm tái sử dụng mật khẩu. Theo các thử nghiệm thâm nhập mà chúng tôi đã thực hiện, điều này phù hợp nhất để bẻ khóa 20% cuối cùng của các hash chưa được bẻ khóa. AcmeCorp1234AcmeCorpAcmeCorp@2015AcmeCorp
Cũng rất quan trọng để cắt tỉa từ điển để tất cả các mật khẩu được đoán đáp ứng các yêu cầu do ứng dụng quy định, để không lãng phí thời gian đoán các mật khẩu không thể đoán được do độ dài hoặc thành phần ký tự.
Bắt đầu với các cuộc tấn công nhanh nhất, bao phủ không gian khóa ít nhất (các cuộc tấn công từ điển tiêu chuẩn) đến không gian khóa chậm nhất và lớn nhất (lực thô thuần túy) là sự tiến triển lý tưởng nhất để xem xét thời gian được phân bổ cho các cuộc tấn công. Do đó, kẻ tấn công nên thực hiện một phương pháp tiêu chuẩn có tính đến điều này. Nếu tài khoản mà kẻ tấn công muốn xâm nhập hoàn thành trong giai đoạn đầu tiên, thì có thể không có lý do gì để tiếp tục sử dụng các cuộc tấn công khác; Tuy nhiên, trong nhiều trường hợp, một cuộc tấn công từ điển đơn giản có thể không đủ nếu có một tài khoản mục tiêu, hoặc kẻ tấn công chỉ muốn phá hủy càng nhiều tài khoản càng tốt, do đó có thể cần một cuộc tấn công hỗn hợp với cấu trúc thống kê và một cuộc tấn công bạo lực có mục tiêu. Do đó, việc thiết lập phương pháp là rất quan trọng để crack thành công, có thể bao gồm các phương pháp đã đề cập trước đó cũng như một số quy trình tự động hóa. Các công cụ gần đây (như PRINCE) có thể giúp tạo điều kiện thuận lợi cho việc bẻ khóa mật khẩu. Điều quan trọng là phải phát triển một dây đai công cụ, ví dụ như PRINCE để thử trong phương pháp, nhưng hiểu được các chức năng đằng sau các công cụ thay vì dựa hoàn toàn vào chúng sẽ làm cho việc crack hiệu quả hơn.
Bằng cách phân tích bằng cách sử dụng các mật khẩu này, bạn có thể xác định các cấu trúc phổ biến nhất cho một mức độ phức tạp yêu cầu. Do đó, các nhà phát triển có thể nên triển khai một số điều khiển để ngăn người dùng sử dụng một số cấu trúc rất phổ biến này để làm phẳng đường cong của đồ họa trước đó. Tuy nhiên, vấn đề với ý tưởng này là nếu không có cấu trúc đơn giản, người dùng có thể gặp khó khăn trong việc nhớ mật khẩu của họ. Tôi khuyên bạn nên sử dụng một trình quản lý mật khẩu yêu cầu xác thực kép. Các ứng dụng này sẽ tạo và lưu trữ tất cả các mật khẩu của bạn cho bạn, vì vậy bộ nhớ không phải là vấn đề. Mật khẩu mà họ tạo ra có cấu trúc ngẫu nhiên và có thể được sử dụng miễn là ứng dụng cho phép. Như tôi đã đề cập trước đó, mật khẩu mã hóa là một cách rất hiệu quả khác để làm chậm triển vọng phát triển của kẻ tấn công. Cuối cùng, việc thực hiện các chiến lược trong văn phòng giúp người dùng hiểu được sự nguy hiểm của việc chia sẻ mật khẩu hoặc sử dụng lại mật khẩu là một bước đi thành công theo đúng hướng, ngay cả khi người dùng không phải lúc nào cũng tuân thủ. Mặc dù rất có thể họ sẽ không tuân thủ mọi lúc, nhưng đây là một biện pháp kiểm soát hiệu quả.
Bẻ khóa mật khẩu có thể là một khái niệm mơ hồ. Khi độ khó của việc bẻ khóa ngày càng tăng, các cuộc tấn công có mục tiêu dựa trên hiệu quả là cần thiết và các phương pháp bẻ khóa cá nhân nên được thiết lập. Không đáng để đầu tư tiền để cuối cùng tăng tốc độ tạo hash. Do đó, việc sử dụng số liệu thống kê và các công cụ làm phương tiện tấn công để thực hiện một phương pháp và quy trình đơn giản hóa có thể tạo điều kiện thuận lợi cho việc bẻ khóa mật khẩu. Các nhà phát triển có thể phát triển các biện pháp kiểm soát để đối phó với tình huống này và người dùng có thể sử dụng trình quản lý mật khẩu an toàn để giảm thiểu hiệu quả của các cuộc tấn công này; Tuy nhiên, việc triển khai như vậy vẫn chưa phổ biến lắm. Hiện nay, các cuộc tấn công thống kê nhằm vào mật khẩu có hiệu quả cả về số lượng bẻ khóa và hiệu quả kết nối theo thời gian. Hãy suy nghĩ về mật khẩu của riêng bạn và tự hỏi, dựa trên cấu trúc của mật khẩu và những biện pháp kiểm soát nào trong văn phòng của bạn có thể khiến kẻ tấn công xâm nhập vào tài khoản của người dùng, chúng có thể bị bẻ khóa nhanh như thế nào.