windows内网渗透常用的60个命令,以及使用技巧,w字解析

**💖 温馨提示:**有一点必须预先声明,后续所有关于技术的探讨,皆以获得授权的环境为基础,用于合规的安全测试或系统运维学习,切不可将其挪作他用。

一、为什么要用系统自带的命令?

在长期的攻防实战与运维工作中,我们逐渐认识到,Windows 原生命令因其极高的可用性、低权限要求和卓越的兼容性,往往是内网环境中最为可靠且不易被察觉的‘瑞士军刀’。

1.1 系统命令的三大不可替代优势

首先是它的原生性,无需任何安装或部署步骤,直接通过 CMD 就能唤起,这就巧妙地绕开了因上传外部工具而可能触发安全软件拦截的麻烦。

另外一个情况是,存在大量命令在执行基础信息收集时,对权限的要求非常低,无需动用管理员账户就能完成,

其兼容性更是无懈可击,从古老的 Windows XP 一直到最新的 Server 2022,都能保持一致的运作,环境差异基本不成问题。

具体到实际应用场景,这些指令的价值就更加凸显,

身为系统运维人员,systeminfo 指令便是一个捷径,让你迅速掌握系统版本和补丁的详尽状况,

面对可疑的网络活动,netstat -ano 则成了排查利器,能够揪出异常连接与端口占用者,与此同时,借助 quser 还能实时洞察在线用户,避免在系统维护期间造成不必要的干扰。

1.2 这些命令能帮你解决什么实际问题?

如果你是一名在授权范围内进行测试的安全工程师 / 渗透测试工程师,

net user /domain 此乃枚举域内用户、进而识别高权限账户的起点,

想要快速锁定域控制器,nltest /dsgetdc:%userdomain% 的效率远胜于复杂的扫描手段,它几乎能瞬间给出答案,

而在为权限提升做铺垫时,没有什么比 whoami /all 更直接了,它能全面展示当前用户的权限构成,为后续步骤提供决策依据。

二、命令实战

1、本机用户账号一览

想摸清一台机器上有哪些户头,直接敲 net user 就行,

net user

image

image

这一下就能让你迅速掌握目标上都存在哪些用户,很方便用来排查那些未被授权就冒出来的新增账户。

2. 指定用户详况探查

如果想深入挖掘某个特定用户的老底,比如账号是不是还活着、密码多久过期、属于哪个组别,

那就在 net user 后面跟上用户名,

net user [用户名]

image

image

这个动作的意义在于,它能帮你判断目标账户的权限级别,为后续怎么利用这个权限铺平道路。

3、当前在线用户速览

另外,quser 这个指令也挺有意思,

quser

image

image

它能显示当前究竟谁在线,连同会话名称和登录时间都一清二楚,这可以避免你在做一些敏感动作时被别人发现。

4、创建本地用户账户

要在本地凭空造一个新用户并设好密码,只要权限足够,就可以用这个指令,

net user [要创建的用户名] [密码] /add

image

image

当然,获取了管理员权限后,直接修改别人的密码也是可以操作的,等于直接接管了目标账户,

5、重设本机用户密码

当然,获取了管理员权限后,直接修改别人的密码也是可以操作的,等于直接接管了目标账户,

net user [要修改的账号] [要设置的新密码]

image

image

实战价值:一旦获取管理员权限,即可借此修改现有用户密码,进而掌控目标账户。

6、移除本机用户账号

更有甚者,想把指定用户的密码直接抹掉,设为空,

net user [要修改的账号] ""

不过,执行这个操作存在一种情形,系统可能会跳出来提示说密码不符合安全策略。

image

image

6.1 解决步骤:

这时候就需要几个步骤来绕过它

首先,以管理员权限临时禁用密码策略,把密码最小长度设为 0,并且允许空密码,

net accounts /minpwlen:0 /maxpwage:unlimited

(此举将最小密码长度设定为 0,并允许空密码。)

image

image

然后,需要把当前的安全策略配置导出来,同样需要管理员权限,

secedit /export /cfg C:\\secpol.cfg

image

image

接着用记事本之类的工具打开刚导出的 C:\\\\secpol.cfg 文件,找到 PasswordComplexity = 1 这一行,把它改成 PasswordComplexity = 0,然后保存文件,

PasswordComplexity = 1 → 改为 → PasswordComplexity = 0

image

image

这一步是用来解除密码的复杂性要求的。

随后,我们再把修改过的配置文件给灌回去,让它生效,

secedit /configure /db C:\\windows\\security\\local.sdb /cfg C:\\secpol.cfg /areas SECURITYPOLICY

image

image

做完这些铺垫,再回头尝试设置空密码 net user testuser \"\" 应该就没问题了,

net user testuser \"\"

image

image

事毕,切记恢复原有的密码策略,比如恢复最小长度和有效期,此乃安全之本。

在一些测试场景里,这套方法可以临时简化登录流程,但操作结束后,马上把策略恢复原状是绝对有必要的。

net accounts /minpwlen:6 /maxpwage:42

image

image

**💖 温馨提示:**在实战操作中,此方法常用于临时简化测试账户的登录过程,完成操作后,强烈建议立即恢复原有策略。

