网络安全实战:内网渗透入门——横向移动、凭据窃取、域环境概览
前言城墙之后的黑暗森林对于很多刚入门的网络安全从业者来说攻克外网Web服务器往往是激动的最高时刻。当你看到那个黑色的CMD窗口在屏幕上弹出或者Webshell管理界面里那个绿色的“连接成功”指示灯亮起你觉得自己赢了。但在我这样的红队老兵眼里那仅仅是一场战役的序幕。甚至可以说那只是站在了真正的战场门口。Web服务器通常位于DMZ区隔离区它就像城堡的门房。你攻破了门房但你真正想要的财宝——核心数据库、域控服务器、机密文档——都深藏在城堡内部的豪宅里。这就是内网渗透。内网是一个完全不同的世界。在外网你是幽灵你可以利用无数个入口在内网你是入室抢劫的盗贼你身处敌人的领地每一根神经都要紧绷。这里有复杂的域环境、千丝万缕的信任关系、以及时刻盯着你的杀毒软件和流量审计设备。本文将带你走进这座“黑暗森林”以实战的视角拆解域环境、凭据窃取与横向移动的底层逻辑。第一章 域环境概览理解战场的地形在切入内网之前你必须先搞清楚“地形”。在国内的企业环境中90%以上的内网都是基于Windows域构建的。1.1 工作组 vs 域丛林法则 vs 中央集权很多初学者只接触过自己的个人电脑那是“工作组”模式。每一台电脑都是独立的王国管理员密码只在本地有效。要想进隔壁电脑你得知道隔壁电脑的密码。这就像原始丛林各自为战。而“域”则是高度组织化的中央集权。在一个域里有一台至高无上的服务器叫做域控制器。它掌管着所有加入域的电脑和用户的账号密码。当你在域内的任意一台电脑上输入用户名密码登录时你的电脑并不是去查自己的本地数据库而是把你的凭据封装好发给域控制器问“老大这个人的票是真的吗让他进吗”域控制器核对无误后发放一张“通行证”你才能登录成功。这给攻击者带来了什么集中式攻击面攻破了域控制器就等于拿到了整个内网所有电脑的最高权限。这是“擒贼先擒王”的最高境界。信任链域内的机器天然信任域控制器甚至信任域内的其他机器。这种信任关系就是我们横向移动的跳板。1.2 域内的核心角色在实战中你必须识别出以下关键角色DCDomain Controller域控制器。终极目标。通常运行着DNS服务、NTP服务、Kerberos认证服务。一旦拿下DC你就可以对整个域发号施令。KRBTGT 账户这是域内最特殊的账户它是Kerberos服务的服务账户。它的密码哈希值是伪造“黄金票据”的原材料。拥有了它你可以在域内永生。域管域控制器上的本地管理员。他们可以在任何机器上做任何事。我们的终极目标就是获取他们的权限。本地管理员每台电脑上还有一个本地管理员。虽然他在域里地位不高但他可以控制这台机器抓取这台机器上所有登录过的域用户的密码。第二章 凭据窃取寻找打开监狱的钥匙在内网里权限就是货币。你有了Webshell只是拿到了一把低权限的钥匙。要想横向移动你必须搜集更多的“钥匙”。2.1 为什么要窃取凭据在内网渗透中我们很少直接去破解明文密码除非那是弱口令。因为现在的密码策略都很强破解太慢。我们窃取的是Hash哈希。在Windows中密码不会以明文存储而是存储为Hash值。如果你拿到了Hash你不需要解密出明文就可以直接利用它去认证其他机器。这就是著名的**PTHPass The Hash哈希传递**攻击。2.2 LSASS内存里的金库这是内网渗透最核心的知识点。当你在Windows上登录成功后为了方便下次操作比如访问网络共享文件系统会将你的凭证缓存在内存中。这个内存区域由一个进程守护它叫LSASS.exe本地安全机构子系统服务。只要你拿到了系统的 SYSTEM 权限哪怕是本地管理员你就可以把刀伸进LSASS的肚子里把里面的Hash掏出来。实战利器Mimikatz这是内网渗透的“瑞士军刀”。mimikatz.exeprivilege::debugsekurlsa::logonpasswordsexit这条命令的经典程度不亚于任何一段黑客代码。privilege::debug提升权限获取调试内核进程的权限。sekurlsa::logonpasswords从LSASS进程内存中提取所有登录过的用户密码和Hash。如果你看到输出里出现了NTLM哈希甚至直接出现了明文密码恭喜你你拿到了通行证。对抗杀软现在的杀软见到Mimikatz就像见到杀父仇人。直接运行必死无疑。实战中我们通常使用白名单程序加载Mimikatz如procdump导出lsass.dmp后本地离线抓取或者使用CSCobalt Strike内置的hashdump功能或者使用免杀的C#重写版本。2.3 SAM 数据库本地的保险柜除了内存Hash还睡在硬盘里。Windows的SAM数据库存储了本地账户的Hash。你可以使用reg save命令导出注册表中的SAM和SYSTEM文件然后离线解密。但这只能拿到本地用户的Hash拿不到域用户的。2.4 顺手牵羊配置文件与历史记录很多时候最危险的不是系统本身而是用户的习惯。Navicat、PLSQL等数据库管理工具它们的连接配置文件里往往存着连接数据库的密码。浏览器Chrome、Edge的密码管理器里存着用户的Web登录密码。RDP历史注册表里可能存着之前远程桌面连接过的IP地址甚至用户名。最近打开的文档可能指向某个敏感的共享文件服务器。作为攻击者拿到一台机器后不要急着跑工具先像侦探一样翻翻这些“垃圾桶”往往有意外的惊喜。第三章 横向移动在迷宫中跳跃当你手里握着抓来的Hash和密码你就要开始移动了。横向移动就是从一台受控机器跳到另一台高价值机器的过程。3.1 IPC$ 与计划任务最朴素的跳板这是最基础但也最常用的手法。IPCInternetProcessConnection是Windows为了共享资源而开放的管道。如果你有目标机器的管理员Hash你可以建立一条IPCInternet Process Connection是Windows为了共享资源而开放的管道。如果你有目标机器的管理员Hash你可以建立一条IPCInternetProcessConnection是Windows为了共享资源而开放的管道。如果你有目标机器的管理员Hash你可以建立一条IPC通道。实战步骤建立连接net use \\192.168.1.10\ipc$ password /user:username上传恶意文件将我们的后门程序拷贝到目标机器的某个目录如C盘。创建计划任务利用schtasks命令让目标机器在特定时间运行我们的后门。schtasks /create /s 192.168.1.10 /tn update /tr c:\shell.exe /sc onstart /f /ru system这种方式简单粗暴但动静大容易被日志记录。而且如果你在流量侧没有加密IPC$传输的文件会被防火墙轻易识别。3.2 PsExec经典但噪杂的战车PsExec是Sysinternals套件里的工具它允许你在远程机器上执行命令。原理它会将一个名为PSEXESVC的服务上传到目标机器启动服务通过管道执行命令然后回显结果。虽然好用但缺点明显需要开启Admin$共享很多企业会关闭。会留下明显的服务日志。需要交互式登录容易触发敏感的报警。3.3 WMI无声的幽灵WMIWindows Management Instrumentation是Windows管理规范它是系统内置的通常不会被禁用。相比于PsExecWMI不需要上传文件到目标磁盘直接在内存中执行。这就是所谓的“无文件攻击”。实战指令wmic /node:192.168.1.10 /user:admin /password:pass process call createcmd.exe /c whoami更高级的玩法是结合PowerShell和MOF托管对象格式文件进行持久化控制。WMI是红队最喜欢的横向移动方式之一因为它隐蔽且系统原生支持。3.4 WinRMHTTP协议的伪装者WinRMWindows Remote Management是基于WS-Management协议的。默认监听5985HTTP和5986HTTPS端口。很多企业为了方便运维会开启WinRM。对于攻击者来说这简直是福音。因为5985端口看起来像是一个Web端口很容易被忽视。利用winrs命令即可远程执行winrs -r:http://192.168.1.10:5985-u:user-p:passcmd /c whoami这就像是在用HTTP协议进行远程控制流量极具伪装性。3.5 PSEXEC 的高阶版服务执行如果你拿到了域管Hash想批量控制全网的机器你可以通过SCService Control命令远程创建服务。这比计划任务更底层也更难被普通运维人员察觉。第四章 代理与转发打通隧道的命脉很多新手会遇到一个问题我拿下了Web服务器能Ping通内网其他机器但是我手里的攻击工具在 我的笔记本 上运行连不上内网的目标。为什么因为你的电脑和目标内网是不通的中间隔着防火墙和路由器。Web服务器是唯一的中转站。你需要做端口转发或代理。4.1 正向连接 vs 反向连接正向你在目标机器开一个端口你去连它。如果目标在内网深处你连不上。反向你在自己的机器或VPS开一个端口让目标机器来连你。这是内网穿透的核心。4.2 MSF 与 CS 的代理方案MSF (Metasploit Framework)在MSF中获得Shell后你可以添加路由run autoroute -s 10.10.10.0/24这样MSF的所有模块都可以通过这个Session跳转去攻击内网其他网段。这是最方便的“一层代理”。Socks代理如果我想用我自己电脑上的Nmap去扫内网MSF提供了socks4a或socks5代理模块。开启代理后配合proxychains工具就能让任何工具都通过这台肉鸡去访问内网。proxychains nmap -sT -Pn 10.10.10.5多层代理如果内网很大分了核心区、办公区、生产区你可能需要“嵌套”。Web服务器 - 核心区服务器 - 生产区服务器。这就需要配置链式代理像接力赛一样把流量一层层传进去。这在实战中非常考验耐心一旦断了一环整个隧道就塌了。第五章 结语看不见的战争内网渗透是一场关于耐心和逻辑的战争。它不像外网Web渗透那样充满了各种花哨的Payload和绕过技巧。内网渗透更多时候是枯燥的你要分析复杂的网络拓扑要一遍遍尝试抓取的Hash要小心翼翼地避开杀毒软件的探头要在日志的缝隙中求生存。从信息收集开始绘制网络地图通过凭据窃取积累手中的筹码利用横向移动一步步逼近核心最后在域控制器上插上胜利的旗帜。这是一个收敛的过程。从最初的迷茫到最后的掌控全局。但我必须最后提醒一句权限越大责任越大。内网往往承载着企业的核心命脉。一个误删文件的命令一个死循环的进程都可能导致严重的生产事故。在实战演练中我们追求的是“控制权”而不是“破坏力”。