网安学习-内网渗透4

目录

#PTH(Pass the Hash)利用lm或ntlm的值进行的渗透测试

域横向移动PTH传递-mimikatz

#PTK(Pass the Key)利用ekeys AES256进行的渗透测试

#PTT  (Pass the Ticket) 利用票据凭证TGT进行的渗透测试

#第一种利用漏洞

#第二种利用工具kekeo 

 #第三种利用本地票据(需要管理员权限)

#案例4-国产Ladon内网杀器测试验收

 #案例5-域横向移动RDP传递-Mimikatz

RDP明文密码连接

RDP密文HASH连接

#案例6-域横向移动SPN服务-探针,请求,破解,重写

#案例7-域横向移动测试流程一把梭-CobaltStrike


#PTH(Pass the Hash)利用lm或ntlm的值进行的渗透测试

PTH在内网渗透中是一种很经典的攻击方式,原理是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或者服务,而不用提供明文密码。

域横向移动PTH传递-mimikatz

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来连接

#PTK(Pass the Key)利用ekeys AES256进行的渗透测试

案例2-域横向移动PTK传递-mimikatz

PTK AES 256传递

打补丁后的工作组以及域连接

sekurlsa::ptk /user:mary /domain:god.org /aes256:AES526的值

那么如何获取AES256的值呢?

之前我们获取NTLM的值,使用的命令为sekurlsa::LogonPasswords。而获取AES256的值使用的命令为sekurlsa::ekeys

#PTT  (Pass the Ticket) 利用票据凭证TGT进行的渗透测试

PTT攻击的部分就不是简单的NTLM认证了,他是利用Keyberos协议进行攻击的,这里介绍三种常见的攻击方法:MS14-068,Golden ticket,SILVER ticket,简单来说就是将连接合法的票据注入到内存中实现连接。

MS14-068基于漏洞,Golden ticket(黄金票据),SILVER ticket(白银票据),其中Golden ticket(黄金票据),SILVER ticket(白银票据)属于权限维持技术,MS14-068造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁是KB3011780。

由于PTT是利用Keyberos协议,就先来学习一下,在域中,该协议的具体工作方法:

  1. 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后创建TGT(Ticket-Granting Ticket)
  2. 将TGT进行加密签名返回给客户机器,只有域用户krbtgt才能读取kerberos中TGT数据
  3. 然后客户机将TGT发送给域控制器KDC请求TGS(票证授权服务)票证,并且对TGT进行检测
  4. 检测成功之后,将目标服务账户的NTLM以及TGT进行加密,将加密后的结果返回给客户机。

#第一种利用漏洞

能实现普通用户直接获取域控system权限

#MS14-068 powershell执行

整个利用过程:

  1. 查看当前sid  whoami/user
  2. 将当前机器中的所有凭据,通过mimikatz清楚,如果有域成员凭证会影响凭证伪造;kerberos::purge
  3. kerberos::list            //查看当前机器中的凭证
  4. kerberos::ptc 票据文件                  //将票据注入到内存中
  5. 利用ms14-068生成TGT数据           ms14-068.exe  -u  域成员名@域名  -s  sid  -d 域控制器地址 -p 域成员密码
  6. 票据注入内存           //mimikatz.exe  "kerberos::ptc  生成的TGT数据"
  7. exit 退出
  8. 查看凭证列表   klist
  9. 利用    dir   \\192.168.3.21\c$

先查看当前的sid。通过执行命令whoami/user。得到了S-1-5...这个sid。

将当前机器中的所有的凭证全部删除掉,防止其他的域成员会影响凭据伪造。

通过ms14-068生成TGT数据凭证。之后便是通过Kerberos将TGT数据凭证导入当前的机器中。

通过klist来查看当前机器中有哪些凭据,当然也是为了检测我们是否将生成的TGT凭证成功导入。

这里成功显示导入成功,这里要注意的是:这个凭证是有有效期的。我们的连接必须要在这个有效期内才可以。

之后便是通过dir来连接,这里却显示找不到路径。这里需要注意的是:在连接的时候,不可以使用ip地址。

这样才是成功的!

