penetration test report interpretation

老师布置的一项任务,deploy丰富博客


渗透测试报告

目录
执行总结 3
结论总结 3
攻击记叙 3
远程系统调查 3
管理员网络服务器界面攻击 5
命令解析器到管理服务器 7
提权 9
JAVA客户机攻击 9
升级为本地管理员 11
深包检测规避 12

Citrix环境下的漏洞 14
升级为域管理员 17
总论 19
建议 20
风险等级 20
附录A:漏洞细节及减轻危害 21
风险等级范围 21
默认的或弱的凭证 21
密码重用 21
共享本地管理员密码 21
补丁管理 21
DNS区域传送 22
默认APACHE文件目录 22
附录B:关于Offensive Security 22

执行总结

为了检测经过一次蓄意攻击中后会出现什么问题,MegaCory One授权Offensive Security进行了这一次的渗透测试。我们有一个准则,就是为了模拟一个蓄意的攻击者,这个攻击者热衷于攻击MegaCory One的系统,并且我们要达到下列目的:

 确认远程攻击者能否破坏MegaCory One的防御系统
 确认攻击所带来的影响:
 公司重要数据是否泄露
 MegaCory One信息系统内部结构是否泄露以及是否可用

我们的工作主要是在确认和利用系统漏洞上,远程攻击者可以通过这些漏洞以未授权的方式获得一些重要数据。这些攻击方式可能一个只会上网的人也可以用。评估是按照NIST SP 800-115 中的标准下进行的,并且所有的测试都是可控的。

结论总结

对于MegaCorp One公司系统的第一次检测,就发现了一个错误配置的DNS服务器,其允许进行区域传送。这个漏洞给检测提供了许多可供攻击的主机。检查了这些主机后,发现一个受密码保护的网站服务器界面。我们通过穷举攻击爆出了密码从而能够进入网站,在建了符合网站密码的格式的随机字母表后。

这个管理界面非常脆弱,因为有一个远程代码注入漏洞,通过这个漏洞可以获得对底层操作系统访问的权限。因为没有正确的系统更新,而使最初的小问题变成了大问题。进一步检查后,发现管理用户可以在这个受损的服务器上运行着一个JAVA程序。当我们上传了恶意代码后,取得了访问权限。

利用这个服务器爆出的密码,我们能够访问先前不能访问的资源。这使得我们能够使用本地账户就可以登录许多的WINDOWS主机,一个CITRIX的服务器,还有对于WINDOWS活动目录完整的权限。通过将恶意流量封装进协议里,现有的恶意流量控制就可以避开。

攻击记叙

远程系统调查

为了更好的评估,MegaCorp One提供了很少的信息,除了组织的域名:megacorpone.com。这样做的目的是为了更符合一个没有得到内部信息的攻击者。为了避免攻击其他组织的系统,在攻击前,所有系统都进行了所有权验证。

我们检查了megacorpone.com域名的DNS服务器,查看有没有可能的攻击目标。

Figure 1-通过收集域名的信息找到了三个DNS服务器

利用这几个服务器,我们试着去进行区域传输。发现ns2.megacorpone.com的区域传输配置错误。这暴露了许多的主机名和其相关的IP地址,这非常有帮助。(Figure 2)区域传输提供给攻击者详细的信息,这个组织的职能,网段。详细请看附录A。

Figure 2-一个错误配置的DNS服务器,允许完整的五限制的区域传输

这些识别出的主机提交给了MegaCorp One确认,确定整个50.7.67.X网段都要在评估范围内。这些主机会被扫描,接着列举出所有正在运行的服务。为了确定这些服务器潜在的漏洞,它们会被仔细的检查。

通过枚举技术和网络扫描,可以建立一个映射MegaCorp One网络的结构。

在Figure 3中展示了目标网络结构。例如深包检查这样的额外控制细节,会在接下来的评估中提到,这里为完整性,先说一点。

Figure 3-目标网络

管理员网络服务器界面攻击
Admin.megacorpone.com服务器在81端口上运行着Apache服务。通过站点的根URL访问,发现了一个空白页面。接下来,进行一次快速的枚举扫描,以期找到公用目录和文件。(Figure 4)

Figure 4-admin.megacorpone.com的枚举攻击揭露了网站的文件结构

