Download as pdf or txt
Download as pdf or txt
You are on page 1of 77

1

MỞ ĐẦU

Với sự phát triển nhanh của mạng Internet, bảo mật thông tin trở lên vô cùng
cấp bách để có được những thông tin giá trị và tin cậy. Người quản lý nhận thấy việc
đầu tư cho an ninh không chỉ là lợi lớn mà còn là rất cần thiết. Các công ty nhận ra sự
cần thiết của việc tạo ra và tuân theo chính sách bảo mật thông tin, bởi vậy, người IT
chuyên nghiệp luôn luôn bị thách thức để bảo vệ mạng của họ với firewall và tạo mạng
riêng ảo VPN để cung cấp sự an toàn cho các giao dịch được mã hóa qua hạ tầng
Internet công cộng dễ bị tấn công.
Firewall đã trở thành một trong những công nghệ đầu tiên bảo vệ mạng và
chống lại truy nhập trái phép. Kế hoạch bảo mật yêu cầu sự kết hợp hài hòa của con
người, xử lý, và công nghệ để giảm rủi ro. Và firewall cũng là một công cụ bảo mật giá
trị để thực hiện nhiệm vụ này. Ngày nay, khi thiết kế và xây dựng mạng sử dụng
firewall là tất yếu cho nhiều mô hình ở giai đoạn cuối. Nhận ra điều này, nhiều công ty
bảo mật đã phát triển và tiếp tục cải thiện các sản phẩm firewall.
Với mục tiêu chính là tìm hiểu công nghệ phòng chống tấn công Sql injection và Dos,
giải thuật Boyer-Moore, Cusum để phát hiện và ngăn chặn tấn công. Đề tài đặt ra một
số mục tiêu, xác định phạm vi, bố cục của luận văn như sau:
Mục tiêu của đề tài
Xây dựng một firewall có khả năng phát hiện và giảm thiểu các tấn công Sql
Injection và Dos vào webserver. Đồng thời cung cấp một giao diện quản lý người dùng
trực quan thân thiện, giúp hệ thống vận hành tốt và không bị trục trặc.
Phạm vi nghiên cứu của đề tài

Phạm vi nghiên cứu của đề tài thuộc lĩnh vực bảo mật mạng máy tính, chỉ áp
dụng để phát hiện sql injection và Dos. Các khả năng có thể xử lý được:

- Phát hiện và giảm thiểu những cuộc tấn công sql injection đơn giản.
- Phát hiện một số kiểu tấn công DOS.

- Không ngăn chặn được triệt để tấn công DOS.

Kết quả dự kiến đạt đƣợc


2

- Xây dựng công cụ hỗ trợ cho việc phát hiện và giảm thiểu tấn công sql injection và
Dos
- Thiết kế và cài đặt hệ thống với các thành phần và chức năng đầy đủ trong mô hình
hệ thống tổng quát.
- Áp dụng thử nghiệm tại phòng máy Đại học Lạc Hồng.

Bố cục của luận văn


Bố cục của luận văn bao gồm phần mở đầu, phần kết luận và bốn chương nội dung
được tổ chức như sau:
Chƣơng 1: Tổng quan về an ninh mạng: giới thiệu về một số virus nguy hiểm và các
phương thức lừa đảo tấn công trên mạng.
Chƣơng 2: Cơ sở lý thuyết: nêu chi tiết về các khái niệm firewall, các cách tấn công
và phòng chống với hình thức tấn công bằng câu lệnh SQL Injection và DOS
Chƣơng 3: Các phƣơng pháp chặn bắt và tìm kiếm Packet: miêu tả các kỹ thuật
chặn bắt và phân tích gói tin từ đó xây dựng chương trình phát hiện và ngăn chặn các
gói tin hoặc IP có dấu hiệu bất thường.
Chƣơng 4: Thiết kế và xây dựng chƣơng trình
Chƣơng 5: Kết luận và hƣớng phát triển
3

CHƢƠNG 1. TỔNG QUAN VỀ AN NINH MẠNG


1.1 Hiện trạng về an ninh mạng
Trong những năm gần đây với sự phát triễn mạnh mẽ của internet đã đem lại cho
người dùng rất nhiều lợi ích. Ngoài lợi ích thì cũng có rất nhiều vấn đề về an ninh
mạng xảy ra trong năm 2011.
Theo thống kê từ hệ thống giám sát của BKAV thì có 64,2 triệu lượt máy tính tại
Việt Nam bị nhiễm virus là tổng kết năm 2011 từ Hệ thống giám sát virus của Bkav.
Trung bình một ngày đã có hơn 175 nghìn máy tính bị nhiễm virus.
Năm 2011, đã có 38.961 dòng virus xuất hiện mới, lây lan nhiều nhất là virus
W32.Sality.PE. Virus này đã lây nhiễm trên 4,2 triệu lượt máy tính.
Danh sách 15 virus lây lan nhiều nhất trong năm 2011:

Hình 1.1 Danh sách virus 2011


4

Hình 1.2 Số lượng website bị tấn công

Cũng trong năm 2011, đã có 2.245 website của các cơ quan, doanh nghiệp tại Việt
Nam bị tấn công. Trung bình mỗi tháng có 187 website bị tấn công.

 Mạng lƣới "nằm vùng" nguy hiểm W32.Sality.PE

Hơn 4,2 triệu lượt máy tính tại Việt Nam đã bị nhiễm virus siêu đa hình W32.Sality.PE
trong năm 2011, như vậy trung bình mỗi ngày có thêm 11.000 máy tính bị nhiễm loại
virus này. Virus Sality đã len lỏi vào mọi ngóc ngách trong các hệ thống mạng máy
tính tại Việt Nam. Trong thực tế, khi kiểm tra bất kỳ hệ thống nào, các chuyên gia của
Bkav hầu như đều phát hiện sự tồn tại của Sality. Không chỉ là virus lây lan nhiều nhất
năm 2011, đây thực sự là quả "bom nổ chậm", sẵn sàng phát nổ gây ảnh hưởng đến
hàng triệu máy tính trong thời gian tới.
Mặc dù lây nhiễm hàng triệu máy tính, tuy nhiên trong suốt một thời gian dài theo dõi
dòng virus này từ năm 2009 đến nay, virus Sality vẫn đang chỉ "nằm vùng" mà chưa
kích hoạt các tính năng phá hoại như ăn cắp thông tin hay phá hủy dữ liệu. Đây thực sự
là một điều khó lý giải. Rất có thể có một tổ chức, thậm chí là một quốc gia đứng đằng
sau mạng lưới virus này và chưa rõ ý đồ thực sự của họ là gì.
Lý do khiến W32.Sality.PE có thể lây lan tới hàng triệu máy tính là vì virus này có khả
năng sử dụng các giải thuật di truyền để tự động lai tạo, sinh ra các thế hệ virus "con
cháu" F1, F2… Càng lây nhiễm lâu trên máy tính, virus càng sinh ra nhiều biến thể với
5

độ phức tạp càng cao, khiến cho khả năng nhận dạng và bóc lớp của các phần mềm diệt
virus càng khó khăn. Chính vì thế W32.Sality.PE có thể qua mặt được hầu như tất cả
các phần mềm diệt virus trên thế giới.
 Lừa đảo trực tuyến gia tăng trên mạng xã hội
Các chuyên gia đã nhận định 2011 sẽ là năm xuất hiện nhiều cuộc tấn công lừa
đảo trên mạng. Điều này thực tế đã xảy ra, trung bình mỗi tháng Bkav nhận được hơn
30 báo cáo về lừa đảo qua Yahoo Messenger. Trong mỗi vụ, số nạn nhân có thể lên tới
hàng chục người. Mặc dù đã được cảnh báo nhiều lần nhưng do sự nhẹ dạ của người sử
dụng mà các vụ cướp nick hoặc lừa tiền vẫn diễn ra liên tiếp.
Không chỉ Yahoo mà giờ đây Facebook, mạng xã hội lớn nhất thế giới đã trở thành
phương tiện để tin tặc lợi dụng.
 Botnet và những cuộc tấn công mạng liên tiếp
Năm 2011 là năm của các cuộc tấn công mạng. Liên tiếp xảy ra các cuộc tấn công
với các hình thức khác nhau vào hệ thống của các tổ chức, doanh nghiệp tại Việt Nam.
Có những cuộc tấn công xâm nhập trái phép phá hoại cơ sở dữ liệu hoặc deface các
website. Cũng có những cuộc tấn công DDoS làm tê liệt hệ thống trong thời gian dài.
Tấn công cướp tên miền của các doanh nghiệp cũng đã diễn ra liên tiếp. Nguy hiểm
hơn, đã xuất hiện nhiều cuộc tấn công âm thầm, cài đặt các virus gián điệp đánh cắp tài
liệu của các cơ quan quan trọng.
Các vụ tấn công xảy ra phần lớn có nguyên nhân từ nhận thức của lãnh đạo các cơ
quan, doanh nghiệp về tầm quan trọng của an ninh mạng, dẫn đến sự đầu tư dàn trải,
thiếu một giải pháp tổng thể cho an toàn an ninh hệ thống.
Đáng chú ý trong năm 2011 là sự việc hơn 85.000 máy tính tại Việt Nam bị cài virus
Ramnit để lấy cắp dữ liệu quan trọng. Điều này cho thấy các cuộc tấn công còn có thể
gây ảnh hưởng đến an ninh quốc gia. Không chỉ tại Việt Nam, hệ thống botnet này còn
được hacker điều khiển thông qua nhiều máy chủ đặt ở Mỹ, Nga, Đức và Trung Quốc
để lấy cắp thông tin trên toàn cầu. Đây là tình trạng phổ biến trên thế giới trong năm
2011.

1.2 Cách giải quyết vấn đề


6

 Để chống lại các cuộc tấn công, nhất thiết cần áp dụng Hệ thống quản lý an ninh
thông tin ISO 27001. Quy trình ISO sẽ bắt buộc các website phải được đánh giá
độc lập về an ninh trước khi đưa vào vận hành, hạ tầng mạng phải được thiết kế
tổng thể ngay từ khi xây dựng. Ngoài ra, để bảo vệ các hệ thống website, chống
bị đánh cắp dữ liệu, việc áp dụng một giải pháp tổng thể phòng chống virus là
điều tối quan trọng. Khi thực hiện được tất cả các việc này, hệ thống mạng mới
có thể được đảm bảo ở mức cao nhất.
 Sử dụng firewall phần cứng và phần mềm.
7

CHƢƠNG 2. CƠ SỞ LÝ THUYẾT
2.1 Khái niệm về tƣờng lửa ( firewall )
Thuật ngữ Firewall [4] có nguồn gốc từ một kỹ thuật thiết kế trong xây dựng để
ngăn chặn, hạn chế hoả hoạn. Trong công nghệ mạng thông tin, Firewall là một kỹ
thuật được tích hợp vào hệ thống mạng để chống sự truy cập trái phép, nhằm bảo vệ
các nguồn thông tin nội bộ và hạn chế sự xâm nhập không mong muốn vào hệ thống.
Cũng có thể hiểu Firewall là một cơ chế (mechanism) để bảo vệ mạng tin tưởng
(Trusted network) khỏi các mạng không tin tưởng (Untrusted network).
Internet Firewall là một thiết bị (Phần cứng + Phần mềm) giữa mạng của một tổ
chức, một công ty, một quốc gia (Intranet) và Internet. Nó thực hiện vai trò bảo mật các
thông tin Intranet từ thế giới Internet bên ngoài.
2.2 Phân loại và đặc điểm Firewall
2.2.1. Firewall cứng
Là những firewall được tích hợp trên Router.

Hình 2.1: Minh họa Firewall cứng


 Đặc điểm của Firewall cứng:
 Không được linh hoạt như Firewall mềm: (Không thể thêm chức năng,
thêm quy tắc như firewall mềm)
 Firewall cứng hoạt động ở tầng thấp hơn Firewall mềm (Tầng Network
và tầng Transport).
 Firewall cứng không thể kiểm tra được nột dung của gói tin.
Ví dụ :Firewall cứng: NAT (Network Address Translate).
2.2.2. Firewall mềm
Là những Firewall được cài đặt trên Server.
8

Hình 2.2: Minh họa Firewall mềm


 Đặc điểm của Firewall mềm:
 Tính linh hoạt cao: Có thể thêm, bớt các quy tắc, các chức năng.
 Firewall mềm hoạt động ở tầng cao hơn Firewall cứng (tầng ứng dụng).
 Firewal mềm có thể kiểm tra được nội dung của gói tin (thông qua các từ khóa).
Ví dụ về Firewall mềm: Zone Alarm, Norton Firewall, Internet security acceleration …
2.2.3. Vì sao cần Firewall

Hình 2.3: Các luồng trao đổi dữ liệu từ PC ra Internet và ngược lại khi có Firewall
và không có Firewall
Nếu máy tính của bạn không được bảo vệ, khi bạn kết nối Internet, tất cả các
giao thông ra vào mạng đều được cho phép, vì thế hacker, trojan, virus có thể truy cập
và lấy cắp thông tin cá nhân cuả bạn trên máy tính. Chúng có thể cài đặt các đoạn mã
để tấn công file dữ liệu trên máy tính. Đồng thời chúng còn sử dụng máy tính của bạn
để tấn công một máy tính của gia đình hoặc doanh nghiệp khác kết nối Internet. Một
firewall có thể giúp bạn thoát khỏi gói tin hiểm độc trước khi nó đến.
2.2.4. Chức năng
Chức năng chính của Firewall là kiểm soát luồng thông tin từ giữa Intranet và Internet.
Thiết lập cơ chế điều khiển dòng thông tin giữa mạng bên trong (Intranet) và mạng
Internet. Cụ thể là:
 Cho phép hoặc cấm những dịch vụ truy nhập ra ngoài (từ Intranet ra Internet).
 Cho phép hoặc cấm những dịch vụ phép truy nhập vào trong (từ Internet vào
Intranet).
9

 Theo dõi luồng dữ liệu mạng giữa Internet và Intranet.


 Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập.
 Kiểm soát người sử dụng và việc truy nhập của người sử dụng.
 Kiểm soát nội dung thông tin lưu chuyển trên mạng.
2.2.5. Nhiệm vụ Firewall
Nhiệm vụ cơ bản của FireWall là bảo vệ những vấn đề sau :
 Dữ liệu : Những thông tin cần được bảo vệ do những yêu cầu sau:
 Bảo mât.
 Tính toàn vẹn.
 Tính kịp thời.
 Tài nguyên hệ thống.
 Danh tiếng của công ty sở hữu các thông tin cần bảo vệ.
