[Tuts] Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz

snow1891

Member
Jan 11, 2008
240
0
16
Trong bài viết này, chúng ta sẽ tìm hiểu nơi lưu trữ mật khẩu người dùng trong Windows, và cách trích xuất dữ liệu để Hack Password Windows từ bộ nhớ RAM. Ngoài ra bạn sẽ hiểu thêm cách hack mật khẩu người dùng và tìm hiểu xem tấn công Pass the hash là gì?

Hack Password Windows 10


Không phải ai cũng sử dụng mật khẩu trên Windows – đặc biệt hiếm khi người dùng đặt mật khẩu trên máy tính ở nhà. Nhưng trong công ty hoặc khi sử dụng Windows làm máy chủ, đặt mật khẩu là điều bắt buộc. Một thuộc tính thú vị khác của mật khẩu Windows là nếu người dùng có tài khoản Microsoft trực tuyến, chuỗi băm mật khẩu vẫn được lưu trữ trên máy tính cục bộ và mật khẩu được giải mã có thể được sử dụng để đăng nhập cho cả máy tính cục bộ và các dịch vụ trực tuyến của Microsoft.

Windows lưu trữ mật khẩu đăng nhập của người dùng ở đâu?


Mật khẩu người dùng Windows được lưu trữ trong Windows registry có tên là SYSTEM và SAM trong các tệp:

  • C:/Windows/System32/config/SAM
  • C:/Windows/System32/config/SYSTEM

Thay vì lưu trữ mật khẩu văn bản thuần túy, Windows lưu trữ mật khẩu theo mã băm. Những hàm băm này có thể bị brute-forced một cách dễ dàng. Nhưng ngay cả khi không bị bẻ khóa, hàm băm mật khẩu Windows vẫn có thể được sử dụng để thu thập dữ liệu và thực hiện các cuộc tấn công.

Cách lấy mã băm mật khẩu Windows

Dump mã băm mật khẩu trên máy tính đang chạy


Trên hệ thống đang chạy, bạn sẽ khá khó khăn trong việc truy cập các tệp C:/Windows/System32/config/SAMC:/Windows/System32/config/SYSTEM, mặc dù điều này là có thể. Để lưu bản sao của những tệp này, bạn có thể sử dụng tiện ích reg:

reg save HKLM\SYSTEM SystemBkup.hiv

reg save HKLM\SAM SamBkup.hiv

Trong một số hướng dẫn, thay vì SYSTEM, SECURITY đã được lưu – đây là một sai lầm, bạn không thể khôi phục hàm băm với SECURITYSAM, chúng ta chỉ cần SYSTEMSAM!

Mật khẩu băm cũng được chứa trong RAM, cụ thể là trong Local Security Authority Process (lsass.exe). Quá trình này luôn được khởi chạy trong Windows và bạn có thể kết xuất nó (một bản sao của quá trình trong RAM được lưu vào đĩa dưới dạng tệp). Bạn có thể sử dụng các tiện ích khác nhau để kết xuất, bao gồm hai tiện ích chính thức bên dưới:

Để mở Task Manager, hãy nhấn Win + r và nhập taskmgr, sau đó nhấn ENTER. Hoặc, nhấp chuột phải vào taskbar và chọn “Task Manager”.

Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz 28


Trong Task Manager, trong phần “Windows Processes”, nhấp chuột phải vào “Local Security Authority Process“và chọn “Create Dump File”.

Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz 29


Tệp sẽ được lưu theo đường dẫn C:\Users\USERNAME\AppData\Local\Temp\lsass.DMP. Thay chỗ USERNAME bằng tên người dùng của bạn.

Dump mã băm mật khẩu trên máy tính đã tắt


Trên máy tính đã tắt, để lấy lại mật khẩu của người dùng sau này, bạn chỉ cần sao chép các tệp:

  • C:/Windows/System32/config/SAM
  • C:/Windows/System32/config/SYSTEM

Các tệp tương tự có thể được tìm thấy trong bản sao lưu Windows hoặc trong bản sao Shadow của đĩa hoặc bạn có thể sao chép nó bằng cách khởi động từ USB Live.

Sự khác biệt giữa hàm băm NTLM và NTLMv1/v2 và Net-NTLMv1/v2


Trên thực tế, NTLM và NTLMv1/v2 là những thứ khá khác nhau. Hàm băm NTLM được lưu trữ và sử dụng cục bộ và các hàm băm NTLMv1/NTLMv2 được sử dụng để xác thực mạng và được lấy từ hàm băm NTLM. Sử dụng bất kỳ hàm băm nào trên đây, bạn cũng có thể giải mã mật khẩu người dùng Windows, nhưng đây là các thuật toán mã hóa/bẻ khóa khác nhau.

