QBot-Outlook窃密

QBot-Outlook窃密

⼀、加载器分析

1、样本标签

病毒名称 c8810d5eaaea95b36bbb529a2b9be5c5e6dda10f95992e7c35ac8bbf9f3a8f71
原始⽂件名
MD5 93d6d599c37d1858cc86c0d8fe8fb8d4
⽂件⼤⼩ 222.50 KB (227840 bytes)
⽂件格式 Win32 DLL
时间戳 2020-04-20 23:33:29
加壳类型
编译语⾔ C/C++
SHA1 f85a63cb462b8fd60da35807c63cd13226907901
CRC32 F0A18B09

2、详细分析

样本(93D6D599C37D1858CC86C0D8FE8FB8D4)⾃⾝为DLL⽂件,同时也是⼀个加载器。样本⼀旦被加载⾸先获取远线程注⼊所需要的API函数地址。

image1

其中样本中的所有字符串都是加密的,通过传⼊字符串对应的id解密出字符串。

image2.png

image3

获取函数之后会通过token设置sid的⽅式进⾏提权。

image4.png

根据当前运⾏的环境是否为64位来获取Windows⽬录。接着在⽂件夹ProgramW6432ProgramFiles(x86)ProgramFiles中搜索outlook.exe⽂件。

image5

image6

如果存在outlook.exe⽂件后会根据⾃⾝进程位数来选择32位还是64位模式注⼊。

image7.png

注⼊⾸先会创建⼀个ping.exe进程作为傀儡,并且运⾏参数为**-t 127.0.0.1**,保证傀儡程序能持续运⾏。

image8.png

然后加载名为RES_DATA_1(如果是64位注⼊则为RES_DATA_2)的资源⽂件。

image9.png

⼆、邮箱窃密模块分析

由于32位和64位功能相同,这⾥只分析32位。

1、样本标签

病毒名称 RES_DATA_1
原始⽂件名 emailcollector.dll
MD5 9B0A4E5E5227B766EDE92340D7064545
⽂件⼤⼩ 84.00 KB (86016 bytes)
⽂件格式 Win32 DLL
时间戳 2020-04-20 23:33:01
加壳类型
编译语⾔ C/C++
SHA1 369EE5FF9960BB9E73503E0B0A4B3A57A96EC549
CRC32 1654A136

2、详细分析

样本(9B0A4E5E5227B766EDE92340D7064545)为核⼼模块,负责窃取outlook的邮箱数据。当样本⾃⾝被成功加载时,与加载器相同。通过GetProAddress获取⼀些API函 数,其中字符串也是被加密状态,使⽤的算法也与加载器相同。

image10

初始化完毕后会通过CreateThread函数创建⼀个线程,开始进⾏窃密。

image12.png

2.1、窃密邮箱数据

样本⾸先会将当前⼯作⽬录设置为“C:\User\USERNAME\”(该字符串在初始化时获取)

image13

然后在当前⽬录下创建⼀个⽂件夹,格式为“EmailStorage_计算机名_当前时间戳”。

image14

image15.png

接着拼接⼀个名为collector_log.txt的⽂件名,⽤于输出执⾏的⽇志。

image16

样本通过MAPIXXXXXXX函数访问outlook的数据,获取当前outlook所存在的邮箱账号。

image17.png

然后开始遍历每⼀个邮箱账号,获取详细信息。

image18.png

为每个邮箱账号创建名为”当前索引”的⽂件夹⽤来保存数据,接着创建线程sub_10002af8执⾏。

image19

获取当前邮箱账号所存在的⽂件夹,⽂件夹的名字从数字0开始递增。

image20.png

然后获取⽂件夹中的所有邮件,每个邮件的命名从数字0开始递增。

image22.png

image23.png

image24.png

每获取完⼀个⽂件夹中的邮件时,会⽣成⼀个名为”folder.txt”的⽂件⽤来存储当前⽂件夹的名字。

image25.png

image26.png

当邮箱中所有⽂件夹都获取完毕后,⽣成⼀个名为“email.txt”的⽂件⽤来存储当前邮箱账号。

image27.png

image28.png

2.2、数据回传

如果能窃取到outlook邮箱数据,则进⾏数据回传。

image29.png

  • 上传Log

样本将log⽂件读取到内存后,以zip压缩、base64编码的⽅式对内容进⾏加密。

image30.png

然后⽣成⼀个json⽂件。

image31.png

然后⽤https+post的⽅式回传⾄攻击者的服务器hxxps://82.118.22.125/bgate

image33.png

  • 上传邮箱内容

遍历获取窃取到的邮件⽂件。

image34.png

image35.png

将遍历到的邮件⽂件读取到内存。

image37

同样先将读取到的数据进⾏zip压缩,然后使⽤base64编码加密。

image38.png

然后将数据以json格式进⾏打包。

image40.png

image41

最后回传到攻击者服务器。

image42.png

三、样本运⾏环境搭建

image43.png

image44.png

添加测试的QQ邮箱,添加途中需要到QQ邮箱开通IMAP权限,获取应⽤密码。

image45.png

image46

image47

然后设置Outlook为默认使⽤的邮件软件。Win+i打开设置→应⽤→默认设置。

image48

使⽤编写代码⽤来加载样本(93d6d599c37d1858cc86c0d8fe8fb8d4)

image49.png

打开fakenet和⽕绒剑后将编写好的程序拖⼊⽕绒剑进⾏监控。(因为样本使⽤的是HTTPS加密协议,需要过滤⽹络数据才能看到明⽂数据,所以使⽤fakenet)。

image50

可以看到样本执⾏过程中在遍历⽬录寻找Outlook.exe。

image51

且傀儡程序被加载。

image52

可以看到⽂件已经被窃取到指定⽬录下

image53.png

fakenet也能捕获到回传的数据。

image54

由于样本发送后会将⽂件删除,所以重复上⾯的操作,利⽤⽕绒剑⾃定义防护,禁⽌⽂件删除。

image55.png

拿到窃取的⽂件

image56.png

image57

image58.png

Outlook的⽂件夹数为14,刚好对应上窃取到的⽂件夹编号。

image59.png

且每个⽂件夹下都保存着实际⽂件夹名。

image60

四、IoC

URL

hxxps://82.118.22.125/bgate

MD5

93D6D599C37D1858CC86C0D8FE8FB8D4

9B0A4E5E5227B766EDE92340D7064545

18152190D3637C3A24BA40046324B79C

开源报告:

(An Old Bot’s Nasty New Tricks: Exploring Qbot’s Latest Attack Methods)https://research.checkpoint.com/2020/exploring-qbots-latest-attack-methods/