7、删除本机用户账户

用于从系统中彻底移除指定本地用户,需要管理员权限,指令如下:

net user [要删除的账号] /del

image

image

8、本机用户组名查阅

此命令用于列出本机上存在的所有本地用户组名称,例如 Administrators、Guests 等,执行命令:

Net Localgroup

image

image

实战价值:快速把握系统用户组的结构,尤其能识别出高权限组(如 Administrators)。

9、管理员组内成员查询

用于查看 Administrators 组(拥有最高权限的组)的成员名单,这些用户对系统拥有完全的控制能力。指令为:

Net Localgroup Administrators

image

image

**🎖️实战价值:**准确定位哪些用户具备管理员权限,从而判断哪些账号可用于执行高权限操作。

10、用户加入指定组别

该操作将用户添加到目标用户组,从而使其获得该组的权限,执行时需管理员权限,命令格式:

net localgroup [用户组名称] [要添加的账号] /add

举例net localgroup administrators testuser /add(这条命令会将 testuser 添加到管理员组,从下方截图可见,testuser 已成功加入管理员组。)

image

image

解析:此举赋予用户其所在组的相应权限(例如,被添加至管理员组后,用户将获得系统的最高操作权限)。

**🎖️实战价值:**提升普通用户的权限级别,方便其执行需要高权限才能进行的操作(如修改系统配置、安装软件、执行关机命令等)。

11、用户自组别移除

此命令用于将用户从指定组中移除,从而收回其在该组别下的权限,操作需管理员权限,指令为:

net localgroup [用户组名称] [要删除的账号] /delete

案例net localgroup administrators testuser /delete(执行此命令会将 testuser 移出管理员组,从下图可见,该用户已被成功移除。)

image

image

解析:此操作用于取消用户在目标组中的权限分配,降低其操作能力。

**🎖️实战价值:**在完成渗透活动后,清理可能存在的后门账号的管理员权限,避免未授权用户长期掌握高权限。

12、当前登录身份确认

显示当前登录用户的 “主机名 \ 用户名” 格式,指令为:

whoami

image

image

**🎖️实战价值:**快速核实当前操作者的身份,判断是否拥有管理员权限(例如,用户名中若包含 “Administrator” 字样)。

13、当前用户登录 ID 追踪

用于显示当前用户登录会话的唯一标识符(即登录 ID)。指令:

whoami /logonid

image

image

**🎖️实战价值:**便于将系统事件日志或进程与当前用户关联起来,从而定位该用户在系统中的操作记录(例如,查找与该 ID 对应的进程)。

14、用户所有信息全览

此命令能一次性展示用户的所有权限相关数据,包括组别成员、系统特权、SID 等。指令:

whoami /all

案例C:\\Users\\Administrator>whoami /all执行后,将返回包括用户名、所属组、SID、安全特权等在内的完整信息。

image

image

**🎖️实战价值:**对当前用户所拥有的权限范围进行全面审查,以判断其是否具备高权限(例如,是否属于管理员组、是否拥有调试特权)。

15. 用户以 UPN 格式呈现(域环境适用)

此命令以 “用户主体名称”(通常为电子邮件格式)显示用户身份,特别适用于域环境。指令:

whoami /upn

案例C:\\Users\\Administrator>whoami /upn执行后,将显示类似 administrator@srv-web-kit.lab.local 的结果。

image

image

实战价值:在域环境中,能够快速识别用户的域身份,从而为跨域操作或权限验证提供便利。

16. 用户以 FQDN 格式呈现

此命令以 “完全合格域名” 格式显示用户的完整路径,包括其在域结构中的具体位置。指令:

whoami /fqdn

案例C:\\Users\\Administrator>whoami /fqdn执行后,将返回类似 CN=Administrator,CN=Users,DC=lab,DC=org 的结果。

image

image

**🎖️实战价值:**在复杂的域环境中,能够清晰地界定用户的具体位置,从而辅助进行域内权限分析。

17、当前用户信息与 SID 检视

要探查当前用户的身份凭据,可以调用「whoami /user」指令,

whoami /user

它的功用在于揭示 SID,即安全标识符,此乃用户在系统里那张独一无二的身份印记,其可靠性远非用户名所能比拟,

image

image

在权限配置与日志回溯的场景下,SID 的价值就凸显出来了,因为在系统日志的记录中,普遍存在着优先记录 SID 而非用户名的情形,这就为精确追踪提供了可能,

18、当前用户所属组别列举

至于「whoami /groups」, 它能让你一览当前用户究竟归属于哪些组别,比如 Administrators、Users 这些,

whoami /groups

一旦执行,终端会列出一份详尽的清单,囊括了组名、SID 以及组的类型信息,

image

image

搞清楚用户权限的具体出处,判断他究竟是凭借哪个特定组别获得了高权限,这实则都是为后续权限提升的分析铺路的关键侦察动作。

19、当前用户安全特权查阅

此指令用于展示用户可动用的特殊系统权限,例如调试程序、获取文件所有权等。指令:

whoami /priv

案例C:\\Users\\Administrator>whoami /priv执行后,将列出当前用户所拥有的系统特权(如 SeDebugPrivilegeSeTakeOwnershipPrivilege)及其状态。

