红队实录系列(二)-从 Mac 钓鱼到拿下核心权限

一. 前言

攻防对抗强度和难度日益演进,传统的渗透测试思路成本逐渐提高,钓鱼已经成为当下攻击者最常用攻击手段之一。在某次针对某企业的攻防演练中,攻击队成员伪装成初入社会的求职女大学生,成功骗取目标单位某员工的信任,在攻击者的引导下,多次在企业内网下载和运行木马,为攻击人员制造了大量的攻击机会,最终击穿目标多种网络防护,获得生产网控制权。
在对抗前期,通过对目标的情报侦察,发现目标单位互联网资产较少,但在脉脉、招聘软件等职场交流平台上有大量目标单位员工活跃,通过观察目标群体的活动记录、社交信息等,攻击队制定了如下社工钓鱼的思路:
(1)伪装为求职的应届毕业生针对特定职位钓鱼;
(2)伪装为其他厂商HR对特定员工进行钓鱼;
求职相关的钓鱼方式往往较为简单直接,HR等职业群体本身工作性质就需要经常与陌生人沟通并建立联系,且经常需要收发简历等文件,因此往往警戒心较弱。大部分人本身是很善良的,因此伪装为求职等应届生或已经拿到Offer准备入职的未来新同事,员工往往会放松警惕,热心的为其提供大量帮助,甚至无意间透露一些敏感信息,在“成为好朋友”的过程中,也往往容易步入陷阱运行木马,再利用其本身正式员工的高可信属性和社交网进行二次钓鱼,往往能收获到极好的效果。另外在脉脉、招聘网站等平台,往往可以搜索到目标人员的职位、能力等信息,可以更方便的定位关键人员,如关键系统开发、运维、管理等相关职位,以精准的斩首行动减小攻击影响,减短攻击路径,最大化的扩大攻击战果。
通过在脉脉平台职场圈收集情报,发现多个目标单位员工,经过层层筛选,最终得到几位社交较为活跃的人员作为我们的目标,如某位具有多年工作经验的技术经理:
该目标在脉脉平台活跃度很高,经常发表工作相关的评论,经常在工作相关话题下答疑,活跃、热心、工作经验丰富且是技术岗位经理级别,因此成为攻击队头号钓鱼目标。使用伪造的脉脉身份,装作是计划入职的新员工与对方建立联系,在日常聊天中,逐步建立信任,获取对方微信等联系方式,并寻找时机发送木马诱使对方下载和安装伪装成简历的木马:
但忽略了一点是,目标公司开发团队使用的为 MacOS 系统,以往的攻防经历中制作的木马都是针对Windows和Linux系统的,因此需要制作一款针对Mac操作系统的木马。在后续持续性沟通中发现该员工是Java技术栈,因此推测在办公机器上一定存在 Java 环境,制作木马的方式就使用 Java 客户端的方式进行上线。在MacOS上,常见的可执行程序安装包分为两种 DMG、PKG,在 PKG 中可以由开发者嵌入任意的可执行脚本文件,并且直接能申请使用 root 权限。于是后续攻击尝试使用 PKG 格式的后门进行木马传递。

二. PKG后门制作阶段

2.1 环境准备

Mac终端一台、VPS一个(安装msf作为C2服务器)、WhiteBox – Packages(Mac系统pkg安装包制作工具)

2.2 制作过程

因为目标系统安装了java,所以这里生成了一个jar的马子:
上线脚本(此脚本的目的是绑定在pkg文件中,这样pkg脚本一旦执行,上线脚本也会执行。这个脚本也可以填写cs的crossC2的curl命令,只不过最后上线的是CS)
接下来需要准备一个合适的APP本体,这里可以理解成捆绑的主文件,也就是发送给目标时,目标看到的程序,这里选择了OpenVPN。
下载pkg制作工具:WhiteBox – Packages
下载后打开,选择第一个模式
起一个名字,需要注意的是,安装包打开后的应用名就是这里的名字,这里起了个比较有欺骗性的名字SecretVPN.该部分为全局配置setting中的选项基本不用动,Presentation选项卡是安装过程中各步骤的文本之类的内容,可自行定制。

  • 注意,这里会产生一个坑点,以及最后设置preinstall.sh时,会有同样的问题,即打包时可能报错
