短短的一生我们总会失去。你不妨大胆一些,攀一座山,追一个梦。
见字知意,正如攻击的名称所表示的那样,攻击者/用户看不到存储的 XSS payload 的执行(无回显),只有管理员或后台员工才能看到。易被遗忘,可能危害更大。
.远程代码执行是我们在每次入侵和 Web 应用程序渗透测试中必须寻找的。虽然 RCE 几乎可能在任何地方找到,但它们最常见于允许上传的地方,
引用文本
**例子:**假设你有一个公共 Web 应用程序,允许用户通过 URL 从 Internet 上下载配置文件图像。你登录该站
点,转到你的个人资料,然后单击 Imgur(公共图像托管服务)的更新个人资料按钮。你提供图像的 URL( 例
如:https://i.imgur.com/FdtLoFI.jpg )并点击提交。接下来发生的事情是服务器会创建一个全新的请求,转到
Imgur 站点,抓取图像(它可能会执行一些图像操作来调整图像-图像跟踪任何人的大小?),将其保存到服务
器,并发送成功消息回到用户。如你所见,我们提供了一个 URL,服务器获取该 URL 并抓取图像,并将其上传到其数据库。我们提供了最初的 Web 应用程序的 URL,以从外部资源中获取我们的个人资料图片。但是,如果我们将图像 URL指向 http://127.0.0.1:80/favicon.ico 会发生什么?这将告诉服务器不是请求像 Imgur 这样的东西,而且从本地主机服务器(它本身)获取 favicon.ico 图片文件。如果我们能够获得返回包的值是 200 或使我们的个人资料图片成为本地的 favicon 图片,我们就知道我们可能发现了 SSRF。由于它在80端口上工作,那么如果我们尝试连接到 http://127.0.0.1:8080 会发生什么情况(8080 是一个除localhost 之外无法访问的端口)?这就是它变得有趣的地方。如果我们确实得到完整的 HTTP 请求/响应,并且我们可以在本地对8080端口发出 GET 请求,那么如果我们发现了一个易受攻击的 Jenkins 或 Apache Tomcat 服务会发生什么?即使这个端口没有被公开监听,我们可能也可以入侵这个环境。更好的是,我们或许可以开始请求内网IP:http://192.168.10.2-254 ,而不是127.0.0.1。回想一下那些返回了内网 IP 泄露的网络扫描结果,你对此不屑一顾。但是这正是它们重新发挥作用的地方,我们可以通过它们来使用内部网络服务。
SSRF 漏洞允许你可以执行以下操作:
XML 代表可扩展标记语言,旨在发送/存储易于阅读的数据。XML 解析常见于允许文件上传,解析 Office 文档,JSON 数据甚至 Flash 类型游戏的应用程序中。当允许 XML 解析时,不正确的验证可以授予攻击者读取文件的权限、导致拒绝服务攻击,甚至远程代码执行。
普通 XML 文件恶意 XML 文件
如果我们看不到响应或遇到字符或文件限制怎么办?我们怎样使用带外数据协议(OOB)来发送我们的数据?我们可以提供远程文档类型定义(DTD)文件来执行 OOB-XXE,而不是在请求 payload 中定义我们的攻击。DTD 是结构良好的 XML 文件,用于定义 XML 文档的结构和法律元素及属性。
找到最初的攻击点可能很麻烦,需要耗费大量的资源。也可以伪造受害者的身份验证页面、购买非常相似的域名来对目标实施钓鱼,以及编写自定义的恶意软件、暴力破解密码等不同的方法。公司的电子邮件(如 Office 365或 OWA)、通信工具(如 Lync、XMPP、WebEx)、协作工具(如 JIRA、Slack、Hipchat、Huddle)和其他外部服务(如 Jenkins、CMS 站点、支持站点)进行身份验证。都可以成为我们的目标突破口。
介绍一下密码喷洒攻击
与密码爆破攻击可以说是相反的。在密码爆破攻击中,黑客选择一个易受攻击的 ID 并一个接一个地输入密码,希望有一些密码可以让他们进入。基本上,密码爆破是用多个密码尝试破解同一个 ID。而密码喷洒攻击,是用一个密码来尝试多个用户ID,以便至少有一个用户 ID 被泄露。对于密码喷洒攻击,黑客使用社交工程或其他网络钓鱼方法收集多个用户 ID。通常情况下,至少有一个用户使用简单的密码,如12345678甚至是 p@ssw0rd
针对不同的外部服务进行身份验证原因:
有些身份验证程序不会记录从外部服务尝试验证的次数。虽然我们通常看到电子邮件或 VPN 系统要求双因素验证(2FA),但面向外部的即时通讯系统可能不需要。密码重用的可能性非常高。有的时候,当使用 AD 账户多次重复登录失败时,外部系统并不会将此账户锁定。
一些猜密码的思路:
生日,名字,身份证号,电话号码,
月份和年份的数字组合。
当地的球队和球员的数字编号组合。
查看一些以前泄露出来的数据,找一些有没有目标公司的用户资料泄露,因为相同公司的用户可能会使用类
似的密码。
公司名称+年份/编号/特殊的字符 (如!,$,#,@)
作为一名红队成员,应尽可能安静地在网络中穿梭。使用“特征”来查找和利用有关网络、用户、服务等信息。通常,不希望在内网环境中进行任何漏洞扫描相关的活动。有时甚至不希望对内部网络运行 nmap 扫描。因为许多公司已经非常擅长检测这些类型的扫描,特别是在运行漏洞扫描器这样动静很大的东西时。我们将集中精力在不触发任何检测防护的情况下在 CSK 的网络进行横向漫游。假设我们已经以某种方式进入内部网络并开始寻找你的第一组凭证,或者已经拥有了一个用户机器上的 shell。
真正学会如何攻击目标环境的唯一方法是自己亲手构建一下目标环境
理想的 Windows 测试实验环境:
配置和创建域控制器
设置客户端机器(Windows 7/10)加入域:将所有机器都打好系统补丁,将机器连接到域,主机上启用本地管理员并设置密码
将 GPO(组策略)设置为:禁用防火墙,禁用 AV,禁用系统自动更新,将 Helpdesk 用户组添加到本地管理员组,仅允许域管理员、本地管理员、Helpdesk 登录,最后,将 GPO 设置同步到主域。
设置 IIS 服务器并配置 SPN
在内网中没有凭据
在网络上侦听并伪造请求以获得网络上的凭据。
https://github.com/SpiderLabs/Responder
未被引用服务路径:
这是一个相当简单和常见的漏洞,其中服务可执行路径没有被引号括起来。这是很容易被利用的,因为如果
路径周围没有引号,我们就会利用当前服务。假设我们有一个服务被配置为执行 C:\Program Files
(x86)\Cyber Kittens\Cyber Kittens.exe。如果我们有 CK 文件夹的写入权限,我们可以将其替换为
C:\Program Files (x86)\Cyber Kittens\Cyber.exe(注意,原名称中的 Kittens.exe 消失了)的恶意软件。如
果服务在系统上运行,我们可以等到服务重新启动,并让我们的恶意软件作为一个 system 帐户运行。
如何找到易受攻击的服务路径:
通过 wmic 服务获取名称、注意 displayname、pathname、startmode |findstr /i “Auto” |findstr /i /v
“C:\Windows” | findstr /i /v “”"
寻找 BINARY_PATH_NAME
查找服务中存在的不安全的注册表权限:,识别允许更新服务映像路径位置的弱权限账户
检查 AlwaysInstallElevated 注册表项是否已启用:检查 AlwaysInstallElevated 注册表项,该注册表项指示.msi 文件应以较高的权限 ( NT AUTHORITY\SYSTEM) 安装
**从 Windows 凭据管理器和浏览器获取密码 **
Windows 凭据管理器是 Windows 的默认功能,用于保存系统、网站和服务器的用户名、密码和证书。记不记得
当你使用 Microsoft IE/EDGE 对网站进行身份验证后,通常会弹出一个弹出窗口,询问“是否要保存密码?”凭证存储就是存储这些信息的地方,在凭据管理器中,有两种类型的凭据:Web 和 Windows。你还记得哪个用户有权访问这些数据吗?它不是 system,而是登录后可以检索此信息的用户。这对我们来说是很好的,就像任何钓鱼网站或代码执行一样,我们通常都可以用别的方法获得那个用户的权限。最好的一点是,我们甚至不需要成为本地管理员来提取这些数据。
使用PowerShell无文件地提取敏感浏览器信息:
https://github.com/sekirkity/browsergather
Service Principal Names(服务主体名称)
它允许客户端能够唯一地标识服务的实例。因为任何域用户帐户都可以查询与 Active Directory 关联的所有服务帐户和服务器的AD。在那些运行 MSSQL 服务器、HTTP 服务器、打印服务器和其他服务器的服务帐户找到一个用于服务的 SPN。对于攻击者来说,查询 SPN是爆破阶段的重要部分。
在任何已经加入域的计算机上,攻击者都可以运行 setspn.exe 文件来查询 Active Directory(AD)。此文件是所有 Windows 机器默认自带的 Windows 二进制文件。
setspn -T [DOMAIN] -F -Q /
功能:
-T = 对指定域执行查询
-F = 在 AD 环境而不是域级别环境执行查询
-Q = 在每个目标域或林环境上执行
/ = 显示所有
【在cmd中运行setspn即可】
查询 Active Directory
找到了一个域用户帐户和密码(没有其他特权的域用户帐户)我们通常可以在打印机,共享信息工作站,带有服务密码的文本文件,配置文件、iPad、包含密码的 Web 应用程序的页面源代码中中找到这些类型的帐户,但是,对于这些没有其他组成员资格的基本域用户帐户,可以用来做什么?
C:\vssadmin create shadow /for=C:
copy \?
\GLOBALROOT\Device\HarddiskVolumeShadowCopy[DISK_NUMBER]\windows\system32\config\SYSTE
M.
copy \?
\GLOBALROOT\Device\HarddiskVolumeShadowCopy[DISK_NUMBER]\windows\system32\config\SAM.
reg SAVE HKLM\SYSTEM c:\SYS
vssadmin delete shadows /for= [/oldest | /all | /shadow=]
在 Linux 中横向移动
如果你幸运地获得了一个 SSH shell,那么我们可以通过该系统进行渗透。我们如何获得 SSH shell 呢?在许多情况下,一旦我们可以实现本地文件包含(LFI)或远程代码执行(RCE),我们可以尝试权限升级以读取/etc/shadow 文件(和密码破解),或者我们可以利用一些 Mimimikatz 风格的方法
因为Linux 系统也有同样的问题,密码以明文形式存储。
Linux 提权
在很大程度上与 Windows 类似。我们寻找可以写入的易受攻击的服务、那些棘手的错误配置、平面文件中的密码、所有的可写文件、计划任务,当然还有修补问题。
一个漏洞是 DirtyCOW。
DirtyCOW 的工作原理是“在Linux内核的内存子系统处理写访问时只读私有映射 COW 情况中断的方式中发现了竞争条件。非特权本地用户可以使用此缺陷获取对其他只读内存映射的写访问权限,从而增加他们在系统上的权限。”[https://dirtycow.ninja/]简而言之,此漏洞允许攻击者通过内核漏洞从非特权用户转到 root 权限。这是我们能想到的的最佳权限提升的方法!但有一个问题是它会导致一些内核崩溃,所以我们必须确保在正确的 Linux 内核上使用正确的版本。
作为红队队员,我们钟爱社会工程学攻击。不仅因为它通常包含低技能攻击,而且因为它也很容易以非常低的成本来策划一场值得我们高度信赖的战役。只需设置几个假域名、服务器、策划一些电子邮件、假装丢掉一些 badUSB,然后就可以结束一天的工作了。
近似域名
克隆验证页面
快速克隆Web应用程序登录验证页的最佳工具之一是 TrustedSec 公司开发的社会工程学工具包(SocialEngineering Toolkit,简称 SET)。这是任何需要获取身份凭证的社工活动的标准工具包 https://github.com/trustedsec/social-engineer-toolkit 下载。
https://www.bookstack.cn/read/daxueba-kali-linux-tutorial/39.md如何使用SET
使用双因素验证的身份凭证
对于红队来说双因素认证是一个巨大的麻烦,因为它们不可能被随意绕开。在以前我们必须创建一些定制化的页面,这样可以处理其中的一些情况。但现在我们有了ReelPhish,这是 FireEye 公司制作的一个工具。当受害者在我们的钓鱼网页上输入登陆凭证时,ReelPhish 允许红队利用 Selenium 和 Chrome 来自动触发双因素验证。
网络钓鱼
网络钓鱼的秘诀在于激发受害者的恐惧感或者紧张感,有时也会向受害者描绘一些非常美好(甚至不太真实)的诱惑。
一封带有欺诈性购买的虚假电子邮件
有人黑进了你的电子邮件消息
有关税务欺诈的电子邮件
检测“响应”:一般性攻击会产生员工通常每10封基本钓鱼式攻击邮件中至少有1封会被上报。在某些情况下,比例甚至更高。这些情况对于一个红队来说是很有价值的,红队可以持续监控这些简单的网络钓鱼攻击。
自动化钓鱼攻击:
Gophish 易于设置和维护,并且支持模板和HTML,另外它还会跟踪和记录你所需的一切。
Phishing Frenzy就是一个使用 Ruby语言写的很好的工具。
当然,少不了的也有用 python 语言写的工具,King Phisher 就是使用 Python 开发的
具有高可行度、针对性的入侵行动少不了手动的社工。寻找该公司泄露信息的电子邮件包括可能正在运行的程序、新的特性、系统升级、代码合并等等。使用所有的开源工具来搜索有关人员及其财产、家庭等的信息。获取他们的社交媒体帐号,找出他们的孩子上学的地方。然后我们向他们发送一封欺骗性电子邮件,假装是学校发的,说他们需要打开这个 word 文档。要做完这一系列事情可能要花费很长时间,但好处在于成功率很高。
Microsoft Word/Excel 宏文件
老旧,但仍是久经考验的。
那为什么 Office 文件非常适合作为恶意 payload 的载体呢?这是因为 Office 文件的默认设置是支持 VBA 代码所以允许VBA 代码的代码执行。尽管最近这种方法已经很容易被杀毒软件检测到,但在经过混淆处理之后,在很多情况下仍然可以生效。
另一种思路是将我们的 payload 嵌入一个批处理文件(.bat)。但在较新版本的 Office 中,如果受害者双击Word 文档中的 .bat 文件,对象则不会被执行。我们通常不得不试图诱导受害者使其将 .bat 文件移动到桌面并执行。
在最基础的水平上,我们可以使用 Empire 或 Unicorn 来创建一个 VBA 宏
LuckyStrike 来以更自动化的方式完成此操作、
VBad运行 VBad 时,必须在 Office 中启用宏,并在宏安全设置的下拉框中选择 “信任对 VBA 项目对象模型的访问” 选项。这会允许 VBad 运行 python 代码来更改并创建宏。
对于红队来讲:检查他们的门和安保设施是否合格。警卫的反应和响应时间,尽量与物理安全团队协同工作,并有一个书面的免责核准文件,以防被警察抓到后需要承担额外的法律责任。如果保安抓住你,你是否可以逃跑,或是立马停止。以及该公司是否安装了无线电监听。确保警卫不会将你的试验行动上报到当地执法部门。
在大多数情况下,那些由 HID 公司生产的、不需要任何私有/公开握手认证的感应卡,我们仍然可以很轻易地克隆它们,并暴力破解它们的 ID 号。
ProxCard Ⅱ 、Proxmark3 RDV2 Kit、HID iClass (13.56 MHz)、HID ProxCard (125 kHz)、
EM4100x (125 kHz)、MIFARE Classic (13.56 MHz)
要真正深入了解物理工具及其操作方法,实践是最好的老师。进行物理评估的最佳方法,一直都是实践、建立物理实验环境
Lock Picks —— SouthOrd 公司生产的开锁工具一直是我们的首选。质量好,效果好。
Gate Bypass Devices —— 用来绕过锁着的门的工具。
Shove-it Tool —— 简单的工具,用于门和门闩之间有足够的空间的情况下。类似于贴卡打开感应门,你使用此工具拉开锁里的活塞。
Under the Door 2.0 —— 拉开带有手柄的门的工具。我们可以用 Under the Door 工具从门下直接进去,绕着把手,然后往下拉。在过去酒店中经常会安装这种门,但我们肯定也会在业务中遇到这种门。
Air Canisters —— 这是一个价格便宜又构造简单的工具,可以通过内部的运动传感器打开门锁。看看这段视频,看看 Samy Kamkar 如何绕过此类型的门: https://www.youtube.com/watch?v=xcA7iXSNmZE
LAN Turtle
把树莓派和 ODROID 作为攻击武器:给这些设备安装 Kali Linux 系统,让它们通过 SSH 或者 VPN 连接到我们的攻击者机器中,这是做物理渗透测试的一个好方法。
设置 LAN Turtle:
LAN Turtle 的目的是取代 dropbox(一款可以同步本地文件的网络存储在线网盘应用)但红队使用的主要功能是“使用 LAN Turtle 获得进入网络的权限”。对于更深入的扫描/复杂的攻击,我们需要完全访问网络。为此,我们必须配置反向的 VPN 连接。那么,怎样进行反向 VPN 连接?是这样的,因为 LAN Turtle 会被插入入侵目标组织内网中的某个台式机的后面,所以我们不能直接连接到它。因此,我们将让 LAN Turtle 首先通过端口 443 外连到 VPN,然后作为服务器返回到我们的 OpenVPN 。从我们用来做攻击的 Kali 机器中,我们也必须登录进 VPN 服务器。一旦 LAN Turtle 和我们的攻击者机器都通过VPN 连接到我们的服务器中,我们就可以把流量从 LAN Turtle 转发到攻击机器来进行扫描或漏洞利用。
OpenVPN 反向代理通道不是什么新技术
具体的使用步骤主要是以下三步:
Bash Bunny
模拟 HID 设备(如键盘)来存储命令。对红队成员而言,可以加速 PowerShell 命令的传递,用于社会工程学攻击,并且可以在没有键盘但有 USB 插槽的柜台系统(如 ATM 机、自动售货机等)上做出入侵操作。
HID Attack 是最近几年流行的一类攻击方式。HID 是 Human Interface Device的缩写,意思是人机接口设备。它是对鼠标、键盘、游戏手柄这一类可以操控电脑设备的统称。 由于电脑对这类设备缺少严格的检测措施,只是简单的识别设备类型,就允许设备对电脑进行各项操作。所以,通过修改篡改设备反馈信息,就可以很轻松的让电脑将其他设备误认为 HID 设备,从而获取控制权限。尤其是 USB 和蓝牙这类即插即用接口出现,导致 HID Attack 成为重要方式。例如,Bad USB 就是 USB 类攻击的典型代表。
WiFi
攻击方式仍包括反认证、aireplay-ng 和捕获 IV 数据包。对于 WPA 无线网络,最好的攻击手段,依旧是对客户端进行反认证 、捕获握手包、将其传递给 hashcat 对密码进行破解,不过越发展越麻烦点罢了。