Kịch bản tấn công máy chủ Linux

Một phần của tài liệu Nghiên cứu và phát triển hệ thống phát hiện bất thường dựa trên log (Trang 91 - 99)

CHƯƠNG 3 TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG

3.3 Thiết kế kịch bản thử nghiệm tập luật

3.3.4 Kịch bản tấn công máy chủ Linux

Mô tả: Kịch bản này sẽ sử dụng 2 máy chủ linux cài hệ điều hành Ubuntu 20.04, trong đó một máy cài đặt dịch vụ osquery và máy chủ còn lại sẽ cài đặt dịch vụ auditd. Trên các máy này sẽ triển khai một website đơn giản có chứa nhiều lỗ hổng bảo mật. Kẻ tấn công sẽ khai thác các lỗ hổng này và lợi dụng tính năng Upload File để tải Web Shell lên. Từ đó, hắn có thể thực hiện nhiều hành vi tấn công khác.

Chuẩn bị: Cài đặt Apache, MySQL, PHP lần lượt trên các máy chủ Ubuntu20-01 có địa chỉ IP là 192.168.39.168 và trên máy chủ Ubuntu20-02 có địa chỉ IP là 192.168.39.165. Triển khai website có tên là webvul vào thư mục webroot trên máy chủ tại thư mục /var/www/html. Sau đó phân quyền truy cập

www-data cho thư mục. Tạo cơ sở dữ liệu webvul gồm các bảng dữ liệu có cấu trúc được mô tả bên dưới.

Bảng 3.4. Cấu trúc bảng cơ sử dữ liệu webvul chứa nhiều lỗ hổng bảo mật

Tên trường Kiểu dữ liệu Mô tả Bảng users

id INT (11) Giá trị tăng dần, định danh cho bản ghi username TEXT(50) Tên đăng nhập

password TEXT(255) Mật khẩu được lưu trữ dưới dạng mã băm email TEXT(255) Địa chỉ email

role TINYINT(4) Vai trò của tài khoản (quản trị viên – 1, người dùng – 0)

created_at DATETIME Thời gian tạo bản ghi

Bảng posts

id INT(11) Giá trị tăng dần, định danh cho bản ghi

url_avatar TEXT Đường dẫn chứa ảnh đại diện của người dùng title TEXT Tên bài viết

content TEXT Nội dung bài viết created_at DATETIME Thời gian tạo bản ghi

Trên website webvul, tài khoản quản trị sẽ được quản lý danh sách và cho phép xóa một tài khoản người dùng bất kỳ. Tài khoản này cũng được sử dụng để quản lý danh sách, thêm hoặc xóa một bài viết. Trong khi đó tài khoản người dùng thông thường chỉ được phép xem danh sách các bài viết trên hệ thống. Theo mặc định, trên hệ thống đã tồn tại một tài khoản quản trị có tên truy cập là admin

83

và mật khẩu là SOICT2021. Người quản trị cần đổi mật khẩu của tài khoản này trong lần sử dụng đầu tiên. Kẻ tấn công có thể thực hiện một kịch bản tấn công như sau:

Bước 1: Chiếm quyền tài khoản quản trị

Thông qua các pha thu thập thông tin, kẻ tấn công biết được website chứa lỗ hổng được viết bằng ngôn ngữ PHP 7.x và sử dụng hệ quản trị cơ sở dữ liệu MySQL để lưu trữ dữ liệu. Mật khẩu được lưu trữ an toàn trong hệ thống thông qua hàm băm SHA1. Tài khoản quản trị và tài khoản người dùng được phân quyền thông qua giá trị cờ (flag). Trong đó, giá trị flag là 1 ứng với tài khoản quản trị, ngược lại là 0 ứng với tài khoản người dùng. Website cũng sử dụng session để lưu lại phiên đăng nhập và yêu cầu người dùng xác thực truy cập.

Kẻ tấn công sẽ đăng ký một tài khoản người dùng bình thường để truy cập vào website chứa lỗ hổng. Với tài khoản này, hắn chỉ có thể xem danh sách các bài viết được quản trị viên thêm vào trên hệ thống. Do vậy, yêu cầu đặt ra là phải chiếm được tài khoản quản trị website. Có 2 hướng tấn công có thể thực hiện:

