Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 58 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
58
Dung lượng
1,68 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA VÕ BẢO HÙNG HIỆN THỰC HỆ THỐNG PHÁT HIỆN XÂM NHẬP MẠNG BẰNG SỰ KẾT HỢP LINH ĐỘNG GIỮA PHẦN CỨNG VÀ PHẦN MỀM Chuyên ngành: Khoa học máy tính LUẬN VĂN THẠC SĨ TP Hồ Chí Minh, Tháng năm 2012 ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập ‐ Tự do ‐ Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Võ Bảo Hùng MSHV: 09070441 Ngày, tháng, năm sinh: 28/07/1983 Nơi sinh: Huế Chuyên ngành: Khoa học máy tính Mã số: I TÊN ĐỀ TÀI: Hiện thực hệ thống phát xâm nhập mạng kết hợp linh động phần cứng phần mềm II NHIỆM VỤ VÀ NỘI DUNG: ‐ Tìm hiểu giải pháp phát xâm nhập mạng phần cứng phần mềm ‐ Tìm hiểu chức phần mềm Snort ‐ Tìm hiểu sử dụng NetThread NetFPGA board ‐ Hiện thực phần mềm Snort chạy NetFPGA board III NGÀY GIAO NHIỆM VỤ : 25/01/2011 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 30/12/2011 V CÁN BỘ HƯỚNG DẪN (Ghi rõ học hàm, học vị, họ, tên): ‐ Hướng dẫn 1: TS Trần Ngọc Thịnh ‐ Hướng dẫn 2: TS Đinh Đức Anh Vũ CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) Tp HCM, ngày tháng năm 20 CHỦ NHIỆM BỘ MÔN ĐÀO TẠO (Họ tên chữ ký) TRƯỞNG KHOA (Họ tên chữ ký) Lời cảm ơn Đầu tiên, cho gởi lời cảm ơn chân thành đến TS.Trần Ngọc Thịnh TS.Đinh Đức Anh Vũ, người Thầy tận tình hướng dẫn tơi suốt trình Cao học tạo điều kiện để tơi hồn thành luận văn Bên cạnh đó, tơi xin cảm ơn giúp đỡ nhiệt tình bạn bè đồng nghiệp phịng máy tính C5, cơng ty thiết kế Renesas nhóm tác giả nghiên cứu NetThread trường đại học Toronto Sự hỗ trợ bạn tạo nguồn động lực lớn cho tơi q trình thực đề tài Thành phố Hồ Chí Minh, tháng 11 năm 2011 Lời cam đoan Tơi cam đoan rằng, ngồi tài liệu tham khảo tài liệu khác thích đính kèm tồn nội dung báo cáo tự soạn thảo chưa xuất tài liệu khác tính đến thời điểm trước công bố luận văn Thành phố Hồ Chí Minh, tháng năm 2012 TĨM TẮT LUẬN VĂN Cùng với phát triển mạnh mẽ tốc độ đường truyền Internet, vấn đề bảo mật hệ thống mạng ngày trở nên quan trọng số lượng gói tin vào hệ thống tăng lên đáng kể Qua trình nghiên cứu phát xâm nhập mạng phần cứng phần mềm, đề tài đề nghị kết hợp hai giải pháp nhằm đảm bảo gói tin xử lí tốc độ cao giữ vững tính linh hoạt, uyển chuyển hệ thống trước yêu cầu thay đổi người dùng Trong trình thực, đề tài lựa chọn NetFPGA board, multithread softprocessor NetThread, thực chức phần mềm Snort nhằm phát xâm nhập vào hệ thống ii Mục Lục nội dung ‐‐‐W X‐‐‐ Chuyên ngành: Khoa học máy tính i LUẬN VĂN THẠC SĨ i Phần 1 GIỚI THIỆU ĐỀ TÀI Tổng quan 2 Mục tiêu của đề tài 3 Giới hạn của đề tài 4 Cấu trúc luận văn Phần 2 Giải pháp cho hệ thống IDS và các nghiên cứu liên quan Giải pháp phần mềm 1.1 OSSEC 1.1.1 Giới thiệu 1.1.2 Đặc điểm 1.2 SNORT 1.2.1 Giới thiệu 1.2.2 Đặc điểm 1.2.3 Phân loại 2.1 Giải pháp phần cứng 10 Network Processor 10 Các nghiên cứu về sự kết hợp giữa phần mềm và phần cứng 12 3.1 Hardware/Software cooperation 12 3.2 Hardware header 13 Phần 3 Mơ hình đề nghị và các thành phần chính của hệ thống 15 Mơ hình đề nghị 15 SNORT 17 2.1 Packet decoder 18 2.2 Tiền xử lí (Preprocessor) 19 2.3 Detection Engine 21 2.4 Loging và Alerting system 21 iii 2.5 Output modules 21 NetFPGA 22 3.1 Giới thiệu 22 3.2 Thành phần chính 23 NetThread 23 4.1 MIPS architecture 24 4.2 Soft‐processor in FPGA 26 4.3 Đặc điểm của NetThread 26 Phần 4 HIỆN THỰC HỆ THỐNG 28 Giới thiệu hệ thống 28 a Sniffer mode 29 b Filter mode 30 c NIDS mode 32 Flow chart của hệ thống 33 Cấu trúc thư mục của hệ thống 34 Cách nạp chương trình snort_netthred 34 Một số hàm chính của hệ thống 35 a Hàm giao tiếp trên đường truyền mạng 35 b Hàm xử lí gói tin trong hệ thống 38 Mơ hình mở rộng của hệ thống 40 Phần 5 Kết quả thực nghiệm và đánh giá hệ thống 42 Kết quả thực nghiệm 42 a Sniffer mode 43 b Filter mode 43 c NIDS mode 45 Đánh giá hệ thống 45 a Thay đổi số lượng threads trong quá trình hoạt động 45 b Thay đổi số lượng gói tin vào hệ thống 46 Phần 6 KẾT LUẬN 48 Tổng kết 48 Những đóng góp của đề tài 48 Hướng phát triển 48 iv TÀI LIỆU THAM KHẢO 49 v Mục lục hình -o0o Hình 1. OSSEC – Host‐based Instrusion Detection System (HIDS) Hình 2. SNORT – Network Instrusion Detection System (NIDS) Hình 3. Mơ hình Hardware/Software cooperation 13 Hình 4. Mơ hình Hardware header 14 Hình 5. Mơ hình điều khiển hệ thống NIDS 15 Hình 6. Snort – Packet Decoder 18 Hình 7. Snort – Preprocessor 19 Hình 8. NetFPGA 22 Hình 9. Thành phần của NetFPGA 23 Hình 10. MIPS architecture 25 Hình 11. Đánh giá soft‐processor trên FPGA 26 Hình 12. NetThread 27 Hình 13. Hiện thực hệ thống 28 Hình 14. Hoạt động cơ bản của hệ thống 28 Hình 15. Chế độ hoạt động ở Sniffer mode 29 Hình 16. Chế độ hoạt động ở Filter mode 30 Hình 17. Chế độ hoạt động ở NIDS mode 32 Hình 18. Flow chart của hệ thống 33 Hình 19. Mơ hình mở rộng 1 40 Hình 20. Mơ hình mở rộng 2 41 Hình 21. Kết quả chương trình ở hệ thống Sniffer mode 43 Hình 22. Hệ thống ở chế độ Filter mode (IP nguồn = 10.0.0.1) 44 Hình 23. Hệ thống ở chế độ Filter mode (UDP protocol) 44 Hình 24. Hệ thống ở chế độ NIDS mode trong tấn cơng ARP 45 Hình 25. Thời gian thực thi của hệ thống ở 3 chế độ hoạt động 47 vi Mục lục bảng -o0o Bảng 1. Cấu trúc thư mục của hệ thống 34 Bảng 2. Hàm xử lí gói tin trong hệ thống 38 Bảng 3. Gói tin kiểm tra chức năng hệ thống 42 Bảng 4. Hệ thống với sự thay đổi số thread thực thi chương trình 46 Bảng 5. Hệ thống với sự thay đổi số lượng gói tin đầu vào 46 vii Bước 3: Nạp chương trình xuống board $: / / /loader/loader –i netthread_snort.inst.mif $: sleep $: / / /loader/loader –d netthread_snort.data.mif –nodebug Bước 4: Kiểm tra chương trình – giả lập máy cơng gởi gói tin vào hệ thống $: tcpreplay –I eht0 –mps=0.4 test_packet/sniffer/test_sniffer_5959.pcap Một số hàm hệ thống a Hàm giao tiếp đường truyền mạng Trong trình giao tiếp với đường truyền mạng, hệ thống sử dụng số hàm API cung cấp NetThread: hàm gởi/nhận gói tin cấu trúc IOQ Header Chương trình sau mơ hoạt động thường gặp trình giao tiếp với đường truyền mạng: typedef char t_addr; t_addr* next_packet; nf_pktin_init(); nf_pktout_init(); 35 while(1) { current_packet = nf_pktin_pop(); if (nf_pktin_is_valid(current_packet)) { struct ioq_header *ioq = (struct ioq_header*) current_packet; int size = ntohs(ioq->byte_length); int length = sizeof(struct ioq_header) + size; // Packet processing //…………… // Forward packet t_addr* out_packet = nf_pktout_alloc(length); memcpy32( current_packet + sizeof(struct ioq_header), out_packet + sizeof(struct ioq_header), size ); nf_pktin_free(current_packet); struct ioq_header *dioq = (struct ioq_header*) out_packet; fill_ioq(dioq, PORT, size); nf_pktout_send(out_packet, out_packet+length) ; } } 36 Hàm nhận gói tin từ đường truyền mạng • void nf_pktin_init(): hàm khởi tạo input buffer • t_addr* nf_pktin_pop(): hàm trả địa gói tin nhận (theo thứ tự) vào hệ thống • int nf_pktin_is_valid(t_addr* addr): xác định trỏ trả hàm nf_pktin_pop() có thật gói tin hay khơng • void nf_pktin_free(t_addr* val): hàm xóa gói tin input buffer (sau xử lí đưa gói tin vào output buffer) Hàm cần gọi sớm gói tin chứa đầy input buffer, gói tin đến không chứa vào input buffer dẫn đến bị drop Hàm gởi gói tin đường truyền mạng • void nf_pktout_init(): hàm khởi tạo output buffer • t_addr* nf_pktout_alloc(uint size): hàm khai báo vùng nhớ để lưu trữ gói tin vào output buffer Hàm trả địa cấp phát cho gói tin trả trường hợp khơng đủ vùng nhớ • void nf_pktout_send(char* start_addr, char* end_addr): hàm gởi gói tin có chiều dài (end_addr – start_addr) cổng Ethernet IOQ Header struct ioq_header: gói tin nhận vào truyền NetThread gắn thêm byte – gọi ioq_header với cấu trúc sau: struct ioq_header { unsigned short dst_port; unsigned short word_length; unsigned short src_port; 37 unsigned short byte_length; }; ioq_header dùng để định port nguồn, port đích chiều dài gói tin • fill_ioq(struct ioq_header *ioq, unsigned short port, unsigned short bytes): cập nhật thơng tin ioq_header gói tin chuẩn bị gởi cổng Ethernet (port=0: nf2c0, port=2: nf2c1, port=4:nf2c2, port=6:nf2c3) Hàm không cần cập nhật thông tin port nguồn gói tin phần cứng NetThread bỏ qua thơng tin gởi gói tin cổng Ethernet b Hàm xử lí gói tin hệ thống Bảng mơ tả hàm xử lí gói tin tương ứng với chế độ hoạt động Hàm sử dụng check_packet(t_addr* packet) forward_packet(void* data) filter_packet() arpspoof() frag2() alert() debug() Config √ √ Sniffer Filter NIDS √ √ √ √ √ √ √ √ √ √ Bảng Hàm xử lí gói tin hệ thống • check_packet(t_addr* packet): hàm phân loại gói tin vào hệ thống o Gói tin rác: dùng để loại bỏ gói tin gởi từ cổng khơng cho phép hệ thống o Gói tin cấu hình: nhận dạng gói tin cấu hình để thay đổi chức hệ thống o Gói tin bình thường: Đưa gói tin vào hệ thống để xử lí 38 • void forward_packet(void* data): chép nội dung gói tin từ input buffer output buffer, sau gắn ioq_header để xác định cổng gói tin truyền Hàm sử dụng sau gói tin xử lí xong cần truyền lên server • int filter_packet(t_addr* packet): hàm dùng để kiểm tra gói tin có tuân theo chuẩn qui định trước hay khơng • bool frag2(t_addr* packet, struct fragment_buffer* b): Hàm phát gói tin bị phân mảnh lưu giữ chúng fragment buffer Nếu tồn gói tin phân mảnh trùng (do gói tin bị trùng kẻ cơng cố tình gởi làm tràn ngập hệ thống), chương trình loại bỏ gói tin đến sau Sau tập hợp đầy đủ gói tin phần mảnh, chương trình kết nối chúng lại thành gói tin hồn chỉnh • bool arpspoof(t_addr* packet, struct arp_table* arp_table): gói tin ARP vào hệ thống kiểm tra src_mac, des_mac (của Ehternet header), sender_mac, target_mac, sender_ip, target_ip (của ARP header) Dựa vào bất thường giá trị trên, hàm đưa dạng cảnh báo đến hệ thống o “ARP Unicast request”: Gói tin yêu cầu ARP máy gởi trực tiếp đến server, khơng phải broadcast tồn hệ thống o “Ethernet/ARP request is mismatch source MAC”: src_mac != sender_mac o “Attacking arpspoof: mac address of sender is ff:ff:ff:ff:ff:ff”: kẻ cơng gởi gói tin ARP reply trả lời rằng: “địa MAC tương ứng với IP ff:ff:ff:ff:ff:ff” Điều khơng hợp lí địa MAC ff:ff:ff:ff:ff:ff dùng để gởi broadcast Hệ thống tự động loại bỏ gói tin o “Ethernet/ARP reply is mismatch source MAC”: src_mac != sender_mac o “Ethernet/ARP reply is mismatch destination MAC”: des_mac != target_mac o “Attacking arpspoof: Overwrite ARP cache”: kẻ công gởi gói tin ARP reply để ghi đè giá trị ánh xạ MAC – IP có sẳn ARP table Hệ thống tự động loại bỏ gói tin • int alert (char* str): hàm gởi gói tin cảnh báo từ NetFPGA board đến server Nội dung gói tin qui định người lập trình tương ứng với loại cơng vào hệ thống • int debug (char* str): hàm dùng để debug chương trình cách gởi gói tin từ NetFPGA board đến server 39 Mơ hình mở rộng hệ thống Hệ thống NIDS hồn chỉnh cần có phối hợp phần cứng phần mềm Quá trình kết nối thực mơ hình sau: packet nf2c0 NetThread SNORT nf2c2 Detection Engine nf2c1 NetFPGA Hình 19 Mơ hình mở rộng Mơ hình (hình 19): chương trình snort_netthread (phần mềm) Detection Engine (phần cứng) nạp lên board NetFPGA Q trình giao tiếp thực cách xây dựng buffer giao tiếp thơng qua cổng nf2c2 • Ưu điểm: Hệ thống nhỏ gọn, đơn giản • Nhược điểm: logic cell phận Detection Engine bị giới hạn phải chia tài nguyên với soft-processor NetThread 40 packet nf2c0 NetThread SNORT nf2c1 nf2c0 NetFPGA Detection Engine nf2c1 NetFPGA Hình 20 Mơ hình mở rộng Mơ hình (hình 20): chương trình snort_netthread (phần mềm) Detection Engine (phần cứng) nạp lên hai board NetFPGA khác Q trình giao tiếp thực thơng qua cổng Ethernet • Ưu điểm: gia tăng số lượng logic cell cho phận Detection Engine Bên cạnh đó, tính độc lập uyển chuyển phận tốt • Nhược điểm: hệ thống cần đến hai FPGA board phí cho hệ thống cao 41 Phần Kết thực nghiệm đánh giá hệ thống Kết thực nghiệm Bảng mô tả tập liệu kiểm tra chức hệ thống Sniffer Filter Source IP Destination IP Source port Destination port Ethernet packet Protocol NIDS Frag2 Arpspoof Xây dựng 5959 gói tin cho chế độ Sniffer Xây dựng 9000 gói tin cho chế độ Filter - 10.10.10.1 : 25 gói tin - 192.168.0.1 : 50 gói tin - 172.28.12.44 : 25 gói tin - 200.200.0.1 : 25 gói tin - 10.10.10.2 : 25 gói tin - 192.168.0.2 : 50 gói tin - 172.28.12.45 : 75 gói tin - 200.200.0.2 : 75 gói tin - 443 : 486 gói tin - 1052 : 25 gói tin - 1062 : 25 gói tin - 3600 : 25 gói tin - 80 : 3063 gói tin - 515 : 25 gói tin - 389 : 25 gói tin - 1352 : 25 gói tin - IP : 8994 gói tin - ARP : 14 gói tin - TCP : 8532 gói tin - UDP : 352 gói tin - ICMP : 110 gói tin Xây dựng gói tin phân mảnh cho giao thức UDP, ICMP Xây dựng loại tân cơng cho giao thức ARP Bảng Gói tin kiểm tra chức hệ thống 42 a Sniffer mode Hình 21 mơ tả hoạt động server chế độ Sniffer mode: hệ thống bắt gói tin gởi từ phía client thơng qua chương trình phần mềm Wireshark Hình 21 Kết chương trình hệ thống Sniffer mode b Filter mode Ở chế độ Filter mode, hệ thống lọc gói tin theo chuẩn qui định trước • Hình 22: hệ thống lọc 25 gói tin có IP nguồn 10.10.10.1 • Hình 23: hệ thống lọc 352 gói tin sử dụng UDP protocol 43 Hình 22 Hệ thống chế độ Filter mode (IP nguồn = 10.0.0.1) Hình 23 Hệ thống chế độ Filter mode (UDP protocol) 44 c NIDS mode Ở chế độ NIDS mode, hệ thống phát dạng cơng giao thức ARP Khi phát công, hệ thống gởi gói tin cảnh báo lên server phía server có chương trình để bắt gói tin cảnh báo Hình 24 Hệ thống chế độ NIDS mode công ARP Đánh giá hệ thống Để đánh giá hệ thống cách tổng quát, hệ thống sử dụng tập gói tin đường truyền mạng a Thay đổi số lượng threads q trình hoạt động Bảng mơ tả kết thay đổi số lương thread (4 thread thread) đưa vào hệ thống 100.000 gói tin Về bản, thời gian hoạt động sử dụng 45 processor (4 thread) processor (8 thread) gần tương đương Tuy nhiên chạy với processor, chương trình nhanh có tận dụng khả song song Số thread Thời gian thực thi 1477 1466 Bảng Hệ thống với thay đổi số thread thực thi chương trình b Thay đổi số lượng gói tin vào hệ thống Để kiểm tra độ ổn định hệ thống chế độ Sniffer, Filter, NIDS: trình đánh giá tăng tốc độ số lượng gói tin vào hệ thống mô tả bảng sau Số lượng gói tin Tốc độ gửi(Mbps) sniffer(ms) filter(ms) NIDS(ms) 1.000 235.32 315 327 347 5.000 487.93 378 364 378 10.000 516.03 435 441 489 50.000 543.17 769 757 876 100.000 588.69 1178 1201 1451 Bảng Hệ thống với thay đổi số lượng gói tin đầu vào Với số liệu đo ta thấy hệ thống hoạt động ổn định chế độ với tốc độ lưu lượng mạng vào khoảng 580Mbps Hình 25 tóm tắt lại thời gian thực thi hệ thống Dựa vào kết thực nghiệm ta thấy giai đoạn đầu tiên, hệ thống cần thời gian định để khởi tạo buffer, xây dựng bảng ARP table Sau 46 q trình khởi động hồn tất, thời gian thực thi chương trình tăng tuyến tính so với số lượng gói tin vào hệ thống 1600 1400 Thời gian thực thi 1200 1000 sniffer(ms) filter(ms) NIDS(ms) 800 600 400 200 0 20000 40000 60000 80000 100000 120000 Số lượng gói tin Hình 25 Thời gian thực thi hệ thống chế độ hoạt động 47 Phần KẾT LUẬN Tổng kết Thơng qua việc tìm hiểu phương pháp nghiên cứu hệ thống xâm nhập mạng, đề tài xây dựng thực chức chương trình Snort chạy hồn tồn NetFPGA board Hệ thống hoạt động ổn định chế độ Sniffer, Filter NIDS với tốc độ lưu lượng mạng 580Mbps Những đóng góp đề tài - Đưa giải pháp tận dụng khả tính tốn nhanh phần cứng linh hoạt phần mềm cho hệ thống phát xâm nhập mạng - Nghiên cứu sử dụng soft-multiprocessor NetThread NetFPGA board - Hiện thực platform chạy FPGA Hướng phát triển - Để xây dựng hệ thống hoàn thiện, hướng phát triển đề tài xây dựng phận Detection Engine phần cứng; sau tiến hành kết nối với chương trình Snort_NetThread FPGA board - Bên cạnh đó, hệ thống Snort_NetThread cần kiểm tra chi tiết với nhiều dạng gói tin nhằm cải tiến tốc độ xử lí đường truyền tốc độ cao 48 TÀI LIỆU THAM KHẢO [1] Ryan Proudfoot, Kenneth Kent, Eric Aubanel, and Nan Chen, "Flexible Software-Hardware Network Intrusion Detection System", 2008 The 19th IEEE/IFIP International Symposium on Rapid System Prototyping [2] Toshihiro KATASHITA, Yoshinori YAMAGUCHI, Atusi MAEDA, Kenji TODA, "FPGABased Intrusion Detection System for 10 Gigabit Ethernet", IEICE TRANS.INF.&SYST., VOL.E90-D, NO.12 DECEMBER 2007 [3] Nicholas Weaver, Vern Paxson, and Jos`e M.Gonz`alez, "The shunt: and fpga-based accelerator for network intrusion prevention" In FPGA, pages 199-206, 2007 [4] Traffic Scanner White Paper 24-05-2007 [5] Intrusion Detection using Open Source Tools (Jack TIMOFTE - 2008) [6] SNORT homepage: www.snort.org [7] Wikipedia: www.wikipedia.org [8] LABRECQUE, M., JEFFREY, M., AND STEAFFAN, J.G Application-specific signatures for transactional memory in soft processor In Proc of ArC (2010) [9] LABRECQUE, M., AND STEFFAN, J G Improving pipelined soft processors with multithreading In Proc of FPL ’07 (August 2007), pp 210–215 [10] LABRECQUE, M., AND STEFFAN, J G Fast critical sections via thread scheduling for FPGA-based multithreaded processors In Proc of 19th International Conference on Field Programmable Logic and Applications (FPL) (Prague, Czech Republic, Sept 2009) [11] LABRECQUE, M., AND STEFFAN, J G NetTM http://www.netfpga.org/foswiki/bin/view/NetFPGA/OneGig/NetTM, February 2011 [12] LABRECQUE, M., AND STEFFAN, J G NetTM: Faster and easier synchronization for soft multicores via transactional memory In International Symposium on Field-Programmable Gate Arrays (FPGA) (Monterey, Ca, US, February 2011) [13] Prentice Hall, Intrusion Detection Systems with Snort, 2003 [14] Snort User manual 2.1 [15] Andrés Felipe Arboleda, Snort diagram for developer, April 2005 49 ... TÀI: Hiện thực hệ thống phát xâm nhập mạng kết hợp linh động phần cứng phần mềm II NHIỆM VỤ VÀ NỘI DUNG: ‐ Tìm hiểu giải pháp phát xâm nhập mạng phần cứng phần mềm ‐ Tìm hiểu chức phần mềm Snort... hóa • Hệ thống kết hợp khả tính tốn phần cứng linh động, uyển chuyển phần mềm FPGA board: chức tổng quát thực phần mềm chức cần hiệu cao thực phần cứng • Để kiểm tra lợi ích tính hệ thống, thực. .. sau: Phần mô tả nghiên cứu phát xâm nhập mạng phần cứng phần mềm Bên cạnh đó, số mơ hình kết hợp phần cứng phần mềm đưa thảo luận phân tích 4 Ở phần 3, luận văn xây dựng mơ hình cho hệ thống,