找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1603

积分

0

好友

209

主题
发表于 昨天 17:53 | 查看: 8| 回复: 0

引言

在一次省级网络安全攻防演练(“省护”)中,作为攻击方(红队)成员,我们经历了一次从外部突破到内网深度渗透的完整过程。其中涉及两个独立的攻防场景:一个因先前的攻击痕迹导致目标警觉,但在迂回攻击后通过定位双网卡主机成功横向移动;另一个则直接发现了大规模敏感数据泄露。本文将复盘核心的攻击路径、技术细节与工具使用。

第一阶段:某企业单位内网渗透

初始突破与困境

攻击伊始,我们获得了一个已存在已知漏洞(NDay)WebShell的目标系统入口。通过该Shell执行 ipconfig 命令后,发现主机处于一个较大的 10.x.x.x 内网网段中,通常这意味着其背后存在一个规模可观的内网环境。

一个值得注意的细节是,目标服务器的Web目录下已被上传了大量WebShell文件,这表明系统可能已被多方攻击者“光顾”。更令人意外的是,目录中还存在一个名为 fscan64.exe 的内网扫描工具,疑似由其他攻击者在近期遗留。

当我们尝试使用Cobalt Strike(CS)进行持久化控制时,发现该主机无法出网,直接上线受阻。因此,我们决定先利用已有的WebShell执行命令,上传 fscan 工具对内网B段资产进行初步探测。扫描结果发现了大量弱口令及未授权访问的Redis服务。

然而,在准备进行深入利用时,目标Web站点突然无法访问,疑似因安全设备告警或管理员干预而被关闭。这使得我们暂时失去了通往这个充满弱口令的内网区域的跳板。

HTTP隧道突破网络限制

面对失守的入口,我们决定使用HTTP隧道工具维持访问。这里选择了 Neo-reGeorg,它是reGeorg的升级版,支持内容加密、请求头定制、响应码伪装等特性。

其使用流程如下:

  1. 在本地生成隧道服务端文件(即WebShell)。一个实用的技巧是使用目标站点本身的404错误页面作为模板,生成访问时返回404状态码的WebShell,具有较好的隐蔽性。
    python3 neoreg.py generate -k your_password --file 404.html --httpcode 404
  2. 将生成的隧道文件(如 tunnel.jspx, tunnel.php 等)上传至目标Web服务器可访问的路径。
  3. 在本地启动Neo-reGeorg客户端,连接远程的隧道文件,并开启一个本地SOCKS5代理端口。
    python3 neoreg.py -k your_password -u http://target.com/path/tunnel.aspx -p 1081

    命令执行后,会启动一个监听在 127.0.0.1:1081 的SOCKS5代理服务器。

  4. 在渗透测试工具(如Proxifier)中配置代理为 SOCKS5://127.0.0.1:1081,即可将流量通过该隧道转发至内网。

不幸的是,在我们刚刚配置好代理并尝试访问内网其他Web服务时,目标站点彻底下线,此路中断。这很可能是因为遗留fscan的先前攻击者完成了内网渗透并提交报告,导致防守方全面关停系统。

二次突破与权限提升

首战受挫后,我们转向信息收集,寻找该企业的其他边缘资产。很快发现了一个带有登录和注册功能的管理系统。前端的注册按钮已被替换为JavaScript弹窗提示“注册已经关闭。”。

通过分析页面F12中的JavaScript文件,我们找到了被隐藏的注册接口逻辑。该逻辑会通过AJAX请求验证手机号是否已注册,核心代码片段如下:

function checkmobile() {
    var mobile = $("#usMobile").val();
    var phone = /^1[3-9]\d{9}$/;
    if (phone.test(mobile)) {
        $.ajax({
            async: false,
            cache: false,
            url: '../zsuserCount' + mobile,
            type: "GET",
            dataType: "json",
            success: function(data) {
                if (data.total == "0") {
                    $("#mobilelabel").css("color", "green");
                    $("#mobilelabel").html("您的手机号码可用");
                    mobilecheck = 1;
                } else {
                    $("#mobilelabel").css("color", "red");
                    $("#mobilelabel").html("手机号码已被注册,请重新输入");
                    mobilecheck = 0;
                }
            }
        });
    }
}

