【内网渗透】— 域内横向移动分析及防御(7)

前言

横向移动技术是在复杂的内网攻击中被广泛应用的一种技术,尤其是在高级持续性威胁(Advanced Persistent Threats,APT)中。攻击者会利用该技术,以被攻陷的系统为跳板,访问其他域内的主机,扩大资产范围。

通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的基础设施和业务相关的关键账户。因此,必须使用强口令来保护特权用户不被用于横向移动,从而避免域内其他机器遭沦陷。建议系统管理员定期修改密码,从而使攻击者获取的权限失效。

Windows远程连接的分析和防范

在渗透测试中,拿到目标计算机的用户明文密码或者NTLM Hash后,可以通过PTH(Pass the Hash,凭据传递)的方法,将散列值明文或者明文密码传送到目标机器中进行验证。与目标机器建立连接后,可以使用相关方法在远程Windows操作系统中执行命令。在多层代理环境中进行渗透测试时,由于网络条件较差,无法使用图形化界面连接到远程主机。此时,可以使用命令行的方式连接远程主机(最好使用Windows自带的方法对远程目标系统进行命令行下的连接操作)并执行相关命令。

在实际的网络环境中,针对此类情况,网络管理人员可以通过配置Windows系统自带的防火墙或组策略进行防御。

Windows系统散列值获取分析与防范

LM Hash与NTLM Hash

Windows操作系统通常使用两种方法对用户的明文密码进行加密处理。在域环境中,用户信息存储在ntds.dit中,加密后为散列值。Windows操作系统中的密码一般由两部分组成,一部分为LM Hash,另一部分为NTLM Hash。

LM Hash的全名为"LAN Manager Hash",是微软为了提高Windows操作系统的安全性而采用的散列值加密算法,其本质是DES加密。尽管LM Hash比较容易破解,但是为了保证系统的兼容性,Windows只是将LM Hash禁用了。如果LM Hash被禁用了,攻击者通过工具抓取的LM Hash值通常是"aad3b435b51404eeaad3b435b51404ee"(表示LM Hash值为空或者被禁用)。

NTLM Hash是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法。NTLM Hash是基于MD4加密算法进行加密的。个人版从Windows Vista 以后,服务器版从Windows Server 2003以后,Windows操作系统的认证方式均为NTLM Hash。

散列值获取方法分析

要想在Windows操作系统中抓取散列值或明文密码,必须将权限升级至System。本地用户名,散列值和其它安全验证信息都保存在SAM文件中。lsass.exe进程用于实现Windows的安全策略,可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出。

在渗透测试中,可以采用传统方法,在关闭Windows操作系统后,使用PE盘进入文件管理环境,直接复制SAM文件,也可以使用VSS等方法进行复制。

防范攻击者抓取明文密码和散列值

设置Active Directory 2012R2 功能级别

Windows Server 2012 R2 新增了一个名为"受保护的用户"的用户组,只需要将需要保护的用户放入该组,攻击者就无法使用工具抓取明文密码和散列值了。

安装KB2871997

KB2871997是微软用来解决PsExec或IPC远程查看问题的补丁,能使本地账号不再被远程接入计算机系统,但系统默认的本地管理员账号Administrator这个SID为500的用户例外,安装KB2871997后,仍需要禁用默认的Administrator账号,以防御哈希传递攻击。

通过修改注册表禁止在内存中存储明文密码

微软在Windows XP版本中添加了一个名为WDigest的协议。该协议能够使Windows将明文密码存储在内存中,以方便用户登录本地计算机。

哈希传递攻击分析与防范

哈希传递攻击概念

大多数渗透测试人员都听过哈希传递(Pass The Hash)攻击。该方法通过找到与账户相关的密码散列值(通常是NTLM Hash)来进行攻击。在域环境中,用户登陆计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希值传递攻击的方法登录内网的其他计算机。同时,通过哈希传递攻击,攻击者不需要花时间破解密码散列值。

哈希传递攻击分析

