跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

域渗透——普通用户权限访问DNS记录


RenX6

推荐的帖子

0x00 前言

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

本文将参考公开资料,梳理域内普通用户获取DNS记录的方法,修复高版本Windows系统下dns-dump.ps1的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=微软dns,DC=域名区域,DC=测试,DC=com

((!(objectClass=DnsZone))(!(DC=@)(!(DC=*arpa))(!(DC=*DNSZones)))

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

使用Dns。GetHostEntry方法,资源:

https://docs . Microsoft . com/en-us/dot net/API/system . net . DNS . gethostentry?redirectedfrom=MSDNview=Net framework-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记录

用法:

test.com夏普迪登普

所得结果与dnscmd的结果完全一致。

注:

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

(2)adidnsdump

https://github.com/dirkjanm/adidnsdump

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

Python实现,用于查询DNS记录

适用于Linux,不能直接在Windows系统下使用,因为需要安装impacket。

安装方法:

git克隆https://github.com/SecureAuthCorp/impacket.git

cd包装

pip安装。

激光唱片.

git克隆https://github.com/dirkjanm/adidnsdump

cd adidnsdump

pip安装。

您需要获得域用户的凭证(明文密码或NTLM哈希)

1.用法:直接远程查询:

adidnsdump-u test \ \ testuser 1-p test 123!dc.test.com河

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

proxy chains adidnsdump-u test \ \ test user 1-p test 123!dc.test.com-r-DNS-TCP

注:

您也可以使用NTLM哈希作为登录凭据。

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/3g student/home-of-Powershell/blob/master/DNS-dump . PS1

用法:

powershell-EP bypass-f DNS-dump . PS1-区域test.com

所得结果与dnscmd的结果完全一致。

(2)PowerView

https://github . com/powershell mafia/PowerSploit/blob/master/Recon/power view . PS1

它还可以用来查询DNS记录

的Convert-DNSRecord可用于解码二进制DNS记录:

https://github . com/powershell mafia/PowerSploit/blob/master/Recon/power view . PS1 # l 1814

用法如下:

导入模块PowerView.ps1

get-DNS record-zone name test.com

3.其他工具

(1)AdFind

c实现(非开源),用于查询域内信息。

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

常见命令如下:

列出域控制器名称:

AdFind -sc dclist

查询当前域中的联机计算机:

AdFind -sc计算机_活动

注:

对应的LDAP查询条件如下:

已转换的筛选器:((objectcategory=computer)(!(user account control:1 . 2 . 840 . 113556 . 1 . 4 . 803:=2))(pwdlastset=131932198595370000)(|(!lastlogontimestamp=*)((lastlogontimestamp=*)(lastlogontimestamp=131932198595370000)))

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

AdFind -sc计算机_活动名称操作系统

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

AdFind-f ' object category=计算机'

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

ad find-f ' object category=computer '名称操作系统

查询域中的所有用户:

AdFind-用户名

查询所有GPO:

AdFind -sc gpodmp

或者

AdFind -gpo

注:

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

0x04 小结

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

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...