域信息收集

1.信息收集

1.1定位管理员工具
psloggedon.exe

工具原理:通过检验注册表里 HKEY_USERS 的 key 值来查询谁登陆过机器,同样也调用到了NetSessionEnum API。不过注意某些操作是需要管理员权限的

参数使用:psloggedon [-] [-l] [-x] [\computername|username]

下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon

使用实例:以域管理员登录为例

查看当前用户登录情况,可以查看本机登录和远程登录

image-20230311133456069

查看本机用户登录情况

image-20230311133522783

查看本机用户登录情况,不显示登录时间

image-20230311133542610

查看 dc 登录情况(这个操作是需要管理员权限命令行的)

PsLoggedon.exe \\域控计算机名

image-20230311134002194

本机用户登录下,查看 dc,是查看不到的

netsess.exe

工具原理:调用 NetSessionEnum API

下载地址:www.joeware.net/freetools/(需要翻墙)

查看本机会话

image-20230311134022778

查看服务器会话,\\后面为计算机名

image-20230311134057505

PVEFindADUser.exe

工作原理:

下载地址:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn

常用参数:-current

查看在域中登录的机器

image-20230311134149656

netview.exe

工具原理:使用 WinAPI NetSessionEnum 来找寻登陆 sessions, 利用 NetShareEnum 来找寻共享 , 利用 NetWkstaUserEnum 来枚举登陆的用户。

下载地址:https://github.com/mubix/netview(需要自行编译)

常用命令:-d

image-20230311134247939

Nmap 的 NSE 脚本

nmap -sU -sS --script smb-enum-sessions.nse

官方说明:https://nmap.org/nsedoc/scripts/smb-enum-sessions.html

Powershell 脚本

PowerView.ps1 脚本

Powershell.exe -exec bypass -Command "Import-Module C:\Users\administrator\Desktop\内网信息收集工具\PowerView\PowerView.ps1;Invoke-UserHunter"

image-20230311134548399

Emailheader

如果你能进某个用户内部邮箱,也可以从邮件头提取有用的信息。找寻跟目标用户来往的邮件,仔细查看邮件头。

“X-Originating-IP”头经常会出现,这就可以让你追踪到目标 IP。

Veil 框架下的 user_hunter 模块,group_hunter 模块

https://github.com/Veil-Framework/Veil-Pillage/blob/master/modules/enumeration/host/u

ser_hunter.py

https://github.com/Veil-Framework/Veil-Pillage/blob/master/modules/enumeration/domai

n/group_hunter.py

1.2查找域管理进程
1.2.1本机检查
  1. 获取域管理员列表

    net group "Domain Admins" /domain

    image-20230311134919553

  2. 列出本机所有进程及进程用户

    Tasklist /v

    寻找是否有进程所有者为域管理员的进程

    image-20230311134947299

1.2.2查询域控制器的域用户会话
  1. 收集域控制器列表

    net group "Domain Controllers" /domain

    image-20230311135148734

  2. 收集域管理员的列表

    net group "Domain Admins" /domain

    image-20230311135321411

  3. 使用 netsess.exe 查询每个域控制器,收集所有活动域会话的列表 netsess.exe -h

    image-20230311135442363

  4. 将域管理员列表域活动会话列表交叉引用,以确定哪些 IP 地址具有活动域令牌

1.2.3扫描远程系统上运行的任务
  1. 收集域管理员的列表

    Net group "Domain Admins" /domain

    image-20230311135321411

  2. 运行脚本

    事先需要准备好内网探测出的 ip,放入到 ips.txt,用户名放入 names.txt (注意后缀,需文件全名完全一致)

    FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL && echo [!] %n was found running a process

image-20230311142015005

1.2.4扫描远程系统上NetBIOS信息

需要准备好用户名 admins.txt,需要用到 nbtstat.exe(系统内置工具)

for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i

image-20230311142259991

image-20230311142414053

需要准备好用户名 admins.txt,需要用到 nbt.exe(第三方工具)

for /F %i in (ips.txt) do @echo [+] Checking %i && nbt -f %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i

image-20230311142529599

1.2.5使用多种方式寻找域管理员

2.提权

