Kỹ thuật Pass The Hash
Trong bài viết này, ta sẽ tìm hiểu về một kỹ thuật đã có từ lâu và được hacker sử dụng thường xuyên nhằm khai thác nhiều máy tình khác nhau trong môi trường domain. Kỹ thuật này hay được gọi với tên là Pass the Hash (PTH). Windows lưu trữ mật khẩu của 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 (file, máy in,...) mà không cần nhập lại mật khẩu.- Trích xuất NTLM hash trên máy tính đã chiếm được quyền.
- Sử dụng NTLM hash đã trích xuất để xác thực tới máy tính khác

1. Trích xuất NTLM hash
NTLM hash được lưu trữ ở rất nhiều nơi trong Windows, dưới đây là một số phương pháp phổ biến để trích xuất NTLM hash trên Windows từ các vị trí khác nhau.1.1. Security Account Manager (SAM)
Cơ sở dữ liệu SAM là một tệp registry lưu trữ các hash NTLM của các tài khoản nội bộ trên máy tính (local account/Microsoft account) và không bao gồm các tài khoản trong domain. SAM được lưu dưới dạng mã hóa tại đường dẫn %SystemRoot%/system32/config/SAM và được gán vào khóa registry HKLM/SAM. Các thông tin để giải mã SAM đều có thể tìm thấy trên máy tính. Do đó, khi chiếm được máy tính và có quyền administrator, kẻ tấn công có thể trích xuất tất cả các hash NTLM được lưu trữ trong SAM.
1.2. LSASS Memory
Tiến trình Local Security Authority Subsystem Service (LSASS) cũng có thể chứa NTLM hash. 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. Các tài khoản lưu trữ trên bộ nhớ của Lsass bao gồm cả tài khoản nội bộ, tài khoản microsoft và tài khoản domain. 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.
1.3. DCSync và NTDS
Khi chiếm được của 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, kẻ tấn công có thể lợi dụng giao thức Directory Replication Service Remote (MS-DRSR) để 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.

2. Sử dụng NTLM hash
Sau khi có được ntlm hash, kẻ tấn công có nhiều lựa chọn để áp dụng các hash thu thập được để truy cập cũng như thực thi code từ xa dựa trên các tài khoản và hash đó qua nhiều giao thức khác nhau. Có một khóa registry tại HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy, mặc định có giá trị = 0 sẽ kiểm soát UAC với những tài khoản thuộc nhóm administrator khi xác thực qua mạng. Kẻ tấn công có thể thiết lập giá trị LocalAccountTokenFilterPolicy = 1 trước khi thực thi Pth để vô hiệu hóa UAC và có quyền khi xác thực qua mạng. Dưới đây là một số cách để thực thi code thông qua sử dụng NTLM hash phổ biến:2.1. PtH over Kerberos
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.
2.2. PtH over WMI
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 phải có quyền admin. Tiến trình con mới sẽ được tạo ra bởi tiến trình WmiPrvSE.exe.
2.3 PtH over SMB
Khi thực thi qua SMB, kẻ tấn công 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,...
3. Các dấu hiệu để phát hiện
Dựa vào 2 bước khi thực thi, có thể kiểm tra các log có thể được sinh ra trong các giai đoạn trích xuất hash hoặc sử dụng dụng hash để làm dấu hiệu phát hiện tấn công bằng PtH.3.1. Dấu hiệu khi trích xuất NTLM hash từ tiến trình Lsass.exe
Có thể sử dụng sysmon để theo dõi sự truy cập tới tiến trình lsass.exe của các tiến trình khác (Sysmon event id 10) từ đó xác định hành vi nào là nguy hiểm dựa trên tiến trình thực thi, tần suất thực thi,...

3.2. Dấu hiệu khi trích xuất NTLM hash từ SAM
Cơ sở dữ liệu SAM có thể truy xuất được từ registry với quyền administrator, hành vi này sẽ được ghi lại bởi event id 4656 khi thiết lập cấu hình audit cho khóa registry HKLM\SAM.

3.3. Access to ntds.dit
Khi kẻ tấn công sử dụng ntdsutil để truy cập dữ liệu tại tập tin ntds.dit, sự kiện ESENT sẽ được lưu lại hành vi này. Một số event id liên quan đến hành vi này như ESENT 325, 326, 327,...

3.4. DCSync
Đối với hành vi tấn công bằng kỹ thuật DCSync, các sự kiện 4662 sẽ được ghi lại và các quyền truy cập được cấp sẽ bao gồm:- 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)

3.5. Pass the hash log
Khi sử dụng kerberos ticket để tấn công pth, kẻ tấn công cần tạo ra một phiên đăng nhập giả và chèn ntlm hash vào phiên đó. Việc này có thể phát hiện bằng event 4624 với kiểu đăng nhập Logon Type = 9 và tiến trình thực hiện Logon Process là seclogo.


Tổng kết về phát hiện Pth
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. Ngoài ra, để việc phát hiện hiệu quả khi các giải pháp phòng thủ đã bị vượt qua thì cần thu thập log (Audit, powershell, sysmon,…) và cảnh bảo cho các công cụ tấn công 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 như các thông tin trên đã đề cập để phát hiện và ngăn chặn kẻ tấn công sớm nhất, tránh việc kẻ tấn công lây lan hay leo thang từ một máy tính cá nhân tới các máy khác trong cùng domain. Một số thông tin tham khảo: By, Hồng Sơn 5018 lượt xem