Cài đặt chương trình

Một phần của tài liệu 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 (Trang 64 - 69)

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.

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

65 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

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

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

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

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.

4.2.4. 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)

Một phần của tài liệu 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 (Trang 64 - 69)

Tải bản đầy đủ (DOC)

(77 trang)
w