热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Dreambot与ISFB前生今世

 一.写在前面的话最近,我们收到了一份编译并打包好了的恶意软件样本 ,我们发现,它包含了 一个Dreambot/Ursnif版本的木马,其中汇编日期为2017年10月10日,这表明现有的Dreambo

 

一.写在前面的话

最近,我们收到了一份编译并打包好了的恶意软件样本 ,我们发现,它包含了 一个Dreambot/Ursnif版本的木马,其中汇编日期为2017年10月10日,这表明现有的Dreambot版本可能正在使用一种全新的droppers打包方式。
从过去几年Gozi,ISFB和Mirai等僵尸网络泄露的一些源代码显示,它可能是其中一个的变种。
Dreambot是Gozi后裔ISFB的一个分支(2006年首次观察到),后者又使用了2000年Urnsif的代码。这些木马家族之间共享一些二十年前创建的代码。大部分代码正在被重用,许多代码也只是发生了一些小改动。
其中泄露的ISFB 2013木马中包含许多有关如何构建和配置僵尸网络的文档以及大多数组件的源码。我们接下来分析分析。

 

二. ISFB Bot 2013概述

在泄露的样本中发现有一个readme.txt(用俄语写),详细描述了ISFB的功能。根据该文档,ISFB是一个旨在嗅探和操纵受害者计算机上的HTTP流量的bot。bot做了三件事情:请求接收配置,请求命令,并将数据和文件发送回CnC。
bot接受配置并执行以下操作之一:“NEWGRAB”,“SCREENSHOT”,“PROCESS”,“FILE”,“HIDDEN”,“POST”和“VIDEO”。例如:


  • “NEWGRAB” – 将网页上指定的文字替换为另一个文字。

  • “SCREENSHOT” – 截取指定页面的屏幕截图。

  • “PROCESS” – 当受害者请求配置页面时请求另一个页面,例如,访问某个Twitter用户页面的请求被重定向到不同的Twitter用户页面。bot每个配置的详细信息都可以泄露的源代码中在Format.txt文件中找到。

除了上面介绍的功能,bot还会执行一些命令。这些命令包括:
GET_CERTS – 导出并发送存储在Windows系统中的证书。
GET_COOKIES – 从Firefox,Internet Explorer和Flash SOL文件收集COOKIE,将它们与其目录结构一起打包并发送到服务器。
CLR_COOKIES – 从Firefox,Internet Explorer和Flash SOL文件中删除COOKIE。
readme.txt文件中有这些命令的完整列表。


Dreambot 2017概述

除了ISFB的上述主要功能之外,Dreambot还通过TOR网络连接了CnC的主机。并对用来请求配置的URL的数据进行了更改,稍后我们会对其分析。

 

三.ISFB 2013架构

ISFB bot代码库由两个主要部分组成:Dropper和用于32位和64位机器的bot客户端DLL。
Dropper是包含在泄漏源码中的Crm.exe文件,它包含打包的DLL映像。它将这些DLL复制到系统文件夹中,并使用AppCertDLLs注册表项或自动运行注册表项来注册它们,然后将它们注入explorer.exe进程和所有正在运行的Web浏览器中。
bot客户端DLL也会被dropper注入到explorer.exe和任何正在运行的浏览器中,例如Chrome,IE和Firefox。根据readme.txt的说明,可知bot DLL的职责上分为两部分——“解析器”和“服务器”。
“解析器”是在受感染的浏览器中运行的代码。它拦截HTTP然后向服务器发送命令、配置文件和数据的请求。
“服务器”在explorer.exe中执行,如文件操作,启动程序和更新操作。


编译和打包

为了编译ISFB bot DLL并将它们打包到dropper中,恶意软件作者使用了一个名为FJ.exe的程序。它首先通过将它们与apLib(可选)包装在一起,然后将它们附加到文件中来。ISFB的构建说明了client32.dll和client64.dll文件已加入public.key和client.ini并输出到client / 32 / 64.dll。然后Crm.exe与这些client32.dll和client64.dll文件连接并输出到installer.exe。


其中ISFB使用了“连接文件”(或“FJ”),这些“FJ”_ADDON_DESCRIPTOR被插入在PE头后面,在所有剩余的PE段头之后,留下0x28字节的空隙,即sizeof(IMAGE_SECTION_HEADER)的值或一个PE头的大小。
2013年泄露的Gozi-ISFB源代码显示了这个_ADDON_DESCRIPTOR结构和ADDON_MAGIC,如下所示:#define ADDON_MAGIC ‘FJ’

typedef struct _ADDON_DESCRIPTOR
{
USHORT Magic; //addon_MAGIC值
USHORT NumberHashes; //名称的散列阵列
ULONG ImageRva; //RVA填充图像
ULONG ImageSize; //图像大小
ULONG ImageId; // 填充图像ID的图像名称(CRC32)
ULONG Flags; //添加标志
ULONG Hash[0];
} ADDON_DESCRIPTOR, *PADDON_DESCRIPTOR;


要检索指向加入数据的指针,只需将ImageRVA添加到恶意软件的图像库。这样数据就会被追加到文件的末尾。


Dreambot 2017架构

Dreambot的体系结构大致符合ISFB的原型。但是,在注入代码后,explorer.exe向CnC发出请求。另一个变化是,这个新的dropper将自己的一个副本放入一个随机命名的文件夹中的%AppData%。bot DLL不会被丢弃,而是直接注入内存。


编译并打包Dreambot2017

Dreambot使用一个新的’连接’程序,使用’J1’而不是’FJ’,并使用以下结构:
typedef struct {
DWORD j1_magic;
DWORD flags; //填充aplib
DWORD crc32_name;
DWORD addr;
DWORD size;
} isfb_fj_elem ;

该结构与’FJ’_ADDON_DESCRIPTOR非常相似,但是这些字段在某些地方进行了交换。尽管考虑了新的结构,但它的功能仍然是获取FJ插件数据,


Maciej Kotowicz的论文“ISFB,Still Live and Kicking”详细介绍了这种新结构以及如何从2016年的样本中解析出来作为静态配置的INI。论文附录也包括用来解析反编译的伪代码。感兴趣可以去看看。

 

四.ISFB URL请求字符串

可以在泄漏的源代码中找到的文件cschar.h中找到ISFB请求参数的原型。例如:

define szRequestFmt_src
_T("soft=1&version=%u&user=%08x%08x%08x%08x&server=%u&id=%u&crc=%x")


dreambot2017URL请求

 

展望2018及未来

我相信这个僵尸网络工具包平台可能会继续发展,它的代码库将继续纳入更多成员,但无论他怎么变化。我们都将制定更好的对策,并提高我们跟踪和防御此僵尸网络能力。

谢谢Margarette Joven对这个样本和关于dropper和packers的研究。

 

IOC

87dec0ca98327e49b326c2d44bc35e5b5ecc5a733cdbb16aeca7cba9471a098e


推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有