image

image

**🎖️实战价值:**识别可供利用的高权限特权(如 SeDebugPrivilege 可用于进程注入),从而为权限滥用提供可能。

20、本机主机名获取

想要搞清楚当前这台电脑在网络里的称呼是什么,hostname这个指令就是干这个的,

hostname

敲下它再按回车,屏幕上就会蹦出一个类似 SRV-WEB-KIT 的名字,此乃其独一无二的网络名号。

image

image

这个看似不起眼的名字,实战价值却不容小觑,

比方说,在结构复杂的企业域环境中,想准确锁定某台特定主机的具体位置,就需要靠这个名号来指引,

此外,也存在将系统日志与此主机名进行交叉比对,用以追溯特定事件源头的情形,

当你准备远程连接到另一台电脑时,不管是启动远程桌面还是访问共享文件,先核对一下主机名,总能让你确保连上的就是目标机器,从而避免不必要的麻烦。

21、系统全面信息查阅

systeminfo该命令能够提供关于系统软硬件的非常全面的信息

systeminfo

运行后,诸如主机名、操作系统版本细节、安装时间、补丁列表,连同 CPU 与内存的配置、域归属信息、网卡 IP 等,都会被完整地呈现出来。

image

image

信息收集阶段,此乃核心指令,

首先是检视系统版本与补丁状况,这直接关联到是否存在尚未修复的已知弱点,好比永恒之蓝这类专攻特定系统的漏洞,

其次是评估硬件家底,看看内存和 CPU,掂量一下目标机器的性能,

还能确认机器是否归属于某个域环境,届时会显示出类似「域: lab.local」的字样,

最后就是搜集网络接口的 IP 及 DNS 信息,为后续规划渗透路径做好铺垫。

22、Windows 版本号速览

有时候你只想快速瞥一眼系统的内核版本号,不想动用systeminfo那么大的阵仗,

ver

这条指令就显得很方便,敲下去直接告诉你类似「Microsoft Windows [版本 10.0.14393]」这样的信息。

image

image

它的实战价值很明确,就是帮你迅速判断系统的大版本归属,究竟是 Win7,Win10,还是 Server 2012,毕竟不同版本面临的漏洞风险截然不同,一个典型案例就是 Win7 系统上的永恒之蓝。

23、操作系统详细信息获取

如果说ver只是粗看,那么wmic os get指令就是为了更精细的探查,

wmic os get caption,csdversion,osarchitecture,version

它能把操作系统的全称、补丁版本号、系统架构是 32 位还是 64 位,以及内核版本这些信息给拎出来。

image

image

该命令的价值在于,能够帮助测试人员精准判断系统类型、架构以及关键补丁情况,为后续漏洞利用工具的选择提供直接依据。

24、网络连接与端口状态检视

此指令用于显示所有网络连接、监听端口以及与之对应的进程 ID。指令:

netstat -ano

案例C:\\Users\\Administrator>netstat -ano执行后,将返回一份包含协议(TCP/UDP)、本地地址(IP: 端口)、外部地址、连接状态(如 LISTENING)以及进程 PID 的列表。

image

image

**🎖️实战价值:**用于发现开放的端口(如 80, 3389)、识别可疑的网络连接(例如,显示为 ESTABLISHED 状态但连接的是未知 IP)、以及通过 PID 定位具体的进程(可结合 tasklist 命令查找)。

25、已安装软件及版本查询

用于列出系统中通过 Windows Installer 安装的软件及其对应的版本信息。指令:

wmic product get name,version

案例C:\\Users\\Administrator>wmic product get name,version执行后,将返回诸如 “Python 3.13.4” 等已安装软件的名称及其版本号列表。

image

image

**🎖️实战价值:**查找存在已知安全漏洞的软件版本(例如,旧版本的 Chrome 或 Java),以便有针对性地选择相应的利用工具。

26、已安装杀毒软件检测

这指令专挖系统里装了啥杀毒软件或安全产品,

WMIC /Node:localhost /Namespace:\\\\root\\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List

案例C:\\Users\\Administrator>WMIC /Node:localhost /Namespace:\\\\root\\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List执行后,将可能返回:

displayName=Windows Defender displayName=火绒安全软件

它的实战意义很直接,摸清目标的防御部署,就能绕开那些容易被逮住的工具,譬如依据找出的杀软型号来调整你的免杀策略,

27、详细网络配置查阅

ipconfig给出的信息太基础,而下面这个指令能把网络适配器的全部家底都翻出来,

ipconfig /all

案例C:\\Users\\Administrator>ipconfig /all执行后,将返回包含主机名、IP 地址、子网掩码、网关、DNS 服务器、MAC 地址等在内的完整网络信息。

image

image

解析:它的价值在于信息收集,从 IP 能看出所属网段,从 DNS 信息有时能推断出域环境的存在,MAC 地址这种东西更是网络嗅探和欺骗的基础。这些零散的数据,实则都是为进一步的网络层面动作铺平了道路。

28、进程详细信息枚举

若说tasklist只是粗略一瞥,那tasklist /v就算得上是深入调查了,它揭示的进程信息要丰富得多,