#第二种利用工具kekeo 

  1. 生成票据              //kekeo "tgt::ask /user:mary /domain:god.org /ntlm:ntlm值"
  2. 导入票据              kerberos::ptt [email protected][email protected]
  3. 查看凭证klist
  4. 利用net use 载入      dir   \\192.168.3.21\c$

首先通过mimikatz收集来的ntlm值,去使用kekeo工具生成票据。

之后便是将生成的票据,导入当前的机器。

 之后便是连接。

 #第三种利用本地票据(需要管理员权限)

个人感觉这个有点点鸡肋了。

sekurlsa::tickets /export          //将当前机器中的票据全部导出来

kerberos::ptt xxxxxxxxxxxxx.xxxxx.kirbi

上面就是导出来之后的样子。接下来就是将某一个导入

之后便是连接操作。

总结:ptt传递不需要本地管理员权限,连接时要用主机名去连接,无法使用IP地址连接,主要三种方式,分别是基于漏洞、工具和本地票据。

#案例4-国产Ladon内网杀器测试验收

整个过程:信息收集-协议扫描-漏洞探针-传递攻击等

图形化界面是下面的这样,扫描存活主机:

选择OnlinePC,点击scan。一般我们不会使用图形化界面工具,而是使用命令行。

扫描存活主机的语法:ladon IP地址网段 onlinepc

可见域中存活的主机有31 21 25 29 32 30等

通过net use \\IP地址 密码 /user:用户名 来连接。还可以使用我们之前学习到的psexec,还有wmi等。 

执行成功,查看权限,为system权限。

ipconfig执行回显为192.168.3.21。 

 #案例5-域横向移动RDP传递-Mimikatz

除了之前讲到的IPC、WMI、SMB等协议的连接外,获取到的明文密码或者是HASH值也是可以通过RDP协议进行连接操作的。

RDP明文密码连接

windows : mstsc        //远程连接

mstsc.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 "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

开启后运行:

mimikatz.exe /restricteadmin

mimikatz.exe

privilege::debug

注意以下的设置:

一旦配置为“不允许连接到这台计算机”,那么就不会有3389端口,我们就无法连接。需要配置为下面的两种。

可见配置下面的两种就会,扫描到3389端口。


#案例6-域横向移动SPN服务-探针,请求,破解,重写

黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。Dc在活动目录中查找sPN,并使用与sPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGs票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoasting攻击的关键。

整个利用spn的流程为:探针SPN服务->请求服务票据->导出服务票据->破解服务票据->重写服务票据

对应的服务包括:MSSQL WSMAN Exchange TERMSERV Hyper-V Host

spn扫描也可以叫扫描Kerberos服务实例名称,在Active Directory环境中发现服务的最佳方法是通过"SPN扫描"。通过请求特定SPN类型的服务主体名称来查找服务,SPN扫描攻击者通过网络端口扫描的主要好处是SPN扫描不需要连接到网络上的每个IP来检查服务端口。SPN扫拙通过LDAP查询向域控制器执行服务发现。由于SPN查询是普通Kerberos票据的一部分,因此如果不能被查询,但可以用网络端口扫描来确认。

setspn的使用参数如下:

通常使用的是setspn -q */* ,就是扫描全部的服务。

通过findstr “MSSQL” 就是来查询特定的sql server 服务。

将原来的票据先删除掉。

 之后便是请求服务,寻找我们的目标服务票据,请求服务,将xxxx替换为我们的目标服务名。通过mimikatz将服务票据导出。

请求:

导出:

重写:

重写:

python kerberoast.py Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -u 500       

python kerberoast.py Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512

mimikatz.exe kerberos::ptt xxxx.kirbi         //将生成的票据导入内存

#案例7-域横向移动测试流程一把梭-CobaltStrike

大概流程:

启动-配置-监听-执行-上线-提权-信息收集(网络、凭证、定位等)-渗透

  1. 关于启动以及配置讲解
  2. 关于提权以及插件加载
  3. 关于信息收集命令讲解
  4. 关于试图自动化功能讲解

猜你喜欢

转载自blog.csdn.net/weixin_44770698/article/details/126096926