Giả lập mạng với honeypot

Chương I: Tổng quan Trong những năm gần đây, các cuộc xâm nhập mạng gia tăng đáng kể, do sự phổ dụng của các công cụ tấn công được tự động hoặc được lập kịch bản. Điều này đã thúc đẩy sự quan tâm đến các hệ thống Honeypots, hệ thống này có thể được dùng để “bẫy” và giải mã các phương pháp tấn công. Các chuyên gia bảo mật cho biết: các kẻ tấn công hiện đều đang rất ngán ngẩm khi phải tấn công vào một hệ thống Linux dạng trung bình. Chi phí cho một cuộc đột nhập thành công vào một hệ thống sử dụng Linux cao hơn nhiều so với chi phí bỏ ra để đột nhập vào hệ thống sử dụng Windows. Dự án mang tên Honeypots được tạo ra với mục đích giả lập các hệ thống mạng Linux bình thường để câu nhử các cuộc tấn công nhằm nghiên cứu độ an toàn của các hệ thống máy chủ Linux. Các kết quả nghiên cứu do Honeypots đưa ra cho biết: khoảng thời gian tồn tại an toàn của các hệ thống máy chủ chạy Linux đã gia tăng đột ngột trong 2 năm gần đây. Honeypots đã chỉ ra rằng: Trong giai đoạn hiện nay, một hệ thống máy chủ Linux chưa được cài đầy đủ các bản sửa lỗi vẫn có thể “chịu đựng” an toàn trung bình là 3 tháng trước các cuộc tấn công, khi so sánh với giai đoạn 2001-2002 chỉ là 72 giờ. Một số hệ thống máy chủ của dự án đã an toàn trong suốt 9 tháng trời trước mọi cuộc tấn công. Dự án Honeypots được thiết kế để nhằm mục đích nghiên cứu, dò tìm và thu hút mọi cuộc tấn công bất kỳ của Internet vào các hệ thống máy chủ Linux, Windows. Từ xưa đến nay mọi cuộc tấn công trên Internet dường như chưa bao giờ giảm. Các nhà nghiên cứu của dự án đã chỉ ra rằng: hầu hết mọi cuộc tấn công trên đời đều nhằm vào các hệ thống sử dụng Windows, đơn giản chỉ vì mức độ phổ biến quá mức của hệ điều hành này và độ bảo mật “ngon ăn” đến mức mà mọi kẻ tấn công đều không thể cưỡng lại được. Lance Spitzner, chủ tịch của dự án Honeynet, cho biết: “Tấn công vào một người dùng bất kỳ tỏ ra dễ dàng hơn nhiều so với tấn công vào một hệ thống máy tính của ngân hàng. Ngân hàng được bảo vệ rất tốt nhưng người dùng thì không. Chừng nào không còn đủ người dùng để tấn công thì hãy tấn công ngân hàng”. Dự án này không đưa ra các nghiên cứu so sánh với Windows, nhưng Spitzner đã chỉ ra rằng các cơ quan chuyên về bảo mật như Symantec hoặc Internet Storm Center (ISC) đã công nhận rằng có rất nhiều cuộc tấn công vào các hệ thống Honeynet Windows. Một dự án khác của ISC đã đo lường thời gian tồn tại của các hệ thống Windows trước các cuộc tấn công và cho ra nhiều kết quả khá thú vị như sau: Thời gian tồn tại trung bình trước các cuộc tấn công của một số hệ thống chạy Windows trong các thử nghiệm của ISC đã giảm nhanh từ 55 phút trong giai đoạn mùa thu 2003 xuống chỉ còn 20 phút vào dịp cuối năm 2004. Thảm hại nhất là vào giai đoạn mùa xuân 2004, một hệ thống Windows chỉ “kịp sống” có 15 phút trước khi bị hạ gục. Microsoft vớt vát rằng thời gian tồn tại ngắn như thế - ở ngay cả trong Windows XP Service Pack 2 - là do có quá nhiều người sử dụng. Dự án Honeynet đã cân nhắc kỹ trước khi phân bố các hệ thống khắp mọi nơi trên thế giới để thu hút các cuộc tấn công. Các máy tính chuyên câu nhử của Honeynet được phân bố đều trong các mạng gia đình đến các doanh nghiệp vừa và nhỏ. Dự án đã triển khai 12 trạm honeynet ở 8 quốc gia là Mỹ, Ấn Độ, Anh, Pakistan, Hy Lạp, Bồ Đào Nha, Brazil và Đức. Bao gồm 24 hệ thống Unix và giả lập Unix, 19 hệ thống Linux hầu hết là Red Hat bao gồm: 1 hệ thống Red Hat 7.2, 5 hệ thống Red Hat 7.3, 1 Red Hat 8.0, 8 Red Hat 9.0 và 1 hệ thống Fedora Core. Các hệ thống khác nữa bao gồm: 1 chạy Suse 7.2, 1 Suse 6.3, 2 Solaris Sparc 8, 2 Solaris Sparc 9 và 1 hệ thống chạy Free- BSD 4.4. Dự án Honeynet là một cuộc nghiên cứu phi lợi nhuận do các công ty bảo mật thành lập nên, bao gồm các công ty tầm cỡ như: Foundstone, Counterpane, Security Focus và SourceFire.