tasklist /v

案例C:\\Users\\Administrator>tasklist /v执行后,将返回包含进程名称、PID、会话名称、内存使用情况、进程状态、运行用户名、窗口标题等详尽信息的列表。

image

image

实战中,人们用它来揪出异常进程,比如那些名字古怪或内存占用离谱的家伙,得到的 PID 更是关键线索,能结合netstat -ano去定位其网络活动,或者只是单纯确认一下杀软这类关键程序是不是还在正常干活,

29、已保存凭据查阅

这个命令的作用,是列出系统里缓存起来的那些登录凭据,像是远程桌面连接或者网络共享留下的痕迹,

cmdkey /l

案例C:\\Users\\Administrator>cmdkey /l执行后,将显示:

image

image

真正的战利品,在于获取目标机器缓存的敏感凭据,这可能是另一台机器的登录信息。此乃横向移动之捷径,让你不必再次破解密码就能接入网络中的其他设备。

30、启动远程桌面客户端

mstsc

敲下这个,Windows 自带的远程桌面连接工具就会弹出来,专门用来连接那些开放了 3389 端口的机器,

案例C:\\Users\\Administrator>mstsc执行后,将弹出 “远程桌面连接” 的图形化界面。

image

image

当命令行操作已无法满足需求,而又存在需要可视化界面进行操作之情形时,其价值尤为凸显,前提当然是目标机器的远程桌面功能处于开启状态。

31、启用远程桌面功能(开放 3389 端口)

通过修改注册表,将 “禁止远程桌面连接”(fDenyTSConnections)的值由 1 更改为 0(即允许),从而开启 3389 端口的监听。指令:

REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal\" \"Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

案例:成功执行后通常无返回信息(表示成功修改),若出现报错则可能为权限不足。

image

image

实战价值:在渗透过程中,可借此开启目标机器的远程桌面功能,以便后续使用 mstsc 进行远程控制。

在执行命令前

image

image

命令执行后,输入正确的账号密码即可使用本地的远程桌面连接

image

image

⚠️避坑指南:若连接仍失败,则尝试停止 Windows 防火墙,如下例所示

32、停止 Windows 防火墙服务

该命令用于停止 “Windows Defender 防火墙” 服务(服务的标识符是 mpssvc)。指令:

net stop mpssvc

案例C:\\Users\\Administrator>net stop mpssvc执行后,将显示:Windows Defender 防火墙服务已成功停止。

在执行该命令前,您会看到防火墙的开关选项

image

image

执行此命令后,您会发现防火墙的开关选项已消失,意味着防火墙已完全停止工作

image

image

🎖️实战价值::临时关闭防火墙,以解决远程桌面(3389)、文件共享(445)等端口被拦截导致连接失败的问题,确保网络通信畅通无阻。

33、降低远程桌面安全限制

通过修改三个注册表项,可以降低 RDP(远程桌面协议)的安全等级,具体做法包括:关闭安全层、禁用用户身份验证、以及固定协议版本。指令:

reg add \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp\" /v SecurityLayer /t REG_DWORD /d 0 /f & reg add \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp\" /v UserAuthentication /t REG_DWORD /d 0 /f & reg add \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp\" /v fAllowSecProtocolNegotiation /t REG_DWORD /d 0 /f

案例:执行后无返回信息,表示成功修改了这三个注册表项。

image

image

**🎖️实战价值:**用于解决远程连接过程中出现的 “认证失败” 问题(例如,旧版客户端无法连接新系统,或渗透工具不支持高安全级别协议)。

34、彻底关闭所有防火墙配置

该命令旨在禁用防火墙针对所有网络配置文件(包括域、专用、公用网络)的设置,从而完全关闭防火墙的防护功能。指令:

Netsh advfirewall set allprofiles state off

案例C:\\Users\\Administrator>Netsh advfirewall set allprofiles state off执行后,将显示:确定。

image

image

与 net stop mpssvc 命令的区别:

net stop mpssvc

此命令直接停止 “Windows Defender 防火墙服务”(服务名为 mpssvc),是从 “服务进程” 层面来关闭防火墙。(可以比作:直接关闭了防火墙的 “发动机”,整个防火墙程序停止运转。)

Netsh advfirewall set allprofiles state off

该命令通过防火墙的配置工具(netsh)来**禁用所有网络配置文件 **(域、专用、公用网络),但防火墙服务本身依然在后台运行。(可以比作:防火墙的 “发动机” 仍在运转,但所有的 “防护规则” 都被关闭,不再执行任何拦截。)

35、关闭远程桌面功能(禁用 3389 端口)

通过修改系统注册表,将 “禁止远程桌面连接” 的设置值定为 1,以此实现对 3389 端口监听的关闭。相应的指令操作如下:

REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal\" \"Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f

实际演示:执行此命令后,系统反馈应是无任何返回提示,这即意味着操作的成功,同时,尝试通过远程方式连接目标主机也将失效。

实战应用:在渗透活动告一段落后,此举可用于清理现场痕迹,即刻将远程桌面功用予以关闭,以防范他人进一步的滥用,从而有效降低目标系统遭受二次入侵的几率。