2.2.6. Những hạn chế của firewall
Firewall không đủ thông minh như con người để có thể đọc hiểu từng loại thông
tin và phân tích nội dung tốt hay xấu của nó. Firewall chỉ có thể ngăn chặn sự xâm
nhập của những nguồn thông tin không mong muốn nhưng phải xác định rõ các thông
số địa chỉ.
Firewall không thể ngăn chặn một cuộc tấn công nếu cuộc tấn công này không
"đi qua" nó. Một cách cụ thể, firewall không thể chống lại một cuộc tấn công từ một
đường dial-up, hoặc sự dò rỉ thông tin do dữ liệu bị sao chép bất hợp pháp lên đĩa
mềm.
Firewall cũng không thể chống lại các cuộc tấn công bằng dữ liệu (data-driven
attack). Khi có một số chương trình được chuyển theo thư điện tử, vượt qua firewall
vào trong mạng được bảo vệ và bắt đầu hoạt động ở đây.
Một ví dụ là các virus máy tính. Firewall không thể làm nhiệm vụ rà quét virus
trên các dữ liệu được chuyển qua nó, do tốc độ làm việc, sự xuất hiện liên tục của các
virus mới và do có rất nhiều cách để mã hóa dữ liệu, thoát khỏi khả năng kiểm soát của
firewall.
 Tuy nhiên, Firewall vẫn là giải pháp hữu hiệu được áp dụng rộng rãi.
2.2.7. Các thành phần của Firewall và nguyên lý hoạt động
10

Firewall chuẩn bao gồm một hay nhiều các thành phần sau đây:
 Bộ lọc packet (packet-filtering router).
 Cổng ứng dụng (application-level gateway hay proxy server).
 Cổng mạch (circuite level gateway).
2.2.7.1. Bộ lọc gói (Packet Filtering)
a. Nguyên lý hoạt động.
Khi nói đến việc lưu thông dữ liệu giữa các mạng với nhau thông qua Firewall
thì điều đó có nghĩa rằng Firewall hoạt động chặt chẽ với giao thức TCP/IP. Vì giao
thức này làm việc theo thuật toán chia nhỏ các dữ liệu nhận được từ các ứng dụng trên
mạng, hay nói chính xác hơn là các dịch vụ chạy trên các giao thức (Telnet, SMTP,
DNS, SMNP, NFS...) thành các gói dữ liệu (data packets) rồi gán cho các packet này
những địa chỉ để có thể nhận dạng, tái lập lại ở đích cần gửi đến, do đó các loại
Firewall cũng liên quan rất nhiều đến các packet và những con số địa chỉ của chúng.
Bộ lọc packet cho phép hay từ chối mỗi packet mà nó nhận được. Nó kiểm tra
toàn bộ đoạn dữ liệu để quyết định xem đoạn dữ liệu đó có thoả mãn một trong số các
luật lệ của lọc packet hay không. Các luật lệ lọc packet này là dựa trên các thông tin ở
đầu mỗi packet (packet header), dùng để cho phép truyền các packet đó ở trên mạng.
Đó là:
 Địa chỉ IP nơi xuất phát ( IP Source address).
 Địa chỉ IP nơi nhận (IP Destination address).
 Những thủ tục truyền tin (TCP, UDP, ICMP, IP tunnel).
 Cổng TCP/UDP nơi xuất phát (TCP/UDP source port).
 Cổng TCP/UDP nơi nhận (TCP/UDP destination port).
 Dạng thông báo ICMP ( ICMP message type).
 Giao diện packet đến ( incomming interface of packet).
 Giao diện packet đi ( outcomming interface of packet).
Nếu luật lệ lọc packet được thoả mãn thì packet được chuyển qua firewall. Nếu
không packet sẽ bị bỏ đi. Nhờ vậy mà Firewall có thể ngăn cản được các kết nối vào
các máy chủ hoặc mạng nào đó được xác định, hoặc khoá việc truy cập vào hệ thống
11

mạng nội bộ từ những địa chỉ không cho phép. Hơn nữa, việc kiểm soát các cổng làm
cho Firewall có khả năng chỉ cho phép một số loại kết nối nhất định vào các loại máy
chủ nào đó, hoặc chỉ có những dịch vụ nào đó (Telnet, SMTP, FTP...) được phép mới
chạy được trên hệ thống mạng cục bộ.
b. Ƣu điểm và hạn chế
 Ƣu điểm
Đa số các hệ thống firewall đều sử dụng bộ lọc packet. Một trong những ưu
điểm của phương pháp dùng bộ lọc packet là chi phí thấp vì cơ chế lọc packet đã được
bao gồm trong mỗi phần mềm router. Ngoài ra, bộ lọc packet là trong suốt đối với
người sử dụng và các ứng dụng, vì vậy nó không yêu cầu sự huấn luyện đặc biệt nào
cả.
 Hạn chế
Việc định nghĩa các chế độ lọc packet là một việc khá phức tạp; đòi hỏi ngời
quản trị mạng cần có hiểu biết chi tiết về các dịch vụ Internet, các dạng packet header,
và các giá trị cụ thể có thể nhận trên mỗi trường. Khi đòi hỏi về sự lọc càng lớn, các
luật lệ về lọc càng trở nên dài và phức tạp, rất khó để quản lý và điều khiển. Do làm
việc dựa trên header của các packet, rõ ràng là bộ lọc packet không kiểm soát được nội
dung thông tin của packet. Các packet chuyển qua vẫn có thể mang theo những hành
động với ý đồ ăn cắp thông tin hay phá hoại của kẻ xấu.
2.2.7.2. Cổng ứng dụng (Application-Level Gateway)
a.Nguyên lý hoạt động
Đây là một loại Firewall được thiết kế để tăng cường chức năng kiểm soát các
loại dịch vụ, giao thức được cho phép truy cập vào hệ thống mạng. Cơ chế hoạt động
của nó dựa trên cách thức gọi là Proxy service. Proxy service là các bộ code đặc biệt
cài đặt trên gateway cho từng ứng dụng. Nếu người quản trị mạng không cài đặt proxy
code cho một ứng dụng nào đó, dịch vụ tương ứng sẽ không được cung cấp và do đó
không thể chuyển thông tin qua firewall. Ngoài ra, proxy code có thể được định cấu
hình để hỗ trợ chỉ một số đặc điểm trong ứng dụng mà người quản trị mạng cho là chấp
nhận được trong khi từ chối những đặc điểm khác.
12

Một cổng ứng dụng thường được coi như là một pháo đài (bastion host), bởi vì
nó được thiết kế đặt biệt để chống lại sự tấn công từ bên ngoài. Những biện pháp đảm
bảo an ninh của một bastion host là bastion host luôn chạy các version an toàn (secure
version) của các phần mềm hệ thống (Operating system). Các version an toàn này được
thiết kế chuyên cho mục đích chống lại sự tấn công vào Operating System, cũng như là
đảm bảo sự tích hợp firewall. Chỉ những dịch vụ mà người quản trị mạng cho là cần
thiết mới được cài đặt trên bastion host, đơn giản chỉ vì nếu một dịch vụ không được
cài đặt, nó không thể bị tấn công. Thông thường, chỉ một số giới hạn các ứng dụng cho
các dịch vụ Telnet, DNS, FTP, SMTP và xác thực user là được cài đặt trên bastion
host. Bastion host có thể yêu cầu nhiều mức độ xác thực khác nhau, ví dụ như user
password hay smart card. Mỗi proxy được đặt cấu hình để cho phép truy nhập chỉ một
sồ các máy chủ nhất định. Điều này có nghĩa rằng bộ lệnh và đặc điểm thiết lập cho
mỗi proxy chỉ đúng với một số máy chủ trên toàn hệ thống. Mỗi proxy duy trì một
quyển nhật ký ghi chép lại toàn bộ chi tiết của giao thông qua nó, mỗi sự kết nối,
khoảng thời gian kết nối. Nhật ký này rất có ích trong việc tìm theo dấu vết hay ngăn
chặn kẻ phá hoại. Mỗi proxy đều độc lập với các proxies khác trên bastion host. Điều
này cho phép dễ dàng quá trình cài đặt một proxy mới, hay tháo gỡ môt proxy đang có
vấn để.
b. Ƣu điểm và hạn chế
 Ƣu điểm
Cho phép người quản trị mạng hoàn toàn điều khiển được từng dịch vụ trên
mạng, bởi vì ứng dụng proxy hạn chế bộ lệnh và quyết định những máy chủ nào có thể
truy nhập được bởi các dịch vụ. Cho phép người quản trị mạng hoàn toàn điều khiển
được những dịch vụ nào cho phép, bởi vì sự vắng mặt của các proxy cho các dịch vụ
tương ứng có nghĩa là các dịch vụ ấy bị khoá. Cổng ứng dụng cho phép kiểm tra độ xác
thực rất tốt, và nó có nhật ký ghi chép lại thông tin về truy nhập hệ thống. Luật lệ lọc
filltering cho cổng ứng dụng là dễ dàng cấu hình và kiểm tra hơn so với bộ lọc packet.
 Hạn chế
13

Yêu cầu các users thay đổi thao tác, hoặc thay đổi phần mềm đã cài đặt trên máy
client cho truy nhập vào các dịch vụ proxy. Chẳng hạn, Telnet truy nhập qua cổng ứng
dụng đòi hỏi hai bước để nối với máy chủ chứ không phải là một bước thôi. Tuy nhiên,
cũng đã có một số phần mềm client cho phép ứng dụng trên cổng ứng dụng là trong
suốt, bằng cách cho phép user chỉ ra máy đích chứ không phải cổng ứng dụng trên lệnh
Telnet.
2.2.7.3. Cổng vòng (Circuit-Level Gateway)
Cổng vòng là một chức năng đặc biệt có thể thực hiện được bởi một cổng ứng
dụng. Cổng vòng đơn giản chỉ chuyển tiếp (relay) các kết nối TCP mà không thực hiện
bất kỳ một hành động xử lý hay lọc packet nào.
Hình dưới đây minh hoạ một hành động sử dụng nối telnet qua cổng vòng. Cổng
vòng đơn giản chuyển tiếp kết nối telnet qua firewall mà không thực hiện một sự kiểm
tra, lọc hay điều khiển các thủ tục Telnet nào.Cổng vòng làm việc như một sợi dây,sao
chép các byte giữa kết nối bên trong (inside connection) và các kết nối bên ngoài
(outside connection). Tuy nhiên, vì sự kết nối này xuất hiện từ hệ thống firewall, nó
che dấu thông tin về mạng nội bộ.

out in

out in

out in
outside host Inside host
Circuit-level Gateway

Hình 2.4: Minh họa nối Telnet qua cổng vòng đơn giản
Cổng vòng thường được sử dụng cho những kết nối ra ngoài, nơi mà các quản
trị mạng thật sự tin tưởng những người dùng bên trong. Ưu điểm lớn nhất là một
bastion host có thể được cấu hình như là một hỗn hợp cung cấp. Cổng ứng dụng cho
những kết nối đến, và cổng vòng cho các kết nối đi. Điều này làm cho hệ thống bức
tường lửa dễ dàng sử dụng cho những người trong mạng nội bộ muốn trực tiếp truy
nhập tới các dịch vụ Internet, trong khi vẫn cung cấp chức năng bức tường lửa để bảo
vệ mạng nội bộ từ những sự tấn công bên ngoài.
14

2.2.8. Kiến trúc cơ bản của Firewall


2.2.8.1. Dual homed host
Dual–homed Host là hình thức xuất hiện đầu tiên trong cuộc đấu để bảo vệ
mạng nội bộ. Dual–homed Host là một máy tính có hai giao tiếp mạng một nối với
mạng cục bộ và một nối với mạng ngoài (Internet).
Hệ điều hành của Dual–homed Host được sửa đổi để chức năng chuyển các gói
tin (Packet forwarding) giữa hai giao tiếp mạng này không hoạt động. Để làm việc
được với một máy trên Internet, người dùng ở mạng cục bộ trước hết phải login vào
Dual–homed Host, và từ đó bắt đầu phiên làm việc.

INTERNET

- Proxy server
Firewall - DNS server
Disable - Mail server
routing
function
Dual-homed - Web server
...
Host

Internal
Network

...

Hình 2.5: Sơ đồ kiến trúc Dual–homed Host


 Ƣu điểm của Dual–homed Host:
 Cài đặt dễ dàng, không yêu cầu phần cứng hoặc phần mềm đặc biệt.
 Dual–homed Host chỉ yêu cầu cấm khả năng chuyển các gói tin, do vậy, thông
thường trên các hệ Unix, chỉ cần cấu hình và dịch lại nhân (Kernel) của hệ điều
hành là đủ.
 Nhƣợc điểm của Dual–homed Host:
15

 Không đáp ứng được những yêu cầu bảo mật ngày càng phức tạp, cũng như
những hệ phần mềm mới được tung ra thị trường.
 Không có khả năng chống đỡ những cuộc tấn công nhằm vào chính bản thân nó,
và khi Dual–homed Host đó bị đột nhập, nó sẽ trở thành đầu cầu lý tưởng để tấn
công vào mạng nội bộ.
 Đánh giá về kiến trúc Dual–homed Host:
Để cung cấp dịch vụ cho những người sử dụng internal network có một số giải
pháp như sau:
 Kết hợp với các Proxy Server cung cấp những Proxy Service
 Cấp các account cho user trên máy dual–homed host này và khi mà người sử
dụng muốn sử dụng dịch vụ từ Internet hay dịch vụ từ external network thì họ
phải logging in vào máy này.
Nếu dùng phương pháp cấp account cho user trên máy dual– homed host thì
user không thích sử dụng dịch vụ phiền phức như vậy, vì mỗi lần họ muốn sử dụng
dịch vụ thì phải loging in vào máy khác (dual homed host) khác với máy của họ đây là
vấn đề rất là không trong suốt với người sử dụng.
Nếu dùng Proxy Server : Khó có thể cung cấp được nhiều dịch vụ cho người sử
dụng vì phần mềm Proxy Server và Proxy Client không phải loại dịch vụ nào cũng có
sẵn. Hoặc khi số dịch vụ cung cấp nhiều thì khả năng đáp ứng của hệ thống có thể
giảm xuống vì tất cả các Proxy Server đều đặt trên cùng một máy.
Một khuyết điểm cơ bản của hai mô hình trên nữa là: khi mà máy dual –homed
host nói chung cũng như các Proxy Server bị đột nhập vào. Người tấn công (attacker)
đột nhập vào được qua nó thì lưu thông bên trong internal network bị attacker này thấy
hết điều này thì hết sức nguy hiểm . Trong các hệ thống mạng dùng Ethernet hoặc
Token Ring thì dữ liệu lưu thông trong hệ thống có thể bị bất kỳ máy nào nối vào mạng
đánh cắp dữ liệu cho nên kiến trúc trên chỉ thích hợp với một số mạng nhỏ .
2.2.8.2. Screened Host
Kiến trúc này kết hợp 2 kỹ thuật đó là Packet Filtering và Proxy Services.
16

