DM_ · 2014/05/31 15:54

from:https://www.netspi.com/blog/entryid/214/faster-domain-escalation-using-ldap

0x00 背景


如果你是一个渗透测试师,那么你大概早都清楚从一个本地管理员权限提升至域管理员权限只需要几步就可以,这些步骤通常是通过不同的方法来偷取域管理密码,密码hash,或者是认证token,如果你不幸遇到没有域管登陆的系统然后就只能放弃,然后再去找有域管登陆的机器。一段时间前我写了一篇文章 “5 Ways to Find Systems Running Domain Admin Processes” 其中列出了一些常见的方法,但是最近我又发现了另外一种方法,所以在这篇文章里我会介绍通过LDAP查询” ServicePrincipleName”属性来找到域管可能登陆的机器的方法。同样也会给出一些Powershell模块来自动化完成,希望这对渗透测试师和想知道域管理账号在哪里登陆的管理员们起到帮助。

0x01 LDAP概述


对于那些并不熟悉Lightwieght Directory Access Protocol (LDAP)人来讲,它大概像是一个目录信息。虽然LDAP在很多平台被使用,但在windows的域环境中它却是 Active Directory Services (ADS)的核心,ADS负责windows域的认证和授权,但也储存了大量的信息,这些信息包括但不限于域用户,计算机用户,域用户组,安全策略和软件更新。每一个对象都有多种属性与之关联,并且其中大部分的属性都可以通过LDAP查询。比如每一个用户都有一个”Created”的属性包含了账号创建时间。同样的每一个账户都有一个” ServicePrincipleName”属性,这也是本文接下来的重点。

0x02 ServicePrincipleName 概述


微软的文档中是这样陈述的:”ServicePrincipleName(SPN)是客户端用来唯一标识一个服务实例的名称”,在略读后发现这大概为了便利widnows域中的Kerberos 认证,但我们可以用它来做一些其他的事,对于我们来说,多值的ServicePrincipleName是很方便的。因为在Active Directory中任何一个用户和计算机对象都储存了账户在域中的运行的服务信息。所以这就可以很方便的定位像IIS、SQL Server,及LDAP。同样也可以很方便的查询到对应的用户在哪里登陆(比如域管理员)。这相对来说要简单些,因为SPN有一个标准化的命令约定。SPN格式为SERVICE/HOST,但有时也会包含端口像 SERVICE/HOST:PORT。 比如,如果一个域用户曾在acme.com域中运行DNS和SQL Server服务,那么SPN项看起来就像是这样:

DNS/Server1.acme.com
MSSQLSvc/Server2.acme.com:1433
复制代码

在LDAP中可以非常直截了当的查询基础的SPN信息,比如一个经过认证的用户就可以用adfind.exe (www.joeware.net) 与下面的命令来列出域中注册的所有的SQL Server实例:

C: >Adfind.exe -f "ServicePrincipalName=MSSQLSvc*"
复制代码

同样windows server 2008中的”setspn.exe”工具也可以针对某个用户快速查询SPN:

C: >setspn.exe –l user1
复制代码

在以前的渗透测试中,我发现企业通常都存在域管理员运行服务的现象,结果是在提权阶段简单的在LDAP中查询域管用户的信息然后检查SPN项大概就可以找到其登陆过的服务器。然而adfind和setspn都缺少默认选项来快速查询SPN,所以我写了一个Powershell模块”Get-SPN”来简化这一步骤。

0x03 Get-SPN PowerShell Module


Get-SPN这个模块提供了一种简单的方法在LDAP中快速查询符合指定的用户、组、或者SPN服务名称。对于那些有兴趣的人可以在我的Github上下载here。请注意需要在powershell v3.0版本下运行。这个模块可以手工安装,通过下载Get-SPN.psm1文件到下面两个目录中任意一处:

%USERPROFILE%DocumentsWindowsPowerShellModules
%WINDIR%System32WindowsPowerShellv1.0Modules
复制代码

可以这样导入模块:

Import-Module .Get-SPN.psm1
复制代码

安装后,下面是在我的测试环境下的几个示例,来帮助你理解使用,更多的示例你可以通过使用help来发现。

Get-Help Get-SPN -full
复制代码

查找所有域管理员运行的服务 如果你在一个域机器上以域用户或者本地system权限运行那么参照下面的命令:

Get-SPN -type group -search "Domain Admins" -List yes | Format-Table –Autosize
复制代码

这一命令也可以使用-list参数以获取更多详细的输出,比如:

Get-SPN -type group -search "Domain Admins"
复制代码

如果你在一个非域系统上以域凭证执行那么可以使用下面的命令,“DomainController”和 “Credential”选项也可以用来在Get-SPN中查询.

Get-SPN  -type group -search "Domain Admins" -List yes -DomainController 192.168.1.100 -Credential domainuser | Format-Table –Autosize
复制代码

查找所有域中所有的SQL Server服务 如果你在一个域机器上以域用户或者本地system权限运行那么参照下面的命令:

Get-SPN  -type service -search "MSSQLSvc*" -List yes | Format-Table –Autosize
复制代码

针对那些对除SQL server以外的服务感兴趣的人,下面列出一些SPN服务名称.

alerter,appmgmt,browser,cifs,cisvc,clipsrv,dcom,dhcp,dmserver,dns,dnscache,eventlog,eventsystem,fax, http,ias,iisadmin,messenger,msiserver,mcsvc,netdde,netddedsm,netlogon,netman,nmagent,oakley,plugplay,policyagent, protectedstorage,rasman,remoteaccess,replicator,rpc,rpclocator,rpcss,rsvp,samss,scardsvr,scesrv,schedule,scm,seclogon, snmp,spooler,tapisrv,time,trksvr,trkwks,ups,w3svc,wins,www

