1 内网基础知识
1.1 内网外网简介
1.1.1 概念
内网
- 内网又称局域网,是指在某个局域网内由多个计算机以及网络设备构成的网络
- 我们常说的内网,往往是区别于外网的,也就是说内网一般是用于计算机内部之间的相互通讯
外网
- 也称广域网,是连接不同局域网或局域网计算机通信的远程网
- 所覆盖的范围从几十公里到几千公里
- 广域网并不等同于互联网
区别
- 内网和外网的覆盖范围不一样,内网通常范围小,外网一般指Internet网
- 内网一般是用于局域网内部的计算机之间的相互通讯,如果要访问Internet,需要借助外网,一般可以使用NAT技术实现内网访问外网
- 内网地址一般使用私有地址;外网使用公有地址
1.2 公网地址与私网地址

1.3 NAT网络转换
NAT 技术是 1994 年被提出来的。简单来说,它是把内部私有 IP 地址翻译成合法有效的网络公有 IP 地址的技术。
通过 NAT 技术接入外网如下图所示:

若专用网内部的一些主机本来已经分配到了本地 IP 地址(仅在本专用网内使用的专用地址),但现在又想和 Internet 中的主机通信(并不需要加密),可使用 NAT 技术,这种技术需要在专用网连接到 Internet 的路由器上安装 NAT 软件。
装有 NAT 软件的路由器叫作 NAT 路由器,它至少有一个有效的外部全球 IP 地址。所有使用本地 IP 地址的主机在和外界通信时,都要在 NAT 路由器上将其本地 IP 地址转换成全球 IP 地址,才能和 Internet 连接。
1.4 NAT技术的作用及其优缺点
NAT 技术不仅能解决 IP 地址不足的问题,还能有效地避免来自外部网络的攻击,隐藏并保护内部网络的计算机。
-
作用:通过将内部网络的私有IP地址翻译成全球唯一的公有 IP 地址,使内部网络可以连接到互联网等外部网络中。
-
优点:节省公共合法 IP 地址,处理地址重叠,增强灵活性与安全性。
-
缺点:时延增加;配置和维护的复杂性增加;不支持某些应用,但可以通过静态NAT映射来避免。
要真正了解 NAT 技术,必须先了解现在 IP 地址的使用情况。私有 IP 地址是指内部网络或主机的 IP 地址,公有 IP 地址是指 Internet 中全球唯一的 IP 地址。
RFC 1918 为私有网络预留出了如下 3 类 IP 地址:
-
A 类 IP 地址:10.0.0.0~10.255.255.255;
-
B 类 IP 地址:172.16.0.0~172.31.255.255;
-
C 类 IP 地址:192.168.0.0~192.168.255.255。
上述 3 类地址不会在 Internet 中被分配,因此不必向 ISP 或注册中心申请即可在公司或企业内部自由使用。
1.5 NAT术语
1.5.1.1 内部本地地址
内部网络中的设备在内部的 IP 地址,即分配给内部网络中主机的 IP 地址。
这种地址通常来自 RFC 1918 指定的私有地址空间,即内部主机的实际地址。
1.5.1.2 内部全局地址
内部网络中的设备在外部的 IP 地址,内部全局 IP 地址对外代表一个或多个内部 IP 地址。
这种地址来自全局唯一的地址空间,通常是 ISP 提供的,即内部主机经 NAT 设备转换后去往外部的地址。
1.5.1.3 外部本地地址
外部网络中的设备在内部的 IP 地址,即在内部网络中看到的外部主机的 IP 地址。
外部本地地址通常来自 RFC 1918 定义的私有地址空间,即外部主机由 NAT 设备转换后的地址。
1.5.1.4 外部全局地址
外部网络中的设备在外部的 IP 地址,即外部网络中的主机 IP 地址。
外部全局地址通常来自全局可路由的地址空间,即外部主机的真实地址。内部网络与外部网络如下图所示。

1.6 静态NAT
NAT 的实现方式有 3 种,即静态 NAT、动态 NAT 和端口地址转换。先讲解静态 NAT。
1.6.1.1 静态NAT的定义
静态 NAT 是指将内部网络的私有 IP 地址转换为公有 IP 地址。其 IP 地址对是一对一且一成不变的,某个私有 IP 地址只能转换为某个公有 IP 地址。
借助静态 NAT,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
1.6.1.2 静态NAT的工作过程
静态 NAT 的转换条目需要预先手动配置,建立内部本地地址和内部全局地址的一对一永久对应关系,即将一个内部本地地址和一个内部全局地址进行绑定。
借助静态 NAT,可以隐藏内部服务器的地址信息,提高网络安全性。
例如,当内部主机 PC1 访问外部主机 PC3 的资源时,内部主机静态 NAT 访问过程如下图所示。