扫面的结果显示没有改变Apache公共默认目录(详细请看附录A),我们确定/admin是唯一可通过身份验证的目录。(Figure 5)

Figure 5-admin目录受密码保护

我们定作了一个基于该网站内容的字典文件,为了暴力破解密码。最初的字典包括了331个特意字符串,通过几轮置换,形成了有16201个字符串的字典文件。用admin的用户名和这个字典来暴力破解。

Figure 6-使用字典攻击来获得管理员密码

暴力攻击找到了admin用户的密码”nanotechnology1”。利用这个账户就能一未授权的方式得到网站受保护部分的内容。(Figure 6)详细请看附录A,怎么利用这个漏洞。

这里面有一个SQLite Manager服务界面,无需任何凭证就可以访问。利用这个界面,发现支持phpSQLiteCMS实例的数据库。http://phpsqlitecms.net/

Figure 7-网站运行着SQLite数据库

通过这个界面就可以获得数据,比如用户名,以及相关的密码哈希值。(Figure 8)

Figure 8-缺少额外的设置,攻击者可以很方便地获得数据,从”userdata”这个数据库

表中的密码hash值不符合任何标准的格式。使用一个叫”phpselitecms”的软件,查看源代码以确定hash值是怎么产生的。可以看到这个函数的功能是hash账户的密码。

Figure 9-查看源码发现密码hash生成算法

知道了密码hash的格式,还有随意生成的十个字符的salt值,可以将这些hash值转变成等价的加了salt的SHA1值,进行暴力攻击。

得到了两个明文密码,尽管不是立马就有用,但可能在组织里其他的系统中可以用到。

命令解析器到管理服务器

