天天看點

Powershell Empire 繞過AV實作遠控

1. 前言

誰都喜歡架構。無論對于是平時出于各種目的遊走在網頁和伺服器中的黑客,還是從事網絡安全測試的安全人員來說,一個好的漏洞架構發揮的作用不言而喻。這其中的Metasploit脫穎而出。雖然這款架構內建了從漏洞發現到漏洞利用的幾乎所有功能,但是不得不承認其在木馬後門的免殺方面現如今已經不足以應付一些流氓殺軟了。但是,Powershell Empire可以。本篇文章是筆者在一次偶然的機會中接觸到powershell empire後進行簡單初步的摸索,由于關于這款工具的文章很少,大部分都沒有涉及到裡面子產品作用和原理,官方文檔能提供的資訊也不多。是以我也是盡力把自己了解的寫出來,筆者能力有限,更深層次的利用和原理剖析還在逐漸進行。請諒解。

Powershell Empire 繞過AV實作遠控

2. 為什麼是Powershell?

empire選擇了poweeshell作為攻擊平台總是有原因的。其作為windows平台下的一種指令行外殼程式和腳本環境,它可以使指令行使用者和腳本編寫者利用.NET Farmework。 說到這裡,你可能還是一臉懵逼,我也是,畢竟這隻是powershell的官方解釋。那我們來看下empire開發者是怎麼講的:

其中重要的一段是:"Scripting languages offer an advantage to an attacker because they provide a layer of abstraction that AV has no idea how to interpret. For example, a common AV bypass technique is to package malicious Python scripts into an executable. AV has a hard time distinguishing the resulting binary as malicious or legitimate because the Python interpreter itself has plenty of legitimate uses. PowerShell offers a distinct advantage in this scenario due to its tight integration with the Windows OS and considering it’s based upon the .NET framework. With such a powerful scripting environment, there is no need to drop files on disk. Everything, with the possible exception of the script itself run entirely memory-resident."

大緻意思是:腳本語言為攻擊者提供了一個優勢,因為它們提供了一個抽象層,殺軟(AV)不知道如何解釋。例如,常見的殺軟旁路技術是将惡意Python腳本打包成可執行檔案。殺軟很難将生成的二進制檔案區分為惡意的或合法的,因為Python解釋器本身有很多合法用途。PowerShell在這種情況下提供了明顯的優勢,因為它與Windows作業系統的緊密內建,并考慮到它基于.NET架構。使用如此強大的腳本環境,不需要将檔案放在磁盤上。所有的東西,除了腳本本身的可能例外,它完全是記憶體駐留的。

no need to drop files on disk:無需寫入硬碟,記憶體駐留。empire使攻擊者能在記憶體中運作指令,也就是empire使用powershell作為攻擊平台,并且有大機率成功繞過AV的原因。

這種記憶體中運作的指令是否會讓後來的入侵驗證出現困難?這個我還未咨詢相關的大佬和老師,暫時就不得而知了。

3. 初識Empire

和Metasploit一樣,empire內建了對主機控制提權,内網主機探測等主流的滲透測試功能。

其重要的由四大部分:listeners(偵聽器)、stagers(驿站)、agents(會話代理)、modules(子產品)

listeners相當于msf中的監聽子產品,用來設定本地IP進行會話監聽的。

stargers就是一段惡意代碼,它通過本機的會話代理(agent)實作本機與被攻擊主機的會話通道。

agents相當于msf中的session,當我們在被攻擊主機上成功執行惡意代碼(即木馬後門) 時,會反彈一個shell,并通過agent建構本地和被害主機會話。

modules這是一個我們在控制了目标主機後,對目标内網或域進行滲透所要使用的主要子產品,其包含了很多功能,具體的筆者還在摸索中。

3.1 配置偵聽器(Listener)

使用listeners指令,加載目前活動的偵聽器。沒有的話也會提示你。你可以輸入help檢視幫助,選擇Listeners下可以使用的指令。這裡我們首先建立一個活動的偵聽器。