查找域用户名匹配关键词的ServicePrincipalName项 如果你在一个域机器上以域用户或者本地system权限运行那么参照下面的命令:

Get-SPN  -type user -search "*svc*" -List yes
复制代码

0x04 小结


在你打算用SPN找到域管理账户登录过的系统时,我要告诉你几点限制。 1,并不是所有的域管理账户都会运行服务。 2,SPN在应用程序安装后自动注册,但是账户在程序安装后发现改变,如果不是人为添加那么在SPN中将不会表现。 最后,大多数情况下,SPN对于查找域管理账户非常有用,但是在一些环境下它却毫无作为。 无论如何,利用它找到域管登陆过的系统,意味着你不需要执行任何扫描工作,或者拓展shell,这是非常好的。这样有助于减少在渗透测试中的攻击指纹识别和检测。最后不要忘记ServicePrincpleNames可以用来定位重要的目标,比如SQL Server,Web Server,及其他域中的服务。 Good hunting. Have fun and hack responsibly. :)

0x05 参考


http://technet.microsoft.com/en-us/library/cc731241.aspx

http://msdn.microsoft.com/en-us/library/dd878324(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms677949(v=vs.85).aspx

http://go.microsoft.com/fwlink/?LinkId=198395

http://www.microsoft.com/en-us/download/details.aspx?id=15326

http://technet.microsoft.com/en-us/library/aa996205%28v=exchg.65%29.aspx

使用LDAP查询快速提升域权限相关推荐

  1. 渗透工具ldapsearch-ad:Python3 脚本通过LDAP服务快速从域控制器获取各种信息。

    Git地址: yaap7/ldapsearch-ad:Python3 脚本,用于通过他的 LDAP 服务从域控制器快速获取各种信息. (github.com) ldapsearch-ad.py Pyt ...

  2. 内网安全之:域与域权限判断

    域与域权限判断 1 域控基础 1.1 活动目录 1.2 域中的计算机分类 1.3 域内权限解读 2 收集当前域信息 2.1 获取当前用户与域 SID 2.2 查询指定用户的详细信息 2.3 判断是否存 ...

  3. 什么表单设计工具能快速提升办公效率?

    在信息化快速发展的年代,谁能掌握更先进的技术,谁就能拥有更广阔的发展前景.在以前的办公环境中,传统的表单制作工具占据了主流地位,随着办公自动化的快速发展,传统表单工具的弊端也暴露出来了,采用更先进的表 ...

  4. 网站关键词排名,如何快速提升?

    对于企业网站排名而言,每一个网站运营专员都希望,可以在较短的时间内,针对网站关键词快速排名,但有的时候,我们知道,搜索引擎的排名有一个评估的时间周期,它涉及诸多因素,比如: ①网站域名的受信任度(网站 ...

  5. 工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能?...

    当一般的程序员工作5年左右后,往往会遇到事业上的一个瓶颈期:能力上已经达到高级开发,工资比上不足比下有余,而且至少能在所在城市站稳脚跟. 不过根据行业现状,这类程序员再要向上提升,难度就不小了,具体表 ...

  6. 修改Windows AD的LDAP查询限制

    默认情况下,Windows Server中默认的将LDAP的查询数量限制为1000个,可以通过一下方式进行LDAP查询数量的修改: 1.登录域控服务器,然后在CMD命令行模式下输入:ntdsutil, ...

  7. 查询速度提升200倍,ClickHouse到底有多快?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取个gui 来源:r6a.cn/a8UZ ClickHouse 是 Yande ...

  8. CSS开发过程中的20个快速提升技巧

    摘要:本文涵盖了20个CSS技巧,可以解决许多工作中常见的问题, 让你也成为一个CSS高手. 1.使用CSS重置(reset) css重置库如normalize.css已经被使用很多年了,它们可以为你 ...

  9. HTML5 游戏开发快速提升

    小册介绍 HTML5 是构建 Web 内容的一种语言描述方式,是最新的 HTML 标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一.HTML5 是跨平台的,被设计为在不同类型 ...

最新文章

  1. Tensor VS NumPy
  2. 万字长文爆肝Python基础入门【巨详细,一学就会】
  3. char、Varchar、nvarchar、ntext (转)
  4. Swift 数组、字典
  5. linq判断集合中相同元素个数_java----Collection集合常用方法
  6. 5009. tinyfsm有限状态机
  7. 95-180-045-源码-Watermark-递增时间戳分配器(AscendingTimestampExtractor)
  8. 《Thinkphp5使用Socket服务》 入门篇
  9. app开发的三大技术框架
  10. 关于Shader KeyWord的整理
  11. ASPCMS调用分类名称及链接
  12. 获取树莓派4系统信息
  13. html:(9):blockquote引用和br换行
  14. 腾讯会议中如何使用虚拟摄像头
  15. 网站关键词怎么合理布局提升网站排名
  16. 频谱和频率响应的区别和理解
  17. 【linux系统安装jdk11】
  18. ubuntu无法挂载大容量U盘
  19. 依据Nvidia RTX2080TI算力来分析自动驾驶算力需求
  20. BaoCms短信发送失败问题解答

热门文章

  1. 从今天开始 好好规划自己
  2. git fetch实战以及与git pull 的区别
  3. Moment.js 一款JS时间封装库
  4. C++静态成员总结(转)
  5. C#只能靠参数而不能靠返回值类型的不同来区分方法重载
  6. PAT1008数组元素循环右移问题(2,3测试点不过的解决办法)
  7. 论文解读——Improving Object Detection With One Line of Code
  8. LabView学习笔记(二):滤波器实验
  9. linux搜索命令有哪些,linux五大搜索命令学习
  10. 零基础python数据分析自学_零基础的人,怎么自学数据分析?