36. 探查工作站域配置详情

此命令用于呈现当前计算机作为工作站时所配置的网络信息,核心聚焦于 “登录的域” 以及 “域控制器” 等关键数据。其指令为:

net config workstation

实例:在命令提示符下输入 C:\\Users\\Administrator>net config workstation,系统将会回馈包含计算机名称、当前登录的域、域控制器的标识、所用的网络协议等一系列关于工作站配置的详尽信息。

image

image

**🎖️实战价值:**能够迅速地核实计算机是否已然加入某个域(通过查看 “登录的域” 是否显示为具体的域名),并知悉其域控制器的名称,进而判断该机器是否处于一个域管理的环境以及其域结构的概况。

37. 审阅域内所有用户账户

这个指令的作用,是把当前域里所有活跃的用户账户都列出来,

它必须在一个域环境里跑,而且执行者得有相应的查询许可,命令是这样的:

net user /domain

举个例子:一旦你敲下 C:\\\\Users\\\\Administrator>net user /domain,系统就会吐出一份清单,上面是域内所有的用户账户,像 adminuser1 这类名字,

image

image

实战意义:这步操作在域内信息搜集里挺关键的,能拿到一份完整的域用户名单,为后面可能会搞的暴力破解攻击,或是权限梳理(比方说,从名单里找出那些高权限用户)备好了至关重要的目标数据。

38. 探询特定域用户的详尽信息

这个命令是用来查单个域用户的具体权限情况,它的功能跟本地环境的 net user [用户名] 差不多,只不过查询范围扩大到了整个域,

指令格式是:

net user [域用户名] /domain

实例演示:输入 C:\\\\Users\\\\Administrator>net user admin /domain 这条指令之后,系统会反馈一些关于这个指定域用户的更细致信息,比如账户状态(开了还是关了)、密码什么时候过期、他属于哪些域组等等,

image

image

**🎖️实战价值:**依此可以有效判断目标域账户是不是激活状态,并摸清它是否归属于某个高权限的组别(像是 Domain Admins),这就给后续的提权或者横向移动过程中,如何挑选合适的目标账号提供了明确的指引。

39. 建立新域用户

此操作的目的,是在域里新添一个用户账户,这对执行者的权限有要求,必须是域管理员这个级别

另外,新设的密码也得满足域里头的密码策略,

指令如下:

net user [要创建的域用户名] [密码] /add /domain

案例:比如执行了 C:\\\\Users\\\\Administrator>net user hackuser P@ss123! /add /domain,系统会给出一个 “命令成功完成。” 的回显,

image

image

**🎖️实战价值:**在成功打进一个域环境后,可以利用这个方法建立一个类似后门的域用户账户(建议是把它放进低权限组,这样不容易被发现),为之后长期控制域内资源铺平了道路。

40. 变更域内用户的密码

此命令用于修改域内指定用户的密码,执行此操作需要具备域管理员权限,或者拥有相应权限的账号。指令格式为:

net user /domain [要修改的账号] [要设置的新密码]

案例:执行 C:\\Users\\Administrator>net user /domain hackuser NewP@ss! 后,系统将显示 “命令成功完成。” 的提示。

image

image

**🎖️实战价值:**在获得域用户账户的控制权后,可以借此更改其密码,以阻止原用户登录,或者用于重置那些遗忘密码的域账户,以便能够重新使用它们。

41. 移除域中的用户账户

此操作旨在从域环境中永久删除指定的某个用户账户,操作需要具备域管理员的权限。指令格式如下:

net user [要删除的账号] /del /domain

案例:当执行 C:\\Users\\Administrator>net user hackuser /del /domain 后,系统将显示 “命令成功完成。” 的提示。

image

image

**🎖️实战价值:**在渗透活动结束后,此命令可用于清理现场痕迹,即删除之前创建的后门域用户账户,从而避免日后被追踪到活动踪迹。

42. 获取域控制器信息

这个指令专门向目标域发起查询,把域控制器(DC)的详细数据给挖出来,要知道,DC 在域环境里扮演的就是核心服务器的角色。

# 第一种方式,需要先用 echo %userdomain% 来获取当前的域名 nltest /dsgetdc:[域名] # 第二种方式,直接使用内置变量 %userdomain% nltest /dsgetdc:%userdomain%

实例:若执行 C:\\>nltest /dsgetdc:company.com,系统会返回包含域控制器名称(例如 DC01.company.com)、其 IP 地址、所属站点以及操作系统版本等信息。

image

image

其实战意义,在于快速锁定域控这一关键渗透目标,其 IP 地址和配置细节,都为后续夺取权限的行动提供了不可或缺的情报支撑。

43. 审视域之间的信任关系

这个命令的功能是揭示域与域之间的信任结构,这其中可能牵扯到父子域的内在联系,也可能涉及不同林(Forest)之间的外部关系。

nltest /domain_trusts

敲下这个指令,系统反馈的就是一张信任关系网,告诉你当前域和其他域是 “双向信任” 还是 “单向”,以及信任对象的具体名号,

image

image

在那些盘根错节的复杂域环境里,攻击者恰恰可以顺着这条信任链条,实现从一个子域到其父域的渗透,攻击范围由此得以扩张。