-Dò đoán tên đăng nhập và mật khẩu được sử dụng của tài khoản quản trị

-Đăng ký mới một tài khoản người dùng và leo thang đặc quyền để có được tài khoản quản trị.

Kẻ tấn công sẽ thực hiện đăng ký tài khoản trên hệ thống. Khi đó, thông tin về tài khoản mới tạo như tên đăng nhập, mật khẩu và địa chỉ email sẽ được thêm vào các bảng trong cơ sở dữ liệu MySQL. Lợi dụng các kỹ thuật khai thác lỗ hổng SQL Injection [22] và sử dụng một số công cụ kiểm thử như BurpSuite [23] để tạo các payload độc hại, kẻ tấn công đã tạo được tài khoản mới fake_admin

trên hệ thống với quyền quản trị.

84

Sau khi truy cập được vào trang quản trị của hệ thống website, kẻ tấn công sẽ tìm cách tạo backdoor để duy trì kết nối và kiểm soát hệ thống từ xa. Nhận thấy tính năng quản lý bài viết cho phép thêm các tệp hình ảnh minh họa cho bài viết, nên hắn sẽ thử tìm cách khai thác lỗ hổng File Upload [22] trong tính năng này.

+) Tạo bài viết mới

Chọn Thêm mới bài viết và nhập thông tin về bài viết mới. Các trường đánh dấu (*) là bắt buộc:

-Tên bài viết

-Chọn ảnh minh họa

-Nội dung bài viết

Chọn Tạo mới để tạo bài viết mới và Làm mới để xóa dữ liệu vừa nhập trên giao diện. Kết quả là thông tin về một bài viết mới được thêm thành công vào cơ sử dữ liệu. Trên giao diện hiển thị danh sách bài viết hiện có trên hệ thống.

Chuột phải vào ảnh và chọn Inspect để xem mã nguồn của website, dò tìm đường dẫn lưu trữ ảnh trên máy chủ.

Chuột phải vào đường dẫn ảnh và chọn Open the new tab, ta được kết quả có thể truy cập trực tiếp tới đường dẫn ảnh trên Web Server. Từ đó, hắn sẽ khai thác lỗ hổng File Upload trong tính năng thêm bài viết mới.

85

Chọn Thêm bài viết và nhập các thông số cho bài viết. Thay vì chọn một tệp JPG để tải lên như lần trước, hắn sẽ tải tệp Web Shell C99 được viết bằng PHP lên hệ thống. Thực hiện tương tự các bước ở trên, ta được kết quả có thể kết nối tới Web Shell trên máy chủ như hình bên dưới.

Bước 3: Thực hiện một số tác vụ tấn công máy chủ Ubuntu20-01 +) Xem thông tin tài khoản đang sử dụng trên hệ thống

Lệnh: $ whoami

Kết quả trên SIEM ghi nhận được logs như bên dưới. Trong đó, tiến trình whoami lại được khởi chạy từ tiến trình apache2. Ngoài ra, nó còn ghi lại được các tham số được sử dụng, đường dẫn thư mục khởi chạy, v.v.

86

+) Xem danh sách các cổng đang mở

Ví dụ, chọn show open ports, bản chất sẽ chạy lệnh:$ netstat -an | grep -i listen

Kết quả trên SIEM cũng ghi nhận được llogs liên quan đến hành vi do thám này của kẻ tấn công

+) Kiểm tra kết nối Internet trên máy chủ Lệnh: $ ping google.com -c 3

87

Kết quả trên SIEM ghi nhận tiến trình ping với các tham số như kẻ tấn công đã sử dụng, được khởi chạy từ tiến trình apache2.

+) Tìm kiếm thông tin trong tệp /etc/passwd Lệnh: $ cat /etc/passwd

Kết quả trên SIEM ghi nhận tiến trình cat với các tham số /etc/passwd được khởi chạy từ tiến trình apache2.

Danh sách mẫu logs ghi nhận trên máy chủ Ubuntu20-01 cài dịch vụ osquery được liệt kê trong bảng bên dưới:

Lệnh: $ whoami