(Empire: listeners) > uselistener 

TAB鍵彈出可用的偵聽建立途徑

Powershell Empire 繞過AV實作遠控

從圖中可以看出具體有七種偵聽途徑建立方式,其中有五種是通過http協定進行建立通信的,他們之間具體的差别主要在于目标主機的第三方軟體配置的差别,關于這一點,empire的官方文檔給出了解釋:傳送門。剩下的是我們熟悉的msf中常用的meterpreter以及使用條件需要目标主機安裝第三方軟體dropbox的dbx途徑。這裡我們選擇比較通用的http通道。使用info檢視詳細配置資訊。

(Empire: listeners) > uselistener http 

(Empire: listeners/http) > info 

然後進行配置:

(Empire: listeners/http) > set Host 192.168.1.144 

(Empire: listeners/http) > set Port 1234 

然後execute生成偵聽

Powershell Empire 繞過AV實作遠控

然後main指令回到主菜單,可以看到一個偵聽已經激活。listener清單顯示詳細資訊。

Powershell Empire 繞過AV實作遠控

3.2 配置Stagers

配置好偵聽後就要配置我們的攻擊代碼了,也就是木馬後門。使用usestager指令TAB鍵可以看到所有根據不同系統的生成木馬後門的檔案類型。

Powershell Empire 繞過AV實作遠控

其中multi為通用子產品、osxmac作業系統、另外還有linux與windows子產品。 生成的檔案類型有.dll,bat,vbs等等。其中就包括前段時間office宏指令漏洞的主角windos/macro子產品。

實戰中直接指令usestager [具體子產品]就可以在/tmp目錄下生成一個特定檔案格式的木馬後門,然後通過webshell上傳運作就可以了。這裡因為示範需要就不進行具體檔案生成,直接使用launcher+語言類型(這裡是powershell)+偵聽的名字(這裡是偵聽的預設名字是http,也可以在設定偵聽時自己更改),如下:

(Empire) > launcher powershell http 

生成一個powershell語言的内容,直接在powershell目錄下執行就行了:

Powershell Empire 繞過AV實作遠控
Powershell Empire 繞過AV實作遠控

運作,發現殺軟并沒有有明顯變化,但也并不能證明其免殺效果,因為不清楚殺軟是否對powershell的行為流量進行監控。

3.2.1 由此衍生的騷操作

從上面這裡我們可以看到執行惡意的 powershell指令時殺軟并沒有給出任何報毒反映,那麼我們在此基礎上進一步将這個利用點擴大化,進行一次模拟網絡釣魚。如何實作?這裡我們就要用到最近才出現的office無宏指令執行漏洞了。

這個office漏洞的原理簡單的說就是,在office中可以通過一種存在于windows内部程式進行資料動态交換的DDE協定進行指令執行,進而達到調用windows内其他程式的目的。看到這裡,你應該有點想法了。沒錯,我們就是用這個指令執行的漏洞,執行我們前面的powershell惡意指令,看會不會有我們想要的那種效果。

(1)先将上面生成的攻擊代碼寫成psl文本,放入本地lamp環境根目錄:

Powershell Empire 繞過AV實作遠控

(2) 編寫釣魚的word文檔:

Powershell Empire 繞過AV實作遠控

(3) 先用 殺軟掃下有沒有報毒,再發送至虛拟機。這裡因為虛拟機的win7沒有word,我就暫時以我的實體機來實驗吧(拼了)

結果殺軟未報毒 最終,反彈了自己實體機的shell..............

Powershell Empire 繞過AV實作遠控

再此過程中殺軟除了powershell啟動的一瞬間給了一次見慣不怪的警告(原來警告确實重要!),之後的會話一直沒結束。成功驗證操作。

言歸正傳,此時,empire的agent已有反應,遠控回話已開啟。此時,我們使用指令interact進入已經建立的會話名。

