sImplePerson
Member
-
23/03/2020
-
11
-
28 bài viết
Kỹ thuật tấn công vượt qua tường lửa/NAT mới cho phép tin tặc truy cập vào dịch vụ TCP/UDP
Một nghiên cứu mới đây đã chứng minh kỹ thuật cho phép kẻ tấn công có thể vượt qua tường lửa và truy cập từ xa vào bất kỳ dịch vụ TCP/UDP trên máy nạn nhân.
Kỹ thuật này có tên NAT Slipstreaming, bắt đầu bằng việc gửi tới mục tiêu một liên kết đến trang web độc hại (hoặc trang web hợp pháp nhưng chứa các quảng cáo độc hại). Khi nạn nhân click vào liên kết sẽ kích hoạt mở cổng TCP/UDP bất kỳ, khiến cho các hạn chế truy cập port dựa vào trình duyệt bị phá vỡ.
NAT Slipstreaming khai thác trình duyệt của người dùng kết hợp với cơ chế theo dõi kết nối “Cổng cấp ứng dụng”(ALG) được tích hợp trong NAT, bộ định tuyến và tường lửa bằng chuỗi trích xuất IP nội bộ thông qua tấn công timing hoặc WebRTC; phát hiện phân mảnh IP và MTU (Đơn vị truyền tối đa) tự động từ xa; kích thước gói tin qua TCP; lạm dụng xác thực TURN; kiểm soát gói tin và kỹ thuật protocol confusion thông qua lạm dụng trình duyệt.
Kỹ thuật được thực hiện bằng cách sử dụng bộ định tuyến NetGear Nighthawk R7000 chạy nhân Linux phiên bản 2.6.36.4.
Xác định ranh giới gói tin
NAT (Network address translation) là quá trình mà một thiết bị mạng, ví dụ tường lửa, sửa đổi một địa chỉ IP thành một địa chỉ IP khác thông qua sửa đổi thông tin địa chỉ mạng trong IP header của các gói khi chúng đang được chuyển tiếp.
Ưu điểm chính là giới hạn số địa chỉ IP public sử dụng trong mạng nội bộ của tổ chức và tăng cường bảo mật, bằng cách cho phép một địa chỉ IP public duy nhất được chia sẻ giữa nhiều hệ thống.
NAT Slipstreaming hoạt động bằng cách tận dụng việc phân đoạn gói TCP và IP để điều chỉnh ranh giới gói và thông qua đó để tạo gói tin TCP/UDP bắt đầu bằng giao thức SIP như REGISTER hoặc INVITE.
SIP (Session Initiation Protocol) là một giao thức truyền thông dùng để khởi tạo, duy trì và kết thúc các phiên đa phương tiện trong thời gian thực cho các ứng dụng thoại, video và nhắn tin.
Nói cách khác, sự kết hợp giữa phân đoạn gói tin và chuyển các truy vấn SIP trong HTTP có thể dùng để đánh lừa NAT ALG (Cổng cấp ứng dụng) mở các cổng tùy ý cho các kết nối gửi đến máy client.
Để đạt được điều này, một truy vấn HTTP POST được gửi cùng với một ID và form web ẩn trỏ đến server tấn công đang chạy một trình kiểm tra gói tin, từ đó lấy được các kích thước của MTU, kích thước gói dữ liệu, kích thước header TCP và IP, …Sau đó dữ liệu kích thước được gửi trở lại máy client của nạn nhân qua một thông báo POST riêng biệt, cùng với ID của nạn nhân để có thể phù hợp với yêu cầu ban đầu từ nạn nhân.
Ngoài ra, có thể sử dụng chức năng xác thực trong TURN (Traversal Using Relays around NAT). TURN là một giao thức hỗ trợ chuyển tiếp trong giao tiếp ngang hàng như SIP và WebRTC. TURN là UDP trong khi TURNS (TURN + TLS) là TCP. Các trình duyệt này hỗ trợ TURN cho WebRTC trong trường hợp chúng không thể tạo kết nối ngang hàng trực tiếp để chia sẻ.
Ý tưởng tấn công là làm tràn một gói tin TCP hoặc UDP bằng cách thêm vào các ký tự (như "^") và buộc gói tin phải tách thành hai gói tin, để gói dữ liệu SIP ngay từ đầu là gói tin bị tràn thứ hai.
Kết nối với TCP/UDP qua Packet Alteration
Bước tiếp theo, địa chỉ IP nội bộ của nạn nhân được trích xuất bằng cách sử dụng WebRTC ICE trên các trình duyệt như Chrome hoặc Firefox hoặc thông quan tấn công vào các cổng thông thường (192.168. *. 1, 10.0.0.1 và local networks).
Khi máy client nhận được kích thước gói và địa chỉ IP nội bộ, kẻ tấn công sẽ xây dựng một biểu mẫu web được chế tạo đặc biệt để đệm dữ liệu POST cho đến khi gói tin bị phân mảnh, lúc này SIP REGISTER chứa địa chỉ IP nội bộ của kẻ tấn công được thêm vào. Biểu mẫu được gửi qua Javascript mà không có sự đồng ý của nạn nhân.
Trên máy chủ tấn công, vì có thể nhìn thấy các gói được gửi đến, kẻ tấn công xem xét gói SIP có được viết lại bằng địa chỉ IP public. Nếu không phải địa chỉ IP public, kẻ tấn công sẽ thông báo lại cho máy client rằng gói SIP không nằm trên ranh giới gói dự kiến và không được viết lại, và kẻ tấn công cung cấp vị trí ranh giới mới từ quá trình tìm hiểu hệ thống.
Mã máy khách tự động điều chỉnh kích thước gói tin thành kích thước mới chỉ sau hai lần thất bại liên tiếp. Một số trình duyệt (Firefox) đôi khi sẽ có kích thước gói tin hơi khác do ranh giới đa phần mà trình duyệt tạo ra cho biểu mẫu, không giống như hầu hết các trình duyệt khác, không có độ dài cố định.
Khi gói tin SIP đến, NAT sẽ bị đánh lừa, tin rằng đây là đăng ký SIP hợp pháp và đến từ một máy khách SIP trên máy nạn nhân. Khi máy chủ phản hồi thích hợp, NAT sẽ mở cổng trong gói ban đầu mà nạn nhân gửi và bộ định tuyến bây giờ sẽ chuyển tiếp bất kỳ cổng nào mà kẻ tấn công chọn.
Hoàn thành quá trình tấn công, tin tặc có thể kết nối với các dịch vụ TCP/UDP tùy ý đang chạy trên nạn nhân.
Việc thử nghiệm khai thác kỹ thuật NAT Slipstreaming các bạn có thể theo dõi tại đây.
NAT Slipstreaming khai thác trình duyệt của người dùng kết hợp với cơ chế theo dõi kết nối “Cổng cấp ứng dụng”(ALG) được tích hợp trong NAT, bộ định tuyến và tường lửa bằng chuỗi trích xuất IP nội bộ thông qua tấn công timing hoặc WebRTC; phát hiện phân mảnh IP và MTU (Đơn vị truyền tối đa) tự động từ xa; kích thước gói tin qua TCP; lạm dụng xác thực TURN; kiểm soát gói tin và kỹ thuật protocol confusion thông qua lạm dụng trình duyệt.
Kỹ thuật được thực hiện bằng cách sử dụng bộ định tuyến NetGear Nighthawk R7000 chạy nhân Linux phiên bản 2.6.36.4.
Xác định ranh giới gói tin
NAT (Network address translation) là quá trình mà một thiết bị mạng, ví dụ tường lửa, sửa đổi một địa chỉ IP thành một địa chỉ IP khác thông qua sửa đổi thông tin địa chỉ mạng trong IP header của các gói khi chúng đang được chuyển tiếp.
Ưu điểm chính là giới hạn số địa chỉ IP public sử dụng trong mạng nội bộ của tổ chức và tăng cường bảo mật, bằng cách cho phép một địa chỉ IP public duy nhất được chia sẻ giữa nhiều hệ thống.
NAT Slipstreaming hoạt động bằng cách tận dụng việc phân đoạn gói TCP và IP để điều chỉnh ranh giới gói và thông qua đó để tạo gói tin TCP/UDP bắt đầu bằng giao thức SIP như REGISTER hoặc INVITE.
Nói cách khác, sự kết hợp giữa phân đoạn gói tin và chuyển các truy vấn SIP trong HTTP có thể dùng để đánh lừa NAT ALG (Cổng cấp ứng dụng) mở các cổng tùy ý cho các kết nối gửi đến máy client.
Để đạt được điều này, một truy vấn HTTP POST được gửi cùng với một ID và form web ẩn trỏ đến server tấn công đang chạy một trình kiểm tra gói tin, từ đó lấy được các kích thước của MTU, kích thước gói dữ liệu, kích thước header TCP và IP, …Sau đó dữ liệu kích thước được gửi trở lại máy client của nạn nhân qua một thông báo POST riêng biệt, cùng với ID của nạn nhân để có thể phù hợp với yêu cầu ban đầu từ nạn nhân.
Ngoài ra, có thể sử dụng chức năng xác thực trong TURN (Traversal Using Relays around NAT). TURN là một giao thức hỗ trợ chuyển tiếp trong giao tiếp ngang hàng như SIP và WebRTC. TURN là UDP trong khi TURNS (TURN + TLS) là TCP. Các trình duyệt này hỗ trợ TURN cho WebRTC trong trường hợp chúng không thể tạo kết nối ngang hàng trực tiếp để chia sẻ.
Ý tưởng tấn công là làm tràn một gói tin TCP hoặc UDP bằng cách thêm vào các ký tự (như "^") và buộc gói tin phải tách thành hai gói tin, để gói dữ liệu SIP ngay từ đầu là gói tin bị tràn thứ hai.
Kết nối với TCP/UDP qua Packet Alteration
Bước tiếp theo, địa chỉ IP nội bộ của nạn nhân được trích xuất bằng cách sử dụng WebRTC ICE trên các trình duyệt như Chrome hoặc Firefox hoặc thông quan tấn công vào các cổng thông thường (192.168. *. 1, 10.0.0.1 và local networks).
Khi máy client nhận được kích thước gói và địa chỉ IP nội bộ, kẻ tấn công sẽ xây dựng một biểu mẫu web được chế tạo đặc biệt để đệm dữ liệu POST cho đến khi gói tin bị phân mảnh, lúc này SIP REGISTER chứa địa chỉ IP nội bộ của kẻ tấn công được thêm vào. Biểu mẫu được gửi qua Javascript mà không có sự đồng ý của nạn nhân.
Trên máy chủ tấn công, vì có thể nhìn thấy các gói được gửi đến, kẻ tấn công xem xét gói SIP có được viết lại bằng địa chỉ IP public. Nếu không phải địa chỉ IP public, kẻ tấn công sẽ thông báo lại cho máy client rằng gói SIP không nằm trên ranh giới gói dự kiến và không được viết lại, và kẻ tấn công cung cấp vị trí ranh giới mới từ quá trình tìm hiểu hệ thống.
Mã máy khách tự động điều chỉnh kích thước gói tin thành kích thước mới chỉ sau hai lần thất bại liên tiếp. Một số trình duyệt (Firefox) đôi khi sẽ có kích thước gói tin hơi khác do ranh giới đa phần mà trình duyệt tạo ra cho biểu mẫu, không giống như hầu hết các trình duyệt khác, không có độ dài cố định.
Khi gói tin SIP đến, NAT sẽ bị đánh lừa, tin rằng đây là đăng ký SIP hợp pháp và đến từ một máy khách SIP trên máy nạn nhân. Khi máy chủ phản hồi thích hợp, NAT sẽ mở cổng trong gói ban đầu mà nạn nhân gửi và bộ định tuyến bây giờ sẽ chuyển tiếp bất kỳ cổng nào mà kẻ tấn công chọn.
Hoàn thành quá trình tấn công, tin tặc có thể kết nối với các dịch vụ TCP/UDP tùy ý đang chạy trên nạn nhân.
Việc thử nghiệm khai thác kỹ thuật NAT Slipstreaming các bạn có thể theo dõi tại đây.
Theo The Hacker News