You are on page 1of 73

Honeypots 1

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”.

___________________________________________________________________________
Honeypots 2

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.
I.1 Honeypots
Honeypots là một hệ thống tài nguyên thông tin được xây dựng với mục đích
giả lập đánh lừa những kẻ sử dụng và xâm nhập không hợp pháp, thu hút sự chú ý của
chúng, ngăn không cho chúng tiếp xúc với hệ thống thật.
- Trong lĩnh vực an toàn mạng, một Honeypots là một hệ thống máy tính được thiết kế
đặc biệt để “bắt” tất cả hoạt động và các file được khởi tạo bởi một thủ phạm có ý định
giành quyền truy cập trái phép tới hệ thống. Các Honeypots có thể mô phỏng giả lập

___________________________________________________________________________
Honeypots 3

- Honeypots như một mức bảo vệ firewall hơn là bảo vệ hệ thống mạng. Ví dụ, nếu
một firewall bảo vệ một mạng, thì Honeypots thường được đặt bên ngoài firewall.
Điều này cho phép các thủ phạm trên Internet nhận được quyền truy cập đầy đủ tới bất
kỳ dịch vụ vào của Honeypots. Lưu ý rằng, ý tưởng là ghi lại những hoạt động của thủ
phạm, chứ không phải ngăn chặn chúng khỏi việc giành quyền truy cập tới Honeypots.
- Một Honeypots là một hình nộm được thiết kế để quan sát những cuộc tấn công của
hacker. Một honeynet là một mạng được thiết lập xung quanh những hình nộm để lure
(nhử) và ghi lại những bước tấn công của hacker. Bằng việc nghiên cứu các cuộc tấn
công thật, những người nghiên cứu hy vọng có thể có được những bước tiến mới trong
việc phát triển kế hoạch phòng ngự. Mỗi khi Honeypots có sự tấn công thì người
nghiên cứu có thể học được những kỹ thuật tấn công mới và có thể dùng Honeypots để
tìm ra những rootkit (ẩn nấp và tránh không bị phát hiện, được sử dụng hỗ trợ giấu các
đoạn mã độc), lỗi và các backdoor (cổng sau, được hacker cài vào máy bị tấn công để
sau này quay lại máy đó dễ dàng hơn) trước khi chúng đi vào hệ thống.
Cần phải xây dựng hệ thống phòng ngự và phải có khả năng giấu và dodge (lẩn
tránh) những cuộc tấn công mà hệ thống không thể đáp trả lại. Đây là một vấn đề rất
quan trọng để nghiên cứu một cách an toàn về những máy tính ở những khoảng cách
xa. Thay thế vào việc đi tìm chúng thì chúng sẽ tự tìm đến.
Một hệ thống Honeypots bị tấn công khác chỉ ra rằng hành động đầu tiên của kẻ
tấn công đó là thay đổi password root, password admin của hệ thống (điều này làm cho
người quản trị hệ thống hoặc chủ hệ thống không thể đăng nhập vào). Không một kẻ
tấn công nào quan tâm đến việc kiểm tra sự hiện diện của Tripwire (một hệ thống kiểm
tra tính toàn vẹn của hệ thống), đây là hệ thống được mặc định trong Red Hat Linux và
được sử dụng như là một Honeypots. Một khi Tripwire chạy, tất cả những "hidden"

___________________________________________________________________________
Honeypots 4

Honeypots có sự khác biệt, giữa Honeypots nghiên cứu và Honeypots sản phẩm.
Những Honeypots nghiên cứu dựa trên những thông tin tình báo đạt được về kẻ tấn công
cũng như phương pháp, kỹ thuật của hacker. Trong khi đó, những sản phẩm
Honeypots có mục đích là làm giảm những nguy hiểm cho nguồn lực IT của công ty
và cung cấp những cảnh báo phát hiện cho các cuộc tấn công trên cơ sở hạ tầng mạng,
đồng thời đoán được và làm chệch hướng các cuộc tấn công khỏi hệ thống sản phẩm
trong môi trường giám sát của Honeypots.
Chúng được miêu tả như những mạng các hệ thống sản phẩm được kết nối tới
Internet (có thể không qua firewall). Hệ thống này là một hệ thống sản phẩm chuẩn với
những ứng dụng thực tế được sử dụng bởi các công ty trên mạng. Trong thực tế, nó
hoàn toàn có khả năng là một bản sao (clone) của hệ thống sản phẩm và được triển
khai thành Honeypots, những thông tin confidential (bí mật) được gỡ bỏ hoặc thay thế
bởi những thông tin tương tự nhưng không mang giá trị thực. Cũng có thể chạy một
Honeypots hoặc một honeynet tại nhà hoặc tại những công ty nhỏ. Trong thực tế, có
thể triển khai một phần mềm đơn giản như là Linux honey, như Niels Provos, là những
phần mềm có thể bắt chước những phản hồi của rất nhiều những dịch vụ đã biết. Trong
trường hợp này, có thể thu thập dữ liệu từ những cuộc tấn công bằng những worm tự
động và initial những bước tiếp theo của một cuộc tấn công bởi con người. Tuy nhiên,
illusion (ảo) là giới hạn và không phải bao giờ cũng đạt được một mức độ cao sau khi
những dữ liệu xuyên qua. Để có thể tiếp cận với những hành động xảy ra trong bóng
tối, cần phải có một honeynet: một thiết bị trực tiếp kết nối tới mạng, cái mà có thể bị
probe (dò tìm), bị tấn công. Chỉ cần vài máy tính, một kết nối tới mạng (thậm chí với một
IP động) và một số kiến thức về an toàn thông tin là sở hữu mạng để admit (nhận, nạp)
những hacker từ tất cả mọi nơi trên thế giới.
I.2 Nhiệm vụ của đồ án
Mỗi sinh viên cần làm một đồ án cuối khóa trước khi ra trường để củng cố thêm
kinh nghiệm nghiên cứu cũng như tổng hợp các kiến thức đã được học. Và đồ án của
em là nghiên cứu tìm hiểu về Honeypots. Các bước để nghiên cứu và thực hiện :

___________________________________________________________________________
Honeypots 5

+ Hiện thực hệ thống mạng ảo Honeypots.


+ Chứng minh hệ thống mạng đó tồn tại.
+ Scan port và các dịch vụ giả lập trên mạng đó.
+ Theo dõi và phát hiện ra xâm nhập.
Đó cũng chính là nhiệm vụ cần hoàn thành của đồ án này.
I.3 Cấu trúc đồ án
Tóm tắt đồ án được chia làm 5 chương:
Chương I: Tổng quan
- Giới thiệu về Honeypots.
- Nhiệm vụ và cấu trúc của đề tài.
Chương II: Honeypots
- Các loại hình Honeypots.
- Honeynet.
- Vị trí đặt hệ thống Honeypots.
Chương III: Giả lập mạng với Honeyd
- Cấu hình thiết lập Honeypots.
Chương IV: Hệ thống phát hiện xâm nhập
- Giới thiệu.
- Cấu hình cài đặt.
- Sử dụng.
Chương V: Mô phỏng hệ thống Honeypots
- Chi tiết file mô phỏng giả lập hệ thống Honeypots.
- Kết quả thực hiện.

___________________________________________________________________________
Honeypots 6

Chương II: Honeypots

II.1 Các loại hình Honeypots


Gồm hai loại chính: Tương tác thấp và tương tác cao
+ Tương tác thấp (Low Interaction): Mô phỏng giả lập các dịch vụ, ứng dụng, và hệ
điều hành. Mức độ rủi ro thấp, dễ triển khai và bảo dưỡng nhưng bị giới hạn về dịch vụ.
+ Tương tác cao (High Interaction): Là các dịch vụ, ứng dụng và hệ điều hành thực.
Mức độ thông tin thu thập được cao. Nhưng rủi ro cao và tốn thời gian để vận hành và
bảo dưỡng.
Low Interaction
+ BackOfficer Friendly

+ Specter

+ Honeyd

+ Honeynet

High Interaction

Hình 2.1: Loại hình Honeypots


II.1.1 BackOfficer Friendly (BOF)
Một loại hình Honeypots tương tác thấp rất dễ vận hành và cấu hình và có thể hoạt động
trên bất kỳ phiên bản nào của Windows và Unix nhưng chỉ tương tác được với một số
dịch vụ đơn giản như FTP, Telnet, SMTP…
II.1.2 Specter
Cũng là loại hình Honeypots tương tác thấp nhưng khả năng tương tác tốt hơn BOF,
giả lập trên 14 cổng, có thể cảnh báo và quản lý từ xa. Tuy nhiên giống BOF thì
specter bị giới hạn số dịch vụ và cũng không linh hoạt.
II.1.3 Honeyd
+ Honeyd lắng nghe trên tất cả các cổng TCP và UDP, những dịch vụ mô phỏng được
thiết kế với mục đích ngăn chặn và ghi lại những cuộc tấn công, tương tác với kẻ tấn
công với vai trò một hệ thống nạn nhân.
+ Honeyd có thể giả lập cùng một lúc nhiều hệ điều hành khác nhau.

___________________________________________________________________________
Honeypots 7

+ Hiện nay, Honeyd có nhiều phiên bản và có thể mô phỏng được khoảng 473 hệ điều
hành.
+ Honeyd là loại hình Honeypots tương tác thấp có nhiều ưu điểm tuy nhiên Honeyd
có nhược điểm là không thể cung cấp một hệ điều hành thật để tương tác với tin tặc và
không có cơ chế cảnh báo khi phát hiện hệ thống bị xâm nhập hay gặp nguy hiểm.
II.1.4 Honeynet

Hình 2.2: Mô hình honeynet (GenII)

___________________________________________________________________________
Honeypots 8

- Honeynet là hình thức Honeypots tương tác cao. 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.
Các chức năng của Honeynet
Bất kỳ một hệ thống Honeynet nào cũng phải thực hiện được ba điều kiện: Kiểm soát
dữ liệu, bắt dữ liệu và phân tích chúng.
- Kiểm soát dữ liệu
Có thể hiểu là mở cánh cửa cho hacker đi vào, cho phép xâm nhập honeynet nhưng lại
đóng cửa ra, ngăn không cho hacker phát tán những đoạn mã độc hại ra mạng làm việc
bên ngoài và Internet.

Hình 2.3: Kiểm soát dữ liệu


Honeynet GenIII sử dụng ba cách kiểm soát dữ liệu.
+ Đếm số kết nối từ honeynet ra ngoài: nếu lớn hơn mức cho phép thì sẽ cấm kết nối.
+ Sử dụng Snort-inline: đây là một phần mềm mã nguồn mở phát triển lên từ Snort
làm việc như một hệ thống ngăn chặn xâm nhập (IPS) dựa trên cơ sở dữ liệu về các
hình thức tấn công thu thập được từ trước để ra quyết định.
+ Kiểm soát băng thông.
- Bắt dữ liệu

___________________________________________________________________________
Honeypots 9

Đây là mục đích chính của tất cả các loại hình Honeynet - thu thập nhiều nhất thông
tin về kẻ tấn công theo nhiều mức: các hoạt động của mạng, các hoạt động ứng dụng,
các hoạt động của hệ thống.
Honeynet GenIII sử dụng Sebek để bắt dữ liệu. Đây là một kernel ẩn đặt tại các máy
Honeypots và server là honeywall gateway.

Hình 2.4: Hoạt động của Sebek


Khi mà kẻ tấn công xâm nhập vào hệ thống và tương tác với một Honeypots. Tất cả các
hoạt động của hacker này đều được bí mật chuyển về sebek server thu thập và xử lý.
- Phân tích dữ liệu
Phân tích dựa trên giao diện walleye của Honeywall hoặc bằng Ethereal.
II.2 Kế hoạch triển khai Honeypots
Để triển khai một Honeypots cần có một quá trình xử lý kỹ thuật tốt cùng với
việc thực hiện đúng kế hoạch sẽ giúp triển khai thành công hệ thống.
Danh sách dưới đây đưa ra các bước để thực hiện:
+ Xác nhận Honeypots là được cho phép tạo dựng trong môi trường hệ thống đó.
+ Xác định mục tiêu Honeypots. Tại sao lại muốn chạy một Honeypots.
+ Dùng nó để nghiên cứu hay là bảo vệ hệ thống tổ chức máy tính.
+ Xác định vai trò con người trong việc tạo ra và duy trì một Honeypots. Có chuyên
môn kỹ thuật để triển khai một cách chính xác và duy trì một Honeypots không? Có

___________________________________________________________________________
Honeypots 10

phần mềm và phần cứng để triển khai chưa? thời gian hàng ngày sẽ mất để duy trì và
phân tích dữ liệu như thế nào? Tiếp tục thảo luận, nghiên cứu để theo kịp những
Honeypots mới và khai thác một cách hiệu quả.
+ Các loại Honeypots sẽ triển khai là nghiên cứu hoặc sản phẩm, thực hay ảo.
+ Xác định cài đặt cấu hình thiết bị mạng cần thiết để tạo ra Honeypots. Kế hoạch và
cấu hình một số thành phần hỗ trợ Honeypots và tool (cảnh báo, đăng nhập, giám sát,
quản lý…).
+ Thu thập các thiết lập của việc giám sát, đăng nhập và các tool phân tích hợp pháp.
+ Triển khai kế hoạch phục hồi lại. Làm thế nào để phục hồi hệ thống Honeypots
nguyên bản sau khi nó được khai thác sử dụng dẫn tới việc bị hư hại.
+ Triển khai Honeypots và các thành phần hỗ trợ nó, kiểm tra việc triển khai, đánh giá
các công cụ phát hiện xâm nhập, thử nghiệm xem hệ thống Honeypots hoạt động tốt
không.
+ Phân tích các kết quả và tìm ra những thiếu sót. Tinh chỉnh các hệ thống Honeypots
dựa trên các bài đã được học và nghiên cứu. Lặp lại các bước cần thiết.
II.2.1 Lôi kéo người tấn công
Nếu để lộ ra Honeypots theo cách mà những địa chỉ IP và các port được truy
xuất tới từ Internet, thì nó sẽ được truy cập một cách nhanh chóng. Trung bình hàng
ngày các địa chỉ IP công khai trên Internet được thăm dò hàng chục lần. Theo số liệu
thống kê từ nhiều dự án của Honeypots cho thấy rằng có nhiều hơn một trăm lần thăm
dò một ngày, và hầu hết các máy chủ lưu trữ đều xảy ra tấn công trong vòng một tuần.
Các worm từ Internet sẽ quét nhiều lần trong ngày. Nhiều quản trị của Honeypots đã
ghi lại thành công những tổn hại xảy ra chưa đến 20 phút.
Chính vì những nguyên nhân đó một số quản trị viên của Honeypots đã nhanh
chóng và tích cực đăng vùng Honeypots của họ tới danh sách mail và website của
hacker. Những quản trị viên đăng các vị trí Honeypots của họ để khám phá một số tội
phạm nghiêm trọng. Thu thập các thông tin chứng cứ về những hành vi xâm nhập trái
phép. Việc tạo ra Honeypots không bao giờ nên quảng bá sự hiện diện hay mời gọi các
hacker vì nó sẽ đánh bại các mục đích chính của Honeypots.
II.2.2 Xác định mục tiêu

___________________________________________________________________________
Honeypots 11

Để thiết kế hệ thống Honeypots cần xác định các mục tiêu, muốn chọn nơi nào để đặt
Honeypots. Có rất nhiều câu hỏi cần được trả lời trước khi bắt đầu, bao gồm cả những
điều sau đây:
- Lý do chính muốn tạo ra hệ thống Honeypots?
- Môi trường OS là gì để giả lập Honeypots?
- Giả lập những lọai Server hoặc Service gì?
- Muốn theo dõi các mối đe dọa từ bên trong, bên ngoài hay cả 2?
Để có câu trả lời cho những câu hỏi này về cơ bản cần xác định là sẽ nghiên cứu hay
tạo ra các sản phẩm Honeypots, và làm như thế nào? cấu hình nó ra sao?.
Sản phẩm Honeypotss nên mô phỏng theo các ứng dụng, dịch vụ, và máy chủ đã tồn
tại. Nếu làm đúng với tương tác cao, nó sẽ gây khó khăn cho tin tặc trong việc nhận
biết và tương tác với Honeypots.
.

Hình 2.5: Ví dụ về một sản phẩm Honeynet


Ví dụ, giả sử hệ thống mạng bao gồm máy chủ chạy HĐH Windows Server 2003 chạy
IIS 6.0, Windows 2000 Server chạy Microsoft SQL Server 2000, Windows NT 4.0
Server, và một Windows 2000 Server chạy IIS 6.0. Sản phẩm honeypots sẽ cố gắng để
mô phỏng giống như những cái máy chủ và các dịch vụ ở trên
II.3 Vị trí đặt hệ thống Honeypots
Có 3 vùng chính để đặt hệ thống Honeypots:

___________________________________________________________________________
Honeypots 12

- External Placement (đặt ở vùng ngoài).


- Internal Placement (đặt ở vùng trong).
- DMZ Placement (đặt ở vùng DMZ)
Mỗi vùng để đặt Honeypots đều có những ưu điểm và nhược điểm tùy theo mục đích
của việc tạo ra Honeypots để làm gì.
II.3.1 Đặt ở vùng ngoài
Là vùng nằm ngoài Internet với vị trí này thì sẽ không có bức tường lửa nào
đứng trước Honeypots, các Honeypots và mạng lưới honepots sẽ chia sẻ cùng một địa
chỉ IP subnet công cộng.
II.3.2 Đặt ở vùng trong
Vị trí Honeypots nằm bên trong mạng và bức tường lửa ở giữa ngăn cách nó
với thế giới Internet. Vị trí này là cách tốt nhất để tạo ra một hệ thống cảnh báo sớm
cho biết bất kỳ sự khai thác từ bên ngoài vào và bảo vệ mạng nội bộ, bắt các đe dọa
xảy ra cùng một lúc. Một ví dụ cho thấy khi mà worm Blaster tấn công, nhiều công ty
đã triển khai firewall và cấu hình khóa port 135 ngăn chặn an toàn từ các worm nhưng
worm có thể lén đi qua firewall trên đường links và từ những máy tính laptop, thiết bị
di động. Sau khi đã qua bức tường lửa các worm có thể gây nhiễm các máy tính nội bộ
chưa được vá lỗi hệ điều hành và lỗi bảo mật.
II.3.3 Đặt ở vùng DMZ
DMZ là một vùng nằm riêng lẻ so với LAN nhằm mục đích đặt những server
public như web server, mail server, ftp server.
Việc đặt một Honeypots trên vùng DMZ thường là lựa chọn tốt nhất của các
công ty, nó có thể được đặt dọc theo các máy server trong vùng DMZ và cung cấp cảnh
báo sớm mối đẹ dọa cho vị trí đó. Một router đặt giữa firewall của DMZ được thêm vào
như là một lớp điều khiển dữ liệu. DMZ có thể có các địa chỉ IP công cộng và riêng tư.
Các vị trí của Honeypots trong DMZ là một vị trí lý tưởng cho việc thiết lập, nhưng
hầu hết các vị trí đặt mô hình đó là phức tạp. Ngoài ra, vì nó nằm trên DMZ, không
phải là tốt nhất cho việc cảnh báo sớm cho một cuộc tấn công làm hư hại mạng nội bộ.
So sánh giữa các vị trí đặt Honeypots.

___________________________________________________________________________
Honeypots 13

Vị trí Ưu điểm Nhược điểm


Điều khiển dữ liệu kém
Dễ xây dựng, triển khai
Vùng ngoài Rủi ro cao nhất cho các sản phẩm
Số lượng thiết bị cần thiết ít.
mạng Honeypots.
Tốt cho việc giám sát nhân
Cài đặt phức tạp hơn nhiều.
viên bên trong.
Vùng trong Cần phải quyết định cho phép các port/
Hệ thống cảnh báo sớm để
chuyển hướng trực tiếp.
bảo vệ backup.
Cài đặt phức tạp.
Hệ thống cảnh báo không được mạnh.
DMZ Có thể điều khiển dữ liệu tốt
Cần phải quyết định cho phép các port/
chuyển hướng trực tiếp.

___________________________________________________________________________
Honeypots 14

Chương 3: Giả lập mạng với Honeyd

Được phát triển và duy trì bởi Niels Provos, Honeyd là một chương trình nền
nhỏ nhưng có rất nhiều tính năng nổi trội. Honeyd giả lập các máy ảo trong một mạng
máy tính. Nó có thể giả lập một hệ điều hành bất kỳ, cho phép mô phỏng các dịch vụ
TCP/IP khác nhau như HTTP, SMTP, SSH.... Honeyd được sử dụng trong việc xây
dựng Honeynet, thiết lập các Honeypots để dụ hacker đột nhập vào hệ thống.
Một tính năng hữu ích của Honeyd là có khả năng giả lập một topology mạng
với đầy đủ các thông số như các bước mạng, tỉ lệ thất thoát, độ trễ khi truyền và băng
thông chỉ với duy nhất một máy chủ nằm trong mạng. Khả năng này cho phép giả lập
các mạng máy tính phức tạp để thí nghiệm, nó cũng đóng giả một mạng máy tính đối
với hacker bên ngoài mạng, bẫy hacker vào mạng Honeypots.
Một số tính năng Honeyd cung cấp để thiết lập mạng Honeypots:
+ Giả lập các topology mạng phức tạp.
+ 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.
+ Tích hợp các máy vật lý vào topology mạng.
+ Định tuyến bất đối xứng.
+ Đường hầm GRE để thiết lập các mạng phân tán.
Phần này sẽ hướng dẫn cách tạo các topology mạng, sử dụng Honeyd và các cấu hình
mẫu. Cung cấp cú pháp cấu hình lệnh và cách dùng các tập tin cấu hình. Tập trung vào
từng bước để xây dựng một mạng máy tính và xem xét kỹ các tập tin cấu hình.
Khung chương trình Honeyd thiết lập Honeypots:
CREATE <template name>
#ANNOTATE "<personality name>"
SET <template name> ETHERNET "<Ethernet name>"
SET <template name> PERSONALITY “<personality name>”
SET DEFAULT <template name> TCP ACTION <action>
SET DEFAULT <template name> UDP ACTION <action>
SET DEFAULT <template name> ICMP ACTION <action>

___________________________________________________________________________
Honeypots 15

ADD <template name> <protocol> PORT <number> <action>


ADD <template name> <protocol> PORT <number> "<script engine to call> <script file>"
SET <template name> UPTIME <seconds>
SET <template name> DROPRATE IN <%>
SET <template name> UID <number> GID <number>
BIND <IP address(es)> <template name>
Giải thích cho đoạn chương trình trên:
Create: Tạo ra template
#annotate: chú thích tên hệ điều hành
Chỉ ra Ethernet đặt cho template phục vụ việc kết nối ra bên ngoài.
Gán hệ điều hành cho template đã tạo ở trên.
Cài đặt các action cho protocol TCP, UDP, ICMP trong đó action có 3 loại:
Open – Mở toàn bộ số cổng có trên một protocol.
Block – Tất cả các packets của protocol được chỉ định là dropped, khi được
chỉ định honeypots sẽ không respond packet cho protocol, port.
Reset – Cho biết tất cả các port là đóng. Nếu 1 TCP port là đóng thì honeypot
ảo respond với 1 TCP RST tới 1 packet SYN cho port này. Nếu là
UDP port đóng thì honeypot ảo replies với 1 một thông báo ICMP
port-unreachable.
Thêm port kèm theo protocol cùng với action
Thêm script chạy các dịch vụ trên các port.
Thiết lập các biến system:
UPTIME thời gian hệ thống chạy bao lâu tính bằng giây.
DROPRATE IN tỷ lệ (%) rớt được chỉ định của packets gửi từ Honeyd để mô phỏng
một mạng bận rộn.
UID and GID định danh duy nhất và định danh trên toàn cầu của các máy tính ảo
(number).
Sau đây sẽ xây dựng một mạng vật lý bao gồm 4 máy tính để bàn cộng với một
hệ thống được dùng làm máy chủ Honeyd. Mạng ảo mà giả lập sẽ được đặt trên máy
chủ Honeyd. Honeyd làm việc trên nền Unix, rồi được chuyển sang Windows bởi
Michael Davis. Trong ví dụ này, sẽ dùng một máy Windows Server 2003 để làm máy

___________________________________________________________________________
Honeypots 16

chủ Honeyd. Mạng vật lý sử dụng dải địa chỉ 10.0.0.0/24, và máy chủ Honeyd được
gán cho địa chỉ IP 10.0.0.1 như hình 3.1.

Hình 3.1: Honeyd host


III.1 Các bước thiết lập 2 Honeypots
Đầu tiên xem qua cách thức thiết lập 2 mạng Honeypots trên máy chủ Honeyd.
Xây dựng 2 Honeypots sử dụng hệ điều hành Windows trên địa chỉ IP 10.0.0.51 và
10.0.0.52. Đường sọc màu xanh trong hình 2 chứa các Honeypots mà máy chủ Honeyd
tạo ra.
Trước khi cấu hình và chạy Honeyd, cần phải chắc rằng máy chủ Honeyd trả lời
các gói tin yêu cầu ARP (Address resolution packet - gói tin phân giải địa chỉ) cho các
IP của các Honeypots làm chủ.
Trước khi khởi động Honeyd, cần cung cấp cho Honeyd một tập tin cấu hình
(trong trường hợp này là tập tin lab1.config) chứa các thông tin giả lập 2 máy có hệ
điều hành Windows. Tập tin cấu hình sẽ có nội dung tương đối dễ hiểu như sau:

___________________________________________________________________________
Honeypots 17

#Windows computers
#annotate "Microsoft Windows 2003 Server SP1"

create window
set window ethernet "vmware"
set window personality "Microsoft Windows 2003 Server SP1"
set window default icmp action reset
set window default tcp action block
set window default udp action reset

add window tcp port 80 "perl scripts\iisemulator-0.95\iisemul8.pl"


add window tcp port 139 open
add window udp port 138 open
add window udp port 137 open
add window udp port 135 open

bind 10.0.0.51 window


bind 10.0.0.52 window
Các cấu hình trên tạo một mẫu tên là window và gắn 2 địa chỉ IP cho Honeypots
với mẫu đó. Mẫu trên yêu cầu Honeyd đóng giả hệ điều hành “Microsoft Windows
2003 Server SP1” khi một máy khách cố gắng xác minh Honeypots với nmap hoặc
Xprobe. Mở 5 port trên Honeypots: 80/tcp, 139/tcp, 137/udp, 138/udp và 135/udp.
Khi một máy kết nối tới cổng 80 của Honeypots, Honeypots sẽ thực thi “perl
scripts\iisemulator-0.95\iisemul8.pl” để giả lập IIS. Đối với các cổng được đóng,
Honeypots sẽ trả lời yêu cầu bằng một thông điệp RST trong trường hợp giao thức
TCP hoặc một thông điệp ICMP Port Unreachable trong trường hợp giao thức UDP.
Với tập tin cấu hình này, có thể chạy Honeyd từ cấu hình lệnh:
C:\winhoneyd\WinHoneyd_1.5c.exe -d -i 2 -f C:\winhoneyd\lab1.config 10.0.0.51
10.0.0.52
Tùy chọn –d là biến lựa chọn tốt nhất cho việc thực thi Honeyd tùy chọn này
hoạt động kín đáo trong nền sau, -i <interface> là tùy chọn chỉ ra interface mà

___________________________________________________________________________
Honeypots 18

honeyd lắng nghe và kết nối với mạng, -f <filename> thực thi file cấu hình. Để biết
được tất cả network interfaces dùng tùy chọn –N.

Từ thời điểm này, Honeyd bắt đầu lắng nghe và trả lời các gói tin đối với 2 hệ
thống ảo mà nó tạo ra tại địa chỉ 10.0.0.51 và 10.0.0.52. Máy chủ Honeyd vẫn có thể
được truy cập từ bên ngoài, nên cần phải bảo vệ địa chỉ IP của máy chủ Honeyd bằng
tường lửa cụ thể là phần mềm "Kerio WinRoute Firewall”.

___________________________________________________________________________
Honeypots 19

Hình 3.2: Thiết lập 2 Honeypots


III.2 Thiết lập một router trong mạng

Hình 3.3: Router trong mạng Honeypots

___________________________________________________________________________
Honeypots 20

Giả lập một mạng đơn giản với Honeyd sử dụng không gian địa chỉ 10.0.1.0/24
chứa 2 Honeypots được tách khỏi mạng LAN bởi một router Cisco (R1)
như hình 3.3.
Để giả lập mạng này, đầu tiên là tạo một router Cisco ở địa chỉ 10.0.0.100:
#Cisco router
create router
set router ethernet "vmware"
set router personality "Cisco 7200 router running IOS 12.1(14)E6"
set router default icmp action reset
set router default tcp action reset
set router default udp action reset

add router tcp port 23 "perl scripts\router-telnet.pl"


Cú pháp "route entry" được dùng để chỉ định cổng vào mạng ảo từ mạng LAN, ở đây
là Router R1:
route entry 10.0.0.100 network 10.0.0.0/24
cấu hình trên thông báo cho Honeyd biết rằng 10.0.0.100 là cổng vào mạng ảo
10.0.0.0/24 và cũng là địa chỉ của router. Như vậy là có thể có nhiều router đầu vào,
mỗi router phục vụ cho một phạm vi mạng khác nhau.
Mạng 10.0.1.0/24 có thể được truy cập thông qua router R1. Để chỉ định mạng nào có
thể được kết nối trực tiếp và không cần các bước mạng từ xa, cách dùng lệnh "route
link" như sau:
route 10.0.0.100 link 10.0.1.0/24
Địa chỉ IP đầu tiên được chỉ định ra ở trên là IP của router. Địa chỉ mạng được
chỉ định sau từ khoá "link" cho biết mạng nào có thể được truy cập trực tiếp. Nhiều
lệnh link có thể được dùng để gắn nhiều subnet trực tiếp đến một router. Router sẽ sử
dụng mẫu route mà đã thiết lập bằng lệnh.
bind 10.0.0.100 route
Hai Honeypots sử dụng mẫu winxp thiết lập ở trên sẽ được gắn với các địa chỉ IP
10.0.1.51 và 10.0.1.52:

___________________________________________________________________________
Honeypots 21

create winxp
set winxp ethernet "vmware"
set winxp personality "Microsoft Windows XP"
set winxp default icmp action reset
set winxp default tcp action block
set winxp default udp action open
add winxp tcp port 23 open
add winxp tcp port 80 open
bind 10.0.1.51 winxp
bind 10.0.1.52 winxp
Đến đây, việc cấu hình mạng đơn giản đã hoàn tất. Chạy lệnh trên máy Honeyd
và cung cấp cho nó tập tin cấu hình để mạng giả lập hoạt động.
III.3 Thiết lập một mạng với 2 router

Hình 3.4: Honeypots với 2 router

___________________________________________________________________________
Honeypots 22

