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

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


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


+ 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:

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ệ

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

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.

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.

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 (ở

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.

- 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

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:


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


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status