-
主机 PC1 以私有 IP 地址 192.168.1.10 为源地址向主机 PC3 发送报文,路由器 AR1 在接收到主机 PC1 发来的报文时,检查 NAT 表,若该地址配置有静态 NAT 映射,则进入下一步;若没有配置静态 NAT 映射,则转换不成功。
-
当路由器 AR1 配置有静态 NAT 映射时,把源地址(192.168.1.10)替换成对应的转换地址(202.199.184.10),经转换后,数据报的源地址变为 202.199.184.10,并转发该报文。
-
当主机 PC3(200.100.3.10)接收到报文后,将向源地址 202.199.184.10 发送响应报文,静态 NAT 响应过程如下图所示。

-
当路由器 AR1 接收到内部全局地址的报文时,将以内部全局地址 202.199.184.10 为关键字查找 NAT 表,再将报文的目标地址转换成 192.168.1.10,同时转发给主机 PC1。
-
主机 PC1 接收到响应报文,继续保持会话,直至会话结束。
1.7 动态NAT
1.7.1.1 动态NAT的定义
动态 NAT 是指将内部网络的私有 IP 地址转换为公有 IP 地址时,IP 地址是不确定的,所有被授权访问 Internet 的私有 IP 地址可随机转换为任何指定的合法 IP 地址。
也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址,就可以采用动态 NAT。
动态 NAT 可以使用多个合法外部地址集,当 ISP 提供的合法 IP 地址略少于网络内部的计算机数量时,可以采用动态转换的方式。
静态 NAT 是在路由器上手动配置内部本地地址与内部全局地址一对一地进行转换映射,配置完成后,该全局地址不允许其他主机使用,这在一定程度上造成了 IP 地址资源的浪费。
而动态 NAT 也是将内部本地地址与内部全局地址一对一地进行转换映射,不同的是动态 NAT 是从内部全局地址池中动态选择一个未被使用的地址对内部本地地址进行转换映射。动态地址转换条目是动态创建的,无须预先手动创建。
1.7.1.2 动态NAT的工作过程
动态 NAT 在路由器中建立一个地址池来放置可用的内部全局地址,当有内部本地地址需要转换时,会查询地址池,取出内部全局地址建立地址映射关系,实现动态 NAT。当转换完成后,释放该映射关系,将这个内部全局地址返回地址池中,以供其他用户使用。
当内部主机 PC1 访问外部主机 PC3 的资源时,内部主机动态 NAT 访问过程如下图所示。

-
主机 PC1 以私有 IP 地址 192.168.1.10 为源地址向主机 PC3 发送报文,路由器 AR1 在接收到主机 PC1 发来的报文时,检查 NAT 地址池,发现需要对该报文的源地址进行转换,并从路由器 AR1 的地址池中选择一个未被使用的全局地址 202.199.184.10 用于转换。
-
路由器 AR1 将内部本地地址 192.168.1.10 转换成对应的地址 202.199.184.10,经转换后,报文的源地址变为 202.199.184.10,转发该报文,并创建一个动态 NAT 表项。
-
当主机 PC3 收到报文后,使用 200.100.3.10 作为源地址,以内部全局地址 202.199.184.10 作为目标地址来进行应答,动态 NAT 响应过程如下图所示:

-
当路由器 AR1 接收到内部全局地址的报文时,将以内部全局地址 202.199.184.10 为关键字查找 NAT 表,再将报文的目标地址转换成 192.168.1.10,同时转发给主机 PC1。
-
主机 PC1 接收到响应报文,继续保持会话,直至会话结束。
1.8 端口地址转换
端口地址转换(Port Address Translation,PAT)是指改变外出报文的源端口并进行端口转换。
PAT 采用端口多路复用方式,使内部网络的所有主机可共享一个合法的外部 IP 地址以实现对 Internet 的访问,从而可以最大限度地节约 IP 地址资源,同时,可隐藏网络内部的所有主机,有效避免来自 Internet 的攻击。因此,目前网络中应用得最多的就是 PAT。
PAT 是动态 NAT 的一种实现形式,PAT 利用不同的端口号将多个内部私有 IP 地址转换为一个外部 IP 地址,达到多台主机访问外网且只用一个 IP 地址的目的。
1.8.1.1 PAT的工作过程
PAT 和动态 NAT 的区别在于 PAT 只需要一个内部全局地址就可以映射多个内部本地地址,通过端口号来区分不同的主机。
与动态 NAT 一样,PAT 的地址池中也存放了很多内部全局地址,转换时从地址池中获取一个内部全局地址,在转换表中建立内部本地地址及端口号与内部全局地址及端口号的映射关系。
当内部主机 PC1 访问外部主机 PC3 的资源时,内部主机 PAT 访问过程如下图所示。

