Tải bản đầy đủ (.pdf) (11 trang)

Đề xuất giải pháp giám sát mạng với mã nguồn mở winpcap

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 (325.64 KB, 11 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO TẬP ĐOÀN BƯU CHÍNH VIỄN THÔNG VIỆT NAM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG




NGUYỄN THÀNH NHÂN


Đ
Ề XUẤT GIẢI PHÁP GIÁM SÁT MẠNG

VỚI MÃ NGUỒN MỞ WINPCAP



CHUYÊN NGÀNH : TRUYỀN DỮ LIỆU VÀ MẠNG MÁY TÍNH
MÃ SỐ : 60.48.15


LUẬN VĂN THẠC SĨ KỸ THUẬT




NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS.TSKH. HOÀNG ĐĂNG HẢI



HÀ NỘI - 2010



20

- Đề xuất giải pháp giám sát mạng với Winpcap.
Trong phần này, bài đã đưa ra được mô hình kiến trúc hệ
thống giám sát mạng, giải pháp giám sát mạng LAN sử
dụng Winpcap và các kết quả thử nghiệm với các phần
mềm nguồn mở Windump, Wireshark sử dụng thư viện
phần mềm nguồn mở Winpcap.
Hiện nay, các công cụ phần mềm mã nguồn mở có
khá nhiều trên mạng. Có thể sử dụng các công cụ phần
mềm mã nguồn mở này để phát triển tiếp các phần mềm
tương tự Windump hoặc Wireshark…, tích hợp chúng vào
các hệ thống giám sát mạng. Làm được điều này, ta có thể
làm chủ được công nghệ, tránh phải lệ thuộc vào nước
ngoài và đảm bảo được tính an ninh của các sản phẩm bảo
mật đặc thù của Việt Nam. Việc nghiên cứu tiếp tục tìm
hiểu các công cụ phần mềm mã nguồn mở và khả năng
ứng dụng phát triển phần mềm của chúng là những hướng
phát triển khả thi tiếp theo.




1

CHƯƠNG 1
TỔNG QUAN VỀ GIÁM SÁT MẠNG MÁY TÍNH

1.1 Nhu cầu giám sát mạng máy tính

Việc nghiên cứu giám sát lưu lượng mạng máy tính
trở nên rất quan trọng và cấp thiết khi mà lưu lượng mạng
phát triển theo hàm số mũ. Những thông tin và số liệu thu
được qua giám sát mạng có thể trợ giúp đắc lực cho các
công tác:
- Quy hoạch mạng, tối ưu lưu lượng.
- Quản lý sử dụng hiệu quả tài nguyên mạng.
- Đảm bảo chất lượng dịch vụ (QoS – Quality of
Service) thích hợp cho tất cả các ứng dụng.
- Đảm bảo an toàn an ninh mạng.
1.2 Những mục tiêu của việc giám sát mạng máy tính
- Nghiên cứu cấu trúc mạng, phục vụ cho việc quy
hoạch mạng và tối ưu mạng.
- Cung cấp chất lượng dịch vụ (Quality of Service –
QoS) phù hợp cho các ứng dụng.
- Phát hiện những yếu tố bất thường ảnh hưởng đến an
ninh mạng.
1.3 Giám sát an ninh mạng máy tính
Những yêu cầu thực tế về giám sát an ninh cụ thể như
sau:
- Cung cấp thông tin về trạng thái mạng.
- Cảnh báo về những dấu hiệu tấn công.
- Bảo vệ dữ liệu, tài nguyên mạng.
- Bảo vệ uy tín của đơn vị.
1.4 Các đặc trưng cơ bản của lưu lượng mạng máy tính
1.4.1 Các tập lưu lượng điển hình và đặc tính
1) Lưu lượng của các luồng có kiểm soát. Lưu lượng
này có yêu cầu chặt chẽ về các thông số liên quan đến trễ
2


