38 0 844KB
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN
Học phần: Kỹ thuật theo dõi và giám sát an toàn mạng Bài báo cáo: Bài thực hành số 2 Giảng viên hướng dẫn: Nhóm lớp : Tổ thực hành : Sinh viên : Mã sinh viên :
Ninh Thị Thu Trang 02 01 Trần Đức Huy B18DCAT111
Hà Nội 2022
I. Lý thuyết - Zeek là gì
+ Zeek là một công cụ phân tích lưu lượng mạng mã nguồn mở thụ động. Nhiều nhà khai thác sử dụng Zeek như một trình giám sát an ninh mạng (NSM) để hỗ trợ điều tra hoạt động đáng ngờ hoặc độc hại. Zeek cũng hỗ trợ một loạt các nhiệm vụ phân tích lưu lượng ngoài miền bảo mật, bao gồm đo lường hiệu suất và khắc phục sự cố. - Quản lý trạng thái: Cấu trúc dữ liệu chính của Zeek là một kết nối tuân theo nhận dạng luồng điển hình các cơ chế, chẳng hạn như phương pháp tiếp cận 5-tuple. Cấu trúc 5 tuple bao gồm IP nguồn địa chỉ / số cổng, địa chỉ IP đích / số cổng và giao thức đang sử dụng. Cho mộtgiao thức hướng kết nối như TCP, định nghĩa về kết nối rõ ràng hơn,tuy nhiên đối với những người khác như UDP và ICMP, Zeek triển khai một sự trừu tượng giống như luồng để tổng hợp các gói tin. Mỗi gói thuộc về chính xác một kết nối - Phân tích tầng giao vận: Trên lớp vận tải, Zeek phân tích các gói TCP, UDP. Trong TCP, trình phân tích liên kết của Zeek theo dõi chặt chẽ các thay đổi trạng thái khác nhau, theo dõi các xác nhận, xử lý truyền lại và nhiều hơn nữa. - Phân tích tầng ứng dụng: Việc phân tích dữ liệu lớp ứng dụng của một kết nối phụ thuộc vào dịch vụ. Ở đó là máy phân tích cho nhiều loại giao thức khác nhau, ví dụ: HTTP, SMTP hoặc DNS, thường tiến hành phân tích chi tiết luồng dữ liệu. - Kiến trúc của Zeek:
- Trình thông dịch kịch bản của Zeek: Trong khi bản thân công cụ sự kiện là trung lập về chính sách, thì lớp trên cùng của Zeek xác định chính sách an ninh mạng theo môi trường cụ thể. Bằng cách viết các trình xử lý cho các sự kiện có thể do cỗ máy sự kiện nâng lên, người dùng có thể xác định chính xác các ràng buộc trong mạng. Nếu một vi phạm bảo mật được phát hiện, lớp chính sách sẽ tạo ra một cảnh báo.Có thể tạo trình xử lý sự kiện mới bằng ngôn ngữ kịch bản riêng của Zeek. Trong khi cung cấp tất cả sự tiện lợi mong đợi của một ngôn ngữ kịch bản mạnh mẽ, nó đã được thiết kế vớiphát hiện xâm nhập mạng trong tâm trí. Mặc dù dự kiến rằng các tập lệnh chính sách bổ sung là được viết bởi người dùng, tuy nhiên có một số tập lệnh mặc định được bao gồm trong cài đặt Zeek. Các tập lệnh mặc định này đã thực hiện một loạt các phân tích và có thể dễ dàng tùy chỉnh. - Các bộ phận phân tích của Zeek: Phần lớn các bộ phân tích của Zeek nằm trong công cụ sự kiện của nó với các tập lệnh chính sách đi kèm có thể được tùy chỉnh bởi người dùng. Tuy nhiên, đôi khi, bộ phân tích chỉ là một chính sách tập lệnh triển khai nhiều trình xử lý sự kiện. Các bộ phân tích thực hiện lớp ứng dụng giải
mã, phát hiện bất thường, đối sánh chữ ký và phân tích kết nối. Zeek đã được được thiết kế để có thể dễ dàng thêm các bộ phân tích bổ sung. - Chữ ký: hầu hết các hệ thống phát hiện xâm nhập mạng (NIDS) phù hợp với một tập hợp lớn các chữ ký chống lại lưu lượng mạng. Ở đây, chữ ký là một mẫu byte mà NIDS cố gắng xác định vị trí tải trọng của các gói mạng. Ngay sau khi tìm thấy một kết quả phù hợp, hệ thống sẽ tạo ra một báo động. Một hệ thống IDS nổi tiếng là Snort; ngược lại, cách tiếp cận chung của Zeek để xâm nhập phát hiện có phạm vi rộng hơn nhiều so với đối sánh chữ ký truyền thống, nhưng vẫn chứa một công cụ chữ ký cung cấp một chức năng tương tự như của các hệ thống khác. - ZeekControl: trước đây được gọi là BroControl, là một trình bao tương tác để dễ dàng vận hành và quản lý các cài đặt Zeek trên một hệ thống hoặc trên nhiều hệ thống trong một cụm điều khiển lưu lượng.
II. Thực hiện 1. Thiết lập hostname và người dùng Lệnh: sudo useradd Huy_B18DCAT111 Lệnh: passwd Huy_B18DCAT111 Lệnh: sudo usermod –a –G zeek Huy_B18DCAT111 Lệnh: sudo chsh –s /bin/bash Huy_B18DCAT111 Lệnh: su Huy_B18DCAT111
2. Phân tích file pcap sử dụng Zeek Scripting 2.1. Khởi động zeekcontrol shell và bắt đầu một phiên với zeek instance
2.2.1 Phân tích cú pháp
- Phân tích lưu lượng UDP với Zeek Script o Mở file lab6_sec2-2.zeek
Trong đó: Dòng 1: Sự kiện udp_request được kích hoạt khi một gói tin chứa tiêu đề của udp request được xử lý. Các thông tin tiêu đề gói tin liên quan được lưu trữ trong cấu trúc dữ liệu connection được truyền vào hàm qua biến u Dòng 2: In ra chuỗi chỉ định.%s đại diện cho string,u$id$resp_h truy xuất địa chỉ ip đích từ gói tin udp.Giá trị này sẽ được thay thế vào %s Dòng 3: Kết thúc sự kiện udp_request Dòng 4: Sự kiện udp_response được kích hoạt khi một gói tin chứa các tiêu đề của udp response được xử lý. Các thông tin tiêu đề gói tin liên quan được lưu trữ trong cấu trúc dữ liệu connection được truyền vào hàm qua biến u Dòng 5: tương tự dòng 2 Dòng 6: Kết thúc sự kiện udp_reply o Di chuyển đến thư mục Zeek-Labs/UDP-Traffics và thực hiện câu lệnh: zeek –C –r ../Sample-PCAP/Ten_MaSV.pcap ../LabScripts/ lab6_sec2-2.zeek
- Phân tích lưu lượng TCP với Zeek Script o Mở file lab6_sec2-3.zeek
Trong đó: Dòng 1: Sự kiện tcp_packet được kích hoạt khi một gói tin chứa tiêu đề tcp được xử lý. Các thông tin tiêu đề gói tin liên quan được lưu trữ trong cấu trúc dữ liệu connection được truyền vào hàm qua biến c. Các thông tin liên quan tới tcp như seq,ack được truyền vào theo cách thức tương tự Dòng 2: In ra địa cổng đích.c$id$resp_p truy xuất cổng đích và thay thế vào %s Dòng 3: Kết thúc sự kiện tcp_packet o Thực hiện câu lệnh: zeek –C –r ../Sample-PCAP/Ten_MaSV.pcap ../Lab-Scripts/ lab6_sec2-3.zeek
o Đổi tên file conn.log thành UpdateConn.log Mở file lab6_sec3-1.zeek
Trong đó: Dòng 1: sự kiện zeek_init được kích hoạt khi Zeek được khởi tạo lần đầu tiên Dòng 3: Tạo biến cục bộ update được khởi tạo với bộ lọc mặc định Conn:LOG Dòng 4: Đặt đường dẫn của biến update thành UpdateConn.log Dòng 5: Thêm bộ lọc mới vào luồng hoạt động của nhật ký
Dòng 6: kết thúc sự kiện zeek_init Thực hiện phân tích file huy111.pcap sử dụng script trong file lab6_sec3-1.zeek
Kiểm tra file UpdateConn.log
o Cập nhật file conn.log Mở file lab6_sec3-2.zeek
Trong đó: Dòng 1: hàm boolean với tham số là rec Dòng 3: Trả về true nếu dịch vụ lưu trong rec là http Dòng 5: sự kiện zeek_init được kích hoạt khi Zeek được khởi tạo lần đầu tiên Dòng 6: tạo bộ lọc cục bộ với http với đường dẫn là conn-http.log
Dòng 7: Thêm bộ lọc mới vào luồng hoạt động của nhật ký Dòng 8: kết thúc sự kiện zeek_init Thực hiện phân tích file tho242.pcap sử dụng script trong file lab6_sec3-2.zeek
Mở file conn.log
o Kết thúc thực hiện bằng cách dừng zeekctl
2. Phân tích log file sử dụng Zeek Signatures - Khởi chạy zeekctl và mở file lab7_sec2_2.sig
Giải thích: bao gồm 2 chữ ký. Chữ ký HTTP-POST-sig dùng để khớp với các kết nối tcp tới cổng 80 và với phương thức POST. Chữ ký HTTP-GETsig dùng để khớp với các kết nối tcp tới cổng 80 và với phương thức GET - Phân tích lưu lượng từ một file pcap và chữ ký Zeek o Di chuyển đến thư mục TCP-Traffic o Thực hiện câu lệnh: zeek –r ../Sample-PCAP/huy111.pcap –s ../LabScripts/lab7_sec2-2.sig o Mở file signature.log
- Thực thi chữ ký zeek cho phân tích lưu lượng mạng o Mở file lab7_sec3-1.sig
Giải thích: tương tự phần trên o Thực hiện 2 câu lệnh