Path The Hash
Last updated
Last updated
Windows lưu trữ mật khẩu người dùng ở dạng NT hash (NTLM hash). Trong quá trình sử dụng, windows có thiết lập hệ thống SSO, lưu trữ thông tin xác thực và sử dụng chúng trong quá trình người dùng truy cập các tài nguyên được chia sẻ trong mạng mà không cần nhập lại mật khẩu.
Quá trình xác thực này sử dụng NTLMv2 và NTLMv2 sử dụng NTLM hash trong phương thức trao đổi khóa Challenge/Respone. Tính năng này cho phép kẻ tấn công xác thực thông qua NTLM hash mà không cần đến mật khẩu hoặc dùng kỹ thuật MITM để đánh cắp trực tiếp NTLMv2 hash để xác thực. Vì lý do này mã nó mang tên là Pass the hash. Về tổng quan thì có 2 bước chính:
Trích xuất NTML hash trên máy tính đã được chiếm quyền
Sử dụng NTLM hash đã trích xuất để xác thực tới máy tính khác
Phần dưới đây sẽ tìm hiểu một số cách phổ biến để thực hiện các bước này trong quá trình PtH
CSDL này là một tệp registry lưu trữ các NTLM hash của tài khoản cục bộ trên náy tính (local account/Microsoft account) và không bao gồm các tài khoản trong domain.
Đường dẫn: %SystemRoot%/system32/config/SAM (được gán vào registry key HKLM/SAM)
Cần quyền administrator để trích xuất
Công cụ: Mimikatz, Metasploit, Volume Shadow Copy, Impacket, Window Registry (reg save)
Tệp thực thi của LSASS được lưu tại %SystemRoot%\System32\Lsass.exe và thực thi bởi wininit.exe khi hệ thống khởi động. Mỗi khi người dùng đăng nhập vào hệ thống, cấu trúc dữ liệu gồm tên và NTLM hash được tạo ra và lưu trữ trên vùng nhớ của tiến trình Lsass.
Lưu trữ local account/Microsoft account/domain account
Các phiên đang sử dụng trên hệ thống như các tài khoản dịch vụ, phiên RDP, quá trình thực thi bằng tham số RunAs đều được lưu trữ trên tiến trình lsass và được xóa ngay khi người dùng đăng xuất (log off/sign out) khỏi hệ thống.
Khi chiếm được tài khoản admin trên domain controller và muốn trích xuất ntlm hash của các tài khoản khác trong domain, có thể lợi dụng giao thức MS-DRSR(Directory Replication Service Remote Protocol) để mô phỏng lại hành vi của domain và trích xuất các thông tin của tài khoản mục tiêu, trong đó bao gồm cả NTLM hash bằng kỹ thuật DCSync (cần có đặc quyền “Replicating Directory Changes” và “Replicating Directory Changes All” trên Domain Controller.)
Ngoài ra, khi truy cập được vào DC, kẻ tấn công có thể đọc nội dung trên cơ sở dữ liệu của AD nằm tại đường dẫn %Systemroot%\NTDS\Ntds.dit.
Yêu cầu Domain Admin hoặc Local Admin Priviledges trên target Domain Controller
Bonus: DcShadow là kỹ thuật tấn công tạo DC giả vs AD, sử dụng cơ chế replicate để sao chép các thay đổi tự do do kẻ tấn công tạo ra nhằm tăng đặc quyền người dùng, thông tin bảo mật, group policy ... từ DC này lên cơ sở dữ liệu của AD chính thức, không tạo ra dấu vế rõ ràng trên hệ thống log của DC. Yếu cầu đặc quyền Domain Admin hoặc Enterprise Admin.
Công cụ Mimikatz: lsadump::dcshadow
Có một registry key tại HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy mặc định có giá trị là 0 sẽ kiểm soát với các tài khoản thuộc nhóm administrator khi xác thực qua mạng. Attacker có thể thiết lập giá trị này về 1 trước khi thực thi PTH để vô hiệu hóa UAC và có quyền xác thực qua mạng. Dưới đây là một số cách phổ biến để thực thi code thống qua sử dụng NTLM hash:
Kẻ tấn công có thể sử dụng NTLM hash để tạo ra Kerberos ticket và thực thi một tiến trình dưới quyền của user khác.
Giao thức WMI có thể bị lợi dụng để thực thi dựa vào NTLM hash thu thập được. Tài khoản dùng để xác thực từ xa cần có quyền admin. Tiến trình con mới sẽ được tạo ra bởi
Khi thực thi qua SMB, attacker có thể cần tài khoản với quyền admin để có thể tạo và chạy dịch vụ mới trên máy tính mục tiêu. Một số công cụ có thể dùng để tấn công PTH qua SMB như SMBExec, PSExec
Sysmon event id 10 (Process accessed): Nhằm theo dõi sự truy cập tới tiến trình lsass.exe của các tiến trình khách
Sysmon event id 11 (File created): Một số công cụ khi dump bộ nhớ sẽ tạo ra các file lsass.dmp trong thư mục %temp% hoặc %windows%\temp.
Event id 4656 (Microsoft Windows security auditing): Cấu hình audit cho registry key HKLM\SAM cho phép ghi lại hành vi truy xuất SAM từ registry với quyền administrator
Cấu hình audit cho tập tin %Systemroot%\system32\config\SAM để phát hiện tấn công Pth để leo thang lên quyền Admin hoặc System sử dụng VolumeShadowCopy
ESENT 325, 326, 327,… sử dụng ntdsutil để truy cập dữ liệu ntds.dit
Event id 4656 (khi bật audit cho %SystemRoot%\NTDS\Ntds.dit)
Event id 4662 : Lọc các sự kiện cấp các quyền truy cập sau
DS-Replication-Get-Changes (1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)
DS-Replication-Get-Changes-All (1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)
DS-Replication-Get-Changes-In-Filtered-Set (89e95b76-444d-4c62-991a-0facbeda640c)
Chú ý đến trường Account Name, trong tấn công DCSync thì trường này thường là tên người dùng thay vì tên DC
Event id 4624 với Logon Type = 9, Logon Process = seclogo: Phát hiện phiến đăng nhập giả khi sử dụng ntlm hash nhằm tạo kerberos ticket
Sysmon event id 13 (Registry value set) với target là trường ImagePath trong mỗi service nhằm phát hiện các dấu hiện liên quan đến thực thi như việc tạo ra dịch vụ mới khi dùng Pth qua giao thưc SMB
Sysmon event id 1 (Proces Create):
Pass the hash là một kỹ thuật phổ biến có thể giúp kẻ tân công nhắm tới các mục tiêu khác nhau trong môi trường domain. Cần cập nhật bản vá thường xuyên cho hệ điều hành và các ứng dụng để tránh bị khai thác và mất quyền kiểm soát máy tính vào tay hacker.
Để phát hiện hiệu quả cần thu thập log (Audit, powershell, sysmon, ...) và cảnh báo cho các công cụ Pth đã biết (mimikazt, impacket, crackmapexec,...), đồng thời giám sát các sự kiện liên quan đến việc trích xuất hash và theo dõi các hành vi bất thường
Công cụ: