Đồ án Tìm hiểu và xây dựng hệ thống phát hiện xâm nhập trên mạng IP

• Hàm GetFrameHeader(thearray() As Byte, StartOfNextProto As Long) As FrameHeader: Hàm này dùng để lấy về header của frame dữ liệu. Tham số đưa vào là dòng dữ liệu dạng byte(mảng byte mà hàmGetRawPacketData trả về). StartOfNextProto cho biết vị trí bắt đầu của gói tin Ethernet trong dòng dữ liệu. Hàm này trả về cấu trúc FrameHeader. • Hàm GetEtherNetHeader(thearray() As Byte, StartOfThisProto As Long, StartOfNextProto As Long) As EtherNetHeader: Hàm này đưa dòng dữ liệu vào để lấy ra header của gói tin Ethernet. Tương tự, StartOfThisProto cho biết vị trí bắt đầu của gói tin Ethernet, còn StartOfNextProto cho biết vị trí bắt đầu của Header của gói tin IP. Hàm này trả về cấu trúc EtherNetHeader. • Hàm GetIpV4Proto(thearray() As Byte, startofIPProto As Long, StartOfNextProto As Long) As IPv4Header. Hàm này đưa dòng dữ liệu vào, vị trí bắt đầu của Header của gói IP. Kết quả trả về là một cấu trúc kiểu Ipv4Header và vị trí bắt đầu của Header gói tin lớp trên lớp IP. • Hàm GetTCPHeader(thearray() As Byte, startofTCPProto As Long) As TCPHeader. Cũng tương tự. Nhận đầu vào là dòng dữ liệu, vị trí bắt đầu của gói tin TCP và kết quả trả về là một cấu trúc kiểu TCPHeader. • Một số hàm nhỏ khác là các hàm để xử lý chuõi nhị phân để đưa ra dạng thích hợp cho hiển thị kết quả như GetIpFromLong(lngIPAddress As Long) As String, BytestoHexString(thearray() As Byte, startPos As Long, numbytes As Long) As String.