44. 查看域控制器组成员

“Domain Controllers”, 此乃域内的一个内置组,所有域控制器的计算机账户都收纳于此。

net group \"domain controllers\" /domain

执行这条指令,能获得一份比 nltest 更周全的域内所有 DC 计算机账户的清单,

image

image

这份清单有助于确认域控的具体数量和名称,为筹划批量攻击或横向移动方案提供了坚实依据。

45. 列示所有可见的域

这条指令的用途,是把当前网络中能被探测到的各个域都列出来,那些存在信任关系的域自然也包括在内,

net view /domain

案例:在命令行中输入 C:\\>net view /domain,系统会返回当前网络中所有可访问的域的名称,例如 company.combranch.company.com 等。

image

image

依余之见,它能让人迅速摸清整个网络的域架构,判断是否存在总公司与分公司那样的多层域结构,为后续的跨域渗透行动做好情报准备。

46. 获取域的当前时间

通过它,你能从域控制器那里拿到域内的当前时间,因为通常域内所有机器的时间都必须和 DC 看齐,

net time /domain

案例:执行 C:\\>net time /domain 后,系统会显示 “当前时间是 2025/10/15 16:30:45”,并指明同步的域控制器名称。

image

image

这个操作有助于验证你和域控之间是否通路(能拿到时间就说明 DC 可达),同时也能规避因时间不同步引发的认证失败问题,尤其是对 Kerberos 票据这种极其依赖时间戳的机制而言。

47. 查看当前计算机的会话连接

这条指令的价值在于,它能显示出别的计算机通过网络(比如文件共享)连到你这台机器上的会话信息,

net session

执行后,一个包含远程会话的列表会呈现出来,里面记录着客户端的名字、IP 地址以及连接建立的时间,

image

image

它的作用是让你检查是否存在未授权的远程连接,并据此排查潜在的安全缺口。

48. 审视指定 IP 地址的共享资源

要用这个指令去枚举目标 IP 上开放了哪些共享资源,前提是你得有相应的访问权限,

net view \\\\[ip]

一旦执行,目标机器上所有可用的共享文件夹,比如 C$UsersShare 都会被列出,

这一下就能发现目标暴露的共享入口,特别是像 C$ 这种管理员隐藏共享,它为后续的文件访问、传输乃至植入后门都打开了一扇方便之门。

49. 列出同一网络中的计算机

这个指令的运作基础是 NetBIOS 协议,目的是把本地网络里所有在线的计算机都找出来,

net view

案例:在命令行中输入 C:\\>net view,系统会返回同一工作组或域中可见的所有计算机名称列表,例如 PC01SERVER02 等。

image

image

它能帮你快速发现网络中的其他活靶子,这些主机都可能成为下一步横向移动的潜在跳板,找到目标后,紧接着就可以用 net view \\\\[IP] 去看它的共享资源了。

50. 审阅域的账户策略

此命令用于查询域级别的账户安全规则,它与本地的 net accounts 命令不同,后者只针对单机,而此命令作用于整个域。指令为:

net accounts /domain

案例:执行 C:\\>net accounts /domain 后,系统将返回包含域密码策略(如最小密码长度、密码最长过期时间)以及账户锁定策略(锁定阈值、解锁时间)等详细配置信息。

image

image

实战用途:能够获取域中强制执行的密码规则(例如,是否要求密码复杂度,密码的有效期),这为进行密码爆破时生成符合规则的密码字典提供了指导,也可用于创建符合策略的新域后门账户。

51. 查询 AD 中的计算机账户

dsquery是 Active Directory(AD)的查询工具,此命令专门用于枚举域中所有的计算机账户,包括服务器和客户端设备。基础用法如下:

dsquery computer # 基础用法,查询所有域计算机;可加参数进行筛选 # 带有筛选条件的案例:查询位于 \"Servers\" OU (组织单位) 下,并且名称以 \"SRV\" 开头的计算机 dsquery computer \"OU=Servers,DC=company,DC=com\" -name \"SRV*\"

案例返回:会显示 AD 中计算机对象的完整路径,如 CN=SRV-WEB,OU=Servers,DC=company,DC=com

image

image

**🎖️实战价值:**可以批量地获取域内所有计算机的列表(比 net view 更为全面,因为它包含了 AD 中已记录但可能离线的主机),这有助于筛选出目标主机(如服务器、域控制器),为后续的横向渗透活动提供目标列表。

52. 查询 AD 中的联系人对象

想在活动目录里翻找那些没有登录权限的 “联系人” 条目,dsquery contact就是个直接的工具,

它们更像是通讯录,里面存着邮箱、电话这类东西,

dsquery contact # 基础用法,查询域内所有联系人 # 带有筛选条件的案例:查询名称中包含 \"Zhang\" 的联系人 dsquery contact -name \"*Zhang*\"

这条指令下去,返回的就是联系人在 AD 里的具体路径,类似CN=Zhang San,OU=Contacts,DC=company,DC=com这样,

它真正的价值在于信息搜集,比如摸清一个域内的人员构成,搞清楚谁在哪个部门,这些信息,对于构筑一个目标人物的侧写,或者绘制整个组织的架构图,都相当关键,

