Tải bản đầy đủ (.docx) (4 trang)

Giải pháp sử dụng snort để phát hiện một số kiểu tấn công phổ biến hiện nay vào các ứng dụng web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (140.7 KB, 4 trang )

Giải pháp sử dụng Snort để phát hiện một số kiểu tấn công phổ
biến hiện nay vào các ứng dụng Web
1. Giới thiệu
Theo số liệu thống kê từ công ty bảo mật hàng đầu hiện nay Acunetix, thời gian
gần đây số lượng các cuộc tấn công vào ứng dụng web đã tăng lên nhanh chóng
(75% các cuộc tấn công được thực hiện là ở lớp ứng dụng web) [Xem 1]. Trong
đó hai kĩ thuật tấn công được các hacker sử dụng phổ biến là cross-site
scripting và sql injection [Xem 2] và hình dưói đây:

Nguồn: acunetix.com
Kiểu tấn công cross-site scripting (hay còn gọi là xss) được các hacker
tiến hành bằng cách nhúng các thẻ script vào một url (uniform resource locator)
và tìm cách lừa người dùng nhấn vào những liên kết này. Khi đó đoạn mã độc
hại này sẽ được thực thi trên máy tính của nạn nhân. Kĩ thuật thực hiện các cuộc
tấn công kiểu này không có gì phức tạp và chủ yếu là hacker lợi dụng sự tin cậy
giữa người dùng và server (bởi vì các url dường như xuất phát từ nguồn đáng tin
cậy) cùng với việc không thẩm tra kĩ càng dữ liệu vào/ra ở phía server để từ
chối phục vụ những url bị chèn thêm các mã độc hại. Còn SQL Injection liên
quan đến một kĩ thuật chèn các từ khoá, các lệnh của ngôn ngữ SQL (là ngôn
ngữ dùng để truy vấn, thao tác trên một cơ sở dữ liệu quan hệ) vào dữ liệu đầu


vào của các ứng dụng web để điều khiển quá trình thực thi câu lệnh SQL ở
server.
Bài báo này mô tả một kĩ thuật để phát hiện các kiểu tấn công SQL injection và
cross-site scripting dùng Snort. Phần một của bài báo sẽ giới thiệu về snort .
Phần 2 của bài này sẽ mô tả cách viết các luật cho snort để chống lại hai kiểu
tấn công nói trên.
2. Vậy snort là gì?
Snort là một kiểu IDS (Instruction Detection System). Nói ngắn gọn IDS là
một hệ thống được cài đặt trên mạng (hay máy tính) của bạn và nhiệm vụ của nó


là giám sát những gói tin vào ra hệ thống của bạn. Nếu một cuộc tấn công được
phát hiện bởi Snort thì nó có thể phản ứng bằng nhiều cách khác nhau phụ thuộc
vào cấu hình mà bạn thiết lập, chẳng hạn như nó có thể gởi thông điệp cảnh báo
đến nhà quản trị hay loại bỏ gói tin khi phát hiện có sự bất thường trong các gói
tin đó.
Tuy nhiên snort cũng có điểm yếu. Đó là tương tự như các bộ quét virus (virus
scanner), snort chỉ có thể chống lại các cuộc tấn công một cách hiệu quả nếu
như nó biết được dấu hiệu (signature) của các cuộc tấn công đó. Dựa vào điểm
này, các hacker "cao thủ" có thể điều chỉnh các cuộc tấn công để thay đổi
signature của cuộc tấn công đó. Từ đó các cuộc tấn công này có thể "qua mặt"
được sự giám sát của snort.
Như vậy có thể thấy rằng, để snort hoạt động một cách hiệu quả thì một trong
những yếu tố quan trọng cần phải chú ý là các luật viết cho snort. Khi snort hoạt
động, nó sẽ đọc các tập luật, giám sát luồng dữ liệu chạy qua hệ thống và sẽ
phản ứng nếu có bất kì luồng dữ liệu nào phù hợp với tập luật của nó. Cụ thể
hơn, tập luật có thể được tạo ra để giám sát các nỗ lực quyét cổng (scanning),


tìm dấu vết (footprinting), hoặc nhiều phương pháp khác mà các hacker dùng để
tìm cách chiếm quyền hệ thống. Tập luật này có thể được tạo ra bởi người dùng
hoặc người dùng có thể truy cập đến trang chủ của snort
là: để lấy về.
Bây giờ chúng ta hãy xem một luật được viết cho snort và tìm hiểu xem snort
hiểu chúng như thế nào.
alert icmp !$HOME_NET any -> $HOME_NET any (msg:"IDS152 - PING
BSD";
content: "|08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17|";
itype: 8;
depth: 32;)


Phần đầu của luật mô tả cách hành động (rule's action) là alert, giao thức
(ICMP) và địa chỉ IP nguồn, đích cũng như thông tin về port. Phần này gọi là
“rule header”. Ở đây, $HOME_NET chỉ là một biến đại diện cho mạng của bạn
và nó có thể được khai báo như sau: var HOME_NET 192.168.1.1/24
Phần còn lại của luật, được biết như “rule option”, chứa thông điệp báo động và
thông tin sẽ được snort sử dụng để kiểm tra xem liệu luật đó có phù hợp (match)
với gói tin không. Để hiểu rõ hơn chúng ta sẽ xem chi tiết của một lệnh ping sau
đây:
07/23-09:46:41.866911 192.168.1.10 -> 192.168.1.1 ICMP TTL:50
TOS:0x0 ID:2403
ID:8474 Seq:256 ECHO
36 12 7B 39 1B C6 0B 00 08 09 0A 0B 0C 0D 0E 0F 6.{9............
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
30 31 32 33 34 35 36 37 01234567


Khi snort giám sát các gói tin xuyên qua mạng của ta. Luật trên của chúng ta
yêu cầu snort thẩm tra tất cả các gói tin ICMP nào không phải bắt nguồn từ
mạng của ta “!$HOME_NET” và đến mạng của ta “->HOME_NET”. Thông
số depth trong luật được gán là 32, nghĩa là snort sẽ tìm trong 32 byte đầu của
gói tin để tìm kiếm nội dung có trong trường “content”. Nếu nội dung của
trường “content” trong luật phù hợp với nội dung trong gói tin (ở trong trường
hợp này là từ byte số 9 đến byte 24), snort sẽ phát sinh ra một thông báo, thông
báo này sẽ được log lại. Nội dung của thông báo được log lại là: "IDS152 PINGBSD". Trường “itype” chỉ kiểu của một gói tin ICMP, trong trường hợp
này là 8 tức là một gói tin ICMP có kiểu echo request.
3. Kết luận
Trong phần một của bài này đã giới thiệu hai kiểu tấn công phổ biến hiện nay
vào lớp ứng dụng web đó là kiểu cross-site scripting và sql injection. Đồng thời
phần này cũng giới thiệu ngắn gọn snort, một trong những IDS được sử dụng

nhiều nhất cho đến thời điểm này và cách snort hiểu các luật như thế nào.
Phần 2 của bài này sẽ mô tả cách thiết kế các luật để chống lại các kiểu tấn công
trên.
Tài liệu tham khảo:
1. />2. />3.



×