{"id":13390745,"url":"https://github.com/Mel0day/RedTeam-BCS","last_synced_at":"2025-03-13T15:32:09.760Z","repository":{"id":43908844,"uuid":"203573360","full_name":"Mel0day/RedTeam-BCS","owner":"Mel0day","description":"BCS（北京网络安全大会）2019 红队行动会议重点内容","archived":false,"fork":false,"pushed_at":"2019-09-04T16:54:51.000Z","size":1097,"stargazers_count":812,"open_issues_count":0,"forks_count":233,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-08-01T09:24:42.027Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mel0day.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-21T11:50:07.000Z","updated_at":"2024-07-31T05:41:08.000Z","dependencies_parsed_at":"2022-08-12T10:51:47.347Z","dependency_job_id":null,"html_url":"https://github.com/Mel0day/RedTeam-BCS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mel0day%2FRedTeam-BCS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mel0day%2FRedTeam-BCS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mel0day%2FRedTeam-BCS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mel0day%2FRedTeam-BCS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mel0day","download_url":"https://codeload.github.com/Mel0day/RedTeam-BCS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221380081,"owners_count":16809017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T14:01:16.145Z","updated_at":"2024-10-25T03:30:43.513Z","avatar_url":"https://github.com/Mel0day.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# RED TEAM \n\u003e Powered by QAX A-TEAM\n\n## Summary\n\n![image](https://github.com/Mel0day/RedTeam-BCS/blob/master/summary.jpeg)\n\n## 情报收集与外网打点\n\n因为起晚了..第一个议题没听着，有点遗憾，补张图\n![image](https://github.com/Mel0day/RedTeam-BCS/blob/master/search.jpeg)\n\n## 基础设施架构设计部署 \n\n普通架构：红队人员--》teamserver cs--》目标机\n缺点：功能未分离、无潜伏通道、回连日志多、灵活性较低\n\n演进架构：DNS/HTTP/HTTPS分离server\ntips：1~2cpu 2G内存 10G硬盘，回连数不超过5台，潜伏通道（根据实际目标环境优先）\n\n完整架构： 域名和IP（VPS）teamserver（CS）前置机（redictor）\nCS -》teamservers 1/2/3/... 前置层（SMTP/PAYLOAD/C2/隐蔽C2）\n![image](https://github.com/Mel0day/RedTeam-BCS/blob/master/arch-design.jpeg)\n\n* 选择域名\n![image](https://github.com/Mel0day/RedTeam-BCS/blob/master/15663532496100.jpg)\n    * 抢注过期域名 expireddomains.net  DELETE DOMAIN\n    * tips1: 不要包含世界大厂和杀毒厂商相关的域名，以及和目标相关的域名\n    * tips2：注册目标相关区域常见的域名，记得开隐私保护\n    * 其他：www.freshdrop.com www.domcop.com\n    * tips3：检查域名是否被分类，金融、医疗、电商、航空、旅游 great\n    * tips4：去VT、微步检查，域名是否被标黑\n    * tips5：举报滥用规则仔细阅读（freenom 慎用）\n* 培养域名（养号）\n    * 搭建正常域名，提交至各安全厂商给站点分类\n    * tips1：把域名A记录解析到大厂ip，使用时候再解析到C2，不用时候解析回大厂ip\n    * tips2：VT 自评， alex 自评\n* 域名解析检测\n* 域名分类检测\n    * domaincheck：\n\n* IP检测\n    * 外网IP，通过情报站看是否被标黑\n    * 使用CDN隐藏真实IP（部分安全厂商会拦截CDN IP）\n* 借鸡生蛋，\n    * subdomain takeover：高信誉域名A解析B -》\n    * 高信誉肉鸡做前置转发\n    \n* C2工具\n    * CS 3.14\n        * 自定义流量特征：DNS/HTTP/HTTPS/SMB和TCP\n        * Payload加载流程：shellcode/Loader/Stageless/beacon\n        * DNS：如果用到dns通道默认参数必须修改（容易被设备检测），不要用DNS做数据通道\n        * HTTP（S）：不要在uri中的文件后缀设置js、css等静态文件，效果：付费证书\u003e免费证书\u003e自签名证书 （Let's Encrypt 免费 3个月过期，开自动续）\n\n* Redirector\n    * DNS socat|iptables|ssh（tmux和screen选一个）\n    * Apache|Nginx\n    * Tips：\n        * 建议使用**多个判断**过来请求，拒绝使用默认uri，对抗全网C2扫描\n        * 仅允许目标相关IP访问，对抗云沙盒\n        * 限定访问时间段，只在某个时间段请求payload\n        * 不要把非payload的uri重定向到google等高信誉域名\n        * **建议**：在www.aaa.com搭建来养域名，使用c2.aaa.com的二级域名做C2\n    * Domain Fronting（隐藏IP、域名的方式）\n        * Google App Engine| Amazon |Azure|Aliyun CDN\n        * 可见层：DNS、TLS\n        * 不可见层：HTTPS\n        * URL（高信誉） SNI（高信誉） HOST(C2)\n        * https://github.com/vysecurity/DomainFrontingLists\n        * 代替方案：HTTP pipelining（ \u003ehttp 1.1 ）\n            * 和 domain fronting 效果相同\n            * 利用同一个tcp连接发送不同的host的http包\n            * tips：good domain + bad domain 包一层同时发过去\n    * 第三方服务用作C2\n        * Office365、Pastebin、Slack、Facebook、Dropbox、Gmail、Twitter..\n        * 缺点：需要硬编码到第三方服务\n        * 第三方服务用作C2相关资源汇总\nhttps://pentestarmoury.com/2017/07/19/s3-buckets-for-good-and-evil/\nhttps://rhinosecuritylabs.com/aws/hiding-cloudcobalt-strike-beacon-c2-using-amazon-apis/\nhttps://github.com/daniel-infosec/wikipedia-c2\nhttps://unit42.paloaltonetworks.com/aggah-campaign-bit-ly-blogspot-and-pastebin-used-for-c2-in-large-scale-campaign\nhttps://www.harmj0y.net/blog/powershell/command-and-control-using-active-directory/\nhttps://blog.netspi.com/databases-and-clouds-sql-server-as-a-c2/\nhttps://outflank.nl/blog/2017/09/17/blogpost-cobalt-strike-over-external-c2-beacon-home-in-the-most-obscure-ways\nhttps://labs.mwrinfosecurity.com/blog/tasking-office-365-for-cobalt-strike-c2\nhttps://github.com/maldevel/canisrufus\nhttps://unit42.paloaltonetworks.com/darkhydrus-delivers-new-trojan-that-can-use-google-drive-for-c2-communications\nhttps://github.com/byt3bl33d3r/gcat\nhttps://github.com/maldevel/gdog\nhttps://www.welivesecurity.com/wp-content/uploads/2019/05/ESET-LightNeuron.pdf\nhttps://github.com/bkup/SlackShell\nhttps://github.com/j3ssie/c2s\nhttps://github.com/praetorian-code/slack-c2bot\nhttps://github.com/microsoft/skype-dev-bots\nhttps://github.com/PaulSec/twittor\nhttps://blog.talosintelligence.com/2017/04/introducing-rokrat.html\nhttps://www2.fireeye.com/rs/848-DID-242/images/rpt-apt29-hammertoss.pdf\nhttps://github.com/woj-ciech/Social-media-c2\n\n* 邮件钓鱼（SMTP）\n    * 域名：同C2域名选择\n    * 高信誉的邮件发送者：Mailchimp、Sendgrid\n    * 正确配置SPF、DKIM\\DMARC\n    * SSL证书\n    * 发送时间和频率\n    * 一键部署\n    * 钓鱼邮件框架：Gophish (https://github.com/gophish/gophish)\n\n* 隐蔽性和安全性\n    * 权限最小化：使用iptalbes限定组件通讯，SSH进行端口转发\n    * Teamserver：限制端口只能本地访问，限制beacon监听端口只能redirector访问\n    * Tips：VPS容易被GFW拦截？ \n        * 解决方案：V2ray + Nginx + CLoudflare + Freenom+ Websocket 搭建代理\n* 基础设施监控系统\n    * 记录完整日志，设置告警\n    * 自动化部署 LuWu（https://github.com/QAX-A-Team/LuWu）\n    * 日志中心\n\n    \n## 邮件钓鱼之前期信息收集与侦查\n* 面临的技术挑战：\n    * 邮件网关 mail gateway\n    * 浏览器\n    * EDR、IDS\n* Mail Gateway\n    * ANTI-SPAM\n        * SPF\n        * DKIM\n        * 新注册域名\n        * 生僻域名后缀\n        * 敏感关键字\n    * 特性：\n        * 邮件退信默认开启\n        * MTA默认不开启 Recipient Validation\n    * 结论：当我们发送一封钓鱼邮件给一个不存在的邮箱账户时，如果能收到NDR，证明钓鱼邮件通过了邮件网关安全审查（BACKSCATTER ATTACK）\n    * BYPASS ANTI-SPAM\n        * 通过上述结论，探测，fuzzing ANTI-SPAM 引擎规则\n        * 稳定触发NDR的办法：\n            * 正文大于10M\n            * 收件人超过5000个\n    * BYPASS ANTI-MALWARE\n    * NDR\n* 总结\n![image](https://github.com/Mel0day/RedTeam-BCS/blob/master/RTsteps.jpeg)\n\n## 钓鱼样本制作\n* 钓鱼邮件类型\n    * 恶意的chm文档：利用easy，但目前比较难过杀软，免杀效果差\n    * 带有恶意宏代码的office文档：易于混淆（结合图片模糊之类），但需要手动开宏，进程链可疑\n    * 白加黑钓鱼：利用带签名的白程序，通过DLL劫持的方案加载恶意DLL；比较容易过AV，但需要解压执行\n    * LNK文件钓鱼：链接对象是Powershell，进程链完善\n    * PPT钓鱼样本：PPT超链接，弹出“安全声明”，不用启动宏，但必须全屏播放，启用才执行；不推荐使用\n    * 漏洞利用的钓鱼邮件：效率高，同样成本也高\n\n* 写工具自动化生成恶意lnk，关键函数：\n    * IShellLink::SetIconLocation()\n    * IShellLink::SetShowCmd() 窗口显示\n    * IShellLink::SetArguments()\n    * IShellLink::SetPath()\n    * ...\n\n* LNK钓鱼邮件制作\n    * 钓鱼简历的编写：内容可选浮夸，让HR打开看完后大概率删除，防止提给技术人员\n    * LNK图标的显示：改成各个系统都能默认显示的通用图标\n    * 如何隐藏行为：SetShowCmd() 最小化窗口\n    * Word文档存放：\n        * 联网下载Word文档\n            * (New-Object System.Net.WebClient).DownloadFile(url, file_path);\n            * 数据还原引擎\n                * 协议内容还原：tcp、http、smtp\n                * 文件内容还原：office、pdf、zip\n                * 加壳程序还原：upx\n                * 加密算法数据还原：base64\n        * 本地释放Word文档\n            * 将Word塞到COMMAND_LINE_ARGUMENTS\n                * ARGUMENT用于LNK中存储命令行参数\n                * StringData结构，CountCharacters \n                * IShellLink::SetArguments()\n                * 塞入数据的最大值是 explorer.exe 对命令行参数长度的限制\n                * 实测得出 0x7FC2（31KB）\n            * 将Word塞到lnk文件的尾部（**推荐使用**）\n                * 尾部可以追加任意大小的word、PE、PowerShell\n                * select -last 1 定位到最后一个对象，以“\\n”划分对象\n                * select -index 1 也可以\n    * 杀软对抗\n        * 短文件名 POWERS~1.EXE          \n        * 代码混淆 参考赛门铁克的paper\n        * 安全类进程检测\n            * 虚拟机-取证工具-杀软检测-调试器\n            * 常规手法\n                * 进程名检测\n                * 窗口标题检测\n            * 新姿势\n                * 遍历进程，获取进程对应的版权信息，与黑名单列表比对\n                * 优点：升级版本也不变，通用\n            * 如何根据PID获取进程的全路径：ProcessExplorer\n            * x86不太可行，x64可以 \n            * 绕过PCHunter 0RING hook\n            * 检测后行为，通知攻击者，及时善后处理\n\n## 内网横向移动\n* 内网侦查\n    * 经典主被动内网侦查方式\n        * 主动扫描\n            * 设备资产识别\n            * 可用服务采集\n            * 脚本检测\n        * 被动搜集\n            * 监听广播消息\n        * 雷区警示\n            * 风险面：Network ACL封锁、受控主机HIDS、HoneyPot、NIDS\n        * 方法对比 \n* 域内信息侦查\n        * 类域\n        * *nix\n        * Windows AD\n    * 定位域控（域内主机） \n        * 时间服务器\n            * net time /domain \n            * w32tm /query\n        * DNS服务器\n            * Get-DnsClientServerAddress 查询本机 DNS SERVER 设置\n            * 向DNS server 查询 Domain Name A记录对应地址\n        * 域控定位器\n            * DC Locator Process\n            * 产生DNS查询，沿用DC Locator的机制很安全 \n            * Kerberos认证，KDC\n            * GC\n            * 查询工具\n                * nltest 提取域控信息的过程\n                * net\n                * dsquery 通过对LDAP进行查询\n            * dsquery/ADSISearcher使用明文的LDAP协议，容易被IDS捕获\n    * 定位域控（域外主机）\n        * DNS排查\n            * Scan UDP/53\n            * Query DNS FQDN from DNS\n            * Query Locators from DNS \n        * LDAP（S）\u0026 GC（S）\n            * 扫描端口，利用特性筛查域名\n            * 匿名读取部分LDAP元数据\n            * 读取LDAP证书信息\n            * GC服务 查询 TCP/3268 TCP/3269 \n            * 防御：可以关闭匿名绑定\n        * 查询LDAP（S）服务\n            * ADexplorer：GUI，一些cmdlet  \n            * Get-ADUser\n            * Powerview：大量cmdlet\n        * Kerberos\n            * AS-REQ \u0026 AS-REP\n            * KDC TGT票据\n            * 基于AS协议的用户枚举\n                * KERBEROSUSERENUM（a-team github）\n                * MSF模块\n            * ASREPROAST \n                * Session Key，使用用户的NTHASH加密\n                * John/HashCat 可以进行离线破解\n            * SPN（Service Principal Name）域对象的属性，对象是机器/用户，必须设置 \n            * TGS-REQ \u0026 TGS-REP \n                * 服务票据\n                * Service Ticket \n                * 结论：普通域账号申请服务票据后可以对账号离线破解\n                * KERBEROAST攻击（基于上述结论）\n                    * Rubeus.exe\n                    * PowerView\n        * HUNT DOMAIN ADMIN\n            * 特定用户登录会话\n                * 远程会话枚举\n                    * NetSessionEnum（SMB会话） \n                    * NetWkstaUserEnum（交互登录会话）新版本系统需要 admin privilige\n                * 远程用户枚举\n                    * 场景：一些同域管理账号同名的本地账号可能是同一人创建\n                    * SAMR 查询组和成员信息（注：Win 10后没有admin无法枚举）\n                    * LSARPC 查询SID相关\n                * 远程登录枚举\n                    * 交互式登陆：主要指Console和RDP登陆的方式\n            * 获取主机权限：Vul RBCD \u0026 RPRN\n            * 提取遗留的凭据: Powerview Mimikatz \n            * 得到用户权限\n* 横向移动\n    * MS-RPC\n        * WMI：基于DCOM TCP/135 明文传输\n        * PSEXEC：（tips：使用impacket工具 psexec.py 区别在于目标支持SMB3.0默认开启加密）\n        * 远程计划任务\n        * DCOM：远程调用的COM组件 TCP/445 + Random port dcomexec.py\n    * Kerberos委派\n        * 概念：是一种让服务有能力以来访用户身份访问其他服务的认证机制\n        * 无限制委派：default设置仅域控可以无限制委派\n            * S4U2SELF\n            * PRINTER BUG：Printer Spooler服务SSRF\n            * 无限制委派+S4U2SELF+PRINTER 任意域控\n        * 约束委派\n            * S4U2PROXY\n        * 基于资源的委派（RBCD） 目前杀伤力最大的委派\n            * 继承S4U2SELF、S4U2PROXY\n* 域权限维持\n    * 主机权限维持（常见类型，不展开）\n    * 域权限维持\n        * SPN\n            * 针对账户进行，参考前面\n        * 黄金票据\n            * 用krbtgt加密TGT，TGT加密使用该账户的key作为密钥\n            * 使用默认参数创建的金票过期时间很长，mimikatz\n            * DCSync拉取域内账户的hash/key\n            * 检测点：\n                * krbtgt key，修改krbtgt密码两次，分析4769日志\n                * 日志分析\n                * IDS规则，过期时间，算法等\n        * 白银票据\n            * SRVS的相关key加密\n            * 检测点：\n                * PAC信息验证\n        * 受限委派\n        * RBCD\n        * 域组策略\n        * LAPS\n\n        \n## 文件感染与横向移动\n* 文件感染\n    * 意义\n    * 场景\n        * 公司软件库供应链，类似“驱动人生”\n        * 感染远程共享文件\n        * 外界设备感染，如U盘、移动硬盘\n        * 3389挂载盘到服务器\n        * 邮件感染，插入恶意宏\n        * 流量劫持，感染传输中的文件\n    * 方式\n        * PE感染\n        * LNK感染\n        * Office感染       \n    * 常规PE感染\n        * 给exe添加一个导入函数，DllMain中写恶意代码，工具StudyPE\n        * 把恶意代码插入到PE中，修改OEP，重建PE\n            * OEP内某处跳转到恶意代码 \n            * 修改OEP指向恶意代码\n        * 对抗思路\n            * DLL加载\n            * OEP jump\n            * **利用TLS（线程局部存储）回调**\n    * TLS感染\n        * TLS回调，反调试；把恶意代码放在TLS，不需要修改OEP\n        * TLS数据结构\n        * TLS感染总体流程：搜寻节间隙 - 修改录数据目 - 构建TLS目录 TLS回调函数 - 重建PE - 恶意文件释放\n    * LNK文件\n        * 图标如何保持不变？\n            * IShellLink::SetIconLocation()把exe设置为当前lnk的图标\n        * 恶意代码正常拉起原程序\n            * 借助rundll32.exe \n        * 场景：权限维持、横向移动\n    * Office文件感染 \n        * .docx .docm（宏文件） 可以改为 .doc\n        * 目标：把.docx转换为带恶意宏的.docm或.doc\n    * 杀软对抗\n        * 修改文件关联\n            * .docm 改为.doc，对抗针对后缀.docm 的检测\n            * 修改宏关联文件，对抗依赖文件名or类型检测\n\n## 实战案例\n   略\n   \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMel0day%2FRedTeam-BCS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMel0day%2FRedTeam-BCS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMel0day%2FRedTeam-BCS/lists"}