it-swarm-vi.com

Mật khẩu băm mật khẩu Windows 7

Gần đây tôi đã bắt gặp một sốofnguồn cho thấy việc bẻ khóa mật khẩu tài khoản người dùng Windows rất dễ dàng bằng cách kiểm tra băm mật khẩu của họ.

Tôi hiểu rằng các giá trị băm này được lưu trữ trong tệp SAM ở hai định dạng: LM NTLM . LM không an toàn (và kể từ Vista, một thứ có ý nghĩa không được lưu trữ, phải không?). Tuy nhiên, NTLM cũng yếu về mặt mật mã và cũng có thể bị phá vỡ một cách nhanh chóng.

Trong mọi trường hợp, ngay cả với những gì tôi sẽ xem là mật khẩu "mạnh", tôi đã thấy chúng bị bẻ khóa trong vài phút - chỉ bằng cách khởi động lại máy tính vào Linux từ ổ đĩa flash, rồi chạy chương trình trích xuất mật khẩu từ các băm. Đây dường như là một lỗ hổng lớn.

Về điều duy nhất tôi có thể tìm thấy trên mạng về việc ngăn chặn điều này là sử dụng mật khẩu dài hơn, để đảm bảo rằng hàm băm LM yếu hơn không có ý nghĩa - nhưng NTLM vẫn còn yếu.

Bất cứ ai cũng biết làm thế nào để bảo vệ chống lại các loại tấn công?

17
imallett

Có một vài điều cần xem xét ở đây. Hai thuật toán đã được Microsoft sử dụng cho cơ sở dữ liệu tài khoản trên các hệ thống windows:

LM (Quản lý mạng LAN)

NTLM (Trình quản lý mạng LAN)

