标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-401]   作者: ecawen 发表于: [2017-08-20]

本文共 [476] 位读者顶过

本篇博文分析了一个Poseidon的实例(实例:1b7f205b663af9a6eb44f18555bdaad86e0fa58f3a9e4aced3e2ae1e3ed472b5下载地址。这是一个恶意下载器,携带着CnCs列表中正在网上工作的CnCs。然而因为有一个bug,这个恶意软件不能下载第二个阶段的可执行文件(键盘记录器)。

[出自:jiwo.org]

下载器

  第一个实例是键盘记录器的下载器。他复制自己到c:\windows\system32\winsrv.exe并自动安装(它也会创建WinSrvWDmutex令牌)。然后自动删除第一个exe文件并创建两个进程:

  两个进程运行相同的可执行文件。Svchost.exe运行一个函数,万一进程死掉该函数会保护WinSrv.exe

  WinSrv.exe运行下载器的主代码。

  下载器主要工作是尝试连接CnCs列表:

  当它解析到列表的域名后,会连接列表并发送主机信息(如果没有解析到,则继续尝试下一个网址):

  这里出现了问题。当下载器连接到一个有效网址时,CnC应该回复一个它可以理解的结构体。但这有一个bug,服务器是有效域名,也是一个有效的http服务器,但它没有运行CnC服务,它会回复一些“not found”之类的错误(一个错误页)。这时,恶意软件找不到他需要的有效结构体,并一直重复尝试相同的网址,一直重复得到同样的结果。

  所以,当下载器找到了一个有效的http服务器但不运行CnC服务时,下载器会进入死循环,一直连接相同的网址而不继续尝试其他网址(这样它就不会继续下载第二个可执行文件了)。

  发现了这种情况,我必须欺骗下载器来继续连接下一个网址。最后它找到了一个有效网址并得到了CnC服务应答,这是服务器的回复:

  正如我们看到的,它是一个有效网页,在恶意软件的结构体中显示“此网页不存在!”

  从回复中我们可以看到一个可以下载第二个可执行文件的网址,和一个新的网址列表。

  它会保存新网址列表到c:\windows\system32\winsrv.exe.cfg,并运行另一个svchost.exe的例子来注入(Process Hollowing,恶意软件常用的一种进程创建技术)下载程序POSNumBot_baked.exe

  在下载器中没有其他有趣的东西了。对CnC服务器的询问很容易,是明文且只用base64加密机器信息,写一个Python client并不难。


POSNumBot

  下载器下载的第二个可执行文件是键盘记录器。下载地址

  它没有壳。双击就可以运行(不需要下载器加载)。

  它创建一个窗口来接收键盘事件:

  在这里记录键盘事件:

  它会把键盘事件列为一个列表供另一个线程使用,这个线程负责与CnC通信:

  线程与CnC连接:

  它构成的一个查询如下所示:

oprat=2&uid=6922070704454700032&uinfo=<user info>==&win=6.1&vers=13.40M&logs=<logged keys>

   Uinfo表示用户信息,用base64编码(像下载器一样)。

   Logs=parameter用来发送登录密钥。密钥简单的与0x2a异或进行加密,用base64编码:

connectcnc.jpg

  这里的第二个可执行文件只能连接一个特殊的CnC网址。

  我们用一个记事本触发键盘事件:

  这是被捕获的发送给CnC的数据:

connectcnc.jpg

  用下面的小脚本解密logs parameter中的数据:

  得到以下解密结果:

  如果将这些结果与记事本里内容作比较,会发现按键都包含在log中(顺便说一下,log中的单词“NUMERO”和“PAUSA”是西班牙语。我是通过虚拟机的西班牙语配置知道的)。


总结

    PoSeidon看起来是简单的下载器+键盘记录器的组合,修复bug并不难。如果我没有在修复bug时遇到错误,下载器会一直有一个bug:如果连接到一个有效地址,提供http服务但没有安装CnC服务时,下载器就不会继续下载第二个可执行文件了。

评论

暂无
发表评论
 返回顶部 
热度(476)
 关注微信