滲透測試-Ngrok內網映射與穿透
前言
有的時候希望把本地內網系統映射到公網方便跨局域網訪問,Sunny-Ngrok提供國內免費的內網映射服務器,可以滿足我們這個需求。
內網穿透有什么用?
假設你寫了一個代碼功能,本地測試已經OK,此時,你要想讓千里之外的朋友幫你測試,會怎么做呢?
· A方案:如果你的朋友懂代碼,你可以把代碼打包發給他,讓他在本地測試;
· B方案:如果你的朋友不懂代碼,你只能搭建一套服務器,然后放到公網服務器上面,讓他通過外網訪問進行測試。
不論是A方案還是B方案,整個過程復雜繁瑣,特別是B方案,如果不會服務器部署那套,那直接白搭。
此時,Ngrok 就可以派上用場了,只需要打開輸入一個命令,就可以讓你千里之外的朋友測試了,整個操作耗時5秒不到。
為什么使用Sunny-Ngrok?
· 提供免費內網穿透服務,免費服務器支持綁定自定義域名;
· 管理內網服務器,內網web進行演示;
· 快速開發微信程序和第三方支付平臺調試;
· 本地WEB外網訪問、本地開發微信、TCP端口轉發;
· 本站新增FRP服務器,基于 FRP 實現https、udp轉發;
· 無需任何配置,下載客戶端之后直接一條命令讓外網訪問您的內網不再是距離。
Ngrok官網 提供了具體的使用教程:Sunny-Ngrok使用教程:http://www.ngrok.cc/_book/,本文記錄下具體的使用演示。
Py建站
在進行內網映射之前,先在本地搭建一個局域網站點,此處直接使用Python建立HTTP服務站店。Python搭建局域網HTTP站點很簡單,僅需一條命令即可,可用于局域網內部快速文件分享和傳輸。
1、在希望打開HTTP服務的文件夾路徑打開 Cmder:

2、執行以下命令,即可把當前目錄發布到本地8000端口:
python -m SimpleHTTPServer 8000br
同時站點訪問日志會即時在終端輸出打印,如下圖所示:

3、執行快捷鍵Ctrl + C可以終止HTTP服務,Linux系統使用 Python 搭建HTTP服務的方法同上。
內網穿透
實操演示
1、首先訪問 Ngrok 官網進行賬號注冊:

2、注冊完登錄進入系統,訪問“隧道開通”,選擇免費服務:

3、進行隧道配置:

4、點擊生成隧道列表,服務器自動分配了一個免費域名與我們指定的本地站點進行了映射,接下來下載 Ngrok 客戶端工具:

5、客戶端下載完成以后,解壓縮并在對應的路徑下打開 Cmder 終端:


6、在終端執行命令:sunny clientid 隧道id(上圖服務器分配的隧道id),即可成功建立映射:

7、這時候在公網直接在瀏覽器訪問 Ngrok 服務器分配給我們的域名即可訪問到本地站點:

原理淺析
在互聯網終端急劇增長的今天,公網ip已經成為稀缺資源,對于國內壟斷的電信運營商來講,更是不可能隨便免費給你一個公網IP,許多家庭寬帶都無法分配到公網IP,又或者公司學校安全角度考量,為了防止網絡攻擊,資料泄露,禁止內網機器通過路由器進行端口映射,搭建代理服務器,由此許多內網穿透、內網映射軟件應運而生。
Ngrok 穿透過程:
1. 當服務端接收到連接,就讀取映射表,判斷接收的端口對應于哪一個客戶端,然后向客戶端發送通知;
2. 客戶端收到通知,讀取本地映射表,判斷對應哪個內網地址,向內網地址發起連接;
3. 客戶端和內網的服務器建立連接后,向服務端發起一個連接,作為轉發通道;
4。服務端讀取請求數據,并通過轉發通道轉發到客戶端,客戶端讀取響應并通過轉發通道返回給請求。
這只是一個簡單的連接過程,其中還有映射端口的管理,如果是全端口映射還需要動態映射端口,目前只有網絡通有這個全端口的功能,對于一些特殊應用,還要修改解析修改轉發的數據才能穿透成功。
總結
至此,已成功借助 Ngrok 將本地內網系統映射到公網 Ngrok 分配的免費域名上,可以愉快地在公網訪問內部網站和資源啦(注意安全……)。