Kẻ tấn công có quyền truy cập vật lý vào hệ thống của bạn có thể dễ dàng kết xuất nội dung của cơ sở dữ liệu SAM (Trình quản lý tài khoản bảo mật) cho tất cả các tài khoản cục bộ và sau đó sử dụng một cái gì đó như Ophcrack ( http://ophcrack.sourceforge.net ) để chạy các cuộc tấn công bảng Rainbow chống lại các giá trị băm.

Tuy nhiên, bạn cần xác định rủi ro thực tế là gì: kẻ tấn công có thể bẻ khóa mật khẩu và/hoặc kẻ tấn công có thể truy cập hệ thống. Điều này rất quan trọng vì nó không cần thiết phải bẻ khóa mật khẩu (đoán giá trị của nó) để thỏa hiệp hệ thống. Nhiều công cụ khác chỉ đơn giản là thay thế hàm băm trong cơ sở dữ liệu SAM bằng thứ được chọn bởi kẻ tấn công. Điều này thỏa hiệp hệ thống, nhưng không nhất thiết phải là mật khẩu. Mã hóa toàn bộ đĩa giải quyết cả hai vấn đề như là một tuyến phòng thủ đầu tiên: kẻ tấn công của bạn không thể gắn kết âm lượng trong bất kỳ công cụ nào mà chúng sử dụng để xử lý xung quanh trong cơ sở dữ liệu SAM. Nếu bạn đi tuyến đường này rất nhiều nhà cung cấp thương mại cung cấp giải pháp. Truecrypt ( http://www.truecrypt.org/ ) cung cấp một chương trình miễn phí tuyệt vời. Bitlocker hoặc bất kỳ giải pháp mã hóa tích hợp hệ điều hành nào là khá vô giá trị vì chúng dễ bị tấn công khởi động lạnh.

Một trong những giải pháp mới hơn là các ổ đĩa tự mã hóa yêu cầu khởi động vào phần sụn riêng để truy cập.

4
Paul Horbal

Trong tất cả câu trả lời này, tôi đang xem xét vấn đề khôi phục mật khẩu (hoặc mật khẩu tương đương) từ hàm băm thuần túy, được lưu trữ trong máy chủ mà kẻ tấn công có thể có quyền truy cập đọc.

Băm NTLM yếu, nhưng không yếu như băm LM cũ.

Hàm băm LM cũ hơn bao gồm một số điểm yếu về vốn:

  • Không phân biệt chữ hoa chữ thường.
  • Giới hạn 14 ký tự.
  • Chia mật khẩu thành hai nửa ký tự được băm riêng.

Điểm yếu cuối cùng này cho phép bẻ khóa rất hiệu quả (bất kể sự cẩn thận trong việc chọn mật khẩu); xem câu trả lời này để biết một số chi tiết.

NTLM ít cũ hơn chỉ là MD4 được tính qua mật khẩu. Lần này, mật khẩu phân biệt chữ hoa chữ thường và có thể khá dài. Có một số tranh chấp về độ dài mật khẩu tối đa thực sự mà rõ ràng có thể lên tới 127 ký tự hoặc hơn. Vì MD4 được tính toán qua mã hóa mật khẩu UTF-16, toàn bộ phạm vi nicode về mặt lý thuyết có thể được sử dụng, nhưng vì người dùng cần nhập mật khẩu thường xuyên (và không có phản hồi trực quan), sử dụng các ký tự bên ngoài bộ có thể in ASCII đang tìm kiếm sự cố.

Điểm yếu trong hàm băm NTLM là nó không được đánh dấu và MD4 là nhanh (MD4 cũng bị phá vỡ bằng mật mã theo nhiều cách, nhưng không phải là khả năng chống tiền mã hóa thô như được sử dụng để băm mật khẩu; rằng, MD4 vẫn mạnh mẽ như xưa). MD4 thực sự nhanh hơn MD5. Một GPU gần đây sẽ tính toán một số hàng tỷ trong số các trường hợp MD4 mỗi giây. Điều này giúp kẻ tấn công dễ dàng khám phá các nhóm mật khẩu tiềm năng khổng lồ (được gọi là tấn công từ điển ). Bảo vệ duy nhất là chọn mật khẩu của bạn từ một bộ thậm chí còn lớn hơn.

Chúng ta hãy ném một số phép toán vào nó: vì NTLM không được bảo vệ, một nhóm kẻ tấn công chuyên dụng có thể thấy đáng để xây dựng một bảng Rainbow . Có nhiều cách tối ưu hóa khác nhau, nhưng, như một quy luật, mọi thứ sẽ diễn ra như sau:

  • Có một tham số bảo mật, được gọi là t; đó là chiều dài trung bình của một chuỗi trong bảng Rainbow.
  • Nếu tập hợp mật khẩu được bao phủ bởi bảng có kích thước [~ # ~] n [~ # ~], thì yêu cầu lưu trữ about 10 * N/t byte (10 byte cho mỗi đầu chuỗi được sắp xếp là ước tính hợp lý).
  • Xây dựng bảng đòi hỏi một chi phí khoảng 1.7 * N yêu cầu hàm băm.
  • Tấn công một mật khẩu với bảng đòi hỏi tính toán về t2 lần hàm băm và thực hiện t tra cứu trong bảng.

Nếu bảng được chia trên một trăm đĩa cứng cơ học, thì có thể thực hiện khoảng 10000 lần tra cứu mỗi giây. Nếu kẻ tấn công thực sự có động lực, anh ta có thể muốn dành khoảng một giờ cho mỗi mật khẩu, có nghĩa là tối đa t trong 3600000 cho việc tra cứu (giả sử 222); chi phí CPU tương ứng giảm xuống còn khoảng 232 băm mỗi giây, điều này khả thi với một vài GPU gần đây. Hàng trăm đĩa cho phép lưu trữ 300 TB (Tôi đang nói về đĩa 3 TB, ngày nay không có sẵn), mang lại khả năng = [~ # ~] n [~ # ~] đến khoảng 267. Điều đó khá lớn, nhưng khả thi về mặt công nghệ. Nhóm kẻ tấn công của chúng tôi có thể mua một trăm GPU (và a lớn đơn vị điều hòa không khí) và được thực hiện với việc tính toán bảng đó trong vòng vài tháng.

Vì vậy, để đánh bại các đối thủ có động lực của chúng tôi, chúng tôi cần chọn mật khẩu ngẫu nhiên từ một tập lớn hơn [~ # ~] n [~ # ~]. Nếu bộ mật khẩu có thể có của chúng tôi có kích thước lớn hơn 277 và mật khẩu của chúng tôi được chọn ngẫu nhiên và thống nhất trong tập hợp đó (tức là entropy mật khẩu là 77 bit trở lên), sau đó kẻ tấn công chỉ có 1/1000 cơ hội về việc bẻ khóa một mật khẩu nhất định với bảng của mình. Điều này nên là đủ để can ngăn anh ta.

Làm thế nào để chúng ta có được 77 bit của entropy? Nếu chúng ta giới hạn bản thân trong các chữ cái (chữ hoa và chữ thường) và chữ số, để mật khẩu có thể được gõ trên bàn phím tùy ý, thì chúng ta có thể có ít hơn 6 bit entropy cho mỗi ký tự. Do đó, 13 ký tự là đủ . Nó không sưng lên à? Chỉ có 13! Không cần phải đi đến mật khẩu lớn. Nhưng hãy nhớ loại nhỏ: đó là 13 chữ cái hoặc chữ số hoàn toàn ngẫu nhiên. Không có câu hỏi về việc để con người select những ký tự này, hoặc thậm chí tạo ra một tá mật khẩu gồm 13 ký tự và cho phép anh ta chọn mật khẩu mình thích nhất. Bạn lấy trình tạo, bạn tạo một mật khẩu và bạn học nó. Nỗ lực tinh thần là cái giá của việc sử dụng một cơ chế băm mật khẩu nhanh không được mã hóa như NTLM.

(Tất nhiên, nhóm tấn công được mô tả ở trên là thực tế. Bạn có thể muốn tăng độ phức tạp một chút, để mật khẩu của bạn cũng sẽ mạnh mẽ đối với những kẻ tấn công vào ngày mai; vì vậy hãy làm cho nó 14 hoặc 15 ký tự để an toàn hơn.)

18
Thomas Pornin

Nói chung, trên hầu hết các hệ thống, mật khẩu dài hơn luôn tốt hơn.

Tất nhiên có các bảng Rainbow cho NTLM (ví dụ: http://www.freerainbowtables.com/en/tables2/ )

Từ quan điểm cưỡng bức thô bạo, bạn nên hạn chế số lần đăng nhập thất bại trước khi bạn bị khóa. Điều này có thể được thiết lập bằng chính sách địa phương. 3 lần thất bại, sau đó bạn chặn chúng.

An ninh vật lý vấp ngã tất cả. Chặn BIOS khởi động đĩa cd hoặc usb và khóa vào hộp. Tất nhiên, tôi nhắc lại nhận xét ở trên, sử dụng mã hóa toàn bộ đĩa, thậm chí có thể là đa yếu tố. Bạn không thể gắn ổ đĩa được mã hóa trong Linux một cách kỳ diệu, bạn cần biết mật khẩu và/hoặc khóa.

Khởi động lạnh và người giúp việc độc ác đòi hỏi ai đó phải thực sự đầu tư thời gian vào việc phá vỡ máy của bạn. Trên máy tính cục bộ của bạn, nhiều khả năng bạn sẽ bị lừa tải xuống phần mềm độc hại hoặc bạn có phần mềm chưa được vá và họ sẽ chỉ cần root (ahem, quản trị viên) và không quan tâm đến việc phá mật khẩu của bạn.

Nếu bạn có công cụ bí mật thực sự, hãy thực hiện mã hóa toàn bộ đĩa và đặt những thứ quan trọng đó là nơi chứa mã hóa cấp hai.

Tôi đã từng nghe một anh chàng máy tính duy nhất nói rằng máy tính an toàn duy nhất là máy tính bị chặt bằng rìu và sau đó bị đốt cháy. :-)

5
Eric G