close

一、前言

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

二、為什麼是Powershell?

empire選擇了poweeshell作為攻擊平台總是有原因的。其作為windows平台下的一種命令行外殼程序和腳本環境,它可以使命令行用戶和腳本編寫者利用.NET Farmework。說到這裡,你可能還是一臉懵逼,我也是,畢竟這只是powershell的官方解釋。那我們來看下empire開發者是怎麼講的:傳送門: http://www.exploit-monday.com/2012/08/Why-I-Choose-PowerShell.html 。

其中重要的一段是:"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的原因。

這種內存中運行的命令是否會讓後來的入侵取證出現困難?這個我還未諮詢相關的大佬和老師,暫時就不得而知了。

三、初識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鍵彈出可用的偵聽建立途徑

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

(Empire:listeners)>uselistenerhttp(Empire:listeners/http)>info

然後進行配置:

(Empire:listeners/http)>setHost192.168.1.144(Empire:listeners/http)>setPort1234

然後execute生成偵聽

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

3.2 配置Stagers

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

其中multi為通用模塊、osxmac操作系統、另外還有linux與windows模塊。生成的文件類型有.dll,bat,vbs等等。其中就包括前段時間office宏命令漏洞的主角windos/macro模塊。詳情點擊:傳送門:http://bobao.360.cn/learning/detail/3605.html

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

(Empire)>launcherpowershellhttp

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

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

3.2.1 由此衍生的騷操作

從上面這裡我們可以看到執行惡意的 powershell命令時殺軟並沒有給出任何報毒反映,那麼我們在此基礎上進一步將這個利用點擴大化,進行一次模擬網絡釣魚。如何實現?這裡我們就要用到最近才出現的office無宏命令執行漏洞了。前幾天國內已經有人翻譯了原文:傳送門:http://bobao.360.cn/learning/detail/4526.html 。

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

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

2. 編寫釣魚的word文檔:

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

結果殺軟未報毒 最終,反彈了自己物理機的shell…………..

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

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

help查看我們在已建立的會話中所能使用的命令,查看目標主機信息。

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

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

(EmpirePHWC8BT4)>bypassuac[偵聽名]
就可以進行提權。
但是如果運氣不好也會出現提權不成功的情況。剛剛說過它和msf一樣有相應的提權方式,empire中的module模塊中含有相應的掃描模塊可以在一鍵命令提權失敗的情況下,進行掃描,找出對應的提權方法,這是後話了。雖然它和msf在提權上的成功率上的比較,筆者還沒比較過,但應該是有差別的。
list列出提權後的會話列表,發現多出一個和原來會話主機名相同,但Username前多一個星號的會話,這個帶星號的用戶就是提權後的高權限用戶了。我們現在interact進入這個高權限用戶的會話中,查看用戶密碼。
可以看出,提權後我們可以對目標主機進行更多的操作,可以直接找出目標的用戶名和密碼的hash,如果用戶密碼是弱口令的話,甚至可以直接爆出密碼明文。接着如果目標主機有其他內網主機的話就可以進一步地「為所欲為」了。
在控制目標主機後,我們可以將這個會話發送給msf,使用meterpreter進行更多操作。

四、我們的殺欽在做什麼
首先實驗一開始,我們使用了惡意的powershell的命令進行攻擊。殺軟並沒有進行報錯,毫無反應,證明殺軟暫時對Powershell的執行並沒有多少設防,但此時我們的攻擊端也未進入agent會話,因為不懂殺軟是怎樣基於行為進行查殺的,所以我們暫時不能說明它不可以攔截惡意行為。而後,攻擊端interact連接進會話,攻擊機和目標靶機形成數據交互,而且是我們通過http通道建立的。我們再看看目標靶機,依舊毫無反應,這其實很奇怪了,現在的殺軟既然已經開始對於電腦中的可以行為進行檢測,特別是這種很有疑點的外部通訊,應該是重點查殺的對象,但這裡殺軟並沒有給出任何反應。難道是因為我們的偵聽模塊是使用的http通道?大膽猜測下,應該是的。接下來的操作目標靶機的殺軟都沒有反應。到了提權的那一步我就開始使用殺軟進行主動掃描,按照殺軟的描述,其對磁盤和內存進程都會掃描。但是結果提醒我是安全的。
一片綠色,完全沒有問題。就和我們前面的釣魚一樣,木馬後門如入無人之境。為了體現這種powershell馬的特點和優勢,我有生成了幾個msf下典型的木馬,其中包括未經過編碼處理的木馬,經過encode十多次的木馬和加殼木馬,無一例外被殺軟查殺,只是後兩種有概率在種入木馬時運行前不會報毒,但是在運行時,無一例外均被殺。甚至加殼的馬會直接被我物理機上的殺軟查出。
五、最後
empire雖然已經比較強大了,但是使用工具的意義並不是它能給我們帶來的效益和那種快感,其真正意義在於研究其背後所利用的漏洞原理。這裡利用powershell進行攻擊,並建立有效的攻擊機與目標機的連接,最吸引人的是原始開發者的思路,這才是empire帶給我最大的收穫。順着這個思路似乎已經有其他發現了。

- 結尾 -
精彩推薦
【技術分享】滲透測試實戰-BlackMarket靶機入侵
【技術分享】SA-CORE-2019-003:Drupal 遠程命令執行分析
【技術分享】使用Pineapple NANO、OS X和BetterCap進行無線網絡滲透測試

戳「閱讀原文」查看更多內容
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()