đầu - cuối và trễ jitter, tỉ lệ mất gói… Các gói tin thường
đến từ các ứng dụng truyền có tín hiệu âm thanh và hình
ảnh, được truyền đi với các yêu cầu đảm bảo chất lượng
dịch vụ khắt khe.
2) Lưu lượng các luồng gói tin có yêu cầu mềm dẻo
về các thông số lưu lượng.
1.4.2 Các thông số điển hình của lưu lượng mạng máy
tính
1) Những thông số về đặc tính mẫu lưu lượng mạng máy
tính:
+ Dữ liệu chính được thu thập bao gồm: Tốc độ gói
tin đến, Thời gian chuyển tiếp các gói, Phân phối độ dài
các gói, Thời gian sống của đường truyền.
+ Dữ liệu thống kê được thu thập bao gồm: Giá trị
trung bình, Giá trị đỉnh, Giá trị đột biến (tiêu chuẩn độ
lệch), Tính tự tương quan (thông số Hurst H) của các dữ
liệu lưu lượng.
2) Các thông số thể hiện đặc tính mạng:
+ Khả năng sử dụng và thông lượng.
+ Sự thụ động (chỉ khả năng chiếm giữ một liên kết).
+ Khả năng không thể dự báo trước (chỉ sự ổn định và
bền vững của một liên kết).
+ Khả năng đáp ứng sự thay đổi của lưu lượng IP.
+ Độ ổn định của định tuyến.
+ Độ tin cậy (khả năng định vị chính xác một số lưu
lượng bất thường và khoá chúng lại).
3) Các thông số thể hiện đặc tính QoS của một liên kết:
+ Trễ đầu - cuối
+ Trễ jitter
+ Tỷ lệ mất gói

+ Thời gian khứ hồi (RTT - Round Trip Time)
19

3.5.2 Thử nghiệm Wireshark
WireShark là phần mềm bắt và phân tích gói tin, có
giao diện đồ họa nên rất dễ sử dụng. Bản thân Wireshark
cũng là một chương trình được viết dựa trên thư viện
Winpcap, nên phải cài đặt Winpcap trước hoặc cùng lúc
với tiến trình cài đặt Wireshark.
Sau khi khởi động Wireshark, cần thiết lập các tùy
chọn bắt gói tin cho Wireshark (menu Capture - Options).
Sau khi đặt các tùy chọn cần thiết, ta nhấn nút Start
để bắt gói tin.
Phân tích gói tin với Wireshark
Mất kết nối TCP (A Lost TCP Connection)
Xử lý tình huống về băng thông với Wireshark
Ví dụ, toàn bộ mạng LAN download rất chậm. Có thể
kiểm tra điều này thông qua việc cài đặt Wireshark lắng
nghe toàn bộ đầu ra của mạng (ở mô hình thử nghiệm thứ
2).

CHƯƠNG 4
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TIẾP

Trong số các công cụ theo dõi, giám sát lưu lượng
mạng, WinPcap là một thư viện phần mềm mã nguồn mở
cho phép bắt giữ các gói tin, có thể sử dụng khá tốt cho
việc theo dõi, giám sát lưu lượng mạng. Sau quá trình thực
hiện, bài luận văn đã đạt được các nội dung nghiên cứu
chính như sau:

- Nghiên cứu tổng quan về vấn đề giám sát mạng máy
tính.
- Nghiên cứu công cụ phần mềm mã nguồn mở
Winpcap.
18