图 7 PAT访问过程
-
主机 PC1 以私有 IP 地址 192.168.1.10 为源地址,以 6001 为端口号,向主机 PC3 发送报文,路由器 AR1 在接收到主机 PC1 发来的报文时,检查 NAT 地址池,发现需要对该报文的源地址进行转换,并从路由器 AR1 的地址池中选择一个未被使用的端口号为 4001 的全局地址 202.199.184.10 用于转换。
-
路由器 AR1 将内部本地地址 192.168.10.10:6001 转换成对应的地址 202.199.184.10:4001,经转换后,报文的源地址变为 202.199.184.10:4001,转发该报文,并创建一个动态 NAT 表项。
-
当主机 PC3 收到报文后,使用 200.100.3.10 作为源地址且端口号为 8001,并以内部全局地址 202.199.184.10:4001 作为目标地址来进行应答,PAT 响应过程如下图所示。

图 8 PAT响应过程
-
当路由器 AR1 接收到内部全局地址的报文时,将以内部全局地址 202.199.184.10:4001 为关键字查找 NAT 表,并将报文的目标地址转换成 192.168.1.10:6001,同时转发给主机 PC1。
-
主机 PC1 接收到响应报文,继续保持会话,直至会话结束。
2 Windows域简介
2.1 工作组
工作组:工作组是局域网中的一个概念,是长久的资源管理模式。默认情况下使用工作组方式进行资源管理,将不同的电脑按照不同的要求分类到不同的组
2.2 域
域:用来描述一种架构,和工作组相对应,由工作组升级而成的高级架构。域是一个有安全边界的计算机集合(安全边界,是指在两个域中,其中一个域的用户没办法访问另一个域的资源)。相比于工作组而言,域有一个更加严格的安全管理控制机制。
2.2.1 域的几种环境
- 单域
- 通常是一个小公司,一般一个域就可以,一个域内要至少两台域服务器,一台作为域控制器,另一台作为备份
- 活动目录的数据库(包括用户的账号信息)是存储在域控制器中的
- 父域和子域
- 处于管理的要求,需要在网络中划分出多个域。第一个域称为父域,其他为子域
- 域树
- 域森林
2.2.2 域名服务器 DNS
是指用于实现域名与与之相对应的IP地址转换的服务器,从对域树的介绍中来看出,域树中的域名和DNS域名非常相似,实际上,因为域名的计算机是通过DNS来定位域控制器、服务器及其他计算机、网络服务的,所以域的名字就是DNS域的名字
在实际内网渗透测试中,大多数是通过寻找DNS服务器来确定域控制器的位置的(DNS服务器和域服务器通常配置在同一台机器中)
2.2.3 域术语
- DC:域控,域的创造者
- 域管理:域控上的管理者
- AD:共享同一 AD 数据库、安全策略与信任边界的网络对象集合
- NTDS dit:域用户账户以域数据库的形式保存在活动目录中
- Ntdstuil.exe:是域控制器中自带的域数据库管理工具,因此可以从ntdsutil.exe提取域中的所有域用户信息
- 常见结构:组织单元(OU)、域(DOMAIN)、域树(tree)、域森林(forest),在域树内所有域共享一个活动目录,这个活动目录内的数据分散地存储在各个域内,且每一个域存储该域内的数据
2.2.3.1 域控DC
在域架构中域控是用来管理所有客户端的服务器,它负责每一台连入的电脑和用户验证工作,域内电脑如果想相互访问首先得经过它的审核
域控是域架构的核心,每个域控制器上都包含了AD活动目录数据库
一个域中可能应该要有两个域控,一个DC,一个备份DC,如果没有两个DC,一旦DC瘫痪,则域内的其他用户就无法登录域了,因为活动目录的数据库(包括用户的账号消息)存储在DC中。当域中的一台计算机安装AD后,它就成了域控DC了
2.2.3.2 活动目录
- 账号集中管理:所有账号均存在服务器上,方便对账号的重命名/重置密码
- 软件集中管理:统一推送软件,统一安装网络打印机等。利用软件发布策略发布软件,可以让用户自由选择安装软件
- 环境集中管理:利用AD可以统一客户段桌面,IE,TCP/IP等设置
- 增强安全性:统一部署杀毒软件和扫毒任务,集中化管理用户的计算机权限、统一制定用户名密码策略等,可监控网络、资料统一管理。
- 更可靠:;更少的宕机时间。
- 活动目录为Microsoft统一管理平台的基础平台,其他ISA、Exchange、SMS等服务都是依赖于该平台
2.2.3.3 NTDS.dit
域用户账户以数据库形式保存在活动目录中,NTDS.dit是活动目录的数据库文件,由下列三个表:
Schema表:包含了所有可在活动目录创建的对象信息以及他们之间的相互关系,包括各种类型的可选以及不可选的各种属性,是最小也是最基础的一个表Link表:包含所有属性的关联,包括活动目录中所有对象的属性的值,一个用户对象的所有属性的类型,包括每个属性的值以及用户所属于的组等信息都属于这个表,比Data表小Data表:活动目录中用户、组、应用程序特殊数据以及其他数据全在Data表中,大量的活动目录资料实际上保存在这个表中
2.2.3.4 逻辑结构
活动目录的逻辑结构主要由以下四个层级的组件构成,它们决定了如何对资源进行组织、管理以及如何应用安全策略:
- 组织单位
- 概念:活动目录中最小的、可以指派组策略 (GPO) 或委派管理权限的容器对象。
- 作用:可以将用户、组、计算机以及其他的 OU 放入其中,形成层次结构。它的主要目的是方便管理员对不同部门或层级进行精细化管理和权限下放。
- 域
- 概念:活动目录逻辑结构的核心单位,是一个基本的管理边界和安全边界。
- 作用:每个域都有自己独立的安全策略和访问控制列表。在同一个域内,对象可以被集中管理。上文提到的域控 (DC) 就是基于“域”这个级别的。
- 域树
- 概念:由一个或多个共享连续命名空间的域组成。
- 作用:例如,根域为
example.com,其子域可以是sales.example.com和hr.example.com。域树中的所有域通过“双向传递信任关系”自动连接,使得跨域资源访问成为可能。
- 域森林
- 概念:由一个或多个不共享连续命名空间的域树组成的集合。它是活动目录中最高级别的逻辑结构和最大的安全边界。
- 作用:例如,
example.com和test.net可以在同一个森林中。森林中的所有域共享同一个架构 (Schema,即 NTDS.dit 中的 Schema 表) 和全局编录 (Global Catalog)。森林内的不同域树之间也存在传递信任。
2.2.3.5 DNS域名服务器
在Windows域环境中,DNS(域名系统)扮演的角色远比在普通互联网中进行简单的网址解析重要得多。它是活动目录(Active Directory)赖以生存的基础设施,可以说,没有DNS,整个域环境就无法正常运作。
- 定位域控制器,也就是通过SRV(服务位置)记录实现服务发现。当一台普通域成员电脑开机并尝试登录域时,它本身并不知道域控的具体网络位置。此时,它会向DNS服务器发送查询请求,寻找负责该域的域控制器。DNS服务器通过读取内部的SRV记录,将域控制器的IP地址返回给客户端计算机,客户端随后才能向域控准确提交账号和密码进行身份验证。
- 域名解析:它将域内的计算机名映射为对应的内网IP地址,确保域内的服务器、工作站和共享资源之间可以通过易记的主机名进行顺畅的通信。为了降低网络维护成本,域环境中的DNS通常支持动态更新机制。这意味着当域内的客户端计算机通过DHCP获取到新的IP地址或更改了主机名时,它们会自动向DNS服务器注册并更新自己的解析记录,无需管理员进行繁琐的手动修改。
1. 独立于活动目录的 DNS(标准区域模式)
- 存储位置:在这种模式下,DNS 的解析记录(包括 A 记录、SRV 记录等)不存储在活动目录的
NTDS.dit数据库中。相反,它们被保存在 DNS 服务器本地的传统文本文件(通常是.dns区域文件)里。 - 完全解绑:这个 DNS 服务器甚至不需要是 Windows Server。您完全可以使用一台搭建了 BIND 服务的 Linux 服务器 来作为整个 Windows 域环境的 DNS 服务器。
- 前提条件:虽然 DNS 是独立的,但为了让活动目录能正常工作,这个独立的 DNS 服务器必须支持两点:支持 SRV 资源记录(用于定位域控)和 支持动态更新(RFC 2136标准,让域内机器能自动注册IP)。
- SRV服务记录时DNS服务器的数据库中支持的一种资源记录的类型,它记录了哪台服务器提供哪个服务这么一个简单的信息
- SRV服务记录:一般是作为活动目录AD设置的应用。DNS可以独立于活动目录,但是活动目录必须有DNS的帮助才能工作。为了活动目录能够正常的工作,Dns服务器必须支持服务定位资源记录,资源记录把服务名字映射为提供服务的服务器名称。域主机和域控制器使用SRV资源记录决定域控制器的IP地址和提供服务的服务器IP地址 2. 与活动目录集成的 DNS(主流推荐模式)
- 存储位置:这就是我上一条回复中提到的情况,管理员在配置时选择将 DNS 区域与 AD 集成。此时,传统的区域文本文件被废弃,所有的 DNS 记录都变成了活动目录中的对象,直接写入
NTDS.dit数据库。 - 优势:这种做法的目的是为了利用 AD 的多主复制机制来实现 DNS 数据的安全同步,方便管理,因此成为了绝大多数企业内网的首选方案。
2.2.3.6 域信任关系
域之间的信任关系,相当于是不同的域之间的桥梁,域信任分为单向信任和双向信任
单向信任:只能是受信任域访问信任域,而信任域不能访问受信任域。双向信任是相互都信任
父子关系:父域和子域自动建立起双向信任关系,并且信任关系可以传递
树信任:同一个林中,林根域与其他根域自动建立双向信任关系,可传递
3 内网扫描
3.1 内外网简介
在拿到 webshell/meterpreter/beacon 后,想办法获得信息系统拿到系统权限,进入到网络系统内部之后收集内部网络的各种信息,获取内部网络有价值的人员、资产信息
3.2 信息收集
3.2.1 工作组信息收集
这部分主要针对当前控制的单台机器,目标是了解本机状态、寻找提权漏洞以及收集可用于横向移动的本地凭证。
3.2.1.1 用户信息
此部分用于弄清楚“我是谁”、“机器上有谁”、“我能干什么”。
:: 查看当前在线/登录的会话,常用于判断管理员是否在线,避免操作冲突被发现
query user
qwinsta
:: 查看本机所有本地用户账户
net user
:: 查看当前属于本地管理员组的用户,确认当前账户是否具有最高权限
net localgroup administrators
:: 确认当前自身的权限,并验证是否属于本地管理员组
net localgroup administrators && whoami
:: 【高频关键命令】查看当前用户的完整信息。
:: 重点关注 Mandatory Label (判断 UAC 级别,High为高权限)
:: 以及特权信息 (如是否拥有 SeImpersonatePrivilege 提权必备特权)
whoami /all
:: 查看系统保存的登录凭证 (Windows Credentials),可能会直接拿到其他机器的账密
cmdkey /l
:: 查看本地密码策略(了解密码长度、复杂度、锁定阈值,为后续爆破做准备)
net accounts
:: 通过 WMIC 获取所有本地用户的名称和 SID 号
wmic useraccount get name,SID
3.2.1.2 系统
用于收集操作系统版本、补丁情况(寻找提权EXP)、运行的进程等基础信息。
:: 查看系统详细信息,重点关注 OS 版本、系统架构(x86/x64) 以及已安装的初始补丁
systeminfo
:: 快速查看系统版本号
ver
:: 查看系统环境变量,有时能在变量中发现写死的路径或凭证
set
:: 查看当前运行的进程及其对应的服务,常用于寻找杀软、特定业务服务
tasklist /svc
:: 查找指定目录下及子目录下未隐藏的 exe 文件,用于寻找本地安装的第三方软件或遗留工具
dir /s *.exe
:: 【提权关键】快速、详细地查看已安装的系统补丁(KB号),用于对比提权漏洞库
wmic qfe get Caption,Description,HotFixID,InstalledOn
:: 查看系统的自启动项,常用于寻找权限维持(后门)的挂载点
wmic startup get command,caption
3.2.1.3 网络信息
用于了解当前机器的网络位置、出网情况以及与其他机器的连接。
:: 查看基础网络配置 (IP、子网掩码、网关)
ipconfig
:: 查看详细网络配置,重点关注 DNS 服务器(在域环境中,DNS通常就是域控)
ipconfig /all
:: 查看当前活动的网络连接及对应的 PID,寻找内网其他存活服务或判断是否出网
netstat -ano
:: 查看内网 ARP 缓存表,这是被动发现同网段存活主机的最佳方式,不产生扫描流量
arp -a
:: 查看本机路由表,判断是否存在多网卡、多网段(双宿主主机)
route print
:: 查看本机的共享目录,寻找敏感文件或确认是否存在可写的共享
net share
:: 查看连接到本机的远程 Session(需要管理员权限),看谁连过这台机器
net session
:: 磁盘映射
net use K: \\192.168.1.10\c$
3.2.1.4 防火墙信息
判断端口转发和反弹 Shell 是否会受到限制。
:: 查看防火墙状态 (适用于 Windows Server 2003 及更早版本)
netsh firewall show state
:: 查看所有网络配置文件(域、专用、公用)的防火墙状态 (适用于 Windows Server 2008 及以后版本)
netsh advfirewall show allprofiles state
3.2.1.5 RDP远程桌面
用于判断是否可以通过图形化界面接入,以及确认 RDP 是否被修改了默认端口。
:: 查看 RDP 服务是否开启 (回显 0x0 为开启,0x1 为关闭)
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
:: 【关键】查看 RDP 的实际监听端口,很多企业会修改默认的 3389 端口。回显为十六进制,需自行转十进制(如 0xd3d 即为 3389)
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
3.2.1.6 获取杀软信息
在执行敏感操作(如抓密码、传木马)前,必须确认防线。
:: 通过 WMIC 精准获取杀毒软件名称及状态(比 tasklist 盲猜更准确)
wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState,instancename
3.2.1.7 代理信息
如果目标机器不出网,检查代理配置是寻找出网途径的重要手段。
:: 查看当前用户的 IE/系统全局代理配置,可能会发现内网的代理服务器 IP 和端口
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
3.2.1.8 Wifi密码
对于笔记本电脑或带有无线网卡的台式机,获取 WiFi 密码可用于突破物理边界。
:: 查看当前机器曾经连接过的所有 WiFi SSID 名称
netsh wlan show profiles
:: 查看指定 WiFi 的明文密码 (将“这里填WIFI名称”替换为上一步获取的 SSID)
netsh wlan show profile name="这里填WIFI名称" key=clear
3.2.1.9 回收站信息
常常能捡漏发现管理员删除的敏感文件(如密码本、配置文件)。
:: 遍历系统回收站的物理目录内容。回收站通常位于 C:\$Recycle.Bin,每个用户按 SID 分配独立的子目录。
cmd.exe /c "dir /a /s C:\$Recycle.Bin"
3.2.1.10 Chrome浏览器信息
浏览器往往保存着各种内部系统、OA、邮箱的明文密码。
:: 路径:包含保存的密码的 SQLite 数据库
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data
:: 思路补充:
1. 单纯拷贝 Login Data 无法直接读取,因为被 DPAPI 加密。
2. 需要一并获取 Local State 文件(包含加密密钥)或使用 Mimikatz (`dpapi::chrome`) / HackBrowserData 等工具在目标机器上直接导出,或打包相关文件离线解密。
3.2.1.11 Powershell信息收集
PowerShell 是现代渗透测试的利器,以下为基础环境探测。
# 查看当前的 PowerShell 执行策略(如果是 Restricted,可能需要绕过才能运行 ps1 脚本)
Get-ExecutionPolicy
# 使用 PowerShell 获取系统硬件及基本信息
Get-WmiObject -Class Win32_ComputerSystem
# 获取本地用户和组(替代 net user / net localgroup 的现代方法)
Get-LocalUser
Get-LocalGroup
3.2.1.12 内网信息收集脚本
3.2.2 域信息收集
当确认机器处于域环境(如通过 ipconfig /all 看到主 DNS 后缀,或 net config workstation 看到域控名)后,收集的重心将转向 Active Directory。
3.2.2.1 Net组件
最基础、最原生的 Windows 命令,不需要额外安装工具。
:: 查看当前计算机名、全名、登录的域等工作站基础信息
net config workstation
:: 查看域内所有的用户,用于初步评估域规模
net user /domain
:: 查看域内所有的安全组,重点寻找带有 "Admin", "IT", "Helpdesk" 等字眼的组
net group /domain
:: 【核心高价值】查看域管理员组内的成员,这是红队最终的攻击目标之一
net group "domain admins" /domain
:: 查看域控制器的计算机名
net group "domain controllers" /domain
:: 查看域密码策略(密码过期时间、锁定策略等,对域内用户进行密码喷洒前必看)
net accounts /domain
:: 查看当前网络中存在的域(可能存在多域、子域信任关系)
net view /domain
:: 查看当前域内的所有计算机列表
net view & net group "domain computers" /domain
:: 建立 IPC$ 隧道连接,用于后续利用 psexec / wmiexec 进行横向移动或访问隐藏共享
net use \\域控IP或主机名\ipc$ "密码" /user:域名\用户名
3.2.2.2 Dsquery
Windows Server 自带的 Active Directory 命令行工具,查询能力比 net 命令更强。
:: 查询目录中的所有普通用户
dsquery user
:: 查找目录中的 Active Directory 域控制器 (DC) / LDS 实例
dsquery server
:: 查询域内所有的计算机名称
dsquery computer
3.2.2.3 Other (其他高级查询)
涉及环境变量和 SPN(服务主体名称),主要用于高级域渗透手法(如 Kerberoasting)。
:: 查看当前用户登录认证的域控服务器名称
echo %logonserver%
:: 查看指定用户的 SPN 记录。SPN 是服务绑定到的账户的唯一标识符。
setspn -L administrator
:: 【Kerberoasting 前置操作】查询整个域内的所有 SPN 记录,寻找注册在普通域用户下的服务(这类服务账户更容易被破解出明文密码)
setspn -T domain.com -Q */*
:: 查看远程计算机(IP为目标IP)的运行进程,用于横向移动前评估目标机器上是否有杀软或分析人员
tasklist /S 远程IP /U domain\username /P 密码 /V
3.2.2.4 定位域控
在域渗透中,拿下域控 (DC) 就等于拿下了整个域,因此第一步往往是找出域控的 IP 和主机名。
:: 方法一:查看域时间。绝大多数情况下,域内的主时间服务器就是域控制器。同时返回域控的主机名。
net time /domain
:: 方法二:查看指定域的域控制器列表。返回域控的主机名。
nltest /dclist:yourdomain.com
:: 方法三:通过 DNS 结构查询。域控通常会注册 LDAP 服务的 SRV 记录,此命令最准确,可直接解析出域控的 IP 地址和名称。
nslookup -type=SRV _ldap._tcp.dc._msdcs.yourdomain.com
:: 方法四:查看网络配置。通常企业内网中,域控往往兼任 DNS 服务器,所以 ipconfig /all 中的首选 DNS 地址大概率就是域控 IP。
ipconfig /all
:: 方法五:查看当前登录会话是由哪台服务器验证的。
echo %logonserver%
3.2.3 bloodhouse绘图
可以通过bloodhound将信息下载绘图
proxychains4 bloodhound-python -u "XIAORANG-EXC01$" --hashes :9b2081c3dc250a9b0a55c54c4dcc9cbb -d xiaorang.lab -dc XIAORANG-WIN16.xiaorang.lab -c all --dns-tcp -ns 172.22.3.2 --auth-method ntlm --zip
参数说明
3.3 主机扫描
在域内进行横向渗透时,首先要注意收集主机的端口和ip信息
net view /domain #查询域内主机信息查询通讯
arp -a发现主机
nbtscan -r 192.168.0.0/243.3.1 存活判断
3.3.1.1 常见命令
在获取了潜在的内网IP段或主机名后,首先要验证这些主机是否存活,以及当前控制的跳板机与目标之间的网络路由是否可达。
- 基于 ICMP 协议 (常规 Ping) 最简单直接的方法,但实战中经常会遇到目标开启了 Windows 防火墙(默认拦截外部 Ping 请求)导致误判目标不存活。
ping 192.168.0.10
-
基于 TCP/UDP 协议 (绕过禁 Ping) 当 ICMP 被拦截时,可以尝试向目标机器常见的开放端口(如 80, 445, 3389)发送 TCP/UDP 请求来判断主机是否存活。
- 系统自带命令(如 PowerShell):
# 测试目标机器的 445 端口是否可达
Test-NetConnection -ComputerName 192.168.0.10 -Port 445
- 基于DNS协议
- 基于 DNS 的探测通常不直接向目标主机发请求,而是通过询问内网中的 DNS 服务器来侧面推断主机的存活状态。
# 使用内网 DNS 服务器 (192.168.0.2) 反查 192.168.0.10
nslookup 192.168.0.10 192.168.0.2
# 在 Linux 下使用 dig 进行反查 (-x)
dig -x 192.168.0.10 @192.168.0.2
- 基于 HTTP/HTTPS 协议的存活判断 (Web 探测)
- Web 服务是企业内网部署最广泛的应用。只要我们向目标 IP 的 Web 端口(通常是 80, 443, 8080 等)发送一个 HTTP 请求,只要服务器返回了任何 HTTP 状态码,就绝对证明该主机当前是存活的。 注意:不需要返回
200 OK才算存活。返回401 Unauthorized(需要密码)、403 Forbidden(禁止访问)、302 Found(重定向) 甚至500 Internal Server Error(服务器内部错误) 都能百分之百确认这台机器不仅开着机,而且还在运行 Web 服务。
- Web 服务是企业内网部署最广泛的应用。只要我们向目标 IP 的 Web 端口(通常是 80, 443, 8080 等)发送一个 HTTP 请求,只要服务器返回了任何 HTTP 状态码,就绝对证明该主机当前是存活的。 注意:不需要返回
# -I 发送 HEAD 请求,-m 3 设置超时时间为 3 秒
curl -I -m 3 http://192.168.0.10
curl -k -I -m 3 https://192.168.0.10 # -k 用于忽略 HTTPS 证书校验
- Nmap 免 Ping 扫描:
nmap -Pn -sT -p 445 192.168.0.10
3.3.1.2 MSF命令
auxiliary/scanner/discovery/arp_sweep #arp扫描
auxiliary/scanner/discovery/udp_sweep #udp扫描
auxiliary/scaaner/netbios/nbhame #netbios扫描
auxiliary/scanner/snmp/snmp_enum #snmp扫描
auxiliary/scanner/smb/smb_version #smb扫描
3.3.2 端口判断
确认主机存活后,下一步是探测其开放的端口,以此推断目标运行的服务和操作系统。在内网横向移动中,为了降低被安全设备(IDS/IPS/态势感知)发现的风险,通常不建议进行暴力的全端口扫描(1-65535),而是针对特定的高危端口进行精准探测。
- 内网高价值目标端口清单:
- 文件共享与远程执行:
445(SMB, 极易存在漏洞如永恒之蓝或用于 psexec),135(RPC),139(NetBIOS) - 远程运维登录:
3389(RDP),22(SSH) - 域控核心服务:
53(DNS),88(Kerberos),389(LDAP),3268(全局编录服务器) - 数据库服务:
1433(MSSQL),3306(MySQL),1521(Oracle),6379(Redis 未授权访问)
- 文件共享与远程执行:
3.3.2.1 常用端口扫描探测工具
- Telnet / Netcat (nc): 系统常自带,适合单点、单端口快速验证。
nc -zv 192.168.0.10 445 3389
- Nmap: 端口扫描界的行业标准,支持各种隐蔽扫描(如 SYN 半连接扫描
-sS)。 - 综合型自动化工具 (如 fscan, kscan): 目前实战中最常用的工具,不仅能扫端口,还能顺带检测弱口令、常见 Web 漏洞和系统漏洞,极大提高横向效率。
3.3.2.2 MSF工具
auxiliary/scanner/portscan/ack #TCP ACK端口
auxiliary/scanner/portscan/ftpbounce #FTP bounce端口扫描
auxiliary/scanner/portscan/syn #SYN端口扫描
auxiliary/scanner/portscan/tcp #TCP端口扫描
auxiliary/scanner/portscan/xmas #TCP XMas端口扫描
3.3.3 代理服务器 (内网穿透 / 隧道技术)
在真实的内网渗透实战中,攻击者的物理机通常只能直接访问到外网的边界服务器(如 Web 服务器),而无法直接与深层内网中的机器(如域控所在的办公网段)进行通信。代理服务器的作用就是打通攻击机与深层内网的通信隧道(Pivoting/跳板),让攻击者的本地工具(如本地的 Nmap、Metasploit、BurpSuite)能够直接作用于内网目标。
- 代理的主要模式:
- SOCKS 代理 (正向/反向): 这是最常用的全局代理模式(推荐使用 SOCKS5)。建立后,攻击者在本地使用
Proxychains(Linux) 或Proxifier(Windows) 挂载代理,即可像在内网一样直接访问任何内网 IP。 - 端口转发 (Port Forwarding): 当不需要全局代理时,仅仅将内网机器的某个特定端口(例如将域控的 3389 端口)通过跳板机映射到攻击者公网 VPS 的某个端口上。
- SOCKS 代理 (正向/反向): 这是最常用的全局代理模式(推荐使用 SOCKS5)。建立后,攻击者在本地使用
- 实战主流隧道/代理工具:
- Frp / Chisel: 目前最主流、性能极佳的代理工具,支持多平台,通常用于建立反向 SOCKS5 代理。
- Neo-reGeorg: 经典的 HTTP 隧道代理。当目标边界服务器防火墙策略极其严格,只允许 80/443 端口出入站流量时,可以通过上传 JSP/PHP 网页脚本,利用 Web 流量复用来建立正向代理。
- Metasploit 自带路由: 如果已经获取了 Meterpreter shell,可以使用
run autoroute -s命令结合 auxiliary 的 SOCKS 模块快速搭建代理。
3.4 nmap扫描
3.5 Token 窃取与利用
令牌是系统的临时密钥,相当于账号密码,用来决定是否允许这次请求和判断是属于哪个用户的,它允许你在不提供账号密码或者其他凭证的情况下,访问网络和系统资源。令牌最大的特点就是随机性、不可预测性
假冒令牌可以假冒一个网络中的另一个用户进行各类操作,所以当一个攻击者需要域管理员的操作权限时,需要通过假冒域管理员的令牌进行攻击
令牌的种类
- 访问令牌(Access token):表示访问控制主体的系统对象
- Delegation Token:授权令牌,是交互式的会话(例如本地用户直接登录、远程桌面登录访问)
- Impresonation Token:模拟令牌。是非交互式的会话(例如使用net use访问共享文件夹)
- 会话令牌(Session token):是交互会话中唯一的身份标识符
- 密保令牌(Servurity token):又叫做认证令牌或硬件令牌,是一种计算机身份的物理设备
3.5.1 Access Token的窃取与利用
AccessToken的窃取与利用需要administorator管理员权限,也就是说要提权
窃取方法:
- incofnito.exe程序
- InvokeTokenManipulat.ps1脚本
- MSF里的incognito模块
3.5.1.1 incognito
https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
AccessToken的列举(需要administrator权限)
3.5.1.2 窃取进程
除了可以伪造令牌,也可以从进程里窃取令牌,首先使用ps列出进程,然后使用steal_token pid窃取令牌就有对应权限