通过分析网站URL规律(登录接口为 sys_login.aspx),我们尝试构造了 sys_register.aspx 等疑似注册接口进行请求。虽然直接访问返回“注册已经关闭”,但通过Burp Suite拦截修改前端发出的合法请求,我们成功触及了后端真实的注册逻辑。

在构造的注册POST请求中,我们发现了一个敏感参数 role

POST /in.aspx?sp=3529
...
Action=post&s=&role=1&name=test&pwd=Password123&mobile=13xxxxxxxxx&code=zzro&func=Regist

role 参数值修改为1后,成功注册了一个管理员权限的账户。这是一个典型的“不安全的直接对象引用”(IDOR)漏洞,通过篡改请求参数获得了超出预期的权限。

凭借管理员权限进入后台,寻找并利用了一个文件上传点,结合图片免杀技术上传了WebShell,成功获得该系统的控制权。通过哥斯拉(Godzilla)连接,确认这台新主机能够出网,这为我们后续的内网渗透提供了理想的跳板。

第二阶段:内网横向移动

内网探测与权限维持

通过哥斯拉的提权插件,我们将权限提升至 NT AUTHORITY\SYSTEM。随后使用 frp 工具进行内网穿透,在VPS与内网主机之间建立了一条稳定的通道。

在登录这台主机的远程桌面(RDP)准备开展内网工作时,发现其IP段为 10.8.x.x,而最初获得WebShell的那台主机在 10.9.x.x 段。两个网段无法直接通信,存在网络隔离。此时,渗透的核心目标转变为:寻找一台同时连接这两个隔离网段的“双网卡主机”,以其作为枢纽,跳转至资源丰富的 10.9 网段。

在通过RDP登录这台Windows Server 2016主机时,由于系统版本较高,mimikatz 无法直接抓取明文密码。因此采用添加用户的方式登录,命令如下:

net user test$ Password123 /add
net localgroup administrators test$ /add

这里有两个技巧:

  1. 用户名后添加 $ 符号可以创建一个在“本地用户和组”管理中默认隐藏的用户。
  2. 如果 net 命令执行异常,可以尝试使用 net1 命令替代。

双网卡主机发现

我们在这台 10.8 网段的主机上再次使用 fscan 进行扫描,发现该网段主机数量较少且弱口令不多。在手工检查主机文件时,发现了一个名为 sa.txt 的醒目文件,其中记录了一些数据库等服务的口令。利用这些口令进行密码喷洒,成功通过SSH登录了另一台主机。

执行 ifconfig 命令后,收获惊喜:该主机果然配置了双网卡,同时拥有 10.8.x.x10.9.x.x 两个网段的IP地址。这正是我们梦寐以求的“跳板”。

多层代理与横向移动

为了通过这台双网卡主机访问 10.9 网段,我们搭建了多层 frp 代理隧道。其架构如下:

攻击者 (Hacker) -> VPS (frps) -> 第一台内网主机 (10.8段, frpc) -> 双网卡主机 (frps) -> 目标10.9网段主机 (frpc)

在双网卡主机上运行 frp 服务端,使其成为连接 10.810.9 网段的桥梁。然后在 10.9 网段的其他主机上运行 frp 客户端,将端口代理到双网卡主机上。

最终,在本地攻击机上通过 Proxifier 等工具配置多层SOCKS5代理链,即可畅通无阻地访问 10.9 网段的所有资源。然而,正当我们准备大展拳脚时,被告知该目标单位已因前期攻击出局,行动终止。

第三阶段:某医院系统渗透与数据泄露

快速突破