Packet Filtering: Lọc một số loại dịch vụ mà hệ thống muốn cung cấp sử dụng Proxy
Server, bắt người sử dụng nếu muốn dùng dịch vụ thì phải kết nối đến Proxy Server mà
không được bỏ qua Proxy Server để nối trực tiếp với mạng bên trong/bên ngoài
(internal/external network), đồng thời có thể cho phép Bastion Host mở một số kết nối
với internal/external host.
Proxy Service: Bastion Host sẽ chứa các Proxy Server để phục vụ một số dịch vụ
hệ thống cung cấp cho người sử dụng qua Proxy Server.

INTERNET

Firewall

Screening
Router

Permit Deny

Internal
... Network

Bastion Host

Hình 2.6: Sơ đồ kiến trúc Screened Host

 Ƣu điểm
Kiến trúc screened host hay hơn kiến trúc dual–homed host ở một số điểm cụ
thể sau:
 Dual–Homed Host: Khó có thể bảo vệ tốt vì máy này cùng lúc cung cấp nhiều
dịch vụ, vi phạm qui tắc căn bản là mỗi phần tử hay thành phần nên giữ ít chức
năng nếu có thể được (mỗi phần tử nên giữ ít chức năng càng tốt), cũng như tốc
độ đáp ứng khó có thể cao vì cùng lúc đảm nhận nhiều chức năng.
17

 Screened Host: Đã tách chức năng lọc các gói IP và các Proxy Server ở hai máy
riêng biệt. Packet Filtering chỉ giữ chức năng lọc gói nên có thể kiểm soát, cũng
như khó xảy ra lỗi (tuân thủ qui tắc ít chức năng). Proxy Servers được đặt ở máy
khác nên khả năng phục vụ (tốc độ đáp ứng) cũng cao.
 Nhƣợc điểm
 Cũng tương tự như kiến trúc Dual–Homed Host khi mà Packet Filtering system
cũng như Bastion Host chứa các Proxy Server bị đột nhập vào (người tấn công
đột nhập được qua các hàng rào này) thì lưu thông của internal network bị người
tấn công thấy.
Từ khuyết điểm chính của 2 kiến trúc trên ta có kiến trúc thứ 3 sau đây khắc phục
được phần nào khuyết điểm trên .
2.2.8.3. Screened Subnet

INTERNET

Bastion Host

Exterior Router

Perimeter Network

Deny Permit
Interior Router

Firewall

Internal
Network

...

Hình 2.7: Sơ đồ kiến trúc Screened Subnet Host


Với kiến trúc này, hệ thống này bao gồm hai Packet–Filtering Router và một
Bastion Host (hình 2.7). Kiến trúc này có độ an toàn cao nhất vì nó cung cấp cả mức
bảo mật Network và Application trong khi định nghĩa một mạng perimeter network.
Mạng trung gian (DMZ) đóng vai trò như một mạng nhỏ, cô lập đặt giữa Internet và
18

mạng nội bộ. Cơ bản, một DMZ được cấu hình sao cho các hệ thống trên Internet và
mạng nội bộ chỉ có thể truy nhập được một số giới hạn các hệ thống trên mạng DMZ,
và sự truyền trực tiếp qua mạng DMZ là không thể được.
Với những thông tin đến, Router ngoài (Exterior Router) chống lại những sự tấn
công chuẩn (như giả mạo địa chỉ IP), và điều khiển truy nhập tới DMZ. Nó chỉ cho
phép hệ thống bên ngoài truy nhập Bastion Host. Router trong (Interior Router) cung
cấp sự bảo vệ thứ hai bằng cách điều khiển DMZ truy nhập mạng nội bộ chỉ với những
truyền thông bắt đầu từ Bastion Host.
Với những thông tin đi, Router trong điều khiển mạng nội bộ truy nhập tới DMZ. Nó
chỉ cho phép các hệ thống bên trong truy nhập Bastion. Quy luật Filtering trên Router
ngoài yêu cầu sử dụng dịch vụ Proxy bằng cách chỉ cho phép thông tin ra bắt nguồn từ
Bastion Host.
 Ƣu điểm
Kẻ tấn công cần phá vỡ ba tầng bảo vệ: Router ngoài, Bastion Host và Router trong.
 Bởi vì Router ngoài chỉ quảng bá DMZ Network tới Internet, hệ thống mạng nội
bộ là không thể nhìn thấy (invisible). Chỉ có một số hệ thống đã được chọn ra
trên DMZ là được biết đến bởi Internet qua routing table và DNS information
exchange ( Domain Name Server ).
 Bởi vì Router trong chỉ quảng cáo DMZ Network tới mạng nội bộ, các hệ thống
trong mạng nội bộ không thể truy nhập trực tiếp vào Internet. Điều nay đảm bảo
rằng những user bên trong bắt buộc phải truy nhập Internet qua dịch vụ Proxy.
 Đánh giá về kiến trúc Screened Subnet Host:
Đối với những hệ thống yêu cầu cung cấp dịch vụ nhanh, an toàn cho nhiều
người sử dụng đồng thời cũng như khả năng theo dõi lưu thông của mỗi người sử dụng
trong hệ thống và dữ liệu trao đổi giữ các người dùng trong hệ thống cần được bảo vệ
thì kiến trúc cơ bản trên phù hợp.
Để tăng độ an toàn trong internal network, kiến trúc screen subnet ở trên sử
dụng thêm một mạng DMZ (DMZ hay perimeter network) để che phần nào lưu thông
bên trong internal network. Tách biệt internal network với Internet.
19

Sử dụng 2 Screening Router : Exterior Router và Interior Router.


Áp dụng qui tắc dư thừa có thể bổ sung thêm nhiều mạng trung gian (DMZ hay
perimeter network) càng tăng khả năng bảo vệ càng cao.
Ngoài ra, còn có những kiến trúc biến thể khác như: sử dụng nhiều Bastion
Host, ghép chung Router trong và Router ngoài, ghép chung Bastion Host và Router
ngoài.
2.2.8.4. Demilitarized Zone (DMZ)
DMZ (khu vực phi quân sự) là một vùng mạng trung lập giữa mạng nội bộ và
mạng internet, là nơi chứa các thông tin cho phép người dùng từ internet truy xuất vào
và chấp nhận các rủi ro tấn công từ internet. Hệ thống firewall này có độ an toàn cao
nhất vì nó cung cấp cả mức bảo mật network và application.

Hình 2.8: Vùng DMZ được tách riêng với mạng nội bộ
 Ƣu điểm:
 Kẻ tấn công cần phá vỡ ba tầng bảo vệ: router ngoài, bastion host và router
trong.
 Router ngoài chỉ quảng cáo DMZ network tới Internet, hệ thống mạng nội bộ là
không thể nhìn thấy (invisible). Chỉ có một số hệ thống đã được chọn ra trên
DMZ là được biết đến bởi Internet qua routing table và DNS information
exchange (Domain Name Server).
20

 Router trong chỉ quảng cáo DMZ network tới mạng nội bộ, các hệ thống trong
mạng nội bộ không thể truy nhập trực tiếp vào Internet. Điều nay đảm bảo rằng
những user bên trong bắt buộc phải truy nhập Internet qua dịch vụ proxy.

2.3 Khái niệm về tấn công SQL Injection


SQL Injection là một kỹ thuật cho phép những kẻ tấn công thi hành các câu lệnh
truy vấn SQL bất hợp pháp bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu từ
các ứng dụng Web[1]. Hậu quả của việc tấn công này rất tai hại vì nó cho phép kẻ tấn
công có toàn quyền trên cơ sở dữ liệu của ứng dụng, lỗi này thường xảy ra trên các ứng
dụng Web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL server,
Oracle, DB2, Sysbase…
Các lổ hổng cho phép tấn công sử dụng SQL Injection khá đa dạng, bao gồm:
 Chèn câu SQL vào dữ liệu nhập: đây là mục tiêu tấn công thường xuyên
nhất.
 Chèn vào cookie: chỉnh sửa các trường dữ liệu trên cookie để chúng mang
các chuỗi dữ liệu tấn công.
 Thay đổi các biến Header (chứa luồng trao đổi thông tin giữa client và
server) để tấn công.
 Tấn công hai tầng: chèn vào một đoạn mã giống như Trojan.

Hình 2.9. Mô hình tấn công SQL Injection


21

2.4 Các phƣơng thức tấn công bằng SQL Injection [1]
Nhìn chung có bốn kiểu tấn công phổ biến sau:
 Vượt qua kiểm tra lúc đăng nhập (authorization by pass).
 Sử dụng câu lệnh SELECT.
 Sử dụng câu lệnh INSERT.
 Sử dụng các stored-procedures.
2.4.1 Dạng tấn công vƣợt qua kiểm tra đăng nhập.
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ
vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web. Xét
một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang web
được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập
thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, hệ
thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho
phép hay từ chối thực hiện tiếp.
Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML để hiển thị
form nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phía người dùng. Ví
dụ:
Trang HTML.

Trang Asp.
22

Thoạt nhìn, đoạn mã trong trang execlogin.asp dường như không chứa bất cứ một lỗ
hổng về an toàn nào. Người dùng không thể đăng nhập mà không có tên đăng nhập và
mật khẩu hợp lệ. Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền đề cho một
lỗi SQL injection. Đặc biệt, chỗ sơ hở nằm ở chỗ dữ liệu nhập vào từ người dùng được
dùng để xây dựng trực tiếp câu lệnh SQL. Chính điều này cho phép những kẻ tấn công
có thể điều khiển câu truy vấn sẽ được thực hiện.
Ví dụ, nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username/password
của trang login.htm là: ' OR ' ' = ' '. Lúc này, câu truy vấn sẽ được gọi thực hiện là.
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and
USR_PASSWORD= '' OR ''=''.
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn mã
tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập
hợp lệ.

2.4.2 Dạng tấn công sử dụng câu lệnh SELECT.

Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn
công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống
để dò tìm các điểm yếu khởi đầu cho việc tấn công. Xét một ví dụ rất thường gặp trong
23

các website về tin tức. Thông thường, sẽ có một trang nhận ID của tin cần hiển thị rồi
sau đó truy vấn nội dung của tin có ID này.
Ví dụ: http://www.myhost.com/shownews.asp?ID=123. Mã nguồn cho chức năng này
thường được viết khá đơn giản theo dạng.

Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của tin có ID trùng
với ID đã chỉ định và hầu như không thấy có lỗi. Tuy nhiên, giống như ví dụ đăng nhập
ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác. Kẻ tấn công có thể
thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó, khởi đầu cho
một cuộc tấn công bất hợp pháp, ví dụ như: 0 OR 1=1 (nghĩa là,
http://www.myhost.com/shownews.asp?ID=0 or 1=1).
Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó sẽ thực hiện
câu lệnh:
SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1.

2.4.3 Dạng tấn công sử dụng câu lệnh INSERT.


Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham
gia. Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem
và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống không
kiểm tra tính hợp lệ của thông tin nhập vào.
Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng: INSERT INTO TableName
VALUES ('Value One', 'Value Two', 'Value Three'). Nếu đoạn mã xây dựng câu lệnh
SQL có dạng:
24

Thì chắc chắn sẽ bị lỗi SQL injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ
như: ' + (SELECT TOP 1 FieldName FROM TableName) + '. Lúc này câu truy vấn
sẽ là: INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName
FROM TableName) + ' ', 'abc', 'def'). Khi đó, lúc thực hiện lệnh xem thông tin, xem
như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1 FieldName
FROM TableName.

2.4.4 Dạng tấn công sử dụng stored-procedures

Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi
với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ;EXEC
xp_cmdshell „cmd.exe dir C: '. Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên
ổ đĩa C:\ cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau
cmd.exe.
2.5 Các phƣơng thức ngăn chặn tấn công SQL Injection
 Kiểm soát chặt chẽ dữ liệu nhập vào:
Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL là bằng
cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request
(Request,
Request.QueryString,Request.Form,Request.Cookies,Request.ServerVariables). Ví dụ,
có thể giới hạn chiều dài của chuỗi nhập liệu, hoặc xây dựng hàm EscapeQuotes để
thay thế các dấu nháy đơn bằng hai dấu nháy đơn như:
25

Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay thế một giá trị được
tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp. Để tránh điều này,
đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay không bằng hàm IsNumeric(). Ngoài ra
có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểm như: ;, --, select,
insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía người dùng để hạn chế các tấn công
dạng này:

 Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu: Cần có cơ chế kiểm
soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng mà ứng dụng
web đang sử dụng. Các ứng dụng thông thường nên tránh dùng đến các quyền như dbo
26

hay sa. Quyền càng bị hạn chế, thiệt hại càng ít. Ngoài ra để tránh các nguy cơ từ SQL
Injection attack, nên chú ý loại bỏ bất kì thông tin kĩ thuật nào chứa trong thông điệp
chuyển xuống cho người dùng khi ứng dụng có lỗi. Các thông báo lỗi thông thường tiết
lộ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống.
2.6 Tấn công từ chối dịch vụ DOS (Denial of Service)[2]
2.6.1 Khái niệm
- Tấn công DoS là một kiểu tấn công mà một người làm cho một hệ thống không
thể sử dụng, hoặc làm cho hệ thống đó chậm đi một cách đáng kể với người dùng bình
thường, bằng cách làm quá tải tài nguyên của hệ thống.
- Nếu kẻ tấn công không có khả năng thâm nhập được vào hệ thống, thì chúng cố
gắng tìm cách làm cho hệ thống đó sụp đổ và không có khả năng phục vụ người dùng
bình thường đó là tấn công Denial of Service (DoS).Mặc dù tấn công DoS không có
khả năng truy cập vào dữ liệu thực của hệ thống nhưng nó có thể làm gián đoạn các
dịch vụ mà hệ thống đó cung cấp. Như định nghĩa trên DoS khi tấn công vào một hệ
thống sẽ khai thác những cái yếu nhất của hệ thống để tấn công, những mục đích của
tấn công DoS
 Lịch sử các cuộc tấn công và phát triển của DoS
