Kali Linux Căn Bản – Bài 3: Giới thiệu Metasploit Framework

Xin chào,

Chào mừng các bạn đến với bài thứ 3 của series Kali Linux Căn bản. Trong bài hôm nay, chúng ta sẽ mở đầu chuyên đề Metasploit của phòng CC: Pen Testing trên TryHackMe bằng một bài viết ngắn giới thiệu Metasploit Framework.

Cũng xin lưu ý với các bạn là trong chuyên đề Metasploit của series Kali Linux Căn Bản, chúng ta sẽ không học sâu về Metasploit vì đây là một chủ để lớn cần hẳn 1 series riêng để làm về nó, thế nên mình sẽ chỉ tóm gọn những phần quan trọng và căn bản của Metasploit mà thôi.

Tuy nhiên, với những bạn mong muốn học sâu hơn về Metasploit để phục vụ cho công việc trong tương lai thì các bạn cứ an tâm vì anh Khoa NT đã gần như hoàn thành nguyên một series với hơn 30 videos hướng dẫn chi tiết cách sử dụng Metasploit cho mục đích pentest hợp pháp. Hiện series đang trong giai đoạn kiểm tra lại chất lượng các videos lần cuối, sau đó được triển khai và giới thiệu đến các bạn. Bạn nào quan tâm, xin hãy theo dõi fanpage nhé, khi nào có thông tin, anh KhoaNT sẽ cập nhật ngay lên fanpage cho các bạn.

Còn bây giờ, chúng ta bắt đầu vào bài của ngày hôm nay.


1 – Metasploit là gì?

1a – Giới thiệu về Metasploit

Metasploit là một nền tảng phục vụ cho mục đích kiểm định bảo mật trên giao diện dòng lệnh. Metasploit được ra mắt vào năm 2003 và sở hữu bởi Rapid7, một công ty về bảo mật có trụ sở chính đặt tại Massachusetts Mỹ. Metasploit hiện có 2 phiên bản, một phiên bản mã nguồn mở và một phiên bản dành cho người dùng chuyên nghiệp với giá cho một năm sử dụng cho một người lên đến $15000 đô.

Metasploit được viết bằng ngôn ngữ Ruby. Bản chất của Metasploit hiểu theo cách đơn giản nhất chính là một kho chứa các đoạn code được viết bằng Ruby nhằm mục đích kiểm tra bảo mật của hệ thống hoặc ứng dụng. Các đoạn code này có thể dùng để tấn công, xâm nhập, leo thang đặc quyền, thu thập dữ liệu, quét lỗi, chuyển dữ liệu giữa máy tấn công và máy nạn nhân, v.v. trên nhiều nền tảng khác nhau từ smart devices (Android, IOS), máy tính (Linux, Mac, Windows), các thiết bị IoT, v.v.

Vì bản thân Metasploit chứa các phần mềm nguy hiểu như vậy nên Metasploit không được khuyến khích cài trên các máy được sử dụng cho mục đích thường nhật hàng ngày vì có thể dẫn đến tình trạng người dùng hệ thống có cài Metasploit sẽ bị tấn công ngược lại. Các phần mềm diệt virus (AV) cũng coi Metasploit là một mối nguy hiểm, nên khi quét thấy Metasploit, các AV sẽ xóa nó ngay.

Metasploit chỉ nên được dùng trên máy ảo hoặc máy dành riêng cho mục đích pentest và được chạy trên các hệ điều hành đã được tùy biến cho mục đích pentest như Kali Linux, Parrot Linux hay Windows Commando, v.v.

Metasploit không chỉ đơn giản là một kho “chứa vũ khí” dành cho việc kiểm định hệ thống. Nó còn có thể được dùng để giúp pentesters tiết kiệm thời gian tìm và xâm nhập các lỗ hổng đã được tìm ra nhưng chưa được vá trên hệ thống mục tiêu, điều này cho phép pentesters có thể tập trung vào các lỗi liên quan đến chính sách (policies), social engineering hay các lỗ hổng zero day, v.v.

1b – Để sử dụng Metasploit bạn cần gì?

Để sử dụng hiệu quả Metasploit bạn cần 2 điều sau:

  1. Một máy ảo hoặc thiết bị có chạy hệ điều hành tùy biến cho mục đích pentest có đi kèm Metasploit
  2. Kiến thức về Penetration Testing

Điều số 1 thì quá dễ rồi. Điều số 2 mới thật sự quan trọng. Khi dùng Metasploit bạn cần phải hiểu rõ giới hạn của nó, đồng thời bạn cũng phải có kiến thức nền tảng pentest thật chắc cũng như phải hiểu rõ đối tượng bạn muốn tấn công. Cũng đừng quên phải đọc thật kỹ yêu cầu và mô tả của code mà bạn sẽ dùng để tấn công.