<166>Dec 19 09:16:22 ubuntu20-01 osquery {"name":"processes","hostIdentifier":"ubuntu20-01","calendarTime":"Sun Dec 19 09:16:20 2021 UTC","unixTime":1639905380,"epoch":0,"counter":164,"numerics":false,"decorations ":{"host_uuid":"564ddbf3-eb13-5563-c608- 4d046c2a0b77","username":"reboot"},"columns":{"auid":"4294967295","cmdline":"s h -c whoami","cwd":"\"/var/www/html/webvul/images/posts/2021/12/19\"","egid":"33","eu id":"33","gid":"33","mode":"0100755","parent_cmdline":"/usr/sbin/apache2 -k start","parent_path":"/usr/sbin/apache2","path":"/usr/bin/dash","pid":"70832","sha1_pa th":"803ffdb71aa236aa25009bef97db1b8ad0e3c62b","time":"2021-12-19 09:16:14"},"action":"added"}

Lệnh: $ netstat -an | grep -i listen

<166>Dec 19 09:09:37 ubuntu20-01 osquery {"name":"processes","hostIdentifier":"ubuntu20-01","calendarTime":"Sun Dec 19

09:09:33 2021

UTC","unixTime":1639904973,"epoch":0,"counter":160,"numerics":false,"decorations ":{"host_uuid":"564ddbf3-eb13-5563-c608-

88 4d046c2a0b77","username":"reboot"},"columns":{"auid":"4294967295","cmdline":"s h -c netstat -an | grep -i listen","cwd":"\"/var/www/html/webvul/images/posts/2021/12/19\"","egid":"33","euid ":"33","gid":"33","mode":"0100755","parent_cmdline":"/usr/sbin/apache2 -k start","parent_path":"/usr/sbin/apache2","path":"/usr/bin/dash","pid":"70596","sha1_pa th":"803ffdb71aa236aa25009bef97db1b8ad0e3c62b","time":"2021-12-19 09:09:25"},"action":"added"} Lệnh: $ ping google.com -c 3

<166>Dec 19 09:13:57 ubuntu20-01 osquery {"name":"processes","hostIdentifier":"ubuntu20-01","calendarTime":"Sun Dec 19 09:13:57 2021 UTC","unixTime":1639905237,"epoch":0,"counter":163,"numerics":false,"decorations ":{"host_uuid":"564ddbf3-eb13-5563-c608- 4d046c2a0b77","username":"reboot"},"columns":{"auid":"4294967295","cmdline":"s h -c ping google.com -c 3","cwd":"\"/var/www/html/webvul/images/posts/2021/12/19\"","egid":"33","euid":"3 3","gid":"33","mode":"0100755","parent_cmdline":"/usr/sbin/apache2 -k start","parent_path":"/usr/sbin/apache2","path":"/usr/bin/dash","pid":"70767","sha1_pa th":"803ffdb71aa236aa25009bef97db1b8ad0e3c62b","time":"2021-12-19 09:13:48"},"action":"added"} Lệnh: $ cat /etc/passwd

<166>Dec 19 09:12:42 ubuntu20-01 osquery {"name":"processes","hostIdentifier":"ubuntu20-01","calendarTime":"Sun Dec 19 09:12:40 2021 UTC","unixTime":1639905160,"epoch":0,"counter":162,"numerics":false,"decorations ":{"host_uuid":"564ddbf3-eb13-5563-c608- 4d046c2a0b77","username":"reboot"},"columns":{"auid":"4294967295","cmdline":"s h -c cat /etc/passwd","cwd":"\"/var/www/html/webvul/images/posts/2021/12/19\"","egid":"33" ,"euid":"33","gid":"33","mode":"0100755","parent_cmdline":"/usr/sbin/apache2 -k start","parent_path":"/usr/sbin/apache2","path":"/usr/bin/dash","pid":"70700","sha1_pa th":"803ffdb71aa236aa25009bef97db1b8ad0e3c62b","time":"2021-12-19 09:12:32"},"action":"added"}

Bước 4: Thực hiện một số tác vụ tấn công máy chủ Ubuntu20-02 +) Xem thông tin tài khoản đang sử dụng trên hệ thống

Lệnh: $ whoami

Kết quả trên SIEM thu được logs như hình bên dưới. Trong đó ghi lại được tên tiến trình, các tham số được sử dụng và thông tin về Parent Process ID của tiến trình khởi chạy nó. Ta thấy logs sẽ bị tách ra làm 2 bản ghi là Process CreatedCommand Execution - Execve Event được liên kết với nhau thông qua giá trị Record Number.

