CHƯƠNG I:
TỔNG QUAN VỀ BẢO MẬT MẠNG MÁY TÍNH
VÀ CÁC KỸ THUẬT TẤN CÔNG MẠNG
I.1. Vấn đề đặt ra với yêu cầu bảo mật thông tin trên mạng máy tính
Chúng ta xem xét vấn đề này thông qua một vài ví dụ thực tế (có thể xảy ra khi truyền tải/trao
đổi thông tin trên mạng) sau đây:
a. Người sử dụng A chuyển một tập tin đến người sử dụng B, tập tin này chứa những thông tin
cần được bảo vệ. Trong môi trường mạng (không an toàn), người sử dụng C – người không
được phép đọc tập tin này, có thể theo dõi sự di chuyển của tập tin. Người sử dụng C cũng có
thể bắt giữ (capture/copy) tập tin trong quá trình di chuyển của nó.
b. Người quản lý mạng tên D, chuyển một thông điệp đến máy tính thành viên của mạng, máy
tính E. Thông điệp này yêu cầu máy tính E cập nhật tập tin “cấp phép” – có thể bao gồm các
định danh của người sử dụng được phép truy cập máy tính đó. Trong môi trường mạng
(không an toàn), người sử dụng F có thể chặn thông điệp này, sửa đổi nó (theo ý đồ riêng) và
rồi chuyển tiếp đến máy tính E. Máy E thừa nhận thông điệp từ người quản lý D và cập nhật
vào tập tin “cấp phép” của nó. Điều đáng nói ở đây là máy E không hề biết thông điệp được
gửi đến từ F và nó đã bị thay đổi.
c. Trong môi trường mạng (không an toàn) của một một Công ty, khi nhân viên Malconten bị
sa thải, người quản lý nhân sự sẽ gửi một thông điệp đến máy Server của hệ thống để yêu cầu
làm mất hiệu lực của account user của anh ta. Trong trường hợp này, Malconten có thể chặn
thông điệp lại và làm trễ nó trong một khoảng thời gian đủ để anh ta thực hiện một truy cập
lần cuối cùng đến máy server và nhận một số thông tin “nhạy cảm” nào đó. Rõ ràng thông
điệp cũng được chuyển đến máy Server, nhưng nó đã “quá trễ”.
d. Trong môi trường thương mại điện tử (không tin cậy), một thông điệp được gửi từ một
khách hàng mua vàng đến trung tâm mua bán vàng The Sun, với nội dung: thoả thuận mua
một lượng vàng 9999 với giá 10 triệu đồng. Nhưng trong khi việc giao nhận vàng chưa diễn
ra thì giá một lượng vàng trên thị trường giảm xuống còn 9 triệu đồng. Có thể xảy ra tình
huống: Người khách mua vàng nói rằng anh ta chưa bao giờ gửi thông điệp thoả thuận mua
vàng trước đó. Điều gì sẽ xảy ra? Làm thế nào để buộc khách hàng đó phải thừa nhận rằng
anh ta đã từng đồng ý mua vàng với giá 10 triệu đồng một lượng?
Từ các ví dụ trên, hãy liên hệ đến các mối đe dọa tìm ẩn trong việc truyền thông tin
(message/packet) trong môi trường mạng không an toàn/không tin cậy. Để từ đó có thể đưa
ra các giải pháp để phát hiện và ngăn chặn chúng. Đó là nhiệm vụ của công tác An toàn
mạng/Bảo mật mạng. Nên nhớ rằng, an toàn mạng là quá trình chứ không phải một công cụ,
các công cụ liên quan chỉ có tác dụng hỗ trợ cho quá trình bảo mật đạt hiệu quả hơn.
I.2. Vấn đề bảo mật trên các mạng TCP/IP
Vấn đề bảo vệ mạng, chính xác hơn là bảo vệ thông tin được lưu trữ và di chuyển trên mạng,
để chống lại những người xâm phạm và kẻ phá hoại (gọi chung là hacker), kể cả trong và
ngoài hệ thống mạng, được những người quản trị mạng đặt lên hàng đầu trong công tác quản
trị mạng. Hacker không chỉ tấn công vào các mạng TCP/IP, nhưng mối đe doạ tiềm ẩn đối với
các mạng này là rất lớn, vì TCP/IP là một giao thức mở nên các hacker có thể tìm thấy những
lỗ hổng của nó một cách dễ dàng bằng cách thử nhiều kiểu tấn công khác nhau.
I.2.1. Mục tiêu của hacker
Mục tiêu mà các hacker nhắm đến trước khi thực hiện tấn công các mạng TCP/IP thường là:
Phải đạt được “Sự mạo danh (Impersonation)”: Để có thể thực hiện sự truy cập không
được phép (unauthorized) đến tài nguyên mạng (dữ liệu).
Phải làm cho mục tiêu bị tấn công rơi vào tình trạng “từ chối dịch vụ (gọi là tân công
DoS: Denial-of-Service)”: Để làm cho tài nguyên của mạng (các máy chủ dịch vụ: Web server,
…) trở nên không có tác dụng.
Phải thực hiện được việc “Phát lại thông điệp (Replay of messages)”: Để có thể truy cập/nhận
thông tin và thay đổi nó, khi thông tin đang di chuyển trên đường.
Phải đoán được mật khẩu (Guessing of password): Để từ đó có thể truy cập đến thông
tin/dịch vụ mà đúng ra nó bị từ chối (gọi là tấn công tự điển: dictionary attack).
Phải đoán được khóa (Guessing of key): Để có thể truy cập đến mật khẩu và dữ liệu đã được mã
hoá (gọi là tấn công “thô bạo”: brute-force attack).
I.2.2. Chính sách an toàn cho các mạng TCP/IP
Người quản trị an toàn của hệ thống mạng, nhất là các mạng TCP/IP, phải thực hiện kết hợp
các chính sách bảo mật sau đây để bảo vệ mạng và dữ liệu truyền đi trên mạng của họ, sự bảo
vệ mạng không chỉ giới hạn trong một LAN/WAN mà có thể trên cả Intranet và Internet:
Thực hiện mã hoá (encryption) thông tin trước khi tuyền/gửi đi trên mạng: Để bảo vệ
dữ liệu và mật khẩu.
Thực hiện cơ chế xác thực (authentication) – có thể sử dụng chữ ký điện tử (digital
signature) và/hoặc thẻ chứng thực (certificates): Để kiểm tra ai là người gửi (nguồn
gốc) dữ liệu trên mạng.
Thực hiện cơ chế cho phép/cấp phép (authorization): Để ngăn chặn các truy cập không
thích hợp/không hợp lệ (improper).
Kiểm tra tính toàn vẹn (integrity) dữ liệu và Mã xác thực thông điệp (message
authentication code ): Để bảo vệ chống lại (against) những sự thay đổi/sử đổi
(alteration) thông điệp.
Thực hiện quy trình công nhận (Non-repudiation): Để đảm bảo rằng một hành động là
không thể bị phủ nhận/từ chối bởi người thực hiện nó.
Thực hiện chính sách mật khẩu một lần (One-time password) và Số bắt tay ngẫu nhiên hai
chiều (Two-way random number handshakes: mutually conversation): Để cho phép các cặp tuyền thông có thể xác
thực lẫn nhau.
Thực hiện chính sách cập nhật/làm tươi khoá thường xuyên (Frequent key refresh); Sử
dụng các khoá “mạnh” (strong key); Ngăn ngừa hiện tượng “giả” khoá trong tương lai;
… : Để bảo vệ mạng chống lại các tấn công theo cách “bẻ” khóa: Tấn công “tự điển”,
Tấn công “thô bạo”.
Thực hiện chính sách che giấu/che đậy địa chỉ (Address concealment) – sử dụng kỹ
thuật NAT/PAT: Để bảo vệ mạng chống lại các tấn công theo kiểu từ chối dịch vụ
(DoS).
Vì giao thức TCP/IP không được thiết kế gắn liền với bảo mật, nên nhiều hệ thống bảo
mật khác nhau được phát triển cho các ứng dụng và lưu lượng chạy trên Intranet/Internet. Các
phần mềm này có nhiệm vụ chuẩn bị dữ liệu cho việc truyền trên một mạng, trong đó có chú ý
đến các khả năng có thể áp dụng xác thực và mã hoá. Trong mạng TCP/IP, các ứng dụng nói
trên có thể được xây dựng ở 1 trong 3 lớp: Ứng dụng; Giao vận/Mạng; Vật lý/Liên kết dữ
liệu.
I.2.3. Đối phó với các ý đồ (kiểu) tấn công của Hacker
·
Để ngăn chặn việc đọc lén các thông điệp (message) truyền đi trên mạng: Thông
điệp phải được mã hóa trước khi truyền đi và sẽ được giải mã ở bên nhận. Trong trường hợp
này bên gửi và bên nhận phải chia sẻ một khóa bí mật để phục vụ cho việc mã hóa/giải mã
thông điệp. Với giải pháp này, khóa cũng phải được truyền đi/phân phối trên mạng, nên vấn
đề đặt ra tiếp theo là làm thế nào để phânphối khóa một cách an toàn, ở đây có thể sử dụng
các kỹ thuật mã hoá khác nhau, mã hóa khoá bí mật và/hoặc mã hóa khoá công cộng.
·
Không thể sử dụng một khóa trong khoảng thời gian dài và để ngăn chăn việc đoán
khóa (có thể đoán khoá trong tương lai nếu biết được khóa hiện tại) của hacker. Để đối phó,
phải “làm tươi khoá” thường xuyên và không nên sử dụng chính sách “dựa vào các khoá cũ
để tính ra khóa mới”, điều này đảm bảo khóa được truyền đi/phân phối một cách an toàn (bí
mật).
·
Để để ngăn chặn việc “phát lại” thông điệp bởi một kẻ mạo danh (replay attack): Sử
dụng chỉ số tuần tự trong các gói tin IP (thông số timestamp thường là không đảm bảo độ tin
cậy cho mục tiêu an toàn này).
·
Để đảm bảo rằng thông điệp không bị thay đổi/sửa đổi (alltered) trong khi truyền từ
người gửi đến người nhận: Sử dụng các thông điệp rút gọn (message digest), có thể sử dụng
các hàm băm (hash) hoặc các hàm on-way.
·
Để đảm bảo rằng một “thông điệp rút gọn” là không bị thỏa hiệp hoặc không bị thay
đổi trên đường truyền: Sử dụng chữ ký điện tử bằng cách mã hoá thông điệp rút gọn với một
khoá bí mật hoặc khoá riêng (đó là chính sách xác thực (authentication), cơ chế không công
nhận (non-repudiation)).
·
Làm thế nào để đảm bảo rằng một message hoặc một chữ ký số là được xuất
phát/bắt nguồn (originated) từ một đối tác tin cậy/đối tác mong muốn (desried): Sử dụng cơ
chế bắt tay two-way bao gồm các số ngẫu nhiên được mã hoá (còn gọi là xác thực lẫn nhau
(mutual authentication)).
·
Làm thế nào để đảm bảo rằng một “cái bắt tay” là đã được trao đổi với một đối tác
tin cậy (từ các tấn công theo kiểu main-in-the-middle): Sử dụng các thẻ chứng thực số (một sự
kết hợp giữa khoá công cộng với các thông tin nhận dạng của đối tác).
·
Làm thế nào để ngăn chặn việc sử dụng không hợp lệ các dịch vụ bởi những người
sử dụng không được xác thực một cách thích hợp: Sử dụng mô hình điều khiển truy cập nhiều
tầng.
·
Để bảo vệ chống lại các mã phá hại (malicious code) hoặc các thông điệp không
mong muốn (từ tấn công DoS): Giới hạn việc truy cập vào mạng bên trong, bằng các sử dụng:
Filter, Firewall, Proxy, Packet Authentication, Conceal internal address anh name structure
(che giấu địa chỉ và cấu trúc tên của mạng bên trong),…
I.2.4. Các dịch vụ bảo mật (Security Services)
·
Authentication Service (dịch vụ xác thực): Dịch vụ này đảm bảo một sự truyền thông
tin cậy. Nếu chỉ quan tâm đến truyền thông điệp, thì nhiệm vụ của xác thực chỉ đơn giản là
đảm bảo với bên nhận rằng thông điệp mà nó nhận được là đến từ một nguồn được xác nhận.
Nếu quan tâm đến cả quá trình tương tác của hai đối tác truyền thông, ví dụ sự kết nối giữ
Terminal và Host, thì phải quan tâm đến hai khía cạnh. Thứ nhất, tại thời điểm khởi tạo kết
nối, dịch vụ đảm bảo rằng hai đối tác truyền thông này là đáng tin cậy. Thứ hai, dịch vụ đảm
bảo rằng kết nối là không bị can thiệp bởi thành phần thứ ba – hacker có thể giả mạo một
trong hai đối tác hợp pháp, cho mục đích trao đổi hoặc tiếp nhận thông điệp “không được
phép”. Do đó, thực tế yêu cầu hai loại dịch vụ xác thực: Peer entity authentication và Data
origin authentication:
Peer entity authentication: Cung cấp một sự chứng thực về định danh của các thực
thể ngang hàng trong một liên kết. Nó được cung cấp để sử dụng tại thời điểm thiết lập kết nối
hoặc trong suốt quá trình trao đổi dữ liệu của kết nối. Nó cố gắng cung cấp một sự tin cậy mà
một trong hai đối tác truyền thông không thể thực hiện sự giả mạo hoặc một sự replay không
được phép của kết nối trước đó.
Data origin authentication. Cung cấp sự chứng thực về nguồn gốc của đơn vị dữ liệu,
nó không cung cấp sự bảo vệ để chống lại các loại tấn công theo kiểu nhân bản (duplication)
hoặc làm thay đổi (modification) đơn vị dữ liệu. Loại này thường dùng để hỗ trợ xác thực cho
các ứng dụng e-mail.
·
Access ControlService (dịch vụ điều khiển truy cập): Trong lĩnh vực an toàn mạng,
điều khiển truy cập là khả năng giới hạn và điều khiển truy cập đến các host và các ứng dụng
qua liên kết truyền thông. Nhiệm vụ của dịch vụ điều khiển truy cập là: mỗi thực thể truyền
thông khi cố gắng truy cập vào hệ thống thì trước hết nó phải được nhận dạng hoặc được xác
thực, sau đó mới có thể nhận được quyền truy cập phù hợp với riêng nó. Cụ thể là: Ai được
phép truy cập tài nguyên; Điều kiện để truy cập tài nguyên là gì; Được phép truy cập tài
nguyên ở mức độ nào (thực hiện những thao tác nào trên tài nguyên); vv. Một cách tổng quát,
dịch vụ này thực hiện nhiệm vụ ngăn chặn việc sử dụng “không được cấp phép” đến tài
nguyên.
·
Data Confidentiality Service(dịch vụ tin cậy dữ liệu): Dịch vụ này cung cấp sự bảo vệ
cho các dữ liệu được truyền đi, trước các tấn công loại passive (thụ động). Nếu chú ý đến nội
dung của dữ liệu truyền tải, thì có thể thiết lập nhiều cấp khác nhau của sự bảo vệ, để có thể
được nhận dạng chúng. Tức là, có thể định nghĩa để dịch vụ này bảo vệ một thông điệp đơn
hoặc các trường (field) cụ thể của một thông điệp. Một khía cạnh khác của sự tin cậy là sự bảo
vệ dòng traffic trước các tấn công theo kiểu phân tích thông điệp. Nó làm cho kẻ tấn công
không thể nhận được địa chỉ nguồn, địa chỉ đích, tầng số xuất hiện, độ dài hoặc các đặc tính
khác của traffic khi nó được di chuyển trên các hệ thống, các phương tiện truyền thông.
·
Data Integrity Service(dịch vụ toàn vẹn dữ liệu): Cũng như sự tin cậy, sự toàn vẹn có
thể áp dụng với một dòng thông điệp, một thông điệp đơn hoặc các trường được chỉ ra trong
phạm vi một thông điệp. Dịch vụ này đảm bảo thông điệp mà bên nhận nhận được là hoàn
toàn trung thực với thông điệp được gửi đi từ bên gửi, tức là thông điệp không bị nhân bản,
không bị thay đổi, không bị sắp xếp lại, không bị phát lại khi nó di chuyển trên đường truyền.
Sự phá hoại dữ liệu cũng bị che chắn (covered) bởi dịch vụ này. Vì thế dịch vụ này hỗ trợ bảo
vệ mạng trước hai kiểu tấn công chủ động (active) phổ biến là thay đổi dòng thông điệp và
DoS. Khi một sự vi phạm về tính toàn vẹn của dữ liệu được phát hiện thì dịch vụ này sẽ lập
báo cáo về sự vi phạm đó, chuyển báo cáo này đến hệ thống để yêu cầu khôi phục lại dữ liệu.
·
Non-repudiation Service (dịch vụ “sự công nhận”): Sự công nhận ngăn chặn hiện
tượng người gửi hoặc người nhận từ chối một thông điệp đã được (họ) chuyển đi. Vì thế khi
một thông điệp được gửi, người nhận phải chứng tỏ - viện ra chứng cứ – được rằng thông điệp
là được nhận từ người gửi. Tương tự, khi một thông điệp được nhận, người gửi phải chứng tỏ
- viện ra chứng cứ – được rằng thông điệp là đã được gửi đến người nhận.
·
Availability Service (Dịch vụ “sẵn dùng”): Dịch vụ này có nhiệm vụ làm cho tài
nguyên của hệ thống trở thành có thể truy cập và có thể được dùng bởi các thực thể được phép
(authorized), trong một giới hạn nào đó. Tức là, một hệ thống được gọi là sẵn dùng nếu nó
cung cấp các dịch vụ – theo thiết kế hệ thống – bất cứ khi nào người sử dụng yêu cầu chúng.
Sự đa dạng của các loại tấn công hiện nay có thể làm cho các hệ thống sẵn dùng trở nên kém
tác dụng hoặc mất ý nghĩa.
Quan hệ giữa: Tấn công mạng và Dịch vụ bảo mật:
ATTACKS (Tấn công)
SERVICES
(dịch vụ)
Read of
message
content
Traffic
analysis
Masquerade
Peer entity
Authentication
Y
Data origin
Authentication
Y
Access Control
Y
Confidentiality
Traffic flow
Confidentiality
Y
Y
Replay
Modification
DoS
Data integrity
Y
Y
Nonrepudiation
I.2.5. Cài đặt các giải pháp bảo mật cho các mạng TCP/IP
Các hệ thống và các giao thức sau đây được sử dụng phổ biến để cung cấp nhiều cấp độ khác
nhau của các dịch vụ bảo mật trên mạng máy tính (TCP/IP): IP Filtering; Network Address
Translation (NAT); IP Security Architecture (IPSec); SOCKS; Secure Shell (SSH); Secure
Sockets Layer (SSL); Application proxies; Firewalls; Kerberos; các hệ thống xác thực từ xa
(AAA server);…
Hình vẽ sau cho thấy các dịch vụ/giải pháp bảo mật ở trên được cài đặt tại các tầng tương ứng
nào trên mô hình mạng TCP/IP.
Trong đó:
·
IP Filtering (Lọc IP)
·
NAT: Network Address Translation (Chuyển đổi địa chỉ mạng)
·
IPSec: IP Security Architecture (Kiến trúc IP an toàn)
·
Application proxies (Các Proxy ứng dụng)
·
Firewalls (Các Bức tường lửa)
·
Tunnel protocols (Các giao thức đường hầm: L2TP)
·
CHAP; PAP; MS-CHAP (Các giao thức xác thực)
·
S-MIME: Secure Multipurpose Internet Mail Extension: Là một cấu trúc bảo mật cấp
ứng dụng (Application-level), nó chỉ dùng để bảo vệ e-mail, thông qua mã hoá và chữ ký điện
tử. Nó dựa trên kỹ thuật mã hóa khóa công cộng và sử dụng thẻ chứng thực X.509 để xác
minh định danh của các đối tác truyền thông. S-MIME có thể được cài đặt trên các hệ thống
đầu cuối, nó không được sử dụng bởi các Router và Firewall.
·
SOCKS: Là một chuẩn cho các gateway circuit-level. Nó không cần proxy nhưng người
sử dụng có thể thực hiện kết nối đến Firewall trước, sau đó yêu cầu một kết nối thứ hai đến
server đích. Người sử dụng khởi tạo một ứng dụng client với địa chỉ IP của server đích. Thay
vì khởi tạo một session trực tiếp với server đích, client khởi tạo một session đến SOCKS
server trên Firewall. Sau đó SOCKS sẽ xác nhận tính hợp lệ của địa chỉ nguồn và user ID, nếu
hợp lệ sẽ cho phép user thiết lập kết nối hướng đến mạng không an toàn (non-secure)/bên
ngoài, và rồi tạo một session thứ hai.
·
SSH: Secure Shell: Có thể được sử dụng để kết nối an toàn giữa các hệ thống. Nó cho
phép mã hoá và nén các traffic được sinh ra bởi TELNET, FTP, POP3,… SSH thường sử dụng
nén trên các liên kết modem tốc độ chậm. SSH cũng cho phép người sử dụng chọn lựa
phương pháp mã hoá khi cài đặt nó. Các phần mềm client thường hỗ trợ cả 2 SSH là SSH1
(DES, 3DES, RC4), SSH2 (3DES, RC4). Người sử dụng và các hệ thống ở xa được xác thực
bởi password hoặc khoá public/private. SSH thiết lập một kết nối đơn từ client đến server, tất
cả traffic gửi qua kết nối này đều được mã hoá, và có thể được nén.
·
SSL: Secure Sockets Layer: Là một giao thức an toàn được phát triển bởi tập đoàn
Netscap Communications và RSA Data Security. Mục tiêu chính của giao thức SSL là cung
cấp một kênh riêng giữa các ứng dụng truyền thông cần có sự xác thực các đối tác truyền
thông và đảm bảo tính toàn vẹn và riêng tư của dữ liệu. SSL cung cấp một sự thay thế cho các
socket API chuẩn TCP/IP, trong đó có cài đặt các tính năng an toàn. Do đó, về lý thuyết nó có
thể chạy bất kỳ ứng dụng TCP/IP nào trong một môi trường an toàn mà không cần thay đổi
ứng dụng. SSL thường được cài đặt để hỗ trợ các traffic như HTTP, NNTP, Telnet, …
·
Kerberos: Dịch vụ xác thực mạng Kerberos v5 được đề nghị như là một giao thức
chuẩn và được mô tả trong RFC 1510. Dịch vụ Kerberos thường chạy trên các hệ thống riêng
của nó, trong một phạm vi an toàn. Người sử dụng cần sự xác nhận tính hợp lệ của chính họ
bởi Kerberos trước khi họ được phép kết nối đến các server khác trên mạng. Các nhận dạng
của server cũng được kiểm tra ngược lại bởi Kerberos. Hệ thống cho phép và xác thực
Kerberos là một hệ thống an toàn dựa trên mã hoá, nó cung cấp sự xác thực lẫn nhau giữa các
user và server trên môi trường mạng. Nhiệm vụ mà các hệ thống này đảm trách là:
Authentication(xác thực): Để ngăn chặn các yêu cầu/hồi đáp
(request/responses) không trung thực (fraudulent)/giả mạo giữa các user và
server cần có độ tin cậy cao.
Authorization(cấp phép): Có thể được cài đặt bổ sung dựa vào xác thực, cho
các dịch vụ mà nó muốn cung cấp một hệ thống cấp phép riêng của nó. Hệ
thống cấp phép có thể đảm trách việc xác thực tin cậy cho các user/client.
Permits(cho phép): là sự bổ sung cho các hệ thống tính toán, nó kết hợp cả an
toàn và tin cậy.
Hệ thống Kerberos được sử dụng cho mục đích xác thực là chính, nhưng nó cũng cung cấp
một sự mềm dẻo để thực hiện sự cấp phép.
Trong các hệ thống Kerberos, một client khi muốn kết nối với server dịch vụ của nó, thì trước
hết nó phải hỏi một “ticket” từ một thành phần thứ 3 - được tin cậy lẫn nhau, đó là KAS
(Kerberos Authentication Server). Ticket này có thể là một khoá riêng mà chỉ được hiểu bởi
dịch vụ và KAS, vì thế mà dịch vụ có thể tin chắc rằng thông tin trong Ticket là được sinh ra
bởi Kerberos. Client biết KAS như là người ủy nhiệm (danh nghĩa). Khóa riêng là được xác
thực và khóa chỉ được biết đến bởi user và KAS. Khi có được Ticket hợp lệ thì client mới có
thể truy cập vào server dịch vụ của nó.
·
Các giao thức xác thực truy cập từ xa (thường gọi là bộ ba chữ A - AAA:
Authentication: Xác thực – Authorization: Cấp phép – Accounting: Kiểm toán): Mô hình an
toàn 3 chữ A này được phát triển để giải quyết vấn đề an toàn truy cập từ xa. Authentication,
Authorization, Accounting trả lời lần lượt 3 câu hỏi: who, người sử dụng đó là ai; what,
người sử dụng đó được phép làm gì; when, ghi lại thời gian và các thông tin liên quan khác
khi người sử dụng thực hiện việc gì đó, và/hoặc khi họ đã hoàn thành (sau khi đã qua xác thực
và cấp phép). Hai dịch vụ/hệ thống xác thực từ xa được sử dụng hiện nay là RADIUS
(Remote Access Dial In User Service) và TACACS (Terminal Access Controller Access
Control System).
I.3.
Các kỹ thuật tấn công mạng TCP/IP
I.3.1. Phân loại tấn công:
Alice truyền thông điệp sang cho Bob. Darth là kẻ tấn công.
Ø Tấn công thụ động (passive attack): Loại tấn công này cố gắng nhận thông tin khi thông
tin đang được truyền từ người gửi sang người nhận. Nó không làm ảnh hưởng đến tài nguyên
của hệ thống.
·
Read of message contents (đọc nội dung của thông điệp): Darth đọc nội dung thông
điệp mà Alice gửi cho Bob.
Traffic analysis (phân tích lưu lượng): Darth quan sát các mẫu thông điệp từ Alice gửi sang
cho Bob.
Loại tấn công thụ động này khó phát hiện vì người gửi và người nhận không hề biết rằng có
một thành phần thứ 3 đang quan sát traffic của họ, và nó không làm thay đổi nội dung của
message. Vì thế nên tìm cách ngăn chặn (mã hoá trước khi truyền) hơn là phát hiện chúng.
Ø Tấn công chủ động (active attack): Loại này cố gắng tạo ra một vài thay đổi của dòng
dữ liệu hoặc làm ảnh hướng đến hoạt động của tài nguyên hệ thống (các server dịch vụ).
·
Masquerade (giả mạo): Thông điệp được gửi từ Darth gửi tới Bob. Bob nhận thông
điệp như cách mà Alice gửi đến anh ta.
Replay (“lặp lại”/”phát lại”): Darth bắt giữ (capture) thông điệp Alice gửi đến Bob, sau đó
Darth phát lại thông điệp – có thể đã bị sửa đổi – đến Bob.
Modification of message (thay đổi thông điệp): Darth thay đổi thông điệp gửi từ Alice sang
Bob.
·
Denail of service (DoS: Từ chối dịch vụ): Darth “phá vỡ” dịch vụ mà Server cung
cấp cho người sử dụng trên mạng.
Loại tấn công chủ động này có các đặc tính hầu như đối ngược với loại passive attack. Phát
hiện để ngăn chặn nó không phải là quá khó để thực hiện.
I.3.2. Các kỹ thuật tấn công cổ điển
Trong thực tế có nhiều kỹ thuật tấn công cổ điển như: Chia sẻ mở; Mật khẩu yếu; Thiếu sót
trong lập trình; Kỹ năng xã hội; Tràn Bộ đệm; Từ chối dịch vụ;… Trong phần này chúng tôi
chỉ trình bày một kỹ thuật mà đến nay hacker vẫn sử dụng để tấn công vào các mạng TCP/IP.
Ø Tấn công từ chối dịch vụ
Loại tấn công từ chối dịch vụ đơn giản chỉ là những hành động nhằm ngăn chặn khả năng truy
cập vào một hệ thống hoặc một ứng dụng của một người sử dụng hợp pháp (bị chính hệ thống
hoặc ứng dụng từ chối). Tấn công DoS có nhiều dạng khác nhau và có thể được phát động từ
một hoặc nhiều hệ thống. Khó có thể ngăn chặn hoặc khống chế hoàn toàn các tấn công DoS
nếu như không xác định được nguồn của nó.
Phần lớn các cuộc tấn công DoS thường có đặc điểm là, kẻ tấn công không cố gắng truy cập
đến hệ thống đích từ các địa chỉ giả mạo, nó thường điều chỉnh địa chỉ nguồn của gói tin để
che dấu vị trí thực của nó (giao thức IP có một sai sót trong lược đồ đánh địa chỉ của nó là
không kiểm tra địa chỉ nguồn khi một gói tin được tạo ra).
Tấn công DoS từ một hệ thống:
Loại tấn công DoS đầu tiên mà chúng ta đề cập là loại tấn công chỉ thực hiện từ một hệ thống,
tấn công vào một hệ thống khác và gây hỏng một thứ gì đó trên hệ thống đó.
Hình: SYN flood DoS attack
Kiểu tấn công DoS được áp dụng phổ biến nhất hiện nay là SYN flood (được gọi là tràn
SYN). Trong kiểu tấn công DoS này, hệ thống nguồn (hệ thống khởi tạo tấn công) sẽ gửi một
số lượng lớn các gói tin TCP “SYN” đến hệ thống đích (hệ thống bị tấn công) - các gói tin
SYN được sử dụng để khởi tạo một kết nối TCP. Khi phía đích nhận được gói “SYN”, nó sẽ
trả lời bằng một gói tin TCP “SYN ACK”, gói tin này cho biết đã chấp nhận tín hiệu SYN và
gửi lại thông tin thiết lập kết nối trở lại cho hệ thống gửi tín hiệu SYN. Hệ thống đích cũng
lưu thông tin kết nối vào “bộ đệm kết nối” để chờ giải quyết.
Đối với một kết nối TCP thông thường, hệ thống nguồn sẽ gửi trả gói tin TCP “ACK” sau khi
nhận được gói tin “SYN ACK”. Nhưng đối với tấn công DoS loại này, hệ thống nguồn sẽ bỏ
qua gói tin “SYN ACK” mà nó nhận được và tiếp tục gửi các gói tin “SYN” khác đến hệ
thống đích. Do đó “bộ đệm kết nối” của đích sẽ bị lấp đầy (bị tràn) và hệ thống đích không
thể nào giải quyết cho các yêu cầu từ các kết nối khác, buộc nó phải từ chối các kết nối này.
Đây chính là lý do mà ta gọi nó là tấn công từ chối dịch vụ.
Rõ ràng nếu có hàng loạt gói tin “SYN” được gửi đến từ một địa chỉ IP xác định được, thì có
thể dễ dàng xác định được hệ thống nguồn và dừng được cuộc tấn công. Nhưng nếu địa chỉ
nguồn là một địa chỉ không thể định tuyến đuợc, thì sẽ khó khăn hơn rất nhiều - địa chỉ nguồn
là địa chỉ bị che dấu.
Đã có một số giải pháp được đề xuất để bảo vệ các hệ thống trước các cuộc tấn công “SYN”.
Cách đơn giản nhất là đặt một “bộ định thời (timer)” cho tất cả các kết nối chờ giải quyết, bộ
định thời sẽ đi đến quyết định kết thúc các kết nối và giải phóng “bộ đệm kết nối” sau một
khoảng thời gian nhất định nào đó. Một số thiết bị mạng có khả năng nhận diện được các “cơn
lũ” tín hiệu SYN và vô hiệu hóa chúng. Nếu như cuộc tấn công được tổ chức từ nhiều địa chỉ
nguồn khác nhau thì khó có thể phán đoán được cuộc tấn công.
Tấn công DoS phân tán:
Các cuộc tấn công Dos phân tán (DDoS) là các cuộc tấn công DoS được thực hiện từ nhiều hệ
thống khác nhau. Các cuộc tấn công DDoS thường được điều khiển từ một hệ thống chính
duy nhất bởi một hacker duy nhất. Các cuộc tấn công này được thực hiện một cách khá đơn
giản: hacker gửi một gói tin “Ping” đến một địa chỉ quảng bá của một mạng lớn đồng thời đổi
địa chỉ nguồn để hướng tất cả các gói tin trả lời vào mục tiêu cần đánh phá. Cách tấn công
như vậy còn được gọi là Smurf. Nếu như mạng trung gian đó có nhiều host thì số lượng các
gói tin trả lời hướng đến hệ thống đích sẽ rất lớn và có thể làm cho hệ thống đích bị vô hiệu
hóa do quá tải.
Tấn công DDoS càng ngày càng tinh vi hơn. Các công cụ dùng để tấn công như là Trinoo,
Tribal Flood Network, Mstream và Stachedraht cho phép hacker có thể phối hợp nhiều cuộc
tấn công DoS từ các hệ thống khác nhau đến một hệ thống đích.
Hình: Minh họa tấn công smurf
I.3.3. Các kỹ thuật tấn công hiện nay
I.3.2.1. Nghe lén các mạng chuyển mạch (Sniffing Switch Networks)
Các bộ nghe lén (sniffer) được sử dụng bởi hacker để thu thập mật khẩu và thông tin hệ thống
liên quan của một host hoặc một network nào đó. Thường việc này chỉ thành công khi có một
host của mạng bên trong “hợp tác” với hacker.
Sniffer sẽ thu thập mật khẩu và các thông tin khác bằng cách đặt một card giao tiếp mạng
(network interface card – NIC) vào chế độ ngẫu nhiên (promiseuous mode). Nghĩa là NIC sẽ
thu thập tất cả các gói tin trên mạng chứ không chỉ là các gói tin có địa chỉ gửi đến NIC (địa
chỉ của hệ thống cài đặt sniffer). Các sniffer thường làm việc tốt với các mạng chuyển mạch
phục vụ chia sẻ thông tin.
Để nghe lén lưu lượng trong một môi trường chuyển mạch, hacker cần phải thực hiện một
trong 2 việc sau đây: Điều khiển switch sao cho thông tin qua switch bị hướng đến các sniffer.
Và buộc switch phải gửi tất cả các gói tin đi đến tất cả các cổng. Nếu như một trong hai điều
này được đáp ứng, sniffer sẽ “nghe” được lưu lượng mà nó quan tâm, và cung cấp cho hacker
những thông tin mà hacker muốn.
Ø Định hướng lại traffic (Redirecting traffic)
Thiết bị chuyển mạch (Switch) quy định đường đi cho thông tin đến các cổng dựa trên địa chỉ
MAC (Media Access Control) của khung tin (frame) Ethernet. Mỗi NIC có một địa chỉ MAC
duy nhất, và Switch hiểu được địa chỉ đó đại diện cho cổng nào. Do đó, khi một frame được
truyền đi với một địa chỉ đích MAC, Switch sẽ gửi frame đó đến cổng mà địa chỉ MAC đó đại
diện. Sau đây là một số phương pháp có thể được sử dụng để yêu cầu các thiết bị chuyển
mạch gửi lưu lượng đến Sniffer:
·
Đánh lừa ARP (ARP spoofing): ARP (Adress Resolution Protocol) là giao thức
phân giải địa chỉ, giao thức này được dùng để lấy địa chỉ MAC tương ứng với một địa chỉ IP
nào đó. Khi một hệ thống (nguồn) muốn giao dịch để trao đổi thông tin với hệ thống khác
(đích), trước hết nó phải gửi một thông điệp yêu cầu đến ARP để tìm MAC tương ứng với địa
chỉ IP đích. Hệ thống đích sẽ đáp trả địa chỉ MAC, tương ứng với địa chỉ IP, cho yêu cầu ARP
đó.Sau đó hệ thống nguồn (bên gửi tin) sẽ sử dụng địa chỉ MAC này để gửi thông tin đến
đích.
Nếu như thông điệp yêu cầu tìm MAC bị bắt giữ bởi sniffer, sniffer sẽ đáp trả cho yêu cầu
ARP trước hệ thống đích (mà nguồn mong muốn) với địa chỉ MAC của nó (của sniffer). Tất
nhiên sau đó hệ thống gửi tin sau đó sẽ gửi trao đổi thông tin vớisniffer (chứ không phải đích
mà nó mong muốn).
Để đánh lừa ARP thành công, sniffer phải có khả năng chuyển tiếp thông tin đến địa chỉ mà
hệ thống gửi cần gửi đến (đích mà nguồn mong muốn). Nếu không làm được điều này thì
sniffer phải thực hiện một cuộc tấn công DoS.
·
Tạo bản sao địa chỉ MAC: Một cách nữa để thuyết phục Switch gửi thông tin qua
nó đến sniffer là: hacker phải thay đổi địa chỉ MAC của sniffer cho giống với địa chỉ MAC
của hệ thống khác trong hệ thống mạng con cục bộ (local subnet).
·
Đánh lừa DNS (DNS spoofing): Một cách tương tự với hai cách trên, để buộc
switch phải chuyển tất cả các gói tin đến sniffer là: đánh lừa hệ thống gửi tin để hệ thống đó
gửi tin đến sniffer bằng cách sử dụng địa chỉ MAC thật của sniffer. Để thực hiện được điều
này, sniffer phải “thuyết phục” hệ thống gửi tin sao cho nó phải gửi ARP đến địa chỉ IP của
sniffer. Cách làm này có thể thành công dựa vào việc đánh lừa DNS.
Trong kiểu tấn công đánh lừa DNS, sniffer gửi các tin trả lời cho các yêu cầu DNS của hệ
thống gửi tin. Các tin đáp trả này cung cấp địa chỉ IP của sniffer thay vì địa chỉ IP của hệ
thống mà hệ thống gửi tin yêu cầu. Và sau đó, hệ thống gửi tin sẽ gửi tất cả tin đến sniffer.
Sau đó sniffer sẽ phải chuyển tiếp các gói tin này đến hệ thống đích thực sự. Kiểu tấn công
này còn được gọi là theo kiểu “đánh chặn”.
Để tấn công kiểu này thành công, sniffer phải có khả năng nhận biết tất cả các yêu cầu DNS
và trả lời cho chúng trước khi máy chủ DNS trả lời. Như vậy sniffer phải nằm trên tuyến
mạng giữa hệ thống gửi tin và máy chủ DNS nếu như sniffer không nằm trên mạng con cục
bộ của hệ thống gửi tin.
Ø Gửi mọi thông tin đến tất cả các cổng
Thay vì đánh lừa ARP, đánh lừa DNS hay là nhân bản địa chỉ MAC, hacker có thể làm cho
switch hoạt động như một hub. Biết rằng, mỗi Switch sử dụng một lượng bộ nhớ cho việc lưu
giữ các ánh xạ giữa địa chỉ MAC và các cổng vật lý. Bộ nhớ này có dung lượng giới hạn, nên
nếu nó bị đầy thì Switch sẽ không “mở” được. Tức là, Switch sẽ dừng lại việc gửi thông tin
đến các địa chỉ MAC nào đó tương ứng với các cổng cụ thể nào đó, thay vào đó nó sẽ gửi đến
tất cả các cổng.
Lúc này switch hoạt động như một thiết bị chia sẻ đường truyền, tức là nó như một Hub. Nhờ
đó mà sniffer có thể thực hiện chức năng của nó. Để khởi phát cuộc tấn công dạng này, hacker
phải trực tiếp tác động tới Switch.
Chú ý: Với các cuộc tấn công đánh lừa ARP; Nhân bản địa chỉ MAC; Đánh lừa DNS: Hacker
phải kết nối trực tiếp với Switch mà nó tấn công. Điều này có nghĩa là, kiểu tấn công đánh cắp
thông tin cầu hacker phải ở trên Switch cục bộ. Đầu tiên hacker thâm nhập vào hệ thống bằng
cách phá vỡ một điểm dễ bị tấn công và sau đó cài đặt phần mềm sniffing để thực hiện việc
“ngửi” thông tin. Trong trường hợp này nếu hacker là người trong tổ chức cần hack, một nhân
viện của tổ chức chẳng hạn, hacker sẽ sử dụng quyền truy cập thực của nó để có thể truy cập
đến Switch.
I.3.2.2. Đánh lừa địa chỉ IP (IP spoofing)
Như đã biết, địa chỉ IP trong các gói tin IP là không được xác thực. Do đó hacker có thể thay
đổi địa chỉ nguồn của gói tin và làm cho gói tin có vẻ như được gửi đến từ một địa chỉ nào đó
khác. Vấn đề ở đây chính là những gói tin phản hồi (chẳng hạn như gói tin SYN ACK trong
một kết nối TCP) sẽ không được gửi về cho hệ thống gửi tin. Do đó việc cố gắng đánh lừa địa
chỉ IP để thiếp lập một kết nối TCP sẽ rất khó khăn. Thêm nữa, header của TCP còn chứa một
chỉ số được dùng để nhận biết các gói tin. Chuỗi số tuần tự khởi tạo (Initial sequence number
– ISN) dành cho mỗi kết nối được chọn (giải mã) một cách ngẫu nhiên.
Chi tiết về tấn công đánh lừa địa chỉ IP (xem hình 1.6): Đầu tiên hacker xác định mục tiêu
tấn công. Khi đã xác định được mục tiêu, nó sẽ xác định số INS tiếp theo sẽ được dùng, bằng
cách thực hiện một chuỗi các kết nối thực đến mục tiêu và ghi nhận các số ISN được trả về.
Tuy nhiên, sẽ có một số bất lợi cho hacker vì các kết nối thực này sẽ làm lộ địa chỉ IP thực
của nó.
Một khi ISN tiếp theo đã được xác lập, hacker sẽ gửi gói tin TCP “SYN” đến hệ thống đích
với một địa chỉ nguồn IP giả mạo. Hệ thống đích sẽ trả lời bằng gói tin TCP “SYN ACK” đến
địa chỉ IP nguồn giả mạo đó. Như vậy hacker sẽ không thấy được gói tin đáp trả. Gói tin TCP
“SYN ACK” có chứa số ISN từ hệ thống đích. Để hoàn thành việc thiết lập một kết nối thì
hacker phải xác định được số ISN ở gói tin TCP SYN cuối cùng. Nó đoán số ISN dựa trên
tính tăng dần của chuỗi số ISN và gửi đi một gói tin TCP ACK giả từ địa chỉ IP giả mạo trong
đó có cả số ISN mà nó biết.
Hình: Mô tả tấn công đánh lừa IP
Sau khi tất cả những việc đó được thực hiện, hacker sẽ ngừng kết nối thực đến hệ
thống đích. Lúc này nó có khả năng gửi lệnh và thông tin đến hệ thống đích nhưng hắn ta
không thể biết được hệ thống đích đáp trả các lệnh và thông tin đó như thế nào.
- Xem thêm -