pdf73 trang | Chia sẻ: lvcdongnoi | Lượt xem: 4148 | Lượt tải: 6download
Bạn đang xem trước 20 trang tài liệu Giả lập mạng với honeypot, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
tức được các nhà phát triển cảnh báo và cập nhật Snort Rules một cách nhanh chóng và các doanh nghiệp có thể thay đổi mã nguồn cho phù hợp với yêu cầu của mình. Vì vậy SNORT là phần mềm IDS mạnh mẽ và được yêu thích nhất hiện nay trên thế giới trong vấn đề phát hiện xâm nhập. ___________________________________________________________________________ Honeypots 34 Snort có 4 chế độ hoạt dộng khác nhau đó là: Sniffer mode: đọc các gói tin trên mạng sau đó sẽ trình bày kết quả trên giao diện hiển thị, ở chế độ này snort sẽ lắng nghe. Packet Logger mode : lưu trữ các gói tin trong các tập tin log. Network instruction detect system (NIDS) : đây là chế độ họat động mạnh mẽ và được áp dụng nhiều nhất, khi họat động ở NIDS mode Snort sẽ phân tích các gói tin luân chuyển trên mạng và so sánh với các thông tin được định nghĩa của người dùng để từ đó có những hành động tương ứng như thông báo cho quản trị mạng khi xảy ra tình huống quét lỗi do các hacker/attacker tiến hành hay cảnh báo virus.. Inline mode: khi triển khai snort trên linux thì có thể cấu hình snort để phân tích các gói tin từ iptables (trong iptables chia ra thành các bảng (tables); trong mỗi bảng sẽ chia ra thành nhiều chuỗi (chains) để xử lý packet tùy theo tình huống (hướng đi của packets); trong mỗi chain sẽ có các luật (rules) mà mình sẽ cấu hình để xử lý các packets tương ứng với mỗi chain) thay vì libpcap do đó iptable có thể drop hoặc pass các gói tin theo snort rule. IV.2 Cài đặt Snort trên Windowns IV.2.1. Cài đặt Snort Có thể đặt Snort trước hoặc sau một hệ thống firewall tùy yêu cầu bảo mật của tổ chức. Và nếu hệ thống mạng có nhiều phân đọan mạng thì mỗi subnet (lớp mạng con) phải có một máy chủ Snort được cài đặt, không như các sản phẩm thương mại khác ngoài tính năng chi phí bản quyền cao thì thường đòi hỏi cấu hình phần cứng mạng, với Snort thì có thể cài đặt và cấu hình trên x386 computer, tuy nhiên cần có đĩa cứng có đủ không gian trống để lưu trữ các packet được bắt giữ, và với công nghệ lưu trữ hiện nay thì điều nầy không phải là một vấn đề. Snort hoạt động như một network sniffer lắng nghe và lưu giữ các packet trên mạng sau đó so sánh các nội dung hoặc header của chúng với một tập các qui tắc đã được định nghĩa gọi là các Snort rule và khi một sự trùng khớp giữa rule và các packet thì những hành động của rule sẽ được tiến hành tùy theo định nghĩa. Một điểm thuận lợi là các rule này luôn được cập nhật nhanh chóng bởi cộng đồng phát triển cho nên khả năng đáp ứng của Snort trước các dạng tấn công hiện đại rất cao. ___________________________________________________________________________ Honeypots 35 Snort sử dụng ba thành phần sau để tiến hành công việc của mình: Packet decoder : phân tích gói tin, kể cả IP Header và Data Payload Detect engineer : dò tìm các dấu hiệu khả nghi theo tập hợp các quy tắc. Logging và alert system : lưu giữ và cảnh báo. Ba thành phần này dùng libcap để lưu giữ gói tin khi cài Snort trên hệ điều hành linux. Còn nếu cài trên hệ thống windows thì phải thay libcap bằng winpcap. Tải winpcap từ www.iltiloi.com và Snort www.snort.org và chọn bản cài trên Windows. Sau đó click vào tập tin chương trình Snort_Installer.exe để bắt đầu tiến trình cài đặt. Trên màn hình Installation Options có các cơ chế lưu trữ log file theo cơ sở dữ liệu SQL hay Oracle, trong phần này chỉ lưu trữ log nên sẽ chọn tùy chọn đầu tiên là “I do not plan to log to a database, or I am planing to log to one of the databse listed above” Hình 4.4: Cài đặt Snort ___________________________________________________________________________ Honeypots 36 Sau khi đã cài đặt Snort tiếp theo cần phải thiết lập các tham số quan trọng như HOME_NET và PATH_RULE để sử dụng Snort và thực hiện các công việc tiếp theo. Đây là bước mà thường làm cho quá trình cài đặt và sử dụng Snort bị lỗi do khai báo sai. File C:\Snort\etc\snort.conf là file chứa nhiều cài đặt và một phiên bản mới có thể thay đổi dễ gây ra nhầm lẫn. File snort.conf điều khiển mọi thứ về việc Snort sẽ giám sát cái gì, chúng tự bảo vệ như thế nào, các luật gì chúng sử dụng để tìm thấy lưu lượng nguy hiểm, và thậm chí là cách chúng giám sát các lưu lượng nguy hiểm tiềm tàng mà không được định nghĩa bằng các dấu hiệu như thế nào. File này được tổ chức thành nhiều phần và chứa nhiều các lời chú thích và hướng dẫn để sử dụng một vài tùy chọn có thể đối với các mục cấu hình khác nhau): ·Các biến cấu hình. ·Cấu hình bộ giải mã và bộ phận phát hiện của Snort. ·Cấu hình tiền xử lí. ·Cấu hình xuất thông tin. ·Các file kèm theo. Các biến cấu hình Phần đầu của file dành cho việc ghi lại một vài thông tin cấu hình. Hầu hết các biến được sử dụng bởi các luật Snort để xác định chức năng của một vài hiển thị và vị trí của các phần khác. Các biến vạch ra cách bố trí môi trường mà Snort có thể quyết định sự kiện nào sẽ tạo ra cảnh báo. Các biến tìm kiếm cả địa chỉ IP và cổng TCP mà một dịch vụ đang lắng nghe. Theo mặc định, các biến được khai báo với giá trị bất kì. Nó đúng với bất kì địa chỉ IP nào. Khi giá trị này được sử dụng, nó có thể tạo ra một số lượng lớn các cảnh báo nhầm. Để xác định một địa chỉ đơn, chỉ cần đánh vào địa chỉ IP đó: var HOME_NET 10.0.0.100 Cũng có thể xác định nhiều địa chỉ, các nhóm địa chỉ nằm trong dấu ngoặc vuông và các địa chỉ cách nhau bởi dấu phẩy (không có khoảng trắng): var HOME_NET [10.10.0.52,192.168.1.23,172.16.30.52] Cũng có thể xác định một không gian địa chỉ bằng cách xác định số các bit trong subnet mask. ___________________________________________________________________________ Honeypots 37 var HOME_NET 10.0.0.0/24 Có thể kết hợp các kiểu ghi địa chỉ như sau : var HOME_NET [192.168.33.12,172.16.0.0/16,10.0.0.51,10.0.0.0/24] Có thể sử dụng kí tự “!” để phủ định. Lưu ý rằng khi thiết lập các biến thì chỉ sử dụng tên biến. Khi thật sự sử dụng biến thì phải đặt kí tự “$” trước tên biến. Ví dụ sau đây sẽ thiết lập biến EXTERNAL_NET là tất cả các địa chỉ không nằm trong biến HOME_NET: var EXTERNAL_NET !$HOME_NET Một vài biến cần gán cho số cổng, không phải là địa chỉ IP. Gán 1 cổng đơn, 1 dãy các cổng liên tục hoặc là phủ định của 1 cổng. Ví dụ: var ORACLE_PORTS 1521 var ORACLE_PORTS 8000:8080 (các cổng từ 8000 đến 8080) var ORACLE_PORTS :8080 (các cổng lớn hơn 8080) var SHELLCODE_PORTS !80 (không phải cổng 80) Các biến mặc định trong file snort.conf là: HOME_NET - sử dụng để xác định địa chỉ IP của hệ thống đang bảo vệ. EXTERNAL_NET - nên sử dụng kí tự “!” để xác định mọi thứ không nằm trong mạng bên trong !$EXTERNAL. Các biến được sử dụng để định nghĩa các Server chạy các dịch vụ mà có các luật xác định là : DNS_SERVERS SMTP_SERVERS HTTP_SERVERS SQL_SERVERS TELNET_SERVERS SNMP_SERVERS HTTP_PORTS Cổng 80 là cổng mặc định của HTTP. SHELLCODE_PORTS Thường được đặt là các cổng không phải là 80 ___________________________________________________________________________ Honeypots 38 ORACLE_PORTS Xác định cổng mà Orale lắng nghe. Mặc định, Oracle lắng nghe ở cổng 1521. AIM_SERVERS Biến này được sử dụng bởi các luật để giám sát lưu lượng peer-to-peer và instant messenger. Nó được cấu hình với các danh sách địa chỉ server AOL Instant Messenger. Danh sách này thay đổi theo thời gian. RULE_PATH Biến này cần được thiết lập đúng, nếu không, Snort sẽ không hoạt động. Nó chỉ đến vị trí các luật trong file hệ thống. Nếu các luật được đặt trong C:\Snort\rules thì phải thiết lập biến như sau : var RULE_PATH C:/Snort/rules IV.2.2 Cấu hình bộ giải mã và bộ phận phát hiện của Snort Bộ giải mã Snort giám sát cấu trúc gói tin để đảm bảo chúng được xây dựng theo qui định. Nếu một gói tin có kích thước lạ, một tập hợp tùy chọn lạ, hoặc là các thiết lập không phổ biến, Snort sẽ tạo ra một cảnh báo. Nếu không quan tâm đến các cảnh báo này hoặc là số lượng các cảnh báo nhầm quá lớn thì có thể tắt việc tạo ra cảnh báo của bộ giải mã. Theo mặc định, tất cả các cảnh báo đều được bật. Để tắt một kiểu cảnh báo cụ thể, xóa kí tự “#” ở đầu dòng. Các tùy chọn cấu hình bộ giải mã: # config disable_decode_alerts # config disable_tcpopt_experimental_alerts # config disable_tcpopt_obsolete_alerts # config disable_tcpopt_ttcp_alerts # config disable_tcpopt_alerts # config disable_ipopt_alerts config order: [pass, alert, log, activation, or dynamic] Thay đổi thứ tự các luật được đánh giá. config alertfile: alerts Thiết lập file cảnh báo output. config decode_arp Bật giải mã arp (snort -a). ___________________________________________________________________________ Honeypots 39 config dump_chars_only Bật dump kí tự (snort -C). config dump_payload Dump thông tin lớp ứng dụng (snort -d). config decode_data_link Giải mã header lớp 2 (snort -e). config set_gid: 30 Thay đổi GID (snort -g). config interface: Thiết lập giao diện mạng (snort -i). config alert_with_interface_name Gán tên cho cảnh báo (snort -I). config logdir: /var/log/snort Thiết lập thư mục log (snort -l). config umask: Thiết lập umask khi đang chạy (snort -m). config pkt_count: N Thoát ra sau N gói tin (snort -n). config nolog Tắt việc ghi log (vẫn còn cảnh báo) (snort -N). config quiet Tắt các đầu đề và trạng thái bản báo cáo (snort -q). config set_uid: Thiết lập UID (snort -u). config utc Sử dụng UTC thay vì thời gian cục bộ cho timestamp (snort-U). config verbose Sử dụng ghi log Verbose cho stdout (snort -U). config dump_payload_verbose Bỏ raw packet bắt đầu từ lớp liên kết (snort -X ). ___________________________________________________________________________ Honeypots 40 config show_year Hiển thị năm trong timestamps (snort -y). - Cấu hình tiền xử lí Các bộ tiền xử lí phục vụ một số mục đích. Chúng chuẩn hóa lưu lượng cho nhiều loại dịch vụ, đảm bảo rằng dữ liệu trong các gói tin mà Snort giám sát sẽ có 1 định dạng mà các dấu hiệu sẽ được nhận ra. Một chức năng khác của bộ tiền xử lí là tự bảo vệ. Nhiều loại tấn công được thiết kế để gây nhầm lẫn hoặc làm tràn ngập bộ cảm biến NIDS, vì vậy mà kẻ tấn công có thể thực hiện tấn công mà không bị phát hiện. Tiền xử lí frag2 và stream4 chủ yếu là các cơ chế phòng thủ. Lợi ích cuối cùng của bộ tiền xử lí là chúng mở rộng khả năng của Snort để phát hiện các điều bất thường mà có thể là dấu hiệu xâm nhập. - Cấu hình xuất kết quả Một trong những sức mạnh thật sự của Snort là các tùy chọn để xuất các cảnh báo và thông tin phát hiện xâm nhập. Nhiều nhà quản trị Snort sử dụng các ứng dụng của công ty thứ ba để giám sát và nghiên cứu thông tin tạo ra bởi Snort. Để làm được việc đó, Snort phải xuất dữ liệu theo một định dạng cụ thể. Output plug-ins thực hiện nhiệm vụ này. Lưu ý rằng việc sử dụng một vài plug-in này đòi hỏi nhà quản trị phải thực hiện một vài bước khi Snort được biên dịch. Ví dụ, để cho phép Snort xuất dữ liệu ra một cơ sở dữ liệu MySQL, MySQL client cần được cài đặt trên hệ thống Snort và tùy chọn --with-mysql phải được xác định với câu lệnh ../configure. Một vài tùy chọn chỉ sử dụng được trên các platform cụ thể. Ví dụ, chỉ hệ thống Window có thể log trực tiếp vào Microsoft SQL Server với plug-in mysql (hệ thống Unix phải dùng ODBC với plug-in odbc). Nhiều plug-in output có thể được bật, cho phép nhiều công cụ được triển khai bởi nhà quản trị. - Cơ sở dữ liệu Plug-in cơ sở dữ liệu cho phép viết nhiều cơ sở dữ liệu liên quan với nhau trên cùng một hệ thống đang chạy Snort hoặc trên một host khác. Khi ghi log vào một cơ sở dữ liệu, nhiều thông tin được ghi lại – bao gồm các cảnh báo, liên quan đến host, và gói tin gây ra cảnh báo – làm cho việc phân biệt giữa các cảnh báo thật và giả dễ dàng hơn. Thỉnh thoảng việc ghi log vào một server cơ sở dữ liệu có thể gây ra nghẽn cổ chai, vì ___________________________________________________________________________ Honeypots 41 chỉ có một cảnh báo được ghi log vào 1 thời điểm. Một server cơ sở dữ liệu được cấu hình tốt có thể giải quyết vấn đề này. Plug-in output cơ sở dữ liệu có định dạng sau : output database: , , Chọn log hoặc alert. Log gửi thông tin log đến cơ sở dữ liệu, và alert gửi các cảnh báo. Lưu ý rằng log bao gồm các thông tin cảnh báo và thông tin gói tin tạo ra cảnh báo. Nếu muốn gửi cả hai đến cơ sở dữ liệu, cần chọn 2 dòng output cơ sở dữ liệu. Đây là nơi xác định kiểu cơ sở dữ liệu mà ghi log. Snort hỗ trợ các dạng sau : mysql, postgresql, oracle, odbc, and mssql. Khi cấu hình một plug-in output cơ sở dữ liệu cụ thể, thiết lập các thông số sau (không có dấu phẩy giữa các thông số) : Thông số và mô tả chi tiết. Host: Địa chỉ IP của server cơ sở dữ liệu. Nếu để trống, nó sẽ là máy cục bộ (local machine) port: Cổng mà cơ sở dữ liệu đang lắng nghe. Chỉ cần xác định nếu không sử dụng cổng chuẩn. dbname= Tên cơ sở dữ liệu ghi log user Username mà Snort sử dụng để ghi log vào cơ sở dữ liệu. password Password được sử dụng để log vào cơ sở dữ liệu. Có thể xác định mức độ chi tiết được sử dụng để khi gửi thông tin đến cơ sở dữ liệu. Full sẽ bao gồm tất cả thông tin mà Snort thu thập, bao gồm cả header và thông tin gói tin. Fast thì nhanh hơn 1 chút, nhưng bao gồm ít thông tin hơn như tên cảnh báo, địa chỉ và cổng nguồn, đích và thời gian. Full được khuyên dùng. - Các file kèm theo Thành phần cuối cùng trong file snort.conf là các mục đính kèm. Câu lệnh include nói cho Snort đính kèm thông tin trong các file đặt trong file hệ thống Snort. ___________________________________________________________________________ Honeypots 42 Những file này bao gồm thông tin cấu hình và các file chứa luật mà Snort sử dụng để phát hiện xâm nhập. Đường dẫn mặc định nên được xác định sớm trong cấu hình. Sử dụng biến $RULE_PATH để chỉ vị trí của chúng, hoặc sử dụng tên đầy đủ để chỉ các file luật mà muốn sử dụng. Nhiều file đính kèm có thể được sử dụng trong một cấu hình. Đây là mẫu cấu hình đính kèm nói cho Snort các file luật nào được sử dụng : # include $RULE_PATH/telnet.rules (không sử dụng file luật này) include $RULE_PATH/dos.rules include $RULE_PATH/icmp.rules Nếu đang sử dụng cài đặt phân loại mức độ ưu tiên hoặc tham chiếu đến bất kì một hệ thống nào, sử dụng các mục sau đây. Đảm bảo rằng các file này tồn tại khi khởi động Snort. Những file này giúp phân loại và ưu tiên cho các cảnh báo tùy theo mức độ. Chỉnh sửa file classification.config theo ý muốn. Sau khi file này được cấu hình theo nhu cầu có thể sử dụng console để tìm kiếm các cảnh báo có độ ưu tiên cao nhất. File reference.config bao gồm các link đến các trang web với thông tin về tất cả các cảnh báo. Nó rất hữu dụng. # include classification & priority settings include classification.config # include reference systems include reference.config Ví dụ về Snort rule: Sau đây là một số snort rule cơ bản cùng với những mô tả của chúng. Log tất cả các truyền thông kết nối đến port 23 của dịch vụ telnet: log tcp any any -> 10.0.1.0/24 23 Log các ICMP traffic đến lớp mạng 10.0.1.0: log icmp any any -> 10.0.1.0/24 any Cho phép tất cả các quá trình duyệt Web mà không cần ghi log: Pass tcp any 80 -> any 80 Tạo một cảnh báo với thông điệp kèm theo : alert tcp any any -> any 23 (msg: "Telnet Connection => Attempt"; ) Dò tìm các tình huống quét mạng với SYN/FIN : alert tcp any any -> 10.0.10.0/24 any (msg: "SYN-FIN => scan detected"; flags: SF; ) ___________________________________________________________________________ Honeypots 43 Dò tìm các tiến trình quét mạng TCP NULL: alert tcp any any -> detected"; > = 10.0.10.0/24 any (msg: "NULL scan flags: 0; ) Dò tìm các tiến trình OS fingerprinting: alert tcp any any -> 10.0.10.0/24 (msg: "O/S Fingerprint => detected"; flags: S12; ) Tiến hành lọc nội dung : alert tcp any $HOME_NET -> !$HOME_NET any (content: => "Hello"; msg:"Hello Packet";) Qua một số ví dụ snort rules mẫu trên, có thể thiết lập các quy tắc riêng để tạo một snort rule riêng. Sau đây là tình huống yêu cầu các chuyên gia bảo mật hệ thống thiết lập một snort rule để ghi log tất cả các TCP trafic, cảnh báo khi có xảy ra trường hợp sử dụng lệnh ping, và đưa ra các cảnh báo nếu có ai đó sử dụng mật mã là password. Hãy tiến hành như sau: Sử dụng trình soạn thảo Notepad và nhập vào nội dung: log tcp any any -> any any (msg: "TCP Traffic Logged"; ) alert icmp any any -> any any (msg: "ICMP Traffic Alerted"; ) alert tcp any any -> any any (content: "password"; msg: => "Possible Password Transmitted"; ) Lưu tập tin trên (C:\Snort\rules\demo.rules) Chạy Snort: C:Snort\bin\snort -c C:/Snort/rules/demo.rules -l C:/Snort/log Đọc file log (C:\Snort\log\alert.ids) để xem chi tiết cảnh báo. Nếu triển khai Snort trên lớp mạng A với dãy địa chỉ 10.0.0.0/24, thì mở tập tin snort.conf trong thư mục C:\Snort\etc\ và tìm đến các biến HOME_NET rồi thiết lập như sau: var HOME_NET 10.0.0.0/24 Khai báo đường dẫn đến nơi chứa các quy tắc snort rules RULE_PATH C:\Snort\rules Hình 4.5: Đường dẫn file rules ___________________________________________________________________________ Honeypots 44 Khai báo các biến include classification.config và reference.config như hình dưới (sửa thành include C:\Snort\etc\classification.config và C:\Snort\etc\reference.config Hình 4.6: Đường dẫn file classification.config và reference.config Bây giờ, có thể copy các rule được tạo sẵn hoặc download từ internet chú ý chọn đúng phiên bản snort được triển khai, giải nén và copy thư mục rules vào thư mục cài đặt Snort trên ổ C:\Snort Thư mục rules chứa các tập quy tắc sau khi giải nén. Hình 4.7: Thư mục chứa chương trình Snort và rules ___________________________________________________________________________ Honeypots 45 Như vậy quá trình chuẩn bị đã hòan tất, trước khi có thể start snort để tiến hành sniffer hay lắng nghe các tín hiệu khả nghi thì hãy chỉ định thư mục chứa log file cho Snort IDS. Hãy chạy lệnh sau đây: C:\Snort\bin\snort -l C:\Snort\log -c C:\Snort\etc\snort.conf -A console Hình 4.8: Chạy chương trình Hình 4.9: Kết quả sau khi thực thi dòng lệnh IV.3 Sử dụng Snort IV.3.1 Sử dụng Snort để Sniffer Packet Để tiến hành sniffer cần chọn card mạng để snort đặt vào chế độ promicous (sniff hỗn hợp), nếu máy tính có nhiều card hãy sử lệnh snort –W để xác định: ___________________________________________________________________________ Honeypots 46 Hình 4.10: Số hiệu card mạng Kết quả của snort –W xác định số hiệu card mạng Vậy card mạng có số hiệu là 2. Chạy lệnh snort –h sẽ thấy để tiến hành sniffer packet sẽ dùng lệnh snort –v –ix (với x là số hiệu của card mạng) ___________________________________________________________________________ Honeypots 47 Hình 4.11: Tùy chọn của lệnh chạy trong Snort Cú pháp dòng lệnh sử dụng snort và các tùy chọn C:\Snort\bin\snort –v –i2 Với tùy chọn –v snort chỉ hiển thị IP và TCP/UDP/ICMP header, nếu muốn xem kết quả truyền thông của các ứng dụng hãy sử dụng tùy chọ -vd: C:\Snort\bin\snort –vd –i2 Để hiển thị thêm các header của gói tin tại tầng Data Link hãy sử dụng dòng lệnh: C:\Snort\bin\snort –vde –i2 Hình 4.12: Chạy Snort với tùy chọn v Sau khi chạy dòng lệnh trên hãy mở cửa sổ mới và thử ping một host nào đó rồi quan sát giao diện snort sẽ thấy các tín hiệu. Để dừng tiến trình sniffing hãy nhấn tổ hợp phím Ctrl-C, Snort sẽ trình bày bản tóm tắt các gói tin bị bắt giữ theo từng giao thức như UDP, ICMP … Hình 4.13: Dừng chạy Snort ___________________________________________________________________________ Honeypots 48 IV.3.2 Sử dụng Snort ở chế độ packer logger Ngoài việc xem các gói tin trên mạng thì còn có thể lưu trữ chúng trong thư mục C:\Snort\log với tùy chọn –l, ví dụ dòng lệnh sau sẽ ghi log các thông tin dữ liệu tại tầng data link và TCP/IP header của lớp mạng nội bộ 10.0.0.0/24 C:\Snort\bin\snort -dev -l C:/Snort/log -h 10.0.0.0/24 Như vậy đã tiến hành cài đặt và cấu hình snort để tiến hành bắt giữ các gói tin, xem nội dung của chúng nhưng vẫn chưa biến snort thực sự trở thành một hệ thống IDS – dò tìm xâm phạm trái phép. Vì một hệ thống như vậy cần có các quy tắc (rule) cùng những hành động cảnh báo cho quản trị hệ thống khi xảy ra sự trùng khớp của những quy tắc này. Trong phần tiếp theo, sẽ tiến hành cấu hình để xây dựng một network IDS với Snort. IV.3.3 Sử dụng Snort ở chế độ Network IDS Tất cả những hành động của Snort IDS đều họat động thông qua các rule, vì vậy cần phải tạo mới hay chỉnh sửa những rule đã được tạo sẵn. Đầu tiên có dòng lệnh sau để áp dụng Snort ở NIDS: C:\Snort\bin\snort -dev –i2 -l C:/Snort/log –c C:/Snort/etc/snort.conf trong dòng lệnh này có một tùy chọn mới là –c với giá trị là file snort.conf. Trong file này chứa các thông số điều khiển và cấu hình Snort như các biến HOME_NET xác định lớp mạng, biến RULE_PATH xác định đường dẫn đến nơi chứa các quy tắc để Snort áp dụng. Trong trường hợp này, tùy chọn –c sẽ yêu cầu Snort áp dụng các quy tắc được khai báo trong tập tin cấu hình snort.conf khi xử lý các gói tin được bắt giữ trên mạng. Trước khi nghiên cứu sâu hơn về Snort và những quy tắc của nó hãy xem xét các thành phần của một Snort rule gồm có: + Rule header : là nơi chứa các action (hành động), protocol (giao thức truyền thông), Source IP address và Destination IP Address cùng với giá trị sunnet mask và số hiệu port của địa chỉ IP nguồn và đích. Tiếp theo sẽ đi sâu hơn về các rule header, ví dụ “alert tcp any any -> any any”, với phần đầu tiên là alert chính là rule action định nghĩa hành động mà snort sẽ thực hiện khi các packet trùng khớp với quy tắc mà đã tạo ra. Có 5 loại rule action như sau: ___________________________________________________________________________ Honeypots 49 Rule action Mô tả alert Tạo cảnh báo và ghi log file log Ghi log các packet pass Bỏ qua các gói tin. activate Tạo một cảnh báo và bật chức năng dynamic rule. dynamic Chưa sử dụng, trừ khi có một rule khác tương thích. Khi action đã được định nghĩa, cần phải xác định các giao thức như trong ví dụ trên là TCP, Snort hỗ trợ các giao thức truyền thông sau: TCP, UDP, ICMP, và IP. Sau đó sẽ bổ sung địa chỉ IP cho snort rule của mình, ví dụ any là xác định bất kỳ địa chỉ IP nào, ngoài ra snort sử dụng định dạng netmask để khai báo các mặt nạ mạng như lớp A là /8, địa chỉ lớp B là /16 và địa chỉ lớp C là /24. Nếu muốn khai báo một host thì sử dụng /32. Bên cạnh đó có thể có một dãy các máy tính như sau: alert tcp any any -> [10.0.1.0/24, 10.0.0.0/24] any => (content: "Password"; msg:"Password Transfer Possible!";) Sau khi các action, protocol và ip address đã được định nghĩa thì cần xác định số hiệu port của dịch vụ, như 80 là cho các dịch vụ truy cập Web hay các port 21, 23, … Cũng có thể áp dụng từ khóa any để áp dụng cho tất cả các port, hay dùng các dấu “;” để chỉ định một dãy các port nào đó: Để ghi log bất kỳ truyền thông nào từ tất cả địa chỉ IP address và tất cả port đến port 21 của lớp mạng 10.0.1.0/24 sử dụng lệnh sau: log tcp any any -> 10.0.1.0/24 21 Ghi log tất cả truyền thông từ bất kỳ địa chỉ IP đến các port nằm trong khoảng 1 đến 1024 trên các máy thuộc lớp mạng 10.0.1.0/24 sử dụng lệnh sau: log tcp any any -> 10.0.10.0/24 1:1024 Ghi log tất cả truyền thông từ các địa chỉ IP có số hiệu port thấp hơn hoặc bằng 1024 đến các máy thuộc lớp mạng 10.0.1.0/24 và destination port lớn hơn hoặc bằng 1024 sử dụng cú pháp sau: log tcp any :1024 -> 10.0.10.0/24 1 1024 ___________________________________________________________________________ Honeypots 50 Ngoài ra, có thể sử dụng các tham số phủ định “!” như trường hợp ghi log các truyền thông trên giao thức TCP từ các máy tính ngoại trừ 192.168.34.4 áp dụng cho tất cả các port đến bất kỳ trên 10.0.1.0/24 sử dụng tất cả các port: log tcp ! 192.168.34.4 /32 any -> 10.0.10.0/24 any Đến lúc này đã duyệt qua một số các snort rule và nhận thấy mỗi rule đều có một lệnh điều hướng ->, xác định chiều của truyền thông đi từ phải qua trái. Trong trường hợp muốn áp dụng snort rule cho các truyền thông theo cả 2 chiều thì sử dụng cú pháp thay cho -> như trong trường hợp ghi log 2 chiều đối với FTP session sau: log tcp 10.0.10.0/24 any 172.16.30.0/24 21 + Rule option: là nơi khai báo các đặc tả về tình trạng trùng khớp của các gói tin với các rule, cùng những cảnh báo alert messenger như trong ví dụ sau đây: alert tcp any any -> any 80 (content: "adult"; msg: "Adult Site Access";) Dòng lệnh trên thấy phần rule header là alert tcp any any -> any 80 và phần content: ("adult"; msg: "Adult Site Access";) là rule option, mặc dù rule option không bắt buộc phải có trong tất cả các snort rule nhưng nó cho biết các thông tin cần thiết về lý do để tạo rule hay các hành động tương ứng. Và kết quả của dòng lệnh này là tạo ra các cảnh báo (alert) khi các TCP trafic từ bất kỳ địa chỉ IP và port được gởi đến một địa chỉ IP bất kỳ trên Port 80 mà phần nội dung (payload) có chứa từ khóa Adult. Nếu tình huống này xảy ra, nghĩa là có một user nào đó trên LAN truy cập vào 1 site có chứa từ Adult thì một record Adult Site Access sẽ được ghi vào log file. Một snort rule có thể có nhiều option khác nhau phân cách bởi dấu “;” và các rule option này sẽ làm cho snort rule có thể được áp dụng linh động, mạnh mẽ hơn. Danh sách sau đây sẽ trình bày những option thông dụng thường được áp dụng trong các snort rule: Từ Khóa Mô Tả msg Hiển thị một thông báo trong alert và packet log file. ttl Dùng để so sánh các giái trị Time To Live của IP header. id Dùng để so sánh một giá trị của IP header fragment. Flags Dùng để so sánh tcp flag với các giá trị được định nghĩa. ack So sánh các TCP ack cho một giá trị được định nghĩa. content So sánh nội dung packet với các giá trị được định nghĩa. ___________________________________________________________________________ Honeypots 51 Khi từ khóa msg được áp dụng trong rule nó sẽ yêu cầu ghi nhật ký và cảnh báo của snort chèn thêm một thông điệp được định nghĩa vào trong log file hay các cảnh báo ví dụ. msg: "text here"; Khi ttl được sử dụng trong rule sẽ yêu cầu snort hãy so sánh với một giá trị Time To Live, trường hợp này thường được áp dụng để dò tìm tuyến đường.Ví dụ đơn giản sau được dùng để khai báo ttl: ttl: "time-value"; Còn trường hợp trong rule sử dụng từ khóa id nó sẽ yêu cầu Snort so sánh với 1 IP header fragment theo id đã định như: id: "id-value"; Đối với trường hợp của flags option thì có nhiều tình huống khác tùy theo flag được yêu cầu so sánh, các tùy chọn flag được khai báo như sau: F dùng cho cờ FIN S dùng cho cờ SYN R dùng cho cờ RST P dùng cho cờ PSH A dùng cho cờ ACK U dùng cho cờ URG 2 dùng cho Reserved bit 2 1 dùng cho Reserved bit 1 0 dùng cho no tcp flags set Các toán tử logic có thể được áp dụng cho tùy chọn flag như + dùng để so khớp với tất cả các flag, * dùng để xác định có sự trùng lắp với bất kỳ flag nào đó hoặc ! dùng để so sánh sự trùng lắp mang tính chất lọai trừ. Sau đây là một ví dụ của tùy chọn flags và một snort rule dùng để xác định dò tìm các SYN-FIN scans: Ví dụ sử dụng flags: alert any any -> 10.0.0.0/24 any (msg: "SYN FIN => Scan Possible"; flags: SF;) Tùy chọn ack được áp dụng để so khớp với một giá trị ACK tương ứng trong TCP header của packet, như ứng dụng Nmap dùng các ACK flag để xác định sự tồn tại của một host nào đó. ___________________________________________________________________________ Honeypots 52 Trong số các từ khóa thì content là từ khóa quan trọng nhất, khi content được áp dụng snort sẽ kiểm tra nội dung của gói tin và so sánh với giá trị được khai báo trong content, nếu có sự trùng lắp thì các hành động tương úng sẽ tiến hành. Chú ý là các giá trị được áp dụng với content có tính chất case sensitive (phân biệt chữ hoa và chữ thường). Với cơ chế này quá trình so sánh sẽ diễn ra hiệu quả hơn trên các máy có cấu hình yếu. Cú pháp đơn giản của từ khóa content: content:"content value". Ngoài ra còn có nhiều loại từ khóa khác, có thể tham khảo man page (nếu sử dụng Snort trên Linux) hoặc help page khi chạy Snort trên Windows. ___________________________________________________________________________ Honeypots 53 Chương V: Mô phỏng hệ thống Honeypots V.1 Tổng hợp cấu hình Honeypots Phần trên đã cho thấy cách cấu hình và thiết lập topology mạng sử dụng Honeyd. Bằng cách dùng một số lệnh kết hợp với nhau ta đã giả lập các mạng phức tạp và mô hình hoạt động của mạng. Mạng thiết lập bao gồm các tính năng sau: - Nhiều điểm vào - Nhiều trạm để đưa tới đích - Liên kết với trễ truyền, tổn thất và băng thông - Tích hợp máy vật lý bên ngoài vào topo mạng - Thiết lập Honeyd phân tán với đường hầm GRE Với mỗi phiên bản mới của Honeyd, càng ngày càng có thêm các chức năng mới và hữu ích được phát triển thêm. ################################################# #tập tin: honeyd.config for a sample network #a virtual network step-by-step. The network we simulate #has multiple hops, two entry points, a GRE tunnel to a remote location # and integrates external physical hosts to the virtual network. ################################################# #To create the router at the entry point, use the #route entry command and specify the IP address of #the router and the network reachable through it. route entry 10.0.0.100 network 10.0.0.0/16 #To specify the IP addresses directly reachable from #a router, use the route link configuration. In the #example below, we specify that the 10.0.1.0/24 #network is directly reachable from the 10.0.0.100 router. route 10.0.0.100 link 10.0.1.0/24 # Add a new router connected to an existing router ___________________________________________________________________________ Honeypots 54 #in the network by using the route add net #directive. Specify the network range that can be #reached by the new router and the IP address of the #new router. In the example below, we add #10.0.1.100 as a new router that serves the #10.1.0.0/16 network and connected to the first #router 10.0.0.100 route 10.0.0.100 add net 10.1.0.0/16 10.0.1.100 #Specify the range of IP addresses that are directly #reachable from the new router with the route link #configuration. Here, we indicate that 10.1.0.0/16 #is directly accessible from the router 10.0.1.100 we #newly added route 10.0.1.100 link 10.1.0.0/16 #Here we add another router connected to 10.0.1.100 #that can reach the 10.1.1.0/24 network. The new #router takes the IP 10.1.0.100. Additionally, we #also specify the network characteristics of that #link using the latency, loss and bandwidth keywords. route 10.0.1.100 add net 10.1.1.0/24 10.1.0.100 latency 50ms loss 0.1 bandwidth 1Mbps #With the route link configuration, we next #specify that the 10.1.1.0/24 network is directly #accessible from the 10.1.0.100 router. route 10.1.0.100 link 10.1.1.0/24 #External physical machines can be integrated into the #virtual network topology of the honeynet. The bind #to interface configuration is used to attach external #machines into the network. In our example here, #the external machine at 10.1.1.53 is integrated #into the virtual network through eth0. ___________________________________________________________________________ Honeypots 55 bind 10.1.1.53 to eth0 #Multiple entry points may be defined in Honeyd for the #virtual network by using additional route entry #configurations. Here we add 10.0.0.200 as a new entry #router and then define an entire network behind it. route entry 10.0.0.200 network 10.2.0.0/16 route 10.0.0.200 link 10.2.0.0/24 route 10.0.0.200 add net 10.2.1.0/24 10.2.0.100 route 10.2.0.100 link 10.2.1.0/24 # We can setup GRE tunnels to other networks located across #a WAN or the Internet by using the tunnel keyword. #For simplicity, we first create a dedicated virtual router 172.20.254.1 #for the GRE tunneling. The 10.3.2.0/24 network containing Honeypots #is directly connected to this virtual router. #To setup a tunnel to the 10.3.1.0/24 network #located across the WAN, we setup a tunnel with 172.20.254.1 and # 172.30.254.1 as the two points of termination. The destination #router should know how to decapsulate the GRE packets and #route them to the 10.3.1.0/24 network. The source and #destination are specified after the tunnel keyword of the #route add net configuration line as follows. route entry 172.20.254.1 network 10.3.2.0/24 route 172.20.254.1 link 10.3.2.0/24 route 172.20.254.1 add net 10.3.1.0/24 tunnel 172.20.254.1 172.30.254.1 #IP addresses are assigned to virtual hosts that we #want to simulate within Honeyd with the bind #configuration. Here, we bind the Honeypots IPs #to a template called windows that we have defined. ___________________________________________________________________________ Honeypots 56 create windows set windows personality "Windows NT 4.0 Server SP5-SP6" add windows tcp port 80 "perl scripts/iis-0.95/iisemul8.pl" add windows tcp port 139 open add windows tcp port 137 open add windows udp port 137 open add windows udp port 135 open set windows default tcp action reset set windows default udp action reset bind 10.0.1.51 windows bind 10.0.1.52 windows bind 10.1.0.51 windows bind 10.1.0.52 windows bind 10.1.1.51 windows bind 10.1.1.52 windows bind 10.2.0.51 windows bind 10.2.0.52 windows bind 10.2.1.51 windows bind 10.2.1.52 windows bind 10.3.2.51 windows bind 10.3.2.52 windows #The routers we have created in the virtual network #also need to be bound to templates to model their #behavior. We have created a template called router #and bound the router IP addresses to that template. ___________________________________________________________________________ Honeypots 57 create router set router personality "Cisco IOS 11.3 - 12.0(11)" set router default tcp action reset set router default udp action reset add router tcp port 23 "perl scripts/router-telnet.pl" set router uid 32767 gid 32767 set router uptime 1327650 bind 10.0.0.100 router bind 10.0.1.100 router bind 10.1.0.100 router bind 10.0.0.200 router bind 10.2.0.100 router bind 172.20.254.1 router V.2 File cấu hình cho bài demo thiết lập hệ thống Honeypots Tên file chương trình Honeyd là demo_honeyd.config Hình 5.1: Sơ đồ mạng giả lập vẽ bằng phền mềm Friendly Pinger. ___________________________________________________________________________ Honeypots 58 Các router: R1 với IP 10.0.0.100 R2 với IP 10.0.1.100 R3 với IP 10.0.1.200 R4 với IP 10.1.0.100 R5 với IP 10.2.0.100 Trong đó tất cả các router đều chạy hệ điều hành “Cisco 7200 router running IOS 12.1(14)E6” và riêng router R1 thì mở port 23 và có dịch vụ telnet đang chạy thông qua script, các router còn lại thì bình thường các port đều đóng. Các máy server và client: pc1 với IP 10.0.1.51 pc2 với IP 10.0.1.52 pc3 với IP 10.1.0.51 pc4 với IP 10.1.0.52 pc5 với IP 10.1.1.51 pc6 với IP 10.1.1.52 pc7 với IP 10.2.1.51 Các pc1 và pc7 là server chạy hệ điều hành “Microsoft Windows 2003 Server Enterprise Edition” đồng thời mở port 23,80 cho dịch vụ Telnet, IIS chạy thông qua script. Pc2 và pc4 chạy hệ điều hành “Linux 2.6.8 (Ubuntu)” và đang mở port 21, 80 cho dịch vụ FTP, IIS chạy thông qua script. Pc3 chạy hệ điều hành “Microsoft Windows 2003 Server Enterprise Edition” và đang mở port 25, 110 cho dịch vụ SMPT, POP3 chạy thông qua script. Pc5 và pc6 là client chạy hệ điều hành “Microsoft Windows XP Home Edition”, cả 2 đều đang mở port 138, 139, 445. #annotate "Cisco 7200 router running IOS 12.1(14)E6" #annotate "Linux 2.6.8 (Ubuntu)" #annotate "Microsoft Windows 2003 Server Enterprise Edition" #annotate "Microsoft Windows XP Home Edition" route entry 10.0.0.100 network 10.0.1.0/24 ___________________________________________________________________________ Honeypots 59 route 10.0.0.100 link 10.0.1.0/24 route 10.0.0.100 link 10.0.0.100/32 route 10.0.0.100 add net 10.1.0.0/24 10.0.1.100 route 10.0.0.100 add net 10.1.1.0/24 10.0.1.100 route 10.0.0.100 add net 10.2.0.0/24 10.0.1.200 route 10.0.0.100 add net 10.2.1.0/24 10.0.1.200 route 10.0.1.100 link 10.1.0.0/24 route 10.0.1.100 link 10.0.1.100/32 route 10.0.1.100 add net 10.1.1.0/24 10.1.0.100 latency 500ms loss 0,5 bandwidth 1Mbps route 10.0.1.200 link 10.2.0.0/24 route 10.0.1.200 link 10.0.1.200/32 route 10.0.1.200 add net 10.2.1.0/24 10.2.0.100 route 10.1.0.100 link 10.1.1.0/24 route 10.1.0.100 link 10.1.0.100/32 route 10.2.0.100 link 10.2.1.0/24 route 10.2.0.100 link 10.2.0.100/32 create linux set linux ethernet "vmware" set linux personality "Linux 2.6.8 (Ubuntu)" set linux default icmp action reset set linux default tcp action reset set linux default udp action reset add linux tcp port 21 "sh scripts\ftp.sh" add linux tcp port 80 "perl scripts\iisemulator-0.95\iisemul8.pl" create router1 set router1 ethernet "vmware" set router1 personality "Cisco 7200 router running IOS 12.1(14)E6" set router1 default icmp action reset ___________________________________________________________________________ Honeypots 60 set router1 default tcp action reset set router1 default udp action reset add router1 tcp port 23 "perl scripts\router-telnet.pl" create router2 set router2 ethernet "vmware" set router2 personality " Cisco 4000 Series running IOS 12.0(10.3" set router2 default icmp action reset set router2 default tcp action reset set router2 default udp action reset create win2k3_1 set win2k3_1 ethernet "vmware" set win2k3_1 personality "Microsoft Windows 2003 Server Enterprise Edition" set win2k3_1 default icmp action block set win2k3_1 default tcp action reset set win2k3_1 default udp action reset add win2k3_1 tcp port 23 "perl scripts\faketelnet.pl" add win2k3_1 tcp port 80 "perl scripts\iisemulator-0.95\iisemul8.pl" create win2k3_2 set win2k3_2 ethernet "vmware" set win2k3_2 personality "Microsoft Windows 2003 Server Enterprise Edition" set win2k3_2 default icmp action reset set win2k3_2 default tcp action reset set win2k3_2 default udp action reset add win2k3_2 tcp port 25 "perl scripts\smtp.pl" add win2k3_2 tcp port 110 "sh scripts\pop3.sh" create winxp ___________________________________________________________________________ Honeypots 61 set winxp ethernet "vmware" set winxp personality "Microsoft Windows XP Home Edition" set winxp default icmp action reset set winxp default tcp action reset set winxp default udp action reset add winxp udp port 138 open add winxp tcp port 139 open add winxp tcp port 445 open set winxp uptime 2230938 set winxp droprate in 0.005 set winxp uid 202909 gid 1389090 bind 10.0.0.100 router1 bind 10.0.1.100 router2 bind 10.0.1.200 router2 bind 10.0.1.51 win2k3_1 bind 10.0.1.52 linux bind 10.1.0.100 router2 bind 10.1.0.51 win2k3_2 bind 10.1.0.52 linux bind 10.1.1.51 winxp bind 10.1.1.52 winxp bind 10.2.0.100 router2 bind 10.2.1.51 win2k3_1 Lệnh thực thi file cấu hình trên: C:\winhoneyd-1.5c\WinHoneyd_1.5c.exe -d -p nmap.prints -a nmap.assoc -x xprobe2.conf -i 2 -f C:\winhoneyd-1.5c\demo_honeyd.config -l C:\winhoneyd- 1.5c\log\honeyd 10.0.0.100 10.0.1.100 10.0.1.200 10.0.1.51 10.0.1.52 10.1.0.100 10.1.0.51 10.1.0.52 10.1.1.51 10.1.1.52 10.2.0.100 10.2.1.51 ___________________________________________________________________________ Honeypots 62 Sau khi chạy lệnh trên máy honeyd sẽ tạo ra một hệ thống máy tính giả lập các dịch vụ, các port được open. Dùng máy client chạy win XP với địa chỉ 10.0.0.14 cài đặt các phần mềm để Scan. Đầu tiên ta sẽ chứng minh là hệ thống mạng ảo đã được tạo ra bằng cách dùng các tool như Net tools, Friendly Pinger, SolarWinds LANsurveyor trong đó SolarWinds LANsurveyor là tool dùng để scan và vẽ lại sơ đồ mạng của toàn bộ hệ thống nhưng do tool này scan từng địa chỉ IP không phù hợp với mạng có quá nhiều mạng con và các dãy IP khác nhau vì vậy sẽ tạm thay thế bằng Friendly Finger tool này không sử dụng cách scan IP mà dùng để thiết lập sơ đồ mạng do ta tự cấu hình giống với mô hình mạng mà ta tạo ra từ Honeyd, chúng ta sẽ add các router, computer, line và tương ứng với các địa chỉ IP rồi sau đó dùng các tiện ích của chính tool này để chứng minh là hệ thống mạng ảo đã tồn tại. hình 5.1 sẽ mô tả điều này. Hình 5.2: Tracert 10.2.1.51 minh họa mô hình mạng chạy ___________________________________________________________________________ Honeypots 63 Một cách nữa là dùng Net tools nhưng tool này thì ko cho thấy được sơ đồ mạng mà chỉ scan IP xem địa chỉ nào alive. Với việc sử dụng các tool cơ bản trên đã cho thấy một hệ thống mạng ảo được tạo ra, bước tiếp theo là dò tìm xem mạng có những dịch vụ nào và port nào đang mở. Để thực hiện việc này dùng tool nmap. nmap là một tool scan port rất mạnh và đã nổi danh từ lâu được giới hacker tin dùng cũng như các nhà quản trị mạng. Nó hỗ trợ toàn bộ các phương thức scan port, scan OS (operating system)…, ngoài ra nó còn hỗ trợ các phương thức scan hostname, service chạy trên hệ thống đó. nmap hiện giờ có cả giao diện đồ hoạ và giao diện command line cho người dùng, chạy trên cả môi trường. NIX và Windows. Phần mềm nmap miễn phí download tại địa chỉ: Dưới đây là cách sử dụng nmap để scan. Hình 5.3: Tùy chọn chạy nmap ___________________________________________________________________________ Honeypots 64 Hình 5.4: Tùy chọn chạy nmap Các dạng Scan Nmap hỗ trợ. nmap –sT: trong đó chữ -s là Scan, còn chữ T là dạng TCP scan nmap –sU: đó là sử dụng UDP Scan nmap –sP: sử dụng Ping để scan nmap –sF: sử dụng FIN Scan nmap –sX: sử dụng phương thức XMAS Scan nmap –sN: sử dụng phương thức NULL Scan nmap –sV: sử dụng để Scan tên các ứng dụng và version của nó nmap –SR /I RPC sử dụng để scan RPC Các option cao cấp kết hợp với các dạng scan trong Nmap. ___________________________________________________________________________ Honeypots 65 - O: sử dụng để biết hệ điều hành chạy trên máy chủ ví như dùng Nmap sử dụng phương thức scan là XMAS Scan và đoán biết hệ điều hành của: dùng câu lệnh: nmap –sX –O - p: giải port sử dụng để scan: nmap –p 1-1024 10.0.0.1 sẽ scan từ port 1 đến 1024 hoặc nmap –p 80 10.0.0.0/24 chỉ scan port 80 ngoài ra còn dùng tùy chọn này kết hợp với service như ftp, http để scan trực tiếp: nmap –p ftp,http 10.0.0.0/24. Hình 5.5: Scan port và services - F: Chỉ những port trong danh sách scan của Nmap - v: Sử dụng Scan hai lần nhằm tăng độ tin cậy và hiệu quả của phương thức scan nào đang được sử dụng. - P0: không sử dụng ping để Scan nhằm mục đích giảm thiểu các quá trình quét ngăn chặn scan trên các trang web hay máy chủ. Ví dụ muốn Scan trang web bằng phương thức UDP Scan số port sử dụng là từ 1 tới 1024 và sử dụng hai lần để nâng cao hiệu quả, khi scan sẽ không ping tới trang này: Nmap –sU –p 1-1024 –v –P0 Ngoài ra nmap còn hỗ trợ tính năng scan ẩn nhằm tránh những quá trình quét trên server như sử dụng: -Ddecoy_host1, decoy2… để sử ẩn quá trình Scan. -6: Scan IPv6 Ngoài ra Nmap còn có những options để output kết quả ra nhiều định dạng file khác nhau. ___________________________________________________________________________ Honeypots 66 Hình 5.6: Scan tcp Hình 5.7: Scan udp Sau khi phát hiện ra các dịch vụ, các port được mở trên router và server, sẽ lần lượt thử tìm cách xâm nhập vào, đồng thời chạy Snort để ghi log và alert. Snort –dve –i2 –l c:/snort/log –c c:/snort/rules/demo.rules –h 10.0.0.0/24 Chạy câu lệnh trên máy Honeyd dựng Honeypors thì snort bắt đầu lắng nghe. Tại máy client địa chỉ IP là 10.0.0.14 sẽ dùng các câu lệnh đơn giản như ping, telnet, ftp tới các Honeypots kết quả của các lệnh này sẽ được snort ghi log lại và đưa ra các alerts. Hình 5.8: Kết thúc việc theo dõi phát hiện xâm nhập ___________________________________________________________________________ Honeypots 67 Hình 5.9: Thư mục chứa file log Hình 5.10: Nội dung của file alert.ids ___________________________________________________________________________ Honeypots 68 Hình 5.11: Log file thể hiện kết nối ftp Hình 5.12: Log file thể hiện kết nối telnet Tiếp tục với file demo1.rules có nội dung: alert tcp any any -> any 23 (msg: "Telnet Connection => Attempt";) alert tcp any any -> any any (msg: "ACK => scan detected"; flags: SA;) alert tcp any any -> any any (msg: "SYN => scan detected"; flags: SS;) alert tcp any any -> any any (msg: "NULL scan ???detected"; flags: 0;) alert tcp any any -> any any (msg: "O/S Fingerprint => detected"; flags: S12;) Chạy file này với lệnh: Snort –dve –i2 –l c:/snort/alert –c c:/snort/rules/demo1.rules –h 10.0.0.0/24 Sau khi chạy xong thì snort sẽ lắng nghe, tại máy client dùng Nmap để scan Nmap –sA 10.0.0.1, nmap –sS 10.0.0.1, quay lại máy chủ Honeyd dựng Honeypots theo dõi folder c:\snort\alert sẽ thấy file alert.ids trong đó có những cảnh báo và file log: ___________________________________________________________________________ Honeypots 69 Hình 5.13: Thư mục cảnh báo và chứa folder log Hình 5.14: File log thể hiện cho việc dùng nmap scan Hình 5.15: Nội dung file cảnh báo ___________________________________________________________________________ Honeypots 70 Các hình minh họa ở “Chương V” đã thể hiện đầy đủ một hệ thống mạng giả lập cùng với các dịch vụ, đồng thời cũng đưa ra được những cảnh báo nhằm phát hiện ra các xâm nhập. Kết thúc cho việc thực hiện nhiệm vụ trong đồ án này. ___________________________________________________________________________ Honeypots 71 Kết luận Sau quá trình nghiên cứu, tìm hiểu về Honeyd để thiết lập hệ thống Honeypots cùng với việc hiện thực em đã rút ra được một số nhận xét: Những kiến thức đạt được. Honeypots chính là một lựa chọn tốt cho việc bẫy hacker và tìm ra nhưng phương pháp tấn công cũng như bảo vệ hệ thống mạng thiệt cho doanh nghiệp cũng như các tổ chức. Việc tạo ra hệ thống mạng máy tính ảo cùng với các dịch vụ giả lập là một trong những phần quan trọng của Honeypots. Một số tính năng Honeyd cung cấp để thiết lập mạng Honeypots đã được hiện thực trong đồ án: + Giả lập các topology mạng phức tạp. + Giả lập các dịch vụ trên mạng đó thông qua scripts. + Cấu hình các thông số của mạng như độ trễ, tỉ lệ thất thoát và băng thông. + Hỗ trợ nhiều router đầu vào để phục vụ nhiều mạng. Thông qua việc demo đã cho thấy hệ thống Honeypots được tạo ra, dựng được các dịch vụ, quét được các dịch vụ, các port cũng như phát hiện cảnh báo các xâm nhập vào mạng. Cài đặt và sử dụng Honeyd. Honeypots được chia thành nhiều loại có những tool thì miễn phí cũng có những tool thì phải mua bằng tiền. Bù lại có một thuận lợi là cấu hình để setup hệ thống Honeypots yêu cầu cấu hình không cao và có thể chạy trên nhiều hệ điều hành khác nhau. Những mặt hạn chế. Việc chuyển đổi cài đặt hệ thống Honeypots thiết lập trên Linux sang Windows gây ra không ít khó khăn, đồng thời cũng không thể khai thác hết chức năng và hoạt động của Honeyd khi tạo ra Honeypots Trong phần nghiên cứu trên dừng lại ở Honeyd một dạng tương tác của Honeypots và thuộc tương tác thấp lên cũng chưa đáp ứng đầy đủ những chức năng và hiệu quả tốt nhất, cũng như việc tạo ra hệ thống thật để tương tác với tin tặc. ___________________________________________________________________________ Honeypots 72 Với những khó khăn nhất định về trang thiết bị, kiến thức thực tế cho nên việc thiết lập Honeypots dùng Honeynet chưa thành công. Hướng phát triển. Nghiên cứu mở rộng các hệ thống, công cụ khác cũng có chức năng nhiệm vụ giả lập mạng, theo dõi phát hiện xâm nhập và bảo vệ mạng. Triển khai Snort nhằm phát hiện xâm nhập cùng với Honeypots một cách hiệu quả nhằm nâng cao việc bảo vệ mạng. Tích cực đưa các hệ thống này áp dụng trên mô hình mạng của các doanh nghiệp và các tổ chức. Điểm mạnh của Honeypots chính là honeynet. Khác với các Honeypots, Honeynet là một hệ thống thật, hoàn toàn giống một mạng làm việc bình thường. Honeynet cung cấp các hệ thống, ứng dụng, các dịch vụ thật. Quan trọng nhất khi xây dựng một honeynet chính là honeywall. Honeywall là gateway ở giữa Honeypots và mạng bên ngoài. Nó hoạt động ở tầng 2 như là Bridged. Các luồng dữ liệu khi vào và ra từ Honeypots đều phải đi qua honeywall. Từ đề tài này có thể phát triển rộng hơn và cao hơn bằng việc thiết lập Honeypots dùng Honeynet kết hợp với việc sử dụng Snort cài đặt trên Linux. ___________________________________________________________________________ Honeypots 73 Tài liệu tham khảo + Tài liệu [1] Roger A.Grimes Apress Honeypots For Windows 2005 [2] Roshen Chandran, Sangita Pakala simulating_networks_with_honeyd [] Dec 14, 2003 Version: 0.5 [3] Addison Wesley Virtual Honeypots From Botnet Tracking to Intrusion Detection. July.2007 [4] Whitepaper InternetScanner_7.0_SP2_Asset_OS_Ident _033105 [5] Laura Chappell. Security Auditing with Nmap (Network Mapper). [6] Angela Orebaugh Becky Pinkard Nmap in the enterprise your guide to network scaning Jan.2008 [7] Kerry J. Cox Christopher Gerg Managing Security with Snort and IDS Tools O'Reilly August 2004 [8] Martin Roesch Chris Green Snort Users Manual Snort Release: 2.0.0 8th April 2003 + Website ___________________________________________________________________________

Các file đính kèm theo tài liệu này:

  • pdfGiả lập mạng với honeypot.pdf