Professional Documents
Culture Documents
I. Giới thiệu
1.1. Lịch sử
Metasploit được phát triển vào năm 2003 như là một open source project bởi H.D.
Moore. Ban đầu được phát triển trong PERL, nhóm phát triển đã viết lại Metasploit trong Ruby
vào năm 2007, do đó bạn cần có Ruby trên hệ thống để có thể chạy Metasploit và phát triển các
khai thác của riêng bạn.
Sau nhiều năm thành công trong cộng đồng hacker/penetration tester, nó đã được Rapid7
mua lại vào năm 2009. Sau đó, Metasploit framework được chia thành ba phiên bản, trong đó
có hai phiên bản Metasploit Express và Metasploit Professional là phiên bản thương mại,
Metasploit Professional được bán với giá 1.800$. Cả hai đều sở hữu một giao diện khá đẹp
nhiều bells và whistles, bao gồm cả chức năng tự động hóa một số cuộc tấn công. Ngoài ra còn
có một phiên bản là open source community edition được gọi là Metasploit Community.
May mắn thay, một số nhà phát triển độc lập tại Armitage đã tạo ra một GUI nguồn mở
miễn phí cho Metasploit, giao diện khá đẹp và thanh lịch, thích hợp sử dụng cho những người
thích chế độ hoạt động point-and-click.
Metasploit phiên bản dành cho Windows, sở hữu nhiều tính năng (raw IP packet
injection, wireless driver exploitation, SMB relaying attacks,) không có sẵn trong môi trường
Windows, hạn chế này có thể khắc phục bằng cách sử dụng Cygwin hoặc chạy Windows trong
môi trường ảo trên Linux.
1.2. Khái niệm
Metasploit Framework là một môi trường dùng để kiểm tra, tấn công và khai thác lỗi của
các service. Ban đầu Metasploit được xây dựng từ ngôn ngữ hướng đối tượng Perl với những
component được viết bằng C và Python sau đó được viết lại vằng ruby. Đây là một công cụ mã
nguồn mở phát triển nhằm sử dụng các shellcode để tấn công, khai thác khai thác lỗi của các
dịch vụ Metasploit có thể chạy trên hầu hết các hệ điều hành: Linux, Windows, MacOS.
Một số khái niệm cơ bản:
RHOST: Địa chỉ IP của máy bị tấn công. Nếu tấn công ngoài Internet thì là IP
Public, RHOST cũng có thể là URL Website.
LHOST: Địa chỉ IP của máy Hacker. Nếu tấn công ngoài Internet thì là IP Public.
LPORT: Port mở ra trên máy Hacker. Nếu tấn công ngoài Internet thì bắt buộc Port
đó phải mở trên Router, còn hack trong mạng LAN thì port nào cũng được.
RPORT: Port trên máy bị tấn công. Khi đi khai thác lỗ hổng, tùy lỗ hổng nằm trên
giao thức nào thì có các RPORT đặc thù, thực chất Metasploit sẽ tự đặt cho các bạn.
PAYLOAD: Có cấu trúc như sau: Tên hệ điều hành / Kiểu hệ thống / Kiểu tấn công /
Giao thức.
o Tên hệ điều hành: android hay windows
o Kiểu hệ thống: x86 hay x64
o Kiểu tấn công: meterpreter hay shell
o Giao thức: reverse_tcp, reverse_tcp_dns, reverse_https
Ví dụ: windows/meterpreter/reverse_tcp_dns
Giới thiệu một số lệnh cơ bản
- Back: Lệnh này dùng khi bạn muốn thoát ra khỏi module bạn đã chọn trước đó sau khi hoàn
thành công việc hoặc muốn chuyển sang công việc khác.
Ví dụ: msf payload(reverse http) > back msf>
- Check: Lệnh này giúp ta kiểm tra đã cấu hình đúng cho khai thác chưa, mọi việc đã hoàn
thành chưa. Cho ta biết kết quả mà không cần phải thực thi khai thác đó. Nhưng không phải tất
cả mọi mã khai thác đều hỗ trợ lệnh này.
- Connect: Lệnh này giống như một bản netcat thu nhỏ đc cho vào metasploit được hỗ trợ với
ssl, proxy, pivoting... Với việc dùng câu lệnh connect với địa chỉ ip và port tương ứng, chúng ta
có thể connect tới một host từ metasploit giống như khi dùng với netcat hoặc telnet vậy.
Ví dụ: msf > connect 118.69.228.254 22
- Info: Lệnh này cho biết những thông tin chi tiết của một module (hay một mã khai thác nào
đó ). Hiển thị cho ta thông tin cơ bản nhất, bao gồm cả các tùy chọn cần thiết.
- Irb: Lệnh này cho ta thao tác trên môi trường của ruby.
Ví dụ: msf > irb --h
- Jobs: Lệnh này cho ta biết các module đang chạy.
- Load: Lệnh này để load một plugin từ metasploit plugins.
- Search: Lệnh này giúp ta tìm kiếm exploit, auxiliary, encoder. Trong đó nó còn hỗ trợ một số
keywork giúp cải tiến khả năng tìm kiếm như: name, path, platform, port, type, app, author,
cve, bid, osvdb, edb.
Ví dụ: search cve:2009 type:exploit app:client.
- Sessions: lệnh này liệt kê các session đang tồn tại, session ở đây có thể là session của shell,
của meterpreter ....
- Set - Unset: Lệnh cho phép ta cấu hình cho các exploit... lệnh này gặp thường xuyên. Unset là
lệnh có ý nghĩa ngược lại.
- Setg - Unsetg: Trong quá trình thực hiện tấn công một mục tiêu, hoặc nhiều mục tiêu. Ta có
thể dùng một exploit hoặc đôi khi là nhiều exploit. Có một vào option nếu set bình thường thì
ta phải set nhiều lần. Nhưng nếu ta để cho các option này có ý nghĩa toàn cục. Thì việc lặp lại
là không cần. Nó có hiệu lực cho mọi exploit, auxiliary. Đó là ý nghĩa của setg (global set). Để
hủy thì ta dùng unsetg. Nếu muốn lưu việc cấu hình này lại dùng lệnh "save".
- Show: Liệt kê các module hiện tại.
- Use: Cho phép chọn một một module.
Bước 5: Gửi file nén này cho nạn nhân, có kèm theo passwork giải nén để nạn nhân giải
nén file.
Bước 6: Tấn công bằng metasploit
Sử dụng module: exploit/multi/handler
Set các giá trị LHOST (ip của hacker), LPORT (tùy ý)
Khai thác thành công, chúng ta có thể theo dõi màn hình desktop của nạn nhân.
2.3. Tấn công Android.
Mô hình
Bươc 2: Tạo payload như hình dưới dùng msfvenom trong đó:
+ LHOST : là địa chỉ ip của máy chúng ta (Máy tấn công)
+ LPORT : là số hiệu port trên máy chúng ta
+ facebook.apk: là tên payload sẽ được cài trên máy nạn nhân, vì app được cài
trên máy android nên có đuôi mở rộng là apk.
Bước 3: Upload payload vừa tạo lên website, ở đây mình dùng chính máy chủ web
apache2 có sẵn.
Bước 4: Khởi động giao diện metasploit framework bằng lệnh “msfconcole”, sau đó
dùng modoule “exploit/multi/hander” và thiết lập các giá trị như hình dưới. Xong thì chạy lệnh
“exploit” hoặc các bạn có thể chạy bằng lệnh “run”.
Bước 5: Trên máy android của nạn nhân
Click vào file facebook.apk sẻ tiến hành tải và cài đặt như hình bên dưới.
Sau khi hoàn tất cài đặt sẽ có icon trên màn hình chính như sau:
Bước 6: Trên máy tính kẻ tấn công
Sau khi nạn nhân click vào icon trên thì sẽ có thông báo như hình dưới và kẻ tấn công có
thể khai thác mục tiêu theo ý muốn của mình.