目录
- 演示案例:
- 域横向移动RDP传递-Mimikatz
- 域横向移动SPN服务-探针,请求,导出,破解,重写
- 域横向移动测试流程一把梭哈-CobaltStrike初体验
- 涉及资源
SPN主要是扫描技术,在渗透过程中结合kerberos协议,可以做一些事情
演示案例:
域横向移动RDP传递-Mimikatz
除了上述讲到的IPC,WMI,SMB等协议的链接外,获取到的明文密码或HASH密文也可以通过RDP协议进行链接操作。
RDP远程的连接协议,在linux上面就是ssh,在windows上面就是RDP,就是我们常说的3389,开放3389就可以进行远程连接,连接的东西也是建立在明文密码和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 Server2008 R2安装了2871997、2973351补丁也支持;开启命令:
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v
DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
hash连接比较鸡肋,不是很常见
开启后运行:
mstsc.exe /restrictedadmin
mimikatz.exe
privilege::debug
sekurlsa::pth /user:administrator /domain:god
/ntlm:ccef208c6485269c20db2cad21734fe7 "/run:mstsc.exe/restrictedadmin"
域横向移动SPN服务-探针,请求,导出,破解,重写
kerberos中的spn详解:https://www.cnblogs.com/backlion/p/8082623.html
黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoastinq攻击的关键。
一般我们在进行内网渗透会采取端口扫描,来判定内网其它主机的开放程度和端口的一个情况,但在这里,我们使用端口扫描技术会触发一些防火墙,我们经常使用nmap扫描的知道,在nmap去扫一些带防火墙的服务器的话,有时候扫描不准,或者直接把你拦截了,他会检测到这是外部流量,有扫描的一些攻击,那么就扫描不出一些东西出来,这个是很常见的。SPN扫描就能解决这个问题,SPN扫描是优先于我们常用端口扫描的,不会被防火墙这些东西给触发,而且同样的能探针服务,命令相当简单,非常舒服,非常快
探针就是探针SPN服务,看一下有那些服务,然后在根据不同的服务,选择对应我们要操作的服务,请求完之后,我们就会相当于建立会话的东西,建立连接,然后在用相关工具把连接的数据给导出来,导出来由于他的连接,这个加密形式是可以进行破解的,所以我们可以进行破解来找到连接的东西
探针只需要一个用户就行了,不需要管理员权限,setspn是自带的命令
探针
setspn -q */*
setspn -q */* | findstr "MSSQL"
请求
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "xxxx"
mimikatz.exe "kerberos::ask /target:xxxx"
xxxx替换掉刚刚得到的服务名,也可以用mimikatz进行请求,请求完之后,就会得到凭据
导出
mimikatz.exe "kerberos::list /export"
用mimikatz看能不能把他导出来
破解
python tgsrepcrack.py passwd.txt xxxx.kirbi
python3 .\tgsrepcrack.py .\password.txt .\1-40a00000-jerry@MSSQLSvc~Srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi
导出来之后,用相关工具和脚本进行破解,这个破解可以利用到前面介绍的hashcat工具,也可以用单独破解的py脚本,一般大部分破解脚本都是借于字典
重写
python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -u 500
python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512
mimikatz.exe kerberos::ptt xxxx.kirbi # 将生成的票据注入内存
这些服务,有些是可以直接攻击的,比如说我知道他上面开有sqlserver,或者其它的exchage,这些也都是被常见攻击的,exchage官方自带的邮件服务器,就好比我们进行端口扫描,进行的判定
首先我们要攻击他的话,我们要把名字给保存一下
我们klist看一下当前的会话
这个时候我们就尝试去请求刚才那个服务
我们在确保一下刚才的会话
现在有两个,我们把他删除掉,其实不删除也可以
我们去请求他
请求之后,我们去看klist,请求了就会产生票据
这个时候,我们用mimikatz把内存导出来,就是把刚才的票据信息导出来
他会导出到mimikatz的运行目录
导出两个
我们只需要用到mssqlsvc,这个就是刚才请求的票据信息
然后大家把这个票据信息拿去破解,这个破解由于用到的是脚本,我们就在本机里面破解
Admin12345是请求数据里面自带的密码,这个密码可以用来我们后期自己连接,这个密码也能做为一个凭据,当作字典后期在加载到其它协议上面的爆破上面去
这个服务在传输过程中,他是会验证的,每个普通用户在请求这个东西的时候,会验证你的密码正不正确
这边域内的一个普通用户,再去请求服务的时候,就会自带密码信息尝试去验证,去请求他,所以密码就包含在这里面了,拿出来破解,就能获取请求过程中的密码
第一个,我们多了一个口令,也知道这个东西对应的密码,第二个,我破解出来之后,我能重写
u指向的是用户名的编号,g就是组,所以他就能够根据kirbi,重新生成会话出来,我们说的PTT数据,然后这个时候再用mimikatz,导入到内存里面去,那我们再次请求的话,相当于进行了一个全新的提升,这是它后续的攻击,但是这个攻击不是说一定能够成功,所以这是后续的一个情况,主要是得到这个密码为后续渗透做准备,第二个还可以进行重写,重新生成票据文件,然后在用mimikatz注入到里面去,其实就是伪造admin用户的票据进行连接
攻击主要在破解这个地方,得到密码可以做为字典也可以做为连接条件去连接,但是一般连接也是普通的服务,也就是只能看一些简单的东西
我们要得到管理员用户才行,但是管理员账户破解不了,因为它在协议里面抓不到
spn只是扫描技术,外加域类的一种服务用户,就是常见服务在流通的时候,你可以请求这个票据,然后把票据导出来,得到里面自带的票据信息,来帮助你后续的一个渗透,算是一个比较鸡肋的东西,大家理解就可以了
主要就是利用到spn建立服务的攻击,利用spn可以探针域内主机常见服务,而这个常见服务可以根据需要进行渗透,比如说像刚才的sqlserver,我得到Admin12345,这里有帮助,有可能没帮助,那除此之外,我知道上面有sqlserver服务了,是不是也可以进行入侵的呀,还可以采取其它手段,spn这个东西的话,探针也好,它的后续利用也好,还可以为后续的渗透思路做准备
域横向移动测试流程一把梭哈-CobaltStrike初体验
把前面我们涉及到的那些常见的攻击总结了,在实战情况下面的一个操作,因为大部分我们在前面讲过,都是把工具上到电脑上面去,然后直接在上面敲,可能在实战情况下面不是这样的,有可能你接触不到它的图形化,全部都是命令终端,或者有些权限不够,会遇到很多样的情况
我在外网建立了一个CobaltStrike弹着服务器的地址,先连接上去
它有一个团队服务器,我们可以通过任意的终端连接到这个服务器上面去,比如这里的阿里服务器,然后它做为这款服务器的根本,你可以连接到这里来,我也可以连接到这里来,通过它再去控制主机,就相当于它中间多了个东西,它去连接受害主机,你我都是客户端,我们连接上去操作受害的东西,它是一个多人运动,可以建立多人攻击,我攻击的主机,你也可以连接上去,一起进行操作
我们在实战情况下碰到真实目标都是这样的,真实目标肯定在内网,然后你攻击它的话,你要用到cs,是要建立一个外网的团队服务器,然后通过控制内网一台主机,向它内网进行渗透
webserver这台服务器上开了一个外网,就是说这个外网是能够连接的,除了它之外,内网的其它主机都是不联网的,也就是说,我们只能够先攻击到这里来,从它在对内网的主机进行通讯,因为只有webserver才能对内网主机进行通讯,同时这里是内网的域环境,入侵到它之后,对下面的主机进行渗透,取得DC的控制权
参考: [腾讯文档] 第五十二天: cobalt strike使用指南
https://docs.gg.com/doc/DZlVaY3dzwlpRZlh3
大概流程:
启动-配置-监听-执行-上线-提权-信息收集 (网络,凭证,定位等) -渗透
1.关于启动及配置讲解
2.关于提权及插件加载
3.关于信息收集命令讲解
4.关于视图自动化功能讲解
IP地址是团队服务器,密码是用工具去连接的时候会验证的密码,有这个密码就会连接到工具上去
启动之后需要java环境的支持,如果你上面没有配置java环境,那自己装一下就完事了,启动完之后,打开你本地的客户端
启动完之后,更重要的是它的配置,它如何上线,它是远控工具,然后在远控工具上面,又实现了一些功能在上面,其实就是说我们大部分提权,大部分攻击主机的话,我先要控制它,我在上面做后续操作,所以这个工具有这么个操作,先控制电脑、控制服务器,然后再在这上面去操作,下一步就是让对方上线,由于它是团队服务器,假如我和你是个团队,你搞的主机和我搞得主机,如何区分开来,它可以多个人一起攻击,我们可以通过配置监听器来实现,我自己配个监听器,从你这个监听器过来的就是你攻击的,它的监听器过来的,就是它的,监听器就是配置木马的传输管道
监听器有多个协议,就是说木马或者控制电脑、服务端、服务器,它是通过怎么回连到你的地方来,就得有这些协议选择,我们选择建立在网站HTTP协议上的连接
这个后门要绑定监听器,我才知道这是你这个人控制的主机,这样子就可以通过监听器区分,这个后门就绑定监听器,这个后门的触发就是通过监听器走的,生成的后门要做免杀
这个就相当于我前期拿到了webshell,我们把后门给上传上去,执行它
就会看到有一台终端上线,用户是webadmin,现在我们需要对它进行提权操作
进入命令终端,输入命令对它进行操作
导出所有hash
黄金票据
这个就是提权用的,它自带的提权方式只有两个,所以我们这里要加载插件
脚本管理器,上传插件
这个插件帮我搞了4个提权的exp
我们执行完提权的工具后,那就会建立payload
过慢的话,我们选择把sleep设置为1
突然一下子,出现了system,就是提权已经成功了
由于我这里提权了,所以我肯定是用system来执行命令
我们既然已经得到了主机的系统权限了,我们是不是就要对它进行内网渗透,来判断它当前的网络环境
我们收集信息主要是看一下网络环境,第二步看一下我们能不能渗透到其它东西
net view //自动探针当前的网络架构
cs查询结果会有类似缓存的东西
我们查询的东西不可能每个都收集一下,有时候执行执行就搞忘记了
你所有探针的信息都在这里展示
3.32没有探针到,网络问题
我们要判断是域环境还是工作组环境
net computers //查看当前所有的计算机
net dclist //获取域控列表
net user //获取本地用户权限
shell net user /domain
官方没有的命令,就要调用shell去执行,就相当于在windows上执行的一样
得到域内所有用户的名字,就是跟我前期的信息收集是差不多的
信息收集还有收集口令凭证,使用mimikatz
使用web权限,执行mimikatz
这就是权限不够,这就是我们为什么要提权的原因,使用system权限
这就是这台主机获取的密码
比如说,我们要攻击3.32
再把sqlserver上的口令进行再收集
那样我相关的字典就会越来越多
我们就能用这些密码对域控进行攻击
得到域控之后,后期就可以在域控上面做一些东西了,基本上渗透到这里就可以了
有两个问题没有讲,代理问题,自主工具该怎么操作
我们这个时候可以利用常规的渗透工具,对它进行操作
我们用受控的个人主机进行操作
把ladon上传上去
shell c:\ladon.exe
第三方工具是说我们自主开发的工具,因为cs工具有时候需要我们手点,只能选择两种,没有办法一直操作,所以还是会上传一些第三方的工具
shell c:\ladon.exe 192.168.3.0/24
所有的第三方工具不可能都有插件,插件是非常好,但是有很多功能还是需要第三方工具,比如一些新出来的恶意攻击,插件那里有,还是需要上传
正向就是我连接它,反向就是它连接你
那些被控主机是因为开了外网才成功上线,不开外网它上不了,它网络通不出来,这里就会涉及到代理的相关知识点,网上说的什么隧道,都指的是那种协议隧道,这个很好理解,无非是代理的事情
sqlserver数据传递到webserver端口,在通过webserver转发到外网端口上去,这种连接是不是反向连接,它主动把流量交出来给它主机,然后它主机有关接口在给你,但这里会有一个回显的问题,执行完之后,会有一个结果,结果就是通过代理隧道给到你,这是把这些信息通过隧道传递过来,所以这个代理知识,也是一个非常重要的知识点,而且是内网渗透,很多诸多领域里面的很难理解,但是又必须理解的一个东西
我们可以C语言编译出来,这个C语言在linux上也能上线的吗,把C语言编译成执行文件
梼杌插件介绍,它把所有东西都集成上去,现在是不对外公开了
涉及资源
https://github.com/nidem/kerberoast
https://pan.baidu.com/s/1Vh4ELTFvyBhv3Avzft1fCw 提取码: xiao
https://github.com/pandasec888/taowu-cobalt-strike
https://pan.baidu.com/s/15DCt2Rzg5cZjXnEuUTgQ9Q 提取码: dtm2
https://pan.baidu.com/s/14eVDglqba1aRXi9BGcBbug 提取码:taqu
https://github.com/DeEpinGhOst/Erebus
https://github.com/rsmudge/ElevateKit
https://github.com/harleyQu1nn/AggressorScripts
https://github.com/bluscreenofjeff/AggressorScripts
做主机加固的时候,我们把rdp协议给关掉了,那人家岂不是用不了远程,这不是会影响到人家的业务,我们可以提升rdp协议的安全性
攻防演练主要比的是获取的敏感数据的多少