首先先解释一下散列值的概念:当用户需要登陆某网站时,如果该网站使用明文的方式保存用户密码,那么,一旦该网站出现安全漏洞,所有的用户的明文密码均会泄露。由此,产生了散列值的概念。当用户设置密码时,网站服务器会对用户输入的密码进行散列加密处理(通常采用MD5算法)。散列加密算法一般为单向不可逆算法。用户登录网站时,先会对用户输入的密码进行散列加密处理,再与数据库中存储的散列值进行对比,如果完全相同则表示验证成功。

主流的Windows操作系统,通常会使用NTLM Hash对访问的用户进行身份验证。早期版本的Windows操作系统,则使用LM Hash对用户身份进行验证。但是,当密码大于等于15位的时候,就无法使用LM Hash了。从Windows Server 2008和Windows Vista版本开始,Windows操作系统默认禁用LM Hash。不过,攻击者在获得密码散列值之后,依旧可以使用哈希传递攻击来模拟用户进行验证。

防范哈希传递攻击的方法 开始

微软在2014年5月发布了KB2871997。该补丁禁止通过本地管理员权限与远程计算机进行连接,其后果就是:无法通过本地计算机管理员权限对远程计算机使用PsExec、WMIM、smbexec、schtasks、at,也无法访问远程主机的文件共享等。

但是在实际测试时,更新KB2871997补丁后,发现无法使用常规的哈希传递攻击方法进行横向移动,但是Administrator账号(SID为500)例外 —— 使用该账号的散列值依然可以进行哈希传递。

票据传递攻击分析与防范

防范票据传递攻击

  • 使用dir命令时,务必使用主机名。如果使用IP地址,就会导致错误。
  • 票据文件注入内存的默认有效期为10小时。
  • 在目标机器上不需要本地管理员权限即可进行票据传递

PsExec的介绍

PsExec是SysInternals套件中的一款功能强大的软件。期初PsExec主要用于大批量的Windows主机的运维,在域环境下使用效果尤其好。但是,攻击者渐渐开始使用PsExec,通过命令行环境与目标主机进行连接,甚至控制目标机器,而不需要通过远程桌面协议(RDP)进行图形化控制,降低了恶意操作被管理员发现的可能性(因为PsExec是Windows提供的工具,所以杀毒软件将其列在白名单中)。

WMI的介绍

WMI 的全名为"Windows Management Instrumentation"。从Windows 98开始,Windows操作系统都支持WMI。WMI是由一系列的工具集合组成的,可以在本地或者远程管理计算机系统。

自从PsExec在内网中被严格监控后,越来越多的反病毒厂商将PsExec加入了黑名单,于是攻击者逐渐开始使用WMI进行横向移动。通过渗透测试发现,在使用wmiexec进行横向移动时,Windows操作系统默认不会讲WMI的操作记录在日志中。因为这个过程中不会产生日志,所以,对网络管理员来说增加了溯源成本。而对攻击者来说,其恶意行为被发现的可能性有所降低、隐蔽性有所提高。由此,越来越多的APT组织开始使用WMI进行攻击。

永恒之蓝漏洞分析与防范

永恒之蓝漏洞分析

2017年4月,轰动网络安全界的事件无疑是TheShadowBrokers放出的一大批美国国家安全局(NSA)方程式组织(Equation Group)使用的极具破坏性的黑客工具,其中包括可以远程攻击70%的Windows服务器的漏洞利用工具。一夜之间,全世界70……的Windows服务器处于危险之中,国内使用Windows服务器的高校、企业甚至政府机构都不能幸免。这无疑是互联网的一次"大地震",因为很久都没出现过像"永恒之蓝"这种级别的漏洞了。

2017年5月12日晚,一款名为"WannaCry"的蠕虫勒索软件袭击全球网络,影响了近百个国家的上千企业及公共组织,被认为是当时最大的网络勒索活动。WannaCry利用的是"NSA武器库"中的SMB漏洞,该漏洞通过向Windows服务器的SMBv1服务发送精心构造的命令造成溢出漏洞,最终导致任意命令执行。