53. 查询 AD 中的用户组

dsquery group # 基础用法,查询所有域组

这个指令,它的任务是把 AD 里所有的域组都列出来,

无论是系统自带的那些高权限角色,像 Domain Admins,还是后来按需创建的业务分组,一个都跑不掉,

# 带有筛选条件的案例:查询名称中包含 \"Admin\" 的高权限组 dsquery group -name \"*Admin*\"

image

image

这个命令的厉害之处,就在于能让你迅速锁定那些握有最高权柄的组,譬如 Enterprise Admins 之流,一旦抓住了这些组,下一步顺藤摸瓜去查成员(用dsget group -members就行),离挖出管理员账号也就不远了。

54. 查询 AD 中的用户账号

至于dsquery user

但它比net user /domain要灵活得多,因为它能让你根据各种条件去过滤,比如账户是不是还活着(启用状态),或者按名字、按组织单位(OU)来找,

dsquery user # 基础用法,查询所有域用户 # 带有筛选条件的案例:查询所有处于启用状态的用户(排除已禁用的账号) dsquery user -enabled -name \"user*\"

实战中,这种精准筛选的能力,意味着存在一种可能性,即我们可以生成一个纯粹由 “活账户” 构成的列表,

这么一来,就避免了在后续的暴力破解环节中,对那些已经失效的账号白费力气,

要是再配上dsget user,还能把这些用户的邮箱、部门之类的细节给掏出来。

55. 查询 AD 中的子网对象

此命令用于查询 AD 中定义的 “子网” 对象,域管理员通常使用这些对象来划分网络站点(Sites)的配置。基础用法如下:

dsquery subnet # 基础用法,查询域内所有子网 # 带有筛选条件的案例:查询IP地址段为 192.168.1.0/24 的子网 dsquery subnet -name \"192.168.1.*\"

案例返回:会显示子网对象的完整路径,例如 CN=192.168.1.0/24,CN=Subnets,CN=Sites,CN=Configuration,DC=company,DC=com

**🎖️实战价值:**有助于理解域内网络的划分情况(例如,办公网段、服务器网段),这可以为渗透路径的规划提供指导(例如,优先攻击服务器所在的网段),或者用于定位特定网段内的域控制器或重要主机。

56. 查询 AD 中的服务器对象

此命令用于枚举在 AD 中注册的所有服务器对象,并且支持按 “角色” 进行筛选(例如,域控制器 DC、全局编录 GC、DNS 服务器等)。基础用法如下:

dsquery server # 基础用法,查询所有 AD 服务器 # 带有筛选条件的案例:查询域控制器服务器(指定服务器角色为 DC) dsquery server -domain company.com -role DC

案例返回:会显示域控制器在 AD 中的路径,例如 CN=DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=company,DC=com

**🎖️实战价值:**能够精确地定位域控制器、全局编录等关键服务器(其信息比 nltest 命令更全面),明确核心的攻击目标(例如,获取域控制器的权限就意味着掌控了整个域)。

56.1 说明

dsquery 系列命令的正常运行需要满足两个基本条件:首先,命令必须在域环境(域控制器本身或已加入域的计算机)中执行;其次,目标计算机上必须安装了 “Active Directory 域服务工具”。在 Windows Server 版本中,这些工具通常是默认安装的;而对于客户端操作系统,则需要通过 “控制面板 - 程序 - 启用或关闭 Windows 功能” 来添加 RSAT(远程服务器管理工具)组件。

若有需要,我很乐意为您整理一份 dsquery命令常用筛选参数对照表,其中将包含每个命令的关键参数(例如 -enabled-role)以及它们对应的使用场景,以便您能够快速地查询和应用。

57. 隐藏文件 / 文件夹(规避直接发现)

通过修改文件或文件夹的属性,可以将其设置为 “隐藏” 并附加 “系统” 属性。这样操作后,常规的文件管理器将无法显示它们。具体操作指令如下:

# 指令格式:attrib +h +s 目标文件/文件夹的路径 attrib +h +s C:\\backdoor.exe # 用于隐藏单个文件 attrib +h +s C:\\tools # 用于隐藏整个文件夹

image

image

解析+h 参数用于添加隐藏属性,+s 参数用于添加系统属性。要取消隐藏,可以使用 attrib -h -s 命令。如果需要查看这些隐藏的文件,则必须在文件管理器中开启 “显示隐藏的文件、文件夹和驱动器” 选项,并且取消勾选 “隐藏受保护的操作系统文件”。

58. 审视隐藏的进程(排查恶意程序)

标准的 tasklist 命令通常无法显示那些被隐藏起来的进程。此时,可以借助 wmic 命令来强制枚举系统中的所有进程,包括那些被异常处理过的进程。指令如下:

wmic process get name,processid,executablepath /format:list

image

image

**🎖️实战价值:**在进行应急响应时,此命令是排查那些 “进程管理器中看不到但实际在运行” 的恶意程序(例如木马、挖矿程序)的有效手段。通过 executablepath 参数,可以定位到进程对应的实际可执行文件路径。

59. 彻底删除文件(不进回收站)

del 这条指令删掉的东西,一般还能在回收站里找回来,