Bây giờ hãy xem xét một trường hợp phức tạp hơn. Trong hình 3.4, thêm vào
một mạng khác ngăn cách với mạng ban đầu bởi router R2 với địa chỉ IP 10.0.1.100.
Mạng mới có địa chỉ trong dải 10.1.0.0/24 và chứa 2 Honeypots ở địa chỉ 10.1.0.51 và
10.1.0.52.
Đầu tiên thêm vào một cổng nối (R2) trong tập tin cấu hình. Bằng cấu hình
"route add net", có thể thêm vào mạng ảo một cổng nối. Áp dụng trong trường hợp này
có dạng sau:
route 10.0.0.100 add net 10.1.0.0/24 10.0.1.100
Cấu hình trên cho thấy Honeyd biết rằng 10.0.0.100 là IP của Router R1, được
chỉ định để kết nối tới mạng 10.1.0.0/24 thông qua cổng nối 10.0.1.100 (router R2).
Địa chỉ IP đầu tiên trên cấu hình lệnh là của R1, địa chỉ cuối là của cổng nối mới, và
dải địa chỉ được chỉ định là của mạng được truy cập thông qua cổng nối mới.
Sau khi thêm vào router R2, phải chỉ định địa chỉ IP nào có thể được kết nối
trực tiếp từ R2. Một lần nữa lại dùng lệnh "route link" để làm việc này. Trong mạng
của mình, mạng con 10.1.0.0/24 được truy cập trực tiếp từ R2, nên câu lệnh có dạng
sau:
route 10.0.1.100 link 10.1.0.0/24
Tiếp theo thêm vào 2 Honeypots bằng cách gắn địa chỉ IP của chúng với mẫu
Honeypots.
bind 10.1.0.51 window
bind 10.1.0.52 window
Tổng kết lại, có thể chỉ định một đường vào mạng ảo với lệnh "route entry
network". Để chỉ định các mạng có thể được truy cập trực tiếp từ một cổng nối, dùng
cấu hình lệnh "route link". Thêm một cổng nối mới để truy cập vào mạng con bằng
cấu hình "route add net". Đây là 3 cấu hình cơ bản để xây dựng topology mạng lớn với
Honeyd. Bằng cách sử dụng kết hợp các cấu hình này, có thể giả lập các mạng phức
tạp.
Bây giờ, sẽ mở rộng mạng thêm một mức nữa để nghiên cứu thêm các đặc tính
nổi trội khác của Honeyd.
III.4 Thiết lập độ trễ, thất thoát và băng thông

___________________________________________________________________________
Honeypots 23

Thêm vào một mạng thứ 3, bao gồm 2 Honeypots nằm cách R2 một hop như
hình 3.5.

Hình 3.5: Thiết lập độ trễ, thất thoát và băng thông


Thêm mạng này vào trong tập tin cấu hình:
route 10.0.1.100 add net 10.1.1.0/24 10.1.0.100 latency 50ms loss 0.1 bandwidth 1Mbps
route 10.1.0.100 link 10.1.1.0/24
bind 10.1.1.51 window
bind 10.1.1.52 window
Các cấu hình trên sẽ chỉ định địa chỉ IP 10.1.0.100 làm cổng nối truy cập vào
mạng 10.1.1.0/24, và triển khai 2 Honeypots ở địa chỉ 10.1.1.51 và 10.1.1.52. Cấu hình
"route add net" cũng thiết lập các tham số về độ trễ khi truyền, tổn thất và băng thông
của kết nối giữa router R2 và R3.
Trong thực tế, mỗi bước mạng gói tin đi qua sẽ thêm một khoảng thời gian trễ
truyền nhất định. Điều này có thể được giả lập thông qua từ khóa latency - độ trễ trên
mỗi bước mạng có thể được chỉ định ra bằng số mili giây truyền đi. Mạng máy tính

___________________________________________________________________________
Honeypots 24

trong thực tế cũng không giống như trong trường hợp lý tưởng khi truyền gói tin - một
số gói tin có thể bị thất thoát. Từ khóa loss được dùng để minh họa hành vi của các
liên kết trong mạng bằng cách chỉ ra tỉ lệ phần trăm (%) thất thoát. Honeyd cũng đưa
gói tin vào hàng đợi nếu một liên kết bị chiếm bởi một gói tin trước đó. Tùy thuộc vào
băng thông phục vụ cho liên kết, giá trị trễ có thể thay đổi. Băng thông của một liên
kết được chỉ định bằng Kpbs, Mbps hoặc Gbps với từ khoá bandwidth.
III.5 Tích hợp các máy vật lý vào topology mạng
Honeyd cũng hỗ trợ việc tích hợp các topology mạng ảo với các máy chủ vật lý
trên mạng. Giả sử muốn tích hợp vào mạng ảo một máy chủ nằm tại địa chỉ 10.1.1.53.
Máy chủ này được đặt trong mạng LAN chứa máy chủ Honeyd và các máy bàn khác,
nhưng muốn đặt một cách logic sau vài bước nhảy bên trong mạng ảo. Hình 3.6 mô tả
cấu trúc của mạng:
Dùng lệnh "bind" để gắn một máy chủ vật lý bên ngoài vào trong mạng. Cấu hình sẽ
như sau:
bind 10.1.1.53 to eth0
Cấu hình trên báo cho Honeyd biết rằng 10.1.1.53 có thể được kết nối thông qua giao
diện eth0; vì 10.1.1.53 nằm trong phần mạng sau router R3 (một cách logic), một gói
tin tới địa chỉ IP sẽ chạy qua R1, R2 và R3 trước khi đến 10.1.1.53. Để thấy điều này,
hãy lần theo đường định tuyến đến 10.1.1.53 từ máy bàn trên mạng LAN:
C:\>tracert 10.1.1.53
Tracing route to 10.1.1.53 over a maximum of 30 hops
1 * * * Request timed out.
2 <10 ms 10 ms 10 ms 10.0.1.100
3 10 ms 20 ms 20 ms 10.1.0.100
4 10 ms 20 ms 20 ms 10.1.1.53
Trace complete.

___________________________________________________________________________
Honeypots 25

Hình 3.6: Tích hợp các máy vật lý vào topology mạng
Máy 10.1.1.53 được kết nối thông qua 3 trạm trung gian ảo, mặc dù nó nằm trên cùng
mạng vật lý với các máy khác.
III.6 Thiết lập nhiều router đầu vào
route entry 10.0.0.200 network 10.2.0.0/24
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
bind 10.0.0.200 router
bind 10.2.0.100 router
bind 10.2.0.51 window
bind 10.2.0.52 window
bind 10.2.1.51 window
bind 10.2.1.52 window

