Tổng quan về Metasploit
Khái niệm cơ bản [1]
Metasploit, hay còn gọi là Dự án Metasploit, là một công cụ quan trọng trong lĩnh vực bảo mật máy tính, cung cấp thông tin về các lỗ hổng bảo mật Nó chủ yếu được sử dụng cho việc kiểm thử xâm nhập (Penetration Testing) và phát triển hệ thống phát hiện xâm nhập (IDS - Intrusion Detection System).
Metasploit Framework là một công cụ mã nguồn mở mạnh mẽ, sử dụng shellcode (payload) để tấn công các máy có lỗ hổng Nó sở hữu cơ sở dữ liệu phong phú với hàng ngàn shellcode và exploit cho nhiều hệ điều hành, chương trình và dịch vụ khác nhau Qua thời gian, Metasploit liên tục cập nhật các exploit mới vào cơ sở dữ liệu, giúp nâng cao khả năng kiểm thử an ninh hệ thống.
Metasploit Framework là một công cụ mạnh mẽ được tích hợp sẵn trong hệ điều hành Kali Linux Bạn có thể tải xuống phiên bản mới nhất dành cho các hệ điều hành Linux, MacOS và Windows từ trang web của nhà phát triển Rapid7 tại địa chỉ https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers.
Lịch sử phát triển [1]
Metasploit, được phát triển bởi H D Moore, một chuyên gia bảo mật mạng và lập trình viên nguồn mở, ra đời vào năm 2003 như một công cụ kiểm thử thâm nhập bằng ngôn ngữ Perl Đến năm 2007, Metasploit Framework đã được viết lại hoàn toàn bằng Ruby Vào ngày 21 tháng 10 năm 2009, dự án này đã được Rapid7, một công ty chuyên cung cấp giải pháp bảo mật quản lý lỗ hổng, mua lại.
Các tính năng chính [2]
Metasploit có ba tính năng chính sau đây:
- Quét cổng để xác định các dịch vụ đang hoạt động trên máy chủ
- Xác định các lỗ hổng dựa trên phiên bản của hệ điều hành và phiên bản các phần mềm cài đặt trên hệ điều hành đó
- Thực nghiệm khai thác các lỗ hổng đã được xác định.
Các thành phần [2]
Metasploit hỗ trợ giao diện người dùng với hai dạng:
Giao diện console sử dụng file msfconsole.bat cho phép người dùng cấu hình và kiểm tra thông qua các dòng lệnh, mang lại tốc độ nhanh hơn và tính linh hoạt cao hơn.
- Web interface sử dụng file msfweb.bat Giao diện này dùng để giao tiếp với người dùng thông qua giao diện web
Metasploit Framework gồm hai môi trường sau:
Global Environment được thiết lập thông qua hai lệnh setg và unsetg, với các tùy chọn này có hiệu lực toàn cục và được áp dụng cho tất cả các module exploit.
Temporary Environment được thiết lập bằng hai lệnh set và unset, cho phép môi trường này chỉ áp dụng cho module exploit đang được tải hiện tại mà không ảnh hưởng đến các module khác.
Chúng ta có thể lưu môi trường đã cấu hình bằng lệnh save, và môi trường này sẽ được lưu trữ tại /.msf/config Khi giao diện được khởi động lại, môi trường sẽ được tải trở lại.
Để tối ưu hóa quy trình cấu hình cho các module exploits, các thành phần có cấu hình giống nhau như LHOST, LPORT và PAYLOAD nên được thiết lập ở chế độ Global Environment Điều này giúp giảm thiểu việc cấu hình lại nhiều lần và tiết kiệm thời gian cho người dùng.
Ví dụ: msf> setg LPORT 80 msf> setg LHOST 172.16.8.2
Hướng dẫn sử dụng Metasploit Framework
Một số thuật ngữ cơ bản
Để sử dụng hiệu quả Metasploit Framework, người dùng cần nắm vững các thuật ngữ quan trọng thường xuất hiện trong quá trình sử dụng công cụ này, trong đó có "Module".
Công cụ Metasploit Framework sở hữu nhiều module, là các phần mềm có thể được sử dụng trực tiếp trong nền tảng này Metasploit chia các module thành ba loại chính.
- Exploit module có nhiệm vụ mở một shellcode trên một mục tiêu để thực hiện các cuộc tấn công ví dụ như là buffer overflow, code injection,
- Auxiliary module dùng để thực hiện một hành động như scanning hay system enumeration
- Post-exploitation module cho phép thu thập các thông tin sau khi khai thác hoặc có thêm quyền truy cập tới mục tiêu đã được khai thác
Ngoài ra còn có một số module khác như: No-operation payload (NOP), Endcoder
Vulnerable target là một máy hoặc thiết bị có lỗ hổng bảo mật chưa được vá hay khắc phục Nó làm cho vật chủ dễ bị tấn công hơn
Exploit là hành vi khai thác lỗ hổng trong hệ thống, ứng dụng hoặc dịch vụ, cho phép kẻ tấn công đạt được mục đích mà nạn nhân không hay biết Những phương thức khai thác phổ biến hiện nay bao gồm Brute Force, SQL Injection và Buffer Overflow.
Discovery scan là quá trình rà quét thám hiểu trong Metasploit, kết hợp với các công cụ như Nmap, NeXpose và một số module của Metasploit Quá trình này giúp phát hiện các cổng và dịch vụ đang hoạt động trên máy mục tiêu.
Payload là mã độc mà hệ thống được yêu cầu thực hiện, được chọn và phân phối bởi framework Có hai loại payload chính: reverse shell và bind shell, bên cạnh đó còn có thể là một số lệnh được thực thi trên máy tính của nạn nhân.
- Reverse shell payload: Reverse shell là một payload tạo kết nối từ máy tính nạn nhân và “đảo ngược” lại máy tính của attacker
Bind shell là một loại payload cho phép kết nối giữa cửa sổ dòng lệnh và một cổng lắng nghe (listening port) trên máy tính mục tiêu, trong khi đó máy tính tấn công sẽ kết nối đến listener để thực hiện các thao tác.
Là một môi trường thực thi dòng lệnh cung cấp cho bạn quyền truy nhập vào một mục tiêu từ xa
Một listener trong Metasploit là thành phần chịu trách nhiệm chờ đợi kết nối từ các mục tiêu khai thác hoặc máy tính tấn công, đồng thời quản lý các kết nối này.
Meterpreter là một payload mạnh mẽ và linh hoạt, cho phép người dùng truy cập vào một shell tương tác Trong shell Meterpreter, bạn có thể thực hiện nhiều thao tác như tải lên tệp tin, thu thập mã băm của tài khoản người dùng và chuyển hướng tấn công sang các mục tiêu khác trong cùng một mạng, được gọi là kỹ thuật pivoting.
Sau khi truy cập vào máy, việc thu thập thông tin nhạy cảm như tên người dùng và mật khẩu là rất quan trọng Điều này cũng có thể được thực hiện nhằm mục đích kiểm tra, giúp phân tích xem hệ thống trong tổ chức có đang sử dụng mật khẩu mạnh hay không.
Sử dụng các lệnh cơ bản trong Metasploit [3]
Tại giao diện cửa sổ terminal, sử dụng câu lệnh msfconsole để khởi tạo Metasploit Framework
Hình 1 Khởi chạy Metasploit Framework ở chế độ console
Bởi vì tính đồ sộ của công cụ Metasploit nên chúng ta sử dụng lệnh show x với x là các valid parameter như all, encoders, nops, exploits, payloadsm auxiliary, post,
12 plugins, info, options để có thể hiện ra những thông tin chi tiết của từng loại module cụ thể msf> show options
Hình 2 Thực thi câu lệnh show options trong Metasploit
Với tham số options, câu lệnh trong Metasploit trở nên đặc biệt hơn, vì các options này kiểm soát các cài đặt cần thiết cho từng chức năng trong module cụ thể Khi chạy lệnh show options trong một module đã chọn, Metasploit chỉ hiển thị các options áp dụng cho module đó Ngược lại, nếu lệnh show options không được thực hiện trong một module, nó sẽ hiển thị những options toàn cục có sẵn.
Hình 3 Thực thi câu lệnh search trong Metasploit
Câu lệnh này cho phép chúng ta tìm kiếm các tấn công cụ thể, module phụ trợ hoặc payload dựa trên các từ khóa như: aka, author, arch, và mỗi từ khóa đều được giải thích chi tiết bên cạnh.
Ví dụ, nếu chúng ta muốn tìm kiếm tất cả các thông tin liên quan về hình thức tấn công bruteforce, ta sử dụng lệnh: msf> search bruteforce
Hình 4 Tìm kiếm các thông tin liên quan đến bruteforce
Câu lệnh search trên sẽ trả về tất cả các module sẵn có và tồn tại trong Metasploit với sáu cột dữ liệu chi tiết đặc trưng:
1 # – Các module liên quan sẽ được đánh số thứ tự
2 Name – Tên của các module có liên quan đến từ khóa tìm kiếm
3 Disclosure Date – Thời gian mà module được tiết lộ
4 Rank – Bậc xếp hạng của module Có tất cả sáu bậc xếp hạng trong Metasploit, tùy vào từng bậc xếp hạng mà có thể chỉ ra module đó có gây ra ảnh hưởng, tác động gì tới hệ thống hay không
- Low: Việc khai thác sẽ không làm ảnh hưởng đến các nền tảng chung
- Average: Khai thác không đáng tin cậy và không có khả năng khai thác hệ thống mục tiêu
Khai thác thông tin là một phương pháp đáng tin cậy, tuy nhiên, nó phụ thuộc vào một phiên bản cụ thể Những phương pháp này không tự động nhận diện các mục tiêu phù hợp.
- Good: Khai thác có mục tiêu mặc định và là trường hợp phổ biến đối với một loại phần mềm cụ thể
Các lần khai thác có mục tiêu mặc định và tự động phát hiện mục tiêu phù hợp, sử dụng địa chỉ trả lại dành riêng cho ứng dụng sau khi kiểm tra phiên bản.
- Excellent: Khai thác không làm hỏng dịch vụ Các khai thác thường có xếp hạng này là chèn SQL, thực thi CMD và khai thác ứng dụng web
5 Check – Với hai giá trị Yes hoặc No để thể hiện xem lỗ hổng này đã được hỗ trợ hay chưa
6 Description – Một đoạn mô tả thông tin ngắn gọn về module tìm kiếm
Bạn có thể kết hợp nhiều tham số trong lệnh tìm kiếm để thu hẹp phạm vi tìm kiếm theo nhu cầu Chẳng hạn, lệnh msf> search mysql type:auxiliary sẽ hiển thị toàn bộ thông tin về loại auxiliary liên quan đến cơ sở dữ liệu MySQL.
Hình 5 Tìm kiếm với nhiều từ khóa kết hợp trong câu lệnh search
Lỗ hổng Eternal Blue ms17_010, được khai thác trong vụ tấn công WannaCry toàn cầu vào năm 2017, là một ví dụ điển hình về các lỗ hổng bảo mật Để tìm kiếm lỗ hổng này, bạn có thể sử dụng lệnh msf> search ms17_010.
Hình 6 Tìm kiếm với từ khóa ms17_010 trong câu lệnh search
Sử dụng lệnh use để load được module mong muốn msf> use auxiliary/scanner/smb/smb_ms17_010
Tất cả các lệnh auxiliary và exploit sẽ được thực hiện sau dấu nhắc này Bạn có thể sử dụng lệnh search hoặc use bất kỳ lúc nào trong một auxiliary hoặc exploit để chuyển đổi giữa các auxiliary, exploit hoặc module.
To utilize the desired module in Metasploit, enter the command "show options" at the command prompt This will display the specific options for the auxiliary module (scanner/smb/smb_ms17_010), as illustrated in the accompanying image.
Hình 8 Xem các tùy chọn khai thác msf> show payloads
Như với show options, khi chạy lệnh này trong dấu nhắc lệnh của một module, Metasploit chỉ hiển thị những payloads thích hợp với module đó
Hình 9 Liệt kê các payload trong module khai thác
Next, enter the command "set payload windows/shell/reverse_tcp" to select the reverse_tcp payload By re-entering the command "show options," additional options will be displayed as shown below.
Payload reverse_tcp là một loại payload cho phép kết nối ngược từ máy tính bị tấn công đến máy tính của hacker hoặc người kiểm thử qua một địa chỉ IP và cổng xác định Tùy thuộc vào loại tấn công khai thác, có những tham số quan trọng mà người dùng cần chú ý.
- RHOST: Địa chỉ IP của máy nạn nhân mà ta muốn khai thác
RPORT là địa chỉ cổng dịch vụ SMB của máy nạn nhân, đóng vai trò quan trọng trong việc giao tiếp giữa các ứng dụng và tiến trình trong một hệ thống mạng Giao thức này giúp các thành phần trong mạng tương tác hiệu quả với nhau.
- LHOST: Địa chỉ IP local của máy thực hiện khai thác
- LPORT: Địa chỉ cổng dịch vụ SMB của máy đi khai thác
Trong reverse payloads, kết nối được khởi tạo bởi máy mục tiêu và sau đó kết nối đến kẻ tấn công, giúp vượt qua tường lửa hoặc cấu hình mạng NAT Các tham số RPORT và LPORT có thể giữ nguyên giá trị cổng mặc định mà không cần chỉnh sửa thêm Sử dụng lệnh "msf> show targets" để xem các mục tiêu khả dụng.
Sau khi chọn một lỗ hổng để khai thác, bạn có thể sử dụng lệnh để hiển thị tất cả các mục tiêu khả thi cho việc khai thác Thành công của việc khai thác phụ thuộc vào mục tiêu cụ thể được nhắm đến Nếu không chọn một mục tiêu cụ thể, Metasploit sẽ tự động thử từng mục tiêu và phát hiện một cách tự động, điều này không được khuyến khích Việc phát hiện tự động có thể không hoạt động hiệu quả và kích hoạt không đúng khai thác, dẫn đến sự cố dịch vụ.
Hình 11 Liệt kê các mục tiêu khả thi để khai thác
Khi mô tả module từ các lệnh show và search không đầy đủ, bạn có thể sử dụng lệnh info theo sau tên module để xem thêm thông tin chi tiết như các tùy chọn cơ bản, mục tiêu và nhiều thông tin khác có sẵn trong module.
Hình 12 Câu lệnh info cho từng module exploit
Meterpreter
Meterpreter là một payload phổ biến trong các cuộc tấn công hệ điều hành Windows, có thể áp dụng cho hầu hết các phiên bản hiện nay Sau khi khai thác thành công, nó trở thành một remote shell cho phép hacker thực hiện các lệnh tấn công và sử dụng các công cụ trên hệ thống mục tiêu Meterpreter cung cấp nhiều chức năng như quản lý file, upload/download, chụp ảnh màn hình, chụp ảnh webcam và ghi âm Để xem tất cả các câu lệnh trong Meterpreter, người dùng có thể sử dụng lệnh "meterpreter> help" Các câu lệnh được sắp xếp theo các mục lớn, giúp người dùng dễ dàng tìm kiếm và sử dụng.
- Core Commands: nhóm lệnh chính
- File System Commands: nhóm lệnh quản lý file
- Networking Commands: nhóm lệnh quản trị mạng
- System Commands: nhóm lệnh hệ thống
- User Interface Commands: nhóm lệnh giao diện người dùng
- Webcam Commands: nhóm lệnh điều khiển webcam
- background lưu lại session và thoát khỏi Meterpreter trở về msf
- migrate thay đổi PID của tiến trình malware
- exit và close đóng session và thoát khỏi Meterpreter
Quản lý file và thao tác với file trên Meterpreter cũng tương tự như các lệnh trên Linux, tuy nhiên lại phân ra thành ba nhóm lệnh con
Nhóm lệnh thao tác trên mục tiêu:
- cat dùng để xuất nội dung file ra terminal
- cd dùng để chuyển thư mục thực thi
- edit dùng để chỉnh sửa nội dung một file
- getwd và pwd dùng để hiển thị thực thi hiện hành
- ls [folder] dùng để xuất ra danh sách các file và thư mục
- mkdir dùng để tạo thư mục mới
- cp dùng để sao chép file đến địa chỉ mới và đổi tên (nếu có)
- mv dùng để di chuyển file đến địa chỉ mới và đổi tên (nếu có)
- rm dùng để xóa file
- rmdir dùng để xóa thư mục rỗng
- search dùng để tìm kiếm file hoặc thư mục
Nhóm lệnh thao tác trên Local:
Các lệnh trong nhóm này được thực hiện trên hệ thống Local, cụ thể là máy Kali Linux Chúng tương tự như các lệnh trên Remote, chỉ khác là có thêm chữ "l" ở đầu câu lệnh.
- getlwd, lpwd cho biết địa chỉ thư mục đang thực hiện
- lcd dùng để di chuyển thư mục thực thi hiện hành
- upload dùng để tải lên một tập tin từ local lên mục tiêu
- download dùng để tải xuống một tập tin từ remote về local
Nhóm này gồm các lệnh xem thông tin về hệ thống mạng
- arp dùng để liệt kê địa chỉ IP và MAC trong mạng
- ifconfig và ipconfig dùng để hiển thị cấu hình card mạng của mục tiêu
- netstat dùng để liệt kê các kết nối của mục tiêu
Các lệnh quản lý hệ thống máy tính của mục tiêu:
- clearev dùng để xóa event log trên máy tính nạn nhận, thường dùng để xóa dấu vết sau khi tấn công
- getpid dùng để xem PID của tiến trình chạy malware Có thể sử dụng lệnh migrate để thay đổi
Lệnh ps được sử dụng để hiển thị thông tin chi tiết về các tiến trình đang hoạt động trên hệ thống, bao gồm PID, PPID, tên tiến trình, kiến trúc phần mềm, người dùng khởi chạy và thư mục chứa của chúng.
- kill dùng để tắt một tiến trình đang chạy
- suspend dùng để tạm dừng hoặc tiếp tục một tiến trình
- reboot dùng để khởi động lại máy mục tiêu
- shutdown dùng để tắt máy mục tiêu
Chụp ảnh màn hình, webcam và ghi âm
Phần này bao gồm hai nhóm lệnh từ User Interface Commands và Webcam Commands
- screenshot dùng để chụp ảnh màn hình máy tính của mục tiêu
- run webcam [option] dùng để điều khiển webcam mục tiêu
- run sound_recorder [option] dùng để ghi âm máy tính mục tiêu
- run dùng để khởi chạy một script, nếu bạn muốn xem danh sách các script thì hãy gõ run rồi ấn hai lần nút Tab trên bàn phím
- checkvm dùng để kiểm tra mục tiêu là máy ảo hay máy thật Nếu không sử dụng được, bạn có thể dùng post/windows/gather/checkvm trên Metasploit
- shell dùng để mở chương trình MS-DOS và điều khiển nó
Metasploit cung cấp nhiều script hữu ích trong Framework, hỗ trợ người dùng sau khi đã thành công thỏa thuận với mục tiêu Khi bạn có được một session với mục tiêu, các script trong Meterpreter có thể được sử dụng để tùy chỉnh theo nhu cầu của bạn.
- checkvm dùng để kiểm tra xem mục tiêu đã khai thác của bạn có phải là máy ảo hay không
GetCountermeasure được sử dụng để kiểm tra cấu hình bảo mật trên hệ thống nạn nhân, đồng thời có khả năng vô hiệu hóa các biện pháp bảo mật như phần mềm diệt virus, tường lửa và nhiều biện pháp khác.
- getgui kích hoạt RDP (Remote Desktop Protocol) trên hệ thống đích nếu nó bị vô hiệu hóa
- get_local_subnets dùng để lấy subnet mask của máy nạn nhân Đây là một thông tin rất hữu ích dùng cho kỹ thuật pivoting
- gettelnet dùng để kích hoạt telnet trên máy nạn nhân nếu nó chưa được kích hoạt
- killav dùng để vô hiệu hóa các chương trình diệt virus (AV) trên máy nạn nhân
- remotewinenum dùng để liệt kê các thông tin về hệ thống của nạn nhân thông qua wmic, ghi chú nơi mà logs được lưu trữ
- scraper dùng để lấy thêm thông tin về hệ thống, bao gồm cả registry.
Demo sử dụng Metasploit
Quét ứng dụng web bằng WMAP
Metasploit không chỉ nổi tiếng với việc tìm kiếm và khai thác lỗ hổng, mà giờ đây còn cho phép quét các lỗ hổng thông qua plugin WMAP WMAP là một công cụ quét lỗ hổng ứng dụng web mạnh mẽ có sẵn trong Kali Linux và được tích hợp vào Metasploit Framework Trong bài lab này, chúng ta sẽ sử dụng DVWA (Damn Vulnerable Web Application) làm mục tiêu để thực hành.
Để bắt đầu, bước đầu tiên là thiết lập cơ sở dữ liệu Metasploit, vì plugin cụ thể này yêu cầu nó để hoạt động Metasploit sử dụng hệ thống cơ sở dữ liệu PostgreSQL, giúp theo dõi lượng lớn thông tin trong quá trình thử nghiệm thâm nhập Việc này cho phép nhập và xuất kết quả quét từ các công cụ khác, đồng thời lưu trữ thông tin xác thực, dịch vụ và dữ liệu quan trọng đã phát hiện.
Bạn có thể khởi tạo cơ sở dữ liệu cho Metasploit bằng cách sử dụng lệnh msfdb init trong terminal, thao tác này sẽ tạo ra cơ sở dữ liệu và người dùng mặc định để Metasploit có thể tương tác.
Hình 13 Khởi tạo cơ sở dữ liệu
Tiếp theo, khởi động dịch vụ PostgreSQL với service postgresql start
Hình 14 Khởi động dịch vụ PostgreSQL
Bây giờ có thể kích hoạt Metasploit bằng cách gõ msfconsole
Cuối cùng, có thể kiểm tra xem cơ sở dữ liệu đã được tải và hoạt động bình thường chưa bằng cách sử dụng lệnh db_status
Hình 15 Kiểm tra trạng thái cơ sở dữ liệu
Thật dễ dàng để tải plugin WMAP bằng lệnh load wmap
Từ đây, gõ ? để hiển thị menu trợ giúp của Metasploit, sẽ thấy các lệnh cho WMAP và mô tả của chúng ở đầu menu
Hình 17 Hiển thị các lệnh cùng mô tả cho WMAP
Bước 3 Thêm trang web để quét
Để hiển thị các tùy chọn có sẵn, hãy nhập lệnh phù hợp Bắt đầu quản lý các trang web mà bạn muốn quét bằng cách sử dụng wmap_sites.
Hình 18 Các tùy chọn cho lệnh wmap_sites Để thêm một trang web, sử dụng wmap_sites với cờ -a theo sau là địa chỉ trang web cần quét
Hình 19 Thêm địa chỉ trang web cần quét
Bây giờ có thể liệt kê các trang có sẵn bằng cách sử dụng wmap_sites với cờ -l
Hình 20 Liệt kê các trang web có sẵn
Bước 4 Chỉ định URL mục tiêu
Tiếp theo cần đặt URL mục tiêu cụ thể muốn quét bằng cách sử dụng câu lệnh wmap_targets
Hình 21 Các tùy chọn cho lệnh wmap_targets
Bạn có thể xác định mục tiêu bằng cách sử dụng wmap_targets với cờ -t theo sau là URL Để liệt kê các mục tiêu đã được xác định, hãy sử dụng wmap_targets với cờ -l.
Hình 22 Xác định và liệu kê các mục tiêu được xác định
Gõ wmap_run tại dấu nhắc lệnh để xem các tùy chọn cho lệnh này
Hình 23 Các tùy chọn cho lệnh wmap_run
Có thể sử dụng wmap_run với cờ -t để liệt kê tất cả các mô-đun đã bật trước khi quét mục tiêu
Hình 24 Liệt kê các mô-đun được bật sử dụng lệnh wmap_run -t
Bài viết liệt kê tất cả các mô-đun đã được kích hoạt, trong đó có một số tính năng bị vô hiệu hóa, chẳng hạn như mô-đun SSL, do địa chỉ mục tiêu không sử dụng Để có mô tả chi tiết về bất kỳ mô-đun nào, bạn có thể sử dụng lệnh info kèm theo đường dẫn đầy đủ của mô-đun đó.
Hình 25 Thông tin cụ thể về một mô-đun được liệt kê
Để bắt đầu quá trình quét, sử dụng lệnh wmap_run với cờ -e, cho phép chạy tất cả các mô-đun thay vì chỉ một mô-đun cụ thể Thời gian hoàn thành quét sẽ phụ thuộc vào trang web mục tiêu và số lượng mô-đun được kích hoạt.
Hình 26 Quá trình quét với lệnh wmap_run -e
Hình 27 Kết thúc quá trình quét và trả về thời gian quét
Cuối cùng, gõ lệnh wmap_vulns -l để hiển thị kết quả quét
Hình 28 Kết quả hiển thị sau khi quét
Những phát hiện thú vị về mục tiêu đã được ghi nhận, cho phép thu thập thêm thông tin về các lỗ hổng đã được báo cáo Với vai trò là những người kiểm thử thâm nhập, chúng ta có thể tiến hành điều tra chi tiết từng phát hiện và xác định khả năng tồn tại của các phương pháp tấn công tiềm ẩn.
WMAP có thể không mang lại nhiều thông tin chi tiết như các công cụ quét lỗ hổng bảo mật khác, nhưng nó lại tích hợp sẵn với Metasploit Framework, giúp người dùng dễ dàng sử dụng và triển khai.
27 dàng sử dụng nó mà không cần cài đặt Điều đó làm nó trở thành trình quét trang web hoặc ứng dụng web rất hữu ích.
Tạo Web backdoor payload với Metasploit
Metasploit cung cấp nhiều loại payload cho chức năng post-exploitation thông qua cửa hậu dựa trên tệp Trong bài lab này, người đọc sẽ giả định rằng họ đã phát hiện lỗ hổng trên máy chủ cho phép tải tệp lên mà không có whitelist Máy chủ LAMP có địa chỉ IP 162.243.85.82, trong khi Metasploit đang hoạt động trên máy tính với IP NAT nội bộ là 192.168.4.211.
Để tạo một bind payload PHP Meterpreter, chúng ta sẽ sử dụng công cụ msfvenom, một phần của Metasploit Framework, nhằm tạo ra một shell PHP Meterpreter cơ bản Msfvenom đã thay thế các công cụ cũ hơn như msfpayload và msfencode trong việc tạo và mã hóa các payload khác nhau Hãy sử dụng lệnh msfvenom để kiểm tra hoạt động của công cụ này.
Có thể xem danh sách các payload có sẵn trong Msfvenom bằng lệnh sau: msfvenom -l payloads
Hình 29 Danh sách các payload có sẵn trong msfvenom
Kết quả đã được rút gọn do có quá nhiều payload để hiển thị, nhưng chúng ta sẽ sử dụng payload php/meterpreter/bind_tcp, lắng nghe trên một cổng chỉ định trên máy chủ bị xâm nhập và trả về shell Meterpreter khi có kết nối Để tạo payload này dưới dạng tập lệnh PHP, trước tiên cần xem các tùy chọn cấu hình có sẵn bằng cách sử dụng đối số payload-options để liệt kê các tùy chọn và -p để chọn payload Câu lệnh sẽ là: msfvenom -p php/meterpreter/bind_tcp payload-options.
Hình 30 Kết quả trả về của câu lệnh msfvenom -p php/meterpreter/bind_tcp payload-options
Bây giờ sẽ tạo payload của mình và đặt LPORT thành 60000
Hình 31 Tạo payload và thiết lập LPORT
Để khai thác lỗ hổng, người dùng có thể tải lên tệp php-msf.php vào webroot của máy chủ dễ bị tấn công hoặc vào bất kỳ thư mục nào có thể truy cập trong webroot Đồng thời, cần thiết lập một trình xử lý payload để gửi yêu cầu đến bind payload, cho phép lắng nghe kết nối Cuối cùng, hãy kích hoạt msfconsole và thiết lập trình xử lý payload để thiết lập kết nối với bind shell khi thực thi.
Hình 32 Tạo trình xử lý payload
Có thể xác minh cấu hình này bằng cách chạy lệnh show options trong console
Hình 33 Kiểm tra lại cấu hình đã thiết lập
Thực thi PHP Meterpreter đã tải lên thông qua Apache và trình duyệt web để khởi động trình xử lý Kết quả sẽ là một phiên Meterpreter hoạt động qua PHP.
Hình 34 Meterpreter thông qua PHP
Sau khi có MSF, người dùng có thể thực hiện nhiều thao tác, bao gồm việc nhận quyền truy cập shell lệnh gốc và trích xuất thông tin hệ thống.
Hình 35 Thông tin về hệ thống và shell dòng lệnh thông qua meterpreter
Các payload gốc dựa trên PHP thường không ổn định, dẫn đến việc phiên có thể bị kết thúc sau một thời gian Điều này gây ra các thông báo lỗi phổ biến khi xử lý payload, ảnh hưởng đến hiệu suất và tính khả dụng của ứng dụng.
Để khắc phục lỗi thường gặp với các payload dựa trên PHP, có thể tạo payload riêng cho Linux hoặc bất kỳ máy chủ nào đang hoạt động Quy trình tạo payload Linux Meterpreter tương tự như payload PHP Meterpreter trước đó Sử dụng payload linux/x86/meterpreter/bind_tcp, cấu hình LPORT thành 50000 và lưu đầu ra dưới tên linux-msf.backdoor.
Hình 37 Tạo payload Linux Meterpreter
Sau khi hoàn tất, khởi động lại Meterpreter và tải lên payload Linux gốc để thực thi, nhằm có được một phiên Meterpreter ổn định hơn Đầu tiên, cần tải lên payload Linux và chạy phiên MSF hiện tại ở chế độ nền.
Hình 38 Tải payload Linux và chạy nền phiên msf hiện tại
Sau đó, định cấu hình lại trình xử lý và chạy nó trong nền với exploit –j
Hình 39 Cấu hình lại trình xử lý và chạy với lệnh exploit -j
Quay lại phiên PHP ban đầu và sau đó thực thi payload Linux
Hình 40 Thực thi payload Linux sau khi quay lại phiên PHP ban đầu
Và nhận được phiên Linux Meterpreter ổn định hơn
Sử dụng Meterpreter giúp kiểm soát và thu thập thông tin quan trọng một cách dễ dàng thông qua các tập lệnh tiện ích như enum_configs, enum_network và nhiều công cụ khác.
Hình 42 Kết quả của tập lệnh enum_configs
Đánh giá
Ưu nhược điểm
Metasploit Framework là một công cụ mạnh mẽ và được ưa chuộng trong kiểm thử thâm nhập, tuy nhiên cũng có những ưu và nhược điểm riêng như bất kỳ phần mềm nào khác Dưới đây là một số nhận xét của tôi về Metasploit Framework.
- Metasploit là phần mềm mã nguồn mở, có thể dễ dàng tải và cài đặt
- Cộng đồng sử dụng Metasploit rất là lớn, thuận tiện cho việc trao đổi học tập, giải đáp khó khăn, thắc mắc,
- Được hỗ trợ và tích hợp sẵn ở trong hầu như tất cả các hệ điều hành phổ biến hiện nay như: Windows, Linux, MacOS,
- Liên tục cập nhật về các thông tin lỗ hổng mới
Metasploit Framework là một công cụ mạnh mẽ với nhiều thành phần và module riêng biệt, đi kèm với tài liệu chi tiết Tuy nhiên, do quy mô lớn của nó, người mới bắt đầu có thể gặp khó khăn trong việc tiếp cận và hiểu rõ Để thành thạo Metasploit, người dùng cần kiên trì và dành thời gian để tìm hiểu.
- Nhiều module hiếm khi được sử dụng, đôi khi là không cần thiết
Để khai thác tối đa tiềm năng của Metasploit, người dùng cần đầu tư vào phiên bản premium, với mức giá khoảng 5000 USD mỗi năm.
So sánh với Nmap [6]
Cả Metasploit và Nmap đều là những công cụ kiểm thử xâm nhập mạnh mẽ, nhưng chúng phục vụ các mục đích khác nhau Nmap chuyên về phát hiện và ánh xạ mạng, giúp kiểm kê các thiết bị và dịch vụ trong hệ thống Ngược lại, Metasploit được sử dụng để gắn các payload bất chính, cho phép thực hiện các cuộc tấn công vào máy chủ một cách hiệu quả.
Cả Metasploit và Nmap đều có nguồn gốc từ dòng lệnh, nhưng không phải ai cũng dễ dàng sử dụng chúng nếu thiếu kỹ năng kỹ thuật Metasploit, sản phẩm bán thương mại của Rapid7, được trang bị giao diện đồ họa người dùng (GUI) thân thiện hơn, trong khi Nmap cung cấp nhiều GUI khác nhau, mặc dù chúng thường đơn giản và dễ sử dụng.
Cả Metasploit và Nmap đều thu hút đông đảo người ủng hộ từ cộng đồng Metasploit, được Rapid7 mua lại vào năm 2007, vẫn tiếp tục được duy trì công khai, trong khi Nmap cùng với ứng dụng GUI Zenmap cũng được phát triển liên tục bởi cộng đồng người dùng.
Nmap hiện có phiên bản 7.30, với lịch sử phát hành chi tiết trên trang web dự án Trong khi đó, phiên bản ổn định hiện tại của Metasploit là 4.12, kèm theo các ghi chú phát hành hàng tuần từ Rapid7.
Cả Nmap và ứng dụng GUI Zenmap đều có sẵn miễn phí dưới dạng mã nguồn mở, có thể tải xuống từ trang web nmap.org Tại đây, người dùng cũng có thể tìm thấy nhiều tài nguyên hữu ích khác như hướng dẫn cài đặt, tài liệu tham khảo và một nửa của Ebook "Nmap Network Scanning - The Official Nmap Project Guide to Network Discovery and Security Scanning".
Các phiên bản Metasploit Framework và Community có thể tải xuống từ trang web Rapid7, trong khi mã nguồn cốt lõi được lưu trữ trên GitHub Ngoài ra, nhiều nguồn hỗ trợ cộng đồng miễn phí cũng có sẵn trên trang web của công ty Đối với các tính năng nâng cao và hỗ trợ doanh nghiệp, người dùng có thể lựa chọn với một khoản phí.
API và Khả năng mở rộng
Metasploit Remote API cho phép thực thi và kích hoạt các dịch vụ của Metasploit Framework và Metasploit Pro, trong khi API Nmap Scripting Engine cung cấp thông tin về máy chủ đích như trạng thái cổng và kết quả phát hiện phiên bản Cả hai dịch vụ đều có khả năng mở rộng hoàn toàn nhờ vào việc sử dụng mã nguồn mở.
Tích hợp bên thứ ba
Metasploit cung cấp nhiều plugin cho phép tích hợp với các giải pháp bảo mật phổ biến như Nexpose, Nessus và OpenVAS Trong khi đó, Nmap thường được kết hợp với các sản phẩm khác, nhờ vào việc tổ chức mẹ của nó tạo ra doanh thu thông qua việc cấp phép công nghệ cho các dịch vụ thương mại khác.
Các công ty sử dụng
Nmap và Metasploit là hai công cụ phổ biến được sử dụng rộng rãi bởi cá nhân và tổ chức trên toàn cầu, từ IBM đến Google Nhiều công ty lớn như Rodale, TriNet, Porter Airlines và BlackLine cũng áp dụng Metasploit trong hoạt động của mình Việc làm quen với những công cụ này có thể gặp phải đường cong học tập nhất định.
Cả hai công cụ yêu cầu trình độ trung cấp về kỹ thuật để vận hành, điều này không quá bất ngờ vì kiểm thử xâm nhập không phải là công việc dành cho người mới Tuy nhiên, việc có tài trợ từ công ty mang lại những lợi ích nhất định; giao diện người dùng thân thiện với doanh nghiệp của Metasploit giúp người dùng dễ dàng làm quen và sử dụng hiệu quả hơn.
Cả Metasploit và Nmap đều hoạt động tốt khi nói đến bảo mật chu vi trang web 2.2 Bảng điểm đánh giá tổng thể
Bảng 1 Đánh giá tổng thể giữa Metasploit và Nmap
Hỗ trợ cộng đồng 5 / 5 1 / 5 Đánh giá phát hành 5 / 5 3 / 5 Định giá và Hỗ trợ 4 / 5 3 / 5
API và Khả năng mở rộng 4 / 5 5 / 5
Tích hợp bên thứ ba 4 / 5 1 / 5
Các công ty sử dụng 5 / 5 5 / 5 Đường cong học tập 4 / 5 4 / 5