BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ĐỒ ÁN TỐT NGHIỆP
TÌM HIỂU VÀ ỨNG DỤNG CƠNG CỤ SILK TRONG
THU THẬP VÀ PHÂN TÍCH LƯU LƯỢNG MẠNG
NHẰM PHÁT HIỆN TẤN CƠNG
Ngành: An tồn thơng tin
Mã số: 7.48.02.02
Sinh viên thực hiện:
Người hướng dẫn 1:
ThS. Cao Minh Tuấn
Khoa An tồn thơng tin – Học viện Kỹ thuật mật mã
Hà Nội, 2021
BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ĐỒ ÁN TỐT NGHIỆP
TÌM HIỂU VÀ ỨNG DỤNG CƠNG CỤ SILK TRONG
THU THẬP VÀ PHÂN TÍCH LƯU LƯỢNG MẠNG
NHẰM PHÁT HIỆN TẤN CƠNG
Ngành: An tồn thơng tin
Mã số: 7.48.02.02
Sinh viên thực hiện:
Người hướng dẫn 1:
ThS. Cao Minh Tuấn
Khoa An tồn thơng tin – Học viện Kỹ thuật mật mã
Hà Nội, 2021
MỤC LỤC
DANH MỤC HÌNH VẼ.......................................................................................i
LỜI CẢM ƠN.....................................................................................................ii
LỜI NĨI ĐẦU...................................................................................................iii
CHƯƠNG 1. TỔNG QUAN CHUNG VỀ SILK.............................................1
1.1. Giới thiệu về SiLK..................................................................................1
1.2. Loại dữ liệu luồng SiLK thu thập.........................................................2
1.3. Kho lưu trữ SiLK Flow..........................................................................3
1.3.1. Dữ liệu luồng mạng...........................................................................3
1.3.2. Cấu trúc của một bản ghi luồng........................................................3
1.3.3. Các loại lưu lượng mạng...................................................................5
1.3.4. Hệ thống thu thập và quản lý dữ liệu.................................................6
1.4. Bộ công cụ SiLK.....................................................................................7
1.5. Tổng kết chương 1..................................................................................8
CHƯƠNG 2. KỸ THUẬT THU THẬP, ĐÓNG GĨI VÀ PHÂN TÍCH LƯU
LƯỢNG MẠNG..................................................................................................9
2.1. Kỹ thuật thu thập và đóng gói..............................................................9
2.1.1. Bộ cơng cụ đóng gói SiLK.................................................................9
2.1.2. Mơ hình máy đơn.............................................................................11
2.2. Kỹ thuật phân tích...............................................................................14
2.2.1. Bộ cơng cụ phân tích SiLK..............................................................14
2.2.2. Nhận danh sách các cảm biến với rwsiteinfo..................................15
2.2.3. Chọn bản ghi luồng với rwfilter.......................................................17
2.2.4. Xem bản ghi luồng với rwcut...........................................................19
2.2.5. Xem thông tin tệp với rwfileinfo.......................................................21
2.2.6. Profile Flow với rwuniq và rwstats.................................................22
2.2.7. Đặc điểm lưu lượng truy cập theo khoảng thời gian với số lượng
rwcount.........................................................................................................26
2.2.8. Sắp xếp hồ sơ lưu lượng với rwsort.................................................27
2.2.9. Sử dụng IPset để thu thập địa chỉ IP...............................................29
2.3. Cách tiếp cận trong việc phân tích các bản ghi luồng mạng............32
2.3.1. Phân tích một đường dẫn.................................................................33
2.3.2. Phân tích đa đường dẫn...................................................................33
2.3.3. Phân tích khám phá.........................................................................33
2.4. Quy trình làm việc cho Phân tích SiLK.............................................34
2.4.1. Cơng thức hóa..................................................................................34
2.4.2. Model...............................................................................................35
2.4.3. Kiểm tra...........................................................................................36
2.4.4. Phân tích..........................................................................................36
2.4.5. Tinh chỉnh........................................................................................36
2.5. Kết luận chương 2................................................................................37
CHƯƠNG 3. CÀI ĐẶT VÀ CẤU HÌNH SILK..............................................38
3.1. Các điều kiện cần có để xây dựng SiLK.............................................38
3.2. Xây dựng SiLK, YAF, libfixbuf từ Source Code...............................38
3.2.1. Giải nén và cài đặt libfixbuf............................................................39
3.2.2. Giải nén và cài đặt SiLK..................................................................40
3.2.3. Giải nén và cài đặt YAF...................................................................43
3.3. Cấu hình SiLK, YAF và libfixbuf.......................................................43
3.2.1. Cấu hình SiLK..................................................................................43
3.2.2. Cấu hình rwflowpack.......................................................................45
3.2.3. Tùy chỉnh tệp cấu hình rwflowpack.conf.........................................46
3.2.4. Tùy chỉnh tệp cấu hình rwflowpack.conf.........................................47
3.4. Kết luận chương 3................................................................................48
CHƯƠNG 4.TRIỂN KHAI SILK ĐỂ THỰC HIỆN THU THẬP VÀ PHÂN
TÍCH
49
4.1. Thiết lập mơ hình mạng để thực hiện thu thập và phân tích...........49
4.2. Triển khai thu thập và phân tích luồng mạng...................................52
4.3. Kết luận chương 4................................................................................56
KẾT LUẬN........................................................................................................57
TÀI LIỆU THAM KHẢO................................................................................58
DANH MỤC HÌNH VẼ
Hình 1.1: Hai bản ghi luồng đơn hướng cho một trình tự giao tiếp duy nhất..................................5
Hình 1. 2: Loại lưu lượng mặc định cho cảm biến...........................................................................6
Hình 1. 3: Hệ thống thu thập............................................................................................................7
Hình 2. 1: Hoạt động của máy đơn thu thập với Sendor: NetFlow và lưu trữ với rwflowpack 12
Hình 2. 2: Hoạt động của máy đơn với Sensor: YAF và lưu trữ với rwflowpack..........................12
Hình 2. 3: Mơ hình phân tích.........................................................................................................15
Hình 2. 4: Sử dụng rwsiteinfo để liệt kê cảm biến, hiển thị loại lưu lượng truy cập và hiển thị
thơng tin kho lưu trữ......................................................................................................................17
Hình 2. 5: Sử dụng rwfilter để truy xuất bản ghi luồng mạng từ kho lưu trữ SiLK.......................19
Hình 2. 6: rwcut để hiển thị nội dung của mười bản ghi luồng......................................................21
Hình 2. 7: rwcut - trường để sắp xếp lại đầu ra..............................................................................21
Hình 2. 8: Tìm các luồng Low, Medium và High-Byte với rwuniq...............................................23
Hình 2. 9: rwfileinfo hiển thị đặc điểm tệp bản ghi luồng..............................................................25
Hình 2. 10: Đặc trưng số lượng byte luồng với rwuniq..................................................................25
Hình 2. 11: Tìm top các giao thức với rwstats...............................................................................26
Hình 2. 12: Đếm số byte, gói và dịng theo thời gian.....................................................................29
Hình 2. 13: Sắp xếp theo Địa chỉ IP đích, Giao thức và Số byte....................................................29
Hình 2. 14: Sử dụng rwset để thu thập địa chỉ IP...........................................................................32
Hình 2. 15: Sử dụng rwsetbuild để thu thập địa chỉ IP...................................................................32
Hình 2. 16: Sử dụng rwsetcat để đếm các địa chỉ IP được thu thập...............................................32
Hình 2. 17: Sử dụng rwsetcat để in mạng và số lượng máy chủ....................................................32
Hình 2. 18: Sử dụng rwsetcat để in tóm tắt thống kê địa chỉ IP.....................................................33
Hình 2. 19: Quy trình phân tích SiLK............................................................................................35
Hình 3. 1: Các gói được u cầu khi xây dựng SiLK trên hệ thơng Linux
39
Hình 3. 2: Thơng số sau khi chạy ./configure của SiLK................................................................43
Hình 3. 3: Một số Sensor được cấu hình sẵn trong silk.conf..........................................................45
Hình 3. 4: Cấu hình các trường trong tệp rwflowpack.conf...........................................................48
Hình 3. 5: Trạng thái sau khi start rwflowpack..............................................................................48
Hình 3. 6: Cấu hình các trường trong tệp yaf.conf.........................................................................49
Hình 3. 7: Trạng thái sau khi start yaf............................................................................................49
Hình 4. 1: Mơ hình cài đặt
50
Hình 4. 2: Cấu hình IP trên máy Windows 7 và Windows Server 2012........................................51
Hình 4. 3: Ping từ Windows 7 tới CentOS 7 và Windows Server 2012.........................................51
Hình 4. 4: Quét cổng Windows Server bằng Nmap trên máy Windows 7.....................................52
Hình 4. 5: Trên máy CentOS thực hiện ping tới Windows 7 và Windows Server 2012................53
Hình 4. 6: Xem log của rwflowpack trong /var/log........................................................................54
Hình 4. 7: rwcut sẽ tập hợp các bản ghi đầu và hiện thị ở 30 hàng của tất cả các luồng thu thập từ
S0...................................................................................................................................................55
Hình 4. 8: rwstats tập hợp các bản ghi liên kết với IP:10.1.1.200 field là IP nguồn, port nguồn, IP
đích… ở 10 hàng...........................................................................................................................56
i
Hình 4. 9: rwcut in record IP nguồn 10.1.1.200 và IP đích 10.1.1.100 với fields IP nguồn, IP
đích… và xuất ra file scanport.txt..................................................................................................56
Hình 4. 10: Sử dụng trình soạn thảo để mở scanport.txt................................................................57
LỜI CẢM ƠN
Trong quá trình thực hiện đồ án tốt nghiệp này, do thời gian có hạn quá trình
trao đổi giữa cán bộ hướng dẫn vẫn cịn hạn chế nhưng tơi đã nhận được sự giúp
đỡ tận tình và gửi lời cảm ơn tới cán bộ hướng dẫn là Th.s Cao Minh Tuấn –
Giảng viên Khoa An toàn thông tin Học viện Kỹ thuật Mật mã, sự quan tâm của
cán bộ Hệ quản lý sinh viên, các thầy cô và bạn bè
Xin cảm ơn tất cả mọi người đã tạo những điều kiện tốt nhất để tơi hồn thành
đồ án tốt nghiệp này!
SINH VIÊN THỰC HIỆN ĐỒ ÁN
ii
LỜI NÓI ĐẦU
Các mối đe dọa mạng đang gia tăng, điều quan trọng là phải hiểu
những gì đang xảy ra trên mạng máy tính của chúng ta. Nhưng số lượng
lớn lưu lượng truy cập mạng khiến công việc này trở nên khó khăn. Làm
thế nào chúng ta có thể tìm thấy bằng chứng về hoạt động trong dữ liệu
mạng này và có gì bất thường hay khơng?
Một tổ chức có thể tạo ra rất nhiều bản ghi luồng mạng mỗi ngày,
một nguồn dữ liệu tốc độ cao. Việc tìm kiếm các điểm bất thường liên
quan đến bảo mật trong khối lượng dữ liệu này là một thách thức. Hầu hết
các công cụ luồng mạng lớn đều lấy mẫu dữ liệu để làm cho vấn đề có thể
quản lý được, nhưng việc lấy mẫu không thể chấp nhận được sẽ làm giảm
độ trung thực của các kết luận phân tích.
Một cách là sử dụng SiLK (System for Internet Level Knowledge),
một bộ cơng cụ có khả năng mở rộng cao để thu thập và phân tích dữ liệu
luồng mạng một cách hiệu quả. Cho phép người phân tích truy vấn nhanh
chóng và hiệu quả khối lượng rất lớn lưu lượng mạng để xác định các
hiện tượng tổng hợp phức tạp hoặc trích xuất các sự kiện riêng lẻ. Các
cơng cụ phân tích và truy xuất dữ liệu của SiLK cho phép phát hiện các
xu hướng và điểm bất thường có thể chỉ ra hoạt động có chủ ý.
Đồ án được thực hiện nhằm mục đích tìm hiểu và ứng dụng cơng
cụ SiLK (System for Internet Level Knowledge) trong thu thập và phân
tích lưu lượng mạng nhằm phát hiện tấn công
Nhiệm vụ đặt ra là:
1. Nghiên cứu tổng quan về kiến trúc và các vấn đề thu thập và phân tích
thơng tin của SiLK
2. Nghiên cứu các kỹ thuật thu thập, phân tích và đề xuất giải pháp cải thiện
hiệu suất cho SiLK
3. Tiến hành ứng dụng công cụ SiLK trong thu thập và phân tích lưu lượng
mạng nhằm phát hiện tấn cơng
Sau thời gian khoảng thời gian thực hiện đồ án, các yêu cầu về cơ bản đã đạt
được. Tuy nhiên trong thời gian thực hiện đồ án gặp nhiều khó khăn nên chắc
iii
chắn khơng tránh khỏi thiếu sót. Rất mong được sự góp ý của các thầy cơ, cũng
như các bạn học viên để đồ án này được hoàn thiện hơn.
SINH VIÊN THỰC HIỆN ĐỒ ÁN
iv
CHƯƠNG 1. TỔNG QUAN CHUNG VỀ SILK
1.1.
Giới thiệu về SiLK
Bộ công cụ System for internet-Level Knowledge (SiLK) là một hệ thống
thu thập và phân tích dữ liệu luồng có khả năng mở rộng cao được phát triển bởi
CERT Network Situational Awareness Team (CERT NetSA) để tạo điều kiện
thuận lợi cho việc phân tích bảo mật của các mạng lớn. Ban đầu được đặt tên là
“Công việc của Suresh”, SiLK là kết quả của việc một nhà phân tích cần phân
tích cú pháp luồng một cách kịp thời và hiệu quả mà không cần đến các tập lệnh
phức tạp chuyên sâu của CPU. SiLK là một tập hợp của C, Python và Perl, và
như vậy, hoạt động trong hầu hết mọi môi trường dựa trên UNIX. Tầm quan
trọng của tài liệu là tối quan trọng. Bộ công cụ SiLK hỗ trợ thu thập, lưu trữ và
phân tích dữ liệu luồng mạng một cách hiệu quả, cho phép các người phân tích
an ninh mạng truy vấn nhanh các tập dữ liệu lưu lượng lớn trong lịch sử. Các
công cụ SiLK cung cấp cho các người phân tích mạng phương tiện để hiểu, truy
vấn và tóm tắt cả dữ liệu lưu lượng truy cập gần đây và lịch sử được biểu thị
dưới dạng bản ghi luồng mạng (còn được gọi là "network flow" hoặc "dữ liệu
luồng mạng" và đôi khi chỉ là "luồng") . Các cơng cụ này cung cấp cho người
phân tích mạng một cái nhìn tương đối đầy đủ về lưu lượng truy cập trên mạng,
tùy thuộc vào vị trí của các cảm biến.
Các phân tích bằng cách sử dụng các cơng cụ SiLK cung cấp cái nhìn sâu
sắc về các khía cạnh khác nhau của hành vi mạng. Một số ứng dụng ví dụ của
bộ cơng cụ này bao gồm:
Hỗ trợ pháp y mạng: xác định sự xâm nhập, khai thác lỗ hổng bảo mật,
hành vi của sâu máy tính, v.v.
Cung cấp kho dịch vụ cho các mạng lớn và động (theo thứ tự của khối / 8
Định tuyến liên vùng không lớp (CIDR))
Tạo hồ sơ về việc sử dụng mạng (tiêu thụ băng thông) dựa trên các giao
thức và các mẫu giao tiếp phổ biến
Cho phép phát hiện quét không dựa trên chữ ký và phát hiện sâu, để phát
hiện phần mềm độc hại phát hành hạn chế và để xác định tiền chất
1
Những ví dụ này và những ví dụ khác được giải thích thêm. Bằng cách
cung cấp cơ sở chung cho các phân tích này, các cơng cụ SiLK cung cấp một
khn khổ để phát triển nhận thức về tình huống mạng.
Mạng của tơi có gì?
Điều gì tạo nên hành vi mạng điển hình?
Điều gì đã xảy ra trước, trong và sau một sự kiện mạng?
Mạng nội bộ có định tuyến lưu lượng truy cập khơng mong muốn không?
1.2. Loại dữ liệu luồng SiLK thu thập
SiLK hỗ trợ thu thập các loại dữ liệu luồng sau:
NetFlow v5 và v9
Hai chuẩn NetFlow được sử dụng phổ biến nhất là V5 và V9. NetFlow
V5 cho đến nay là giải pháp NetFlow dễ tiếp cận nhất vì hầu hết các thiết bị
định tuyến hiện đại đều hỗ trợ xuất NetFlow V5. Bản ghi luồng NetFlow V5
cung cấp thông tin 5-tuple tiêu chuẩn cũng như tất cả các số liệu thống kê cần
thiết để xác định tập hợp luồng của các gói đang được tóm tắt. Những thống kê
này cho phép các cơng cụ phân tích hợp lý hóa việc phân tích cú pháp của thơng
tin này. Khơng giống như NetFlow V9 và IPFIX, NetFlow V5 không hỗ trợ
giao thức IPV6, điều này có thể hạn chế khả năng được sử dụng trong một số
môi trường nhất định.
NetFlow V9 là tất cả mọi thứ của V5, nhưng còn nhiều hơn thế nữa. NetFlow
V9 cung cấp một mẫu mới cung cấp khá nhiều chi tiết hơn trong việc ghi nhật
ký của nó. Trong khi NetFlow V5 cung cấp 20 trường dữ liệu (hai trong số đó là
vùng đệm), thì NetFlow V9 có 104 định nghĩa loại trường. Các loại trường đã
sửa đổi này có thể được gửi qua đầu ra được tạo mẫu để tạo thành bản ghi có
thể định cấu hình. Do đó, có thể sử dụng NetFlow V9 để tạo các bản ghi giống
với bản ghi V5 bằng cách định cấu hình các mẫu này. NetFlow V9 cũng cung
cấp hỗ trợ IPV6.
Hầu hết các quản trị viên đều có các yêu cầu tối thiểu từ dữ liệu NetFlow và
không yêu cầu thêm các chi tiết trang trí khác mà NetFlow V9 cung cấp hoặc họ
khơng có phương pháp tương tác với dữ liệu như đã làm với NetFlow V5..
IPFIX
Thông tin luồng giao thức Internet Bản ghi luồng eXport được tạo bởi
trình tạo luồng tuân thủ IPFIX như YAF. Để sử dụng chức năng này, phải cài
2
đặt libfixbuf-1.7.0 trở lên trước khi xây dựng và cài đặt SiLK. IPFIX có nhiều
điểm chung với NetFlow V9 vì nó được xây dựng dựa trên cùng một định dạng.
IPFIX là định dạng xuất nhị phân dựa trên khuôn mẫu, hướng bản ghi. Đơn vị
cơ bản của truyền dữ liệu trong IPFIX là message. Message tiêu đề và một hoặc
nhiều tập hợp, chứa các bản ghi. Tập hợp có thể là tập mẫu hoặc tập dữ liệu.
Tập dữ liệu tham chiếu đến mẫu mô tả các bản ghi dữ liệu trong tập hợp đó.
IPFIX cũng tương tự như NetFlow V9 khi nói đến tỷ lệ chấp nhận. Sự khác biệt
giữa NetFlow V9 và IPFIX là chức năng. Ví dụ: IPFIX cung cấp các trường có
độ dài thay đổi để xuất thơng tin tùy chỉnh, trong khi NetFlow V9 thì khơng. Nó
cũng có một sơ đồ để xuất danh sách dữ liệu được định dạng. Có một số điểm
khác biệt giữa NetFlow V9 và IPFIX, nhưng có một từ thực sự xác định chúng;
IPFIX là "linh hoạt".
sFlow v5.
Luồng được tạo bởi nhà sản xuất sFlow. Để sử dụng chức năng này, phải
cài đặt libfixbuf-1.7.0 trở lên trước khi xây dựng và cài đặt SiLK.
1.3. Kho lưu trữ SiLK Flow
1.3.1. Dữ liệu luồng mạng
Đối với NetFlow, bản tóm tắt này bao gồm tất cả lưu lượng khớp với bảy
khóa liên quan: địa chỉ IP nguồn và đích, cổng nguồn và cổng đích, giao thức
lớp truyền tải, loại dịch vụ và giao diện bộ định tuyến
SiLK sử dụng năm thuộc tính sau để tạo thành nhãn flow:
1. Địa chỉ IP nguồn
2. Địa chỉ IP đích
3. Port nguồn
4. Port đích
5. Giao thức lớp Transport
Các thuộc tính này (cịn được gọi là năm bộ), cùng với thời gian bắt đầu của
mỗi luồng mạng, phân biệt các luồng mạng với nhau. Kho lưu trữ SiLK lưu trữ
các luồng tích lũy từ một mạng.
1.3.2. Cấu trúc của một bản ghi luồng
Luồng mạng thường bao gồm nhiều gói mà tất cả đều khớp với các
trường của nhãn chung của chúng. Do đó, bản ghi luồng cung cấp nhãn và số
liệu thống kê về các gói được bao bởi luồng mạng, bao gồm số gói được bao bởi
3
luồng, tổng số byte, thời lượng và thời gian của các gói đó (trong số các trường
khác). Tệp luồng là một loạt các bản ghi luồng. Mọi trường đều được xác định
bằng tên và số có thể được sử dụng thay thế cho nhau. Ví dụ: trường địa chỉ IP
nguồn của bản ghi luồng có thể được xác định bằng tên trường (sIP) hoặc số
trường của nó (1). Viết hoa khơng quan trọng: sIP tương đương với sip hoặc
SIP.
Bởi vì luồng mạng là một bản tóm tắt của lưu lượng, nó khơng chứa dữ
liệu packet load, những dữ liệu này rất tốn kém để giữ lại trên một mạng lớn.
Mỗi bản ghi luồng mạng được tạo bởi SiLK là rất nhỏ: nó có thể nhỏ nhất là 22
byte (kích thước chính xác được xác định bởi một số tham số cấu hình). Tuy
nhiên, ngay cả ở kích thước nhỏ bé đó, một bộ cảm biến có thể thu thập nhiều
gigabyte bản ghi luồng hàng ngày trên một mạng lớn.
Một số trường thực sự được lưu trữ trong bản ghi, chẳng hạn như thời
gian và thời lượng bắt đầu. Một số trường không thực sự được lưu trữ; đúng
hơn, chúng được bắt nguồn hồn tồn từ thơng tin trong các trường được lưu trữ
hoặc từ sự kết hợp của các trường được lưu trữ trong bản ghi và dữ liệu bên
ngoài. Ví dụ: thời gian kết thúc được tính bằng cách thêm thời gian bắt đầu và
thời lượng. Mã quốc gia nguồn được lấy từ địa chỉ IP nguồn và bảng ánh xạ địa
chỉ IP thành mã quốc gia
Khi một gói tin mới được phân tích và chứa các giá trị thuộc tính 5 tuple
giống nhau, thì dữ liệu đó sẽ được nối vào bản ghi luồng đã tồn tại. Dữ liệu sẽ
được thêm vào bản ghi luồng này miễn là các gói phù hợp với các giá trị thuộc
tính 5 tuple được quan sát. Có ba điều kiện mà bản ghi luồng có thể bị kết thúc:
1. Thời gian chờ tự nhiên: Bất cứ khi nào giao tiếp tự nhiên kết thúc dựa
trên đặc điểm kỹ thuật của giao thức. Điều này được theo dõi đối với các
giao thức hướng kết nối và sẽ tìm kiếm những thứ như gói RST hoặc
chuỗi FIN trong TCP.
2. Thời gian chờ không hoạt động: Khi không nhận được dữ liệu cho luồng
nào trong vịng ba mươi giây kể từ gói cuối cùng, bản ghi luồng sẽ bị
chấm dứt. Bất kỳ gói mới nào có cùng giá trị thuộc tính 5 tuple sau khi
hết 30 giây này sẽ dẫn đến việc tạo bản ghi luồng mới. Giá trị này có thể
định cấu hình.
4
3. Thời gian chờ hoạt động: Khi một luồng đã mở trong ba mươi phút, bản
ghi luồng sẽ kết thúc và một bản ghi mới được tạo với cùng các giá trị
thuộc tính 5 tuple. Giá trị này có thể định cấu hình.
Bất cứ khi nào các gói được quan sát với các giá trị thuộc tính 5 tuple mới, một
bản ghi luồng mới sẽ được tạo. Có thể có một số lượng lớn các bản ghi luồng
riêng lẻ được mở bất kỳ lúc nào.
Như ta có thể mong đợi dựa trên mô tả này, các luồng được tạo theo cách một
chiều trong hầu hết các trường hợp (một số cơng cụ, chẳng hạn như YAF, có thể
tạo luồng hai chiều). Ví dụ: với các luồng một chiều, giao tiếp TCP giữa
192.168.1.1 và 172.16.16.1 thường sẽ tạo ra ít nhất hai bản ghi luồng, một bản
ghi cho lưu lượng từ 192.168.1.1 đến 172.16.16.1 và một bản khác cho lưu
lượng từ 172.16.16.1 đến 192.168. 1.1 (Bảng 4.1).
Hình 1.1: Hai bản ghi luồng đơn hướng cho một trình tự giao tiếp duy nhất
1.3.3. Các loại lưu lượng mạng
Trong SiLK, loại thuật ngữ chủ yếu đề cập đến hướng của lưu lượng truy
cập, chứ khơng phải là một đặc tính dựa trên nội dung. Trong cách triển khai
chung, có sáu kiểu cơ bản và năm kiểu bổ sung. Các loại cơ bản là
in và inweb, là lưu lượng đến từ nhà cung cấp dịch vụ Internet (ISP) đến
mạng thông qua bộ định tuyến biên giới. Lưu lượng truy cập web được
tách biệt với lưu lượng truy cập khác do khối lượng của nó, làm cho
nhiều tìm kiếm nhanh hơn.
outweb, là lưu lượng đến từ mạng đến ISP thông qua bộ định tuyến biên
giới.
int2int, là lưu lượng đi cả từ và đến mạng, nhưng đi qua cảm biến.
ext2ext, là lưu lượng đi cả từ và đến ISP, nhưng đi qua cảm biến. (Sự hiện
diện của loại lưu lượng này thường chỉ ra sự cố cấu hình trong cảm biến
hoặc tại ISP.)
Các loại SiLK bổ sung là
5
inicmp và outicmp, đại diện cho lưu lượng ICMP vào hoặc ra khỏi mạng.
Các loại này chỉ hoạt động nếu SiLK được biên dịch với tùy chọn hỗ trợ
chúng.
innull và outnull, chỉ có thể được tìm thấy khi cảm biến là bộ định tuyến
chứ không phải cảm biến chuyên dụng. Chúng đại diện cho lưu lượng
truy cập từ ISP ngược dòng hoặc mạng, tương ứng, kết thúc tại địa chỉ IP
của bộ định tuyến hoặc bị bộ định tuyến bỏ do danh sách kiểm soát truy
cập.
other, được gán cho lưu lượng truy cập mà một trong các địa chỉ (nguồn
hoặc đích) khơng nằm trong mạng nội bộ cũng như mạng bên ngoài.
Kiểu all được xây dựng chọn tất cả các loại luồng liên kết với một lớp
cảm biến.
Các loại này có thể cấu hình được. Các cấu hình khác nhau tùy theo loại nào
đang được sử dụng thực tế (xem phần sau Sensor: Class và Type).
Hình 1. 2: Loại lưu lượng mặc định cho cảm biến
1.3.4. Hệ thống thu thập và quản lý dữ liệu
Việc thu thập dữ liệu bắt đầu khi bản ghi luồng được tạo bởi một trong
các cảm biến: bộ định tuyến hoặc cảm biến chuyên dụng. Bản ghi luồng được
tạo khi một gói liên quan đến luồng được nhìn thấy, nhưng luồng khơng được
báo cáo cho đến khi nó hồn tất hoặc được xóa khỏi bộ đệm. Do đó, một luồng
có thể được nhìn thấy một thời gian sau thời gian bắt đầu của gói đầu tiên trong
luồng, tùy thuộc vào cấu hình thời gian chờ và vào bộ nhớ đệm của cảm biến,
trong số các yếu tố khác.
6
Các luồng đã đóng gói được lưu trữ thành các tệp được chỉ định theo lớp,
loại, cảm biến và giờ bắt đầu luồng. Vì vậy, đối với lưu lượng truy cập đến từ
ISP đi qua hoặc đi qua cảm biến có tên SEN1 vào ngày 1 tháng 3 năm 2018 cho
các luồng bắt đầu từ 3:00 đến 3: 59: 59,999 p.m. Giờ Phối hợp Quốc tế (UTC),
một đường dẫn mẫu đến tệp có thể là /data/SEN1/in/2018/03/01/inSEN1_20180301.15
Hình 1. 3: Hệ thống thu thập
1.4.
Bộ cơng cụ SiLK
Bộ phân tích SiLK bao gồm nhiều cơng cụ UNIX dịng lệnh (bao gồm cả
cơng cụ thu thập luồng) xử lý nhanh các bản ghi luồng hoặc thao tác dữ liệu phụ
trợ. Các cơng cụ có thể giao tiếp với nhau và với các công cụ tạo kịch bản thông
qua các đường ống (cả chưa đặt tên và đã đặt tên) hoặc qua các tệp trung gian
Phân tích luồng nói chung là giới hạn đầu vào / đầu ra (I / O bind) - lượng
thời gian cần thiết để thực hiện phân tích tỷ lệ thuận với lượng dữ liệu được đọc
từ đĩa. Mục tiêu chính của bộ công cụ SiLK là giảm thiểu thời gian truy cập đó.
Một số cơng cụ SiLK thực hiện các chức năng tương tự như các cơng cụ dịng
lệnh UNIX phổ biến. Tuy nhiên, các công cụ SiLK xử lý dữ liệu này ở dạng
7
không phải văn bản (nhị phân) và sử dụng cấu trúc dữ liệu được tối ưu hóa đặc
biệt để phân tích.
Do đó, hầu hết các phân tích SiLK bao gồm một chuỗi các thao tác sử
dụng các công cụ SiLK. Các hoạt động này thường bắt đầu với lệnh gọi rwfilter
ban đầu để truy xuất dữ liệu quan tâm và lên đến đỉnh điểm là lệnh gọi cuối
cùng tới công cụ xuất văn bản như rwstats hoặc rwuniq để tóm tắt dữ liệu cho
bản trình bày.
Giữ dữ liệu ở dạng nhị phân càng nhiều bước càng tốt giúp cải thiện đáng
kể hiệu quả xử lý. Điều này là do các bản ghi nhị phân có cấu trúc được tạo bởi
các công cụ SiLK dễ dàng được phân tách mà không cần phân tích cú pháp, các
trường của chúng nhỏ gọn và các trường đã ở định dạng sẵn sàng cho các tính
tốn, chẳng hạn như các mạng máy tính.
Ở một khía cạnh nào đó, có thể coi SiLK như một bộ công cụ nâng cao
nhận thức. Kho lưu trữ bản ghi luồng cung cấp khối lượng lớn dữ liệu và bộ
công cụ cung cấp các khả năng cần thiết để xử lý những dữ liệu này. Tuy nhiên,
những hiểu biết thực tế đến từ các nhà phân tích.
1.5. Tổng kết chương 1
Trong phạm vi chương này, ta sẽ có thể mô tả một bản ghi luồng mạng và
các điều kiện mà việc thu thập một bản ghi bắt đầu và kết thúc, mơ tả các loại
bản ghi dịng SiLK, mơ tả cấu trúc của kho lưu trữ dòng SiLK
Như vậy qua đây có thể hiểu các bước liên quan đến phân tích dữ liệu
luồng mạng mơ tả tập dữ liệu cho các phần tiếp theo của đồ án này
8
CHƯƠNG 2. KỸ THUẬT THU THẬP, ĐÓNG GÓI VÀ PHÂN TÍCH
LƯU LƯỢNG MẠNG
2.1.
Kỹ thuật thu thập và đóng gói
SiLK (Hệ thống kiến thức cấp độ Internet) là một bộ công cụ cho phép
phân tích bảo mật có thể quản lý hiệu quả trên các mạng. SiLK đóng vai trị như
một bộ thu thập luồng và cũng là một cách dễ dàng để nhanh chóng lưu trữ, truy
cập, phân tích cú pháp và hiển thị dữ liệu luồng. SiLK là một dự án hiện được
phát triển bởi nhóm CERT NetSA, nhưng giống như hầu hết các công cụ bảo
mật tuyệt vời khác. Cho dù tạo ra một công cụ, tập lệnh hoặc thiết bị tuyệt vời
như thế nào đi chăng nữa thì cũng chẳng là gì nếu nó chỉ có thể được sử dụng
bởi nhà phát triển. Tài liệu cho SiLK nói đến các hướng dẫn tham khảo thực sự
hữu ích cho một công cụ bảo mật thông tin. Để nhấn mạnh tầm quan trọng của
tài liệu này, các phần sau đây sẽ sử dụng hướng dẫn này vừa là tài liệu tham
khảo, vừa là một phần của kịch bản cơ bản về cách sử dụng SiLK. Khơng phải
nói q khi cho rằng tài liệu SiLK và cộng đồng hỗ trợ cơng cụ này dễ dàng là
một số tính năng tốt nhất của dự án SiLK.
2.1.1. Bộ cơng cụ đóng gói SiLK
Bộ công cụ SiLK hoạt động thông qua hai thành phần: hệ thống đóng gói
và bộ phân tích. Hệ thống đóng gói là phương pháp mà SiLK thu thập và lưu trữ
dữ liệu luồng ở một định dạng nguyên bản, nhất quán. Thuật ngữ “đóng gói” đề
cập đến khả năng của SiLK để nén dữ liệu luồng thành một định dạng nhị phân
hiệu quả về không gian, lý tưởng để phân tích cú pháp thơng qua bộ phân tích
của SiLK. Bộ phân tích là một tập hợp các cơng cụ nhằm lọc, hiển thị, sắp xếp,
đếm, nhóm và hơn thế nữa. Bộ cơng cụ phân tích là một tập hợp các cơng cụ
dịng lệnh cung cấp mức độ linh hoạt vô hạn. Mặc dù bản thân mỗi công cụ đều
cực kỳ mạnh mẽ, nhưng mỗi cơng cụ cũng có thể được liên kết với nhau với các
công cụ khác thông qua các đường ống dựa trên kết quả logic của cơng cụ trước
đó. Các cơng cụ phân tích bổ sung có thể lấy dữ liệu chụp gói (pcap), chẳng hạn
như dữ liệu được tạo bởi tcpdump và tạo bản ghi SiLK Flow từ dữ liệu này
Việc cài đặt các công cụ phân tích tương đối đơn giản vì chúng được cài đặt
trên các hệ thống có quyền truy cập trực tiếp vào các tệp dữ liệu SiLK và yêu
cầu cấu hình ít.
9
Việc cài đặt các cơng cụ đóng gói phức tạp hơn: các cơng cụ chạy dưới
dạng quy trình nền (với mọi hệ điều hành có một cách duy nhất để bắt đầu các
quy trình này) phải hợp tác với nhau và với phần mềm và / hoặc thiết bị mạng
bổ sung. Các cơng cụ đóng gói được thiết kế để cung cấp một lượng lớn tính
linh hoạt trong việc cài đặt của chúng, và với sự linh hoạt này làm tăng thêm độ
phức tạp. Các công cụ tạo nên hệ thống thu thập và đóng gói SiLK là:
rwflowpack là trái tim của hệ thống đóng gói. Nó đọc dữ liệu luồng hoặc trực
tiếp từ các thiết bị mạng tạo ra dữ liệu luồng (trình tạo luồng) hoặc từ một tệp
được tạo bởi flowcap, chuyển đổi dữ liệu sang định dạng luồng SiLK, phân loại
các bản ghi luồng và ghi bản ghi vào các tệp phẳng hàng giờ được tổ chức theo
một cấu trúc thư mục dựa trên thời gian hoặc các tệp nhỏ để chuyển đến một
máy từ xa để xử lý bởi rwflowappend. Tất cả các cài đặt của hệ thống đóng gói
sẽ chạy rwflowpack.
flowcap cho phép thu thập dữ liệu từ xa. Nó lắng nghe các trình tạo luồng
và lưu trữ dữ liệu trong các tệp nhỏ (được gọi là tệp lưu trữ) trong một
thư mục duy nhất. Các tệp này sau đó được chuyển sang rwflowpack để
phân loại và lưu trữ.
rwflowappend cho phép lưu trữ dữ liệu từ xa. Nó theo dõi một thư mục
cho các tệp chứa một số lượng nhỏ các bản ghi SiLK Flow (được gọi là
tệp tăng dần) và nối các bản ghi đó vào các tệp hàng giờ được tổ chức
trong cây thư mục dựa trên thời gian.
rwsender xem một thư mục đến cho các tệp, di chuyển các tệp đến một
thư mục xử lý và chuyển các tệp đến một hoặc nhiều quy trình
rwreceiver. Thư mục đến của rwsender thường là thư mục đầu ra của
flowcap hoặc rwflowpack.
rwreceiver chấp nhận các tệp được chuyển từ một hoặc nhiều tiến trình
rwsender và lưu trữ chúng trong một thư mục đích. Chính thư mục đích
này là nơi giám sát rwflowpack hoặc rwflowappend cho các tệp mới. Lưu
ý rằng một trong hai rwsender hoặc rwreceiver có thể hoạt động như một
quá trình máy chủ với cái kia hoạt động như một máy khách.
rwpollexec giám sát một thư mục cho các tệp đến và chạy lệnh do người
dùng chỉ định trên mỗi tệp.
10
rwpackchecker đọc bản ghi SiLK Flow và kiểm tra các mẫu bất thường
có thể chỉ ra lỗi tệp dữ liệu.
sensor.conf là tệp cấu hình cho các cảm biến và cảm biến được sử dụng
bởi rwflowpack và flowcap .
packlogic-twoway là một trong những trình cắm thêm có sẵn mơ tả một
bộ quy tắc (logic đóng gói) mà rwflowpack có thể sử dụng khi phân loại
các bản ghi luồng là đầu vào hoặc đầu ra.
packlogic-generic là một trong những trình cắm thêm có sẵn mơ tả một
tập hợp các quy tắc (logic đóng gói) mà rwflowpack có thể sử dụng khi
phân loại các bản ghi luồng là đầu vào hoặc đầu ra.
Để sử dụng các tính năng thu thập và phân tích của SiLK, ta phải lấy dữ liệu từ
bộ tạo luồng. Khi bộ thu nhận các bản ghi luồng từ bộ tạo, các bản ghi được
phân tách một cách hợp lý theo loại luồng. Các loại luồng được phân tích cú
pháp dựa trên tệp cấu hình xác định xem các bản ghi là bên ngoài-bên trong,
bên trong ra bên ngoài hoặc bên trong với bên trong liên quan đến kiến trúc
mạng.
Trong SiLK, quy trình thu thập lắng nghe là một công cụ được gọi là
rwflowpack. Rwflowpack chịu trách nhiệm phân tích cú pháp loại luồng, xác
định dữ liệu đến từ cảm biến nào và đặt dữ liệu luồng đã tinh chỉnh vào cơ sở
dữ liệu của nó để phân tích cú pháp bằng bất kỳ cơng cụ nào trong bộ cơng cụ
phân tích.
2.1.2. Mơ hình máy đơn
Đây là mơ hình trọng tâm mà để tài nghiên cứu.
Trong cấu hình máy đơn (tất cả trong một), tất cả quá trình xử lý xảy ra
trên một máy là mơ hình phổ biến và hay được sử dụng nhất: Định cấu hình
chương trình rwflowpack để thu thập các luồng, chuyển đổi chúng sang định
dạng SiLK Flow, phân loại chúng và lưu trữ các bản ghi SiLK Flow vào cục bộ
đĩa. Các cơng cụ phân tích được cài đặt trên cùng một máy này và đọc các tệp
từ đĩa cục bộ. Hình 2.1 cho thấy cấu hình này sẽ trơng như thế nào khi các
luồng được thu thập từ bộ định tuyến NetFlow. Đây là cài đặt hoàn chỉnh đơn
giản nhất. Để sử dụng nó, hãy làm theo hướng dẫn trong Chương 3 để định cấu
hình và xây dựng mã nguồn, để tùy chỉnh các cơng cụ phân tích, cấu hình
rwflowpack
11
Hình 2. 1: Hoạt động của máy đơn thu thập với Sendor: NetFlow và lưu trữ với
rwflowpack
Hình 2. 2: Hoạt động của máy đơn với Sensor: YAF và lưu trữ với rwflowpack
Mọi hoạt động của Sensor được cấu hình trong sensor.conf - Tệp cấu
hình cảm biến cho rwflowpack và flowcap
Là một phần của việc thu thập dữ liệu luồng, các daemon rwflowpack (8)
và flowcap (8) cần biết loại dữ liệu mà chúng đang thu thập và cách thu thập dữ
liệu đó (ví dụ: nghe trên 10000 / udp cho NetFlow v5 ; nghe trên 4740 / tcp cho
IPFIX). Ngoài ra, daemon rwflowpack cần thông tin về cách phân loại luồng: ví
dụ: để gắn nhãn các luồng được thu thập tại bộ định tuyến biên giới là đến hoặc
đi
Tệp sensor.conf có thể có bất kỳ tên nào và nó có thể nằm ở bất kỳ vị trí nào.
Tên và vị trí của tệp được chỉ định bởi --sensor-configuration chuyển sang
rwflowpack và flowcap .
Tệp cấu hình cảm biến xác định các khái niệm sau:
Probe(cảm biến)
Một cảm biến chỉ định một nguồn cho dữ liệu luồng. Nguồn có thể là một
cổng mà trên đó flowcap hoặc rwflowpack thu thập dữ liệu NetFlow hoặc
IPFIX từ bộ tạo luồng như bộ định tuyến hoặc phần mềm yaf (
12