Đối với Pass-the-hash, mình chỉ sử dụng hàm băm NTLM vì các hàm băm NTLMv1 / NTLMv2 không phù hợp.

Có một câu hỏi nữa là băm Net-NTLMv1 / v2 là gì. Hàm băm Net-NTLMv1/v2 là tên viết tắt của hàm băm NTLMv1/v2, tức là NTLMv1/v2 và Net-NTLMv1/v2 giống nhau. Còn NTLM thì khác.

Trong bài viết này, mình sẽ giải nén, bẻ khóa và khai thác mà không cần brute-force hàm băm NTLM.

Mimikatz là gì?


Mimikatz nổi tiếng với khả năng trích xuất mật khẩu ở dạng văn bản thuần túy (plain text), mã băm, mã PIN và kerberos từ RAM. Mimikatz cũng có thể thực hiện các cuộc tấn công pass-the-hash, pass-the-ticket hoặc xây dựng Golden tickets.

Đây là những cách triển khai mimikatz trong Meterpreter & Metasploit, phản chiếu DLL trong PowerShell. Mimikatz có thể chạy trong Wine trên Linux, nhưng các chức năng liên quan đến trích xuất dữ liệu trực tiếp từ Windows sẽ không hoạt động; các chức năng để giải nén hàm băm từ kết xuất hoặc giải mã từ tệp đăng ký (registry files) vẫn sẽ hoạt động trên Linux.

Cách cài đặt mimikatz trên Windows


Mimikatz là một tiện ích dòng lệnh di động. Tức là, bạn không cần cài đặt nó.

1. Truy cập trang chủ của mimikatz, tải xuống tệp mimikatz_trunk.7z hoặc mimikatz_trunk.zip. Và giải nén nó.

2. Mở PowerShell (Win + x → Windows PowerShell (administrator)) hoặc command line (Win + r → cmd).

3. Tại dấu nhắc lệnh, sử dụng lệnh cd để điều hướng đến thư mục có tệp mimikatz.exe. Ví dụ: tệp lưu trữ được giải nén vào thư mục C:\Users\MiAl\Downloads, vậy thì tệp chúng ta cần tìm sẽ nằm trong thư mục C:\Users\MiAl\Downloads\mimikatz_trunk\x64\:

cd C:\Users\MiAl\Downloads\mimikatz_trunk\x64\

4. Chạy mimikatz:

.\mimikatz.exe

Cách giải nén hàm băm mật khẩu người dùng NTLM từ các tệp registry


Các lệnh sau phải được thực hiện trong bảng điều khiển mimikatz.

Lệnh log cho phép ghi tất cả đầu ra vào một FILE:

log FILE

Ví dụ: để ghi tất cả đầu ra vào tệp hash.txt:

log hash.txt

Mình đã sao chép các tệp SYSTEMSAM từ máy tính đã tắt, bây giờ để giải nén hàm băm, mình cần chạy một lệnh có dạng:

lsadump::sam /system:C:\...\...\SYSTEM /sam:C:\...\...\SAM

Một ví dụ về lệnh của mình:

lsadump::sam /system:C:\Share-Server\files\SYSTEM /sam:C:\Share-Server\files\SAM

Kết quả:

Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz 30
Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz 31


Kết quả rất nhiều dữ liệu. Nhưng thứ chúng ta cần quan tâm là các dòng tuần tự có dạng:

  • User: USERNAME
  • Hash NTLM: HASH

Trong ví dụ trên, thì các dòng này có kết quả là:

  • User: ShareOverlord
  • Hash NTLM: 7ce21f17c0aee7fb9ceba532d0546ad6
  • User: Alexey
  • Hash NTLM: ca76a176340f0291e1cc8ea7277fc571

Ngoài ra còn có các dòng chứa tên người dùng:

  • User: MiAl
  • User: Администратор

Nhưng sau không có chuỗi nào với hàm băm NTLM, bởi vì những người dùng này không có mật khẩu trong hệ thống.

Nếu bạn muốn trích xuất dữ liệu từ các tệp registry của hệ điều hành hiện tại, hãy thoát mimikatz, bằng cách nhấn Ctrl + C.

Bây giờ chúng ta sẽ kết xuất tổ hợp registry SYSTEMSAM của hệ thống hiện tại:

