Không cần cổng
Giới thiệu
Tư duy đối thủ là phẩm chất bắt buộc phải có đối với những người điều khiển tấn công trong Đội Đỏ. Mọi đánh giá đều mang lại những hạn chế và “chiến tích” riêng. Người vận hành phải phù hợp với những hạn chế của môi trường như: mô hình phân tầng an toàn, giải pháp phát hiện và phản hồi điểm cuối tiên tiến, v.v. Khả năng thích ứng và nắm bắt những “chướng ngại vật” này sẽ giúp các thành viên trong nhóm vận hành một cách tốt nhất và hiệu quả nhất. những cách sáng tạo nhất có thể để đạt được sự kiểm soát đối với các tài sản và môi trường quan trọng.
Trong một đánh giá gần đây, cũng như trong bất kỳ cuộc giao tranh nào khác của Đội Đỏ, nó bắt đầu với giai đoạn do thám. Trong giai đoạn này, chúng tôi thu thập các tài sản hướng tới internet có liên quan đến tổ chức của khách hàng. Sau khi thu thập và phân tích dữ liệu trinh sát, chúng tôi nhận ra rằng bề mặt tấn công khá hẹp, không có phiên bản phần mềm truy cập internet nào có thể khai thác được và kỹ thuật xã hội được dành làm phương sách cuối cùng. Một số nội dung chúng tôi tìm thấy được xác định là cổng GlobalProtect VPN. Sau nhiều lần thử kết nối và xác thực, người ta xác định rằng xác thực đối với cổng GlobalProtect đã được thực thi bằng xác thực đa yếu tố. Vì đây là cách duy nhất để chúng tôi có chỗ đứng trong môi trường nội bộ của tổ chức, nên chúng tôi quyết định điều tra thêm các giao diện GlobalProtect.
Khái niệm cơ bản về GlobalProtect VPN
GlobalProtect VPN của Palo Alto dựa trên các yêu cầu và phản hồi HTTPS cũng như các bộ cấu hình dữ liệu XML. VPN có hai thành phần chính được người dùng cuối tương tác: cổng và cổng . Công việc của cổng thông tin là: trước tiên, hoạt động như một máy chủ web lưu trữ ứng dụng khách của GlobalProtect cho Windows và MacOS. Thứ hai, nó cung cấp các cấu hình máy khách chính thức của Palo Alto và danh sách các cổng có sẵn. Mục đích của cổng là cung cấp đường hầm SSLVPN thô mà chúng tôi biết và yêu thích, để bảo mật phiên người dùng cuối cho doanh nghiệp.
Luồng khách hàng chính thức của Palo Alto là:
- Đăng nhập vào cổng thông tin
- Nhận cấu hình và danh sách các cổng
- Cổng được chọn tự động hoặc theo lựa chọn thủ công của người dùng
- Đăng nhập vào cổng
- Cung cấp báo cáo Hồ sơ thông tin máy chủ (HIP)
- Nếu mọi việc suôn sẻ, hãy kết nối với VPN và bảo mật phiên
TL; DR Có vẻ như việc thực thi MFA là rất quan trọng trong cả cổng và cổng vì đây là các thành phần độc lập .
Đi sâu vào quy trình xác thực
Khi lần đầu tiên kết nối với ứng dụng khách chính thức của GlobalProtect, chúng tôi thấy yêu cầu POST đầu tiên được gửi đến cổng thông tin bằng URL của nó trỏ đến/global-protect/prelogin.esp
Các yêu cầu sẽ được nối với các biến môi trường của máy khách, chẳng hạn như: ”kerberos-support”, ”client-os”,“os-version”, “ipv6-support”, v.v.
Sau đó, máy chủ sẽ phản hồi bằng cookie “PHPSESSID” và tập dữ liệu XML có trạng thái của yêu cầu và nếu thành công, máy chủ cũng sẽ đính kèm nhãn đăng nhập cho máy khách, chẳng hạn như: “Nhập mã thông báo MFA” hoặc “Nhập Mật khẩu."
Sau khi người dùng nhập thông tin đăng nhập, khách hàng sẽ gửi yêu cầu tiếp theo tới /global-protect/getconfig.esp, gửi thông tin giống như yêu cầu trước đó với thông tin xác thực được đính kèm.
Nếu xác thực thành công, máy chủ sẽ gửi tập dữ liệu XML bao gồm: cấu hình máy chủ, phiên bản, thông tin máy chủ của máy khách để thu thập và nếu có - kiểm tra tùy chỉnh để thực hiện. Kiểm tra tùy chỉnh là kiểm tra tuân thủ đặc biệt do quản trị viên VPN tạo, chẳng hạn như các khóa đăng ký đặc biệt mà máy phải đặt để tuân thủ. Cũng bao gồm trong phản hồi là danh sách các cổng và cấu hình của chúng.
Yêu cầu tiếp theo nhắm đến cổng và trình tự xác thực giống như khi cổng bắt đầu, nhưng lần này là đến điểm cuối của cổng: /ssl-vpn/prelogin.esp.
Giai đoạn trước khi đăng nhập giống như với cổng thông tin, gửi các biến môi trường của máy khách đến máy chủ. Máy chủ phản hồi với trạng thái, nhãn của biểu mẫu xác thực và đặt cookie “PHPSESSID”.
Sau khi nhận được ID phiên và xác thực, yêu cầu tiếp theo là phân biệt giữa xác thực cổng và cổng. Yêu cầu được gửi tới /ssl-vpn/login.esp, với thông tin đăng nhập của người dùng được thêm vào và để đáp lại, máy chủ sẽ gửi nhiều đối số không có tiêu đề giống như: MTU, miền DNS, “authcookie” sẽ được sử dụng trong yêu cầu tiếp theo và nhiều biến cấu hình khác.
Sau đó, máy khách sẽ phân tích cú pháp tập dữ liệu XML một cách chính xác và nối các biến này, bao gồm cả “authcookie”, vào yêu cầu tiếp theo của nó tới /ssl-vpn/getconfig.esp. Máy chủ phản hồi với trạng thái phản hồi và nhiều biến cấu hình hơn, nhưng lần này tất cả các biến này đều có tiêu đề và nhiều biến hơn được gửi, chẳng hạn như mật mã để sử dụng, giao thức của cổng, IP đường hầm ưa thích để sử dụng, v.v.
Giai đoạn cuối cùng là yêu cầu GET tới /ssl-tunnel-connect.sslvpn, với tên người dùng và “authcookie” được thêm vào. Thao tác này sẽ bắt đầu phiên VPN với phản hồi của máy chủ là “ START_TUNNEL”.
Một cấu hình sai là có thể bỏ qua MFA
Như chúng ta đã thấy trong chương trước, trình tự VPN dựa trên hai thành phần độc lập yêu cầu hai luồng xác thực riêng biệt.
Vì chúng độc lập nên mỗi trình tự xác thực có thể được thực hiện thủ công. Điều này có nghĩa là nếu chúng tôi đã biết thông tin của cổng, thì không cần phải chuyển qua cổng để lấy danh sách các cổng, chúng tôi chỉ có thể xác thực một lần, với thông tin đăng nhập hợp lệ và vẫn có thể nhận được kết nối VPN.
Trong đánh giá gần đây này, chúng tôi nhận thấy rằng chỉ cổng thông tin yêu cầu mã thông báo MFA , trong khi cổng yêu cầu thông tin xác thực tên miền. Bộ phận CNTT và các nhà phát triển Palo Alto GlobalProtect, chỉ dựa vào việc sử dụng máy khách nội bộ của họ, không tính đến sự thích ứng bên ngoài. Mặc dù việc không thực thi MFA tại cổng là an toàn khi sử dụng ứng dụng khách chính thức, nhưng sẽ không an toàn khi sử dụng các ứng dụng khách nguồn mở hoặc tự xây dựng khác. Đây là phần mà điều quan trọng cần đề cập là điều này chỉ do cấu hình sai chứ không phải do lỗ hổng trong giải pháp VPN của Palo Alto.
May mắn thay, những người từ InfraDead đã thực hiện nghiên cứu của họ về GlobalProtect trong khi họ phát triển ứng dụng khách VPN nguồn mở OpenConnect hỗ trợ nhiều công nghệ và nhà cung cấp VPN, trong số đó có Palo Alto GlobalProtect . Trong tài liệu của họ, họ xây dựng:
“GlobalProtect VPN thực sự chứa hai giao diện máy chủ khác nhau: cổng và cổng. Hầu hết các VPN đều có một máy chủ cổng và một hoặc nhiều máy chủ cổng; máy chủ lưu trữ giao diện cổng thông tin cũng thường lưu trữ giao diện cổng , nhưng không phải lúc nào cũng vậy. Giao diện cổng chủ yếu gửi các cài đặt khóa/bảo mật được áp dụng tập trung để phần mềm máy khách chính thức tuân theo. Thông tin duy nhất do cổng gửi rõ ràng hữu ích đối với máy khách VPN như OpenConnect (cố gắng cung cấp toàn quyền kiểm soát cho người dùng cuối) là danh sách các cổng .
Một số VPN GlobalProtect được định cấu hình theo cách mà máy khách phải xác thực với cổng trước khi có thể truy cập cổng, trong khi với các VPN khác thì không cần tương tác với cổng . Để sao chép hành vi của các máy khách chính thức, trước tiên OpenConnect cố gắng kết nối với giao diện cổng thông tin của máy chủ được chỉ định.
Nếu --usergroup=gatewayđược chỉ định (hoặc, tương đương, /gatewayđược thêm vào URL máy chủ, ví dụ: https://vpn.company.com/gateway), thì OpenConnect sẽ cố gắng bỏ qua giao diện cổng và kết nối ngay với giao diện cổng . Điều này hữu ích nếu cổng GlobalProtect VPN bị định cấu hình sai, chẳng hạn như không cung cấp máy chủ cổng mong muốn trong danh sách mà nó cung cấp.”
Tính năng OpenConnect này thật kỳ diệu vì nó giúp chúng tôi tiết kiệm thời gian nghiên cứu và mã hóa tốn kém.
Không Cần Cổng Tại Đây…
Vì cổng và cổng đang chạy trên cùng một giao diện nên không cần tìm các cổng khác (chẳng hạn như các cổng khác trên cùng một máy chủ hoặc các tài sản bên ngoài khác).
Chúng tôi đã sử dụng ứng dụng khách OpenConnect để bỏ qua cổng và kết nối với cổng trước:openconnect --protocol=gp --user=user_name https://vpn.company.com/gateway
Điểm /gatewaycuối có thể không tồn tại trên máy chủ, mặc dù nó bị loại bỏ trong khi máy khách chạy và chỉ đóng vai trò là cờ nên nó sẽ bắt đầu giao tiếp điểm /ssl-vpn/cuối thay vì điểm cuối /global-protect/.
Máy khách VPN nhắc chúng tôi về thông tin xác thực tên miền:
Thành công! Chúng tôi đã kết nối thành công với mạng nội bộ!
Trong đánh giá này, mặc dù có thể kết nối và giao tiếp với bộ điều khiển miền của tổ chức, nhưng chúng tôi không thể giao tiếp với nhiều dịch vụ và máy miền như chúng tôi có thể làm từ máy khách chính thức. Sau khi nghiên cứu các hành vi khác nhau giữa các hệ điều hành và ứng dụng khách khác nhau, chúng tôi nhận thấy rằng nên gửi một báo cáo HIP hợp lệ. Các nhà phát triển OpenConnect ở đây cũng đủ thiên tài để tự động hóa một shell script tạo ra một báo cáo HIP giả mạo. Chúng tôi đã sao chép một tệp từ máy Windows của mình (Bằng cách vào ngăn cài đặt của ứng dụng khách chính thức, trong tab Khắc phục sự cố, hãy nhấp vào nút “Thu thập nhật ký”. Nó sẽ tạo một tệp trong thư mục Người dùng. Báo cáo HIP bên trong thư mục đã GlobalProtectLogs.zipnén có thể được tìm thấy dưới dạng pan_gp_hrpt.xml”)
vào tệp ../openconnect/trojans/hipreport.sh.
Cố gắng gửi báo cáo giả mạo của chúng tôi: và cố gắng tiếp cận dịch vụ được phân đoạn:openconnect --protocol=gp --user=username --csd-wrapper=trojans/hipreport.sh https://vpn.company.com/gateway
Chúng tôi đã bỏ qua thành công cả MFA và sự phân biệt của máy!
Từ đây, có thể kết nối với Active Directory và khai thác thêm môi trường nội bộ của tổ chức.
Khắc phục nhanh
Giảm thiểu cấu hình sai này khá dễ dàng:
- MFA phải được thực thi trên cả cổng VÀ (các) cổng
- Giám sát các kết nối SSLVPN trực tiếp đến cổng
- Tách cổng và (các) cổng thành các giao diện và cổng khác nhau
- Nếu có thể, chỉ cho phép xác thực SAML
Với tư cách là nhà điều hành Đội Đỏ, chúng tôi luôn đặt mục tiêu mang đến cho khách hàng của mình một giá trị gia tăng. Mọi đánh giá đều có những trở ngại riêng, nhưng càng thận trọng hơn khi mọi thứ có vẻ an toàn sẽ giúp ích rất nhiều. Lúc đầu, có vẻ như không có tài sản bên ngoài nào để tấn công và MFA được thực thi trên mọi giao diện tiếp xúc với internet, bao gồm cả GlobalProtect VPN. Tuy nhiên, tìm hiểu sâu hơn về giao diện cho thấy rằng việc dựa vào tương tác người dùng “thời bình” là nguy hiểm .
Mặc dù ứng dụng khách của GlobalProtect an toàn và không thể thay đổi để sử dụng theo cách khác, nhưng các chương trình VPN khác thì có thể. Cổng thông tin và cổng là các thành phần độc lập, có nghĩa là chúng tôi có thể xác thực từng thành phần riêng lẻ, trong khi việc không thực thi MFA trên cổng có thể khiến kẻ tấn công chiếm được chỗ đứng trong môi trường nội bộ doanh nghiệp.
Được viết như một phần của sê-ri “ CyberTalks ” của CYE , để chia sẻ kiến thức cá nhân thu được từ kinh nghiệm thực tế của chúng tôi.

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