___________________________________________________________________________
Honeypots 26

Honeyd cũng cho phép thiết lập nhiều đường vào mạng ảo. Ví dụ: hình 3.7
thêm vào một mạng mới được kết nối thông qua router R4 ở 10.0.0.200. Tạo một đầu
vào mới khá đơn giản: dùng lệnh "rounte entry" một lần nữa để định nghĩa router mới.
Phần còn lại của mạng có thể được xây dựng thông qua việc kết hợp "route add net"
với "route link". Đối với mạng này, có một cấu hình cho điểm vào thứ 2 và mạng đằng
sau nó:

Hình 3.7: Thiết lập nhiều router đầu vào

___________________________________________________________________________
Honeypots 27

Cấu hình "route entry" thêm vào một router mới R4 tại IP 10.0.0.200 phục vụ
cho mạng 10.2.0.0/24, route link chỉ định mạng 10.2.0.0/24 có thể được kết nối trực
tiếp thông qua router R4. Route add net sau đó thêm một cổng vào tại 10.2.0.100 phục
vụ cho mạng 10.2.1.0/24. Tiếp đó, route link chỉ thị rằng mạng 10.2.1.0/24 có thể được
kết nối trực tiếp từ router mới này. Gắn địa chỉ IP của router mới với mẫu router, và 4
địa chỉ honeyd với mẫu window.
III.7 Đường hầm GRE để thiết lập mạng phân tán

Hình 3.8: Đường hầm GRE để thiết lập mạng phân tán
Một tính năng nổi trội khác của Honeyd là khả năng truyền dữ liệu thông qua
đường hầm từ một mạng ảo trong máy chủ Honeyd tới các mạng khác từ xa để thiết
lập một mạng phân tán. Tính năng này được sử dụng để giả lập một mạng phân tán
thông qua máy chủ Honeyd hoặc dùng một máy chủ Honeyd để phục vụ nhiều mạng
phân tán. Trong phần sau, sẽ thiết lập máy chủ Honeyd đóng vai trò như một tập hợp
các Honeypots tương tác, một dạng site tập trung. Các thành phần tham gia có thể

___________________________________________________________________________
Honeypots 28

kiểm soát một phần của không gian địa chỉ IP bằng cách định tuyến tới không gian địa
chỉ đó thông qua một đường hầm tới máy chủ Honeyd. Hình 3.8 mô tả hệ thống mạng
này:
Để hiểu cách cấu hình đường hầm GRE (Generic Route Encapsulation), sẽ xem
xét một phiên bản đơn giản của mạng đã phát triển. Trong hình 3.8, mạng 10.3.1.0/24
được đặt xuyên qua WAN, có thể là xuyên qua mạng lưới quốc gia. Dùng tính năng
đường hầm GRE của Honeyd, có thể truyền dữ liệu từ router R7 tới router ảo R6 như
thể 2 router được kết nối trực tiếp với nhau. Đối với người dùng trên mạng xuyên quốc
gia, điều này có vẻ như mạng giả lập bên trong máy chủ Honeyd chỉ cách một trạm
truyền, khi lưu thông được thực hiện thông qua đường hầm qua liên kết ảo được thiết
lập giữa 2 router. Máy chủ Honeyd của ta có thể nhờ đó được sử dụng để phục vụ một
mạng ở xa.
Để cấu hình máy chủ Honeyd thiết lập đường hầm GRE như hình 3.8, phải
thêm R6 - router có giao diện bên ngoài là 172.20.254.1 như một router ảo có thể triển
khai đường hầm. R6 là một router vào mới cho phép lưu thông tới mạng 10.3.2.0/24.
Khi nó không cần thiết phải triển khai router cho việc truyền dữ liệu thông qua đường
hầm, sẽ dễ hiểu cấu hình cho router ảo:
route entry 172.20.254.1 network 10.3.2.0/24
Sau đó mô tả mạng 10.3.2.0/24 được kết nối trực tiếp từ router trên với lệnh "route link"
route 172.20.254.1 link 10.3.2.0/24
Để thiết lập đường hầm, dùng cấu trúc "route add net tunnel". Đầu cuối thứ
nhất của đường hầm là địa chỉ IP bên ngoài của Router R6, vd 172.20.254.1. Địa chỉ
IP vật lý của router ở xa 172.30.254.1 sẽ là đầu cuối thứ 2 của đường hầm. Trong tập tin
cấu hình, sẽ chỉ định router ảo và mạng ở xa mà sẽ dùng đường hầm để kết nối, như sau:
route 172.20.254.1 add net 10.3.1.0/24 tunnel 172.20.254.1 172.30.254.1
Chú ý là router R7 xuyên qua WAN phải được cấu hình để làm đầu cuối cho đường
hầm GRE từ router ảo và định tuyến các gói tin đến đích.
Đến đây, mọi lưu thông từ mạng 10.3.1.0/24 tới các Honeypots cung cấp bởi
Honeyd sẽ được thực hiện thông qua đường hầm GRE giữa router R6 và R7. Với chức

___________________________________________________________________________
Honeypots 29

năng này, có thể có một mạng phân tán và tạo một topology mạng ảo xuyên qua chúng
để che dấu đi mạng vật lý khỏi các cuộc tấn công từ bên ngoài.
Một số Operating System:
Cisco 1601 router running IOS 12.0(8)
Cisco 1601R router running IOS 12.1(5)
Cisco 2611 router running IOS 12.2(7a)
Cisco 2620 running IOS 12.2(19a)
Cisco 3600 router running IOS 12.2(6c)
Cisco 4000 Series running IOS 12.0(10.3)
Cisco 5200 router running IOS v12.0(15)
Cisco 7200 router running IOS 12.1(14)E6
Cisco 7204 router running IOS 12.1(19)
Cisco 7206 router running IOS Version 12.2(13)T8
Cisco 837 router running IOS 12.3(11)T
Cisco IOS 12.0(21) (On a 2514 router)
Cisco IOS 12.0(3.3)S (perhaps a 7200 router)
Cisco IOS 12.0(5)WC3 - 12.0(16a)
Cisco IOS 12.0(7)T (on a 1700 router)
Cisco IOS 12.1(4) on a 2600 router
Cisco IOS 12.2(8)T5 on a 7507 router
Linux 2.4.20 (Itanium)
Linux 2.4.20 (Red Hat)
Linux 2.4.20 (X86, Redhat 7.3)
Linux 2.4.20 - 2.4.22 w/grsecurity.org patch
Linux 2.4.20 x86
Linux 2.4.20-ac2
Linux 2.4.21 (Suse, X86)
Linux 2.4.21 (x86)
Linux 2.4.21 (x86, RedHat)
Microsoft Windows Server 2003
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 or XP SP2
Microsoft Windows Server 2003 Standard Edition
Microsoft Windows XP Home Edition
Microsoft Windows XP Home Edition (German) SP1
Microsoft Windows XP Home SP1
Microsoft Windows XP Pro
Microsoft Windows XP Pro (German)
Microsoft Windows XP Pro (German) SP1