- Các tấn công DoS bắt đầu vào khoảng đầu những năm 90. Đầu tiên, chúng hoàn
toàn “nguyên thủy”, bao gồm chỉ một kẻ tấn công khai thác băng thông tối đa từ nạn
nhân, ngăn những người khác được phục vụ. Điều này được thực hiện chủ yếu bằng
cách dùng các phương pháp đơn giản như ping floods, SYN floods và UDP floods. Sau
đó, các cuộc tấn công trở nên phức tạp hơn, bằng cách giả làm nạn nhân, gửi vài thông
điệp và để các máy khác làm ngập máy nạn nhân với các thông điệp trả lời. (Smurf
attack, IP spoofing…).
- Các tấn công này phải được đồng bộ hoá một cách thủ công bởi nhiều kẻ tấn công
để tạo ra một sự phá huỷ có hiệu quả. Sự dịch chuyển đến việc tự động hoá sự đồng bộ,
kết hợp này và tạo ra một tấn công song song lớn trở nên phổ biến từ 1997, với sự ra
đời của công cụ tấn công Dos đầu tiên được công bố rộng rãi, Trinoo. Nó dựa trên tấn
công UDP flood và các giao tiếp master-slave (khiến các máy trung gian tham gia vào
27

trong cuộc tấn công bằng cách đặt lên chúng các chương trình được điều khiển từ xa).
Trong những năm tiếp theo, vài công cụ nữa được phổ biến – TFN (tribe flood
network), TFN2K, vaf Stacheldraht.
- Tuy nhiên, chỉ từ cuối năm 1999 mới có những báo cáo về những tấn công như
vậy, và đề tài này được công chúng biết đến chỉ sau khi một cuộc tấn công lớn vào các
site công cộng tháng 2/2000. Trong thời gian 3 ngày, các site Yahoo.com,
amazon.com, buy.com, cnn.com và eBay.com đã đặt dưới sự tấn công (ví dụ như
Yahoo bị ping với tốc độ 1 GB/s). Từ đó các cuộc tấn công Dos thường xuyên xảy ra ví
dụ : Vào ngày 15 tháng 8 năm 2003, Microsoft đã chịu đợt tấn công DoS cực mạnh và
làm gián đoạn websites trong vòng 2 giờ; Vào lúc 15:09 giờ GMT ngày 27 tháng 3
năm 2003: toàn bộ phiên bản tiếng anh của website Al-Jazeera bị tấn công làm gián
đoạn trong nhiều giờ
2.6.2 Mục đích của tấn công DoS và hiểm họa[2]
 Mục đích của tấn công DoS:
- Cố gắng chiếm băng thông mạng và làm hệ thống mạng bị ngập (flood), khi đó hệ
thống mạng sẽ không có khả năng đáp ứng những dịch vụ khác cho người dùng
bình thường.
- Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập vào dịch
vụ.
- Cố gắng ngăn chặn những người dùng cụ thể vào một dịch vụ nào đó
- Cố gắng ngăn chặn các dịch vụ không cho người khác có khả năng truy cập vào.
Khi tấn công DoS xảy ra người dùng có cảm giác khi truy cập vào dịch vụ đó như bị:
+ Disable Network - Tắt mạng
+ Disable Organization - Tổ chức không hoạt động
+ Financial Loss – Tài chính bị mất
Như chúng ta biết ở bên trên tấn công DoS xảy ra khi kẻ tấn công sử dụng hết tài
nguyên của hệ thống và hệ thống không thể đáp ứng cho người dùng bình thường được
vậy các tài nguyên chúng thường sử dụng để tấn công là gì:
- Tạo ra sự khan hiếm, những giới hạn và không đổi mới tài nguyên
28

- Băng thông của hệ thống mạng (Network Bandwidth), bộ nhớ, ổ đĩa, và CPU Time
hay cấu trúc dữ liệu đều là mục tiêu của tấn công DoS.
- Tấn công vào hệ thống khác phục vụ cho mạng máy tính như: hệ thống điều hoà,
hệ thống điện, hệt thống làm mát và nhiều tài nguyên khác của doanh nghiệp. Bạn thử
tưởng tượng khi nguồn điện vào máy chủ web bị ngắt thì người dùng có thể truy cập
vào máy chủ đó không.
- Phá hoại hoặc thay đổi các thông tin cấu hình.
- Phá hoại tầng vật lý hoặc các thiết bị mạng như nguồn điện, điều hoà…
2.6.3 Phân loại:
Trường hợp đơn giản 1-1 (DoS: tấn công từ chối dịch vụ):
DoS (Denial of Service) là hình thức tấn công từ chối dịch vụ, có nhiều cách để
thực hiện tấn công kiểu này (VD : SYN Flooding,..), thực chất là Hacker tận dụng lỗ
hổng bảo mật nào đó để yêu cầu Server làm việc "trời ơi" nào đó, mục đính là không
để Server có khả năng đáp ứng yêu cầu dịch vụ của các Client khác, như vậy gọi là "từ
chối dịch vụ" của các Client khác. Thường thì kẻ tấn công là từ một máy.

Hình 2.10: Một mô hình Dos


- Qua các máy trung gian (DOS: tấn công từ chối dịch vụ phân tán):
29

- DDos (Distributed Denial of Service) là một dạng DoS nhưng kẻ tấn công sử dụng
nhiều máy để thực hiện.

Hình2.11: Mô hình DDOS


Sự khác nhau là : DoS là tấn công từ một nguồn còn DDos là từ nhiều nguồn khác
nhau nên phương pháp chống lại cũng khác đôi chút.
VD : nếu phát hiện dấu hiệu của DoS thì chỉ cần tìm và ngắt các hoạt động hoặc
kết nối liên quan đến nguồn phát (chỉ 1),còn DDos thì rất nhiều nguồn tấn công nên
không làm như vậy được. Một điểm quan trọng là nếu bị tấn công Dos thì không thể
chống đỡ.
2.6.4 Các cơ chế tấn công từ chối dịch vụ:
2.6.4.1 Tấn công từ chối dịch vụ (DoS):
Là phương thức xuất hiện đầu tiên, giản đơn nhất trong kiểu tấn công từ chối dịch
vụ.Các kiểu tấn công thuộc phương thức này rất đa dạng:
2.6.4.2 Tấn công chiếm dụng tài nguyên (Resource Depletion):
Bằng cách lạm dụng quá trình giao tiếp của giao thức mạng hoặc những gói
tin dị thường, attacker sẽ chiếm dụng nguồn tài nguyên hệ thống như CPU, RAM,…
khiến cho người dùng chia sẽ không truy xuất được hệ thống do hệ thống không đủ khả
năng xử lý
2.6.4.3 SYN Attack
30

Được xem là một trong những kiểu tấn công DoS kinh điển nhất. Lợi dụng sơ
hở của thủ tục TCP khi “bắt tay ba chiều”, mỗi khi client (máy khách) muốn thực
hiện kết nối (connection) với server (máy chủ) thì nó thực hiện việc bắt tay ba lần
(three – wayshandshake) thông qua các gói tin (packet).
- Bước 1: Client (máy khách) sẽ gửi các gói tin (packet chứa SYN=1) đến máy chủ để
yêu cầu kết nối.
- Bước 2: Khi nhận được gói tin này, server sẽ gửi lại gói tin SYN/ACK để thông báo
cho client biết là nó đã nhận được yêu cầu kết nối và chuẩn bị tài nguyên cho việc yêu
cầu này. Server sẽ giành một phần tài nguyên hệ thống như bộ nhớ đệm (cache) để
nhận và truyền dữ liệu. Ngoài ra, các thông tin khác của client như địa chỉ IP và cổng
(port) cũng được ghi nhận.
- Bước 3: Cuối cùng, client hoàn tất việc bắt tay ba lần bằng cách hồi âm lại gói tin
chứa ACK cho server và tiến hành kết nối.
Do TCP là thủ tục tin cậy trong việc giao nhận (end-to-end) nên trong lần bắt tay thứ
hai, server gửi các gói tin SYN/ACK trả lời lại client mà không nhận lại được hồi âm
của client để thực hiện kết nối thì nó vẫn bảo lưu nguồn tài nguyên chuẩn bị kết nối đó
và lập lại việc gửi gói tin SYN/ACK cho client đến khi nào nhận được hồi đáp của máy
client.
Điểm mấu chốt là ở đây là làm cho client không hồi đáp cho Server. Và có hàng nhiều,
nhiều client như thế trong khi server vẫn “ngây thơ” lặp lại việc gửi packet đó và giành
tài nguyên để chờ “người về” trong lúc tài nguyên của hệ thống là có giới hạn!
Các hacker tấn công sẽ tìm cách để đạt đến giới hạn đó.
Nếu quá trình đó kéo dài, server sẽ nhanh chóng trở nên quá tải, dẫn đến tình trạng
crash (treo) nên các yêu cầu hợp lệ sẽ bị từ chối không thể đáp ứng được
31

Hình 2.12 Mô hình tấn công SYN


2.6.4.4 Flood Attack
Một kiểu tấn công DoS nữa cũng rất hay được dùng vì tính đơn giản của nó và
vì có rất nhiều công cụ sẵn có hỗ trợ đắc lực cho kẻ tấn công là Flood Attack, chủ yếu
thông qua các website.
Về nguyên tắc, các website đặt trên máy chủ khi chạy sẽ tiêu lượng tài nguyên máy chủ
nhất định, nhất là lượng bộ nhớ (RAM) và bộ vi xử lý (CPU). Dựa vào việc tiêu hao
đó, những kẻ tấn công đơn giản là dùng các phần mềm như smurf chẳng hạn để liên tục
yêu cầu máy chủ phục vụ trang web đó để chiếm dụng tài nguyên. Cách tấn công này
tuy không làm máy chủ ngừng cung cấp dịch vụ hoàn toàn nhưng sẽ làm cho tốc độ
phục vụ của toàn bộ hệ thống giảm mạnh, người dùng sẽ cảm nhận rõ ràng việc phải
chờ lâu hơn để trang web hiện ra trên màn hình. Nếu thực hiện tấn công ồ ạt và có sự
phối hợp nhịp nhàng, phương thức tấn công này hoàn toàn có thể làm tê liệt máy chủ
trong một thời gian dài.
2.6.4.5 Tấn công bằng gói dị hình:
Tấn công dạng này attacker sẽ yêu cầu zombie gửi những gói IP có hình thức
không đúng đến máy victim. Có 2 loại tấn công theo phương pháp này. Thứ nhất,
những gói này có địa chỉ nguồn và địa chỉ đích giống nhau. Nó làm cho hệ điều hành bị
đảo lộn và sụp đổ (Land Attack). Thứ 2 là thiết lập tất cả các trường chất lượng dịch
vụ trong gói IP bằng 1 để hệ thống nạn nhân phải tốn nhiều thời gian để phân tích
gói (Teardrop Attack). Nếu như agent gửi nhiều gói IP theo phương pháp tấn công
này, hệ thống victim phải xử lý nhiều, kết quả là nó shut down
2.6.4.6 Tấn công chiếm dụng băng thông (Bandwidth Depletion):

Có 2 loại tấn công chính:


32

- Thứ nhất là làm ngập bằng cách gửi liên tục các gói tin có kích thước lớn đến hệ
thống nạn nhân, làm nghẽn băng thông nạn nhân
- Thứ hai là sử dụng mạng khuếch đại, attacker hay zombie gửi thông tin đến một
địa chỉ broadcast (phát quảng bá), tất cả hệ thống trong mạng con victim trong phạm vi
bởi địa chỉ broadcast sẽ gửi lại hệ thống nạn nhân một thông điệp phản hồi cho máy
victim chấp nhận trao đổi dữ liệu. Phương pháp này khuếch đại dòng lưu lượng làm
cho hệ thống nạn nhân giảm băng thông đáng kể.
2.6.4.7 Tấn công ngập lụt (Flood attack):

Trong một cuộc tấn công làm lụt Dos, các zombie sẽ gửi một số lượng lớn
các gói tin đến máy victim làm khả năng thực thi, chậm máy hay tràn ngập băng
thông mạng. Điều này khiến cho người dùng hệ thống hợp pháp bị cản trở truy cập
vào hệ thống victim.

Tấn công ngập lụt bằng UDP:

- UDP (User Datagram Protocol – giao thức dữ liệu người dùng) là một giao thức
hướng không kết nối. Có nghĩa là khi những gói tin truyền bằng giao thức này,
không có một cơ chế bắt tay nào giữa bên gửi và bên nhận, và hệ thống bên nhận
khi nhận được gói tin sẽ phải xử lý nó. Khi gửi một số lượng lớn các gói tin UDP
đến hệ thống nạn nhân có thể gây ra tràn ngập mạng, làm suy yếu mạng.

- Khi tấn công Dos dạng UDP, những gói tin UDP được gửi qua những port ngẫu
nhiên hoặc được chỉ định một port nào đó. Thường thì công việc thực hiện là
những port ngẫu nhiên để nó bao quát toàn diện hơn. Kết quả là victim sẽ phải xử lý
những gói đi vào nó để cố gắng xác định xem có ứng dụng nào yêu cầu không.
Nếu hệ thống victim không có ứng dụng nào nằm trên port đích, hệ thống victim sẽ
gửi gửi một gói ICMP đến nơi gửi với thông điệp là “destination port unreachable”.

- Thông thường, công cụ tấn công Dos sẽ giả địa chỉ IP nguồn của gói dữ liệu. Vì
thế nó làm ẩn danh hệ thống máy nạn nhân phụ, do đó các gói trả về từ máy victim
sẽ không đến được zombie, mà nó đến một máy tính khác nào đó.
33

Đôi khi tấn công ngập lụt UDP cũng có thể làm đầy băng thông của những kết nối
xung quanh hệ thống victim (phụ thuộc vào kiến trúc mạng và tốc độ đường truyền). Vì
thế có thể những hệ thống kết nối gần hệ thống victim gặp vấn đề trong kết nối của họ.

Tấn công ngập lụt bằng ICMP:

- Những gói tin ICMP (Internet Control Message Protocol – giao thức thông điệp vận
chuyển Internet) được thiết kế cho tính năng quản lý chẳng hạn như xác định thiết
bị mạng và xác định số hop (hop là thuật ngữ nói lên gói tin sẽ đi qua một thiết bị
định tuyến chẳng hạn như qua một router thì router gọi là hop) hay thời gian di
chuyển từ nguồn đến đích. Ví dụ, gói tin ICMP_ECHO_REPLY (ping) cho phép
người dùng gởi yêu cầu đến hệ thống đích và nhận đáp ứng với thời gian đã đi đến
đích

- Tấn công Dos làm ngập ICMP xuất hiện khi zombie gởi số lượng lớn các gói tin
ICMP_ECHO_REPLY đến hệ thống nạn nhân. Dấu hiệu của những gói tin này là
phản hồi (reply). Cũng giống như tấn công làm ngập UDP, địa chỉ IP nguồn bị giả
mạo.
2.6.4.8 Tấn công khuếch đại (Amplifier attack):
- Một cuộc tấn công khuếch đại Dos nhắm vào việc sử dụng tính chất của địa chỉ
IP broadcast được tìm thấy trong hầu hết các router để khuếch đại và phản xạ sự
tấn công (xem hình 2.13). Tính năng này cho phép một hệ thống bên gửi phát một
địa chỉ IP broadcast đến nơi nhận. Bộ định tuyến nơi nhận sẽ chuyển các gói tin đến
tất cả địa chỉ IP nằm trong dãy địa chỉ broadcast.
- Đối với loại tấn công Dos này, attacker có thể gởi trực tiếp thông điệp broadcast,
hoặc attacker sử dụng những agent để gởi thông điệp broadcast nhằm tăng thêm
dòng lưu lượng. Nếu attacker gửi một cách trực tiếp, loại tấn công này sẽ dùng
những hệ thống nằm trong dãy địa chỉ broadcast làm zombie mà không cần phải thâm
nhập chúng hay cài đặt phần mềm zombie. Có 2 loại tấn công được biết đến đó
là : Smurf và Fraggle.
34