Powershell Empire 繞過AV實作遠控

help檢視我們在已建立的會話中所能使用的指令,檢視目标主機資訊。

Powershell Empire 繞過AV實作遠控

能成功執行,繼續深入,使用mimikatz指令可以檢視目标主機的使用者名以及密碼,但是我麼可以看到這裡失敗了。

Powershell Empire 繞過AV實作遠控

爆出了needs to elevated content的錯誤,這裡大家應該明白需要提權了。那麼empire有沒類似于msf中的提權指令呢?有的。     

(Empire PHWC8BT4) >bypassuac [偵聽名] 

Powershell Empire 繞過AV實作遠控

就可以進行提權。

但是如果運氣不好也會出現提權不成功的情況。剛剛說過它和msf一樣有相應的提權方式,empire中的module子產品中含有相應的掃描子產品可以在一鍵指令提權失敗的情況下,進行掃描,找出對應的提權方法,這是後話了。雖然它和msf在提權上的成功率上的比較,筆者還沒比較過,但應該是有差别的。

list列出提權後的會話清單,發現多出一個和原來會話主機名相同,但Username前多一個星号的會話,這個帶星号的使用者就是提權後的高權限使用者了。我們現在interact進入這個高權限使用者的會話中,檢視使用者密碼。

Powershell Empire 繞過AV實作遠控

可以看出,提權後我們可以對目标主機進行更多的操作,可以直接找出目标的使用者名和密碼的hash,如果使用者密碼是弱密碼的話,甚至可以直接爆出密碼明文。接着如果目标主機有其他内網主機的話就可以進一步地“為所欲為”了。

在控制目标主機後,我們可以将這個會話發送給msf,使用meterpreter進行更多操作。

4. 我們的殺軟在做什麼

首先實驗一開始,我們使用了惡意的powershell的指令進行攻擊。殺軟并沒有進行報錯,毫無反應,證明殺軟暫時對Powershell的執行并沒有多少設防,但此時我們的攻擊端也未進入agent會話,因為不懂殺軟是怎樣基于行為進行清除的,是以我們暫時不能說明它不可以攔截惡意行為。 而後,攻擊端interact連接配接進會話,攻擊機和目标靶機形成資料互動,而且是我們通過http通道建立的。我們再看看目标靶機,依舊毫無反應,這其實很奇怪了,現在的殺軟既然已經開始對于電腦中的可以行為進行檢測,特别是這種很有疑點的外部通訊,應該是重點清除的對象,但這裡殺軟并沒有給出任何反應。難道是因為我們的偵聽子產品是使用的http通道?大膽猜測下,應該是的。 接下來的操作目标靶機的殺軟都沒有反應。到了提權的那一步我就開始使用殺軟進行主動掃描,按照殺軟的描述,其對磁盤和記憶體程序都會掃描。但是結果提醒我是安全的。

一片綠色,完全沒有問題。就和我們前面的釣魚一樣,木馬後門如入無人之境。 為了展現這種powershell馬的特點和優勢,我有生成了幾個msf下典型的木馬,其中包括未經過編碼處理的木馬,經過encode十多次的木馬和加殼木馬,無一例外被殺軟清除,隻是後兩種有機率在種入木馬時運作前不會報毒,但是在運作時,無一例外均被殺。甚至加殼的馬會直接被我實體機上的殺軟查出。

5. 最後

empire雖然已經比較強大了,但是使用工具的意義并不是它能給我們帶來的效益和那種快感,其真正意義在于研究其背後所利用的漏洞原理。這裡利用powershell進行攻擊,并建立有效的攻擊機與目标機的連接配接,最吸引人的是原始開發者的思路,這才是empire帶給我最大的收獲。順着這個思路似乎已經有其他發現了。

原文釋出時間為:2017-11-06

本文作者:C1em0

本文來自雲栖社群合作夥伴51CTO,了解相關資訊可以關注51CTO。