2.1msf假冒令牌
2.1.1假冒令牌原理:

假冒令牌可以假冒一个网络中的另一个用户进行各类操作。

所谓的令牌:例如当一个用户登录系统,则它会被赋予一个访问令牌作为认证信息。所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒令牌方式进行入侵攻击。

windows_token 类似于 web 中的 cookie,当用户登陆后则后续操作校验 token 即可。在域环境中我们 token 分为两种:

交互式 token:我们登录后的 token

非交互 token:例如我们通过 IPC(Internet Process Connection)连接,或登录注销后都为非交互 token

2.1.2攻击过程:

首先利用攻击模块获取主机shell

image-20230311144053833

image-20230311144145889

查看为system权限,加载 load incognito 模块,查看当前所有 token: list_tokens -u

image-20230311144224245

impersonation tokens: 现在未存在其他高权限用户

现在我们模拟域管理员非交互 token

使用AD服务器高权限账号通过IPC共享访问下目标机的某个文件

image-20230311144530484

再次执行 list_tokens -u

发现新增一个非交互域管理员 token

image-20230311144652007

通过 impersonate_token “WINXP\IUSR_DH-CA8822AB9589” 假冒域管理员令牌并添加用户

image-20230311144822661

复现时发现该用户为低权限用户,且ipc并不会产生高权限token

故使用交互token

image-20230311151546971

添加用户

image-20230311151621091

2.2ms14-068提权
2.2.1ms14-068原理:

Microsoft Windows Kerberos KDC 中非公开报告的漏洞,该漏洞可能允许攻击者将未经授权的域用户帐户的权限,提升到域管理员帐户的权限。攻击者可能使用这些提升的权限来侵入域中的任何计算机,包括域控制器。攻击者必须有有效的域凭据才能利用此漏洞。拥有域凭据的标准用户帐户可以远程使用受影响的组件;只有本地帐户凭据的用户则不能。发布本安全公告时,Microsoft 发现了试图利用此漏洞的有限数量的定向攻击。

https://docs.microsoft.com/zh-cn/security-updates/Securitybulletins/2014/ms14-068

Kerberos 协议

image-20230311151638234

Ms14-068.exe, 漏洞利用程序

下载: https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068

Mimikatz,读取内存密码,修改内存凭证

官网:http://blog.gentilkiwi.com/mimikatz

下载:https://github.com/gentilkiwi/mimikatz/releases/latest

2.2.2ms14-068利用过程:

使用域普通用户登录

查看dc共享信息失败

image-20230311153843449

生成假的令牌(票据)使其有效

先使用 mimikatz 工具清除内存中的 kerberos 票据

命令:kerberos::purge

image-20230311152344529

然后使用 MS14-068.exe 生成新的票据

使用说明:MS14-068.exe -u 域用户名@域名 -p 域用户密码 -s SID -d 域控制器 IP

SID 使用 whoami /all 获取

image-20230311152731564

image-20230311152833423

执行成功之后,可以发现生成了票据

image-20230311152850994

在 mimikatz 中导入新的票据

image-20230311153407042

导入成功之后,可以使用 kerberos::list 查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BIjejYQ3-1678754168322)(C:\Users\s1118\AppData\Roaming\Typora\typora-user-images\image-20230311153437672.png)]

再次访问共享目录,成功访问,提权成功

image-20230311153732819

2.3JuicyPotato本地提权
2.3.1介绍

Juicy Potato 是一款 Windows 系统的本地提权工具,是在工具 RottenPotatoNG 的基础上做了扩展,适用条件更广。

利 用 的 前 提 是 获 得 了 SeImpersonate 或 者 SeAssignPrimaryToken 权 限 , 通 常 在webshell 下使用。

那么,Juicy Potato 的使用方法有哪些,有哪些限制条件呢?本文将对其进行测试,根据原理分析限制条件。

官网地址: https://ohpe.it/juicy-potato/

下载地址:https://github.com/ohpe/juicy-potato

2.3.2原理