Hình 2.13: Mô hình tấn công khuếch đại


2.6.4.9 Tấn công Smurf:

Attacker gửi những gói tin đến mạng khuếch đại (hệ thống hỗ trợ định vị
broadcast) với địa chỉ IP giả mạo là địa chỉ của máy victim. Những gói tin tấn công
có dạng ICMP ECHO REQUEST, Những gói tin này (dạng “ping”) yêu cầu bên
nhận phản hồi lại với gói tin ICMP ECHO REPLY. Bộ khuếch đại gửi những gói
ICMP ECHO REQUEST đến tất cả hệ thống nằm trong dãy địa chỉ broadcast, mỗi
một hệ thống trên sẽ đáp ứng ICMP ECHO REPLY đến địa chỉ máy victim.

2.6.4.10 Tấn công Fraggle


Fraggle tấn công tương tự như Smurf , nó cũng gửi các gói tin đến mạng
khuếch đại. Nhưng khác nhau ở chỗ, Fraggle sử dụng gói UDP ECHO thay vì ICMP
ECHO như Smurf. Có một sự biến đổi trong tấn công Fraggle đó là những gói UDP
ECHO được gửi đến cổng có hỗ trợ dạng “tự động sinh ra ký tự” (character
generator) tại những máy nằm trong dãy địa chỉ broadcast (thường là cổng 19
35

trong những hệ thống Unix), cùng lúc đó địa chỉ đã bị giả mạo là dịch vụ hồi đáp
(echo service, port 7 trên Unix) của máy victim để nó tạo ra một vòng lặp vô hạn.
Mỗi một hệ thống trên sẽ sinh ra một ký tự gửi đến dịch vụ hồi đáp trong máy
victim, victim sẽ trả về một gói hồi đáp đến character generator, và cứ tiếp tục lặp lại
như vậy. Loại tấn công này thậm chí cón nguy hiểm hơn Smurf.
2.7 Tấn công từ chối dịch vụ kiểu phân tán-DDos.

Xuất hiện vào năm 1999, so với tấn công DoS cổ điển, sức mạnh của DDos
cao hơn gấp nhiều lần. Hầu hết các cuộc tấn công DDos nhằm vào việc chiếm dụng
băng thông (bandwidth) gây nghẽn mạch hệ thống dẫn đến hệ thống ngưng hoạt động.
Để thực hiện thì kẻ tấn công tìm cách chiếm dụng và điều khiển nhiều máy tính mạng
máy tính trung gian (đóng vai trò zombie) từ nhiều nơi để đồng loạt gửi ào ạt các gói
tin (packet) với số lượng rất lớn nhằm chiếm dụng tài nguyên và làm tràn ngập đường
truyền của một mục tiêu xác định nào đó.

Hình 2.14: Mô hình kiểu tấn công phân tán DDOS


Theo cách này thì dù băng thông có bao nhiêu đi chăng nữa thì cũng không
thể chịu đựng được số lượng hàng triệu các gói tin đó nên hệ thống không thể hoạt
động được nữa và như thế dẫn đến việc các yêu cầu hợp lệ khác không thể nào được
đáp ứng, server sẽ bị “đá văng” khỏi internet.
36

Hình 2.15: Cách mà hacker thực hiện tấn công DDos

Có thể nói nó giống như tình trạng kẹt xe vào giờ cao điểm vậy. Ví dụ rõ nhất là
sự “cộng hưởng” trong lần truy cập điểm thi đại học vừa qua khi có quá nhiều máy
tính yêu cầu truy cập cùng lúc làm dung lượng đường truyền hiện tại của máy chủ
không tài nào đáp ứng nổi. Hiện nay, đã xuất hiện dạng virus worm có khả năng thực
hiện các cuộc tấn công Dos. Khi bị lây nhiễm vào các máy khác, chúng sẽ tự động gửi
các yêu cầu phục vụ đến một mục tiêu xác định nào đó vào thời điểm xác định để
chiếm dụng băng thông hoặc tài nguyên hệ thống máy chủ.

2.8 Tấn công từ chối dịch vụ phản xạ nhiều vùng DRDOS.

Xuất hiện vào đầu năm 2002, là kiểu tấn công mới nhất, mạnh nhất trong họ DoS.
Nếu được thực hiện bởi kẻ tấn công có tay nghề thì nó có thể hạ gục bất cứ hệ thống
nào trên thế giới trong phút chốc. Mục tiêu chính của DRDoS là chiếm đoạt toàn bộ
băng thông của máy chủ, tức là làm tắc nghẽn hoàn toàn đường kết nối từ máy chủ vào
xương sống của Internet và tiêu hao tài nguyên máy chủ. Trong suốt quá trình máy chủ
bị tấn công bằng DRDoS, không một máy khách nào có thể kết nối được vào máy chủ
đó. Tất cả các dịch vụ chạy trên nền TCP/IP như DNS, HTTP, FTP, POP3,... đều bị vô
hiệu hóa.Về cơ bản, DRDoS là sự phối hợp giữa hai kiểu DoS và DDos. Nó có kiểu tấn
công SYN với một máy tính đơn, vừa có sự kết hợp giữa nhiều máy tính để chiếm
37

dụng băng thông như kiểu Dos. Kẻ tấn công thực hiện bằng cách giả mạo địa chỉ của
server mục tiêu rồi gửi yêu cầu SYN đến các server lớn như Yahoo, Micorosoft,chẳng
hạn để các server này gửi các gói tin SYN/ACK đến server mục tiêu. Các server lớn,
đường truyền mạnh đó đã vô tình đóng vai trò zoombies cho kẻ tấn công như trong
Dos.

Hình 2.16: Tấn công phản xạ DRDOS

Quá trình gửi cứ lặp lại liên tục với nhiều địa chỉ IP giả từ kẻ tấn công, với nhiều
server lớn tham gia nên server mục tiêu nhanh chóng bị quá tải, bandwidth bị chiếm
dụng bởi server lớn. Tính “nghệ thuật” là ở chỗ chỉ cần với một máy tính với modem
56kbps, một hacker lành nghề có thể đánh bại bất cứ máy chủ nào trong giây lát mà
không cần chiếm đoạt bất cứ máy nào để làm phương tiện thực hiện tấn công.
2.9 Các cơ chế phát hiện và phòng tránh tấn công DOS/Ddos [6]
Có ba giai đoạn chính trong quá trình Anti-DoS/DDos:
- Giai đoạn ngăn ngừa: tối thiểu hóa lượng Agent, tìm và vô hiệu hóa các Handler
- Giai đoạn đối đầu với cuộc tấn công: Phát hiện và ngăn chặn cuộc tấn công, làm
suy giảm và dừng cuộc tấn công, chuyển hướng cuộc tấn công.
- Giai đoạn sau khi cuộc tấn công xảy ra: thu thập chứng cứ và rút kinh nghiệm
38

Các giai đoạn chi tiết trong phòng chống Dos:


DDoS
Countermeasures

Detect and Detect and Detect/Prevent Mitigate/Stop Deflect Attack Post attack
Neutralize Prevent Potential Attack Forensic
handler Agent Attack

Traffic
Pattern
Analysis
Egress MIB Statistic
Filtering Honeyspots
Packet
Traceback

Invidual Network Event


user Service Log
Provider
Shadow Real Study
Network Attack

Install Build in Cost


Software defense
Patch

Load Balancing Throttling Drop Request

Hình 2.17. Các giai đoạn trong phòng chống Dos/DDos

2.9.1 Tối thiểu hóa số lƣợng Agent:


- Từ phía User: một phương pháp rất tốt để năng ngừa tấn công Dos là từng
internet user sẽ tự đề phòng không để bị lợi dụng tấn công hệ thống khác. Muốn đạt
được điều này thì ý thức và kỹ thuật phòng chống phải được phổ biến rộng rãi cho
các internet user. Attack-Network sẽ không bao giờ hình thành nếu không có user nào
bị lợi dụng trở thành Agent. Các user phải liên tục thực hiện các quá trình bảo mật
trên máy vi tính của mình. Họ phải tự kiểm tra sự hiện diện của Agent trên máy của
mình, điều này là rất khó khăn đối với user thông thường.
Một số giải pháp tích hợp sẵn khả năng ngăn ngừa việc cài đặt code nguy hiểm
thông ào hardware và software của từng hệ thống. Về phía user họ nên cài đặt và
updat liên tục các software như antivirus, anti_trojan và server patch của hệ điều
hành.
- Từ phía Network Service Provider: Thay đổi cách tính tiền dịch vụ truy cập
39

theo dung lượng sẽ làm cho user lưu ý đến những gì họ gửi, như vậy về mặt ý thức
tăng cường phát hiện Dos Agent sẽ tự nâng cao ở mỗi User.
2.9.2 Tìm và vô hiệu hóa các Handler:
Một nhân tố vô cùng quan trọng trong attack-network là Handler, nếu có thể
phát hiện và vô hiệu hóa Handler thì khả năng Anti-Dos thành công là rất cao. Bằng
cách theo dõi các giao tiếp giữa Handler và Client hay handler va Agent ta có thể phát
hiện ra vị trí của Handler. Do một Handler quản lý nhiều, nên triệt tiêu được một
Handler cũng có nghĩa là loại bỏ một lượng đáng kể các Agent trong Attack –
Network.
2.9.3 Phát hiện dấu hiệu của một cuộc tấn công:
Có nhiều kỹ thuật được áp dụng:
- Agress Filtering: Kỹ thuật này kiểm tra xem một packet có đủ tiêu chuẩn ra
khỏi một subnet hay không dựa trên cơ sở gateway của một subnet luôn biết được địa
chỉ IP của các máy thuộc subnet. Các packet từ bên trong subnet gửi ra ngoài với địa
chỉ nguồn không hợp lệ sẽ bị giữ lại để điều tra nguyên nhân. Nếu kỹ thuật này được
áp dụng trên tất cả các subnet của internet thì khái nhiệm giả mạo địa chỉ IP sẽ không
còn tồn tại.
- MIB statistics: trong Management Information Base (SNMP) của route luôn có
thông tin thống kể về sự biến thiên trạng thái của mạng. Nếu ta giám sát chặt chẽ các
thống kê của protocol mạng. Nếu ta giám sát chặt chẽ các thống kê của Protocol
ICMP, UDP và TCP ta sẽ có khả năng phát hiện được thời điểm bắt đầu của cuộc tấn
công để tạo “quỹ thời gian vàng” cho việc xử lý tình huống.
2.9.4 Làm suy giàm hay dừng cuộc tấn công:
Dùng các kỹ thuật sau:
- Load balancing: Thiết lập kiến trúc cân bằng tải cho các server trọng điểm sẽ
làm gia tăng thời gian chống chọi của hệ thống với cuộc tấn công Dos. Tuy nhiên,
điều này không có ý nghĩa lắm về mặt thực tiễn vì quy mô của cuộc tấn công là không
có giới hạn.
- Throttling: Thiết lập cơ chế điều tiết trên router, quy định một khoảng tải hợp
lý mà server bên trong có thể xử lý được. Phương pháp này cũng có thể được dùng để
40

ngăn chặn khả năng Dos traffic không cho user truy cập dịch vụ. Hạn chế của kỹ thuật
này là không phân biệt được giữa các loại traffic, đôi khi làm dịch vụ bị gián đoạn với
user, Dos traffic vẫn có thể xâm nhập vào mạng dịch vụ nhưng với số lượng hữu hạn.
- Drop request: Thiết lập cơ chế drop request nếu nó vi phạm một số quy định
như: thời gian delay kéo dài, tốn nhiều tài nguyên để xử lý, gây deadlock. Kỹ thuật
này triệt tiêu khả năng làm cạn kiệt năng lực hệ thống, tuy nhiên nó cũng giới hạn một
số hoạt động thông thường của hệ thống, cần cân nhắc khi sử dụng.
2.9.5 Chuyển hƣớng của cuộc tấn công:
Honeyspots: Một kỹ thuật đang được nghiên cứu là Honeyspots. Honeyspots là
một hệ thống được thiết kế nhằm đánh lừa attacker tấn công vào khi xâm nhập hệ
thống mà không chú ý đến hệ thống quan trọng thực sự.
Honeyspots không chỉ đóng vai trò “Lê Lai cứu chúa” mà còn rất hiệu quả trong
việc phát hiện và xử lý xâm nhập, vì trên Honeyspots đã thiết lập sẵn các cơ chế giám
sát và báo động.
Ngoài ra Honeyspots còn có giá trị trong việc học hỏi và rút kinh nghiệm từ
Attacker, do Honeyspots ghi nhận khá chi tiết mọi động thái của attacker trên hệ
thống. Nếu attacker bị đánh lừa và cài đặt Agent hay Handler lên Honeyspots thì khả
năng bị triệt tiêu toàn bộ attack-network là rất cao.
2.9.6 Giai đoạn sau tấn công:
Trong giai đoạn này thông thường thực hiện các công việc sau:
-Traffic Pattern Analysis: Nếu dữ liệu về thống kê biến thiên lượng traffic theo
thời gian đã được lưu lại thì sẽ được đưa ra phân tích. Quá trình phân tích này rất có
ích cho việc tinh chỉnh lại các hệ thống Load Balancing và Throttling. Ngoài ra các dữ
liệu này còn giúp Quản trị mạng điều chỉnh lại các quy tắc kiểm soát traffic ra vào
mạng của mình.
- Packet Traceback: bằng cách dùng kỹ thuật Traceback ta có thể truy ngược lại
vị trí của Attacker (ít nhất là subnet của attacker). Từ kỹ thuật Traceback ta phát triển
thêm khả năng Block Traceback từ attacker khá hữu hiệu. gần đây đã có một kỹ thuật
Traceback khá hiệu quả có thể truy tìm nguồn gốc của cuộc tấn công dưới 15 phút, đó
là kỹ thuật XXX.
41

- Bevent Logs: Bằng cách phân tích file log sau cuộc tấn công, quản trị mạng có
thể tìm ra nhiều manh mối và chứng cứ quan trọng.
42

CHƢƠNG 3. CÁC PHƢƠNG PHÁP CHẶN BẮT VÀ TÌM KIẾM GÓI TIN
3.1 Giới thiệu về kỹ thuật chặn bắt gói tin [5]
3.1.1 Tổng quan về chặn bắt gói tin:
 Packet là một đơn vị dữ liệu được định dạng để lưu chuyển trên mạng.
 Network Traffic là lưu lượng thông tin vào/ra hệ thống mạng. Để có thể đo đạc,
kiểm soát Network Traffic ta cần phải chặn bắt các gói tin (Packet capture).
 Packet capture là hành động chặn bắt các packet dữ liệu được lưu chuyển trên
