Hệ thống phát hiện xâm nhập (IDS) và tường lửa là các cơ chế bảo mật nhằm ngăn chặn tấn công mạng. Tuy nhiên, ngay cả IDS và tường lửa cũng có một số hạn chế về bảo mật. Phần này mình sẽ giới thiệu những hạn chế đó cùng với các kỹ thuật tránh IDS/tường lửa khác nhau như phân mảnh gói (packet fragmentation), định tuyến nguồn (source routing), giả mạo địa chỉ IP (IP address spoofing), …
Phân mảnh gói (Packet Fragmentation)
Phân mảnh gói có nghĩa là chia gói thăm dò (probe packet) thành nhiều gói nhỏ hơn (các fragments) khi gửi nó đến mạng đích. Khi các gói này đến một server, IDS hay tường lửa sẽ thường được xếp hàng tất cả gói tin đó sẽ được xử lý từng gói một. Tuy nhiên, phương pháp xử lý này ảnh hưởng hiệu suất mạng mạng và CPU nên hầu hết các IDS sẽ phải bỏ qua các gói bị phân mảnh trong quá trình quét port.
Do đó, attacker sẽ sử dụng các công cụ phân mảnh gói như Nmap hay fragroute để chia gói thăm dò thành các gói nhỏ hơn nhằm phá vỡ kỹ thuật phát hiện của IDS. Khi các mảnh này đến được máy đích, chúng sẽ được tập hợp lại để tạo thành một gói tin duy nhất.
SYN/FIN Scanning sử dụng IP Fragments không phải là một phương pháp mới. Quá trình dò quét này hạn chế được kết quả dương tính giả (false positive) do tường lửa ở hệ thống đích lọc mất gói tin. TCP header được chia thành nhiều gói để tránh bộ lọc gói.
Trong phương pháp này, attacker sẽ chia TCP header thành nhiều đoạn và truyền qua mạng. Tuy nhiên, khi lắp ráp lại IP ở phía máy đích có thể dẫn đến các kết quả bất thường và không thể đoán trước, ví dụ như IP header bị phân mảnh, … Ngoài ra một số máy có thể không phân tích cú pháp và tập hợp lại các gói bị phân mảnh làm dẫn đến sự cố, máy đó có thể khởi động lại, …
Tuy nhiên một số loại tưởng lửa có thể chặn hàng đợi phân mảnh IP trong kernel (ví dụ: CONFIG_IP_ALWAYS_DEFRAG trong Linux Kernel) nhưng đa số chúng không được sử dụng do hạn chế về mặt hiệu suất. Còn các IDS sử dụng phương pháp dựa trên dấu hiệu (signature) để phát hiện nên việc sử dụng phân mảnh thường sẽ tránh phát hiện gói này dẫn đến khả năng cao gây ra sự cố trên mạng mục tiêu.
Source Routing trong dò quét né tránh tường lửa
Một datagram IP chứa nhiều trường khác nhau,trong đó có trường IP options giúp lưu trữ thông tin định tuyến nguồn và danh sách các IP mà gói đó đã đi qua. Khi gói đi qua các nút trong mạng, mỗi bộ định tuyến sẽ kiểm tra địa chỉ IP đích và chọn hướng tiếp theo để hướng gói tin đó đến đích.
Khi attacker gửi các gói tin không đúng định dạng đến một mục tiêu, các gói này sẽ nhảy qua các bộ định tuyến và port khác nhau để đến đích. Trong một số trường hợp, các bộ định tuyến có thể được nối với tường lửa và IDS nhằm chặn các gói đó. Attacker sẽ thực thi một cơ chế định tuyến để chỉnh sửa IP path trong trường IP options để gói tin đi theo hướng do attacker xác định để đến đích (hướng mà không có tường lửa và IDS).
Source Port Manipulation
Source port manipulation là một kỹ thuật được sử dụng để vượt qua IDS/tường lửa, trong đó số port thực tế được ẩn bằng số port thông dụng như port của các dịch vụ HTTP, DNS, FTP, …. để tránh các rule tường lửa và IDS.
Mồi nhử IP (IP Address Decoy)
IP Address Decoy (mồi nhử IP) là chỉ định địa chỉ IP một cách thủ công để tránh IDS/firewaIl. Kỹ thuật này gây khó khăn cho IDS/firewall trong việc xác định IP nào đang thực sự tấn công. Công cụ Nmap tích hợp tính năng dò quét mồi nhử, che giấu quá trình quét bằng mồi nhử. Kỹ thuật này tạo ra nhiều IP để thực hiện quét, do đó gây khó khăn cho các cơ chế bảo mật trong việc xác định IP nguồn ban đầu.
Ta có thể thực hiện hai kiểu quét mồi nhử bằng Nmap:
nmap -D RND:10 [target]
Sử dụng lệnh này, Nmap sẽ tự động tạo số lượng ngẫu nhiên các mồi nhử để quét và định vị ngẫu nhiên địa chỉ IP thực giữa các IP mồi nhử.
nmap -D decoy1,decoy2,decoy3,...,ME,... [target]
Sử dụng lệnh này nhằm chỉ định thủ công IP của mồi nhử. Ta phân tách từng IP mồi nhử bằng dấu phẩy (,) và có thể tùy ý sử dụng lệnh ME để định vị IP thật của mình trong danh sách mồi nhử. Nếu đặt ME ở vị trí thứ 4 của lệnh, IP thực sẽ được đặt ở vị trí thứ 4 tương ứng. Nếu không sử dụng ME trong lệnh quét thì Nmap sẽ tự động đặt IP thực ở vị trí ngẫu nhiên.
Mồi nhử IP là một kỹ thuật hữu ích để ẩn IP. Tuy nhiên, kỹ thuật này sẽ không thành công nếu mục tiêu sử dụng các cơ chế như theo dõi path của Router, kỹ thuật loại bỏ phản hồi, …. Ngoài ra, việc sử dụng nhiều mồi nhử có thể làm chậm quá trình quét và ảnh hưởng đến độ chính xác của quá trình này.
Giả mạo IP
Hầu hết các tường lửa lọc các gói tin dựa trên IP nguồn. Các kiểu tường lửa này chỉ kiểm tra IP nguồn và xác định xem gói tin đó đến từ IP nguồn hợp lệ hay không. Nếu không thì IDS sẽ lọc các gói tin đó. Để vượt qua cơ chế này, attacker thường giả mạo IP.
Attacker sẽ thay đổi header của gói tin và gửi các gói này đến máy mục tiêu nhằm che giấu IP thật. Khi máy mục tiêu phản hồi thì sẽ quay trở lại địa chỉ giả mạo chứ không phải địa chỉ thực của attacker. Kỹ thuật này thường được sử dụng trong tấn công DDoS.
Hping3 là một công cụ tạo gói và dò quét mạng theo định hướng dòng lệnh cho giao thức TCP/IP, nó gửi các ICMP echo request và hỗ trợ các giao thức TCP, UDP, ICMP và raw-IP. Công cụ này có thể kiểm tra an ninh mạng, kiểm tra tường lửa, khám phá MTU, theo dõi nâng cao, footprinting hệ điều hành từ xa, đoán thời gian hoạt động từ xa, kiểm tra TCP/IP stack và các chức năng khác.
Các bạn có thể xem thêm về hping tại bài viết Module 3 – Phần 1 – Network Scanning là gì? Bài viết này mình đã chỉ ra rất rõ các lệnh thường dùng trong hping3.
Tạo gói tin tùy chỉnh
Attacker tạo các gói TCP tùy chỉnh để vượt qua tường lửa. Một số công cụ phổ biến như Colasoft (https://www.colasoft.com), NetScanTools Pro (https://www.netscontools.com), … Các công cụ này tạo và gửi các luồng gói tùy chỉnh với các giao thức khác nhau ở các tốc độ truyền khác nhau.
Colasoft Packet Builder là một công cụ tạo các gói mạng và giúp chuyên gia bảo mật đánh giá mạng. Attacker có thể chọn gói TCP từ các mẫu được cung cấp và thay đổi các tham số trong bộ giải mã, hệ thập lục phân hoặc ASCII editor để tạo gói. Ngoài việc xây dựng các gói, Colasoft Packet Builder hỗ trợ lưu các gói vào các tệp gói và gửi các gói vào mạng.
Có ba dạng xem trong Packet Builder: Packet List, Decode Editor, và Hex Editor.
- Packet List: hiển thị tất cả các gói được tạo. Khi chọn một hoặc nhiều gói trong Packet List, gói được đánh dấu đầu tiên sẽ được hiển thị trong cả Decode Editor và Hex Editor để chỉnh sửa.
- Hex Editor: dữ liệu của gói được biểu diễn dưới dạng giá trị thập lục phân và ký tự ASCII; các ký tự không in được được biểu thị bằng dấu chấm trong phần ASCII. Chúng ta có thể chỉnh sửa giá trị thập lục phân hoặc ký tự ASCII.
- Decode Editor: cho phép chỉnh sửa các gói mà không nhớ độ dài giá trị, thứ tự byte và offsets.
Attacker có thể gửi trực tiếp một gói đã tạo đến ngay lập tức và kiểm soát cách Colasoft Packet Builder gửi các gói như chỉ định khoảng thời gian giữa các gói, thời gian vòng lặp và độ trễ giữa các vòng lặp đó.
Công cụ này còn có thể kiểm tra mạng và kiểm tra khả năng bảo vệ mạng trước các cuộc tấn công và xâm nhập.
Randomizing Host Order
Attacker dò quét các máy trong mạng mục tiêu theo thứ tự ngẫu nhiên để quét mục tiêu dự định nằm ngoài tường lửa. Tùy chọn được Nmap sử dụng để quét với thứ tự máy chủ ngẫu nhiên là --randomize-hosts
. Kỹ thuật này nhằm xáo trộn từng nhóm gồm 16384 máy trước khi quét với tùy chọn thời gian chậm, do đó làm cho quá trình quét ít gây chú ý hơn đối với các hệ thống giám sát mạng và tường lửa. Nếu kích thước nhóm lớn, PING_GROUP_SZ sẽ được tăng lên trong nmap.h và nó sẽ được biên dịch lại.
Có thể thực hiện bằng cách tạo danh sách IP mục tiêu bằng lệnh-sL -n -ON <file name>
rồi ngẫu nhiên hóa nó bằng code Perl và cung cấp danh sách cho Nmap bằng -iL
.
Sending Bad Checksums
Kẻ tấn công gửi các gói có checksum sai hoặc không có thật đến mục tiêu đã định để tránh rule tường lửa. TCP/UPD checksum được sử dụng để đảm bảo tính toàn vẹn của dữ liệu. Việc gửi các gói có checksum không chính xác có thể giúp attacker thu thập thông tin từ các hệ thống được định cấu hình không đúng bằng cách kiểm tra các gói tin phản hồi. Nếu không có phản hồi hoặc các gói bị hủy thì có thể suy ra rằng hệ thống đã được cấu hình ngăn chặn. Tùy chọn được sử dụng bởi Nmap là --badsum
.
Sử dụng Proxy Server
Proxy Server đóng vai trò trung gian để kết nối với các máy khác. Một proxy server được sử dụng để:
- Là tường lửa và để bảo vệ mạng nội bộ khỏi các cuộc tấn công từ bên ngoài
- Là bộ ghép kênh địa chỉ IP cho phép nhiều máy tính kết nối với Internet khi chỉ có một địa chỉ IP public (NAT/PAT).
- Ẩn danh việc lướt web (ở một mức độ nào đó).
- Để trích xuất nội dung không mong muốn, chẳng hạn như quảng cáo hoặc tài liệu “không phù hợp” (sử dụng máy chủ proxy chuyên dụng).
- Để cung cấp một số biện pháp bảo vệ chống lại các cuộc tấn công của tin tặc.
- Tiết kiệm băng thông.
Proxy hoạt động như thế nào?
Khi ta lướt web trên máy tính, máy tính sẽ gửi yêu cầu đến proxy, sau đó, proxy sẽ thay mặt chúng ta gửi yêu cầu đến máy đích. Hay nói cách khác nó làm trung gian giữa ta và máy đích để truyền yêu cầu và nhận phản hồi như trong hình bên dưới.
Trong quá trình này, proxy nhận thông tin liên lạc giữa máy khách và ứng dụng đích. Để tận dụng lợi thế của proxy server, attacker phải cấu hình client để chúng có thể gửi request đến proxy thay vì tới máy đích cuối cùng.
Tại sao attacker sử dụng proxy server?
Attack tấn công một hệ thống sẽ dễ dàng hơn so với việc che giấu nguồn tấn công. Do đó, thách thức chính của chúng là che giấu danh tính của mình để không thể lần ra dấu vết. Do đó, hacker sử dụng proxy server để tránh bị phát hiện tấn công bằng cách che giấu địa chỉ IP của mình. Khi hacker sử dụng proxy để kết nối với hệ thống đích, log của máy đích sẽ ghi lại IP nguồn là IP của proxy thay vì IP của hacker.
Proxy còn giúp attacker duyệt Internet ẩn danh và truy cập các trang web bị chặn (tức là trốn tránh các hạn chế của tường lửa). Tóm lại, proxy server giúp:
- Ẩn IP nguồn thực tế để hack mà không có hệ quả pháp lý nào.
- Để che giấu IP nguồn thực sự của cuộc tấn công bằng cách sử dụng IP của proxy.
- Để truy cập từ xa vào mạng nội bộ và các tài nguyên trang web khác thường bị giới hạn.
- Để ngắt tất cả các yêu cầu do người dùng gửi và truyền chúng đến đích thứ ba; do đó, nạn nhân sẽ chỉ có thể xác định địa chỉ máy chủ proxy.
Proxy chaining
Chuỗi proxy (proxy chaining) giúp attacker tăng khả năng ẩn danh trên Internet của mình. Tính ẩn danh trên Internet phụ thuộc vào số lượng proxy được sử dụng để tìm nạp; số lượng proxy server được sử dụng càng lớn thì khả năng ẩn danh của kẻ tấn công càng lớn.
Ẩn danh (Anonymizers)
Trình ẩn danh là một máy trung gian thay mặt người dùng lướt web khiến cho hoạt động này không thể bị theo dõi. Trình ẩn danh cho phép người dùng vượt qua kiểm duyệt Internet. Nó có thể loại bỏ tất cả thông tin nhận dạng (kể cả địa chỉ IP) khỏi hệ thống khi lướt Internet, do đó đảm bảo quyền riêng tư. Nó còn có thể mã hóa dữ liệu được truyền từ máy tính đến nhà cung cấp dịch vụ Internet (ISP). Hầu hết các trình ẩn danh có thể ẩn danh các dịch vụ như HTTP, FTP, gopher.
- Đảm bảo quyền riêng tư: Các hoạt động điều hướng trang web không bị theo dõi. Quyền riêng tư được duy trì trừ khi người dùng tiết lộ thông tin cá nhân của mình trên web như điền form, …
- Truy cập nội dung do chính phủ hạn chế: Hầu hết các chính phủ ngăn công dân truy cập vào một số trang web hoặc nội dung được cho là không phù hợp hoặc nhạy cảm. Tuy nhiên, những trang web này vẫn có thể được truy cập bằng cách sử dụng trình ẩn danh nằm bên ngoài quốc gia.
- Bảo vệ chống lại các cuộc tấn công: Có thể định tuyến tất cả lưu lượng truy cập Internet của khách hàng qua máy chủ DNS.
- Bỏ qua IDS và các rule tường lửa: Tường lửa chỉ nhìn thấy kết nối từ máy tính của user đến địa chỉ web của trình ẩn danh. Trình ẩn danh sau đó sẽ kết nối với bất kỳ trang web nào với sự trợ giúp của kết nối Internet và sau đó chuyển nội dung trở lại.
Một số công cụ ẩn danh có thể kể đến như Whonix, Orbot, …
Whonix là một hệ điều hành dành cho PC được thiết kế để bảo mật và quyền riêng tư nâng cao. Nó giảm thiểu mối đe dọa của các vectơ tấn công thông thường mà vẫn duy trì khả năng sử dụng. Ẩn danh bằng cách sử dụng mạng Tor. Nó bao gồm một Debian được cấu hình chạy bên trong nhiều máy ảo, cung cấp một lớp bảo vệ đáng kể khỏi mã độc và rò rỉ IP.
Một số công cụ khác như:
Đối với thiết bị di động, Orbot là một ứng dụng proxy cho phép các ứng dụng khác sử dụng Internet an toàn hơn. Nó sử dụng Tor để mã hóa lưu lượng truy cập Internet và sau đó ẩn bằng cách chuyển tới một loạt máy tính trên khắp thế giới.
Ngoài ra, Psiphon Pro là một công cụ vượt tường lửa do Psiphon, Inc. phát triển, sử dụng công nghệ proxy VPN, SSH và HTTP cung cấp quyền truy cập mở và không bị kiểm duyệt. Tuy nhiên, Psiphon Pro không tăng tính riêng tư trực tuyến và không phải là một công cụ bảo mật trực tuyến.
- Chế độ trình duyệt hoặc VPN (toàn bộ thiết bị): chọn tunnel toàn bộ hay chỉ trình duyệt web.
- Số liệu thống kê trong ứng dụng: cho ta biết đã sử dụng bao nhiêu lưu lượng truy cập.
Comments 1