「实战」攻防中钓鱼上线MAC终端
文章首发先知:https://xz.aliyun.com/t/10528
0x01 前言
目前在一些攻防项目中,由于外网越来越不好打,钓鱼这种攻击手段,一旦成功就显的省时省力。最近攻防遇到了一家互联网大厂,所有员工使用的都是mac主机,这也是第一次钓mac。研究过程中发现网上这方面分享比较少,这里记录分享一下,如有错误欢迎各位师傅评论指正。
0x02 CrossC2部署
环境
cs版本4.1
cs服务端:linux vps
cs客户端中:mac
这里注意,经过测试cs服务端部署必须是linux,win不行,会出现执行不上线的情况。
插件安装
https://github.com/gloxec/CrossC2/releases/tag/v3.0.2
选择对应版本安装:
放在自己终端的任意目录下,注意路径名不能包含中文或特殊字符:
配置cna文件:
这里我自己的CC2path和bin的配置是这样,一定要确保这个路径和文件名是对应的,并且文件有可执行的权限。
这里注意还有一个地方需要注意,就是把自己服务端cs目录下的.cobaltstrike.beacon_keys文件放到和genCrossC2.MacOS同级目录下,不然会遇到key错误的提示。
生成上线马
加载cna插件
加载成功会看到插件
创建一个https的监听器,端口任意。这里需要注意,CC2上线实际也是通过创建的监听器上线,并且由于一些限制,只能是https的监听器(在github也有提到)。
使用插件生成一个马。端口可任意设置,第二个填文件的绝对路径,选择系统为macos木马,监听器选择刚才创建的https监听器,最后是生成可执行文件的目录和文件名。
这里很多师傅创建不成功,并且cs日志中也没有错误提示,这种情况可以把命令复制在终端执行,排查问题直到:
此时可以通过执行tmp目录下生成的可执行文件上线,或者利用插件生成命令执行上线
注意生成命令这里端口要和刚才设置的对应,才能请求到
0x03 封装app
此时实现了上线马的制作,可以命令或者执行可执行文件上线。但是对于钓鱼来说,可信度是远远不够的,为了制作一个完整的mac应用程序,我们先将上线命令封装成app
制作app
打开mac自带应用程序
选择新建文稿,点击应用程序
然后选择左侧选择运行shell脚本,然后把上线命令复制进去
然后command+s保存到应用程序中,app就制作结束了
这里可以换一个图标制作更逼真,点开应用程序,找到对应app右键显示简介,将icns图拖到图标处
0x04 dmg马
只有一个app是不够的,正常的mac安装程序是dmg或者pkg,首先制作dmg。
准备
一个.app,一张背景图(可选)以及安装路径的快捷方式
制作
应用程序处制作一个替身
磁盘工具,新建一个空白映像
之后桌面会生成demo.dmg和宗卷,打开宗卷编辑,把制作的app,应用程序文件夹,背景图拖到宗卷中,背景图可以右键显示选项拖动布置,之后删除即可。
编辑好后,就可以推出这个卷宗,进行最后一步转换,转换成一个不可修改的卷宗
选择磁盘工具,选择 映像-->转换,然后选择temp.dmg,打开后,重新命名就好了
这个转换之后的dmg就可以用作钓鱼的木马,受害者双击app或者安装点击之后,就会执行上线命令上线。
0x05 pkg马
如果用dmg去钓鱼,最后上线只是当前登录用户去点击,也就是普通用户权限,加上mac提权基本知识盲区,不容易做权限维持,这里可以制作pkg,设置管理员权限安装,就能上线root权限。
工具
pakeages 下载:http://s.sudre.free.fr/Software/Packages/about.html
Packages是一款开源的安装包制作工具,主要有两种模式:
Distribution(分布模式):这种模式下,安装包中可以包含多个组件,可以分别安装到指定的位置;
Raw Package(原始模式): 只适用于只有一个安装组件(安装内容)的情况,一个组件(package)就是一个具备特定安装属性的部分,是对需要安装的程序的一个逻辑划分。比如一个安装包中包含两部分,一部分需要安装到系统目录,一部分安装到用户目录。从逻辑上就可以划分为两个组件(package),分别为它们指定不同的安装属性。
制作
选择第一种模式
创建之后进入设置界面,首先是全局设置,默认是settings
然后第二个可以设置一些描述话语,或者背景图
设置全局之后设置包,第一个框是安装完之后要执行的,下面是安装的条件,第一个一定要选,安装时需要密码。这样才能确保root上线
把我们要安装的app拖到路径下,也可以自己创建目录
某些应用在安装时可能需要做一些额外的操作,可以执行脚本,分为安装前和安装后执行,这里把安装前的preinstall.sh和安装后的postinstall.sh全部变成上线命令
编辑完成之后,就可以直接build生成,可以看到执行时需要输入密码到高权限
安装结束之后,会执行两次脚本,也就会上线两次root,非常的nice
当然如果为了不被发现,也可以在制作pkg时放一个正常的app进去,只是安装时执行上线命令。
0x06 邮件发送
钓鱼邮件发送,如果为了方便可以参考横戈团队的工具:
https://github.com/SkewwG/henggeFish
但是工具中是写死163,只能用163账号发,可以自己改脚本,或者利用swaks批量发。
如果用swaks批量脚本发送,有可能会遇到spf校验,ip封禁,进垃圾箱等问题,不同的邮服策略也不同,有机会再写一篇钓鱼邮件批量发送。
0x07 参考
http://www.str1am.top/wordpress/?p=533
https://www.sqlsec.com/2020/07/cobaltstrike.html