89

+) Xem danh sách các cổng đang mở Lệnh: $ netstat -an | grep -i listen

+) Kiểm tra kết nối Internet trên máy chủ Lệnh: $ ping google.com -c 3

+) Tìm kiếm thông tin trong tệp /etc/passwd Lệnh: $ cat /etc/passwd

Danh sách mẫu logs ghi nhận trên SIEM của máy chủ Ubuntu20-02 cài dịch vụ auditd được liệt kê trong bảng bên dưới:

Lệnh: $ whoami

<182>Dec 19 09:46:10 ubuntu20-02 audit_log type=SYSCALL msg=audit(1639907168.399:44030): arch=c000003e syscall=59 success=yes exit=0 a0=55ff189caba8 a1=55ff189cab38 a2=55ff189cab48 a3=7ff57e711850 items=2 ppid=86955 pid=86956 auid=4294967295 uid=33 gid=33 euid=33 suid=33 fsuid=33 egid=33 sgid=33 fsgid=33 tty=(none) ses=4294967295 comm="whoami" exe="/usr/bin/whoami" key="account-discovery" ARCH=x86_64 SYSCALL=execve AUID="unset" UID="www-data" GID="www-data" EUID="www-data" SUID="www-data" FSUID="www-data" EGID="www-data" SGID="www-data" FSGID="www-data"

<182>Dec 19 09:46:10 ubuntu20-02 audit_log type=EXECVE msg=audit(1639907168.399:44030): argc=1 a0="whoami"

Lệnh $ netstat -an | grep -i listen

<182>Dec 19 09:57:26 ubuntu20-02 audit_log type=SYSCALL msg=audit(1639907846.312:44044): arch=c000003e syscall=59 success=yes exit=0 a0=561561a7b748 a1=56155fed2c58 a2=561561a7b6e8 a3=7fa5019a5850 items=2 ppid=87234 pid=87235 auid=4294967295 uid=33 gid=33 euid=33 suid=33 fsuid=33 egid=33 sgid=33 fsgid=33 tty=(none) ses=4294967295 comm="netstat" exe="/usr/bin/netstat" key="connections-discovery" ARCH=x86_64 SYSCALL=execve AUID="unset" UID="www-data" GID="www-data" EUID="www-data" SUID="www-data" FSUID="www-data" EGID="www-data" SGID="www-data" FSGID="www-data"

90 <182>Dec 19 10:08:11 ubuntu20-02 audit_log type=SYSCALL msg=audit(1639908490.496:44091): arch=c000003e syscall=42 success=yes exit=0 a0=5 a1=7f43e996a4d4 a2=10 a3=7fff322e3734 items=0 ppid=87516 pid=87517 auid=4294967295 uid=33 gid=33 euid=33 suid=33 fsuid=33 egid=33 sgid=33 fsgid=33 tty=(none) ses=4294967295 comm="ping" exe="/usr/bin/ping" key="network-conection" ARCH=x86_64 SYSCALL=connect AUID="unset" UID="www-data" GID="www-data" EUID="www-data" SUID="www-data" FSUID="www-data" EGID="www-data" SGID="www-data" FSGID="www-data"

Lệnh: $ cat /etc/passwd

<182>Dec 19 09:59:06 ubuntu20-02 audit_log type=SYSCALL msg=audit(1639907942.851:44066): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffc85ba5e53 a2=0 a3=0 items=1 ppid=87286 pid=87287 auid=4294967295 uid=33 gid=33 euid=33 suid=33 fsuid=33 egid=33 sgid=33 fsgid=33 tty=(none) ses=4294967295 comm="cat" exe="/usr/bin/cat" key="account- discovery" ARCH=x86_64 SYSCALL=openat AUID="unset" UID="www-data" GID="www-data" EUID="www-data" SUID="www-data" FSUID="www-data" EGID="www-data" SGID="www-data" FSGID="www-data"

<182>Dec 19 09:59:06 ubuntu20-02 audit_log type=EXECVE msg=audit(1639907942.847:44065): argc=2 a0="cat" a1="/etc/passwd"

Một phần của tài liệu Nghiên cứu và phát triển hệ thống phát hiện bất thường dựa trên log (Trang 91 - 99)

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

(115 trang)