0x00 前言

在之前的文章《域渗透——DNS记录的获取》介绍了域渗透中获得DNS管理员权限后获取DNS记录的方法,而更普遍的情况是只有域普通用户的权限,也需要获得DNS记录。

本文将会参考公开的资料,整理域普通用户获得DNS记录的方法,修复dns-dump.ps1在高版本Windows系统下的bug。

0x01 简介

本文将要介绍以下内容:

· 实现原理

· 开源的工具和方法

0x02 实现原理

1.SharpAdidnsdump的实现原理

先通过LDAP查询获得域内计算机的名称,再通过DNS查询获得对应的IP。

详细实现细节可参考:

https://github.com/b4rtik/SharpAdidnsdump

测试环境: test.com

(1)通过LDAP查询获得域内计算机的名称

对应LDAP的查询参数如下:

LDAP://test.com/DC=test.com,CN=microsoftdns,DC=DomainDnsZones,DC=test,DC=com(&(!(objectClass=DnsZone))(!(DC=@))(!(DC=*arpa))(!(DC=*DNSZones)))

(2)通过DNS查询获得域内计算机对应的IP

使用Dns.GetHostEntry方法,参考资料:

https://docs.microsoft.com/en-us/dotnet/api/system.net.dns.gethostentry?redirectedfrom=MSDN&view=netframework-3.5#System_Net_Dns_GetHostEntry_System_String_

2.dns-dump的实现原理

先通过LDAP查询获得DNS记录,对二进制的DNS记录进行解码,获得实际内容。

DNS记录解码的细节可参考:

https://github.com/mmessano/PowerShell/blob/master/dns-dump.ps1#L483

0x03 开源的工具和方法

测试环境:

· test.com

· Server2012 R2

1.先通过LDAP查询获得域内计算机的名称,再通过DNS查询获得对应的IP

(1)SharpAdidnsdump

https://github.com/b4rtik/SharpAdidnsdump

C#实现,用于查询DNS记录。

用法:

SharpAdidnsdump test.com

获得的结果完整,同dnscmd的结果一致

注:dnscmd的用法可以参考之前的文章《域渗透——DNS记录的获取》

(2)adidnsdump

https://github.com/dirkjanm/adidnsdump

https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/

Python实现,用于查询DNS记录。

适用于Linux,由于需要安装impacket,因此无法直接在Windows系统下使用。

安装方法:

git clone https://github.com/SecureAuthCorp/impacket.git

cd impacket

pip install .

cd ..

git clone https://github.com/dirkjanm/adidnsdump

cd adidnsdump

pip install .

需要先获得一个域用户的凭据(明文口令或NTLM hash)。

用法1.直接远程查询:

adidnsdump -u test\\testuser1 -p test123! dc.test.com -r

用法2.通过socks代理进行查询:

proxychains adidnsdump -u test\\testuser1 -p test123! dc.test.com -r --dns-tcp

注:还可以使用NTLM hash作为登录凭据。

2.先通过LDAP查询获得DNS记录,对二进制的DNS记录进行解码,获得实际内容

(1)dns-dump

https://github.com/mmessano/PowerShell/blob/master/dns-dump.ps1

Powershell实现,用于查询DNS记录。

这个powershell脚本较为古老,我在我的测试环境Server2008R2和Server2012R2下均失败。

经过分析,需要修改LDAP的查询语句,新的脚本已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-Powershell/blob/master/dns-dump.ps1

用法:

Powershell -ep bypass -f dns-dump.ps1 -zone test.com

获得的结果完整,同dnscmd的结果一致。

(2)PowerView

https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1

也可用于查询DNS记录。

其中的Convert-DNSRecord可用来对二进制的DNS记录进行解码:

https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1#L1814

用法如下:

import-module PowerView.ps1

Get-DNSRecord -ZoneName test.com

3.其他工具

(1)AdFind

C++实现(未开源),用于查询域内信息。

http://www.joeware.net/freetools/tools/adfind/index.htm

常用命令如下:

列出域控制器名称:

AdFind -sc dclist

查询当前域中在线的计算机:

AdFind -sc computers_active

注:对应的LDAP查询条件如下:

Transformed Filter: (&(objectcategory=computer)(!(useraccountcontrol:1.2.840.113556.1.4.803:=2))(pwdlastset>=131932198595370000)(|(!lastlogontimestamp=*)(&(lastlogontimestamp=*)(lastlogontimestamp>=131932198595370000))))

查询当前域中在线的计算机(只显示名称和操作系统):

AdFind -sc computers_active name operatingSystem

查询当前域中所有计算机:

AdFind -f "objectcategory=computer"

查询当前域中所有计算机(只显示名称和操作系统):

AdFind -f "objectcategory=computer" name operatingSystem

查询域内所有用户:

AdFind -users name

查询所有GPO:

AdFind -sc gpodmp

AdFind -gpo

注:查询GPO对应之前的文章《域渗透——利用GPO中的计划任务实现远程执行》

0x04 小结

本文介绍了多种域普通用户获得DNS记录的方法,适用于不同的环境,在实际使用过程中,某些情况下AdFind的查询效率较低。