___________________________________________________________________________
Honeypots 30

Chương IV: Hệ thống phát hiện xâm nhập

IV.1 Giới thiệu


Intrusion Detection là thiết bị bảo mật vô cùng quan trọng. Intrusion Detection
Systems (IDS) là giải pháp bảo mật được bổ sung cho Firewalls (hình dưới đây thể hiện
điều đó). Một IDS có khả năng phát hiện ra các đoạn mã độc hại hoạt động trong hệ thống
mạng và có khả năng vượt qua được Firewall.
Có hai dạng chính của IDS đó là: Network Based và Host Based

Hình 4.1: Network Based và Host Based


Network Based
Một Network-Based IDS sẽ kiểm tra các giao tiếp trên mạng với thời gian thực
(real-time). Nó kiểm tra các giao tiếp, quét header của các gói tin, và có thể kiểm tra
nội dung của các gói đó để phát hiện ra các đoạn mã nguy hiểm hay các dạng tấn công
khác nhau. Một Network-Based IDS hoạt động tin cậy trong việc kiểm tra, phát hiện
các dạng tấn công trên mạng, ví dụ như dựa vào băng thông (bandwidth-based) của tấn
công Denied of Service (DoS).

___________________________________________________________________________
Honeypots 31

Host Based
Một Host-Based IDS chỉ làm nhiệm vụ giám sát và ghi lại log cho một máy chủ
(host-system). Đây là dạng IDS với giới hạn chỉ giám sát và ghi lại toàn bộ những khả
năng của host-system (nó bao gồm cả hệ điều hành và các ứng dụng cũng như toàn bộ
service của máy chủ đó). Host-Based IDS có khả năng phát hiện các vấn đề nếu các
thông tin về máy chủ đó được giám sát và ghi lại. Là thiết bị bảo mật cho phát hiện các
tấn công trực tiếp tới một máy chủ.
Active Detection and Passive Detection
IDS là một hệ thống tự động giám sát trong thời gian thực (Network-Based IDS) hay
xem sét lại các thiết lập giám sát (audit log) nhằm phát hiện ra các lỗi bảo mật và các tấn
công trực tiếp tới hệ thống mạng hay tới một máy chủ. Có hai phương thức cơ bản để IDS
phát hiện ra các tấn công hay các nguy cơ bảo mật là: Signature Detection và Anomaly
Detection. Signature Detection sẽ so sánh các tình huống thực tế với các dạng tấn công
(signatures) được lưu trữ trong dữ liệu của IDS. Anomaly Detection sẽ hoạt động tùy thuộc
vào môi trường và có thể phát hiện ra những biến cố bất thường. Anomaly-detection dựa
vào những hoạt động bình thường của hệ thống để tự động phát hiện ra những điều không
bình thường và phân tích xem đó là dạng tấn công nào.
Một IDS active detection: phát hiện và trả lời được thiết kế để có hành động nhanh
nhất nhằm giảm thiểu các nguy hiểm có thể xảy ra với hệ thống. Việc trả lời có thể như tắt
máy chủ hay tắt các dịch vụ, ngắt các kết nối.
Một IDS với passive detection sẽ trả lời nhưng không có các hành động trực tiếp
chống lại các tấn công. Nó có thể ghi lại log của toàn bộ hệ thống và cảnh báo cho người
quản trị hệ thống. IDS là thiết bị phát hiện tấn công DoS rất tốt; phát hiện các bugs (lỗi hệ
thống), flaws (lỗ hổng, khiếm khuyết) hoặc các tính năng ẩn, và quét ports. Nhưng nó
không có khả năng phát hiện các tấn công dựa trên các email chứa các đoạn mã nguy
hiểm.

___________________________________________________________________________
Honeypots 32

Các thành phần của IDS hoạt động để giám sát mạng.

Hình 4.2: Các thành phần của IDS hoạt động để giám sát mạng
Hình dưới đây IDS yêu cầu Firewall chặn port 80 trong 60 giây để chống lại các tấn
công vào máy chủ Web cài IIS.

___________________________________________________________________________
Honeypots 33

Hình 4.3: IDS yêu cầu Firewall chặn port 80


Có hai yêu cầu chính khi triển khai một IDS đó là chi phí cùng với khả năng
đáp ứng linh họat của nó trước sự phát triển nhanh chóng của công nghệ thông tin và
SNORT có thể đáp ứng rất tốt cả hai yêu cầu này. Đó là một phần mềm mà có thể tải
về và sử dụng miễn phí, cho nên yếu tố về chi phí hoàn toàn có thể yên tâm. Ngoài ra
SNORT còn là một sản phẩm mã nguồn mở và có một cộng đồng phát triển đông đảo
được quản lí chặt chẽ cho nên khi có những dạng xâm nhập mới được phát hiện thì
ngay lập 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: <interface name>
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: <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: <id>
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: <log|alert>, <database type>, <parameter list>
<log|alert>
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.
< database type>
Đâ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=<database name>
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ỉ: http://nmap.org/download.html
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:
http://www.stsi.com.vn/ dùng câu lệnh: nmap –sX –O
http://www.stsi.com.vn/.
- 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 http://www.stsi.com.vn/ 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 http://www.stsi.com.vn/
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
[http://www.paladion.net] 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
http://www.honeypots.net/honeypots/projects
http://www.honeypots.net/honeypots/products
http://www.honeynet.org
http://www.projecthoneypot.org
http://www.snort.org/.

___________________________________________________________________________

You might also like