内网渗透测试基础知识(一)
内网渗透是什么
- 内网渗透(Intranet Exploitation)
内网渗透是指获取目标服务器控制权之后,通过内网信息收集、内网代理、权限提升、横向移动等技术,对其所处的内网环境进行渗透,并最终获取内网其他主机权限的过程,如域控制器,运维主机等
内网工作环境
工作组
1、工作组(Work Group)是局域网中的一个概念。
2、它是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以方便管理。
- 通过此电脑属性-更改设置-计算机名更改-工作组
域(Domain)
域(domain)是一个比工作组更高级的计算机资源管理模式,既可以用于计算机数量较少的小规模网络环境,也可以用于计算机数量众多的大型网络环境。
域(domain)是一个有安全边界的计算机集合,在同一个域中的计算机彼此之间已经建立了信任关系,在域内访问其他机器,不再需要被访问机器的许可
单域
单域是指网络环境中只有一个域。在一个计算机数量较少,地理位置固定的小规模组织中,建立一个单独的域。
父域和子域
在某些情况下,为了满足某些特殊情况或者要求,需要在一个域中划分出多个域,被划分的域称为父域,划分出来的各部分域称为子域
域树
域树是多个域通过建立信任关系组成一个域集合。在域树中,所有的域共享同一表结构和配置,所有的域名形成一个连续的名字空间;域树中域的命名空间具有连续性,并且域名层次越深,级别越低。
在域树中,域管理员只能管理本域,不能访问或者管理其他域。如果两个域之间需要互相访问,就需要建立信任关系(Trust Relation)
域林
域林是指有一个或多个没有形成连续名字空间的域树组成域树集合
- 域林与域树的区别
域林中的域或域树之间没有形成连续的名字空间,而域树是由一些具有连续名字空间的域组成。
但是域林中的所有域树仍共享同一个表结构、配置和全局目录。
域控制器
- 什么是域控制器
域控制器(Domain Controller, DC,域控)是域环境核心的服务器计算机,用于在域中响应安全身份认证请求,负责允许或着拒绝发出请求的主机访问域内资源,以及对用户进行身份验证,存储用户账户信息并执行域的安全策略等。
一个域环境可以拥有一台或者多台域控制器,每台域控制器各自存储一份所在域的活动目录的可写副本,对活动墓库的任何修改都可以从源域控制器同步复制到域,域树或者域林的其他控制器上。即使一台瘫痪,另外一台域控制器可以继续工作,以保证环境的正常运行
活动目录
活动目录的含义
活动目录(Active Directory)是指安装在域控制器上,为整个域环境提供集中式目录管理服务的组件。
活动目录的主要功能
- 计算机集中管理
- 集中管理所有加入域的服务器及客户端计算机,统一下发组策略
- 用户集中管理:
- 集中管理域用户,组织通讯录、用户组,对用户进行统一的身份认证,资源授权等。
- 资源集中管理:
- 集中管理域中的打印机,文件共享服务等网络资源
- 环境集中配置:
- 集中的配置域中计算机的工作环境,如统一计算机桌面,统一网络连接配置,统一计算机安全配置等
- 应用集中管理:
- 对域中的计算机统一推送软件,安全补丁,防病毒系统,安装网络打印机等
Ntds.dit文件
Ntds.dit 文件是域环境的域控制器上保存的一个二进制文件,是主要的活动目录数据库,其文件的路径为“%SystemRoot%\ntds\ntds.dit".
非域环境即工作组环境中,用户的登录凭据等信息存储在本地SAM文件中。
活动目录的访问
- 使用微软官方提供的AD Explorer工具连接域控制器访问活动目录
可以方便浏览活动目录数据库、自定义快速入口、查看对象属性、编辑权限、进行精确搜寻等。
在域中任意一台主机上,以域用户身份进行连接域控制器,连接成功后可以查看域中的各种信息
活动目录的分区
活动目录可以支持数以千万的对象。为了扩大这些对象,微软将活动目录数据库划分为多个分区,以方便进行复制和管理,每个逻辑分区在域林中的域控制器之间分别复制更改。这些分区被称为上下文命名(Naming Context NC)
- 活动目录预定以了域分区、配置分区和架构分区三个分区
域分区
域分区(Domain NC)用于存储与该域有关的对象信息,这些信息是特定于该域的。如:域中计算机,用户,组,组织单位等信息。
在域林中,每个域的域控制器各自拥有一份属于自己的域分区,只会被复制到本域的所有域控制器中。
-
所圈出来的"DC=test,DC=com"就是test.com域的分区
-
域分区主要包括以下:
- CN=Builtin:内置了本地域组的安全组的容器。
- CN=Computers:机器用户容器,其中包含所有加入域的主机。
- OU=Domain Controllers:域控制器的容器,其中包含域中所有的域控制器
- CN=ForeignSecurityPrincipals:包含域中所有来自域的林外部域的组中成员
- CN=Managed Service Accounts:托管服务账户的容器
- CN=System:各种预配置对象的容器,包含信任对象、DNS对象和组策略对象。
- CN=Users:用户和组对象的默认容器。
配置分区
配置分区(Configuration NC)存储整个域林的主要配置信息,包括有关站点、服务、分区和整个活动目录结构的信息。
整个域林共享一份想听的配置分区,会被复制到域林中所有的域控制器上。
架构分区
架构分区(Schema NC)存储整个域林的架构信息,包括活动目录中的所有类,对象和属性的定义数据。
整个域林共享一份相同的架构分区,会被复制到林中所有域的域控制器中。
- "CN=Schema,Cn=Configuration,DC=test,DC=com"就是架构分区
活动目录的查询
使用Adfind查询活动目录
- Adfind是一款C++语言编写的域中信息查询工具,可以在域中任何一台主机上使用。语法格式为
Adfind.exe [switches] [-b basedn] [-f filter] [attr list]
# -b 是指定一个BaseDN作为查询的根,-f为LDAP过滤条件,attr list 为需要显示的属性
- 实列:
# 执行下面命令:
Adfind.exe -b dc=test,dc=com -f "objectClass=computer" name operatingSystem
# 查询test.com域中的所有computer对象,并过滤对象的"name"和“operatingSystem”属性
文章来源:https://uudwc.com/A/d2p9
Adfind.exe -b dc=test,dc=com -f "objectClass=user" cn
# 查询test.com域中的所有user对象,并过滤对象的“cn”属性
文章来源地址https://uudwc.com/A/d2p9
- Adfind.exe 常用命令
查询需求 | AdFind命令 |
---|---|
查询test.com域的所有computer对象并显示所有属性 | Adfind.exe -b dc=test,dc=com -f “objectClass=computer” |
查询test.com域的所有computer对象并过滤对象的name和operatinfSystem的属性 | Adfind.exe -b dc=test.com,dc=com -f “objectClass=computer” name operatingSystem |
查询指定主机的相关信息 | Adfind.exe -sc c:<Name/SamAccountName> 例子:Adfind.exe -sc c:172_16_0_15 |
查询当前域中主机的数量 | Adfind.exe -sc adobjcnt:computer |
查询当前域中被禁用的主机 | Adfind.exe -sc computers_disabled |
查询当前域中不需要密码的主机 | Adfind.exe -sc computers_pwdnotreqd |
查询域中在线的计算机 | Adfind.exe -sc computers_active |
查询test.com域的所以user对象并过滤对象的cn属性 | Adfind.exe -b dc=test,dc=com -f “objectClass=user” cn |
查询当前登录的用户信息和token | Adfind.exe -sc whoami |
查询指定用户的相关信息 | Adfind.exe -sc u:<Name/SameAccoutName> 例子:Adfind.exe -sc u:administrator |
查询当前域中用户数量 | Adfind.exe -sc adobjcnt:user |
查询当前域中被禁用的用户 | Adfind.exe -sc users_disabled |
查询域中密码不过期的用户 | Adfind.exe -sc users_noexpire |
查询域中不需要密码的用户 | Adfind.exe -sc users_pwdnotreqd |
查询当前域中所有域控制器(返回FQDN信息) | Adfind.exe dclist |
查询域中所有只读写的域控制器 | Adfind.exe -sc dclist:rodc |
查询当前域中所有可读写的域控制器 | Adfind.exe -sc dclist:!rodc |
查询所有的组策略对象并显示所有属性 | Adfind.exe -sc gpodmp |
查询域信任关系 | Adfind.exe -f “objectclass=trusteddomain” |
查询test.com域中具有高权限的SPN | Adfind.exe -b “DC=test,DC=com” -f “&(servicePrincipalName=*)(admincount=1)” servicePrincipalName |