譯:h4d35
預估稿費:100RMB
投稿方式:發送郵件至linwei#360.cn,或登陸網頁版在線投稿
引言
想做端口掃描,NMAP是理想的選擇,但是有時候NMAP并不可用。有的時候僅僅是想看一下某個端口是否開放。在這些情況下,PowerShell確實能夠大放異彩。接下來我們聊聊如何使用PowerShell實現基本的端口掃描功能。
本文中用到的PowerShell命令
PowerShell端口掃描器
命令分解
1)1..1024 - 創建值為從1到1024的一系列變量
2)| - 管道運算符,將上述對象傳遞給循環體
3)% - 在PowerShell中,%是foreach對象的別名,用來開始一個循環。循環體為接下來使用大括號{}括起來的內容
4)echo - 將輸出打印至屏幕
5)new-object Net.Sockets.TcpClient - 新建一個.Net TcpClient類的實例,它允許我們和TCP端口之間建立socket連接
6).Connect("10.0.0.100",$_)) - 調用TcpClient類的Connect函數,參數為10.0.0.100和端口$_。其中$_這個變量表示當前對象,即本輪循環中的數字(1..1024)
7)"Port $_ is open!") - 當程序發現一個開放的端口時,屏幕打印『Port # is open!』
8)2>$null - 告訴PowerShell遇到任何錯誤都不顯示
上述示例中掃描的端口是1-1024,但是可以很容易改成如(22..53)、(8000..9000)等端口范圍。
在PowerShell中另外一種可用的方法是使用Test-NetConnection命令。該命令使用方法差不多,還能夠輸出更多有用的信息。
Test-NetConnection 針對某IP段中單個端口的掃描
Test-NetConnection的最大的不足是:該命令是在4.0版本的PowerShell中才引入的。
命令分解
1)foreach ($ip in 1..20) {} - 循環遍歷數字1到20
2)Test-NetConnection - Test-Connection是一個用來測試不同種類的網絡連接的工具
3)-Port 80 - 檢查80端口是否可用
4)-InformationLevel "Detailed" - 提供詳細的輸出信息
5)192.168.1.$ip - 針對列表中的IP地址,依次嘗試向80端口發起連接。在本例中,變量$ip從1循環至20
當然,構建一個可以遍歷多個系統的多個端口的掃描器也是可行的。
針對某IP段 & 多個端口的掃描器
這一版本的掃描器會對10.0.0.1-20IP段的1-1024端口進行掃描。注意,這可能需要花費較長時間才能完成掃描。一種更有效的方法是手動指定目標端口,比如接下來介紹的:
針對某IP段 & 多個端口的掃描器v2
額外獎勵 - 測試出口過濾
許多安全的網絡環境會開啟出口流量過濾控制,以限制對某些服務的出口協議的訪問。這對于提升HTTP/HTTPS/DNS通道的安全性是有好處的,原因之一就在于此。然而,當需要識別出可替代的出站訪問時,我們可以在內網中使用PowerShell來評估網絡防火墻上的出口過濾器。
PowerShell測試出口過濾器
有關PowerShell出口測試的更多信息,請參考Beau Bullock在*Black Hills Information Security中發表的文章:http://www.blackhillsinfosec.com/?p=4811
結論
PowerShell是一個強大的工具,一旦在Windows環境啟用了PowerShell,則幾乎可以用PS完成任何事情。大家如果有其他相關的PowerShell獨門絕技,歡迎留言評論。