Sau khi lưu trữ dữ liệu xong, theo yêu cầu của bài toán, hệ thống sẽ lọc những trường dữ liệu cần thiết cho từng mục đích của bài toán phân tích bất thường đăng nhập. Cụ thể với việc phân tích và phát hiện các bất thường đăng nhập vào hệ thống được thiết kế chạy định kì để phân tích với hai bước. Bước một, thực hiện xây dựng hồ sơ hành vi và bước hai thực hiện đánh giá để phát hiện bất thường. Lưu đồ hoạt động của các bước trên hệ thống được mô tả trong Hình 2.3.
Hình 2.3. Mô hình hệ thống phát hiện bất thường.
Như trong Hình 2.3, bước 1 sẽ xác định đối tượng tác động, đối tượng chịu tác động, hành vi đăng nhập login hay logout, các thuộc tính cần xác định gồm địa chỉ IP, quốc
gia, thời điểm thực hiện hành vi để từ đó xây dựng mô hình. Từ các dữ liệu gốc, thực hiện tính toán các đặc tính của các trường dữ liệu, biểu diễn nó ở một góc khác, làm giầu thêm thông tin, ví dụ như từ địa chỉ IP, chúng ta bổ sung các thông tin về nhà cung cấp dịch vụ Internet (ISP), Quốc gia. Như trong Hình 2.4, từ địa chỉ IP (cột src) được làm giầu thêm các thông tin liên quan như nhà cung cấp dịch vụ Internet (cột src_asn), từ quốc gia nào (cột src_country). Các dữ liệu này sẽ được lưu trữ để sau đó được sử dụng để xây dựng hồ sơ hành vi sẽ được giới thiệu trong phần tiếp theo với việc xử lý dựa vào mô hình, công thức toán học để thực hiện tính điểm và so sánh với ngưỡng cảnh báo để xác định bất thường.
Hình 2.4. Các thuộc tính liên quan đến địa chỉ IP.
Để xây dựng hồ sơ hành vi, hệ thống sử dụng các dữ liệu log đã được lưu trữ, thực hiện trích chọn các dữ liệu, trường thông tin phục vụ bài toán phân tích bất thường. Xây dựng lịch sử đăng nhập hành vi dựa trên mô hình phân bố thống kê tần suất xuất hiện của hành vi trong một khoảng thời gian đủ dài. Và trong nghiên cứu này luận văn đang sử dụng dữ liệu trong 60 ngày. Các dữ liệu được đưa vào xây dựng hồ sơ hành vi sẽ được phân loại theo bài toán phân tích gồm có đối tượng, đối tượng chịu tác động, hành vi và các thuộc tính.
- Đối tượng: đối tượng sẽ thực hiện phân tích để xây dựng hồ sơ hành vi. Cụ thể với bài toàn này là các tài khoản đăng nhập các hệ thống quan trọng của công ty gồm: AD, SSO, VPN, Email, Auth Log.
- Đối tượng chịu tác động (target_id): đối tượng chịu tác động của hành vi, ví dụ server_id của hệ thống máy chủ mà user thực hiện đăng nhập như window_10.30.163.5.
- Hành vi: mô tả hành vi, ví dụ như hành vi đăng nhập hệ thống như Login, Logout Email.
- Các thuộc tính: là các thuộc tính liên quan đến đến hành vi của đối tượng như địa chỉ IP, dải địa chỉ IP nguồn của người dùng khi khi thực hiện đăng nhập hệ thống, nhà cung cấp dịch vụ Internet, quốc gia, ngày trong tuần, v.v.Ví dụ giá trị thuộc tính thể hiện thực tế như IP 10.10.2.3, quốc gia Vietnam, thời điểm lúc 3 giờ, ngày Monday, v.v.
Với các dữ liệu đầu vào thu thập được, hệ thống sẽ thực hiện cấu trúc lại dữ liệu để phục vụ việc phân tích và xử lý như Hình 2.5.
Và cụ thể với bài toàn phát hiện bất thường về đăng nhập, các thuộc tính được sử dụng để phân tích các hành vi trên từng hệ thống như Bảng 2.1.
Bảng 2.1. Các thuộc tính sử dụng để phát hiện bất thường đăng nhập
Đối tượng Các thuộc tính sử dụng để phân tích
AD Loại đăng nhập (Logon_type), dải địa chỉ IP đăng nhập (src_mark), địa chỉ IP đăng nhập (src_ip), quốc gia
(src_country), tên nhà mạng cung cấp kết nối (src_asn), giờ đăng nhập trong ngày (hour_of_day), ngày đăng nhập trong tuần (day_of_week)
SSO src_mark, src_ip, hour_of_day, day_of_week
VPN src_mark, src_ip, src_country, src_asn, hour_of_day, day_of_week
Email src_mark, src_ip, src_country, src_asn, hour_of_day, day_of_week
Auth Log src_mark, src_ip, src_country, src_asn, hour_of_day, day_of_week
Các dữ liệu được lưu trữ trên hệ thống, được xử lý và cấu trúc các trường dữ liệu trong tệp theo định dạng như sau:
root
|-- category: string (nullable = true) |-- client_ip: string (nullable = true) |-- cmd: string (nullable = true)
|-- delegated_username: string (nullable = true) |-- device_product: string (nullable = true) |-- device_vendor: string (nullable = true) |-- device_version: string (nullable = true) |-- dst: string (nullable = true)
|-- error: string (nullable = true) |-- event_id: string (nullable = true) |-- host: string (nullable = true) |-- hosts: string (nullable = true)
|-- input_plugin: string (nullable = true) |-- log_class: array (nullable = true) | |-- element: string (containsNull = true) |-- log_file: string (nullable = true)
|-- log_source_name: string (nullable = true) |-- log_time: string (nullable = true)
|-- member: string (nullable = true) |-- message: string (nullable = true) |-- mid: string (nullable = true)
|-- organization_group: string (nullable = true) |-- proto: string (nullable = true)
|-- raw_str: string (nullable = true) |-- server_id: string (nullable = true) |-- severity: long (nullable = true) |-- soap: string (nullable = true) |-- src: string (nullable = true) |-- status: string (nullable = true)
|-- sub_category: string (nullable = true) |-- suser: string (nullable = true)
|-- tags: array (nullable = true)
| |-- element: string (containsNull = true) |-- timestamp: long (nullable = true)
|-- type: string (nullable = true) |-- url: string (nullable = true)
|-- useragent: string (nullable = true) |-- via: string (nullable = true)
|-- zimbra_hostname: string (nullable = true) |-- zimbra_mailaddress: string (nullable = true) |-- zimbra_port: string (nullable = true)
|-- zimbra_status: string (nullable = true) |-- @timestamp: string (nullable = true) |-- @version: string (nullable = true)
Như vậy, với những dữ liệu đã được cấu trúc, hệ thống trích xuất những trường dữ liệu cần thiết cho bài toàn phân tích bất thường đăng nhập vào hệ thống với các thông tin về đối tượng, đối tượng chịu tác động, địa chỉ IP, thời gian, trạng thái đăng nhập. Tiếp theo, luận văn sẽ việc xây dựng mô hình phân tích dữ liệu và công cụ phân tích với các loại hành vi đăng nhập hệ thống.