doc76 trang | Chia sẻ: aloso | Lượt xem: 1736 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đồ án Tìm hiểu và xây dựng hệ thống phát hiện xâm nhập trên mạng IP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thực hiện tiếp các hành động hoặc thông báo cho nhà quản trị mạng để có thể đưa ra các hành động thích hợp nhằm ngăn chặn việc tấn công này. Việc đưa ra các hành động phản ứng lại các hành động của kẻ tấn công sẽ làm cho họ nhận thức được mức độ nguy hiểm của hành động của mình và nản lòng. 2.3. Tăng độ mạo hiểm cho kẻ tấn công. Một quy tắc cơ bản của chính sách an ninh hệ thống là tác động đến các hành vi của các người dùng cá nhân theo cách mà để bảo vệ thông tin hệ thống khỏi các vấn đề an ninh. IDS sẽ giúp các tổ chức hoàn thành được mục tiêu này băng việc tăng nguy cơ bị phát hiện của kẻ tấn công. Việc này có tác dụng ngăn chặn những người có ý định thực hiện các hành vi không được phép. Giúp cho việc thiết kế bảo mật và quản trị có chất lượng Khi IDS đã được vận hành trong một khoảng thời gian thì những hành vi được coi là bình thường của hệ thống sẽ được ghi lại và khi có những hành vi khác thường thì chúng sẽ dễ dàng bị phát hiện. Nó có thể giúp nhận ra các thiếu xót trong việc thiết kế bảo mật, hoặc trong các chính sách về an ninh của hệ thống. Việc sửa chữa những thiếu xót trong thiết kế có thể ngăn chặn những nguy hại bất ngờ, không lường trước được. 2.5. Cung cấp các thông tin hiệu quả về sự xâm nhập Mặc dù khi Hệ thống IDS có thể không trực tiếp ngăn chặn hành vi xam phạm nhưngnó vẫn có thể thu thập những thông tin liên quan chi tiết có ích về các hành vi xâm nhập giúp cho việc khoanh vùng sự xâm nhập nhằm cải thiện việc gỡ rối ,khôi phục và sửa chữa. 2.6. Lập tài liệu về các nguy cơ có thể xảy ra với hệ thống Sử dụng hệ thống IDS có thể giúp cho ta chứng minh được rằng là mạng đang bị tấn công hay thực ra là đã bị tấn công. Biết được tần xuất và đặc điểm của các cuộc tấn công có thể giúp bạn hiểu được với mức độ an ninh nào thì là phù hợp cho việc bảo vệ hệ thống của mình. IDS có thể kiểm tra ghi lại và phân tích các nguy cơ từ cả bên ngoài và bên trong hệ thống mạng của tổ chức. Việc này giúp bạn đưa ra những quyết định sáng suốt chú ý tới việc sắp đặt các tài nguyên an ninh máy tính. Sử dụng IDS theo cách này là rất quan trọng, nhiều người đã sai lầm là bất cứ ai (bên trong hoặc ben ngoài hệ thống) cũng có hứng thú với việc đột nhập vào hệ thống mạng của họ. Những thông tin do IDS cung cấp về nguòn gốc và loại tấn công sẽ giúp bạn có những quyết định đúng trong việc vạch ra những kế hoạch về các chính sách an ninh có sự chứng minh rõ ràng chứ không chỉ lả suy đoán. Phân loại các hệ thống IDS chính Hiện nay có rất nhiều loại IDS, chúng được phân loại theo các tiêu chí khác nhau về việc giám sát, phân tích. Mỗi cách phân loại đều có những ưu điểm và nhược điểm. Một số cách phân loại chính như theo Nguồn gốc thông tin. Cách phân tích. Hành vi phản ứng. Ở đây em xin trình bày theo cách phân loại về nguồn gốc thông tin. Có nhiều nguồn thông tin sự kiện khác nhau để nhằm xác định sự xâm nhập. Một vài hệ thống IDS phân tích các gói tin trong mạng mà nó bắt được từ đường trục chính của mạng(BackBone) hoặc các phân đoạn mạng(Segment network) trong nối mạng để tìm ra các kẻ tấn công. Một số hệ thống IDS khác thì lại dựa trên các thông tin sinh ra bởi hệ điều hành hoặc các ứng dụng để tìm ra các dấu hiệu của việc xâm nhập. 3.1. Network Based IDS (NIDS ) Theo cách này thì các thông tin hệ thống dùng để làm viêc là dựa vào các thông tin trên mạng. Hệ thống phát hiện ra các cuộc tấn công bằng cách bắt các gói tin trên mạng hoặc các phân đoạn mạng rồi phân tích. để tìm ra các dấu hiệu của các cuộc tấn công. Hệ thống NIDS thường bao gồm một tập các bộ cảm biến đơn nhiệm hoặc các máy trạm được đặt tại nhiều điểm khác nhau trên mạng. Chúng sẽ giám sát giao thông trên mạng, thực hiện phân tích cục bộ các giao thông đó và báo cáo về một đơn vị quản trị trung tâm nếu có những dấu hiệu của một cuộc tấn công. Khi các bộ cảm biến này bị giới hạn để chạy IDS thì nó cũng rất dễ dàng bảo vệ chống lại các cuộc tấn công. Rất nhiều bộ cảm biến này được thiết kế để hoạt động tại chế độ ản (Stealth mode) điều này làm cho kẻ tấn công khó nhận ra được sự hiện diện của các thiết bị này. 3.1.1. Ưu điểm của hệ thống NIDS Chỉ cần một vài vị trí đặt các bộ cảm ứng tốt thì có thể giám sát toàn bộ cả hệ thống mạng lớn. Việc thiết lâp một hệ thống NIDS ít gây ra ảnh hưởng với mạng đang tồn tại. Chúng thường là các thiết bị thụ động chỉ lắng nghe trên mạng thoi chứ không ảnh hưởng đến các hoạt động bình thường của mạng. Thêm nữa nó lại rất dễ dàng trong việc trang bị cho hệ thống an ninh của một mạng máy tính. NIDS có thể chống lại các cuộc tấn công một cách có hiệu quả trong khi nó lại rất khó bị phát hiện của các kẻ tấn công. 3.1.2. Nhược điểm của hệ thống NIDS Nó có thể gặp khó khăn trong việc phân tích toàn bộ các gói tin trong một hệ thống mạng lớn hoặc mạng đang trong giờ cao điểm. Do đó nó có hể nhận lầm cá dấu hiệu của một cuộc tấn công trnog suốt khoảng thời gian mà lưu lượng sử dụng mạng tăng cao. Một vài nhà sản suất đã cố gắng khắc phục điều này bằng cách xây dựng các thiết bị NIDS bằng phần cứng giúp chúng có thể chạy nhanh hơn rất nhiều. Sự cần thiế của việc phân tích nhanh buộc các nhà sản suất phải đáp ứng được yêu cầu là phân tích nhanh nhưng lại tốn ít tài nguyên của hệ thống đến thấp nhất có thể. Hầu hết các ưu điểm của NIDS lại không thể áp dụng vào mô hình mạng dựa trên các chuyển mạch( Switch based network). Các Switch chi các mạng ra thành các phân đoạn mạng nhỏ hơn và nó cung cấp các đường kết nối dành sẵn cho các trạm mà nó phục vụ. Hầu hết các Switch đều không cung cấp cổng đểgiám sát mọi cổng( các gói tin từ các cổng khác đều được gửi đến cổng này). Điều này làm giảm khoảng giám sát của các bộ cảm biến đến các máy trạm riêng biệt. Ngay cả khi các Switch có cá cổng phục vị cho việc giám sát thì chúng cũng không thể được cung cấp hết toàn bộ giao thông lưu chuyển qua Switch đó. NIDS không thể phân tích các thông tin đã bị mã hoá. Vấn đề này sẽ trở nên nghiêm trọng hơn rong các tổ chức sử dụng mạng riêng ảo (VPN- Virtual Private Network). Hầu hết các NIDS đều không thể nói chính xác một cuộc tấn công đã được tiến hành thành công hay chưa. Nó chỉ có thể nhận ra một cuộc tấn công đã được bắt đầu. Điều này có nghĩa là sau khi hệ thống NODS phát hiện ra cuộc tấn công thì nhà quản trị phải tự mình kiểm tra xem các máy trạm đã bị tấn công để xác định rằng thực tế nó đã bị thâm nhập chưa. Một vài hệ thống NIDS có vấn đề với các cuộc tấn công vào mạng sử dụng các gói tin phân đoạn. Những gói tin kiểu này sẽ làm cho hệ thống NIDS bị vô hiệu. 3.2. Host based IDS (HIDS) HIDS hoạt động dựa trên các thông tin sưu tập được tại một máy tính cá nhân. Điểm lợi thế này cho phép hệ thống HIDS phân tích các hoạt động một cách chính xác và tin cậy hơn. Xác định chính xác tiến trình nào, người dùng nào được triệu gọi trong một cuộc tấn công trên hệ điều hành. Hơn nữa không giõng như hệ thống NIDS HIDS có thể nhìn thấy các hậu quả của việc thử tấn công. Vì nó có thể trực tiếp truy cập và giám sát hệ thống file và các tiến trình hệ thống- đây là một trong các mục tiêu thường bị tấn công. HIDS thường tận dùng các thông tin từ hai nguồn là vết kiểm định các hoạt động của hệ điều hành( Operating system audit trail) và các lưu ghi chú của hệ thống(System log). Operating system audit trail được sinh ra tại phần trong cùng của hệ điều hành nên nó chi tiết và an toàn hơn system log. Tất nhiên System log sẽ ít chi tiết hơn,nhỏ hơn. Một vài hệ thống HIDS được thiết kế để hỗ trợ quản trị IDS tập trung, Nó có thể cho phép một trạm quản trị giám sát nhiều máy trạm. Các thông tin đựợc sinh ra có định dạng phù hợp với hệ thống quản trị mạng. 3.2.1. Ưu điểm của hệ thống HIDS Nó có khả năng giám sát các sự kiện cục bộ trên một máy trạm và có thể phát hiện ra những cuộc tấn công mà hệ thống NIDS không thể phát hiện ra. Nó có thể hoạt động tốt trên môi trường mà các thông tin trên mạng được mã hoá vì những thông tin nó thu thập được là trước khi thông tin đó được mã hoá và truyền đi tại nguồn, và sau khi thông tinđã đựoc giải mã tại đích. HIDS không bị ảnh hưởng khi mô hình mạng là mạng chuyển mạch(Switch network). Khi HIDS hoạt động trên các thông tin ghi lại của hệ điều hành thì nó có thể giúp phát hiện ra những Trojan Horse hoặc những cuộc tấn công dùng những phần mềm vi phạm tính nguyên vẹn (intergrity breaches ). Nó sẽ xuất hiện như là các tiến trình mâu thuẫn(inconsistencies process). 3.2.2. Nhược điểm của Hệ thống HIDS Nó khó quản lý và các thông tin cấu hình phải được cấu hình trên mọi máy trạm được giám sát. Do nguồn thông tin là ít nhất lại nằm trên máy trạmcanf bảo vệ. Hệ thống HIDS có thể bị tấn công và vô hiệu hoá. HIDS không phù hợp trong việc chống lại cá cuộc tấn công dựa trên việc quét mạng(network scans) vì nó chỉ nhận và phân tích các gói tin mà đựoc máy trạm đó nhận. HIDS có thể bị vô hiệu hoá bằng những cuộc tấn công từ chối dịch vụ( Deny of service -DOS) Khi HIDS sử dụng nguồn thông tin từ các vết kiểm định của hệ điều hành thì lượng thông tin sử dụng có thể rất lớn yêu cầu phải thêm việc lưu trữ cục bộ trong hệ thống. HIDS cũng sử dụng các tài nguyên của chính máy trạm mà nó giám sát nên hiệu năng của máy trạm đó cũng phải giảm đi là điều không tránh khỏi. 3.3. Application Based IDS (AIDS) AIDS là một tập con đặc biệt các HIDS, nó phân tích các thông tin, sự kiện được cung cấp bởi các phần mềm ứng dụng. Hầu hết các thông tin này đều được lấy từ các bản ghi các giao dịch của các phần mềm ứng dụng(application’s transaction log files). Khả năng ghép nối(Interface) trực tiếp với các ứng dụng, với phạm vi hiệu quả,hoặc hiểu biết sâu về ứng dụng đựoc bao gồm trong bộ máy phân tích. Cho phép AIDS có thể phát hiện được các hành vi khả nghi mà những người sử dụng dùng để vượi quá quyền hạn của mình bởi vì các vấn đề như vậy thường xuất hiện dưới dạng những tương tác giữa người dùng dữ liệu và ứng dụng. 3.3.1. Ưu điểm của hệ thống AIDS Hệ thống AIDS có thể giám sát những tương tác giữa người dùng, dữ liệu và ứng dụng nên cho phép nó có thể lần ra những dấu vết của những hành động bất hợp pháp. Hệ thống này có thể làm việc trong môi trường có sự mã hoá vì nó làm việc với các ứng dụng tại thời điểm các thông tin đã được giải mã. 3.3.2. Nhược điểm của hệ thống AIDS Nó có thể dễ dàng bị tấn công hơn là hệ thống HIDS vì các thông tin được ghi lại bởi các ứng dụng (application log) không được bảo vệ tốt như các thông tin được ghi lại của hệ thống(System log). Do hệ thống AIDS thường giám sát những sự kiện tại cấp độ người sử dụng một cách trừu tượng nên không thể phát hiện ra những vius như Trojan do đó nên sử dụng AIDS kết hợp với HIDS hoặc NIDS. 3.4. Sử dụng kết hợp HIDS và NIDS Hai kiểu hệ thống phát hiện xâm nhập khác một cách đáng kể, nhưng có sự bổ sung lẫn cho nhau rất tốt. Kiến trúc mạng host-based là agent-based có nghĩa rằng một agent nằm trên mỗi host sẽ được điều khiển bởi hệ thống. Ngoài ra, những hệ thống phát hiện xâm nhập host-based hiệu quả hơn có khả năng giám sát và thu thập thông tin trong thời gian thực theo kế hoạch định trước, như vậy phân phối cả sự sử dụng CPU lẫn cung cấp một phương tiện linh hoạt cho quản trị. Khi sử dụng IDS thích hợp, tích hợp hoàn toàn hệ thống phát hiện xâm nhập mạng sẽ rất ích lợi, như là lọc những báo động và những thông báo theo cách đồng nhất đến phần host-based của hệ thống, kiểm soát từ cùng vị trí trung tâm. Làm như vậy cung cấp một phương tiện hữu hiệu để quản lí và phản ứng lại tới sự dùng sai cả hai kiểu sự dò tìm xâm nhập. Khi một tổ chức đưa một IDS vào trong mạng để làm tăng chiến lược an toàn thông tin hiện thời, điểm đầu tiên nhắm vào của hệ thống phát hiện xâm nhập cần phải là host-based. Mặc dầu vấn đề phát hiện xâm nhập mạng có những giá trị của nó và chắc chắn phải được hợp nhất vào trong một giải pháp IDS thích hợp, nó đã được phát triển để tuân theo với công nghệ truyền thông dữ liệu đang gia tăng. Đa số các NIDS thực hiện rất tồi, trên những mạng chuyển mạch, những mạng nhanh với những tốc độ trên 100 Mbps, và những mạng mã hóa. Hơn nữa, trong phạm vi 80-85 phần trăm vấn đề an ninh bắt nguồn từ bên trong tổ chức. Vậy thì, những hệ thống phát hiện xâm nhập cần phải tin cậy chiếm ưu thế trên host-based, nhưng cần phải luôn luôn sử dụng NIDS để hoàn thiện sự phòng thủ. Một cách ngắn gọn, một môi trường an toàn thực sự yêu cầu cả một mạng sử dụng NIDS lẫn sự sử dụng HIDS để cung cấp cho một hệ thống mà là cơ sở cho tất cả bộ kiểm tra, đáp lại, và phát hiện sự dùng sai máy tính. Các kỹ thuật phân tích của các hệ thống IDS Có hai kỹ thuật chính khi phân tích các sự kiện để phát hiện ra những cuộc tấn công. Đó là phát hiện sự lạm dụng(Misuse detection) và phát hiện sự bất thường(Anomaly Detection). Với phát hiện sự lạm dụng thì mục tiêu phân tích là những điều mà cho là không tốt, đây là những kỹ thuật thường được dùng trong các sản phẩm thương mại. Với phát hiện sự bất thường thì lại tìm kiếm những hành động bất thường theo mẫu. Với mỗi sự tiếp cận thì lại có những ưu điểm và nhược điểm riêng. 2.1. Phát hiện sự lạm dụng(Misuse detection) Theo cách này thì chương trình sẽ phân tích hành động của hệ thống, tìm kiếm những hành động hoặc tập những hành động theo những mẫu hành động đã đượcc định nghĩa trước. Những hành động mẫu này đều đại diện cho những kiểu tấn công đã được biết trước. Những mẫu tương ứng với kiểu tấn công đã được biết trước thì gọi là những dấu hiệu(Signature), do đó đôi khi phát hiện sự lạm dụng còn được gọi là phát hiện dựa trên những dấu hiệu (Signature based Detection). Hầu hết các sản phẩm thương mại đều sử dụng phương pháp này. Và mỗi mẫu sự kiện tương ứng với một kiểu tấn công được coi là các mẫu riêng biệt. 2.1.1. Ưu điểm Kỹ thuật này rất hiệu quả trong việc phát hiện ra những cuộc tấn công một cách chính xác. Không có nhiều cảnh báo sai. Nó có thể phát hiện nhanh chóng và tin cậy khi việc tấn công sử dụng những bộ công cụ hoặc những kỹ thuật chuyên biệt. Người quản trị không cần phải có kiến thức, hiểu biết sâu về vấn đề an ninh. 2.1.2. Nhược điểm. Sử dụng kỹ thuật này thì chỉ phát hiện được những kiểu tấn công mà đã có mẫu được biết rồi. Còn những cuộc tấn công không nằm trong số các mẫu đã đựoc biết thì chương trình không phát hiện được. Vì vậy phải thường xuyên cập nhập các mẫu mới. Rất nhiều chương trình đựoc thiết kế chặt chẽ để sử dụng chĩnh xác các dấu hiệu vì vậy có thể nó sẽ không phát hiện được những cuộc tấn công đó khi chúng có một chút thay đổi. 2.2. Phát hiện sự bất thường(Anomaly Detection) Kỹ thuạt này nhằm chỉ ra những hành vi được coi là không bình thường trong một máy trạm hoặc cả hệ thống. Chức năng này được giả sử rằng là các cuộc tấn công đều có những hành động khác với bình thường( bất thường). Vì vậy hệ thống có thể phát hiện ra những cuộc tấn công này dựa vào việc phát hiện ra những hành vi khác thường của nó. Kỹ thuật này xây dựng một bản mô tả những hành động được coi là bình thường của các máy trạm, người dùng và cả các kết nối trong hệ thống. Những bản mô tả này được xây dựng trong một khoảng thời gian mà hệ thống hoạt động bình thường. Bộ phận phát hiện sau đó thu thập các dữ liệu về các hành vi trong hệ thống và sử dụng nhiều thước đo khác nhau trong việc xác định đâu là các hành vi bất thường. Các kỹ thuật và thước đo hay được dùng bao gồm: Phát hiện ngưỡng(Threshold Detection), trong đó những thuộc tính của các hành vi vủa người dùng hoặc hệ thống được biểu diễn rõ ràng về số lượng. Với một vài cấp độ có thể chấp nhận được. Các thuộc tính như vậy có thể là số lần truy nhập file của người dùng trong một khoảng thời gian cho trước. Số lần đăng nhập không thành công. Số lượng sử dụng CPU của một tiến trình… Các cấp độ này có thể là tĩnh hoặc được thay đổi tuỳ theo yêu cầu sao cho phù hợp. Thước đo thống kê(Statistical Measure). Cả khi có tham số - tức là khi phân loại các mô tả thuộc tính thì theo như các bộ phận mẫu, và không có tham số tức là khi việc phân loại các mô tả thuộc tính đựơc “học” từ một tập các giá trị thực tế đã đựoc ghi lại trong thời gian trước. Thước đo dựa trên các quy tắc(Rule based Measure), tương tự như là thước đo thống kê không có tham số trong việc quan sát dữ liệu và định nghĩa ra cá mẫu có thể chấp nhận dùng được. Nhưng khác là ở chỗ các mẫu này là các quy tắc chứ không phải là số lượng. Chỉ hai thước đo đầu tiên đựoc sử dụng trong những sản phẩm thương mại. Không may mắn là kỹ thuất phát hiện các dấu hiệu bất thường lại hay tạo ra những cảnh báo sai vì những hành động bình thường của người dùng và hệ thống có thể nhiều khi hơi khác thường một chút. bất chấp những điều đó thì kỹ thuật phát hiện những hành vi bất thường vẫn đựoc dùng vì nó có thể phát hiện ra những cuộc tấn công kiểu mới chứ không như kỹ thuật phát hiện theo các dấu hiệu thì chỉ có thể phát hiện đựợc những dạng tấn công cũ. Hơn nữa một vài đầu ra của hệ thống phát hiện hành vi bất thường dựa trên các ngưỡng có thể trợ giúp cho kỹ thuật phát hiện những dấu hiệu lạm dụng. 2.2.1. Ưu điểm Kỹ thuật này phát hiện ra những dấu hiệu bất thường nên nó có thể phát hiện ra những cuộc tấn công mới mà không cần phải biết rõ chi tiết về loại tân công đó. Thông tin kết quả của nó có thể dùng làm mẫu dùng trong kỹ thuật phát hiện sự lạm dụng. 2.2.2. Nhược điểm Các chương trình sử dụng theo kỹ thuật này thường đưa ra nhiều những cảnh báo sai khi có những hành vi bình thường của hệ thống hoặc người dùng nhưng không dự đoán được. Nó đòi hỏi phải mở rộng tập các bản ghi các sự kiện hành vi được coi là bình thường của hệ thống. 2.3. Giám sát (Target Monitoring ) Những hệ thống này không tích cực tìm kiếm những sự không bình thường hoặc sự sử dụng sai nhưng thay vào đó tìm kiếm sự thay đổi của những file xác định. Hơn cả một sự điều khiển để hiệu chỉnh, nó được thiết kế để bỏ một hành động không hợp pháp sau khi nó xuất hiện để đảo ngược nó. Một cách để kiểm tra sự soạn thảo dấu giếm những file là tính toán một mã hóa băm trước và so sánh cái này tới bảng băm mới của file ở những khoảng thời gian cho trước. Kiểu hệ thống này là dễ nhất để thi hành, bởi vì nó không yêu cầu theo dõi liên tục bởi người quản trị. Kiểm tra sự toàn vẹn có thể được tính toán ở những khoảng theo ý người dùng và trên hoặc tất cả các file hoặc chỉ là những file đặc biệt. 2.4. Thăm dò hành động lén lút Kỹ thuật này cố gắng để phát hiện ra bất kỳ những kẻ tấn công nào mà thực hiện tấn công trong thời gian dài. Những kẻ tấn công, ví dụ, sẽ dò những lỗ hổng bảo mật của hệ thống và mở những cổng trong cả một thời gian khoảng hai tháng, và đợi hai tháng tiếp để thật sự tấn công. Kỹ thuật này thu thập nhiều dữ liệu khắp cả hệ thống, kiểm tra cho bất kỳ những sự tấn công có phương pháp nào trong cả một thời kỳ dài. Chúng lấy mẫu rộng và cố gắng khám phá bất kỳ cái nào liên quan đến tấn công. Trên thực tế, phương pháp này kết hợp phát hiện sự không bình thường và lạm dụng khi cố gắng phát hiện hoạt động đáng nghi ngờ. 3. Hệ thống phát hiện xâm nhập dựa trên thống kê Hệ thống phát hiện xâm nhập dựa vào thống kê có nguyên tắc hoạt động rất đơn giản. Nó theo dõi tất cả các hoạt động động của mạng và những hoạt động nào nó cho là bất thường sẽ được đánh dấu để thông báo cho người quản trị. Hệ thống này xem xét các mẫu lưu thông trong mạng và định ra những hoạt động nào là hoạt động bình thường. Nếu hệ thống hoạt động càng lâu thì độ chính xác càng cao vì nó sẽ quyết định chính xác hành vi nào trong hệ thống mạng là bất thường. Nếu như hệ thống được cài thêm một số giải thuật sử dụng trí tuệ nhân tạo thì hiệu quả sẽ rất cao. Bình thường, hệ thống IDS sẽ theo dõi mạng xem những hành vi nào là bất th\ường sau đó gửi thông báo cho người quản trị. Người quản trị sau đó xem xét và quyết định hành vi nào thực sự là bất thường và cấu hình lại để hệ thống IDS có thể cảnh báo được chính xác hơn. Quá trình này có thể được lập trình luôn để có thể làm giảm công việc cho người quản trị, tức là chương trình sẽ theo dõi những hành vi bất thường và nếu thấy thực sự trong hệ thống mạng này không phải là bất thường thì nó sẽ tự động cấu hình lại để cho phù hợp với môi trường này. 3.1. Ưu điểm Hệ thống này có khá nhiều ưu điểm. Quá trình phân tích mẫu trong mạng và những thông báo liên tiếp về những hành vi bất thường trong hệ thống có thể cho người quản trị thấy được những gì là bất thường và những gì là bình thường. Nếu hệ thống bị tấn công bởi những loại sâu mới, virus và cả tấn công DOS thì hệ thống này sẽ báo động dựa trên hành vi bất thường của chúng. Hệ thống này có một ưu điểm khác so với các hệ thống IDS dò tìm dấu hiệu là không phải cập nhật các dấu hiệu mà chỉ cần điều chỉnh lại sao cho thích hợp. Đặc điểm chính của hệ thống là có thể thông báo hiệu quả về các hành vi tấn công DOS, quét cổng và dùng những cổng không được phép trên một máy nào đó. 3.2. Nhược điểm Nếu hệ thống IDS này là hệ thống tự học được từ môi trường (có ứng dụng trí tuệ nhân tạo) thì nó có thể sẽ hoạt động không hiệu quả. Bởi vì nều một kẻ xâm nhập dùng nhiều lần chương trình Nmap để gửi các gói tin SYN đi để quét mạng thì sau một thời gian hệ thống sẽ coi hành động đó là hành động bình thường trong mạng và khi đó, hệ thống mạng sẽ không còn được an toàn nữa. Do đó, nếu tích hợp phương pháp tự học (trí tuệ nhân tạo) vào sẽ có thể giảm công việc cho người quản trị nhưng mức độ mạo hiểm sẽ tăng lên. Chương 4 Xây dựng 1 chương trình IDS 1. Mục đích : - Xây dựng một chương trình có khả năng giám sát các hoạt động bất thường trên mạng và có thể đưa ra các cảnh báo kịp thời cho người quản trị. - Có khả năng ghi lại toàn bộ các hoạt động trên mạng - Dựng lại được phiên làm việc giữa hai máy trên mạng dùng giao thức TCP,UDP,ICMP. Phát hiện các hành vi bất thường để thông báo cho người quản trị. Theo dõi các cổng trên một máy theo địa chỉ IP. - Cấu hình một cách đơn giản hệ thống IDS. 1.1. Có khả năng ghi lại các hoạt động trên mạng Với chế độ bắt gói tin là Promicous thì tất cả các gói tin qua lại trên mạng đều đựơc bắt giữ lại để xử lý. Các gói tin này đựoc lưu lại vào trong cơ sở dữ liệu để chờ xử lý. Sau khi đã được xử lý thì các gói tin này được loại bỏ khỏi cơ sở dữ liệu. 1.2. Dựng lại phiên làm việc giữa hai máy trên mạng Chương trình làm việc dựa trên nguyên tắc thống kê nên việc dựng lại phiên làm việc có ý nghĩa hết sức quan trọng. Ngoài những dấu hiệu bất thường thì có những cuộc tấn công hết sức tinh vi thì dấu hiệu của các cuộc tấn công này thường là không rõ ràng. Vì vậy việc lưu lại các phiên làm việc sẽ giúp chúng ta phát hiện được các cuộc tấn công kiểu này. 1.3. Phát hiện các hành vi bất thường để thông báo cho người quản trị. Các gói tin sau khi được phân tích sẽ được kiểm tra các tính bất thường của gói tin. Có thể là độ lớn bất thường hoặc các mang các cờ bất thường. Ngoài ra dựa vào cấu hình mà người sử dụng đã cấu hình cho chương trình mỗi khi có các sự kiện khớp với dấu hiệu đó thì chương trình lập tức đưa ra các cảnh báo. Việc đưa ra các cảnh báo giúp cho người quản trị có thể phát hiện ra các cuộc tấn công ngay khi nó đang diễn ra để có các biện pháp xử lý ngăn chặn kịp thời 1.4. Cho phép cấu hình một cách đơn giản Chương trình được xây dựng với giao diện đồ hoạ thân thiện. Cho phép người sử dụng đễ quan sát diễn biến chi tiết của chương trình trong khi chạy. Các thông số cấu hình đều rõ ràng cho phép người sử dụng đễ dàng cấu hình, thiết lập các tham số cho chương trình. Với mỗi một hệ thống thì các tham số này lại có thể rất khác nhau tuỳ theo quy mô tính chất công việc trong từng mạng. Do đó vói hệ thống mạng này thì các tham số này có thể là bất thường nhưng trong một hệ thống mạng khác các tham số này có thể lại là một điều bình thưòng vì vậy mỗi hệ thống đều có một bộ các tham số khác nhau. 2. Thiết kế chương trình. Theo yêu cầu của chương trình em chia chương trình ra làm 5 modul chính , 1 bộ CSDL . 5 module chính làm việc trên cùng 1 CSDL đó: Module thứ nhất: Có nhiệm vụ bắt các gói tin di qua card mạng.và chuyển các gói tin này cho module thứ hai phân tích. Module thứ hai: phân tích các gói tin và đưa các thông tin của các gói tin vào một cơ sở dữ liệu như là loại giao thức, địa chỉ ip nguồn, đích, địa chỉ cổng dịch vụ nguồn và đích…. Module thứ ba: Xây dựng lại các phiên làm việc, dựa trên các thông tin trong cơ sở dữ liệu mà ta đã xây dựng được. Module thứ tư: cho phép người dùng có thể tuỳ chọn 1 số các tham số được dùng để đối chiếu khẳng định các yếu tố nào là các yếu tố bất thường cần cảnh báo. Module thứ năm: So sánh với các cấu hình trong hệ thống để đưa ra cảnh báo, có lưu trữ vào trong cơ sở dữ liệu để có thể đưa ra theo báo cáo trong ngày. Hệ thống IDS So sánh và đưa ra cảnh báo Thu nhận cấu hình Module bắt gói tin Module xử lý gói tin Module xây dựng lại phiên Sơ đồ các hoạt động của các module trong chương trình Bắt gói tin Dựng lại các phiên làm việc So sánh và đưa ra cảnh báo Phân tích các gói tin Cơ sở dữ liệu Nhận các thông tin tuỳ chọn của người sử dụng Luồng gói tin 2.1. Cơ sở dữ liệu: Các dữ liệu trong CSDL bao gồm: Bảng chứa các gói tin lấy ra từ network adapter. Bảng chứa các thông tin về gói tin IP, dùng để ghép các gói IP. Bảng chứa các thông tin về các gói tin TCP. Bảng chứa các thông tin về các Session. Bảng chứa các thông tin về các cảnh báo Bảng chứa các xâu cần cảnh báo khi xuất hiện trong gói tin TCP Bảng chứa các địa chỉ IP và cổng giám sát. Các bảng được cập nhật thường xuyên khi chạy chương trình. Module bắt các gói tin Bảng tblPacket Bắt gói tin Các gói tin qua Card mạng Cập nhập Module này nhận được các thông tin đầu vào về gói tin về gói tin từ card mạng. Các gói tin này là gói tin Ethernet. Các thông tin nhận được nữa là : Mảng byte chứa toàn bộ gói tin Ethernet. Số lượng byte của gói Ethernet mà card mạng bắt được. Sau khi nhận được các thông tin trên thì module này cập nhập vào bảng tblPacket các thông tin sau. Toàn bộ mảng byte chứa gói tin. Số lượng byte của gói tin. 2.3 Module phân tích các gói tin Cập nhập Phân tích các gói tin Bảng tblPacket Bảng tblPacketTCP Module này lấy các thông tin sau từ trong bảng tblPacket ra để xử lý. Mảng byte chứa toàn bộ gói tin Ethernet(có thể coi là gói Ethernet) Khi đã có thông tin này thì tiến hành việc phân tích tìm ra các thông tin trong phần header của gói Ethernet . Các thông tin này là: Địa chỉ Mac của máy gửi. Địa chỉ Mac của máy nhận. Loại gói tin của tầng bên trên (Network layer) mà nó chứa bên trong (IP , Arp, SNMP,... ). Tiếp theo nếu loại gói tin của tầng network là IP thì tiến hành phân tích theo khuôn dạng của gói IP để tìm ra được các thông tin sau về gói IP . Địa chỉ IP của máy gửi. Địa chỉ IP của máy nhận. Trường Identification. Trường Fragment Offset. Loại gói tin của tầng trên(Transport ) mà nó chứa bên trong(TCP, UDP ...). Nếu gói IP này là hoàn chỉnh(không bị Fragment) và gói tin của tầng Transport là TCP thì tiến hành phân tích theo khuôn dạng của gói TCP để tìm ra các thông tin sau: Số cổng dịch vụ dùng trên máy gửi. Số cổng dịch vụ dùng trên máy nhận. Loại ứng dụng sử dụng (HTTP, TELNET, FTP...). Khi này Module sẽ cập nhập các thông tin sau về gói TCP vào trong bảng tblPacketTCP: Địa chỉ Mac của máy gửi. Địa chỉ Mac của máy nhận. Địa chỉ IP của máy gửi. Địa chỉ IP của máy nhận. Số cổng dịch vụ dùng trên máy gửi. Số cổng dịch vụ dùng trên máy nhận. Loại ứng dụng sử dụng (HTTP, TELNET, FTP...). Các cờ thể hiện trạng thái của phiên làm việc.(SYN, FIN, RESET) Trong Module này khi gói IP là không hoàn chỉnh thì ta sẽ lưu toàn bộ thông tin về gói IP đó bao gồm các thông tin về header và các dữ liệu của nó vào bang tblPacketIP để tiến hành ghép các gói IP lại. Các thông tin cần để ghép các gói IP lại là trường Identification và Fragment trong Header của gói IP. Khi đã có gói IP hoàn chỉnh thì ta lại tiến hành phân tích như trên. Khi nhận được gói TCP thì cũng tiến hành đối chiếu nếu chuỗi cần cảnh báo (được lấy ra từ bảng tblMoniterString) xuất hiện bên trong phần dữ liệu của gói TCP thì cập nhập vào bảng tblAlert một cảnh báo gồm Thời gian cảnh báo. Xâu chứa nội dung cảnh báo. Mức độ cảnh báo. 2.3. Xây dựng lại phiên làm việc Dựng lại các phiên làm việc Bảng tblPacketTCP Cập nhập Bảng tblSession Module này lấy từ bảng tblPacketTCP ra các gói tin TCP của cùng một phiên làm việc tức là các gói tin có cùng 4 tham số sau. Địa chỉ IP nguồn. Địa chỉ IP đích. Số hiệu cổng nguồn. Số hiệu cổng đích Tiếp theo xem tiếp trạng thái của phiên này, được thể hiện trong trường Status của các gói TCP. Cuối cùng kiểm tra phiên đó trong bảng tblSession xem, nếu phiên này có sự thay đổi trạng thái thì tiến hành cập nhập vào trong bảng này các thông tin sau. Địa chỉ Mac của máy gửi. Địa chỉ Mac của máy nhận. Địa chỉ IP của máy gửi. Địa chỉ IP của máy nhận. Số cổng dịch vụ dùng trên máy gửi. Số cổng dịch vụ dùng trên máy nhận. Loại ứng dụng sử dụng (HTTP, TELNET, FTP...). Trạng thái của phiên làm việc(bắt đầu, kết thúc, reset.) Thời gian bắt đầu. Thời gian kết thúc. 2.4. So sánh với các cấu hình trong hệ thống Cập nhập Bảng tblSession, Bảng tblAlert So sánh và đưa ra cảnh báo tblMoniterHost Trong module này, chương trình sử dụng phương pháp thống kê để xem những liên kết giữa các máy trong mạng. Các thông tin được lấy ra từ bảng tblSession. Địa chỉ IP của máy gửi. Địa chỉ IP của máy nhận. Số cổng dịch vụ dùng trên máy gửi. Số cổng dịch vụ dùng trên máy nhận. Trạng thái của phiên làm việc(bắt đầu, kết thúc, reset.) Thời gian bắt đầu. Thời gian kết thúc. Các thông tin sau được lấy ra từ bảng tblConfig Số lượng kết nối tối đa đến một máy Thời gian cho số lượng kết nối. Số lượng tối đa kết nối đến một máy bị RESET. Thời gian cho số lượng kết nối bị RESET . Các thông tin lấy ra từ bảng tblSesion được thống kê lần lượt theo các thông số lấy từ bảng tblConfig khi có sự trùng khớp thì cập nhập vào bảng tblAlert cảnh báo có các mục. Thời gian cảnh báo. Xâu chứa nội dung cảnh báo. Mức độ cảnh báo. Module nhận các thông tin từ người sử dụng Thông tin cấu hình Cập nhập Nhận các thông tin tuỳ chọn của người sử dụng tblConfig, tblMoniterHost, tblMoniterString Người dùng Các thông tin mà module này nhận từ người dùng là Số lượng kết nối tối đa đến một máy Thời gian cho số lượng kết nối. Số lượng tối đa kết nối đến một máy bị RESET. Thời gian cho số lượng kết nối bị RESET . Thời gian lưu trữ các cảnh báo. Chế độ bắt gói tin. Xâu cần cảnh báo khi xuất hiện trong gói tin. Các địa chỉ IP và cổng dịch vụ cần giám sát. Sáu thông tin trên cùng được lưu vào bảng tblconfig. Thông tin tiếp được lưu vào bảng tblMoniterString. Thông tin còn lại được lưu vào bảng tblMoniterHost. 3. Thiết kế chi tiết của chương trình 3.1. Cơ sở dữ liệu. Xây dựng 1 bộ cơ sở dữ liệu dùng để lưu trữ các thông tin cần thiết dùng trong chương trình như thông tin về loại các gói tin, thông tin về các phiên làm việc để chương trình có thể thao tác trên đó. Trong cơ sở dữ liệu cũng chứa luôn cả cấu hình hệ thống mà ngưới sử dụng đưa vào để sau đó chương trình có thể lấy ra đối chiếu. Cơ sở dữ liệu lựa chọn là Access. Đây là một cơ sở dữ liệu nhỏ vỡi số bản ghi hỗ trợ được không lớn lắm.Khi số lượng bản ghi lớn thì có thể làm treo chương trình.. Mặc dù có những hạn chế như vậy nhưng bù lai là việc truy xuất các cơ sở dữ liệu Access trong Visual Basic lại đơn giản và trong khuôn khổ một đồ án tốt nghiệp thì có thể chấp nhận được Các bảng cơ sở dữ liệu được dùng trong chương trình: Các dữ liệu trong CSDL bao gồm: - Bảng chứa các gói tin lấy ra từ network adapter.(tblPacket) - Bảng chứa các thông tin về gói tin IP, dùng để ghép các gói IP(tblPacketIp). - Bảng chứa các thông tin về các gói tin TCP.(tblPacketTCP) - Bảng chứa các thông tin về các phiên làm việc(tblSession). - Bảng chứa các thông tin về các cảnh báo (tblAlert). Bảng chứa các thông tin về cấu hình cho chương trình(tblConfig). Bảng chứa các xâu cần cảnh báo khi nó xuất hiện trong gói tin.(tblMoniterString) Bảng chứa thông tin về các địa chỉ IP và cổng giám sát(tblMoniterHost). Các bảng Cơ sở dữ liệu dùng trong chương trình Các bảng cơ sở dữ liệu dùng trong chương trình 3.2. Thu bắt các gói tin Chương trình sử dụng một bộ thư viện PacketVB là một phiên bản loại nhẹ của bộ thư viện Winpcap. Bộ thư viên này có các chức năng thu bắt, lọc gói tin, và một số hàm có liên quan trong việc thu nhận các gói tin. Trong mạng Lan là môi trường chia sẻ đường truyền nên tất cả các gói tin khi được truyền trên đó đều có thể đựoc thu bắt tại một card mạng. Trong chế độ bình thường thì các card mạng chỉ thu nhận và xử lý các gói tin mà có đích đến là chính card mạng đó còn với các gói tin khác thì card mạng có nhận được nhưn sau khi kiểm tra gói tin đó không phải dành cho nó thì nó bỏ gói tin đó không xử lý. Vói chế độ thu bắt gói tin là Promicous thì card mạng sẽ thu nhận và xử lý tất cả các gói tin đựoc truyền trên mạng. Mỗi khi bắt đựoc một gói tin Ethernet thì thư viện PacketVB được tự động triệu gọi và trả lại cho chúng ta mảng byte chứa gói tin. mảng byte này được cập nhập ngay vào cơ sở dữ liệu để phục vụ cho việc phân tích sau này. 3.3. Xây dựng lại phiên làm việc Phiên làm việc được xây dựng dựa trên thông tin về các gói tin TCP mà chương trình thu được. Các gói tin TCP này lấy được sau khi phân tích các gói tin IP trong cơ sở dữ liệu. Sau khi đã có các gói tin TCP rồi thì tiến hành ghép các gói tin này lại theo các phiên làm việc xác định. Trong quá trình xây dựng lại phiên làm việc thì có hai công việc chính cần làm là. Với các gói tin IP không hoàn chỉnh(bị Fragment) thì cần tiến hành ghép các gói này lại để tạo ra gói IP hoàn chỉnh. Như đã giới thiệu ở phần trên của báo cáo trong phần cấu trúc khối dữ liệu IP. Mỗi khối IP đều có các trường cần thiết cho việc ghép lại gói IP ban đầu, các trường đó là Identification và Offset. Phần xây dựng lại các phiên giao dịch từ các gói tin IP. Nếu gói tin IP là không hoàn chỉnh trong phần header thì chương trình sẽ bỏ qua vì không đủ dữ liệu để phân tích. Từ các gói tin IP lấy ra các gói tin TCP . Với các gói TCP này, chương trình sẽ xây dựng lại phiên TCP giữa hai máy và sau đó lưu phiên đã được xây dựng vào trong cơ sở dữ liệu. Đây là một công việc rất tốn kém, tiêu tốn nhiều tài nguyên nhưng lại là một công việc quan trọng. Việc này chỉ liên quan đến giao thức TCP. Hiện nay chương trình chưa làm được việc phân tích gói tin ICMP. 3.4. So sánh với các cấu hình trong hệ thống Dựa trên cơ sở dữ liệu về các phiên làm việc chương trình sẽ thực hiện việc thống kê. Kết quả sẽ đựoc so sánh với cấu hình của người sử dụng cũng đã được lưu trong cơ sở dữ liệu. Khi phát hiện được những điều không bình thường thì chương trình lập tức báo cáo cho người sử dụng. Các cảnh báo này sẽ đựoc lưu lại để tiện cho việc sử dụng sau này. 4. Cài đặt chương trình Hệ điều hành Windows là hệ điều hành khá phổ biến ở Việt Nam trong thời điểm hiện nay. Các cuộc tấn công trên mạng chủ yếu nhằm vào những lỗ hổng bảo mật của Windows để khai thác. Do đó đề tài giúp cho những hệ thống mạng sử dụng Windows có khả năng phát hiện những cuộc tấn công nhanh hơn, tăng tính an ninh cho hệ thống mạng. Sử dụng thư viện PacketVB là phiên bản loại nhẹ của bộ thư viện WinPcap hỗ trợ bắt gói, chương trình được lập trình bằng ngôn ngữ Visual Basic. Những hệ thống phát hiện xâm nhập dựa vào thống kê cần sử dụng một loại ngôn ngữ xử lý cơ sở dữ liệu tốt. Visual Basic chưa hẳn là một ngỗn ngữ dành cho các ứng dụng chuyên nghiệp, nhưng trong khuôn khổ một đề tài tốt nghiệp thì có thể chấp nhận được và dùng ngôn ngữ này thì khả năng truy cập và xử lý cơ sở dữ liệu Access lại đơn giản. Toàn bộ cơ sở dữ liệu về các gói tin, phiên giao dịch và các cảnh báo được lưu trữ trong cơ sở dữ liệu Access. Các sơ đồ thuật toán của chương trình. Sơ đồ thuật toán tổng hợp dùng trong chương trình Bắt gói tin Ethernet Đưa vào CSDL Xử lý gói tin để đua gói tin TCP vào CSDL Thống kê các phiên để đưa ra cảnh báo Xử lý các gói tin TCP để đưa phiên vào CSDL Nếu còn gói tin trong CSDL Nếu còn gói tin TCP trong CSDL Hiển thị các cảnh báo và các phiên làm việc lên Nếu có các phiên cần cập nhật Cập nhật phiên vào trong CSDL Y Y Y N N N Trong phần xử lý các gói tin sẽ bao gồm cả việc ghép các gói IP bị Fragment và nếu có các gói tin bất thường thì cũng cập nhập cảnh báo vào bảng Alert Sơ đồ thuật toán cụ thể của việc ghép các gói IP bị phân đoạn thành các gói IP hoàn chỉnh. Do sơ đồ này khá phức tạp nên em xin trình bày theo phương pháp mô tả sau: While Packet.Count>0 do { Khi vẫn còn gói tin trong CSDL } Begin Read_Packet ; { Đọc gói tin từ cơ sở dữ liệu } If (DF = 1) OR ((DF=0) AND (MF = 0) AND (FragmentOffset=0) then { Gói tin này là gói tin không bị fragment } Begin Case Protocol of TCP : Get_TCP_Packet(IP_Packet); {Lấy ra gói tin TCP} Put_TCP_Packet_into_Database; {Đưa gói tin TCP vào trong CSDL} End Else { Gói tin này là gói tin bị fragment} Begin Find_IP_Packet_in_Database; { Tìm gói tin IP tương ứng trong CSDL} If Found then Defragment_IP_Packet; {Ghép gói tin IP lại} else Put_IP_Packet_into_Database; {Đưa gói tin IP vào trong CSDL} Find_Full_IP_Packet_in_Database; { Tìm gói tin IP đã ghép đủ trong CSDL} If Found then Begin Get_TCP_Packet(IP_Packet); {Lấy ra gói tin TCP} Put_TCP_Packet_into_Database; {Đưa gói tin TCP vào trong CSDL} End; End; Delete_Packet; {Xóa gói tin trong CSDL} End; Sơ đồ thuật toán của việc thành lập phiên Còn gói tin TCP Đọc các gói tin từ CSDL Đọc các gói tin của một phiên Có phiên trong CSDL Phiên kết thúc hoặc Reset Đưa vào CSDL một phiên mới Cập nhật trạng thái phiên Xóa các gói tin khỏi CSDL Kết thúc Y Y Y N N N Các hàm sử dụng trong chương trình 4.2.1. Các hàm dùng để bắt gói tin. Hàm PacketReceive(numbytes as Long). Hàm này là một hàm của thư viện PacketVB. Đây là một hàm hướng sự kiện, mỗi khi có một gói tin thì hàm này tự động được triệu gọi và kết quả trả về của hàm này là só lượng byte của gói tin mà thư viện PacketVB bắt được. Hàm GetRawPacketData(ArrayOfBytes() as Byte) . Hàm này có tác dụng là đem gói tin mà hàm PacketReceive(numbytes as Long) bắt được xếp vào một mảng kiểu byte. Hàm này được gọi ngay sau khi đã gọi hàm PacketReceive(numbytes as Long). 4.2.2. Các hàm dùng để xử lý gói tin Hàm GetFrameHeader(thearray() As Byte, StartOfNextProto As Long) As FrameHeader: Hàm này dùng để lấy về header của frame dữ liệu. Tham số đưa vào là dòng dữ liệu dạng byte(mảng byte mà hàmGetRawPacketData trả về). StartOfNextProto cho biết vị trí bắt đầu của gói tin Ethernet trong dòng dữ liệu. Hàm này trả về cấu trúc FrameHeader. Hàm GetEtherNetHeader(thearray() As Byte, StartOfThisProto As Long, StartOfNextProto As Long) As EtherNetHeader: Hàm này đưa dòng dữ liệu vào để lấy ra header của gói tin Ethernet. Tương tự, StartOfThisProto cho biết vị trí bắt đầu của gói tin Ethernet, còn StartOfNextProto cho biết vị trí bắt đầu của Header của gói tin IP. Hàm này trả về cấu trúc EtherNetHeader. Hàm GetIpV4Proto(thearray() As Byte, startofIPProto As Long, StartOfNextProto As Long) As IPv4Header. Hàm này đưa dòng dữ liệu vào, vị trí bắt đầu của Header của gói IP. Kết quả trả về là một cấu trúc kiểu Ipv4Header và vị trí bắt đầu của Header gói tin lớp trên lớp IP. Hàm GetTCPHeader(thearray() As Byte, startofTCPProto As Long) As TCPHeader. Cũng tương tự. Nhận đầu vào là dòng dữ liệu, vị trí bắt đầu của gói tin TCP và kết quả trả về là một cấu trúc kiểu TCPHeader. Một số hàm nhỏ khác là các hàm để xử lý chuõi nhị phân để đưa ra dạng thích hợp cho hiển thị kết quả như GetIpFromLong(lngIPAddress As Long) As String, BytestoHexString(thearray() As Byte, startPos As Long, numbytes As Long) As String. 4.2.3. Hàm xây dựng lại phiên làm việc Hàm này là một hàm hướng sự kiện. Hàm này lấy thông tin trong cơ sở dữ liệu ra, cụ thể là các thông tin trong bảng TCPPacket. Dựa vào các thông tin đó để xây dựng lại phiên. Giải thuật chi tiết cho việc thành lập phiên đã được đề cập ở trên phần các giải thuật. Kiểm tra Phiên Đây cũng là một hàm hướng sự kiện. Cứ đến một thời điểm nào đó thì hàm này lại được thực thi. Hàm lấy trong cơ sở dữ liệu thông tin về các phiên làm việc(Trong bảng Section), và các thông số cấu hình(trong bảng Config). Sau khi đã thống kê các phiên làm việc theo các tiêu chí thì hàm tiếp tục so sánh với các thông số đã được cấu hình. Nếu có vi pham thì hàm tự động lưu các cảnh báo vào bảng Alert. Hiện nay em mới chỉ đưa ra một số các tham số để chương trình cảnh báo như. Có quá nhiều kết nối giữa hai máy trong khoảng thời gian nhất định. Có quá nhiều kết nối giữa hai máy bị reset trong 1 khoảng thời gian nhất định. Có quá nhiều kết nối đến 1 cổng trên 1 máy. Có quá nhiều kết nối từ 1 máy Có quá nhiều kết nối đến 1 máy Có các gói tin TCP bất thường (như trình bày trên) 5. Các Form trong chương trình Giao diện của chương trình được tổ chức theo dạng các tab. Các thể hiện thân thiện và rõ ràng dễ sử dụng. Mỗi tab có một chức năng riêng được thể hiện ở tên của các tab. Các form này được cập nhập thường xuyên. 5.1. Form Config Form chính của chương trình có thể được coi là form cấu hình cho chương trình với để thực hiện các thao tác trước khi chương trình làm việc. Form này cho phép người sử dụng có thể lựa chọn loại NetworkAdapter( card mạng) để thực hiện bắt gói tin trên card đó. Sau khi chọn xong thì chương trình cũng cho biết thông tin về địa chỉ IP và SubnetMask của NetworkAdapter đó. Các tham số cấu hình cho chương trình về tiêu chí cảnh báo cũng được nhập vào tại đây. Form này còn cho phép người sử dụng có thể lựa chọn việc sử dụng lại cơ sở dữ liệu của việc chạy chương trình lần trước hay là dùng mới một cơ sở dữ liệu( Xoá cơ sở dữ liệu của việc chạy chương trình lần trước). Trong form có cho phép người dùng mở cơ sở dữ liệu cũ ra để xem thông tin cấu hình và xem lại các thông tin mà chương trình đã thu thập và phân tích được trong các lần chạy trước. Form Config của chương trình Form có phần cấu hình để giám sát các cổng trên một địa chỉ IP xác định. Các cổng trên các máy được giám khi có các kết nối đến được cho là bình thường còn khi có kết nối đến các địa chỉ IP này mà không thuộc tập các cổng được phép thì chương trình cũng sẽ đưa ra cảnh báo. Phần moniter String thì cho phép thiết lập các cảnh báo khi có gói tin chứa xâu cho trước. HIện tại thì chương trình mới xử lý được việc cảnh báo khi xuất hiện xâu cần cảnh báo trong gói TCP. trong tương lai thì sẽ phải phát triển giám sát công việc này trên nhiều loại gói tin hơn. 5.2. Form Packet Detail Information Form này cho phép người sử dụng có thể theo dõi chi tiết hơn về các gói tin mà chương trình bắt được. Form này có tác dụng cho người sử dụng thấy trực quan hơn trong việc quan sát chương trình làm việc. Thông tin về các gói Ethernet sẽ được hiển thị lên. Bên dưới là bảng thể hiện các phiên làm việc mà chương trình cập nhập trong bảng tblSession ra. Trong bảng thể hiện tổng kết việc xây dựng lại các phiên trong chương trình. Nó cho phép người sử dụng quan sát được các phiên làm việc của các máy trong mạng, địa chỉ IP, địa chỉ Mac, cổng giao dịch và giao thức mà hai máy sử dụng. Form Packet Informaion 5.3. Form Alert Đây là form chứa các cảnh báo của chương trình. Nó có nhiệm vụ cung cấp cho người sử dụng các thông tin về các cảnh báo như thời gian đưa ra cảnh báo, nguyên nhân cảnh báo. Form Alert 6. Một số kết quả đạt được Chương trình đã hoàn thành được phần lớn các yêu cầu đề ra. Chương trình có khả năng cảnh báo được một số các sự kiện bất thường trong hệ thống. Khi tiến hành chạy thử trên một mạng Lan của một cửa hàng Internet cho thấy kết quả như sau. Chương trình đã cảnh báo được khi số kết nối đến một máy là lớn hơn so với cấu hình được chọn lúc ban đầu chạy chương trình. Ưu điểm Với giao diện thân thiện, các tham số cấu hình rõ ràng và đơn giản, cách vận hành cũng dễ hiểu, chương trình giúp cho người sử dụng dễ thao tác. Các cảnh báo mỗi khi có hiện tượng bất thường đều được cập nhập ngay và thông báo cho người sử dụng biết để có biện pháp đối phó kịp thời. Nhược điểm. Chương trình sử dụng ngôn ngữ lập trình là Visual Basic. Đây là ngôn ngữ dễ học, dễ tìm hiểu, hỗ trợ dễ dàng việc tạo giao diện đẹp và thân thiện nhưng không phải là ngôn ngữ dùng cho lập trình chuyên nghiệp vì nó không cho phép can thiệp sâu vào hệ thống, người dùng không trực tiếp quản lý được bộ nhớ. Chương trình sử dụng cơ sở dữ liệu là Access đây là cũng là một cơ sở dữ liệu chỉ nên dùng cho các ứng dụng nhỏ không được chuyên nghiệp lắm. Với số lượng bản ghi nhỏ thì không có vấn đề gì nhưng khi số lượng bản ghi tăng lên rất lớn thì đây thực sự là vấn đề(sẽ gây treo máy hoặc xử lý chậm). Hiện tại thì chương trình mới chỉ hỗ trợ sáu loại cảnh báo như vậy là còn ít. Chương trình hiện tại mới dừng lại ở việc xử lý gói tin IP, TCP, còn nhiều loại gói tin quan trọng khác trong mạng chưa được xử lý như ARP, ICMP... 7. Phương hướng phát triển trong tương lai Chương trình tuy đã làm được một số nhiệm vụ quan trọng nhưng so với các chương trình thương mại thì vẫn còn nhiều nhược điểm. Vì vậy trong tương lai chương trình cần đươc phát triển để hoàn thiện thêm nhằm có khả năng chạy ổn định, hiệu quả , chính xác trên các hệ thống mạng lớn. Trước mắt là về ngôn ngữ lập trình và cơ sở dữ liệu trong. Tương lai chương trình sẽ được xây dựng trên ngôn ngữ Visual C++ và cơ sở dữ liệu My SQL để khắc phục vấn đề về việc quản lý bộ nhớ. Chương trình hiện tại mới phân tích và xử lý một số gói tin như IP, TCP. Ngoài các gói tin này thì còn nhiều loại gói tin quan trọng khác như ICMP, ARP, UDP … Phương hướng phát triển của chương trình là hỗ trợ việc xử lý cả các gói tin quan trọng này. Hiện tại giao thức IP version 6 đang dần được đưa vào sử dụng vì vậy chương trình cũng phải phát triển thêm để hỗ trợ thêm giao thức mới này. Các chương trình thương mại hiện nay đều tiến hành phân tích dựa trên các mẫu có sắn, còn chương trình này thì sử dụng phương pháp thống kê. Tuy mỗi phương pháp đều có những ưu điểm và nhược điểm nhưng chương trình cần phải tích hợp cả hai biện pháp phân tích để bổ xung cho nhau. Chương trình có tích hợp thêm phần theo dõi nội dung gói tin nhưng vẫn còn rất đơn giản và mới chỉ theo dõi được trên gói tin TCP. Trong tương lai thì sẽ cần phát triển thêm để có thể theo dõi nội dung của nhiều loại gói tin hơn. 8. Lời kết Sau khi tìm hiểu lý thuyết và bắt tay vào xây dựng được một chương trình IDS, có khả năng phát hiện được một số dấu hiệu bất thường trong mạng IP. Chương trình cũng đã thể hiện được một số kết quả nghiên cứu mà em đã tìm hiểu được trong quá trình làm đề tài này. Trong quá trình làm đề tài thì em cũng đã có những hiểu biết thêm về vấn đề an ninh mạng và những kinh nghiệm thực tiễn chỉ có thể gặp được khi trực tiếp bắt tay vào việc xây dựng một chương trinh nghiêm túc . Chắc chắn đây là các hiểu biết và kinh nghiệm sẽ giúp em bớt bỡ ngỡ khi gặp phải các công việc thực tế khi bắt đầu ra trường. Mặc dù đã có nhiều cố gắng nhưng chắc chắn đề tài vẫn còn nhiều thiếu sót do những hạn chế về thời gian làm đề tài, và cả kinh nghiệm chuyên môn. Em mong nhận được sự góp ý của các thầy cô và các bạn. Một lần nữa em xin gửi lời cảm ơn chân thành tới thầy Ngô Văn Dũng, người đã tận tình hướng dẫn em hoàn thành đề tài này. Phụ lục A Một số các thuật ngữ dùng trong đồ án ARP Address resolution protocol. Giao thức dùng để tìm ra địa chỉ Mac của máy trạm khi mà biết được địa chỉ IP của nó. AIDS Hệ thống IDS hoạt động dựa trên việc phân tích các thông tin thu thập được về các ứng dụng Datagram. Một đơn vị khối dữ liệu truyền đi. Ethernet. Một giao thức được sử dụng trong các mạng Lan và được định nghĩa đầy đủ trong chuẩn 802.3 FireWall. Hay còn gọi là bức tường lửa, có tác dụng kiểm soát truy nhập giữa bên trong mạng và bên ngoài mạng. Fragment. Chỉ hiện tượng các gói tin IP bị phân đoạn khi có kích cỡ lớn hơn so với kích thước gói dữ liệu mà mạng cho phép truyền qua. HIDS. Host-based Instrusion Detection System. Đây là hệ thống làm nhiệm vụ theo dõi bảo vệ trên một máy đơn. Host. Một máy tính trên mạng. IDS Instrusion Detection System. Đây là tên gọi chung của các hệ thống cảnh báo, phát hiện xâm nhập. ICMP. Internet Control Message Protocol. Đây là giao thức dùng trong việc truyền thông, điều khiển, chỉ ra tình trạng lỗi trên mạng. Ví dụ như không thấy trạm đích hoặc không tìm thấy đường dẫn đến trạm đích. IP Internet Protocol.Đây làmột trong các giao thức quan trọng nhất trong mô hình TCP/IP. Được sử dụng tại tầng liên mạng. NIDS. Network-Based Instrusion Detection System. Hệ thống phát hiện xâm nhập trong một hệ thống mạng. Chứ không riêng gì chỉ trên một máy đơn. Mtu Maximum transfer unit- đơn vị cực đại của dữ liệu cho phép truyền trên mạng Packet. Một đơn vị dữ liệu của tầng Liên mạng trong mô hình TCP/IP. Protocol Giao thức. Là một tập các quy tắc dùng trong việc truyền thông nào đó trên mạng. Router. Là một thiết bị làm việc trên tầng liên mạng, có nhiệm vụ định tuyến cho các gói tin trên mạng. Và dùng để kết nối các mạng với nhau. Section. Chỉ phiên làm việc giữa hai trạm trên mạng. System log File ghi lại các hoạt động của hệ thống. Switch Là thiết bị dùng để phân đoạn kết nối các phân đoạn mạng lại với nhau. TCP Transmission Control Protocol . Là giao thức dùng tại tầng giao vận. Đây là giao thức hướng nối kết, tin cậy. UDP User Datagram Protocol. Đây là giao thức cùng được sử dụng trên tầng giao vận với giao thức TCP nhưng UDP là giao thức không hướng kết nối, không tin cậy. VPN Virtual Private Lan - Mạng riêng ảo Phụ lục B Danh sách các tài liệu tham khảo. 1. Mạng máy tính và các hệ thống mở - TS Nguyễn Thúc Hải. 2. Computer Network.Andrew - S.Tanenbaum . 3. TCP/IP Illustrated Volume 1- The Protocols - W.Richard Steven (1995) 4. TCP.IP Illustrated Volume 2-The Implement Richard Stevens-(1995). 5. Cisco CCNP Switching Exam Certification Guide.Tim Boyles and Dave Hucaby, CCIE #4594. 6. Introduction to Intrusion Detection and Assessment - Rebecca Bace (1999). 7. Abnormal IP Packets - Karen Kent Frederick (2000). 8. Bace, Rebecca G., Intrusion Detection, Macmillan Technical Publishing, 2000. Một số trang web:

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

  • doc24801.doc