Để in tất cả các gói tin ICMP mà không phải là echo
requests/replies (tức là không phải là ping packets)
Lệnh: windump icmp[icmptype] != icmp-echo and
icmp[icmptype] != icmp-echoreply
Để in tất cả các gói tin IPv4 HTTP đến và đi từ cổng
80, ví dụ chỉ in các gói có chứa dữ liệu, các gói SYN và
FIN và ACK.
Lệnh: windump tcp port 80 and (((ip[2:2] -
((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)
Phân tích các gói tin TCP với Windump
Khi bắt gói tin với Windump, khuôn dạng chung cho
dòng giao thức TCP là:
src > dst: flags data-seqno ack window urgent options
Sau đây là phần mở đầu của một rlogin từ máy chủ
rtsg đến máy chủ csam
rtsg.1023 > csam.login: S 768512:768512(0) win 4096
<mss 1024>
csam.login > rtsg.1023: S 947648:947648(0) ack 768513
win 4096 <mss 1024>
rtsg.1023 > csam.login: . ack 1 win 4096
rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
csam.login > rtsg.1023: . ack 2 win 4096
rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077

csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1
Dòng đầu tiên nói rằng cổng tcp 1023 trên máy rtsg
gửi một gói dữ liệu tới cổng login trên máy csam. S chỉ ra
rằng cờ SYN được thiết lập. Số thứ tự của gói là 768.512
và nó không chứa dữ liệu. Không có ack, nhận được các
cửa sổ có 4.096 byte và đã có một max-segment-size tùy
chọn yêu cầu một MSS với 1.024 byte.
3

1.5 Các phương thức thu thập thông tin lưu lượng
mạng máy tính
1.5.1 Các phương thức thu thập thông tin cơ bản
 Đo thụ động
Một máy đo lưu lượng (có thể là phần cứng hoặc phần
mềm) được gắn tại vị trí nút mạng và ghi lại lưu lượng
ra/vào nút mạng. Một cách thông dụng nhất, máy đo được
gắn vào liên kết giữa các node mạng, ghi lại thông tin về
lưu lượng mạng trên liên kết đó.
 Đo tích cực
Lưu lượng mạng được nghiên cứu bằng cách gửi dữ
liệu qua mạng (thường là các gói tin để đo kiểm từ đầu đến
cuối) và quan sát kết quả. Giao thức bản tin điều khiển
Internet (ICMP) có thể được sử dụng cho mục đích này.
 Giám sát thông tin điều khiển
Các thông tin điều khiển mạng ví dụ như về định
tuyến hoặc thông tin quản lý mạng được bắt giữ và phân
tích.
1.5.2 Phương thức lẫy mẫu thu thập thông tin
Lấy mẫu là phương pháp phổ biến cho tất cả các hệ

thống giám sát nhằm khắc phục khó khăn nêu trên. Đương
nhiên, độ chính xác và mức độ phù hợp của phương pháp
này tùy theo từng loại ứng dụng, từng loại lưu lượng.
1.5.3 Các yêu cầu đặt ra trong thu thập thông tin lưu
lượng
- Tính độc lập giữa giao thức và lưu lượng
- Khả năng mở rộng
- Tối ưu về thời gian thu thập và tính dư thừa của dữ
liệu thu được
- Thích ứng với sự thay đổi về hình trạng mạng
- Đảm bảo độ tin cậy và bảo mật
4

- Không ảnh hưởng đến hoạt động bình thường của
mạng
- Khả năng dự báo
1.6 Các vị trí giám sát, thu thập thông tin trên mạng
1.6.1 Phạm vi giám sát vùng mạng cấp 1
Các giải pháp sử dụng thu thập thông tin có thể là: sử
dụng Hub, SPAN port, passive Tap, các phần mềm sensor.
1.6.2 Phạm vi giám sát vùng mạng cấp 2
Các giải pháp thu thập thông tin có thể là: sử dụng
Hub, SPAN port, passive Tap. Các sensor là các thiết bị
thu thập thông tin, có thể nối với các Hub, hoặc các
Switch, Router để lấy thông tin.
1.6.3 Phạm vi giám sát tại máy chủ hoặc máy trạm
người dùng
Việc thu thập thông tin có thể thông qua một phần
mềm (phần mềm sensor) cài đặt trên máy chủ/ máy trạm
người dùng hoặc qua một thiết bị sensor kết nối trực tiếp

với máy chủ cài / máy trạm người dùng.
1.7 Các thiết bị trung gian cho giám sát, thu thập thông
tin trên mạng
1.7.1 Thiết bị Hub
Đây là phương thức đơn giản nhất. Hub là thiết bị nối
mạng gửi song song các gói tin ra tất cả các cổng nối.
Thiết bị sensor nối vào một cổng của Hub sẽ thu được mọi
gói tin truyền giữa các máy tính nối vào Hub.
1.7.2 SPAN port
SPAN là viết tắt của từ “Switch Port ANalyzer”, hay
còn gọi là “port mirroring” hoặc “port monitoring”. Có thể
cấu hình cho cổng SPAN để thu lưu lượng trên các cổng
khác. Nghĩa là, nếu nối thiết bị sensor vào cổng SPAN, ta
có thể thu được mọi lưu lượng đi qua nút chuyển mạch.
1.7.3 Taps
17

bắt gói. Windump có lệnh cho phép ta xem chi tiết về tất
cả các card mạng tồn tại trong máy (Windump -D).
Để in tất cả các gói dữ liệu đến và đi từ máy tính Svr01
Lệnh: Windump -i3 host Srv01
(ở đây -i3 là capture trên card mạng số 3 của local
host; Srv01 là tên máy tính ở xa).
Để in ra lưu lượng giữa hai máy tính Srv01 và NhanNt
Lệnh: Windump -i3 host Srv01 and NhanNt
Để in ra tất cả các gói tin IP giữa Srv02 và máy tính
bất kỳ, trừ Srv01
Lệnh: Windump -i3 host Srv02 and not Srv01
Để in ra tất cả lưu lượng giữa Local host và các host ở
mạng LAN1

Lệnh: Windump -i3 net LAN1
Để in ra tất cả lưu lượng Ftp thông qua internet
gateway snup
Lệnh: Windump -i3 gateway snup and (port ftp or ftp-
data)
Để in lưu lượng không có nguồn gốc cũng không có
đích đến cho local host
Lệnh: Windump -i3 ip and not net localnet
Để in các gói bắt đầu và kết thúc (SYN and FIN
packet) của mỗi hội thoại TCP mà liên quan đến một
non-local host
Lệnh: windump tcp[tcpflags] & (tcp-syn|tcp-fin) != 0
and not src and dst net localnet
Để in các gói tin IP lớn hơn 576 byte được gửi qua
gateway snup
Lệnh: windump gateway snup and ip[2:2] > 576
Để in các gói tin IP broadcast hoặc multicast mà không
gửi qua Ethernet broadcast hoặc multicast
Lệnh: windump ether[0] & 1 = 0 and ip[16] >= 224
16

- Lưu lượng trên mạng.
3.3.2.5 Hệ thống ghi log và cảnh báo (Logging and
Alerting System)
Bộ phận đầu ra (Output Modules): Tại đây các cảnh
báo sẽ được tạo ra và ghi lại trong các logfile dạng text
hay các dạng theo yêu cầu của người quản trị.
3.4 Hệ thống giám sát mạng LAN sử dụng Winpcap
3.4.1 Mô hình thử nghiệm thứ nhất
Tại mô hình này, ta cài đặt Winpcap trên một hoặc hai

PC (trong mạng LAN), tại đây Winpcap chủ yếu làm
nhiệm vụ bắt các gói tin vào ra trên các card mạng của PC.
3.4.2 Mô hình thử nghiệm thứ hai
Tại mô hình này, ta cài đặt Winpcap trên một PC nằm
giữa Firewall và Hub/Switch và trên một PC nằm sau
Hub/Switch, tại đây Winpcap làm nhiệm vụ bắt các gói tin
vào ra trên cả đoạn mạng, sử dụng chức năng Remote
Capture.
3.5 Thử nghiệm hệ thống, phân tích các kết quả thu
được
3.5.1 Theo dõi nội dung các gói tin với Windump
Windump là một phần mềm dùng để theo dõi các gói
dữ liệu lưu thông qua Card mạng. Bản thân Windump
cũng là một chương trình được viết dựa trên thư viện
Winpcap, nên phải cài đặt Winpcap trước hoặc cùng lúc
với tiến trình cài đặt Windump.
Sau khi download Windump vào một thư mục, ta vào
menu Start - Run - Cmd, chuyển vào thư mục chứa
chương trình Windump. Windump sẽ chạy trong chế độ
dòng lệnh.
Bắt gói tin với Windump
Trước khi dùng Windump để bắt các gói tin, ta phải
xác định được chính xác card mạng trên máy tính dùng để
5

TAP (Test Access Port) là một thiết bị nối mạng được
thiết kế riêng cho việc theo dõi giám sát. Các thiết bị Tap
được dùng để thiết lập các cổng truy nhập riêng để theo
dõi thụ động lưu lượng. Thiết bị Tap được đặt giữa hai
thiết bị mạng.

1.7.4 Inline device
“Inline device” là một trình điều khiển thiết bị (phần
mềm) hoặc một thiết bị phần cứng đặc biệt để theo dõi lưu
lượng.
1.8 Kết luận
Chương 1 đã phân tích nhu cầu giám sát mạng, nêu
những mục tiêu giám sát lưu lượng mạng máy tính, trình
bày những đặc trưng cơ bản của lưu lượng mạng máy tính.
Các phương thức thu thập thông tin về lưu lượng mạng
máy tính đã được phân tích, đánh giá. Tiếp đó, bài đã trình
bày về các vị trí có thể giám sát thu thập thông tin trên
mạng và các thiết bị trung gian phục vụ cho việc giám sát,
thu thập thông tin trên mạng.


CHƯƠNG 2
NGHIÊN CỨU THỬ NGHIỆM CÔNG CỤ
PHẦN MỀM MÃ NGUỒN MỞ WINPCAP

2.1 Giới thiệu chung về công cụ phần mềm Winpcap
WinPcap là công cụ phần mềm nguồn mở, gồm một
trình điều khiển mở rộng cho hệ điều hành để truy nhập
mức thấp vào mạng và một thư viện mã nguồn mở cho
phép truy nhập vào các lớp mạng mức thấp. Winpcap cho
phép các ứng dụng bắt (capture) các gói tin và phân tích
lưu lượng mạng trên nền tảng hệ điều hành Windows.

6

2.2 Cấu trúc của Winpcap

Winpcap gồm 3 thành phần chính: bộ lọc gói mức
kernel, một thư viện liên kết động packet.dll mức thấp, và
một hệ thống thư viện độc lập Wpcap.dll mức cao
2.2.1 Packet.dll
Thư viện Packet.dll cung cấp một API (application
program interface) mức thấp, truy xuất trực tiếp tới trình
điều khiển thiết bị NPF (Netgroup Packet Filter device
driver), độc lập với hệ điều hành Windows.
2.2.2 Wpcap.dll
Thư viện Wpcap.dll cung cấp một tập các chức năng
bắt gói mức cao, (tương thích với libpcap dùng trên linux).
Wpcap.dll hoạt động độc lập với phần cứng mạng và hệ
điều hành.
2.2.3 Trình điều khiển NPF (Netgroup Packet Filter
device driver)
Trình điều khiển thiết bị NPF dùng để bắt gói tin trực
tiếp từ mạng. NPF phát hiện gói tin trên giao diện mạng
(NIC), bắt chúng và phân phối chúng nguyên vẹn đến ứng
dụng người dùng thông qua các lớp phần mềm packet.dll
và wpcap.dll.
2.3 Mô tả chức năng bắt gói với Winpcap
Để có thể bắt được các dữ liệu thô đi qua trên mạng,
hệ thống bắt gói tin cần đi tắt qua những chồng giao thức
của các hệ điều hành. Điều này đòi hỏi một phần bên trong
lõi của hệ điều hành có tương tác trực tiếp với trình điều
khiển giao diện mạng. Đây là phần rất phụ thuộc vào hệ
thống, được thực hiện thông qua một trình điều khiển thiết
bị, gọi là Netgroup Packet Filter (NPF). Trình điều khiển
NPF cung cấp hai tính năng cơ bản gồm: bắt gói tin và
chèn thông tin vào gói tin.

2.4 Cấu trúc bên trong NPF
15

các Sensor này được truyền tải về trung tâm quản trị dữ
liệu thông qua chính đường Internet.
Đối với mạng quy mô cỡ quốc gia các Sensor có thể
được đặt tại các cơ quan, tổ chức, các ban nghành hay văn
phòng chính phủ để thu thập thông tin, phân tích và gửi
các thông tin có dấu hiệu bất thường về trung tâm cảnh
báo và ứng cứu quốc gia.
3.3.2 Mô tả hoạt động của một hệ thống giám sát an
toàn mạng
3.3.2.1 Bộ phận bắt giữ gói tin (Packet Capture)
Bộ phận bắt giữ gói tin (phần mềm sử dụng Winpcap)
sẽ lấy các gói từ các giao diện mạng khác nhau và chuẩn
bị cho việc gói tin được xử lý trước.
3.3.2.2 Bộ phận giải mã gói tin (Packet Decoder)
Bộ phận giải mã gói tin sẽ giải mã các gói, chuẩn hóa
dữ liệu và chuyển gói tin đến bộ phận tiền xử lý.
3.3.2.3 Bộ phận tiền xử lý (Preprocessor)
Chức năng chuẩn bị cho các gói dữ liệu được phân
tích dựa trên các luật trong bộ phận phát hiện. Bộ phận
tiền xử lý được dùng để sắp xếp hoặc chỉnh sửa gói dữ liệu
trước khi bộ phận phát hiện tìm ra gói tin mang dấu hiệu
tấn công. Bộ phận tiền xử lý có thể tái hợp các gói tin, giải
mã HTTP URI, ráp lại các dòng TCP
3.3.2.4 Bộ phận phát hiện (Detection Engine)
Chức năng phát hiện các gói tin có dấu hiệu tấn công
dựa vào các luật. Nếu một gói tin giống với bất kì luật nào,
một hành động tương ứng sẽ được thực hiện. Hiệu năng

của bộ phận phát hiện phụ thuộc vào các yếu tố sau:
- Số lượng các luật.
- Cấu hình phần cứng của máy chủ cài phần mềm
giám sát.
- Băng thông sử dụng.
14

dùng và hoạt động bất thường để tìm ra được các tấn công
nguy hiểm kịp thời.
3.2.2 Phát hiện bất thường
Phát hiện dựa trên sự bất thường hay mô tả sơ lược
phân tích những hoạt động của mạng máy tính và lưu
lượng mạng nhằm tìm kiếm sự bất thường. Khi tìm thấy sự
bất thường, một tín hiệu cảnh báo sẽ được khởi phát. Sự
bất thường là bất cứ sự chệch hướng hay đi khỏi những
thứ tự, dạng, nguyên tắc thông thường.
3.3 Mô hình kiến trúc của hệ thống giám sát mạng
3.3.1 Đề xuất mô hình một hệ thống giám sát an toàn
mạng
Cấu trúc chung của một hệ thống giám sát an toàn
thông tin mạng gồm 5 phân hệ kỹ thuật chức năng. Tuy
nhiên tùy theo quy mô của mạng cần giám sát mà cấu hình
và số lượng các thiết bị phục vụ việc giám sát có thể khác
nhau.
Mạng nội bộ của cơ quan, tổ chức được kết nối tới
Internet và được bảo vệ bởi hệ thống Firewall (Tường
lửa). Tuy nhiên firewall vẫn không thể tránh được các lỗ
hổng và một số các thông tin không mong muốn (Ví dụ
mã độc, thư rác, Virus ) vẫn có thể vượt qua. Do vậy
người quản trị dùng thêm một thiết bị giám sát Sensor (ở

đây là phần mềm). Phần mềm giám sát có nhiệm vụ bắt
các gói tin, kiểm tra lưu lượng mạng sau Firewall để phát
hiện ra các dấu hiệu bất thường trước khi đưa ra cảnh báo
cho người quản trị hệ thống.
Đối với những mạng lớn hơn (Ví dụ mạng của các
công ty đa quốc gia) người ta có thể phải phân vùng giám
sát và sử dụng nhiều Sensor khác nhau, mỗi Sensor giám
sát cho một phân vùng mạng. Thông tin thu thập được từ
7

NPF (Netgroup Packet Filter) là phần lõi (kernel)
của WinPcap. NPF xử lý các gói tin được truyền trên
mạng và xuất khẩu gói tin, chèn thêm gói tin và khả năng
phân tích theo các mức sử dụng.
2.4.1 NPF và NDIS
NDIS (Network Driver Interface Specification) là một
đặc tả tiêu chuẩn để xác định việc truyền thông giữa một
card mạng và các giao thức điều khiển (ví dụ như TCP/IP).
Mục đích chính của NDIS là đóng vai một gói (trình bao
bọc - wrapper), cho phép trình điều khiển giao thức gửi và
nhận các gói lên trên một mạng (LAN hoặc WAN) không
cần quan tâm đến adapter đặc biệt hoặc hệ điều hành.
NDIS hỗ trợ ba loại trình điều khiển mạng:
- Trình điều khiển giao diện mạng (NIC drivers).
- Trình điều khiển trung gian (Intermediate drivers).
- Trình điều khiển vận chuyển (Transport drivers hoặc
protocol drivers).
2.4.2 Các thành phần cơ bản của cấu trúc NPF
NPF cho phép thực hiện một số hoạt động khác nhau:
bắt gói, giám sát, dump to disk, packet injection…

2.5 Các chức năng của Winpcap dùng cho giám sát
mạng
2.5.1 Bắt giữ gói tin (Packet Capture)
Hoạt động quan trọng nhất của NPF là bắt gói. Trong
khi bắt gói tin, trình điều khiển lắng nghe (sniffs) các gói
bằng cách sử dụng một giao diện mạng và chuyển chúng
nguyên vẹn cho các ứng dụng ở mức người dùng.
Quá trình capture dựa trên hai thành phần chính:
- Bộ lọc gói tin
- Bộ đệm quay vòng
2.5.2 Chèn gói tin (Packet injection)
8

NPF cho phép viết các gói tin thô vào mạng. Để gửi
dữ liệu, một ứng dụng mức người dùng thực hiện một lời
gọi hệ thống WriteFile() trên NPF device file. Dữ liệu
được gửi tới mạng như nó có, không cần đóng gói nó
trong bất kỳ giao thức nào, bởi vậy ứng dụng sẽ phải xây
dựng các tiêu đề (header) khác nhau cho mỗi gói. Các ứng
dụng thông thường không cần phải tạo ra các FCS (Frame
Check Sequence) vì nó được tính toán bởi phần cứng của
bộ tiếp hợp mạng và nó được gán tự động vào cuối của gói
trước khi gửi nó vào mạng.
2.5.3 Giám sát mạng
WinPcap cung cấp một module giám sát lập trình
được mức kernel, có khả năng tính toán thống kê đơn giản
trên lưu lượng mạng. Các số liệu thống kê có thể được thu
thập mà không cần phải sao chép các gói tới ứng dụng,
đơn giản là nhận được và hiển thị các kết quả thu được từ
động cơ (engine) giám sát.

2.5.4 Đẩy dữ liệu vào đĩa (Dump to disk)
Khả năng dump to disk (đổ vào disk) có thể được
dùng để lưu các dữ liệu mạng trực tiếp vào disk từ kernel
mode.
2.5.5 Lấy về danh sách thiết bị
Để lấy về danh sách các thiết bị mạng ta sử dụng hàm
pcap_findalldevs_ex(). Hàm này sẽ trả về một danh sách
các thiết bị mà sau đó ta có thể mở với hàm pcap_open().
2.5.6 Mở một thiết bị và chặn bắt các gói tin
Để mở một thiết bị mạng (thường là network adapter)
để bắt đầu chặn bắt ta sử dụng hàm pcap_open(). Sau khi
thiết bị đã được mở, việc chặn bắt có thể được thực hiện
với hàm pcap_dispatch() hoặc pcap_loop().
2.5.7 Lọc gói tin (Filtering)
13

Trên tổng thể, các hệ thống giám sát và cảnh bảo an
toàn mạng thường bao gồm các phân hệ kỹ thuật chức
năng chủ yếu là:
- Phân hệ thu thập thông tin mạng: việc thu thập thông
tin có thể thực hiện một cách nhân công (các kênh thông
báo, công văn, fax…) hay tự động (các thiết bị bảo vệ
mạng, các phần mềm giám sát …). Các thiết bị phần cứng
(hay phần mềm) làm chức năng thu thập thông tin an toàn
mạng một cách tự động thông thường được gọi là các
Sensor. Trong phạm vi luận văn sẽ chỉ đề cập đến các
phần mềm làm chức năng này.
- Phân hệ phân tích thông tin: Phân hệ này có chức
năng phân tích và lọc ra các thông tin có dấu hiệu bất
thường như các mã độc, các dấu hiệu tấn công mạng …

- Phân hệ cơ sở dữ liệu: lưu trữ thông tin bất thường
đã phát hiện được để phục vụ cho các mục đích thống
kê…
- Phân hệ hỗ trợ cảnh báo và truyền tải: có chức năng
đưa ra các cảnh báo cho người quản trị mạng về các dấu
hiệu tấn công đã phát hiện được và truyền tải các thông tin
này tới các hệ thống giám sát cấp cao hơn nếu có yêu cầu.
- Phân hệ điều khiển cấu hình: Phân hệ này cho phép
người quản trị mạng có thể thay đổi cấu hình của các thiết
bị giám sát trên mạng tùy theo quy mô của hệ thống giám
để tiết kiệm chi phí.
3.2 Những phương thức giám sát mạng phát hiện tấn
công
3.2.1 Phát hiện dựa trên dấu hiệu
Phát hiện dựa trên dấu hiệu (signature-based
detection) hay còn gọi phát hiện sử dụng sai. Phương pháp
này phân biệt giữa các hoạt động thông thường của người
12

- Thiết lập các tùy chọn của bộ kết nối (linker) để
include file thư viện wpcap.lib cho các mục tiêu của chúng
ta (x86 hay x64).
- Thiết lập các tùy chọn của bộ kết nối (linker) để
include file thư viện winsock ws2_32.lib.
2.7.3 Bắt giữ gói tin từ xa (Remote capture)
WinPcap có kèm khả năng Remote Capture. Đây là
tính năng nâng cao cho phép tương tác với một máy tính
từ xa và bắt các gói bắt đầu truyền trên remote network.
Điều này đòi hỏi một remote daemon (gọi là rpcapd)
thực hiện việc capture và gửi dữ liệu trở lại và một local

client sẽ gửi những lệnh thích hợp để nhận được dữ liệu
đã bắt giữ.
Các chế độ hoạt động bắt giữ gói tin từ xa (Remote
Capture Running Modes)
The Remote Capture Protocol (RPCAP) có thể làm
việc trong hai chế độ:
- Passive mode (default): client (ví dụ một network
sniffer) kết nối tới remote daemon, nó gửi cho chúng lệnh
thích hợp, và bắt đầu capture.
- Active mode: remote daemon cố gắng thiết lập một
kết nối về phía client (ví dụ một network sniffer); sau đó,
client gửi lệnh thích hợp cho daemon và nó bắt đầu
capture. Tên gọi này là do thực tế daemon sẽ trở thành
active thay vì chờ đợi một kết nối mới.

CHƯƠNG 3
ĐỀ XUẤT GIẢI PHÁP GIÁM SÁT MẠNG VỚI
WINPCAP

3.1 Các chức năng cơ bản của một hệ thống giám sát
mạng
9

Là một tính năng mạnh và hữu dụng nhất trong
winpcap.Nó cung cấp khả năng phân tích mạng một cách
hiệu quả và kết hợp hoàn hảo với cơ chế chặn bắt của
Winpcap. Những hàm được sử dụng để filter packet là
pcap_compile() và pcap_setfilter().
2.5.8 Thống kê
Ta có thể thống kê dựa vào thông tin của các packet

chặn bắt được để thu thập thông tin tình trạng mạng. Tuy
nhiên, với những ứng dụng không đòi hỏi thống kê chi tiết
ta có thể yêu cầu network adapter làm công việc thống kê
bằng cách thiết đặt nó trong trạng thái thống kê (statistical
mode) bằng cách sử dụng hàm set_mode().
2.6 So sánh, đánh giá các mức giám sát và bắt gói tin
Thông thường các chương trình giám sát mạng thường
chặn bắt gói tin ở mức ứng dụng, mức hệ điều hành và
mức network adapter.
2.6.1 Mức hệ điều hành (raw socket)
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.
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.
2.6.2 Pcap - mức network adapter
Pcap (packet capture) bao gồm những giao diện lập
trình ứng dụng (API) dùng để chặn bắt network traffic.
10

Đối với các hệ thống thuộc họ Unix ta có thư viện libpcap,
còn đối với Window ta có thư viện winpcap. Pcap thường
có hai thành phần cơ bản:

- Driver: packet capture driver không thể được viết
bằng các ngôn ngữ bậc cao mà thường viết bằng C hoặc
assembly.
- Interface: là giao diện thực hiện packet capture.
2.6.3 So sánh Raw socket và Pcap
Raw socket và pcap đều được sử dụng để viết chương
trình giám sát mạng. Tuy nhiên socket chỉ có thể làm việc
từ tầng thứ 4 trong mô hình OSI trở lên (transport layer
trong TCP/IP) và raw socket có thể làm việc được với tầng
thứ 3 trong mô hình OSI trở lên (network layer trong
TCP/IP) còn pcap có thể làm việc với tầng thứ 2 trở lên
trong mô hình OSI (link layer trong TCP/IP).
2.7 Thử nghiệm với Winpcap
2.7.1 Biên dịch Winpcap
Hai bộ mã nguồn chính của NPF sẵn sàng cho biên
dịch được sử dụng với Windows NT4 và Windows 9x.
Lưu ý rằng, trình điều khiển NPF phụ thuộc hệ điều hành,
và cần liên kết chính xác với các thư viện DDK tương ứng.
2.7.1.1 Biên dịch trình điều khiển
Các phần mềm yêu cầu:
- Microsoft Driver Developer Kit (DDK) for Windows
NT4.
- Phiên bản gần đây nhất của Microsoft Platform
Software Development Kit (SDK) tương thích với Visual
Studio 6
- Microsoft Visual C++ 6.0 với Service Pack 5 hoặc 6
2.7.1.2 Biên dịch packet.dll
Mã nguồn của các DLL này nằm trong
PacketNTx\dll\.
11


Họ hệ điều hành Windows 9x không còn được hỗ trợ
bởi WinPcap. Tuy nhiên, mã nguồn cho hệ điều hành vẫn
còn có sẵn trong các gói mã nguồn.
Các yêu cầu phần mềm gồm:
- Microsoft Visual Studio 2005 SP1. Nó là lý thuyết
khả dĩ để biên dịch x86 version với Visual Studio 6, nhưng
các project file không còn được duy trì.
- AirPcap developer's pack; AirPcap developer's pack
cần được unzipped trong cùng một thư mục với nơi các mã
nguồn WinPcap unzipped.
2.7.1.3 Biên dịch wpcap.dll
Wpcap.dll có thể được biên dịch cho bất kỳ Win32
platform và đã tạo ra dll độc lập với hệ thống.
Các yêu cầu phần mềm gồm có:
- Microsoft Visual Studio 2005 SP1.
- The AirPcap developer's pack; The AirPcap
developer's pack cần phải unzipped trong một folder giống
với folder nơi mà WinPcap sources đã được unzipped.
2.7.2 Tạo một ứng dụng với Winpcap trong chương
trình
Để tạo ra một ứng dụng sử dụng wpcap.dll với
Microsoft Visual C++, trình tự làm theo các bước sau:
- Include tập tin pcap.h tại đầu mỗi file mã nguồn mà
sử dụng các chức năng exported bởi thư viện.
- Nếu chương trình sử dụng những chức năng đặc biệt
Win32 của WinPcap, cần include WPCAP trong số những
định nghĩa tiền xử lý (preprocessor definitions).
- Nếu chương trình sử dụng khả năng capture từ xa
của WinPcap, cần thêm HAVE_REMOTE giữa các định

nghĩa tiền xử lý (preprocessor definitions). Không được
include remote-ext.h trực tiếp trong mã nguồn các tập tin.

×