Lab tìm hiểu về các hệ thống phát hiện tấn công, xâm nhập ids ips

19 0 0
Lab tìm hiểu về các hệ thống phát hiện tấn công, xâm nhập ids ips

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

IDS (Intrusion Detection Systems Hệ thống phát hiện xâm nhập) là thiết bị hoặc phần mềm có nhiệm vụ giám sát traffic mạng, các hành vi đáng ngờ và cảnh báo cho admin hệ thống.  Mục đích của IDS là phát hiện và ngăn ngừa các hành động phá hoại bảo mật hệ thống, hoặc những hành động trong tiến trình tấn công như dò tìm, quét các cổng. IDS cũng có thể phân biệt giữa những cuộc tấn công nội bộ (từ chính nhân viên hoặc khách hàng trong tổ chức) và tấn công bên ngoài (từ hacker).  Trong một số trường hợp, IDS có thể phản ứng lại với các traffic bất thườngđộc hại bằng cách chặn người dùng hoặc địa chỉ IP nguồn truy cập mạng. b) Phân loại  IDS có nhiều loại và tiếp cận các traffic đáng ngờ theo nhiều cách khác nhau. Có IDS dựa trên mạng (NIDS) và dựa trên máy chủ (HIDS). Có IDS phát hiện dựa trên việc tìm kiếm các chữ ký cụ thể của những mối đe dọa đã biết (tương tự như cách các phần mềm diệt virus phát hiện và ngăn chặn malware) và IDS phát hiện bằng cách so sánh các mẫu traffic với baseline rồi xem có sự bất thường nào không. Có những IDS chỉ theo dõi và cảnh báo, có IDS sẽ thực hiện hành động khi phát hiện xâm nhập.  NIDS: Network Intrusion Detection Systems được đặt tại một điểm chiến lược hoặc những điểm giám sát traffic đến và đi từ tất cả các thiết bị trên mạng. NIDS có thể quét tất cả traffic inbound và outbound, nhưng việc này có thể tạo ra nút thắt cổ chai làm giảm tốc độ chung của mạng.  HIDS: Host Intrusion Detection Systems, hệ thống phát hiện xâm nhập này chạy trên máy chủ riêng hoặc một thiết bị đặc biệt trên mạng. HIDS chỉ giám sát các gói dữ liệu inbound và outbound từ thiết bị và cảnh báo người dùng hoặc quản trị viên về những hoạt động đáng ngờ được phát hiện.  SignatureBased: Là các IDS hoạt động dựa trên chữ ký, giám sát các gói tin trên mạng và so sánh chúng với cơ sở dữ liệu chữ ký, thuộc tính từ những mối đe dọa đã biết, tương tự như cách phần mềm diệt virus hoạt động. Vấn đề đối với hệ thống IDS này là có thể không phát hiện ra mối đe dọa mới, khi chữ ký để nhận biết nó chưa được IDS kịp cập nhật.  AnomalyBased: IDS này sẽ phát hiện mối đe dọa dựa trên sự bất thường. AnomalyBased giám sát traffic mạng và so sánh với baseline đã được thiết lập. Baseline sẽ xác định đâu là mức bình thường của mạng: loại băng thông thường được dùng, giao thức thường dùng, cổng và thiết bị thường kết nối với nhau, cảnh báo cho quản trị viên mạng hoặc người dùng khi phát hiện traffic truy cập bất thường hoặc những khác biệt đáng kể so với baseline.  Passive: IDS thụ động sẽ chỉ phát hiện và cảnh báo. Khi phát hiện traffic đáng ngờ hoặc độc hại, Passive sẽ tạo cảnh báo và gửi đến quản trị viên hoặc người dùng.  Reactive: Ngoài các nhiệm vụ như IDS Passive, Reactive còn thực hiện những hành động được thiết lập sẵn để ngay lập tức phản ứng lại các mối đe dọa, ví như: chặn truy cập, khóa IP. c) Ưu nhược điểm  Ưu điểm:  Cung cấp một cách nhìn toàn diện về toàn bộ lưu lượng mạng.  Giúp kiểm tra các sự cố xảy ra với hệ thống mạng.  Sử dụng để thu thập bằng chứng cho điều tra và ứng cứu sự cố.  Nhược điểm:  Có thể gây ra tình trạng báo động nhầm nếu cấu hình không hợp lý.  Khả năng phân tích lưu lượng bị mã hóa tương đối thấp.  Chi phí triển khai và vận hành hệ thống tương đối lớn. d) Các kỹ thuật phát hiện xâm nhập  Phát hiện dựa trên chữ ký:  Là hình thức lâu đời nhất của phát hiện xâm nhập.  Có hai cơ chế phát hiện dựa trên chữ ký phổ biến là Snort và Suricata.  Phát hiện dựa trên danh tiếng:  Là một tập con của phát hiện dựa trên chữ ký.  Phát hiện thông tin liên lạc giữa các máy tính được bảo vệ trong mạng và các máy tính trên Internet có thể bị nhiễm độc do đã từng tham gia vào các hành động độc hại trước đó.  Kết quả phát hiện dựa trên các chữ ký đơn giản như địa chỉ IP hoặc tên miền.  Phát hiện dựa trên bất thường:  Là một hình thức mới của phát hiện xâm nhập.  Dựa vào quan sát sự cố mạng và nhận biết lưu lượng bất thường thông qua các chuẩn đoán và thống kê.  Có khả năng nhận ra các mẫu tấn công khác biệt với hành vi mạng thông thường.  Đây là cơ chế phát hiện rất tốt nhưng khó thực hiện.  Phát hiện dựa trên Honeypot:  Là tập con mới được phát triển của phát hiện dựa trên bất thường.  Honeypot đã được sử dụng trong nhiều năm để thu thập phần mềm độc hại và các mẫu tấn công cho mục đích nghiên cứu.  Honeypot có thể được ứng dụng tốt trong phát hiện xâm nhập bằng cách cấu hình hệ thống. 2. Tìm hiểu về kiến trúc và tính năng của Snort 2.1. Kiến trúc  Snort bao gồm nhiều thành phần, mỗi phần có một chức năng riêng biệt:  Module giải mã gói tin  Module tiền xử lý  Module phát hiện  Module log và cảnh báo  Module kết xuất thông tin  Kiến trúc của Snort được thể hiện qua mô hình sau:  Khi Snort hoạt động, nó sẽ lắng nghe tất cả các gói tin nào di chuyển qua nó. Các gói tin sau khi bị bắt sẽ được đưa vào module giải mã. Tiếp theo sẽ vào module tiền xử lý và rồi module phát hiện. Tại đây tùy vào việc có phát hiện được xâm nhập hay không mà gói tin có thể bỏ qua để lưu thông tin tiếp hoặc đưa vào module Log và cảnh báo để xử lý. Khi các cảnh báo được xác định, Module kết xuất thông tin sẽ thực hiện việc đưa ra cảnh báo theo đúng định dạng mong muốn. a) Module giải mã gói tin  Snort chỉ sử dụng thư viện pcap để bắt mọi gói tin trên mạng lưu thông qua hệ thống. Một gói tin sau khi được giải mã sẽ đưa tiếp vào module tiền xử lý. b) Module tiền xử lý  Module tiền xử lý rất quan trọng đối với bất kỳ hệ thống nào để có thể chuẩn bị gói dữ liệu đưa vào cho Module phát hiện phân tích. 3 nhiệm vụ chính:  Kết hợp lại các gói tin: Khi một dữ liệu lớn được gửi đi, thông tin sẽ không đóng gói toàn bộ vào một gói tin mà thực hiện phân mảnh, chia thành nhiều gói tin rồi mới gửi đi. Khi Snort nhận được các gói tin này, nó phải thực hiện kết nối lại để có gói tin ban đầu. Module tiền xử lý giúp Snort có thể hiểu được các phiên làm việc khác nhau.  Giải mã và chuẩn hóa giao thức (decodenormalize): công việc phát hiện xâm nhập dựa trên dấu hiệu nhận dạng nhiều khi thất bại khi kiểm tra các giao thức có dữ liệu có thể được biểu diễn dưới nhiều dạng khác nhau. Ví dụ: một Web server có thể nhận nhiều dạng URL: URL viết dưới dạng hexaunicode hay URL chấp nhận dấu hay \. Nếu Snort chỉ thực hiện đơn thuần việc so sánh dữ liệu với dấu hiệu nhận dạng sẽ xảy ra tình trạng bỏ sót hành vi xâm nhập. Do vậy, 1 số Module tiền xử lý của Snort phải có nhiệm vụ giải mã và chỉnh sửa, sắp xếp lại các thông tin đầu vào.  Phát hiện các xâm nhập bất thường (nonruleanormal): các plugin dạng này thường để xử lý với các xâm nhập không thể hoặc rất khó phát hiện bằng các luật thông thường. Phiển bản hiện tại của Snort có đi kèm 2 plugin giúp phát hiện xâm nhập bất thường đó là portscan và bo (backoffice). Portscan dùng để đưa ra cảnh báo khi kẻ tấn công thực hiện quét cổng để tìm lỗ hổng. Bo dùng để đưa ra cảnh báo khi hệ thống nhiễm trojan backoffice. c) Module phát hiện  Đây là module quan trọng nhất của Snort. Nó chịu trách nhiệm phát hiện các dấu hiệu xâm nhập. Module phát hiện sử dụng các luật được định nghĩa trước để so sánh với dữ liệu thu thập được, từ đó xác định xem có xâm nhập xảy ra hay không.  Một vấn đề quan trọng đối với module phát hiện và vấn đề thời gian xử lý gói tin: một IDS thường nhận rất nhiều gói tin và bản thân nó cũng có rất nhiều luật xử lý. Khi lưu lượng mạng quá lớn có thể xảy ra việc bỏ sót hoặc không phản hồi đúng lúc. Khả năng xử lý của module phát hiện phụ thuộc vào nhiều yếu tố: số lượng các luật, tốc độ hệ thống, băng thông mạng.  Một module phát hiện có khả năng tách các phần của gói tin ra và áp dụng luật lên từng phần của gói tin:  IP header  Header ở tầng transport: TCP, UDP  Header ở tầng application: DNS, HTTP, FTP …  Phần tải của gói tin  Do các luật trong Snort được đánh số thứ tự ưu tiên nên 1 gói tin khi bị phát hiện bởi nhiều luật khác nhau, cảnh báo được đưa ra theo luật có mức ưu tiên cao nhất. d) Module log và cảnh báo  Tùy thuộc vào module phát hiện có nhận dạng được xâm nhập hay không mà gói tin có thể bị ghi log hay đưa ra cảnh báo. Các file log là các file dữ liệu có thể ghi dưới nhiều định dạng khác nhau như tcpdump. e) Module kết xuất thông tin  Module này thực hiện các thao tác khác nhau tùy thuộc vào việc cấu hình lưu kết quả xuất ra như thế nào.  Ghi log file  Ghi syslog  Ghi cảnh báo vào cơ sở dữ liệu  Tạo file log XML  Cấu hình lại Router, firewall  Gửi các cảnh báo được gói trong gói tin sử dụng giao thức SNMP 2.2.Bộ luật của Snort  Cấu trúc luật của Snort gồm hai phần:  Phần Header: chứa thông tin về hành động mà luật đó sẽ thực hiện khi phát hiện ra có xâm nhập nằm trong gói tin và nó cũng chứa tiểu chuẩn để áp dụng luật với gói tin đó.  Phần Option: chứa thông điệp cảnh báo và các thông tin về các phần của gói tin dùng để tạo nên cảnh báo. Phần Option chứa các tiêu chuẩn phụ thêm để đối sánh với gói tin. a) Cấu trúc phần Header • Action  Có 5 luật được định nghĩa:  Pass: cho phép Snort bỏ qua gói tin này.  Log: dùng để log gói tin. Có thể log vào file hay vào CSDL.  Alert: gửi thông điệp cảnh báo khi dấu hiệu xâm nhập được phát hiện.  Activate: tạo ra cảnh báo và kích hoạt thêm các luật khác để kiểm tra thêm điều kiện của gói tin.  Dynamic: đây là luật được gọi bởi các luật khác có hành động là Activate. • Protocol  Chỉ ra loại gói tin mà luật được áp dụng:  IP  ICMP  TCP  UDP  Nếu là IP thì Snort sẽ kiểm tra header của lớp liên kết để xác định loại gói tin. Nếu bất kỳ giao thức nào khác, Snort sẽ sử dụng header IP để xác định loại giao thức. • Address  Có 2 phần là địa chỉ đích và địa chỉ nguồn. Nó có thể là 1 IP đơn hoặc 1 dải mạng. Nếu là “any” thì áp dụng cho tất cả địa chỉ trong mạng. Chú ý: nếu là một host thì có dạng: IPaddress32.  Snort cung cấp phương pháp để loại trừ địa chỉ IP bằng cách sử dụng dấu “”. • Port  Số port để áp dụng cho các luật. VD: telnet là 23, DNS là 53 … Port chỉ áp dụng cho 2 giao thức là TCP và UDP  Để sử dụng 1 dãy các port thì ta phân biệt bởi dấu “:”. • Direction  Chỉ ra đâu là nguồn, đâu là đích. Có thể là > hay < hoặc . Trường hợp là khi ta muốn kiểm tra Client và Server. b) Cấu trúc phần Option • Từ khóa ack  Trong header TCP có chứa trường Acknowledgement Number với độ dài 32 bit. Trường này chỉ ra số thứ tự tiếp theo gói tin TCP của bên gửi đang được chờ để nhận. Trường này chỉ có ý nghĩa khi mà cờ ACK được thiết lập. Các công cụ như Nmap sử dụng đặc điểm này để ping một máy. Ví dụ nó có thể gửi gói tin TCP tới cổng 80 với cờ ACK được bật và số thứ tự là 0. Bởi vậy bên nhận thấy gói tin không hợp lệ sẽ gửi lại gói tin RST. Và khi nhận được gói RST này, Nmap sẽ biết được IP này đang tồn tại hay không.  Để kiểm tra loại ping TCP này thì ta có thể dùng luật sau: Alert tcp any any > 192.168.0.022 any (flags: A; ack: 0; msg: “TCP ping detected”) • Từ khóa classtype  Các luật có thể được phân loại và gán cho 1 số chỉ độ ưu tiên nào đó để nhóm và phân biệt chúng với nhau. Để hiểu rõ hơn về classtype thì ta cần hiểu được file classification.config. Mỗi dòng trong file này đều có cấu trúc như sau: Config classification: name, description, priority  Name: tên dùng để phân loại, tên này sẽ được dùng với từ khóa classtype trong các luật Snort  Description: mô tả  Priority: là 1 số chỉ độ ưu tiên mặc định của lớp này. Độ ưu tiên này có thể được điều chỉnh trong từ khóa priority của phần Option trong Snort • Từ khóa content  Một đặc tính quan trọng của Snort là có khả năng tìm 1 mẫu dữ liệu bên trong một gói tin.  Tuy nhiên khi sử dụng từ khóa content cần nhớ rằng: Đối chiếu nội dung cần phải xử lý rất lớn nên ta phải cân nhắc kỹ khi sử dụng nhiều luật đối chiếu nội dung.  Các từ khóa được sử dụng cùng với content để bổ sung thêm các điều kiện là:  Offset: dùng để xác định vị trí bắt đầu tìm kiếm là offset tính từ đầu phần dữ liệu của gói tin.  Dept: dùng để xác định vị trí mà từ đó Snort sẽ dừng việc tìm kiếm. • Từ khóa dsize  Dùng để đối sánh theo chiều dài của phần dữ liệu. Rất nhiều cuộc tấn công sử dụng lỗi tràn bộ đệm bằng cách gửi các gói tin có kích thước rất lớn. • Từ khóa Flags  Từ khóa này dùng để phát hiện xem những bit cờ flag nào được bật trong phần TCP header của gói tin. Mỗi cờ có thể được sử dụng như 1 tham số trong từ khóa flags. • Từ khóa fragbits  Phần IP header của gói tin chứa 3 bit dùng để chống phân mảnh và tổng hợp các gói tin IP. Các bit đó là:  Reversed bit (RB) dùng để dành cho tương lai  Don’t Fragment Bit (DF): nếu bit này được thiết lập tức là gói tin không bị phân mảnh  More Fragments Bit (MF): nếu được thiết lập thì các phần khác của gói tin vẫn đang trên đường đi mà chưa tới đích. Nếu bit này không được thiết lập thì đây là phần cuối cùng của gói tin. 2.3. Các tính năng  Với kiến trúc kiểu module, người dùng có thể tự tăng cường tính năng cho hệ thống Snort của mình.  Snort có thể chạy trên nhiều hệ thống như Windows, Linux, OpenBSD, FreeBSD, Solaris … 3. Tìm hiểu về kiến trúc và tính năng của OSSEC 3.1. Kiến trúc  OSSEC được thiết ké theo mô hình client – server, gồm 2 thành phần chính là OSSEC server và OSSEC agent a) OSSEC SERVER  Đây là phần trung tâm và quan trọng nhất của OSSEC. Server là nơi lưu trữ dữ liệu. Tất cả các luật, bộ giải mã (decoder) cũng được lưu trữ trên server.  Server còn đảm nhận nhiệm vụ quản lý các agent. Các agent kết nối với máy chủ trên cổng 1514 hoặc 514, giao thức UDP. Kết nối với cổng này phải được cho phép để các agent kết nối với manager.  Nhiệm vụ quan trọng nhất của server là phân tích các log nhận được từ các agent hay agentless (gọi chung là client) và xuất ra các cảnh báo. Các cảnh báo này có thể xuất ra cho các các công cụ xử lý log như Logstash, Elastic Search để hiển thị cho người quản trị bằng Kibana, lưu trữ trong cơ sở dữ liệu. b) OSSEC Agent  Agent là một chương trình nhỏ, hoặc tập hợp các chương trình, được cài đặt trên các hệ thống được giám sát.  Agent sẽ thu thập thông tin và gửi cho manager để phân tích và so sánh. Một số thông tin được thu thập trong thời gian thực, những thông tin khác theo định kỳ.  Agent có một bộ nhớ rất nhỏ và sử dụng rất ít CPU, không ảnh hưởng đến việc sử dụng của hệ thống. Server cấu hình cho các agent. Các agent được cài đặt trên các host và chúng gửi lại các log cho server thông qua giao thức thông điệp được mã hóa OSSEC.  Các modul chức năng của agent là: giám sát host, kiểm tra tính toàn vện file trên máy host mà nó được cài, phát hiện rootkit trên máy host, đọc các log và gửi các log cho server.  Agentless là tính năng hỗ trợ cho các thiết bị không cài đặt được agent theo cách bình thường như router, switch, tường lửa. Nó có chức năng như agent. Agentless kết nối để gửi thông điệp, log cho manager bằng các phương thức RPC. 3.2. Quy trình hoạt động  OSSEC hoạt động theo mô hình Client – Server:  Các agent có trách nhiệm theo dõi và thu thập log từ các máy host được cài đặt, mã hóa chúng và gửi cho server theo giao thức UDP, cổng 1514.  Server chịu trách nhiệm nhận log từ agent và phân tích chúng, so sánh với các luật.  Log đã được xử lý sẽ được server chuyển về hệ thống được tích hợp ELK để lưu trữ và hiển thị cảnh báo cho admin theo giao diện web. 3.3. Các luật của OSSEC  Luật (rules) là một phần vô cùng quan trọng trong hệ thống OSSEC, nó chính là cốt lõi trong việc đảm bảo hệ thống OSSEC có được hoạt động theo quy trình, chính xác và hiệu quả hay không. Rules có định dạng XML, được cấu hình trong ossec server varossecetcossec.config và nằm trong thẻ . Rules được lưu trong varossecrules.  OSSEC có 16 cấp độ luật:  Ignored: Không thực hiện hành động nào. Khi gặp luật có cấp độ này thì sẽ không có thông báo. Các luật này được quét trước tất cả các luật khác. Chúng bao gồm các sự kiện không có sự liên quan về bảo mật.  None: Không  System low priority notification (hệ thống thông báo ưu tiên thấp): Thông báo hệ thống hoặc thông báo trạng thái. Không có sự liên quan về bảo mật.  SuccessfulAuthorized events (sự kiện thành côngđược ủy quyền): Bao gồm các lần đăng nhập thành công, tường lửa cho phép sự kiện, v.v.  System low priority error (lỗi ưu tiên hệ thống thấp): Các lỗi liên quan đến cấu hình hoặc thiết bịứng dụng không sử dụng. Chúng không có sự liên quan về bảo mật và thường được gây ra bởi các cài đặt mặc định hoặc kiểm thử phần mềm.  User generated error (lỗi do người dùng tạo): Chúng bao gồm mật khẩu bị bỏ lỡ, hành động bị từ chối, v.v. Chính chúng không có sự liên quan về bảo mật.  Low relevance attack (tấn công mức độ liên quan thấp): Chúng chỉ ra một con sâu hoặc virus không ảnh hưởng đến hệ thống (như mã màu đỏ cho các máy chủ apache, vv). Chúng cũng bao gồm các sự kiện IDS thường xuyên và các lỗi thường xuyên.  “Bad word” matching (kết hợp “Từ xấu”): Chúng bao gồm các từ như bad, error, v.v. Những sự kiện này hầu như không được phân loại và có thể có một số mức độ liên quan về bảo mật.  First time seen (lần đầu tiên nhìn thấy): Bao gồm các sự kiện lần đầu tiên được xem. Lần đầu tiên một sự kiện IDS được kích hoạt hoặc lần đầu tiên người dùng đăng nhập. Nếu người dùng mới bắt đầu sử dụng OSSEC HIDS, những thông báo này có thể sẽ thường xuyên. Sau một thời gian sẽ giảm dần, Nó cũng bao gồm các hành động bảo mật có liên quan (như bắt đầu của một sniffer).  Error from invalid source (lỗi từ nguồn không hợp lệ): Bao gồm các lần đăng nhập dưới dạng người dùng không xác định hoặc từ nguồn không hợp lệ. Có thể có sự liên quan về bảo mật (đặc biệt nếu được lặp lại). Chúng cũng bao gồm các lỗi liên quan đến tài khoản quản trị (root).  Multiple user generated errors (tập hợp lỗi do người dùng tạo): Chúng bao gồm nhiều mật khẩu không hợp lệ, nhiều lần đăng nhập không thành công, v.v. Họ có thể chỉ ra một cuộc tấn công hoặc có thể chỉ là người dùng vừa quên thông tin đăng nhập của mình.  Integrity checking warning (cảnh báo kiểm tra tính toàn vẹn): Chúng bao gồm các thông báo liên quan đến việc sửa đổi các tệp nhị phân hoặc sự hiện diện của rootkit (bằng kiểm tra root). Nếu chỉ cần sửa đổi cấu hình hệ thống, người dùng sẽ được báo về các thông báo syscheck. Nó có thể chỉ ra một cuộc tấn công thành công. Cũng bao gồm các sự kiện IDS sẽ bị bỏ qua (số lần lặp lại cao).  High importancy event (sự kiện quan trọng cao): Chúng bao gồm các thông báo lỗi hoặc cảnh báo từ hệ thống, hạt nhân, v.v. Chúng có thể chỉ ra một cuộc tấn công chống lại một ứng dụng cụ thể.  Unusual error (high importance) Lỗi bất thường (mức độ quan trọng cao): Hầu hết các lần khớp với một kiểu tấn công chung.  High importance security event (sự kiện bảo mật quan trọng cao): Hầu hết thời gian được thực hiện với sự tương quan và nó chỉ ra một cuộc tấn công.  Severe attack (tấn công nghiêm trọng): Cần chú ý ngay lập tức.  Rules trong OSSEC được hỗ trợ quản lý theo nhóm, các bộ luật được xây dựng sẵn trong hệ thống OSSEC thuộc 12 nhóm sau:  invalid_login  authentication_success  authentication_failed  connection_attempt  attacks  adduser  sshd  ids  firewall  squid  apache  syslog  Một vài thuộc tính của 1 rule trong OSSEC:  Level (bắt buộc phải có): thể hiện mức độ của rule, ossec có 16 cấp độ từ 0 15.  Id (bắt buộc phải có): id của rule, mỗi rule sẽ có một id riêng biệt không trùng lặp và là 1 trong các số từ 10099999. (Khi tạo một luật mới nên đặt ip từ khoảng 100.000).  Maxsize: chỉ định kích thước tối đa của sự kiện tiến hành, là 1 trong các số từ 199999.  Frequency: chỉ định số lần rules được kiểm tra trước khi thực hiện. Số lần kích hoạt phải gấp đôi số lần cài đặt. Ví dụ: tần sô = 2 => rule phải được so sánh 4 lần.  Timeframe: khung thời gian tính bằng giây, được sử dụng để kết hợp với frequency.  Ignore: thời gian (s) bỏ qua rule này.  Overwrite: Cho phép chỉnh sửa rule.

