域渗透实战常用指令

域渗透实战常用指令

先探测,再攻击

杀软相关

在提权或者任何操作之前,必须先看防病毒软件(AV/EDR)信息,以及当前用户有什么特权

#输入以下指令查看进程,然后去https://av.aabyss.cn/提交分析,得到当前终端EDR信息
tasklist /SVC

注意下终端的补丁状态,补丁打了多少,打到什么时间,现在Windows采用累积更新机制,新的补丁会包含过去补丁。

Get-HotFix | Sort-Object InstalledOn -Descending | Format-Table HotFixID, Description, @{Label="InstallTime"; Expression={$_.InstalledOn.ToString("yyyy-MM-dd HH:mm:ss")}} -AutoSize

HotFixID  Description     InstallTime
--------  -----------     -----------
KB5014032 Security Update 2023-01-07 00:00:00
KB5020372 Update          2023-01-07 00:00:00
KB5022282 Security Update 2023-01-07 00:00:00
KB5020872 Update          2023-01-07 00:00:00
KB5015684 Update          2023-01-07 00:00:00

注意时间戳,补丁时间如果非常新(2026年),说明常规的内核漏洞(如 2023-2025 年的 CVE)基本免疫,探测时应转换思路将重心转移到内网凭据翻找或域控配置漏洞利用上,更有机会打穿内网(如 ADCS 证书服务漏洞、Kerberoasting)。

提权相关

查看当前用户拥有的特殊权限(特权维持/提权分析)

# 检查当前用户是否拥有 SeBackupPrivilege, SeDebugPrivilege 等可以直接提权的特权
whoami /priv

列出当前终端运行的高权限进程

# 查看有哪些以 SYSTEM 或 Administrator 权限运行的第三方服务进程,可用于 DLL 劫持或服务路径不带引号漏洞提权
Get-CimInstance -ClassName Win32_Service | Where-Object {$_.StartMode -eq "Auto" -and $_.StartName -eq "LocalSystem"} | Select-Object Name, DisplayName, PathName | Format-Table -AutoSize

连接情况相关

查询当前域名、域控和当前登录的域用户.

# 最安全的自带环境变量查询(纯文本读取,不触发网络流量)
Write-Host "DomainName: $env:USERDNSDOMAIN"; Write-Host "DomainControl: $env:LOGONSERVER"; Write-Host "NowUser: $env:USERNAME"

一键列出当前域内的所有域控制器(Domain Controllers)

# 利用 .NET 接口直接向 DNS 提问,动作极轻,不调用 net.exe
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().DomainControllers | Select-Object Name, IPAddress, OSVersion

查询域内的信任关系(寻找跨域、父子域渗透机会)

# 检查当前域与其它域是否存在信任链
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().GetAllTrustRelationships()

实战中少用 net user /domainnet group "domain admins" /domain:这类传统的 net.exe 域查询指令,由于被各类木马和攻击脚本滥用,极易触发 EDR(如卡巴斯基、火绒企业版、CrowdStrike)的特征告警。实战中更推荐使用 PowerShell 方式进行静默查询[System.DirectoryServices](.NET 映射)

查看当前机器的所有网络连接及对应进程(寻找高价值连接)

# 寻找是否有管理员(Domain Admin)通过 RDP 或 SSH 连在当前机器上
Get-NetTCPConnection -State Established | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, @{Name="ProcessName";Expression={(Get-Process -Id $_.OwningProcess).Name}} | Format-Table -AutoSize

快速读取本地 ARP 缓存表(静默收集内网存活 IP)

# 不发送任何扫描探测包,只读本地缓存,看清内网有哪些连过的机器
Get-NetNeighbor -AddressFamily IPv4 | Select-Object IPAddress, LinkLayerAddress, State | Sort-Object IPAddress

查找内网共享文件夹(寻找敏感敏感敏感配置文件/密码本)

# 寻找当前机器上公开的共享资源
Get-SmbShare | Select-Object Name, Path, Description

一键列出系统凭据管理器(Credentials Manager)中的通用凭据

# 一般不被察觉单独使用
cmdkey /list

查看当前机器之前登录过内网的哪些机器

#这条指令会给出连接IP、使用用户名、连接时间
Get-ChildItem -Path "HKCU:\Software\Microsoft\Terminal Server Client\Servers" -ErrorAction SilentlyContinue | Select-Object Name, LastWriteTime

查看当前机器之前被哪些机器登陆过

#查询读取 Windows 事件日志(Event Log),正常操作不会告警
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational'; Id=1149} -ErrorAction SilentlyContinue | ForEach-Object { $xml=[xml]$_.ToXml(); [PSCustomObject]@{ Time=$_.TimeCreated; LoginUser=$xml.Event?.UserData?.EventXML?.Param1; Domain=$xml.Event?.UserData?.EventXML?.Param2; SourceIP=$xml.Event?.UserData?.EventXML?.Param3 } } | Format-Table -AutoSize

尽量先拥有BloodHound类似的地图或者文档,再梳理思路进行攻击,决定好攻击路径。

特殊账号

混合云同步账号 MSOL_

微软 Entra ID / Azure AD Connect 云同步新版账号(AAD_

#针对以上两种比较常见的特殊用户
([adsisearcher]"(|(samAccountName=MSOL_*)(samAccountName=AAD_*))").FindAll() | ForEach-Object { $_.Properties.samaccountname }

krbtgt_拥有局部的DCSync权限

#一键查询域内所有的组管理服务账户(gMSA)
([adsisearcher]"(objectClass=msDS-GroupManagedServiceAccount)").FindAll() | ForEach-Object { $_.Properties.samaccountname }

票据

黄金票据是作为域渗透的收尾,而不是攻击手段,那时候已经拿到了krbtgt的哈希拿下域控了。

posted @ 2026-09-02 23:46  枯琴  阅读(2)  评论(0)    收藏  举报