reg save HKLM\SYSTEM SystemBkup.hiv

reg save HKLM\SAM SamBkup.hiv

Chạy lại mimikatz:

.\mimikatz.exe

Chạy log:

log hash-local.txt

Và mình sẽ thực hiện lệnh chỉ ra các tệp mà các tổ hợp registry được lưu vào đó, đó là SystemBkup.hivSamBkup.hiv:

lsadump::sam /system:SystemBkup.hiv /sam:SamBkup.hiv

Kết quả:

Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz 32


Chỉ một người dùng có hàm băm được tìm thấy ở đây:

User: Администратор

Hash NTLM: 5187b179ba87f3ad85fea3ed718e961f

Trên thực tế, để trích xuất các hàm băm NTLM từ hệ thống cục bộ, không cần thiết phải kết xuất tổ chức registry. Một tùy chọn khác là tăng các đặc quyền của chính chương trình mimikatz và trích xuất hàm băm trực tiếp từ hệ thống. Để thực hiện việc này, hãy chạy các lệnh:

privilege::debug
token::elevate
log hash-local2.txt
lsadump::sam

Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz 33

Cách giải nén hàm băm NTLM từ tệp lsass.DMP


Về mặt logic trong kết xuất của Local Security Authority Process chỉ nên là hàm băm của người dùng đã đăng nhập bằng mật khẩu.

Đầu tiên, chỉ định đường dẫn đến tệp kết xuất bằng lệnh:

sekurlsa::minidump C:\path\to\lsass.DMP

Ví dụ:

sekurlsa::minidump C:\Share-Server\files\lsass.DMP

Sau đó chạy lệnh:

sekurlsa::logonPasswords

Cách Hack Password Windows bằng brute-force NTLM

Để thực hiện, mình sẽ sử dụng hàm băm sau:

  • User : Alexey
  • Hash NTLM: ca76a176340f0291e1cc8ea7277fc571

Hãy xem phần trợ giúp của Hashcat để tìm ra số chế độ băm NTLM:

1000 | NTLM | Operating Systems

Số băm NTLM là 1000 (chế độ băm).

Để khởi chạy một cuộc tấn công để bẻ khóa NTLM trong Hashcat, bạn cần chạy một lệnh có dạng:

hashcat -m 1000 -a 3 'HASH'MASK

Ví dụ:

hashcat --force --hwmon-temp-abort=100 -m 1000 -D 1,2 -a 3 -i --increment-min 1 --increment-max 10 -1 ?l?d ca76a176340f0291e1cc8ea7277fc571 ?1?1?1?1?1?1?1?1?1

Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz 34


Giải thích lệnh:

  • hashcat là tên của tệp thực thi. Trên Windows, nó có thể hashcat64.exe.
  • –force có nghĩa là bỏ qua các cảnh báo
  • –hwmon-temp-abort=100 có nghĩa là thiết lập nhiệt độ tối đa, sau đó quá trình brute-force sẽ bị gián đoạn, khi nhiệt độ máy chạm mức 100 độ C
  • -m 1000 nghĩa là kiểu băm NTLM
  • -D 1,2 có nghĩa là sử dụng cả cpu và gpu cho brute-force
  • -a 3 nghĩa là mask attack
  • -i có nghĩa là tăng dần số lượng ký tự trong mật khẩu đã tạo
  • –increment-min 1 có nghĩa là bắt đầu với chiều dài mask bằng một
  • –increment-max 10 nghĩa là kết thúc tìm kiếm với độ dài mask là mười
  • -1 ?l?d có nghĩa là bộ ký tự tùy chỉnh số 1, nó bao gồm các chữ cái Latinh nhỏ (?l) và số (?d)
  • ca76a176340f0291e1cc8ea7277fc571 là mã băm để hack
  • ?1?1?1?1?1?1?1?1?1 là một mask từ một bộ ký tự tùy chỉnh

Hãy giải mã thêm một hàm băm nữa:

User : Администратор

Hash NTLM: 5187b179ba87f3ad85fea3ed718e961f

Bạn cũng dùng lệnh dưới đây:

hashcat --force --hwmon-temp-abort=100 -m 1000 -D 1,2 -a 3 -i --increment-min 1 --increment-max 10 -1 ?l?u?d 5187b179ba87f3ad85fea3ed718e961f ?1?1?1?1?1?1?1?1?1

Hack Password Windows bằng cách xuất dữ liệu từ RAM với Mimikatz 35


Vậy là xong rồi đó.

Sưu tầm và tổng hợp
www.hanoiyeu.com