在另一个针对某医院的目标中,突破口来自其微信小程序。在抓包测试过程中,Burp Suite的被动扫描插件提示了 Shiro反序列化漏洞

简单来说,Shiro框架在启用“记住我”功能时,会使用一个硬编码在源码中的AES密钥对用户身份信息进行序列化、加密和Base64编码后存入Cookie。攻击者一旦获取到这个默认密钥,就能构造恶意的RememberMe Cookie,服务器在解密反序列化时便会执行其中的代码,从而实现远程命令执行。我们使用现成的漏洞利用工具,直接获取了目标服务器的Shell权限。

重大数据泄露发现

进入系统后,我们发现这台服务器上存有大量敏感数据文件。经过检查,文件中包含公民的姓名、身份证号、联系方式、医疗记录等个人信息。此类文件数量众多,经估算,涉及的个人信息条数超过一百万。这是一个极其严重的敏感数据泄露事件。

该主机系统为Windows Server 2008,我们使用 mimikatz 成功抓取到了明文密码,并通过RDP登录进行更深度的调查。

内网横向与密码喷洒

同样使用 frp 建立隧道进入内网。在内网渗透中,密码收集是横向移动的关键。我们采用了多种方式收集密码:

  1. 使用 BrowserGhost.exe 等工具导出浏览器中保存的密码。
  2. 查找Navicat等数据库管理工具的连接配置,解密或读取保存的数据库口令。
  3. 仔细检查桌面文档、回收站、各类配置文件(如 sa.txtconfig.ini 等)。

收集到的密码被整理成字典,结合 fscan 扫描出的主机和端口信息,使用“超级弱口令”等工具进行高效的密码喷洒攻击。虽然 fscan 默认不扫描RDP弱口令,但我们可以先用其扫描开放3389端口的主机列表,再导出给专门的工具进行爆破。

通过持续的“收集密码-喷洒-获取新主机-再收集”的循环,成功横向控制了数十台内网主机。整个内网渗透工作展现了在没有域环境的情况下,通过细致的密码管理和利用,同样可以实现大范围的横向移动。

总结与反思

本次省级攻防演练涵盖了从外部打点、权限维持、隧道穿透、横向移动到数据窃取等多个渗透测试环节。其中几个关键点值得总结:

  1. 入口点选择:在第一个目标中,由于前人攻击痕迹导致站点关闭,提醒我们在实战中动作需更迅速、隐蔽,并应优先建立多个稳固的后门。
  2. 隧道技术:在主机不出网的情况下,HTTP隧道(如Neo-reGeorg)是维持访问的有效手段。配合流量伪装技巧,能有效延长生存时间。
  3. 参数篡改:第二个突破点源于对 role 参数的篡改,这要求我们在测试过程中对请求包中的所有参数保持敏感,特别是那些与权限、身份相关的字段。
  4. 双网卡主机:在网络隔离的内网中,定位双网卡或多宿主主机是实现跨网段横向移动的战略性突破口。信息收集时应重点关注网络配置。
  5. 密码管理:内网渗透在无域环境下,很大程度上依赖于密码喷洒。从浏览器、配置文件、数据库连接工具、文档中系统性地收集密码,能极大提升横向效率。

整个演练过程既是对技术能力的检验,也体现了红队作战中耐心、细致和策略的重要性。每一次实战都是对防御体系的有效测试,旨在共同提升整体的安全水位。

参考资料

[1] 一次省护红队的经历(100w公民信息泄露+找到双网卡主机—>内网沦陷), 微信公众号:mp.weixin.qq.com/s/gIZPFOPyNu0gilsNDRRgjw

版权声明:本文由 云栈社区 整理发布,版权归原作者所有。




上一篇:OpenClaw搜索功能配置指南:为AI Agent赋能Tavily与Exa搜索方案
下一篇:OpenAI波兰裔工程师:揭秘推动GPT-4与o1模型的关键技术贡献与团队演变
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-25 07:36 , Processed in 0.388653 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表