把Presentation中引用的文本文件以及preinstall.sh,都放置到项目文件夹内即可。或者以root权限启动WhiteBox – Packages
接下来开始进行项目设置。点击左侧项目名,进入项目设置。On Success是可以设置一些安装完成后的动作,系统支持的比较少,这里可以不设置,或结合自身需求设置。
Options中的Require admin password for installtion选项,勾选后安装过程会请求输入用户密码。勾选此项木马上线时为root权限。
放入App本体:将本机Applactions目录下的真实App拖入该界面虚拟目录Applactions中,表示安装后该App将会被安装到/Applactions目录。
这里是正常的OpenVPN安装完之后是一个文件夹+一个快捷方式的形式,其他大部分应用比较常见的应该还是只有一个软件包的比较多。总之就是,抄袭的目标应用安装完成后Application目录有什么,就在Packages虚拟目录里放什么。
接下里进入最终环节,植入上线脚本
pkg木马关键之处在于Scirpt可以指定脚本,Preinstall.sh将会在安装开始前执行,Postinstall.sh将会在安装完成后执行。如果将两个地方都指定为上线脚本,安装一次将会收到两个反弹shell。

2.3 成功上线

在前期在微信上做了大量沟通之后,目标员工已经对我方伪装的身份拥有了足够的信任,并且每天都主动和我们进行聊天交谈,我方见时机已经足够成熟,于是将pkg程序发送给目标后,目标点击后成功上线。
这里可以看到当输入shell时候并不会成功,解决方法就是cd到一个目录后再执行如下:

三 . 浏览器密码抓取

在获取目标权限之后,需要对目标进行信息收集最常见收集的信息就包括浏览器账号密码,IM聊天记录等,目标使用的是Chrome浏览器,解密Chrome浏览器密码需要两个条件,第一就是 Login Data,第二就是 Login Data 的加密密钥。我们知道Chrome浏览器是将密码信息存储在 Login Data 中,所以可以使用C2提前将Login Data下载到本地,但是该文件会被加密,需要用到钥匙串中的密钥,使用下面的命令即可获取
在运行上述命令时会弹窗提醒,介于大多数人的对于Mac的使用习惯都会输入密码。当然我们的目标也不例外。成功获取到key
于是通过下面py脚本在本地即可获取信息,(也可以在目标电脑上直接使用,但是使用时将key和user替换成目标的信息即可):
获取浏览器密码成功
在保存的密码中就包括 DevOps 平台管理员密码, 内网4A系统管理员密码,利用这些系统即可获取到核心权限。

四. 权限维持

通过钓鱼上线的目标是一定一定要做权限维持的。这里因为笔者的截图不在了,所以就不放截图了,主要介绍两种方式,会将相关命令贴给大家
  1. 手动权限维持

其实就是通过mac自带的任务计划plist来进行维持,只不过mac下的语法不大一样,需要自行学习,将下面内容保存成/Library/LaunchDaemons/com.ali.plist 每两分钟弹一次计算器(实战中更改<string>值为你要执行的后门即可)
plist相关命令
  1. MSF自动化维持

可以看到通过mac自带的任务计划进行权限维持比较麻烦,msf提供了一个关于mac的权限维持的模块,这个模块和上面的方式原理是一样的。

五. 参考文章

https://www.infosecmatter.com/metasploit-module-library/?mm=exploit/osx/local/persistence
https://payloads.online/archivers/2021-11-23/1/ https://www.jianshu.com/p/b65c1d339eec
https://xz.aliyun.com/t/10528#toc-7
Copyright © 2022北京边界无限科技有限公司 京ICP备20007775号 京公网安备11010502040438号