基础知识:
使用 DCOM 时,如果以服务的方式远程连接,那么权限为 System,例如 BITS 服务
使用 DCOM 可以通过 TCP 连接到本机的一个端口,发起 NTLM 认证,该认证可以被重放
LocalService 用户默认具有 SeImpersonate 和 SeAssignPrimaryToken 权限
开启 SeImpersonate 权限后,能够在调用 CreateProcessWithToken 时,传入新的 Token创建新的进程
Juicy Potato 的实现流程:

  1. 加载 COM,发出请求,权限为 System
    在指定 ip 和端口的位置尝试加载一个 COM 对象。
    RottenPotatoNG 使 用 的 COM 对 象 为 BITS , CLSID 为
    {4991d34b-80a1-4291-83b6-3328366b9097}
    可供选择的 COM 对象不唯一,Juicy Potato 提供了多个,详细列表可参考如下地址

    地址:https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md

  2. 回应步骤 1 的请求,发起 NTLM 认证

    正常情况下,由于权限不足,当前权限不是 System,无法认证成功。

  3. 针对本地端口,同样发起 NTLM 认证,权限为当前用户

    由于权限为当前用户,所以 NTLM 认证能够成功完成。

    RottenPotatoNG 使用的 135 端口。

    Juicy Potato 支持指定任意本地端口,但是 RPC 一般默认为 135 端口,很少被修改。

  4. 分别拦截两个 NTLM 认证的数据包,替换数据,通过 NTLM 重放使得步骤 1 ( 权限为

    System ) 的 NTLM 认证通过,获得 System 权限的 Token

    重放时需要注意 NTLM 认证的 NTLM Server Challenge 不同,需要修正。

  5. 利用 System 权限的 Token 创建新进程

    如果开启 SeImpersonate 权限,调用 CreateProcessWithToken,传入 System 权限的

    Token,创建的进程为 System 权限。或者,如果开启 SeAssignPrimaryToken 权限,调用

    CreateProcessAsUser,传入 System 权限的 Token,创建的进程为 System 权限

    利用的关键:

    当前用户支持 SeImpersonate 或者 SeAssignPrimaryToken 权限

    以下用户具有该权限:

    ​ · 本地管理员组成员和本地服务帐户

    ​ · 由服务控制管理器启动的服务

    ​ · 由组件对象模型 ( COM ) 基础结构启动的并配置为在特定帐户下运行的 COM 服务器

    针对提权的话,主要是第三类用户,常见的为 LocalService 用户,例如 IIS 和者 sqlserver 的用户

2.3.3提权过程

分为以下几步:

  1. 获取主机的 CLSID
  2. 从 CLSID 中找出是系统权限的 CLSID
  3. 查看当前主机权限
  4. 根据权限执行 Juicy Potato 的命令

whoami /priv

如果开启 SeImpersonate 权限,juicypotato 的参数可以使用 -t t

如果开启 SeAssignPrimaryToken 权限,juicypotato 的参数可以使用 -t u

如果均开启,可以选择 -t *

如果均未开启,那么无法提权。

详细步骤:

官方下载的脚本有问题,需要修改,否则直接输出所有的 CLSID

image-20230311162701699

将 CLSID 从控制台复制出来,放到一个文件中,CLSID.list在同级文件夹下,运行批处理,会检测每一个 ID 属于哪个用户,生成一个 log 文件

image-20230311162842436

image-20230311162853020

查看权限 whoami /priv

image-20230311162920930

可以发现开启了 SeImpersonate 权限,SeAssignPrimaryToken 权限没有,使用-t t 命令提权。

完整命令juicypotato -l 1337 -p c:\windows\system32\cmd.exe -t t -c {03ca98d6-ff5d-49b8-abc6-03dd84127020}

image-20230311163028704

参数说明:

-l 1337 COM 服务器端口

-p 启动的程序

-t 创建进程模式

-c CLSID

一些公开的 CLSID:https://github.com/ohpe/juicy-potato/tree/master/CLSID

2.4使用CobaltStrike对已有shell进行提权

进行后门的下载

image-20230311163549836

运行后门建立shell

image-20230311163809646

成功连接

image-20230311163832934

但权限太低,尝试提权

image-20230311164852616

多次尝试后,利用cve-2018-8120成功提权

image-20230311170605540

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值