红队突破外围的五大方式
最近在拜读这篇文章《红队突破外围的五大方式》,从中学习相关红蓝对抗的经验总结,并从文章中进行提炼学习,知识点,来提升自我同时分享作为知识备份。
在红方侦查阶段:采用有效的侦查、发现技术手段和工具,挖掘出有针对性的攻击对象就能够轻易触发一些系列攻击操作,从而帮助红队获取一个非常复杂的目标。所以做为外围突破总结一些外围信息搜集和突破点的思路进行学习。
1. 第一阶段 OSINT 收集
OSINT(公开来源情报)是从公开来源收集到的情报 。 在情报机构(IC)来看,“公开”是指公然展示的、公众可见的来源(相对于被掩盖或并非公开可见的来源)。 它与开源软件或群体智能无关– wiki
awesome-osint给我们提供了丰富的公开数据源,在我看来,当前互联网数据接口是十分多的(但是数据同步能力则十分低效,或掌握在一部分组织手中),如何进行数据挖掘是十分重要的核心能力点。以下列出开源情报的一些思路和方式。
-
被动收集方式(Passive Gathering)
- 引擎API数据搜集
- shodan
Shodan是一个搜索引擎,它允许用户使用各种过滤器查找连接到互联网的特定类型的计算机(网络摄像头,路由器,服务器等)。有些人还将其描述为服务横幅的搜索引擎,服务横幅是服务器发送回客户端的元数据。[1]这可以是有关服务器软件的信息,服务支持的选项,欢迎消息或客户端在与服务器交互之前可以找到的任何其他信息。
shodan,作为主机搜索引擎,可以快速的搜集目标ip的一些服务信息、指纹信息、漏洞信息、作为攻防目标的基础信息搜集和突破点,文中给出了一个信息搜集脚本shodanhat,个人觉得没有shodan官方接口好用API,当然大批量搜索目标时需要KEY(付费)
-
SpiderFoot
文章中提到了另外一个脚本SpiderFoot这是脚本化了的OSINT收集脚本,支持不同数据类型,和不同引擎的数据反馈,shodan也是其中接口之一。
### 输入 Domain IP Address hostname/sub-domain subnet ### 调用引擎(有些需要私有API) Honeypot Checker SHODAN VirusTotal IBM X-Force Exchange MalwarePatrol BotScout Cymon.io Censys.io Hunter.io AlienVault OTX Clearbit BuiltWith FraudGuard IPinfo.io CIRCL.LU SeccurityTrails FullContact.com RiskIQ Citadel.pw
-
企业人脉网络信息搜集(LinkedIn)
主要提供了国际中用的比较多的LinkedIn 这样的社交应用,文章提供了 一个针对 LinkedIn 这样信息搜集脚本LinkedInt通过设置,搜集大量某公司或者某一类用户的基本信息(邮箱、用户名,访问凭据,密码爆破、联系方式等突破口)。(其他类似方法:1.浏览器burpsuite脚本搜集linkint(方式不同) )
-
DNS类
DNS信息搜集作为基础数据可以精确地定位目标的域名、子域名、IP、这些指向性基础设施设备信息。文章给了三种子域名枚举工具及IP
-
互联网文档库
提供搜索引擎 基于爬取的 WIKI、网页文档、连接等等 。地址: https://archive.org/web/ 感觉使用根据特定场景能够搜索到一些有用信息。
-
OSINT服务相关
一些已经实现的常用的数据查询接口
-
google语法(通过google hacking 语法进行google信息搜集)
-
社交媒体信息搜集(这种信息搜索方式较为针对性和模糊性,搜索公司发布的公开信息)
-
github信息泄露获取(通过监控爬取github的泄露凭据,作为攻击资源)
-
Amazon S3服务 敏感信息获取(获取托管服务的数据看是否有,泄露数据)
Amazon Simple Storage Service(S3)是一项AWS服务,供用户以安全的方式存储数据。S3 Bucket权限默认是安全的,这意味着在创建时,只有存储桶和对象所有者可以访问S3服务器上的资源。xxx.s3.amazonaws.com 前缀 托管目录
文章提供了一个简单的脚本 inSp3ctor.py文件 用来搜索,但是字典还是要自己持续丰富提供,探测说明报告
-
违规/被攻击记录查询
查询违规记录、来寻找是否存在攻击面、国内好像蛮少的,
Pwned API(https://haveibeenpwned.com 资源网站的api)
-
元数据处理(其实就是对文档处理)
FOCA(带有收集档案的指纹识别组织)是一种主要用于在扫描文档中查找元数据和隐藏信息的工具。
它能够分析各种文档,最常见的是Microsoft Office,Open Office或PDF文件,但它也可以分析Adobe InDesign或SVG文件
通过 google、bing、DuckDuckGo 之类的引擎获取文档,提取信息(个人感觉处理量有点大)
-
针对微软通信服务的对外接口
邮件服务
-
MailSniper(功能主要是爆破exchage–outlook,搜集邮件中的泄露信息,密码。)
-
ruler(搜索ex服务器与EXchange 交互,并尝试进行数据获取)
-
msf上的模块 进行outlookapp 暴力破解 use auxiliary/scanner/http/owa_login
LYNC通信服务(LCS, OCS, Lync, Skype各种名字)
Microsoft Lync(前称Microsoft Office Communicator)是一个配合Microsoft Lync Server一同使用,又或随同Office 365与Live@EduLync Online附送的即时通信客户端。客户端软件的基本特性包括即时通信、IP电话和网络视频会议。
SharePoint
SharePoint是微软制作的一款用于Windows Server 2003的免费附加(增值)软件,它提供基本的门户网站和企业内网功能。它包括由web部件(由ASP.NET开发)组成的叫作web 部件页面的门户页面、团队站点、文档库以及项目子站点,带有版本控制的文档存储空间、以及基本的搜索功能。它的前端是一个运行于Internet Information Services 6.0之上的ASP.NET网站,后端由SQL Server或者MSDE来存储数据。
-
-
主动扫描工具
-
https://medium.com/@adam.toscher/top-five-ways-the-red-team-breached-the-external-perimeter-262f99dc9d17
2. 第二阶段 鱼叉式网络钓鱼
在拥有大量OSINT资源的理想情况下,拥有一些确切的:目标的名称、年龄、职位描述(相关通过打电话什么的也是技术手段之一),操作系统、Office版本、Anti Virus版本、类型,明确防火墙及代理设备在创建攻击载荷进行外围突破时都十分重要。
文中给出了在线针对攻击时随机给出匿名攻击时所需的安全假名、地址、用户名、密码、可用的电子邮件地址等的生成网站、免费电子账户注册便于你在锁定目标时的进行前期的载荷投递准备。
在生成有效投递载荷,比如用Cobalt Strike ,在这里文章强调了一下无阶段有效载荷与分阶段有效载荷 这两个概念各有优劣,最明显的区别就是攻击过程和载荷是否分阶段执行投递。同时在攻击阶段,应该明确的是钓鱼方案中使用的网站都应是合法的,所生成的载荷都应该显示为正常 有效的文档或者应用程序。
在介绍使用载荷生成框架方面,文章提的并不是很明确(根本就没咋说,主要就是为了推销Cobalt Strike~2333)、定制化是常态。不过较为著名的框架应该是Cobalt Strike(收费)、Metasploit(开源)等。
不过在载荷投递方面,针对用户触发阶段,提供了一些方法:
-
ClickOnce应用
ClickOnce是微软公司开发的一门用于在网络上发布应用程序的技术。
ClickOnce使得用户可以从支持ClickOnce的网页中点击一个链接来运行一个程序。ClickOnce的设计目标是使得应用程序的启动和升级更加容易。
ClickOnce的安装是把文件复制到用户的配置文件下,所以不需要管理员权限,对系统的影响也比较小。.Net对ClickOnce程序采取的安全策略是基于启动位置,在默认的安全设置下,从Internet启动的程序较从本地启动的程序拥有较少的权限。
ClickOnce程序可以从程序的更新位置检查是否有更新版本,并且提示用户下载和安装新的版本。
通过开发这样的ClickOnce包装器,来针对windows 的信用体系进行攻击。例子
-
HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C++等程序语言所设计的软件界面没什么差别
通过邮件伪造一个网页页面(中间包含运行的HTA恶意程序)诱导进行载荷投递。
-
通过投递生成的CSharp(C#)的载荷
C#是微软推出的一种基于.NET框架的、面向对象的高级编程语言。C#以.NET框架类库作为基础,拥有类似Visual Basic的快速开发能力。
通过投递C#程序进行载荷投递,提供一个sharpshooter脚本用于触发载荷生成
-
powershell 的msbulid 白程序调用方式
PowerLessShell依赖于MSBuild.exe来远程执行PowerShell脚本和命令,而不会产生powershell.exe
这样可以轻易的,进行调用。(其实也是利用了微软的默认信用体系)PowerLessShell
-
rundll32.exe 调用 最为常见的方法
通过调用rundll32.exe 的程序进行 dll 注册 注入 执行 来进行调用 简单的生成脚本 CACTUSTORCH
3. 第三阶段 基础设施准备
-
电脑用什么(Mac….)
-
实验环境准备 (Active Directory、Microsoft Office 、anti Virus等)还给推了广告。。。云端平台Endpoint,不过该平台强调了自己在att&ck 上的覆盖能力,确实是一个前瞻性的思路。
-
讲了个技术点关于网络层分析的
配置SSL解密策略以定义符合解密条件的SSL流量时,您必须在两种不同类型/模式之间进行选择:
- SSL正向代理(流量代理,需分发配置秘钥,CA证书签发)
- SSL入站检查(不充当代理,获得秘钥情况下,解密配置进行数据解密)
msf 增加httpstager 的shell 验证是否符合或者被劫持(对抗防御和研究)
-
红队外部基础设施
在红队攻防中,自有资产,比较重要的就是自己外部基础设施的域,一个自有的基础设施点被标注恶意,则会影响整个环节攻击被检测或者标注。所以怎么隐藏自己的基础设施是一个重要的议题。
主要的设施: domains 域名 redirectors 重定向服务器 SMTP servers 邮件服务器 payload hosting servers payload 服务器 command and control (C2) servers c2 控制服务器
隐藏思路:
- 基础配置
- 主要设施按照功能隔离,其中对于C2 也安装功能 分成C (command) 和 C (control)
- 重定向,做保密和模糊处理
- 技术使用的不确定性
- 在控制阶段的进行重定向处理
- 测试时间控制
- 架构压力测试
- log完整性
- 域名选用
- 域名按照用途分类
- 域名选取合法分类过的域名与未分类域名 进行交叉掩护
- 域名与目标流量 相似度要高
- 载荷处理
- 选用目标环境有效载荷类型
- 载荷触发的有效性
- 有效载荷重定向,web重定向分两类:scat/iptables 类与Apache mod_rewrite、nginx
- 载荷访问指纹有效性(防止分析)
- C2处理
- long-Haul vs short-Haul :根据功能用途分类频次分开,进行处理。(可以仿照鱼鹰的DNS回显)
- short c : 快速可更换性
- 协议选择,常见的 HTTP(s)、DNS、Domain Fronting 、C2ip
- 流量相似性
- 重定向处理
- SMTP
- 自控服务器:Sendmail和Postfix,设置SMTP服务器配置DKIM,SPF和PTR记录。还应将服务器配置为删除所有先前的主机标头
- 第三方接口操作(需评估影响)
- 使用开放的邮件中继点
-
强调选择域对 基础域名的相似性和过期域名 要点的强调 提供 一个 代理分类管理工具
-
隐蔽性测试:不论外部渗入 还是内网攻击案例中,对每个操作进行评估都至关重要,这里提供一个过期域名案例,包括简单的域前端处理说明
-
2018流行攻击及策略
4.第四阶段:持久化处理
基本的持久化套路,通过加密方式绕过流量,通过简单后门创建 cron计划任务,通过ssh stunnel 这种端点进行持久化控制。但是在初步连接建立时进行进一步持久化,所在节点及周边节点信息获取,优化持久化能力十分重要,(这里的持久化能力和方法根据具体场景进行选用,着重在于是否对目标系统的了解采取合适方法。),讨论帖子例子和想法。