1 Tìm hiểu về các hệ thống phát hiện tấn công, xâm nhập IDS/IPS a) Khái niệm  IDS (Intrusion Detection Systems - Hệ thống phát hiện xâm nhập) là thiết bị hoặc phần mềm có nhiệm vụ giám sát traffic mạng, các hành vi đáng ngờ và cảnh báo cho admin hệ thống  Mục đích của IDS là phát hiện và ngăn ngừa các hành động phá hoại bảo mật hệ thống, hoặc những hành động trong tiến trình tấn công như dò tìm, quét các cổng IDS cũng có thể phân biệt giữa những cuộc tấn công nội bộ (từ chính nhân viên hoặc khách hàng trong tổ chức) và tấn công bên ngoài (từ hacker)  Trong một số trường hợp, IDS có thể phản ứng lại với các traffic bất thường/độc hại bằng cách chặn người dùng hoặc địa chỉ IP nguồn truy cập mạng b) Phân loại  IDS có nhiều loại và tiếp cận các traffic đáng ngờ theo nhiều cách khác nhau Có IDS dựa trên mạng (NIDS) và dựa trên máy chủ (HIDS) Có IDS phát hiện dựa trên việc tìm kiếm các chữ ký cụ thể của những mối đe dọa đã biết (tương tự như cách các phần mềm diệt virus phát hiện và ngăn chặn malware) và IDS phát hiện bằng cách so sánh các mẫu traffic với baseline rồi xem có sự bất thường nào không Có những IDS chỉ theo dõi và cảnh báo, có IDS sẽ thực hiện hành động khi phát hiện xâm nhập  NIDS: Network Intrusion Detection Systems được đặt tại một điểm chiến lược hoặc những điểm giám sát traffic đến và đi từ tất cả các thiết bị trên mạng NIDS có thể quét tất cả traffic inbound và outbound, nhưng việc này có thể tạo ra nút thắt cổ chai làm giảm tốc độ chung của mạng  HIDS: Host Intrusion Detection Systems, hệ thống phát hiện xâm nhập này chạy trên máy chủ riêng hoặc một thiết bị đặc biệt trên mạng HIDS chỉ giám sát các gói dữ liệu inbound và outbound từ thiết bị và cảnh báo người dùng hoặc quản trị viên về những hoạt động đáng ngờ được phát hiện  Signature-Based: Là các IDS hoạt động dựa trên chữ ký, giám sát các gói tin trên mạng và so sánh chúng với cơ sở dữ liệu chữ ký, thuộc tính từ những mối đe dọa đã biết, tương tự như cách phần mềm diệt virus hoạt động Vấn đề đối với hệ thống IDS này là có thể không phát hiện ra mối đe dọa mới, khi chữ ký để nhận biết nó chưa được IDS kịp cập nhật  Anomaly-Based: IDS này sẽ phát hiện mối đe dọa dựa trên sự bất thường Anomaly-Based giám sát traffic mạng và so sánh với baseline đã được thiết lập Baseline sẽ xác định đâu là mức bình thường của mạng: loại băng thông thường được dùng, giao thức thường dùng, cổng và thiết bị thường kết nối với nhau, cảnh báo cho quản trị viên mạng hoặc người dùng khi phát hiện traffic truy cập bất thường hoặc những khác biệt đáng kể so với baseline  Passive: IDS thụ động sẽ chỉ phát hiện và cảnh báo Khi phát hiện traffic đáng ngờ hoặc độc hại, Passive sẽ tạo cảnh báo và gửi đến quản trị viên hoặc người dùng  Reactive: Ngoài các nhiệm vụ như IDS Passive, Reactive còn thực hiện những hành động được thiết lập sẵn để ngay lập tức phản ứng lại các mối đe dọa, ví như: chặn truy cập, khóa IP c) Ưu nhược điểm  Ưu điểm:  Cung cấp một cách nhìn toàn diện về toàn bộ lưu lượng mạng  Giúp kiểm tra các sự cố xảy ra với hệ thống mạng  Sử dụng để thu thập bằng chứng cho điều tra và ứng cứu sự cố  Nhược điểm:  Có thể gây ra tình trạng báo động nhầm nếu cấu hình không hợp lý  Khả năng phân tích lưu lượng bị mã hóa tương đối thấp  Chi phí triển khai và vận hành hệ thống tương đối lớn d) Các kỹ thuật phát hiện xâm nhập  Phát hiện dựa trên chữ ký:  Là hình thức lâu đời nhất của phát hiện xâm nhập  Có hai cơ chế phát hiện dựa trên chữ ký phổ biến là Snort và Suricata  Phát hiện dựa trên danh tiếng:  Là một tập con của phát hiện dựa trên chữ ký  Phát hiện thông tin liên lạc giữa các máy tính được bảo vệ trong mạng và các máy tính trên Internet có thể bị nhiễm độc do đã từng tham gia vào các hành động độc hại trước đó  Kết quả phát hiện dựa trên các chữ ký đơn giản như địa chỉ IP hoặc tên miền  Phát hiện dựa trên bất thường:  Là một hình thức mới của phát hiện xâm nhập  Dựa vào quan sát sự cố mạng và nhận biết lưu lượng bất thường thông qua các chuẩn đoán và thống kê  Có khả năng nhận ra các mẫu tấn công khác biệt với hành vi mạng thông thường  Đây là cơ chế phát hiện rất tốt nhưng khó thực hiện  Phát hiện dựa trên Honeypot:  Là tập con mới được phát triển của phát hiện dựa trên bất thường  Honeypot đã được sử dụng trong nhiều năm để thu thập phần mềm độc hại và các mẫu tấn công cho mục đích nghiên cứu  Honeypot có thể được ứng dụng tốt trong phát hiện xâm nhập bằng cách cấu hình hệ thống 2 Tìm hiểu về kiến trúc và tính năng của Snort 2.1 Kiến trúc  Snort bao gồm nhiều thành phần, mỗi phần có một chức năng riêng biệt:  Module giải mã gói tin  Module tiền xử lý  Module phát hiện  Module log và cảnh báo  Module kết xuất thông tin  Kiến trúc của Snort được thể hiện qua mô hình sau:  Khi Snort hoạt động, nó sẽ lắng nghe tất cả các gói tin nào di chuyển qua nó Các gói tin sau khi bị bắt sẽ được đưa vào module giải mã Tiếp theo sẽ vào module tiền xử lý và rồi module phát hiện Tại đây tùy vào việc có phát hiện được xâm nhập hay không mà gói tin có thể bỏ qua để lưu thông tin tiếp hoặc đưa vào module Log và cảnh báo để xử lý Khi các cảnh báo được xác định, Module kết xuất thông tin sẽ thực hiện việc đưa ra cảnh báo theo đúng định dạng mong muốn a) Module giải mã gói tin  Snort chỉ sử dụng thư viện pcap để bắt mọi gói tin trên mạng lưu thông qua hệ thống Một gói tin sau khi được giải mã sẽ đưa tiếp vào module tiền xử lý b) Module tiền xử lý  Module tiền xử lý rất quan trọng đối với bất kỳ hệ thống nào để có thể chuẩn bị gói dữ liệu đưa vào cho Module phát hiện phân tích 3 nhiệm vụ chính:  Kết hợp lại các gói tin: Khi một dữ liệu lớn được gửi đi, thông tin sẽ không đóng gói toàn bộ vào một gói tin mà thực hiện phân mảnh, chia thành nhiều gói tin rồi mới gửi đi Khi Snort nhận được các gói tin này, nó phải thực hiện kết nối lại để có gói tin ban đầu Module tiền xử lý giúp Snort có thể hiểu được các phiên làm việc khác nhau  Giải mã và chuẩn hóa giao thức (decode/normalize): công việc phát hiện xâm nhập dựa trên dấu hiệu nhận dạng nhiều khi thất bại khi kiểm tra các giao thức có dữ liệu có thể được biểu diễn dưới nhiều dạng khác nhau Ví dụ: một Web server có thể nhận nhiều dạng URL: URL viết dưới dạng hexa/unicode hay URL chấp nhận dấu / hay \ Nếu Snort chỉ thực hiện đơn thuần việc so sánh dữ liệu với dấu hiệu nhận dạng sẽ xảy ra tình trạng bỏ sót hành vi xâm nhập Do vậy, 1 số Module tiền xử lý của Snort phải có nhiệm vụ giải mã và chỉnh sửa, sắp xếp lại các thông tin đầu vào  Phát hiện các xâm nhập bất thường (nonrule/anormal): các plugin dạng này thường để xử lý với các xâm nhập không thể hoặc rất khó phát hiện bằng các luật thông thường Phiển bản hiện tại của Snort có đi kèm 2 plugin giúp phát hiện xâm nhập bất thường đó là portscan và bo (backoffice) Portscan dùng để đưa ra cảnh báo khi kẻ tấn công thực hiện quét cổng để tìm lỗ hổng Bo dùng để đưa ra cảnh báo khi hệ thống nhiễm trojan backoffice c) Module phát hiện  Đây là module quan trọng nhất của Snort Nó chịu trách nhiệm phát hiện các dấu hiệu xâm nhập Module phát hiện sử dụng các luật được định nghĩa trước để so sánh với dữ liệu thu thập được, từ đó xác định xem có xâm nhập xảy ra hay không  Một vấn đề quan trọng đối với module phát hiện và vấn đề thời gian xử lý gói tin: một IDS thường nhận rất nhiều gói tin và bản thân nó cũng có rất nhiều luật xử lý Khi lưu lượng mạng quá lớn có thể xảy ra việc bỏ sót hoặc không phản hồi đúng lúc Khả năng xử lý của module phát hiện phụ thuộc vào nhiều yếu tố: số lượng các luật, tốc độ hệ thống, băng thông mạng  Một module phát hiện có khả năng tách các phần của gói tin ra và áp dụng luật lên từng phần của gói tin:  IP header  Header ở tầng transport: TCP, UDP  Header ở tầng application: DNS, HTTP, FTP …  Phần tải của gói tin  Do các luật trong Snort được đánh số thứ tự ưu tiên nên 1 gói tin khi bị phát hiện bởi nhiều luật khác nhau, cảnh báo được đưa ra theo luật có mức ưu tiên cao nhất d) Module log và cảnh báo  Tùy thuộc vào module phát hiện có nhận dạng được xâm nhập hay không mà gói tin có thể bị ghi log hay đưa ra cảnh báo Các file log là các file dữ liệu có thể ghi dưới nhiều định dạng khác nhau như tcpdump e) Module kết xuất thông tin  Module này thực hiện các thao tác khác nhau tùy thuộc vào việc cấu hình lưu kết quả xuất ra như thế nào  Ghi log file  Ghi syslog  Ghi cảnh báo vào cơ sở dữ liệu  Tạo file log XML  Cấu hình lại Router, firewall  Gửi các cảnh báo được gói trong gói tin sử dụng giao thức SNMP 2.2.Bộ luật của Snort  Cấu trúc luật của Snort gồm hai phần:  Phần Header: chứa thông tin về hành động mà luật đó sẽ thực hiện khi phát hiện ra có xâm nhập nằm trong gói tin và nó cũng chứa tiểu chuẩn để áp dụng luật với gói tin đó  Phần Option: chứa thông điệp cảnh báo và các thông tin về các phần của gói tin dùng để tạo nên cảnh báo Phần Option chứa các tiêu chuẩn phụ thêm để đối sánh với gói tin a) Cấu trúc phần Header  Action  Có 5 luật được định nghĩa:  Pass: cho phép Snort bỏ qua gói tin này  Log: dùng để log gói tin Có thể log vào file hay vào CSDL  Alert: gửi thông điệp cảnh báo khi dấu hiệu xâm nhập được phát hiện  Activate: tạo ra cảnh báo và kích hoạt thêm các luật khác để kiểm tra thêm điều kiện của gói tin  Dynamic: đây là luật được gọi bởi các luật khác có hành động là Activate  Protocol  Chỉ ra loại gói tin mà luật được áp dụng:  IP  ICMP  TCP  UDP  Nếu là IP thì Snort sẽ kiểm tra header của lớp liên kết để xác định loại gói tin Nếu bất kỳ giao thức nào khác, Snort sẽ sử dụng header IP để xác định loại giao thức  Address  Có 2 phần là địa chỉ đích và địa chỉ nguồn Nó có thể là 1 IP đơn hoặc 1 dải mạng Nếu là “any” thì áp dụng cho tất cả địa chỉ trong mạng Chú ý: nếu là một host thì có dạng: IP-address/32  Snort cung cấp phương pháp để loại trừ địa chỉ IP bằng cách sử dụng dấu “!”  Port  Số port để áp dụng cho các luật VD: telnet là 23, DNS là 53 … Port chỉ áp dụng cho 2 giao thức là TCP và UDP  Để sử dụng 1 dãy các port thì ta phân biệt bởi dấu “:”  Direction  Chỉ ra đâu là nguồn, đâu là đích Có thể là -> hay 192.168.0.0/22 any (flags: A; ack: 0; msg: “TCP ping detected”)  Từ khóa classtype  Các luật có thể được phân loại và gán cho 1 số chỉ độ ưu tiên nào đó để nhóm và phân biệt chúng với nhau Để hiểu rõ hơn về classtype thì ta cần hiểu được file classification.config Mỗi dòng trong file này đều có cấu trúc như sau: Config classification: name, description, priority  Name: tên dùng để phân loại, tên này sẽ được dùng với từ khóa classtype trong các luật Snort  Description: mô tả  Priority: là 1 số chỉ độ ưu tiên mặc định của lớp này Độ ưu tiên này có thể được điều chỉnh trong từ khóa priority của phần Option trong Snort  Từ khóa content  Một đặc tính quan trọng của Snort là có khả năng tìm 1 mẫu dữ liệu bên trong một gói tin  Tuy nhiên khi sử dụng từ khóa content cần nhớ rằng: Đối chiếu nội dung cần phải xử lý rất lớn nên ta phải cân nhắc kỹ khi sử dụng nhiều luật đối chiếu nội dung  Các từ khóa được sử dụng cùng với content để bổ sung thêm các điều kiện là:  Offset: dùng để xác định vị trí bắt đầu tìm kiếm là offset tính từ đầu phần dữ liệu của gói tin  Dept: dùng để xác định vị trí mà từ đó Snort sẽ dừng việc tìm kiếm  Từ khóa dsize  Dùng để đối sánh theo chiều dài của phần dữ liệu Rất nhiều cuộc tấn công sử dụng lỗi tràn bộ đệm bằng cách gửi các gói tin có kích thước rất lớn  Từ khóa Flags  Từ khóa này dùng để phát hiện xem những bit cờ flag nào được bật trong phần TCP header của gói tin Mỗi cờ có thể được sử dụng như 1 tham số trong từ khóa flags  Từ khóa fragbits  Phần IP header của gói tin chứa 3 bit dùng để chống phân mảnh và tổng hợp các gói tin IP Các bit đó là:  Reversed bit (RB) dùng để dành cho tương lai  Don’t Fragment Bit (DF): nếu bit này được thiết lập tức là gói tin không bị phân mảnh  More Fragments Bit (MF): nếu được thiết lập thì các phần khác của gói tin vẫn đang trên đường đi mà chưa tới đích Nếu bit này không được thiết lập thì đây là phần cuối cùng của gói tin 2.3 Các tính năng  Với kiến trúc kiểu module, người dùng có thể tự tăng cường tính năng cho hệ thống Snort của mình  Snort có thể chạy trên nhiều hệ thống như Windows, Linux, OpenBSD, FreeBSD, Solaris … 3 Tìm hiểu về kiến trúc và tính năng của OSSEC 3.1 Kiến trúc  OSSEC được thiết ké theo mô hình client – server, gồm 2 thành phần chính là OSSEC server và OSSEC agent a) OSSEC SERVER  Đây là phần trung tâm và quan trọng nhất của OSSEC Server là nơi lưu trữ dữ liệu Tất cả các luật, bộ giải mã (decoder) cũng được lưu trữ trên server  Server còn đảm nhận nhiệm vụ quản lý các agent Các agent kết nối với máy chủ trên cổng 1514 hoặc 514, giao thức UDP Kết nối với cổng này phải được cho phép để các agent kết nối với manager  Nhiệm vụ quan trọng nhất của server là phân tích các log nhận được từ các agent hay agentless (gọi chung là client) và xuất ra các cảnh báo Các cảnh báo này có thể xuất ra cho các các công cụ xử lý log như Logstash, Elastic Search để hiển thị cho người quản trị bằng Kibana, lưu trữ trong cơ sở dữ liệu b) OSSEC Agent  Agent là một chương trình nhỏ, hoặc tập hợp các chương trình, được cài đặt trên các hệ thống được giám sát  Agent sẽ thu thập thông tin và gửi cho manager để phân tích và so sánh Một số thông tin được thu thập trong thời gian thực, những thông tin khác theo định kỳ  Agent có một bộ nhớ rất nhỏ và sử dụng rất ít CPU, không ảnh hưởng đến việc sử dụng của hệ thống Server cấu hình cho các agent Các agent được cài đặt trên các host và chúng gửi lại các log cho server thông qua giao thức thông điệp được mã hóa OSSEC  Các modul chức năng của agent là: giám sát host, kiểm tra tính toàn vện file trên máy host mà nó được cài, phát hiện rootkit trên máy host, đọc các log và gửi các log cho server  Agentless là tính năng hỗ trợ cho các thiết bị không cài đặt được agent theo cách bình thường như router, switch, tường lửa Nó có chức năng như agent Agentless kết nối để gửi thông điệp, log cho manager bằng các phương thức RPC 3.2 Quy trình hoạt động  OSSEC hoạt động theo mô hình Client – Server:  Các agent có trách nhiệm theo dõi và thu thập log từ các máy host được cài đặt, mã hóa chúng và gửi cho server theo giao thức UDP, cổng 1514  Server chịu trách nhiệm nhận log từ agent và phân tích chúng, so sánh với các luật  Log đã được xử lý sẽ được server chuyển về hệ thống được tích hợp ELK để lưu trữ và hiển thị cảnh báo cho admin theo giao diện web 3.3 Các luật của OSSEC  Luật (rules) là một phần vô cùng quan trọng trong hệ thống OSSEC, nó chính là cốt lõi trong việc đảm bảo hệ thống OSSEC có được hoạt động theo quy trình, chính xác và hiệu quả hay không Rules có định dạng XML, được cấu hình trong ossec server /var/ossec/etc/ossec.config và nằm trong thẻ Rules được lưu trong /var/ossec/rules  OSSEC có 16 cấp độ luật:  Ignored: Không thực hiện hành động nào Khi gặp luật có cấp độ này thì sẽ không có thông báo Các luật này được quét trước tất cả các luật khác Chúng bao gồm các sự kiện không có sự liên quan về bảo mật  None: Không  System low priority notification (hệ thống thông báo ưu tiên thấp): Thông báo hệ thống hoặc thông báo trạng thái Không có sự liên quan về bảo mật  Successful/Authorized events (sự kiện thành công/được ủy quyền): Bao gồm các lần đăng nhập thành công, tường lửa cho phép sự kiện, v.v  System low priority error (lỗi ưu tiên hệ thống thấp): Các lỗi liên quan đến cấu hình hoặc thiết bị/ứng dụng không sử dụng Chúng không có sự liên quan về bảo mật và thường được gây ra bởi các cài đặt mặc định hoặc kiểm thử phần mềm  User generated error (lỗi do người dùng tạo): Chúng bao gồm mật khẩu bị bỏ lỡ, hành động bị từ chối, v.v Chính chúng không có sự liên quan về bảo mật  Low relevance attack (tấn công mức độ liên quan thấp): Chúng chỉ ra một con sâu hoặc virus không ảnh hưởng đến hệ thống (như mã màu đỏ cho các máy chủ apache, vv) Chúng cũng bao gồm các sự kiện IDS thường xuyên và các lỗi thường xuyên  “Bad word” matching (kết hợp “Từ xấu”): Chúng bao gồm các từ như "bad", "error", v.v Những sự kiện này hầu như không được phân loại và có thể có một số mức độ liên quan về bảo mật  First time seen (lần đầu tiên nhìn thấy): Bao gồm các sự kiện lần đầu tiên được xem Lần đầu tiên một sự kiện IDS được kích hoạt hoặc lần đầu tiên người dùng đăng nhập Nếu người dùng mới bắt đầu sử dụng OSSEC HIDS, những thông báo này có thể sẽ thường xuyên Sau một thời gian sẽ giảm dần, Nó cũng bao gồm các hành động bảo mật có liên quan (như bắt đầu của một sniffer)  Error from invalid source (lỗi từ nguồn không hợp lệ): Bao gồm các lần đăng nhập dưới dạng người dùng không xác định hoặc từ nguồn không hợp lệ Có thể có sự liên quan về bảo mật (đặc biệt nếu được lặp lại) Chúng cũng bao gồm các lỗi liên quan đến tài khoản "quản trị" (root)  Multiple user generated errors (tập hợp lỗi do người dùng tạo): Chúng bao gồm nhiều mật khẩu không hợp lệ, nhiều lần đăng nhập không thành công, v.v Họ có thể chỉ ra một cuộc tấn công hoặc có thể chỉ là người dùng vừa quên thông tin đăng nhập của mình  Integrity checking warning (cảnh báo kiểm tra tính toàn vẹn): Chúng bao gồm các thông báo liên quan đến việc sửa đổi các tệp nhị phân hoặc sự hiện diện của rootkit (bằng kiểm tra root) Nếu chỉ cần sửa đổi cấu hình hệ thống, người dùng sẽ được báo về các thông báo "syscheck" Nó có thể chỉ ra một cuộc tấn công thành công Cũng bao gồm các sự kiện IDS sẽ bị bỏ qua (số lần lặp lại cao)  High importancy event (sự kiện quan trọng cao): Chúng bao gồm các thông báo lỗi hoặc cảnh báo từ hệ thống, hạt nhân, v.v Chúng có thể chỉ ra một cuộc tấn công chống lại một ứng dụng cụ thể  Unusual error (high importance) - Lỗi bất thường (mức độ quan trọng cao): Hầu hết các lần khớp với một kiểu tấn công chung  High importance security event (sự kiện bảo mật quan trọng cao): Hầu hết thời gian được thực hiện với sự tương quan và nó chỉ ra một cuộc tấn công  Severe attack (tấn công nghiêm trọng): Cần chú ý ngay lập tức  Rules trong OSSEC được hỗ trợ quản lý theo nhóm, các bộ luật được xây dựng sẵn trong hệ thống OSSEC thuộc 12 nhóm sau:  invalid_login  authentication_success  authentication_failed  connection_attempt  attacks  adduser  sshd  ids  firewall  squid  apache  syslog  Một vài thuộc tính của 1 rule trong OSSEC:  Level (bắt buộc phải có): thể hiện mức độ của rule, ossec có 16 cấp độ từ 0- 15  Id (bắt buộc phải có): id của rule, mỗi rule sẽ có một id riêng biệt không trùng lặp và là 1 trong các số từ 100-99999 (Khi tạo một luật mới nên đặt ip từ khoảng 100.000)  Maxsize: chỉ định kích thước tối đa của sự kiện tiến hành, là 1 trong các số từ 1- 99999  Frequency: chỉ định số lần rules được kiểm tra trước khi thực hiện Số lần kích hoạt phải gấp đôi số lần cài đặt Ví dụ: tần sô = 2 => rule phải được so sánh 4 lần  Timeframe: khung thời gian tính bằng giây, được sử dụng để kết hợp với frequency  Ignore: thời gian (s) bỏ qua rule này  Overwrite: Cho phép chỉnh sửa rule II Thực hành Chuẩn bị máy Kali Linux và máy Ubuntu cài Snort có địa chỉ IP và kết nối mạng LAN Tạo 3 luật vào cho 3 dạng tấn công : - Phát hiện các gói tin ping từ bất kỳ một máy nào gửi đến máy chạy Snort Hiển thị thông điệp khi phát hiện: “-Snort phát hiện có các gói Ping gửi đến.” - Phát hiện các gói tin rà quét từ bất kỳ một máy nào gửi đến máy chạy Snort trên cổng 80 Hiển thị thông điệp khi phát hiện: “-Snort phát hiện có các gói tin rà quét trên cổng 80.” - Phát hiện tấn công TCP SYN Flood từ bất kỳ một máy nào gửi đến máy chạy Snort Hiển thị thông điệp khi phát hiện: “-Snort phát hiện đang bị tấn công TCP SYN Flood.” a) Phát hiện khi có máy ping đến Máy Kali ping đến máy Ubuntu (IP: 192.168.72.131) Snort quét được và đưa ra cảnh báo có gói tin gửi đến b) Phát hiện rà quét cổng 80 Sử dụng công cụ Nmap rà quét cổng 80 của máy Ubuntu Phát hiện thấy có các gói tin đang rà quét đến cổng 80 c) Phát hiện tấn công TCP SYN Flood Snort quét và phát hiện tấn công

Ngày đăng: 17/03/2024, 01:39

Tài liệu cùng người dùng

Tài liệu liên quan