但这里要讲的,是让文件从磁盘上彻底消失,再也无法通过回收站捞回来的法子。

可以动用 rd 命令来处理目录,或者 del /f /q 都能办到。

# 1. 彻底删除单个文件(/f 参数强制删除,/q 参数静默执行,不弹出确认提示) del /f /q C:\\敏感文件.exe # 2. 彻底删除文件夹及其所有内容(/s 参数删除子目录及文件,/q 参数静默执行) rd /s /q C:\\敏感文件夹

执行这类指令前,路径务必看清楚了,这操作没法回头,万一删错了系统文件,机器可能当场就崩了,

60. 清除命令行历史记录(掩盖操作痕迹)

CMD 终端会把你敲过的命令都记下来,想不留痕迹,关窗口前就得手动把这些历史抹掉,这是避免被人顺藤摸瓜的关键一步。

指令如下:

# 清除当前 CMD 窗口内的命令历史记录 doskey /history >nul 2>&1 & doskey /reinstall

image

image

image

image

这背后的门道是,doskey /history 本来是看历史的,而 doskey /reinstall 则是重置它,相当于清空,

顺带一提,如果是在 PowerShell 环境,那指令就换成 Clear-History

61. 清除 DNS 缓存(解决域名解析异常)

改了 HOSTS 文件或者 DNS 设置,想让它立刻生效,尤其是在渗透测试的时候,

或者日常运维中碰上域名老是解析到旧 IP 的怪事,清除 DNS 缓存就能解决。

指令很简单:

ipconfig /flushdns

image

image

实战里,这招可以用来测试目标机器是不是能正常找到域控制器(例如 dc.company.com),也能用来洗掉攻击者可能动过手脚的 DNS 劫持配置,

62. 检测内网存活主机(快速扫描)

想快速扫一下内网里哪些机器还活着,比如从 192.168.1.1 到 192.168.1.255 这个段,

下面这行命令就能批量跑 ping 去探测。

# 批量ping检测存活主机(192.168.1.1-255网段) for /l %i in (1,1,255) do ping -n 1 -w 100 192.168.1.%i | findstr \"TTL=\"

此法的好处是能快速圈定内网里在线的主机,为后续的横向渗透备好一份目标清单,

与 nmap 这类工具相比,它的动静可能更小,不容易触发警报,毕竟扫描特征不那么扎眼。

image

image

63. 启用本地管理员账号(当默认禁用时)

如果碰上目标机器的本地管理员(Administrator)账户处在禁用状态的情形,

用下面的命令就能把它重新激活,甚至可以在不知道旧密码的情况下,直接给它换个新的。

# 启用Administrator账号 net user Administrator /active:yes # 重置密码(即使不知道原密码) net user Administrator NewPass123!

这个场景很明确,一旦本地管理员被禁用,就用这招把它启用并设上新密码,等于直接拿到了这台机器的最高控制权,

64. 利用计划任务实现权限提升

要搞个提权,一个常见的路子是创建一个高权限的计划任务,让它用 SYSTEM 的身份去跑命令。

# 创建一个名为 \"UpdateTask\" 的计划任务,配置为开机启动时执行 \"cmd.exe /c net user hackuser /add\" 命令 schtasks /create /tn \"UpdateTask\" /tr \"cmd.exe /c net user hackuser /add\" /sc onstart /ru system # 立即执行刚才创建的计划任务 schtasks /run /tn \"UpdateTask\"

其机理在于,这个任务会在系统启动时顶着 SYSTEM 的光环执行你塞给它的指令,拿来加个管理员账户或者运行后门程序再合适不过,

对于那些只有低权限却想拿到系统最高权限的场景,这招尤其管用。

**💡实战心得:**在实际对抗中,防御方会部署更高级的监控(如ETW、完整命令行审计)。针对这些深度防护,我们也有相应的对抗技巧,例如无文件执行、内存操作、日志篡改等,这些将在后续的进阶文章中探讨。

三、总结

梳理完这些命令会发现,Windows 内网里的大部分操作,其实靠系统自带的家伙什就足够了,

这感觉能应付八成以上的场景,不管是日常运维查问题,还是渗透测试挖洞,乃至应急响应里追查来源,都能 “按场景翻命令” 来搞定。

用这些命令的时候,脑子里得有两根弦绷着,

第一根弦,叫权限确认,这至关重要,像改账户、关防火墙这类操作,没管理员权限就别想了,查域信息则得域管理员出马,权限不够就瞎敲命令,除了报错啥也得不到。

第二根弦,叫事后清理,渗透搞完之后,必须把手尾收拾干净,比如删掉自己加的后门账户,恢复改过的防火墙设置,清掉 CMD 历史记录,不然人家一查就查到你头上了。

掌握这些命令的核心在于理解其应用场景而非死记硬背。

建议将本文作为速查手册,在授权环境中针对性地练习。

对于从事内网安全相关工作的专业人员而言,熟练运用这些原生命令,能够显著提升工作效率与在受限环境下的适应能力,是构建扎实基本功的重要组成部分。

← 五大主流数据库基础特性对比 WAF / 过滤绕过篇(进阶核心) →