本文主要是介绍APT34原型: Glimpse project,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
APT34 Glimpse project可能是截止目前研究人员最了解的的APT 34项目了。研究人员观察到基于文件的C2结构、VBS启动器、PowerShell Payload和dns引擎之上的秘密信道。
背景
从2014年开始,伊朗黑客组织APT34开始活跃,该组织执行了一系列针对伊朗的攻击活动。重要攻击目标位于中东地区,主要攻击金融、政府、能源、化工、电信和其他行业。
下面主要介绍Glimpse project,研究人员认为这可以认为是APT 34的原型。
Glimpse Project
该package中有一个名为Read me.txt的README文件。文件的内容是教授如何设置nodejs服务器和运行standalone .NET应用的Windows服务器来来控制受感染机器。感染首先是从一个名为runner_.vbs的VBS脚本的繁殖开始的,该脚本也是多数熟练的PowerShell payload的运行器。该Powershell payload是一个复杂的脚本,有许多功能。下图是反混淆的主循环:中国菜刀
Glimpse感染Payload主循环
Payload会循环等待指令,一旦从C2服务器获得命令,就开始执行特定动作,并通过请求基于变量$aa_domain_bb伪造的子域名来响应C2。Payload实现的最重要的函数就是释放和执行其他工具集。事实上,payload是基于DNS 秘密信道的夹杂了其他控制功能的传播模块。
变量 $aa_domain_bb 含有C2作为授权域名服务器的主域名。如果没有来自C2的命令或动作,受感染的代理会周期性地ping C2来提供关于受害者机器的基本信息。比如,函数aa_ping_response_bb 会组成一个编码的DNS消息 ( aa_text_response_bb ),发送最后的IP地址。在这一阶段,有2种通信方式,第一种是来自于子域名生成,比如59071Md8200089EC36AC95T.www.example.com,第2种方法来自于TXT DNS记录,比如control: 95 – ackNo: 0 – aid: 59071d8289 – action: M >>> 59071Md8200089EC36AC95T。这两种方式的实现都会携带不同的信息。其中最重要的函数是通信管理器aa_AdrGen_bb,实现控制层来发送和接收控制信息,比如命令、接收的字节、文件传输是否关闭等待。解码的动作保存在变量 aa_act_bb中,如下所示:
C2. 为新连接的代理创建Env
M。如果代理已经在C2上注册了,该命令的作用类似ping,更新其在agent文件夹中的基本信息。如果是第一次连接到C2,就开始注册,服务端创建一个文件夹和文件环境。如上图所示。
W。这是一个txt请求来列出等待的命令。注册后执行的第一个C2命令为1010,内容为"whoami&ipconfig /all"
· D。这是要实际执行的命令。输入标记的任务并将文件的base64编码的内容发
· 0。这不是一个txt请求。该请求会让授权DNS响应waiting文件夹中请求的文件。响应A记录的数据域是伪造的IP地址11.24.237.110,如果waiting文件夹中没有文件活动动作,C2就会响应A记录,数据域为"24.125." + fileNameTmp.substring(0, 2) + "." + fileNameTmp.substring(2, 5);,TTL值为0到360之间的随机数。
· 1。这不是一个txt请求。该请求会使授权DNS服务器进行含有文件内容的回答。根据RFC4408,它会实现多个响应链来发送大于255个字符的文件。
· 2。这不是一个txt请求。该请求会使授权DNS服务器接收来自代理的文件。它实现了来自域名请求的复杂多方链。在发送完所有数据后,代理会发送一个数据部分为COCTabCOCT 的DNS查询。该查询通知C2服务器木马完成了文件内容的发送。天空彩
C2: COCTabCOCT通信结束
下图是运行在受控虚拟机环境中的感染链实例。下面的请求会在子域上实现数据,回答的IP会给出特定的响应。
10100*9056*****************.33333210100A[.]example[.]com
Glimpse运行环境
可以看出Glimpse运行环境需要standalone .NET应用,nodeJS服务器运行和提供共有API并保存到代理的请求和来自代理的结果到名为UID-IP(agent ID)的文件中。Panel会读取这些文件并进行统计和其他动作。下图是C2 panel上的静态配置部分:
C2 Panel硬编码设置
Control Panel主要由2个.net window组件组成。Main Windows是含有Agent ID, Agent IP, Agent Last Online Time, Attacker Comments等信息的连接的代理列表。当攻击者点击选定的代理后,就会调用 Control Window。事件onClick代码如下:
controlPanel = new controlPanel(agent.id, agent.ip, agent.lastActivity); controlPanel.Show();
在初始化完成之后,控制panel会让攻击者写或上传命令列表或文件到代理。下图是controPanel函数从输入域TextFields中获取命令,创建新的文件到文件夹waiting。这类文件的内容会释放到选定的代理并执行。
C2, controlPanel insert_command 函数
controlPanel提供一些额外的功能来更好地控制单个或一组代理。研究人员分析发现newPanel-dbg.exe的编译时间为9/1/2018 at 5:13:02 AM,而导入函数ToggleSwitch.dll的编译时间为9/8/2018 at 8:01:54 PM。
研究人员认为这是一个多模块的攻击框架,一方面通过DNS通信信道来传递命令到目标代理,一方面开发control panel到DNS通信系统中。如果将该框架看作一个开发者,DNS通信信道使用文件来保存信息和同步动作和代理,因此许多C2被修改来使用它作为通信信道。许多APT34单元都可以重用它作为通信信道。匿名用户于2018年8月在PasteBin上泄露了一个powershell代理,截止目前只有不到200个人阅读。而C2编译的时间刚好为2018年7月,使用的开发和实现技术也不同,比如使用了.NET和nodeJS。DNS通信信道是线性开发的,有许多功能驱动的编程风格,而standalone C2的开发使用的是更加复杂的面向对象的编程方法,攻击者将对象agent作为独立代理可以在没有直接控制的情况下工作。
这篇关于APT34原型: Glimpse project的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!