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.

Quá trình xác thực này sử dụng giao thức NTLMv2 để và hash NTLMv2 sử dụng NTLM hash trong phương thức trao đổi khóa Challenge/Response. 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.

Có nhiều các để thực hiện PTH, về tổng quan thì có hai bước chính:

  1. Trích xuất NTLM hash trên máy tính đã chiếm được quyền.
  2. 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 và một số dấu hiệu có thể phát hiện chúng.

Trong bài này, ta sẽ tìm hiểu về một kỹ thuật có từ lâu và rất hữu hiệu cho phép kẻ tấn công khi chiếm quyền admin trên một máy tính cá nhân trong môi trường domain có thể sử dụng để lây ran ra các máy tính khác trong mạng. Kỹ thuật này hay được nhắc đến với tên là Pass the hash (PTH).

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.

Ngoài ra, khi truy cập được domain controller, kẻ tấn công có thể đọc được nội dung trên cơ sở dữ liệu của Active directory. Cơ sở dữ liệu này (mặc định) được lưu tại đường dẫn %SystemRoot%\NTDS\Ntds.dit. Sau khi đọc được nội dung, kẻ tấn công có thể sử dụng các công cụ để trích xuất NTLM hash từ cơ sở dữ liệu này.

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,…

Một số công cụ khi dump bộ nhớ của lsass.exe sẽ tạo ra các file lsass.dmp trong thư mục %temp% hoặc %windows%\temp. Sự kiện này cũng có thể được phát hiện bởi sysmon event id 11.

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.

Có một lỗ hổng cho phép kẻ tấn công truy cập dữ liệu từ SAM thông qua VoulumeShadowCopy. Với lỗ hổng này, kẻ tấn công có thể thực hiện trích xuất NTLM hash từ tài khoản thường sau đó dùng Pth để leo thang lên quyền Admin hoặc System. Sự kiện này có thể phát hiện bằng việc cấu hình audit cho tập tin %Systemroot%\system32\config\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,…

Ngoài ra, khi bật cấu hình audit cho tập tin tại %SystemRoot%\NTDS\Ntds.dit cũng có thể được các hành vi truy cập nó, từ đó xác định các hành vi từ các tiến trình bất thường để cảnh báo.

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)

Sau khi lọc ra những sự kiện trên, có thể kiểm tra trường “Account Name”. So sánh với một hành vi bình thường trên domain thì trong khi tấn công bằng DCSync, trường này sẽ có giá trị là user thông thường thay vì tên của domain controller.

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.

Đối với tấn công Pth bằng các giao thức khác để thực thi lệnh, sự kiện đăng nhập sẽ không có bất thường, do đó cần theo dõi các dấu hiệu 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. Có thể kiểm tra các sự kiện event id 13 của sysmon với target là trường ImagePath trong mỗi service.

Với giao thức wmi, có thể kiếm tra các sự kiện thực thi tiến trình mới của tiến trình cha WmiPrvSE.exe từ sự kiện event id 1 của sysmon.

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:

  1. https://attack.mitre.org/techniques/T1550/002/
  2. https://attack.mitre.org/techniques/T1003/
  3. https://www.sans.org/white-papers/39170/
  4. https://blog.ahasayen.com/pass-the-hash/

By,

Hồng Sơn

1.410 lượt xem