发布于2022年11月5日3年前 情报收集与外网打点 因为起晚了..第一个议题没听着,有点遗憾,补张图 基础设施架构设计部署 普通架构:红队人员--》teamserver cs--》目标机 缺点:功能未分离、无潜伏通道、回连日志多、灵活性较低 演进架构:DNS/HTTP/HTTPS分离server tips:1~2cpu 2G内存 10G硬盘,回连数不超过5台,潜伏通道(根据实际目标环境优先) 完整架构: 域名和IP(VPS)teamserver(CS)前置机(redictor) CS -》teamservers 1/2/3/... 前置层(SMTP/PAYLOAD/C2/隐蔽C2) 选择域名 抢注过期域名 expireddomains.net DELETE DOMAIN tips1: 不要包含世界大厂和杀毒厂商相关的域名,以及和目标相关的域名 tips2:注册目标相关区域常见的域名,记得开隐私保护 其他:www.freshdrop.com www.domcop.com tips3:检查域名是否被分类,金融、医疗、电商、航空、旅游 great tips4:去VT、微步检查,域名是否被标黑 tips5:举报滥用规则仔细阅读(freenom 慎用) 培养域名(养号)搭建正常域名,提交至各安全厂商给站点分类 tips1:把域名A记录解析到大厂ip,使用时候再解析到C2,不用时候解析回大厂ip tips2:VT 自评, alex 自评 域名解析检测 域名分类检测domaincheck: IP检测外网IP,通过情报站看是否被标黑 使用CDN隐藏真实IP(部分安全厂商会拦截CDN IP) 借鸡生蛋,subdomain takeover:高信誉域名A解析B -》 高信誉肉鸡做前置转发 C2工具CS 3.14 自定义流量特征:DNS/HTTP/HTTPS/SMB和TCP Payload加载流程:shellcode/Loader/Stageless/beacon DNS:如果用到dns通道默认参数必须修改(容易被设备检测),不要用DNS做数据通道 HTTP(S):不要在uri中的文件后缀设置js、css等静态文件,效果:付费证书>免费证书>自签名证书 (Let's Encrypt 免费 3个月过期,开自动续) RedirectorDNS socat|iptables|ssh(tmux和screen选一个) Apache|Nginx Tips: 建议使用多个判断过来请求,拒绝使用默认uri,对抗全网C2扫描 仅允许目标相关IP访问,对抗云沙盒 限定访问时间段,只在某个时间段请求payload 不要把非payload的uri重定向到google等高信誉域名 建议:在www.aaa.com搭建来养域名,使用c2.aaa.com的二级域名做C2 Domain Fronting(隐藏IP、域名的方式) Google App Engine| Amazon |Azure|Aliyun CDN 可见层:DNS、TLS 不可见层:HTTPS URL(高信誉) SNI(高信誉) HOST(C2) https://github.com/vysecurity/DomainFrontingLists 代替方案:HTTP pipelining( >http 1.1 ) 和 domain fronting 效果相同 利用同一个tcp连接发送不同的host的http包 tips:good domain + bad domain 包一层同时发过去 第三方服务用作C2 Office365、Pastebin、Slack、Facebook、Dropbox、Gmail、Twitter.. 需要硬编码到第三方服务 邮件钓鱼(SMTP)域名:同C2域名选择 高信誉的邮件发送者:Mailchimp、Sendgrid 正确配置SPF、DKIM\DMARC SSL证书 发送时间和频率 一键部署 钓鱼邮件框架:Gophish (https://github.com/gophish/gophish) 隐蔽性和安全性权限最小化:使用iptalbes限定组件通讯,SSH进行端口转发 Teamserver:限制端口只能本地访问,限制beacon监听端口只能redirector访问 Tips:VPS容易被GFW拦截? 解决方案:V*2r a y + Nginx + CLoudflare + Freenom+ Websocket 搭建代理 基础设施监控系统记录完整日志,设置告警 自动化部署 LuWu(https://github.com/QAX-A-Team/LuWu) 日志中心 邮件钓鱼之前期信息收集与侦查 面临的技术挑战: 邮件网关 mail gateway 浏览器 EDR、IDS Mail Gateway ANTI-SPAM SPF DKIM 新注册域名 生僻域名后缀 敏感关键字 特性: 邮件退信默认开启 MTA默认不开启 Recipient Validation 结论:当我们发送一封钓鱼邮件给一个不存在的邮箱账户时,如果能收到NDR,证明钓鱼邮件通过了邮件网关安全审查(BACKSCATTER ATTACK) BYPASS ANTI-SPAM 通过上述结论,探测,fuzzing ANTI-SPAM 引擎规则 稳定触发NDR的办法: 正文大于10M 收件人超过5000个 BYPASS ANTI-MALWARE NDR 总结 钓鱼样本制作 钓鱼邮件类型恶意的chm文档:利用easy,但目前比较难过杀软,免杀效果差 带有恶意宏代码的office文档:易于混淆(结合图片模糊之类),但需要手动开宏,进程链可疑 白加黑钓鱼:利用带签名的白程序,通过DLL劫持的方案加载恶意DLL;比较容易过AV,但需要解压执行 LNK文件钓鱼:链接对象是Powershell,进程链完善 PPT钓鱼样本:PPT超链接,弹出“安全声明”,不用启动宏,但必须全屏播放,启用才执行;不推荐使用 漏洞利用的钓鱼邮件:效率高,同样成本也高 写工具自动化生成恶意lnk,关键函数:IShellLink::SetIconLocation() IShellLink::SetShowCmd() 窗口显示 IShellLink::SetArguments() IShellLink::SetPath() ... LNK钓鱼邮件制作钓鱼简历的编写:内容可选浮夸,让HR打开看完后大概率删除,防止提给技术人员 LNK图标的显示:改成各个系统都能默认显示的通用图标 如何隐藏行为:SetShowCmd() 最小化窗口 Word文档存放: 联网下载Word文档 (New-Object System.Net.WebClient).DownloadFile(url, file_path); 数据还原引擎 协议内容还原:tcp、http、smtp 文件内容还原:office、pdf、zip 加壳程序还原:upx 加密算法数据还原:base64 本地释放Word文档 将Word塞到COMMAND_LINE_ARGUMENTS ARGUMENT用于LNK中存储命令行参数 StringData结构,CountCharacters IShellLink::SetArguments() 塞入数据的最大值是 explorer.exe 对命令行参数长度的限制 实测得出 0x7FC2(31KB) 将Word塞到lnk文件的尾部(推荐使用) 尾部可以追加任意大小的word、PE、PowerShell select -last 1 定位到最后一个对象,以“\n”划分对象 select -index 1 也可以 杀软对抗 短文件名 POWERS~1.EXE 代码混淆 参考赛门铁克的paper 安全类进程检测 虚拟机-取证工具-杀软检测-调试器 常规手法 进程名检测 窗口标题检测 新姿势 遍历进程,获取进程对应的版权信息,与黑名单列表比对 优点:升级版本也不变,通用 如何根据PID获取进程的全路径:ProcessExplorer x86不太可行,x64可以 绕过PCHunter 0RING hook 检测后行为,通知攻击者,及时善后处理 内网横向移动 内网侦查 经典主被动内网侦查方式 主动扫描 设备资产识别 可用服务采集 脚本检测 被动搜集 监听广播消息 雷区警示 风险面:Network ACL封锁、受控主机HIDS、HoneyPot、NIDS 方法对比 域内信息侦查 * 类域 * *nix * Windows AD 定位域控(域内主机) 时间服务器 net time /domain w32tm /query DNS服务器 Get-DnsClientServerAddress 查询本机 DNS SERVER 设置 向DNS server 查询 Domain Name A记录对应地址 域控定位器 DC Locator Process 产生DNS查询,沿用DC Locator的机制很安全 Kerberos认证,KDC GC 查询工具 nltest 提取域控信息的过程 net dsquery 通过对LDAP进行查询 dsquery/ADSISearcher使用明文的LDAP协议,容易被IDS捕获 定位域控(域外主机) DNS排查 Scan UDP/53 Query DNS FQDN from DNS Query Locators from DNS LDAP(S)& GC(S) 扫描端口,利用特性筛查域名 匿名读取部分LDAP元数据 读取LDAP证书信息 GC服务 查询 TCP/3268 TCP/3269 防御:可以关闭匿名绑定 查询LDAP(S)服务 ADexplorer:GUI,一些cmdlet Get-ADUser Powerview:大量cmdlet Kerberos AS-REQ & AS-REP KDC TGT票据 基于AS协议的用户枚举 KERBEROSUSERENUM(a-team github) MSF模块 ASREPROAST Session Key,使用用户的NTHASH加密 John/HashCat 可以进行离线破解 SPN(Service Principal Name)域对象的属性,对象是机器/用户,必须设置 TGS-REQ & TGS-REP 服务票据 Service Ticket 结论:普通域账号申请服务票据后可以对账号离线破解 KERBEROAST攻击(基于上述结论) Rubeus.exe PowerView HUNT DOMAIN ADMIN 特定用户登录会话 远程会话枚举 NetSessionEnum(SMB会话) NetWkstaUserEnum(交互登录会话)新版本系统需要 admin privilige 远程用户枚举 场景:一些同域管理账号同名的本地账号可能是同一人创建 SAMR 查询组和成员信息(注:Win 10后没有admin无法枚举) LSARPC 查询SID相关 远程登录枚举 交互式登陆:主要指Console和RDP登陆的方式 获取主机权限:Vul RBCD & RPRN 提取遗留的凭据: Powerview Mimikatz 得到用户权限 横向移动 MS-RPC WMI:基于DCOM TCP/135 明文传输 PSEXEC:(tips:使用impacket工具 psexec.py 区别在于目标支持SMB3.0默认开启加密) 远程计划任务 DCOM:远程调用的COM组件 TCP/445 + Random port dcomexec.py Kerberos委派 概念:是一种让服务有能力以来访用户身份访问其他服务的认证机制 无限制委派:default设置仅域控可以无限制委派 S4U2SELF PRINTER BUG:Printer Spooler服务SSRF 无限制委派+S4U2SELF+PRINTER 任意域控 约束委派 S4U2PROXY 基于资源的委派(RBCD) 目前杀伤力最大的委派 继承S4U2SELF、S4U2PROXY 域权限维持 主机权限维持(常见类型,不展开) 域权限维持 SPN 针对账户进行,参考前面 黄金票据 用krbtgt加密TGT,TGT加密使用该账户的key作为密钥 使用默认参数创建的金票过期时间很长,mimikatz DCSync拉取域内账户的hash/key 检测点: krbtgt key,修改krbtgt密码两次,分析4769日志 日志分析 IDS规则,过期时间,算法等 白银票据 SRVS的相关key加密 检测点: PAC信息验证 受限委派 RBCD 域组策略 LAPS 文件感染与横向移动 文件感染 意义 场景 公司软件库供应链,类似“驱动人生” 感染远程共享文件 外界设备感染,如U盘、移动硬盘 3389挂载盘到服务器 邮件感染,插入恶意宏 流量劫持,感染传输中的文件 方式 PE感染 LNK感染 Office感染 常规PE感染 给exe添加一个导入函数,DllMain中写恶意代码,工具StudyPE 把恶意代码插入到PE中,修改OEP,重建PE OEP内某处跳转到恶意代码 修改OEP指向恶意代码 对抗思路 DLL加载 OEP jump 利用TLS(线程局部存储)回调 TLS感染 TLS回调,反调试;把恶意代码放在TLS,不需要修改OEP TLS数据结构 TLS感染总体流程:搜寻节间隙 - 修改录数据目 - 构建TLS目录 TLS回调函数 - 重建PE - 恶意文件释放 LNK文件 图标如何保持不变? IShellLink::SetIconLocation()把exe设置为当前lnk的图标 恶意代码正常拉起原程序 借助rundll32.exe 场景:权限维持、横向移动 Office文件感染 .docx .docm(宏文件) 可以改为 .doc 目标:把.docx转换为带恶意宏的.docm或.doc 杀软对抗 修改文件关联 .docm 改为.doc,对抗针对后缀.docm 的检测 修改宏关联文件,对抗依赖文件名or类型检测 from:https://github.com/backlion/RedTeam-BCS
创建帐户或登录后发表意见