mạng. Packet capture gồm có:
o Deep Packet Capture (DPC): là hành động chặn bắt toàn bộ các gói tin
trên mạng (bao gồm cả phần header và payload). Các gói tin chặn bắt được
sẽ được lưu trữ lại trong bộ nhớ tạm thời hoặc lâu dài.
o Deep Packet Inspection (DPI): là quá trình kiểm tra, đánh giá để tìm ra
nguyên nhân của những vấn đề của mạng, xác định nguy cơ an toàn bảo mật,
chắc chắn mạng hoạt động chính xác về kỹ thuật và luật pháp.
o DPC và DPI được kết hợp với nhau nhằm quản lý, đánh giá, phân tích sự
luân chuyển các gói tin trên mạng đồng thời lưu giữ lại những thông tin đó
cho các mục đích khác sau này.
3.1.2 Raw Socket – mức hệ điều hành:
Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương
trình yêu cầu dịch vụ ( client) và một chương trình cung cấp dịch vụ (server) trên mạng
LAN, WAN hay Internet và đôi lúc là giữa những quá trình ngay bên trong máy tính.
Mỗi socket có thể được xem như một điểm cuối trong một kết nối. Một socket trên
máy yêu cầu dịch vụ có địa chỉ mạng được cấp sẵn để “gọi” một socket trên máy cung
cấp dịch vụ. Một khi socket đã được thiết lập phù hợp, hai máy tính có thể trao đổi
dịch vụ và dữ liệu.
Các đặc tính của Socket bao gồm:
 Giao thức (TDP, UDP hay raw IP).
 Số hiệu cổng.
 Địa chỉ IP.
43

Phân loại: Có vài loại Socket thông dụng như:


 Datagram Socket hay còn gọi là connectionless socket sử dụng UDP.
 Stream Socket hay còn gọi là connection – oriented socket sử dụng TCP.
 Raw Socket (hay là Raw IP Socket). Với socket dạng này tầng giao vận
được bỏ qua và ứng dụng có thể truy nhập trực tiếp vào dữ liệu của gói tin IP.
Tóm lại, sử dụng Socket ta có thể chặn bắt và truy nhập các thông tin từ tầng giao vận
trở lên (TCP và UDP) và có thể truy nhập tới tầng Internet ( IP) nếu sử dụng raw
socket. Tuy nhiên hiện nay trên hệ điều hành window chỉ có thư viện winsock dành
cho Visual C++ và Socket trong .Net hỗ trợ raw socket. Thư viện lập trình mạng của
Java không cho phép người phát triển được sử dụng tới raw socket.
Raw socket là một socket cho phép truy nhập trực tiếp tới header của một packet.
Nói một cách khác, raw socket là một cách bỏ qua toàn bộ network stack và đưa packet
tới thẳng tầng ứng dụng. Raw socket có thể thực hiện một trong hai tác vụ:
Packet Sniffing: nhận các packet từ raw socket.
Packet Injection: gửi các packet tới raw socket.
Raw socket không nằm ở tầng ngôn ngữ lập trình mà là một phần networking API
của hệ điều hành. Sử dụng raw socket chúng ta có thể lấy về header của packet khác
với socket thông thường chỉ lấy về payload của packet. Raw socket được sử dụng trong
transport layer và network layer.
Khi Window XP được phát hành năm 2001, raw socket được cài đặt trong thư viện
Winsock, tuy nhiên Microsoft tuyên bố raw socket chỉ được hacket dùng trong việc
thực hiện TCP reset attacks. Do vậy sau 3 năm sau trong bản hotfix, Mircrosoft đã hạn
chế hỗ trợ raw socket trong winsock cũng như không hỗ trợ cho ứng dụng nào sử dụng
chúng nữa.
Có 2 phương thức làm việc với Raw socket: Winsock và .Net socket
3.2.1 Winsock:
Sử dụng Winsock để xây dựng chương trình sniffer nghĩa là chặn bắt ở mức hệ điều
hành với Raw Socket. Do đề tài thực hiện trong phạm vi hệ điều hành Windows nên
chúng ta chỉ xét tới Winsock (ngoài ra còn có thể có .NET Socket)..
44

3.2.1.1 Khái niệm:


Là viết tắt của từ Window Socket. Là một thư viện socket, nó được dùng như là
giao diện giữa TCP/IP và Windows. Winsock là một thư viện liên kết động .DLL chạy
trên nên hệ điều hành Windows. WINSOCK.DLL liên hệ với TCP từ đó giao tiếp ra
ngoài mạng Internet. Hình dưới thể hiện cách làm việc của Winsock:

Hình 3.1. Sơ đồ giao tiếp thông qua winsock


Winsock thực sự như một tầng giữa các ứng dụng winsock và ngăn xếp TCP/IP. Các
ứng dụng yêu cầu Winsock.dll cần làm những gì, nó biên dịch các câu lệnh dịch
chuyển tới bộ giao thức TCP/IP và bộ giao thức TCP/IP chuyển chúng lên mạng. Yêu
cầu là Winsock.dll đang dùng phải có phiên bản đúng với phiên bản của TCP/IP đang
chạy.
3.2.1.2 Các sự kiện của Winsock:
DatArribal: Đây là nơi phát hiện dữ liệu đến thông qua cổng cục bộ.
 Connect: Tạo lập một kết nối tới trạm khác.
 SendProgesss: Phần lớn được kết hợp với việc truyền file. Cho biết muốn
làm gì trong khi nó vẫn xử lý việc gửi thông tin dữ liệu.
 SendComplete: Sau khi gửi dữ liệu hoàn thành cho biết xảy ra chuyện gì.
 Close: Dùng để đóng kết nối, ngắt kết nối.
45

 SendData: Báo cho Winsock điều khiển việc gửi dữ liệu.


 GetData: Báo cho Winsock điều khiển nhận dữ liệu thông đang được gửi
thông qua RemotePort.
3.2.1.3 Loại Socket trong Winsock:
Stream Socket : Cung cấp liên lạc 2 chiều, chuỗi tuần tự và tin cậy. Stream Socket hoạt
động giống như cuộc đàm thoại. Trong Winsock được ký hiệu là kiểu
SOCK_STREAM dùng giao thức điều khiển truyền thông mạng TCP.
Datagram Socket : Hỗ trợ dòng thông báo 2 chiều. Datagarm Socket hoạt động như
việc gửi thư đi gửi thư lại và thiếu độ tin cậy. Trong Winsock được ký hiệu kiểu
SOCK_DGRAM dùng giao thức dữ liệu người dùng UDP.
Sequential Packet Socket : Cung cấp truyền thông 2 chiều, chuỗi tuần tự, tin cậy.
Trong Winsock nó có ký hiệu là kiểu SOCK_SEQPACKET.
Raw Socket : Cung cấp truy cập cơ bản các giao thực truyền thông, cho phép truy cập
trực tiếp các thông tin header của packet tầng thấp (IP).
3.2.1.4 Làm việc với Socket trong Winsock:
 Khởi tạo Socket :
Hàm int socket (int domain, int type, int protocol) được gọi để khởi tạo Socket trong
miền và kiểu xác định. Nếu giao thức không được chỉ rõ hệ thống sẽ mặc định giao
thức hỗ trợ loại socket chỉ định. Các socket nắm giữ sẽ được trả về. Quá trình truyền
thông kết nối qua các địa chỉ. Hàm int bind (int s, const struct sockaddr *name, int
namelen) được gọi để kết hợp đường dẫn hoặc địa chỉ Internet tới Socket. Sử dụng
unlink () rm() để hủy một socket.
 Kết nối các Stream Socket:
Đối với việc kết nối các Socket, một tiến trình thường hoạt động như Server mà tiến
trình khác là Client. Server kết hợp Socket của nó tới đường dẫn hoặc địa chỉ. Sau đó
Server giọ hàm int listen (int s, int backlog) cho SOCK_STREAM. Nó xác định có bao
nhiêu yêu cầu kết nối trong hàng đợi .Một Client khởi tạo kết nối tới Socket của Server
bằng cách gọi hàm int connect (int s, struct sockaddr *name, int namelen) Server gọi
hàm accept() để hoàn tất kết nối cho SOCK_STREAM. Hàm int accept (int s, struct
46

sockaddr *addr, int *addrlen) trả về một socket mới phù hợp với sự liên lạc riêng đó.
Môt server có thể có nhiều kết nối SOCK_STREAM chủ động trong cùng lúc.
 Truyền tải và đóng Stream Socket:
Có một số hàm để gửi và nhận dữ liệu từ Socket SOCK_STREAM đó là read() và
write(). Các hàm send (int s, const char *msg, int len, int flags) , revc (int s, const chả
*buf, int len, int flags) giống với read() và write() nhưng có thêm một số cờ điều
khiển:Dùng hàm close() để đóng Socket.
 Datagram Socket:
Một Datagram Socket không đòi hỏi phải thành lập kết nối. Mỗi thông điệp sẽ mang
một địa chỉ đích. Nếu địa chỉ cục bộ riêng biệt là cần thiết thì việc gọi hàm bind() phải
được gọi trước khi truyền dữ liệu. Dữ liệu được gửi thông qua hàm sendto() hoặc
sendmsg(). Hàm sendto được gọi giống như hàm send() được gọi với địa chỉ đích xác
định. Để nhận các thông báo Datagram Socket ta gọi hàm recvfrom() hoặc recvmsg().
Trong khi revc() yêu cầu một vùng đệm thì recvfrom() yêu cầu tới 2 vùng đệm cho dữ
liệu và cho địa chỉ nguồn. Datagram Socket cũng có thể dùng hàm connect() để kết nối
socket tới một socket đích được xác định trước. Khi công việc hoàn tất thì hàm send()
và recv() được dùng để gửi và nhận dữ liệu. Hàm accept() và listend() không được sử
dụng với Datagram Socket.
3.2.2 .NET Socket:
3.2.2.1 Khái niệm:
.NET Socket tương tự như Winsock là một thư viện lập trình socket cho window
nhưng hoạt động trên nền .NET. Nói cách khác, .NET Socket là một giao diện lập trình
“managed code” của Window Socket (Winsock), tức là nó hoạt động trên nền
Winsock. Do vậy, ta hầu như có thể coi lập trình với .NET Socket giống như lập trình
với Winsock. Trong .NET Socket, chúng ta có 3 loại Socket tương tự như Winsock là
Stream Socket, Datagram Socket và Raw Socket. Hầu hết các lớp dùng để lập trình với
.NET Socket nằm trong Namespace System.Net.Sockets.
47

Hình 3.2. Sơ đồ giao tiếp thông qua .NET Socket


3.2.2.2 Làm việc với .NET Socket:
Nếu làm việc với các tầng cao, .NET Socket đã cung cấp sẵn các lớp TcpListener,
TcpClient và UdpClient:

Hình 3.3 Cơ chế làm việc của .NET Socket


Để làm việc với tầng thấp hơn, ta phải dùng lớp Socket
Khởi tạo Socket
Để khởi tạo 1 Socket ta sử dụng cấu tử: Socket (IPAddress, SocketType,
ProtocolType);:
 Kết nối Socket:
Để kết nối Socket, ta sử dụng hàm Connect() với tham số là địa chỉ IP muốn kết nối
tới.
 Truyền tải dữ liệu thông qua Socket:
48

Để gửi và nhận dữ liệu thông qua .NET Socket, ta sử dụng hàm Send() và Receive() với
các tham số phù hợp.
3.3 Phƣơng pháp tìm kiếm và so khớp xâu chuỗi
3.3.1 Giới thiệu thuật toán Boyer Moore
Thuật toán Boyer Moore [10] là thuật toán có tìm kiếm chuỗi rất có hiệu quả trong thực
tiễn, các dạng khác nhau của thuật toán này thường được cài đặt trong các chương trình
soạn thảo văn bản.
Khác với thuật toán Knuth-Morris-Pratt (KMP), thuật toán Boyer-Moore kiểm tra các
ký tự của mẫu từ phải sang trái và khi phát hiện sự khác nhau đầu tiên thuật toán sẽ tiến
hành dịch cửa sổ đi Trong thuật toán này có hai cách dịch của sổ:
Cách thứ 1: gần giống như cách dịch trong thuật toán KMP, dịch sao cho những phần
đã so sánh trong lần trước khớp với những phần giống nó trong lần sau.
Trong lần thử tại vị trí j, khi so sánh đến ký tự i trên mẫu thì phát hiện ra sự khác nhau,
lúc đó x[i+1…m]=y[i+j...j+m-1]=u và a=x[i]y[i+j-1]=b khi đó thuật toán sẽ dịch cửa
sổ sao cho đoạn u=y[i+j…j+m-1] giống với một đoạn mới trên mẫu (trong các phép
dịch ta chọn phép dịch nhỏ nhất)
Nếu không có một đoạn nguyên vẹn của u xuất hiện lại trong x, ta sẽ chọn sao cho
phần đôi dài nhất của u xuất hiện trở lại ở đầu mẫu.
Cách thứ 2: Coi ký tự đầu tiên không khớp trên văn bản là b=y[i+j-1] ta sẽ dịch sao cho
có một ký tự giống b trên xâu mẫu khớp vào vị trí đó (nếu có nhiều vị trí xuất hiện b
trên xâu mẫu ta chọn vị trí phải nhất)
Nếu không có ký tự b nào xuất hiện trên mẫu ta sẽ dịch cửa sổ sao cho ký tự trái nhất
của cửa sổ vào vị trí ngay sau ký tự y[i+j-1]=b để đảm bảo sự ăn khớp
Trong hai cách dịch thuật toán sẽ chọn cách dịch có lợi nhất.
Thuật toán Boyer-Moore có thể đạt tới chi phí O(n/m) là nhờ có cách dịch thứ 2 “ký tự
không khớp”. Cách chuyển cửa sổ khi gặp “ký tự không khớp” cài đặt vừa đơn giản lại
rất hiệu quả trong các bảng chữ cái lớn nên có nhiều thuật toán khác cũng đã lợi dụng
các quét mẫu từ phải sang trái để sử dụng cách dịch này.
Tuy nhiên chi phí thuật toán của Boyer-Moore là O(m*n) vì cách dịch thứ nhất của
49