ad域同步其他ldap账号_域渗透——普通用户权限获得DNS记录相关推荐

  1. 域netbios名什么意思_域渗透(二):域环境搭建

    "究竟爱一个人,可以到什么程度?究竟什么样的邂逅,可以舍命不悔?逻辑的尽头不是理性和秩序的理想国,而是我用生命奉献的爱情!<嫌疑人X的献身>"01环境简介 在本篇文章中 ...

  2. 08 域控 架构主机 转移_域控制器的角色转移与抢占

    今天我们通过一个实例为大家介绍如何实现操作主机角色的转移, 这样如果 Active Directory 中操作主 机角色出现了问题,我们就可以用今天介绍的知识来进行故障排除. 我们首先要明确一个重要原 ...

  3. 08 域控 架构主机 转移_域控服务器迁移步骤(精)

    域控服务器迁移步骤 假设主域控制器的 IP 为 192.168.1.10 ,额外域控制器的 IP 为 192.168.1.20 第一步:主域迁移之前的备份 : 1. 备份主域服务器的系统状态 2. 备 ...

  4. 【大数据day02】——Linux系统02(find 搜索,VI编辑器_终端编辑器,用户权限相关命令,系统信息相关命令)

    搜索命令 1.find 搜索 1.1 目标 通过find命令 在特定目录下(包含它的后代目录) 搜索 符合条件的文件 1.2 实现 : 在指定目录中 根据名称 搜索 命令格式 序号 命令格式 作用 0 ...

  5. linuxoracle查看用户权限_实现Oracle授予用户权限的一个实例

    本文将从用户创建讲起,特别讲述Oracle授予用户权限的一个实例,希望对大家了解Oracle授予用户权限有所帮助. 这两天在测数据库同步软件的时候,需要在Oracle里创建一个用户名和密码均为SYSD ...

  6. bat 域 本机管理员密码_域渗透——Local Administrator Password Solution

    0x00 前言 在域渗透中,有关域内主机的本地管理员的安全介绍还很少,对于LAPS大都比较陌生,所以这次就和我一起学习一下吧. 0x01 简介 在实际的域环境中,域内主机的本地管理员账户往往被忽视,再 ...

  7. mysql s授权所有用户_批量获取mysql用户权限的方法

    -- 服务器级别的权限 select  a.GRANTEE,GROUP_CONCAT(a.PRIVILEGE_TYPE), concat("grant ",GROUP_CONCAT ...

  8. yii beforeaction 如何赋值全局变量_前端如何进行用户权限管理

    1:问题: 假如在做一个管理系统,面向老师学生的,学生提交申请,老师负责审核(或者还需要添加其他角色,功能权限都不同). 现在的问题是,每种角色登录看到的界面应该都是不一样的,那这个页面的区分如何实现 ...

  9. 华润大学ldap账号是什么_认证配置 - 接入 LDAP / AD 域账号(Beta) - 《KubeSphere v2.1 使用手册》 - 书栈网 · BookStack...

    接入 LDAP / AD 域账号(Beta) 如果您的企业使用 LDAP 作为用户认证系统,您可以在 KubeSphere 中通过脚本配置内置的 OpenLDAP 接入您的 LDAP 用户系统,从而允 ...

最新文章

  1. 【转帖】SQLServer登录连接失败(error:40-无法打开到SQLServer的连接)的解决方案...
  2. CTFshow php特性 web108
  3. mybatis如何根据mapper接口生成其实现类
  4. thinkphp的like用法
  5. linux jar 运行 停止,[转] Linux中启动和停止jar包的运行
  6. 找出1到n的守形数c语言,c语言循环语句训练题(6页)-原创力文档
  7. 起来吧!不要做奴隶的ITproject师们!
  8. IE8下window.open出现的bug
  9. html文件调整表格边框的属性,css怎么设置表格边框?
  10. 怎样用计算机弹虫儿飞,吉他初学者必看:虫儿飞指弹教程
  11. oracle宿主常量及变量,ORACLE之 LOB 数据类型
  12. Matlab学习手记——牛顿型信頼域法求解无约束问题
  13. matlab 圣诞树,搞气氛!用MATLAB画一棵Bling Bling的圣诞树
  14. html表单验证邮箱表达式,Javascript正则表达式实现表单验证
  15. [MSSQL2005]再看CTE
  16. 电子报刊制作软件之比较
  17. 大学计算机信息技术教程2020版知识点,大学计算机信息技术教程习题集.doc
  18. BZOJ5473: 仙人掌
  19. AngularJs ng-repeat重复项异常解决方案
  20. Js逆向 | 猿人学爬虫攻防大赛 | 第一题: js 混淆 - 源码乱码(多图预警!!手把手教学!!)

热门文章

  1. keepalived vip mysql_mysql+keepalived高可用集群
  2. c# image转换为bitmap_Python PIL.Image与numpy.array之间的相互转换
  3. 安全使用计算机事例,计算机安全案例分析.ppt
  4. linux 大数字 进制转换,Linux下用bc快速进行数字进制转换
  5. linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题
  6. 猎豹浏览器怎么设置双击关闭网页 双击关闭网页设置方法
  7. win7系统还原在哪​
  8. List.addAll方法的入参不能为null
  9. MySQL建表字段长度的限制、汉字和字母占字节数
  10. 学习Spring Boot:(三)配置文件