防御永恒之蓝的方法

  • 禁用SMB1协议
  • 打开Windows Update,或者手动安装KB2919355
  • 使用防火墙阻止445端口的连接,或者使用进/出站规则阻止445端口的连接
  • 不要随意打开陌生的文件
  • 安装杀毒软件,及时更新病毒库

smbexec的介绍

smbexec可以通过文件共享在远程执行命令

DCOM在远程系统中的使用

DCOM(分布式组件对象模型)是微软的一系列概念和程序接口。通过DCOM,客户端程序对象能够向网络中的另一台计算机上的服务器程序对象发送请求。

DCOM是基于对象模型(COM)的。COM提供了一套允许在同一台计算机上的客户端和服务器之间进行通信的接口。

攻击者在进行横向移动时,如果要在远程系统中执行命令或者Payload,除了会使用at、schtasks、PsExec、WMI、smbexec、PowerShell等,还会使用网络环境中部署的大量诸如IPS、流量分析等系统。多了解一些横向移动的方法,对日常的系统安全维护是大有益处的。

SPN在域环境中的应用

Windows域环境是基于微软的活动目录服务工作的,它在网络系统环境中将物理位置分散、所属部门不同的用户进行分组,集中资源,有效地对资源访问控制权限进行细粒度的分配,提高了网络环境的安全性及网络资源统一分配管理的便利性。在域环境中运行的大量应用包含了多种资源,为资源的合理分组、分类和再分配提供了遍历。微软给域内每种资源分配了不同的服务主体名称(Service Principal Name,SPN)。

SPN相关概念:

  • 在使用Kerberos协议进行身份验证的网络中,必须在内置账号或者用户账号下为服务器注册SPN。对于内置账号,SPN将自动进行注册,但是,如果在域用户账号下运行服务,则必须为要使用的账号手动注册SPN。因为域环境中的每台服务器都需要在Kerberos身份验证服务器中注册SPN,所以攻击者会直接向域控制器发送查询请求,获取其需要的服务器的SPN,从而知晓其需要使用的服务资源在那台机器上。
  • Kerberos身份验证使用SPN将服务实例与登录账号关联起来。如果域中的计算机上安装了多个服务实例,那么每个实例都必须有自己的SPN。如果客户端可能使用多个名称进行身份验证,那么给定的服务实例可以由多个SPN。例如,SPN总是包含运行的服务实例的主机名称,所以,服务实例可以为其所在主机的每个名称或别名注册一个SPN。
  • 根据Kerberos协议,当用户输入自己的账号和密码登录活动目录时,域控制器会对账号和密码进行验证。验证通过后,密钥分发中心(KDC)会将服务授权的票据(TGT)发送给用户。
  • 举个例子:当用户需要访问MySQL服务时,系统会以当前用户身份向域控制器查询SPN为"MySQL"的记录。找到记录后,用户会再次与KDC通信,将KDC发放的TGT作为身份凭据发给KDC,并将需要访问的SPN发给KDC,KDC的身份验证服务(AS)对TGT进行解密。确认无误后,由TGS将一张允许该SPN所对应的服务的票据和该SPN所对应的服务的地址发给用户。用户使用该票据即可访问MySQL服务。

Exchange邮件服务器安全防范

Exchange是微软出品的电子邮件服务组件,是一个消息与协作系统。

在大型企业中,大多数办公业务都是通过电子邮件系统完成对的,电子邮件中可能包含大量的原码、企业内部通讯录、明文密码、敏感业务登录地址及可以从外网访问内网的VPN账户和密码等消息。因此,在对Exchange服务器进行安全设置时,一定要及时更新Exchange软件的安全补丁和Exchange服务器的安全补丁,有效降低Exchange沦陷发生的概率。

posted @ 2020-04-19 18:50  catt1e  阅读(1322)  评论(0编辑  收藏