thuật toán này không phân tích triệt để các thông tin của những lần thử trước, những
đoạn đã so sánh rồi vẫn có thể bị so sánh lại. Có một vài thuật toán đã cải tiến cách
dịch này để đưa đến chi phí tính toán của thuật toán Boyer-Moore là tuyến tính.
So khớp chuỗi (String Matchching)
Ý nghĩa của ký tự đại diện (wildcard)
Có hai ký tự wildcard thông thường là ? và * .
Dấu hỏi đại diện cho một ký tự duy nhất bất kỳ.
Dấu sao (*) đại diện cho nhiều ký tự bất kỳ hoặc không có ký tự nào cả.
Bạn hãy quan sát vài ví dụ dưới đây:
Mẫu Chuỗi so sánh Kết quả
w?ldcard wildcard khớp
w?ldcard waldcard khớp
w*ldcard wldcard khớp (không có ký tự)
w*ldcard willdcard khớp (có hai ký tự)
w*ldcard* wldcards khớp
Việc xử lý dấu hỏi khá đơn giản. Nếu không có dấu * trong chuỗi mẫu, ta chỉ cần duyệt
lần lượt qua từng cặp ký tự trong chuỗi mẫu và chuỗi cần so sánh. Nếu gặp ký tự ? bên
chuỗi mẫu thì ta luôn luôn bỏ qua (coi như cặp ký tự ở hai chuỗi là khớp). Ta chỉ cần
lưu ý là hai chuỗi phải có cùng chiều dài.
Hàm kiểm tra và cài đặt thuật toán Boyer-Moore
unsigned long CURIFilter::bmSearch(unsigned char *TargetMem,unsigned char
*SourceMem,unsigned long TargetMemLen,unsigned long SourceMemLen,bool&
searchresult)
{//cai dat thuat toan booyer moore
unsigned char searchstr[256]; // Max pattern length is 256.
unsigned char alfa[256]; // Remember where alphabetchars are located.
unsigned char skipsInsens[256]; // Skips array.
unsigned char patlenInsens; // Length of search pattern.
int LenIndex = 0;
50

// Get length and make 'smalls'copy.


unsigned char c = SourceMem[LenIndex];
while ( c != '\0')
{
alfa[LenIndex] = 0;
if (c >= 'A'&& c <= 'Z')
{
searchstr[LenIndex] = c + 0x20;
alfa[LenIndex] = 1;
}
else
{
searchstr[LenIndex] = c;
if (c >= 'a'&& c <= 'z')
alfa[LenIndex] = 1;
}
c = SourceMem[++LenIndex];
}
int len = LenIndex + 1;
// For chars not in pattern.
for (int i = 0; i < 255; i++)
skipsInsens[i] = len; //length + 1.

// For chars in pattern.


// with double chars only right most survives.
for ( int i = 0; i < LenIndex; i++)
{
skipsInsens[searchstr[i]] = LenIndex - i;
if (alfa[i]) skipsInsens[searchstr[i]-0x20] = LenIndex - i;
51

}
patlenInsens = LenIndex;
// Check if searchstr is longer than TargetMem or zero length.
if (patlenInsens > TargetMemLen || patlenInsens == 0)
{
searchresult = false;
return -1;
}

unsigned long Position = 0;


unsigned char * end = TargetMem + TargetMemLen;
int PatternLenIndex = patlenInsens -1;

int j;

for(;;)
{
// main loop for comparing strings.
j = PatternLenIndex;
while (
((TargetMem[j] == searchstr[j]) ||
((alfa[j]) && (TargetMem[j] == (char) (searchstr[j]-0x20))))
&& --j >= 0);

if (j != -1)
{
// Mismatch; align and check for end of TargetMem.
unsigned char* skipindex = (unsigned char*) TargetMem
+ patlenInsens;
52

if (skipindex >= end)


{
searchresult = false;
return -1; // string not in TargetMem.
}

TargetMem += skipsInsens[*skipindex];
Position +=skipsInsens[*skipindex];
}
else
{
// Match found.
searchresult = true;
return Position;
}
}

return -1;
}