Ví dụ: Bạn quét lỗi và phát hiện máy mục tiêu dính lỗi Eternal Blue (ms17-010), nhưng lỗi Eternal Blue trải dài từ hệ điều hành Windows Vista cho tới tận Windows 10, do đó, không phải code tấn công nào trong Metasploit cũng sử dụng được. Nếu bạn kém về mảng phân tích dữ liệu thu được cũng như không giỏi về việc thu thập thông tin, bạn chắc chắn sẽ không tấn công hệ thống được.

Một ví dụ khác: Bạn có nhớ khi chúng ta tấn công server Pickle Rick không? Lúc đó, chúng ta tìm được username trong phần front end code của website, sau đó, ta lại tìm được file robots.txt chứa mật khẩu đăng nhập; sau khi tìm được trang đăng nhập và thử đăng nhập vào login page thành công, chúng ta tiến hành inject một đoạn code vào Command Panel để lấy reverse shell. (Bạn nào quên có thể xem lại tại đây).

Tất cả các bước kể trên đều phải thực hiện một cách thủ công và đòi hỏi bạn có ít nhiều kiến thức về penetration testing chứ không thể sử dụng Metasploit để tự động thực hiện tất cả các bước trên được.

Nguyên nhân là vì khả năng của Metasploit chỉ giới hạn trong những đoạn code mà nó được cung cấp. Và thông thường, các lập trình viên viết và đóng góp code cho Metasploit họ sẽ tập trung viết code khai thác các lỗi CVE (Common Vulnerabilities and Exposures) vốn có thể được sử dụng trên một số lượng lớn mục tiêu, chứ gần như không có ai viết code khai thác các lỗi liên quan đến system policies như Pickle Rick cả. Nguyên nhân là do các lỗi system policies xuất phát từ sơ xuất của system admin khi cấu hình thiết bị làm lộ thông tin nhạy cảm dẫn đến bị tấn công, và vì các lỗi này trên mỗi hệ thống khác nhau là khác nhau, và sẽ có hệ thống mắc lỗi cũng như hệ thống không mắc lỗi, nên nếu viết code tấn công cho server Pickle Rick, thì code đó nhiều khả năng sẽ chỉ sử dụng được Pickle Rick thôi.

Nếu bạn muốn nâng cao khả năng code Ruby của mình bạn hoàn toàn có thể thử tạo một code tấn công tự động cho server Pickle Rick.

Tóm lại, có thể coi Metasploit là một khẩu súng, và để tránh bắn vào chân mình cũng như để sử dụng nó hiệu quả. Bạn cần phải có đủ kiến thức để sử dụng khẩu súng ấy.

2 – Khởi động Metasploit

Bây giờ chúng ta sẽ qua đến phần thực hành.

Trước khi khởi động Metasploit, trên Kali Linux, chúng ta cần phải chạy PostgreSQL database trước.

vincent@kali:~$ sudo su
root@kali:~# systemctl start postgresql
root@kali:~# msfdb init
H2.1

Lí do bạn cần khởi động PostgreSQL database trước khi chạy Metasploit là vì Metasploit sử dụng PostgreSQL database để tự động lưu lại những kết quả thu được trong quá trình bạn pentest. Thực tế khi bạn phải pentest những hệ thống lớn và phức tạp, có khi bạn sẽ phải chạy các pentest scans trong vài ngày và lượng dữ liệu trả về là vô cùng lớn, nếu không được lưu giữ và sắp xếp một cách hiệu quả, khả năng bạn bỏ sót thông tin quan trọng là rất cao. Hiểu được điều đó, Rapid7 đã tích hợp PostgreSQL vào Metasploit để nó tự động lưu lại những kết quả như thông tin mục tiêu, systems logs, v.v trong quá trình pentest.

Để khởi động Metasploit chúng ta gõ câu lệnh sau:

root@kali:~# msfconsole
H2.2

Chúng ta sẽ kiểm tra xem PostgreSQL đã được kết nối với Metasploit chưa thông qua câu lệnh sau:

msf6 > db_status 
[*] Connected to msf. Connection type: postgresql.

Nếu thấy kết quả như dòng [*] nghĩa là Metasploit đã kết nối database thành công.

3 – Làm quen với lệnh help trong Metasploit (task 7)

Để tra cứu các câu lệnh của Metasploit, bạn dùng lệnh help

msf6 > help
H3.1

Các bạn hãy tra cứu kết quả xuất ra của lệnh help để trả lời 6 câu hỏi của task 7 nhé.

Lưu ý:

Khi sử dụng lệnh help, các bạn cần lưu ý phần đầu của câu lệnh là gì. Nếu phần đầu của câu lệnh là (msf6 >) thì khi dùng lệnh help, Metasploit sẽ xuất ra danh sách câu lệnh kèm chú thích của Metasploit. Còn nếu phần đầu là các giá trị khác như meterpreter, thì lệnh help sẽ xuất ra kết quả khác nhé. Cái này mình sẽ nói chi tiết hơn ở các bài sau.


Xin cám ơn các bạn và hẹn gặp lại ở bài sau,

Vincent Nguyễn

Source:

https://www.offensive-security.com/metasploit-unleashed/

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s