-
-
[翻译]分析PoSeidon下载器和键盘记录器
-
发表于:
2017-8-2 08:59
4193
-
本篇博文分析了一个Poseidon的实例(实例:1b7f205b663af9a6eb44f18555bdaad86e0fa58f3a9e4aced3e2ae1e3ed472b5,下载地址。这是一个恶意下载器,携带着CnCs列表中正在网上工作的CnCs。然而因为有一个bug,这个恶意软件不能下载第二个阶段的可执行文件(键盘记录器)。
第一个实例是键盘记录器的下载器。他复制自己到c:\windows\system32\winsrv.exe并自动安装(它也会创建WinSrvWD的mutex令牌)。然后自动删除第一个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通信:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)