int CURIFilter::CheckPattern(unsigned char* in_szPattern, unsigned long


in_ulPatternLen, int* out_matched)//kiem tra chuoi co thoa dieu kien hay khong ?
{
bool bResult = false;

for (int i = 0; i < (int)m_pFilterObj->m_vecPatternSearch.size(); i++)


{ unsigned char *key=m_pFilterObj->m_vecPatternSearch[i].key;
bmSearch(in_szPattern,key,in_ulPatternLen,(unsigned
long)_mbslen(key),bResult);// so khop mau
53

if (bResult == true)
{ bResult = false;
bmSearch(in_szPattern,m_pFilterObj-
>m_vecPatternSearch[i].val,in_ulPatternLen,(unsigned long)_mbslen(m_pFilterObj-
>m_vecPatternSearch[i].val),bResult);
if (bResult==true)
{
*out_matched = i;
return 1;
}

/*if(_mbsstr(s,r.key)!=NULL&& _mbsstr(s,r.val)!=NULL)
{
*out_matched = i;
return 1;
}
*/
}

return 0;
}

3.4 Phƣơng pháp phát hiện tấn công Dos


Thực tế đã chứng minh, khi các cuộc tấn công Dos xảy ra. Lập tức phân tích sẽ
thấy được lưu lượng mạng rất khác thường. Do đó hầu hết các thuật toán phân tích phát
hiện tấn công Dos hiện nay đều dựa trên tính khác thường của lưu lượng mạng. Một số
các công nghệ thống kê được áp dụng để tiến hành phân tích, thống kê những lưu
lượng tải làm việc để phát hiện. Từ những kỹ thuật phân tích này, sẽ có những thuật
54

toán phát hiện để đưa ra các tham số hoặc công nghệ thống kê, các mức độ nguy hiểm
của cuộc tấn công.
- Thông số kiểm tra: Thông số kiểm tra được dùng để phân loại các thuật
toán như số lượng lớn lưu lượng, số địa chỉ IP mới hoặc tỷ lệ các gói tin đến và đi
trong mạng.
- Công nghệ thống kê: Sử dụng các thuật toán thống kê để phân tích mạng.
Ví dụ như ngưỡng giới han phù hợp, phát hiện điểm thay đổi và phân tích wavelet.
- Mức độ phân tích: Khi phân tích các chi tiết các thông số, các mức độ
nguy hiểm sẽ được gán.
Sau đây, tôi sẽ giới thiệu tổng quan về các thuật toán phát hiện Dos hiện nay .
Nếu muốn tìm hiểu kỹ hơn về các thuật toán nêu ở dưới thì có thể tham khảo trong [10]
phần tài liệu tham khảo.

3.4.1 Số lƣợng lớn lƣu lƣợng


- Thuật toán Adaptive Threshold [6](ngưỡng giới hạn khả năng đáp ứng)
Thuật toán này nói chung khá đơn giản và dễ hiểu. Thuật toán phát hiện sự
không bình thường dựa trên sự vị phạm của một ngưỡng khả năng đáp ứng của lưu
lượng mạng trong thời gian gần. Thuật toán đặc biệt có khả năng phát hiện cao nhất khi
kẻ tấn công tiến hành một cuôc tấn công TCP SYN. Thuật toán tin tưởng vào việc kiểm
tra phép đo lưu lượng có vượt qua một ngưỡng giới hạn cụ thể hay không. Nếu vượt
qua, chứng tỏ đã có một cuộc tấn công xảy ra.
- Thuật toán CUSUM (tổng tích lũy)
Thuật toán tổng tích lũy dựa trên giá trị trung bình của một quá trình xử lý thống
kê. Sự phát hiện điểm thay đổi cần phải theo dõi trong các khoảng thời gian. Một công
thức được xây dựng để theo dõi sự thay đổi này, khi vượt qua một ngưỡng giới hạn
chứng tỏ đã xảy ra một cuộc tấn công.

3.4.2 Source IP Address Monitoring (theo dõi địa chỉ IP nguồn)


Thuật toán Source IP Address Monitoring (SIM)[3] dựa trên việc theo dõi và
đánh giá các địa chỉ IP mới. Thuật toán được chia làm 2 phần. Đó là off-line training
và detection and learning. Trong phần off-line training, thuật toán sẽ tiến hành theo dõi,
55

đánh giá phân tích các địa chỉ IP trong khoảng thời gian và đưa các địa chỉ IP vào trong
IP address database (IAD). Những địa chỉ trong IAD được gọi là các địa chỉ thường
xuyên truy cập. IAD xóa những IP hết hạn để giảm thiểu bộ nhớ cho hệ thống và cập
nhật những đia chỉ IP mới. IAD được xây dựng và cập nhật off-line để chắc chắn rằng
trong IAD không bao gồm bất cứ địa chỉ tấn công nào. Còn trong phần detection and
learning, SIM tiến hành thống kê những lưu lượng đến trong các khoảng thời gian. So
khớp các địa chỉ IP đến trong IAD để tìm ra những IP mới. Phân tích những IP mới
này, có một hàm để đánh giá các IP mới (sử dụng thuật toán CUSUM). Khi sự thay đổi
vượt qua ngưỡng giới hạn chứng tỏ đã có một cuộc tấn công xảy ra.

3.4.3 Ratio of Input/Output Traffic (tỷ lệ lƣu lƣợng đến và đi) [11]
Thuật toán dựa trên giả định rằng trong quá trình hoạt động bình thường trên
internet, các gói tin theo hướng ra ngoài internet sẽ tỷ lệ thuận với các gói tin theo
hướng ngược lại. Nếu tỷ lệ này quá lớn chứng tỏ đã có sự tấn công từ bên ngoài.

3.5 Kỹ thuật phát hiện tấn công DDos theo thuật toán CUSUM
Trong giai đoạn này, tiến hành phân tích thống kê các lưu lượng đến giữa hai
khoảng thời gian là  n. Với kỹ thuật phát hiện tấn công này, một bảng băm sẽ được sử
dụng để ghi lại các địa chỉ IP xuất hiện giữa hai khoảng thời gian. Trong bảng băm nay
sẽ gồm 2 trường: IP address và timestamp. So sánh các trường này với các trường
trong IAD để có thể tính toán có bao nhiêu địa chỉ IP mới đã xuất hiện trong các khe
thời gian. Phân tích các địa chỉ IP mới này cho biết khi nào cuộc tấn công DDos xảy ra.
Trước tiên lựa chọn các địa chỉ IP trong mỗi khoảng thời gian  n (n=1,2,3,4…).
Sau đó gán  1=  2=….=  n.
Gọi Tn là tập các địa chỉ IP vừa thiết lập và Dn là các địa chỉ IP trong IAD tại
thời điểm  n. |Tn-Tn  Dn| sẽ là tập các địa chỉ IP mới trong khoảng thời gian  n.
Ta có Xn=|Tn-T  Dn|/Tn: tỷ lệ phần trăm địa chỉ IP mới trên tổng số các địa chỉ
IP trong khoảng thời gian  n.

Đặt Z={Zn,n=1,2,3…} sao cho Zn=Xn-  . Với a=  - 


a là giá trị trung bình của {Zn} trong quá trình lưu lượng mạng bình thường
56

 là giá trị trung bình của {Xn} trong quá trình lưu lượng bình thường
Do đó, khi lưu lượng mạng bình thường tất cả các giá trị của Zn đều âm
Khi có một cuộc tấn công xảy ra, giá trị của Zn sẽ đột nhiên tăng và có giá trị dương.
Lúc này h+a>0, h chính là giá trị trung bình tăng nhỏ nhất trong suốt cuộc tấn công.
Thuật toán CUSUM sẽ tiến hành tổng hợp Zn và được thiết lập bởi công thức
sau:
yn=(yn-1 + Zn)+ và y0=0
Với x+ = x nếu x > 0 và x+ = 0 nếu x <= 0
Trong đó n >= k. Trường hợp không bị tấn công giá trị của yn-1+Zn âm.
Hàm quyết định có cuộc tấn công hay không được định nghĩa như sau:
dN(yn) = 0 nếu yn<= N và dN(yn) = 1 nếu yn > N
Ở đây N là ngưỡng giới hạn cho sự phát hiện tấn công. dN(yn) là hàm quyết định phát
hiện trong thời gian  n.
Ta có công thức:
 N =(  N - m)+/N (1)
1
 N ->  = h | a | (2)
Ở đây  N là thời gian phát hiện,  N là điểm thay đổi. Trong đó m là thời điểm
bắt đầu cuộc tấn công. Để thuật toán CUSUM tối ưu nhất, chọn h=2|a|. Theo nghiên
cứu thuật toán CUSUM có thể chọn |a|=0.05
Trong công thức (1) chọn vị trí nhỏ nhất khi cuộc tấn công bắt đầu. Do vậy  N=m+1.
Vì vậy từ (1) và (2) hoàn toàn có thể tính được giá trị của ngưỡng N.
Dưới đây là lược đồ minh họa đã được thí nghiệm trong bài báo “Detecting
Distrubuted Denial of Service Attacks Using Source Address Monitoring”[10]
57

Hình 3.4: Tỷ lệ phần trăm new IP với  n=10s

Hình 3.5: Thuật toán CUSUM khi lƣu lƣợng mạng bình thƣờng
58

Hình 3.6: Tấn công với 200 địa chỉ IP mới


59

CHƢƠNG 4. THIẾT KẾ VÀ XÂY DỰNG FIREWALL CHỐNG TẤN CÔNG


DOS VÀ SQL INJECTION
4.1 Thiết kế chƣơng trình
Từ quá trình tìm hiểu và phân tích các kiểu tấn công Dos, Sql Injection trên
internet, đề tài nghiên cứu giải pháp dùng firewall bảo vệ máy chủ trước các tấn công
Sql injection và Dos được thử nghiệm tại phòng máy Đại học Lạc Hồng.
Phương pháp xây dựng hệ thống và triễn khai thực nghiệm dựa trên các nguyên tắc cơ
bản như sau :
1. Xây dựng một tập luật dùng để so sánh với các nội dung chặn bắt được.
2. Xây dựng một module có chức năng phát hiện và ngăn chặn được các dấu hiệu
tấn công Sql Injection.
3. Tích hợp một module có khả năng phát hiện và ngăn chặn tấn công Dos dựa vào
các thuật toán phát hiện tấn công Dos được xây dựng sẵn.
4.2 Xây dựng chƣơng trình.
4.2.1 Mô hình tổng quát

Http filter sql injection và dos


PC Filter

Firewall
PC
Router

PC

Server
Web

Hình 4.1 Sơ đồ tổng quát cách đặt bộ lọc trên hệ thống


 Giới thiệu về mô hình :
60

- Ứng dụng được xây dựng với chức năng chặn bắt và ngăn chặn các gói tin có dấu
hiệu tấn công về Dos và Sql Injection, nên sẽ được cài đặt trên một máy chủ
windows server 2003 và được đặt tại vị trí sau router kết nối với internet.
- Mọi thông tin khi đi vào và đi ra trên hệ thống đều phải qua server này xử lý. Nếu
phát hiện có dấu hiệu tấn công sẽ tiến hành xóa gói tin và khóa IP của máy tấn
công.
4.2.2 Xây dựng ứng dụng
Chương trình xây dựng firewall để bảo vệ trước các tấn công Sql injection và Dos sẽ
bao gồm các chức năng sau:
4.2.2.1. Module 1 : phát hiện và ngăn chặn tấn công Sql Injection
a. Sơ đồ xử lý gói tin để phát hiện và chống Sql Injection

Client Http Filter Web Server Database

Yêu cầu
Kiểm tra có
SQL Injection
Từ chối

Yêu cầu Kiểm tra không có


SQL Injection
Yêu cầu
Yêu cầu

Trả lời

Hình 4.2 Sơ đồ xử lý Sql Injection


 Sơ đồ hoạt động theo các bước sau :
61

o Bước 1: Client gửi yêu cầu đến server.


o Bước 2: Gói tin sẽ được xử lý bởi bộ lọc gói tin của firewall. Có 2 trường hợp
sẽ xảy ra
 Trường hợp 1 : khi gói tin chứa nội dung trùng khớp với tập luật của
firewall thì firewall sẽ tiến hành xóa gói tin.
 Trường hợp 2 : Khi gói tin chứa nội dung không khớp với tập luật thì
firewall sẽ cho đi qua.
Chương trình thực hiện bắt gói tin sau đó đưa vào xử lí, trong quá trình xử lí gói tin
được chia thành hai hướng chính tùy theo người dùng tùy chọn:
 Chặn gói tin khi có dấu hiệu tấn công.
 Bắt gói tin để kiểm tra và xử lý gói tin.
Sơ đồ chức năng của chương trình như sau:

Filter Phát hiện SQL

Khởi động Chặn gói tin

Dừng Hiện thông báo


Hình 4.3. Sơ đồ phân cấp chức năng phát hiện Sql injection
- Bộ lọc filter :
o Khởi động: bật tính năng chặn bắt và lọc gói tin
o Dừng : tắt bộ lọc
62

Hình 4.4 Cơ sở dữ liệu của bộ lọc trên firewall.


- Phát hiện Sql injection sẽ có 2 bước xử lý:
o Chặn gói tin đó lại.
o Hiện thông báo tại màn hình Web client
o Thông báo trạng thái bị tấn công cho Admin.
b. Chức năng chính của module phát hiện Sql Injection
63

Hình 4. 5 Chức năng phát hiện tấn công sql injection.


- Chức năng chặn bắt các gói tin khi đi qua firewall.
- Dưa vào bộ lọc được định nghĩa sẵn cho phép nhận diện được các gói tin có chứa
các dấu hiệu tấn công.
- Với mỗi gói tin bắt được thì tùy theo bộ lọc mà firewall sẽ có cách hành xử tương
ứng. Cho phép được đi qua hay bị loại bỏ, sau khi loại bỏ gói tin sẽ tiến hành ghi
nhận lại cuộc tấn công đó và sẽ thông báo cho người quản trị biết.
4.2.2.2 Module 2 : phát hiện và ngăn chặn tấn công Dos
a. Sơ đồ xử lý tấn công Dos

Client Http Filter Firewall Server

Yêu cầu
Kiểm tra thấy
có dấu hiệu tấn
Khóa Ip công Dos

Yêu cầu

Kiểm tra không có


dấu hiệu tấn công
Dos

Cho phép đi qua

Trả lời
Trả lời

Hình 4.6 Sơ đồ xử lý tấn công Dos


64

 Sơ đồ hoạt động theo các bước sau :


o Bước 1: Client gửi yêu cầu đến server.
o Bước 2: Gói tin sẽ được xử lý bởi bộ lọc gói tin của firewall. Có 2 trường hợp
sẽ xảy ra
 Trường hợp 1 : khi phát hiện Ip có dấu hiệu tấn công Dos, firewall
sẽ tiến hành khóa Ip đó lại không cho tiếp tục request tới server.
 Trường hợp 2 : Nếu Ip không có những dấu hiệu tấn công Dos,
firewall sẽ cho phép gói tin đi qua.
 Chức năng filter ip có dấu hiệu tấn công Dos
Chặn IP: Với kỹ thuật phát hiện tấn công này, một bảng băm sẽ được sử dụng để
ghi lại các địa chỉ IP xuất hiện giữa hai khoảng thời gian. Trong bảng băm nay sẽ gồm
2 trường: IP address và timestamp. So sánh các trường này với các trường trong IAD
để có thể tính toán có bao nhiêu địa chỉ IP mới đã xuất hiện trong các khe thời gian.
Phân tích các địa chỉ IP mới này cho biết khi nào cuộc tấn công Dos xảy ra.

Filter
Packet
Dos

Không có dấu hiệu tấn


công DOs
Filter
function xử

Server
Có dấu hiệu tấn
công DOs
Khóa
IP, ngắt
kết nối

Hình 4.7 Sơ đồ xử lý gói tin có dấu hiệu tấn công Dos

c. Chức năng chính của module phát hiện tấn công Dos
65

Hình 4.8 Module phát hiện và ngăn chặn tấn công Dos
- Module này với nhiệm vụ chính là phát hiện được các ip có dấu hiệu tấn công Dos.
- Dựa vào thuật toán Cusum sẽ tiến hành phân tích thời gian gói tin gửi yêu cầu và
trả lời lại server. Nếu gửi yêu cầu nhưng sau khi vượt quá ngưỡng thời gian cho
phép mà vẫn không tiến hành trả lời lại server thì sẽ tiến hành block ip.
- Sau khi block ip tấn công, sẽ ghi nhận vào log hệ thống và ngăn chặn ip tấn công
đó vào lần kế tiếp.
4.3 Thực nghiệm và đánh giá hệ thống mạng
4.3.1 Cài đặt
o Server
- Hệ điều hành Windows Server 2003 ( hoặc thấp hơn )
- Cơ sở dữ liệu lưu trên một file text riêng.
- Chương trình cài đặt và cơ sở dữ liệu thực nghiệm có trong bộ cài đặt kèm
theo.
- Giao diện và chi tiết sử dụng sẽ được trình bày trong 4.3.2
o Client
- Được thực hiện qua bất kỳ máy tính nào có nối mạng và được cài đặt trình
duyệt web ( Internet Explorer, Opera, FireFox,… )
4.3.2 Giao diện và chi tiết sử dụng
a. Khởi động ứng dụng
Sau khi tiến hành cài đặt vào máy chủ ta tiến hành khởi động ứng dụng lên bằng cách
click chuột vô ứng dụng.
66

Hình 4. 9 Giao diện chương trình.


b. Cách sử dụng chức năng phát hiện Sql Injection
- Bước 1: Chọn bộ lọc từ firewall
67

Hình 4.10 Mở bộ lọc từ khóa của firewall


- Tại tab Phát hiện Sql Injection nhấn nút khởi động để mở chức năng phát hiện.
- Nhấn nút Kết thúc để tắt chức năng phát hiện.

Hình 4.11 Giao diện khởi động ứng dụng phát hiện Sql Injection
68

- Khi phía client bắt đầu tấn công vào web server để kiểm tra có bị lỗi sql injection
hay không, người tấn công sẽ dùng các từ khóa sql như: or, having, select …
- Các từ khóa đó sẽ được chứa trong các packet, firewall bắt được gói tin đó sẽ đọc
nội dung bên trong packet này. Nội dung sẽ được so sánh với tập luật
SQLDATA.text và sẽ có hướng xử lý phù hợp.

Hình 4.12 Phía client tiến hành tấn công kiểm tra lỗi Sql Injection

Hình 4.13 Thông báo được gửi từ phía firewall cho client khi phát hiện có tấn công
69

Hình 4.14 Màn hình phía server khi phát hiện có tấn công Sql injection.
c. Cách sử dụng chức năng phát hiện Dos
Tại giao diện chính của ứng dụng ta chọn tab Phát hiện Dos
- Bước 1: Nhấn nút khởi động sẽ khởi động tính năng phát hiện Dos

Hình 4.15 Giao diện phát hiện Dos


70

Tại phần này ta có 5 tab :


- Tab blockedIp‟s : hiện thị những IP bị phát hiện có dấu hiệu tấn công Dos và bị
khóa không cho gửi yêu cầu tới server.
- Tab Traffic : hiển thị số lượng những Ip kết nối tới server.
- Tab Local port : hiển thị những port đang chạy tại Server.
- Tab Conections : hiển thị số connections đang kết nối tới Server.
- Tab Protected : hiển thị những port được bảo vệ.

Bƣớc 1 : Khi phía Client tiến hành tấn công Dos bằng hình thức TCP connections (
dùng tools HTTP Fucker )

Hình 4. 16 Dùng tools HTTP Fucker Hình 4.17 Tools theo dõi các hình thức tấn công
Bƣớc 2 : phía server khi phát hiện có một tấn công Dos vào hệ thống Admin sẽ tiến
hành bật chức năng phát hiện và ngăn chặn Dos
71

Hình 4.18 Chức năng phát hiện và ngăn chặn Dos đang chạy
- Ứng dụng phát hiện và giảm thiểu được cuộc tấn công Dos bằng hình thức TCP
Connections.
- Tuy nhiên khi bị tấn công Dos thì server sẽ bị treo nên phải có một khoảng thời
gian chờ để máy chủ phục hồi.
- Sau khi phát hiện cuộc tấn công Admin có thể xem lại nhật ký cuộc tấn công bằng
chức năng see log.
72

Hình 4. 19 File log ghi lại nhật ký các cuộc tấn công Dos
4.3.3 Thực nghiệm
Tiến hành thử nghiệm trên hệ thống phòng máy tại Đại học Lạc Hồng. Hệ thống
phòng máy tại Lạc Hồng bao gồm tất cả là 11 phòng máy con, 1 phòng máy chủ.
Tiến hành cài đặt thử nghiệm tại phòng máy 2 với thông số như sau :
- 1 phòng máy bao gồm 50 máy con có kết nối internet, máy có cấu hình
khá tốt : CPU Dual Core 2GHZ, Ram 2GB, Window 7.
- 1 máy server với cấu hình : CPU P4, Ram 2GB, window server 2003
SP1.
 Thử nghiệm tấn công Dos.
Hình bên dưới miêu tả dung lượng băng thông mạng khi chưa có cuộc tấn công
Dos nào diễn ra.
73

Hình 4.20 Sơ đồ lưu lượng mạng khi bình thường

- Ta tiến hành cho máy con chạy tools HTTP Fucker gửi yêu cầu lên server web với
số tiến trình gửi trên 1 pc là 100.

Hình 4.21 Tools tấn công Dos vào web server

- Khi có tấn công Dos, ta dùng tools kiểm tra dung lượng băng thông mạng sẽ thấy
dung lượng tăng cao một cách bất thường.
74

Hình 4.22 Sơ đồ lưu lượng khi có tấn công Dos


- Sau khi bật chức năng phòng chống Dos trên server, ta thấy băng thông mạng đã
trở lại bình thường.

Hình 4.23 Sơ đồ khi chạy ứng dụng phòng chống


 Thử nghiệm tấn công Sql Injection.
- Đã được miêu tả tại mục 4.3.2.b
+ Ưu điểm:
- Đã phát hiện và ngăn chặn được những tấn công về Sql Injection.
- Phát hiện được Ip tấn công Dos và tiến hành khóa Ip tấn công.
75

- Hiệu suất chương trình chạy tốc độ ổn định.


+ Khuyết điểm:
- Vẫn phải nhập tập luật bằng tay để tiến hành so khớp
- Giao diện vẫn chưa đẹp mắt.
- Tốc độ phát hiện và khóa Ip tấn công Dos vẫn chưa tối ưu.
4.3.4 Tính khả dụng:
Hệ thống có tính khả dụng cao, dễ triễn khai, nâng cấp và tính bảo mật cao.
4.3.5 Khả năng bảo trì :
Việc phát hiện và ngăn chặn các tấn công thường được thực hiện trên Server vì
vậy việc bảo trì, nâng cấp và cải tiến có thể thực hiện dễ dàng mà không làm thay đổi
hệ thống mạng hiện hữu.
76

CHƢƠNG 5. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN


5.1 Kết luận
Luận văn đã đạt được những kết quả sau:
- Đã tìm hiểu, nghiên cứu về các loại hình tấn công sql injection, dos thông dụng
hiện nay, nghiên cứu lý thuyết liên quan về các hình thức tấn công mới trên lĩnh
vực an ninh mạng.
- Đề xuất một phương pháp và các thuật toán giúp ngăn chặn tấn công sql
injection và dos.
- Xây dựng một hệ thống phát hiện và ngăn chặn được các tấn công về Sql
Injection và Dos :
 Chương trình đã phân tích và phát hiện được những loại tấn công sql
injection và dos.
 Đã xây dựng được một tập luật dành cho firewall riêng rẽ dùng để phát
hiện tấn công Sql injection. Nếu có phát sinh những cú pháp tấn công
mới thì hệ thống có thể dễ dàng cập nhật mới.
Qua đó hệ thống đã cho ra kết quả rất khả quan về khả năng ngăn chặn tấn công, phân
tích và phân loại các loại hình tấn công một cách nhanh chóng. Từ đó tiết kiệm thời
gian, nhân lực và chi phí.
Tuy nhiên luận văn vẫn còn một số hạn chế sau:
- Bộ thư viện các tập luật còn hạn chế và dữ liệu thử nghiệm còn nhỏ nên chưa
thể đánh giá hiệu quả của hệ thống một cách chính xác nhất.
- Chưa kiểm chứng thử nghiệm trên hệ thống internet toàn cầu khi có nhiều máy
tấn công cùng một lúc.
- Người quản trị phải tự cấu hình bằng tay các tập luật mới khi muốn đưa vào cơ
sở dữ liệu.
5.2 Hƣớng phát triển
- Cải tiến chương trình có thể tự động cập nhật các hình thức tấn công mới vào cơ
sở dữ liệu.
- Cải tiến thuật toán để tăng tốc độ xử lý.
- Nghiên cứu phát triển trên hệ thống window server 2008.
TÀI LIỆU THAM KHẢO
Tiếng Việt:
[1]. Lê Đình Duy (2003) Tấn Công Kiểu SQL Injection – Tác Hại Và Cách Phòng
Tránh , Đại học Khoa Học Tự Nhiên TPHCM.
[2]. Nguyễn.Thanh Nghị, Tấn công từ chối dịch vụ Dos,Ddos,DRDos. HVA-2008
Tiếng Anh:
[3] T. Peng, C. Leckie, and K. Ramamohanarao. (2003), Detecting distributed denial of
service attacks using source ip address monitoring.
[4]. Wikipedia , Firewall , www.vi.wikipedia.org/Tường_Lửa
[5] Tao Peng Christopher Leckie Kotagiri Ramamohanarao, Protection from
Distributed Denial of Service Attack Using History-based IP Filtering.
[6].Source code filter : http://www.codeproject.com/Articles/19886/Developing-a-
SOHO-HTTP-filter-step-by-step
[7]. Justin Clarke, SQL Injection Attacks and Defense, published in 2009 and printed in
United State of America.
[8] Martin Nystrom , SQL Injection Defenses, March 2007 and publisher O‟Reilly Media
[9].GIANCARLO R., 1986,The Boyer-Moore-Galil string searching strategies revisited.
[10].Mbabazi Ruth Reg. No. 2005/HD18/4029U B.Sc Elec (Mak), Victim-based
defense against IP packet flooding denial of service attacks.

You might also like