*本报告翻译自Paloalto Networks技术报告archcenter,作者Josh Grunzweig, Mike Scott and Bryan Lee,仅供业界学习,不用于任何商业用途。如有疏忽或翻译错误敬请指出。
最近几周Paloalto Networks的研究人员注意到,APT组织Wekby对美国的部分秘密机构展开了一次攻击。Wekby这些年一直活跃在医疗、电信、航空航天、国防和高科技等多个领域。它会在漏洞出现的第一时间就对其大加利用,就像在HackingTeam的zero-day漏洞事件中表现的那样。
Wekby使用的恶意软件是HTTPBrower恶意软件家族的一员,这种恶意软件利用DNS请求作为指令和控制机制(C&C)。此外,它还使用各种模糊处理技术,使得技术人员在分析过程中屡屡受阻。根据样本中看到的那些元数据,Palo Alto网络公司将其命名为pisloader恶意软件。
基础设施
Pisloader恶意软件家族通过HTTP从下面URL中进行传播。这个URL至今还处于活跃状态。
http://globalprint-us [.]com/proxy_plugin.exe
示例中还有在此域下的其他URL:
http://globalprint-us [.]com/proxy_web_plugin.exe
MD5:E4968C8060EA017B5E5756C16B80B012
SHA256: 8FFBB7A80EFA9EE79E996ABDE7A95CF8DC6F9A41F9026672A8DBD95539FEA82A
大小:126976字节
编译时间:2016年4月28日00:38:46
这份已经发现的文件是最常见的poison lvy恶意软件家族的一种,下面是它的配置数据:
命令和控制地址:intranetwabcam [.]com
命令和控制端口:80
密码:管理员
互斥锁:) !VoqA.I5
在这次攻击中所有使用过的域名都是在攻击之前刚刚被注册的。所包含的域如下:
另外,研究员们还发现了下面的IP:
攻击之初
下面是最初发现的攻击,在之后的分析中也一直在被引用:
MD5:E8D58AA76DD97536AC225949A2767E05
SHA256:DA3261C332E72E4C1641CA0DE439AF280E064B224D950817A11922A8078B11F1
大小:126976字节
编译时间:2016年4月27日14:37:34
这个特定文件具有以下的元数据属性。Pisloader这个名字也是来源于此。
最初的注入攻击中包含的代码非常简单,主要任务是通过运行注册表项进行设置,并安装执行嵌入式的windows可执行文件。如果遇到混淆,攻击者会立刻将字符串拆分为更小的子字符串,然后使用“strcpy”和“strcat”调用来重新进行构建。他们也会使用同样的技术来生成从未使用过的垃圾字符串,目的是为了阻止样品的检测和分析。下面的反编译代码会解释得更加清楚,我们已经在其中添加了注释,以显示完全生成的字符串。
在上述的反编译代码中,我们看到pisloader生成了下面的字符串,之后会用来设置运行注册表项。
cmd.exe/cregaddHKCUSoftwareMicrosoftWindowsCurrentVersionRun /v lsm /t reg_sz /d"%appdata%lsm.exe"/f
这一特定命令会用%appdata%lsm.exe值来设置HKCUSoftwareMicrosoftWindowsCurrentVersionRunlsm注册表项。此项设置之后,恶意软件会用一个单字节0×54的XOR值解密两组数据。由此产生的数据将会写入%appdata%lsm.exe 文件路径。
在写如此文件之后,恶意软件会执行刚编写的 lsm.exe文件,其中包含pisloader的有效攻击荷载。
有效攻击荷载
下面是已发现的、并在随后的分析中加以引用的案例:
MD5: 07B9B62FB3B1C068837C188FEFBD5DE9
SHA256:456FFFC256422AD667CA023D694494881BAED1496A3067485D56ECC8FEFBFAEB
大小 ︰ 102400 字节
编译时间 ︰ 2016年4月27日 13:39:02
攻击者使用了面向返回编程(ROP)技术,以及大量垃圾程序及指令对有效荷载进行了模糊化处理。在下面的示例中,用红色标记的都是没有任何用处的代码。此类代码可以作为垃圾处理,直接忽略。真正行使功能的代码是绿色部分,这些代码中有两个函数偏移量在返回指令之后被堆放到堆栈中。这个返回指令会先将执行代码指向空函数,空函数会反过来将执行代码指向“next-function”。有效荷载运行的时候会使用这种技术,这样会使得静态分析变得更加困难。
在忽略了垃圾代码之后,恶意软件实际上是非常简单的。开始它会随机生成一个10字节长的字母数字作为标头。其余的数据会进行base32编码,之后删除填充。此数据会用于填充子域,而这个子域就是之后的DNS请求中用于TXT记录的地方。
这种利用DNS作为C&C攻击的做法一直没有被恶意攻击者广泛采用过,除了下面这些:
· FrameworkPOS
· C3PRO-RACCOON
· FeederBot
· Morto
· 新型PlugX
与此同时,这一做法也使得pisloader可以绕过某些安全产品(如果无法绕过,这些安全产品就会发现其中的异常)。