先前发现的SQLite Manager有一个著名的代码注入漏洞。(https://www.exploit-db.com/exploits/24320)利用这个漏洞可以获得shell,进入网站服务器用户使用的系统。使用一个改良过的公共漏洞利用库,可以得到admin.megacorpone.com服务器上有限的交互权。详细请看附录A.

Figure 10-利用一个公开的可用的SQLite漏洞,就能以未授权的方式进入系统

Figure 11-只能取得www-data这个用户的权限

MegaCorp One使用的SQLite Manager的版本和该存在该漏洞的版本有一些不同。尽管使用的版本也同样存在相同的底层问题,但在没有修正的情况下,这个漏洞不能发挥作用。所以我们添加了功能,让它支持HTTP认证,适合于新版本的SQLite Manager。这个新的漏洞随后会发布出去。

在图12中可以看到方案的内容。

Figure 12-网络服务器的攻击方案  

提权

当得到了底层系统的交互权后,我们继续寻找可以提升权限的方法。随后,找到了一个可以可以利用的提权的漏洞。(http://www.exploit-db.com/exploits/18411/)详细信息请看附录A。

Figure 13-使用一个提权的漏洞,该主机没有打补丁,所以可以用

因为上传了漏洞利用工具,所以让利用该漏洞有一定的可行性。如果没有这些工具,还是由可能成功提权的,尽管这么做工作量会大大增加。

服务器有许多漏洞,可以给攻击者很多机会,如果不补救的话。有了管理员的权限,攻击者可以做很多的事,既可以攻击MegaCorp One自己,也可以攻击它的用户。当然,很大的可能是同时做这两件事情。

JAVA客户机攻击

登录管理员账户,分析该系统。找到了网站的一个私有部分,这个部分给一些特殊的工作站运行一个Java小程序。这个有问题的网段后来被发现是MwgaCorp One的管理网段。

Figure 14-Htaccess规则暴露了该网络的一个子网

通过查看log文件和Java小程序的运行方式,发现这个程序给MegaCorp One子网内部用户提供了管理员功能。这对攻击者来说非常有利,因为它提供了进入内网的可能方法,如果没有这个程序,进入内网会很困难。

获得了MegaCorp One的许可后,我们添加了一个可被客户机下载的小程序。攻击的原理是让客户机信任这个程序,允许运行,就可以连接到其他的客户机。这是普通的社会工程攻击的衍生品,所谓社会工程学攻击,就是让受害者主动去运行一个有害的程序。在这个例子中,不用去误导受害者,因为这个程序早已被认为是可信的。

正如所料,可以连接上其他客户机。

Figure 15-利用恶意的java小程序,可以操纵主机

在适当的地方实施该方案,可以得到管理员网络的系统权限,见图16。

Figure 16-Java小程序成功攻击

升级为本地管理员

Java小程序的攻击只能提供一般用户的权限。为了能做更多的事,需要逐步提升权限,成为域管理员。首先,要获得本地管理权限。要达成这一目的,先检查系统看看有什么漏洞。

发现一个组策略首选项文件,其允许用户解密本地管理员密码。(http://msdn.microsoft.com/en-us/library/cc422924.aspx,http://blogs.technet.com/b/grouppolicy/archive/2009/04/22/passwords-in-group-policy-preferences-updated.aspx)详情请看附录A。

Figure 17-利用这个漏洞,可以获得域控制器的Groups.xml文件

Figure 18-在Groups.xml中包含加密的本地管理员密码

Figure 19-使用Microsoft发布的加密密钥,这个加密密码很容易解密

使用这个明文密码,得到客户机的本地管理员权限。

深包检测规避

当尝试建立进入受损系统的附加层时,遇到了进攻性出口过滤。这还是第一次碰到,当为Microsoht远程桌面协议建立加密的出口隧道。

Figure 20-初步尝试建立RDP的出隧道被出口过滤系统阻止

另外,当尝试连接攻击者的在80端口上的SSH服务器时,发现网络协议强制执行。我们创建了一个隧道来避开过滤,这个隧道有个运行的meterpreter会话,允许获取攻击者分享的文件。用这个会话在受损主机上用本地管理员权限运行windows SHELL。在这个shell里,执行一段额外的meterpreter关键代码。

Figure 21-通过最初的meterpreter会话建立端口转发, 可以直接访问受损主机

Figure 22-用这个新建立的连接来获得主机的shell

Figure 23-在10.7.0.22上用本地管理员权限建立一个meterpreter shell

有了这个meterpreter shell,就可以利用HTTP-Tunnel,这是一个开源程序,(http://http-tunnel.sourceforge.net/)去封装HTTP负载内的任意流量。比如封装攻击者和主机的远程桌面连接数据。这之后,我们就可以得到完整的访问方式,而不仅仅是命令行。远程桌面连接是用“mike“这个用户的密码创建的,”mike“的密码就是之前从SQLite Manager发现的。详情请看附录A。

Figure 24-通过http隧道屏蔽过滤协议,建立远程桌面连接

此时,MefaCorp One的网络已被完全攻陷,如图25所示。我们能够以控制台的权限访问一台Megacorp One信任的电脑。只是访问受限,因为是靠一个无特权的域用户,和一个本地管理员账户。

Figure 25-到达管理员子网

Citrix环境下的漏洞

我们用远程桌面访问方式进入内部网络,继续扫描以发现有价值的目标。找到了一个Citrix的服务器,在受损主机上它被设置成主页。使用和建立远程桌面连接相同的证书,成功登录Citrix。

Figure 26-发现一台支持ie的Citrix服务器

此Citrix环境说明“ie“是唯一可使用的程序。这种做法被很多组织采用来限制进入Citrix服务器底层的操作系统。但是有很多的方法可以绕过限制。这里,我们用”Save“这个对话框生成一个批处理文件,其能让我们使用Powershell。

这样做可能成功,因为“Save”对话框的操作方式大致相同,都是“Windows Explorer”的文件管理窗口。

Figure 27-使用Save对话框有可能突破Citrix环境下的限制

Figure 28-在Citrix上创建有Powershell程序的批处理文件

Figure 29-执行Pwershell突破Citrix的限制

Powershell也可以用来下载恶意的代码,这些代码创建底层服务器的meterpreter会话。

Figure 30-Powershell允许终端用户接受任意源的文件,包括远程网络地址

利用Save对话框运行任意可执行的代码,可以和之前的发现结合在一起,之前发现了本地账户密码,可以以管理员的权限执行程序。这就取得了这个系统的完整的管理员控制权。详情请看附录A。

Figure 31-攻击者利用管理员密码以管理员权限执行恶意代码

Figure 32-完成Citrix服务器的完全控制

Figure 33-在管理员内网中添加了一台主机

升级为域管理员

有了这台受损Citrix服务器,我们试着在内存中搜索密码。Citrix服务器是这种攻击了的理想的候选,因为可以操作很长时间,而不用重启还有为大量用户提供服务。

我们用Windows Credential Editor这个工具来得到内存中的密码,因为它可以运行在64位的系统上且不会产生错误。

Figure 34-用Windows Credentials Editor得到服务器上的明文密码

这个工具爆出了很多的密码,包括Windows域管理员的密码。详情请看附录A。为了使恢复出来的凭证有效,我们用域管理员权限创建新的远程桌面连接会话。

Figure 35-域管理员证书有效
此时,可以控制整个Windows域了。一个恶意攻击者有许多的工具可以用,包括:
 在Windows系统上利用组策略上传后门程序。
 对任何使用Windows身份验证的系统上存储的所有数据进行排除。
 销毁任何以及所有网络资源。
 有目的性的攻击MegaCorp One任一职员,通过信息收集工具,例如可以辨认个人信息的keystroke loggers
 泄露对MegaCorp One信任的伙伴或支持组织的系统进入方式,便可以展开攻击

可以确定,这些步骤是可行的,且可以在当前环境之外使用。很明显,已经攻陷了整个MegaCorp One域,本地所有系统已经失去了一体性。

Figure 36-攻陷域

总论

MegaCorp One有一系列的配置错误,而使关键公司资产泄露。如果一个恶意的组织利用这些错误,会产生恶劣的影响。现有的关于密码重用,上传控制的策略还不完善,不能消除漏洞发现产生的影响。

这次渗透测试的具体目标如下:
 确认远程攻击者能否攻破MegaCorp One的防御系统
 确定安全漏洞的影响:
 组织信息的机密性
 MegaCorp One信息系统的内部基础结构和可用性

这次渗透测试完成了这些目标。一次攻击就可以获得所有的联合资产。许多被认为是小事的问题会被一起利用,造成了系统的沦陷。值得注意的是,整个Megacorp One安全基础设施的崩溃很大程度上归因于对网络边界和主机级别的访问控制不足。需要引进有效的网络分层系统以减轻因整个Megacorp One基础设施的级联安全故障所产生的影响。

建议

因为这次渗透暴露了整个系统架构,所以合适的资源分配可以确保修补工作可在短时间内完成。虽然需要修复的漏洞的完整表单不会提供,但一些高危漏洞需要说明。

安全建议如下:

  1. 确保组织的任何地方都使用了强凭证。在系统的不同安全层级上使用弱密码和相同的密码,会使攻击更加容易。可以参考NIST SP 800-11(http://csrc.nist.gov/publications/drafts/800-118/draft-sp800-118.pdf)来制定企业的密码条款。虽然这个问题存在不广,但仍然是个问题,需要解决。
  2. 建立信任带。在内网中合适的地方建立信任逻辑边界。每个逻辑信任部分应相互联合,不能轻易破坏而连上其他部分。所以要使用不同的管理员账号,这样某一部分受损了,但不会影响到其他部分。
  3. 在所有系统中实行变更控制:在不同的系统中都发现了配置错误和上传漏洞。通过变更控制可减轻这些漏洞带来的风险。
  4. 实施补丁管理程序:按照NIST SP 800-40(http://csrc.nist.gov/publications/nistpubs/800-40-Ver2/SP800-40v2.pdf)来创建一个补丁管理程序,这对可持续的安全环境来说是一个重要组件。这将有助于限制由于未修补而导致的攻击。
  5. 施行常规漏洞评估。作为有效组织风险管理策略的一部分,漏洞评估要在常规部分执行。这有助于组织确定安全控制是否正确配置,操作是否如预期般执行,是否生成了想要的结果。参照NIST SP 800-30(http://csrc.nist.gov/publications/PubsDrafts.html#SP-800-30-Rev.%201)建立高效的风险管理系统。

    风险等级

    对MegaCorp One风险评定的结果为高。外部攻击者可以获得整个系统的控制权。有理由相信一个恶意的组织能够施行有效的目标攻击。

附录A:漏洞细节及减轻危害

风险等级范围

鉴于NIST SP 800-30,漏洞按照相似性及影响排列。
默认的或弱的凭证
级别:高
描述:一个公共管理界面仅靠一个弱密钥保护。
影响:仅靠暴力破解,就可能爆出SQLite Manager服务的管理员密码。因为缺少额外的授权凭证,这也可能爆出所有用户密码哈希值。如果密码会重用,那么爆出明文密码可以进一步攻击目标系统。
修复:确保所有的管理界面受强密码或口令保护。避免使用普通的或和业务相关的密码,因为可以很容易通过字典生成。

密码重用

级别:高
描述:“mike“在SQLite Manager和个人计算机上用了相同的密码。
影响:重复用相同的密码是一个非常差的习惯,应该尽量避免。这个漏洞的影响很恶劣,因为外部攻击者直接获得了内网计算机的有效凭证。这可能暴露更多的可攻击的界面。
修复:升级密码管理策略,所有隔离服务强制使用复杂的,不同的密码。密码管理系统要使雇员方便的使用不同的密码进入不同的系统。

共享本地管理员密码

级别:高
描述:多台主机使用了相同的本地管理员密码。
影响:MegaCorp One使用组策略来设置GPO内所有主机的本地管理员密码。结果,攻击者就可以利用著名的攻击工具“PASS-THE-HASH“来攻击,登录所有使用相同密码及相同密码哈希值的主机。如此,攻击者不用破译密码哈希值,大大增加了安全风险。
修复:强烈建议禁止使用本地管理员账户。实在要用的话,应分配一个不同的名字及复杂随机的密码。

补丁管理

级别:高
描述:MegaCorp One内外部环境中有许多未打补丁的系统和程序。
影响:弱授权机制和未打补丁的主机,都包含可以用爆破的漏洞,这会使得攻击者以未授权的方式得到大量的公司资产。特别地,例如SQLiite Manager包含远程执行代码的漏洞,底层主机也有一个本地提权的漏洞,这些可以使对外开放的主机轻易地被攻陷。表明了补丁管理策略以及强制执行的不足。
修复:所有的公司资产都要及时打上供应商提供的补丁。要完成这些可以使用供应商官方工具或者第三方程序,这些都能检查出未应用的补丁。在许多例子中,第三方工具也可以用来在一个混乱的环境中进行补丁部署。

DNS区域传送

级别:低
描述:一个错误配置的DNS服务器允许无限制的区域传送。
影响:一个配置成可与任何DNS服务器传输数据的DNS服务器,会泄露关于公司资产和网络布局等敏感信息。
修复:DNS区域传送需仅对已证明的服务器开放。

默认APACHE文件目录

级别:低
描述:在admin.megacorpone.com主机上发现了默认的Apache文件目录。
影响:攻击者通过检查默认文件夹可能猜出Apache服务器的版本。敏感信息也可能泄露。
修复:移除公开网站的所有默认文件。

附录B:关于Offensive Security

Offensive Security提倡黑盒渗透测试而反对白盒渗透测试。白盒渗透测试近几年来很火,因为在仅要实现常规需求的地方,简化了评估方法。其作为漏洞扫描方法,会有选择的确认发现的问题。这让服务供应商有能力扩大工作量,因为使用了自动化的工具,并且通过证书维持产品间的联动。
黑盒是在受控环境下的攻击模拟形式,非常接近现实环境,组织会时不时的面临攻击。黑盒测试是基于目标的评估方法,不仅仅是发现一个简单的漏洞,而是提供一个漏洞真正的商业影响。黑盒测试会找到那些修复后能带来最高商业回报的区域。
黑盒测试通常需要很高的专业知识。正如报告中显示的那样,Offensive Security坚信当进行黑盒测试时输出正确有效的结果是检验合格的唯一方式,因为我们专业的安全团队运用了很高专业知识。Offensive Security会集中力量进行渗透测试或着其他参与的项目。这意味着无论什么都参与到提供服务中,例如标准工具Kali Linux,畅销书的作者,O-day漏洞的发现者,或是如Exploit-DB的维护者。
Offensive Security提供的产品与市场需求不配对。然而,我们不会适合任一工作。Offensive Security特别提供咨询服务,底容量和高质量的比例使得员工能更接近的模拟现实世界的攻击。这也允许在保持成本合理的同时,客户可以更多地获得行业认可的专业知识。例如,大批量/快速周转服务通常不适合我们。Offensive Security专注与领导高质量,高影响的评估活动,积极地寻求其他供应商无法提供服务的客户。
请通过info@offsec.com联系我们。