Mật khẩu Windows có thể bị crack như thế nào - P1 http://lehung-system.ucoz.net/news/m_t_kh_u_windows_co_th_b_crack_nh_th_nao_p1/2010-07-29-915
Trong phần hai này chúng tôi sẽ giới thiệu cho các bạn một số
cách crack mật khẩu bằng các công cụ khác nhau, sau đó là các biện pháp
để giúp bạn bảo vệ được mật khẩu của mình trước những kiểu crack như
vậy.
Trong phần đầu của loạt bài này, chúng tôi đã giới
thiệu cho bạn về các hash mật khẩu cũng như các cơ chế mà Windows sử
dụng để tạo và lưu các giá trị đó. Trong phần đó, chúng tôi cũng nêu ra
những điểm yếu của mỗi một phương pháp và các đại lộ có thể bị
những kẻ tấn công lợi dụng để crack các mật khẩu đó. Trong phần thứ hai
và cũng là phần cuối này, chúng tôi sẽ giới thiệu cho các bạn về một số
cách crack mật khẩu bằng các công cụ miễn phí khác nhau, qua đó cung cấp
cho một số mẹo trong việc phòng chống lại các cách thức crack mật khẩu.
Cần phải lưu ý rằng các kỹ thuật được giới thiệu ở
đây chỉ hoàn toàn cho mục đích nghiên cứu, không được sử dụng cho các hệ
thống mà ở đó bạn không có quyền thẩm định.
Thu thập các
hash mật khẩu
Để crack mật khẩu bạn phải thu được các hash được lưu
bên trong hệ điều hành. Các hash này được lưu trong file SAM của hệ
điều hành Windows. File SAM này nằm trên hệ thống tại C:\Windows\System32\config,
tuy nhiên bạn không thể truy cập được nó khi hệ điều hành đang hoạt
động. Các giá trị này cũng được lưu trong registry tại HKEY_LOCAL_MACHINE\SAM,
tuy nhiên vùng registry này cũng không thể truy cập khi hệ điều hành
được khởi chạy.
Có một số tùy chọn khác ở đây phụ thuộc vào mức độ
truy cập mà bạn có đối với máy tính đang tiến hành thẩm định.
Truy cập vật lý
Nếu có thể truy cập vật lý, một trong những phương
pháp hiệu quả nhất là khởi động máy tính bằng một hệ điều hành khác. Nếu
cảm thấy thoải mái trong việc sử dụng Linux, bạn hoàn toàn có thể khởi
động từ một Linux live CD có khả năng đọc các ổ đĩa NTFS, gắn partition
Windows và copy file SAM sang ổ ngoài.
Nếu không quen với cách làm này, bạn có thể sử dụng
Offline NT Password Editor của P. Nordahl, công cụ có thể được download tại đây.
Đây là một phân phối Linux có thể khởi động, phân phối này được thiết
kế để trợ giúp người dùng quên mật khẩu bằng cách cho phép họ thiết lập
lại chúng. Phần mềm sẽ nhận dữ liệu đầu vào từ người dùng, tạo một hash
hợp lệ và thay thế hash cũ trong file SAM bằng hash mới. Điều này khá
hữu dụng vì chúng ta cũng có thể sử dụng phân phối này để đọc file SAM
và lấy dữ liệu hash.
Để thực hiện điều đó, bạn hãy khởi động từ image CD
và chọn partition hệ thống của mình, vị trí file SAM và cấu trúc
registry, chọn tùy chọn thiết lập lại mật khẩu [1],
khởi chạy registry editor [9] đi kèm, duyệt đến SAM\Domain\Account\Users,
duyệt đến thư mục của người dùng mà bạn muốn truy cập, sử dụng lệnh cat
để xem hash có chứa trong các file. Đầu ra sẽ có định dạng hex, tuy
nhiên hoàn toàn có thể chuyển đổi định dạng này.
Hình 1: Đầu ra dạng hex của SAM hash
Trước khi sử dụng Offline NT Password Editor để thiết
lập lại mật khẩu, cần bảo đảm rằng bạn hiện không sử dụng Encrypted
File System (EFS) trên bất cứ phiên bản nào phát hành sau Windows
XP/2003. Nếu bạn thực hiện điều đó, hệ điều hành mất các khóa EFS của nó
và gây ra nhiều vấn đề khác chứ không chỉ một việc quên mật khẩu.
Truy cập qua giao diện
phần mềm
Nếu đang thực hiện các hành động thẩm định mật khẩu
mà không có sự truy cập vật lý đến thiết bị đang được nói đến, tuy nhiên
vẫn có thể truy cập qua giao diện phần mềm thông qua cơ chế remote
desktop hoặc VNC, khi đó bạn có thể thu được các hash mật khẩu thông qua
sử dụng tiện ích fgdump của Fizzgig, có thể download
tiện ích tại
đây.
Khi đã download được fgdump để sử dụng, bạn có thể
chạy nó một cách đơn giản.
Hình 2: Cấu hình tiện ích Fgdump chạy
Khi hoàn tất, một file sẽ được tạo trong cùng thư mục
mà tiện ích khởi chạy, file này gồm có danh sách tất cả các tài khoản
người dùng, hash LM của họ và cả các hash NTLMv2.
Hình 3: Đầu ra của các hash mật khẩu thu được bởi
Fgdump
Truy cập mạng
Cuối cùng nếu không có bất cứ sự truy cập tương tác
nào với máy tính có các hash bạn muốn, giải pháp tốt nhất là cố gắng đánh
hơi (sniff) các hash khi chúng được truyền tải trên mạng trong
suốt quá trình thẩm định. Tất nhiên điều này sẽ chỉ hoạt động nếu máy
khách đang chứng thực với bộ điều khiển miền hoặc đang truy cập tài
nguyên trên một máy khách khác.
Nếu nằm trong cùng đoạn mạng với máy khách mục tiêu,
bạn có thể sử dụng chương trình Cain & Abel để chặn
các hash mật khẩu khi chúng được phát đi giữa các thiết bị. Cain &
Abel là một tiện ích miễn phí có thể download tại đây. Sử dụng Cain &
Abel, bạn có thể khởi tạo một quá trình có tên gọi "tấn công Man-in-the-Middle – Giả mạo ARP Cache”, quá trình này được ví như một người ở giữa lợi dụng
giao thức ARP để định tuyến lưu lượng giữa hai host thông qua máy tính
của bạn. Giả mạo ARP cache là biện pháp tích cực, ngoài ra bạn có thể sử
dụng bộ đánh hơi mạng đi kèm với Cain & Abel; nó có thể
cho phép bạn chặn các hash mật khẩu NTLM khi đang truyền thông giữa các
host giả mạo. Crack mật khẩu bằng Cain & Abel
Lúc này chúng ta đã thực sự có các hash mật khẩu,
nhiệm vụ tiếp theo cần thực hiện lúc này là crack chúng. Nếu đã download
và cài đặt Cain & Abel thì bạn đã đi trước được một bước vì chúng
ta sẽ sử dụng nó để crack các mật khẩu LM ví dụ.
Nếu chưa cài đặt Cain & Abel, bạn có thể download
nó tại đây.
Quá trình cài đặt diễn ra rất đơn giản. Bạn cũng sẽ gặp nhắc nhở cài đặt
bộ capture dữ liệu WinPCap được sử dụng cho các tính năng đánh hơi
của Cain & Abel. Khi đã cài đặt xong chương trình, bạn có thể khởi
chạy nó và kích vào tab Cracker gần phía trên của màn
hình. Sau khi thực hiện điều này, kích vào tiêu đề LM & NTLM
Hashes trong panel bên trái, kích phải vào vùng trống ở phần
trung tâm của màn hình và chọn Add to List.
Cain sẽ không chấp nhận một copy và paste đơn giản
đối với hash mật khẩu, vì vậy bạn sẽ phải đặt hash vào một file văn bản
được định dạng theo một cách đặc biệt. Nếu trích rút các hash của mình
bằng fgdump thì bạn sẽ có file văn bản cần thiết của mình, file văn bản
này có chứa các hash trên định dạng từng dòng.
Hình 4: Định dạng được chấp nhận của Passwords
Hash
Nếu đã trích rút các Passwords Hash của mình một cách
thủ công, bạn cần tạo một file có một entry cho mỗi tài khoản người
dùng. Mỗi dòng có chứa username, phần nhận dạng quan hệ (RID) của SID
người dùng và các hash. Định dạng của các thành phần này sẽ là:
Username:RID:LMHash:NTLMHash:::
Duyệt đến file này, chọn nó và kích next
để import các hash vào Cain & Abel. Khi thực hiện xong,
bạn có thể kích phải vào tài khoản mà ở đó bạn muốn crack mật khẩu của
nó, chọn tùy chọn Brute Force Attack, chọn LM
hashes. Phương pháp tấn công brute force là phương
pháp cố gắng kết hợp các mật khẩu với giá trị hash cho tới khi tìm thấy
sự thỏa khớp. Trên màn hình sau đó, bạn có thể chọn các ký tự mà mình
muốn sử dụng cho tấn công brute force, chiều dài mật khẩu cực
tiểu và cực đại. Lưu ý rằng tập ký tự sẽ tự động được cấu hình để chỉ sử
dụng các ký tự in hoa và số với chiều dài tối đa là 7, do các đặc tính
của LM hash.
Trong kịch bản ví dụ, với mật khẩu PassWord123,
chúng ta sẽ thấy ngay lập tức các kết quả hoàn chỉnh khi chương trình
trả về "Plaintext of 664345140A852F61 is D123”. Kết quả cũng
cho thấy chúng ta đã crack nửa thứ hai của hash mật khẩu. Trên một máy
tính hiện đại, việc tiến hành thử để tìm ra sự kết hợp mật khẩu duy nhất
có thể phải mất đến khoảng 2,5 đến 3 giờ để đảm bảo cho một thành công
thực sự.
Hình 5: Cain crack thành công LM Password Hash
Crack mật khẩu bằng
John the Ripper
Cain & Abel thực hiện khá tốt công việc crack các
LM password nhưng nó khá chậm và khi thực hiện crack NTLMv2 hash, quá
trình của nó thậm chí còn chậm hơn rất nhiều. Nếu chưa có nhiều kinh
nghiệm hoặc cảm thấy không thích dòng lệnh cho các hành động crack mật
khẩu, John the Ripper chính là một trong những cỗ máy
crack khá được ưa thích và có tốc độ nhanh nhất mà chúng tôi từng thấy.
Có thể download John the Ripper từ đây. Khi đã trích rút
các nội dung của file, bạn sẽ tìm thấy file thực thi john-386.exe trong
thư mục con /run. John có thể chạy ở một vài chế độ khác, tuy nhiên để
chạy nó trong chế độ mặc định, tất cả những gì bạn cần thực hiện là cung
cấp file có chứa password hash như một đối số (argument) khi chạy
john-386.exe từ nhắc lệnh.
Hình 6: John the Ripper đang cố gắng crack mật
khẩu
Khi hoàn tất, John the Ripper sẽ hiển thị các mật
khẩu đã được crack và lưu các kết quả vào file john.pot của nó. Trong
hầu hết các trường hợp, chế độ crack mặc định là khá ổn, tuy nhiên John
the Ripper cũng có các chế độ crack khác như:
- Single Crack Mode – Sử dụng các biến tên tài khoản
- Wordlist Mode – Dựa vào một từ điển để đoán mật khẩu
- Incremental Mode – Dựa vào tấn công kiểu brute-force
- External Mode – Dựa vào một ứng dụng khác (được người dùng cung
cấp) để đoán mật khẩu.
John rất hiệu quả trong tất cả các chế độ crack và là
một chương trình mà tôi lựa chọn cho việc crack mật khẩu.
Crack mật khẩu bằng các
bảng cầu vồng (Rainbow Table)
Khi bạn nghi ngờ sự phức tạp và tiêu tốn nhiều thời
gian cho việc crack một mật khẩu NTLMv2, chỉ có quyết định hợp lý nhất
là sử dụng các bảng cầu vồng. Bảng cầu vồng là một bảng tra cứu có chứa
các password hash cho mỗi sự kết hợp mật khẩu có thể được đưa ra để
thuật toán mã hóa sử dụng. Như những gì bạn có thể hình dung, các bảng
cầu vồng có thể tiêu tốn khá nhiều không gian lưu trữ. Trước đây, các
bảng này vượt quá khả năng xử lý của bộ vi xử lý và không gian lưu trữ
chuyên sâu cho việc tạo và lưu, tuy nhiên với sự phát triển của máy tính
hiện đại, những tester cũng như các hacker mã độc đều có thể dễ dàng sử
dụng các ổ cứng ngoài để lưu trữ một loạt các bảng cầu vồng.
Tìm một nơi tạo hoặc download tập hợp các bảng cầu
vồng chính là Google search, tuy nhiên có nhiều phương pháp tốt hơn cho
một cracker mật khẩu. Một phương pháp như vậy là sử dụng dịch vụ web có
chứa tập các bảng cầu vồng của chính nó. Dịch vụ web như vậy bạn có thể
được tìm thấy tại
đây. Website này duy trì rất nhiều tập hợp các bảng cầu vồng mà bạn
có thể đệ trình các password hash cho việc crack, cùng với đó là một
danh sách các mật khẩu đã bị hack gần đây.
Để đệ trình các hash tới plain-text.info, bạn có thể
kích liên kết Add Hashes để chỉ định hash và chế độ mã
hóa. Nếu hash này đã bị crack thì bạn sẽ thấy kết quả hiển thị, còn
không nó sẽ đệ trình hash vào hàng đợi. Có thể kiểm tra trạng thái hàng
đợi bằng cách vào liên kết Search và tìm kiếm hash, khi
đó nó sẽ cho bạn biết vị trí trong hàng đợi của bạn. Các mật khẩu phức
tạp có thể tiêu tốn khá nhiều thời gian thông qua phương pháp này, tuy
nhiên nó còn cho thấy nhanh hơn việc cho phép thực hiện trên phần cứng
của riêng bạn. Việc bảo vệ trước các hành
động crack mật khẩu
Mọi người thường nghĩ rằng mục tiêu của mã hóa là làm
cho văn bản qua mã hóa trở thành một thứ gì đó mà không ai có thể giải
mã được, tuy nhiên đây chỉ là một chút khái niệm. Suy nghĩ đó dựa vào sự
tin tưởng rằng các máy tính có khả năng tạo các số ngẫu nhiên cho các
mục đích mã hóa, tuy nhiên trong tất cả các máy tính trung thực đều
không thực hiện "random” tốt đến như vậy, vì "random” là một logic lập
trình dựa hoàn toàn trên sự tin cậy. Chính vì vậy, mục tiêu thực sự của
mã hóa là làm cho văn bản qua mã hóa trở nên khó crack đến nỗi lượng
thời gian bỏ ra để có thể crack nặng hơn lợi ích thu được trong việc
thực hiện hành động crack đó.
Với tư duy đó, có một vài thứ có thể được thực hiện
trên một hệ điều hành để tránh bị crack mật khẩu.
Sử dụng mật khẩu phức
tạp và liên tục thay đổi
Cách logic nhất để tránh bị crack mật khẩu là làm cho
mật khẩu của bạn trở nên phức tạp "đến nỗi không ngờ”. Nếu mật
khẩu của bạn gồm có các ký tự in thường, in hoa, chữ số, các ký hiệu
đặc biệt và tương đối dài, nó sẽ không thể bị crack với một số lượng
thời gian ngắn. Để làm tăng độ phức tạp thêm nữa, hãy thay đổi mật khẩu
của bạn một cách thường xuyên. Không có biện pháp phòng ngừa nào hơn
việc sử dụng một mật khẩu mạnh và thay đổi nó thường xuyên.
Vô hiệu hóa LM Hash
Giờ đây bạn đã biết được những yếu điểm của LM hash.
Một điều tốt chúng ta là không phải sử dụng chúng nữa. Các hệ điều hành
Windows hiện đại có thể được cấu hình để sử dụng NTLMv2 độc
quyền với một vài thay đổi registry.
Bạn có thể vô hiệu hóa kho lưu trữ LM hash bằng cách
duyệt đến HKLM\System\CurrentControlSet\Control\LSA trong registry. Khi
đã ở trong đó, hãy tạo một khóa DWORD có tên NoLMHash, với giá trị bằng
1.
Một bước nữa là vô hiệu hóa thẩm định LM trong toàn
mạng. Lần nữa, bạn duyệt đến HKLM\CurrentControlSet\Control\LSA.
Khi ở trong đó, tìm đến khóa có tên LMCompatibiltyLevel. Giá
trị của nó có thể được thiết lập bằng 3 cho mục đích gửi đi thẩm định NTLMv2,
đây là cách thức tuyệt vời cho các máy khách trong miền. Ngoài ra có
thể thay đổi giá trị của nó thành 5, đây là giá trị được sử dụng để cấu
hình thiết bị nhằm chấp nhận các yêu cầu thẩm định, tuyệt vời cho các
máy chủ.
Chí có một trường hợp mà ở đó các thiết lập này có
thể gây ra vấn đề là trường hợp mà trong đó bạn có các máy tính Windows
NT 4 và phiên bản cấp thấp hơn trong mạng. Chính vì vậy, nếu vẫn có các
hệ thống đó trên mạng, hãy loại bỏ chúng là lời khuyên bảo mật tốt nhất
mà chúng tôi đưa đến bạn.
Sử dụng SYSKEY
SYSKEY là một tính năng Windows có thể được sử dụng
để add 128 bit mã hóa mở rộng vào file SAM. SYSKEY làm việc
bằng cách sử dụng một khóa của người dùng được sử dụng để mã hóa file
SAM. Khi kích hoạt, SYSKEY không thể bị vô hiệu hóa.
Bạn cần lưu ý rằng SYSKEY chỉ bảo vệ bản thân file
SAM, bảo vệ nó trống lại hành động copy. SYSKEY không bảo vệ chống lại
các công cụ trích rút các hash từ bộ nhớ đang chạy, chẳng hạn như Cain
và fgdump.
Kết luận
Crack mật khẩu là một kỹ năng cho những ai muốn cố
gắng đột nhập vào một hệ thống, cũng chính vì điều đó mà mỗi quản trị
viên hệ thống cần phải hiểu các mật khẩu được lưu như thế nào, chúng có
thể bị đánh cắp và bị bẻ khóa ra sao. Khi một kẻ xâm nhập đã chọc thủng
được hệ thống, mục tiêu của chúng sẽ được hoàn thành hơn nửa nếu người
dùng của bạn đang sử dụng các mật khẩu đơn giản. Cần nhớ rằng, những gì
bạn biết là một nửa trận chiến, vì vậy nếu bạn nắm được các thông tin
này và không làm gì với nó thì bạn chỉ có được một nửa chiến thắng. Sử
dụng các kỹ thuật phòng chống được cung cấp trong bài, bạn sẽ ngăn chặn
được việc những kẻ tấn công thỏa hiệp mật khẩu trong hệ thống của mình.
|