.NET内网实战:通过 CryptoService 解密 Cookie 票据

01阅读须知

此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。

02基本介绍

本文内容部分节选自小报童《.NET 通过 CryptoService 解密Cookie票据》,完整的文章内容请加入小报童后订阅查看。现在限时只需69元,永久买断!目前已有300+位朋友抢先预定,我们会长期更新,对.NET内网安全的朋友们请尽快订阅该报刊!

03原理分析

在红队渗透活动中,目标站点的 Cookie 往往包含了身份权限等关键敏感信息。如果红队成功获取该 Cookie 并能解密其内容,将意味着能还原出用户的真实身份、可进一步伪造 Cookie 实现用户身份。而 .NET FrameWork 应用中使用最广泛的身份验证机制是 —— FormsAuthentication,它默认使用 .ASPXAUTH Cookie 来存储加密后的票据信息。

3.1 ASPXAUTH

.ASPXAUTH 是 .NET Forms 身份验证机制默认生成的 Cookie 名称,当用户登录成功后,一般情况下 .NET 会通过以下流程生成 .ASPXAUTH:

生成一个 FormsAuthenticationTicket 对象。
使用 machineKey 中的加密配置进行加密和签名。
将加密后的字符串写入名为 .ASPXAUTH 的 Cookie。
客户端在后续请求中自动携带该 Cookie,实现免登录访问。

    其值为一个经过对称加密 + HMAC 签名 的 FormsAuthenticationTicket 字符串。这个票据包含了如下字段信息:

    图片

    要想还原或伪造 .ASPXAUTH,红队至少还需要知道加密算法类型、签名以及对应的值,这些信息可以从web.config配置中找到。默认的 Cookie 名称可以通过 Web.config 修改,但 .ASPXAUTH 是最常见的默认名。

    3.2 加解密核心类

    在 .NET 的安全架构中,加密与验证是确保用户会话、数据完整性及机密性不可或缺的基础机制,微软通过 AspNetCryptoServiceProvider 构建加解密服务。

    图片

    虽然该类为 internal 类型,通常不直接暴露于开发者 API,但确是 ViewState 加密、Forms Authentication Ticket、EventValidation 数据结构等功能模块背后的关键支柱。本质上,该类是一个加密服务提供器,用于根据配置中指定的算法与密钥生成对称加解密服务。

    这些值通常来自于 .NET 配置文件的 machineKey 节点,具体可参考如下配置

    <machineKey
    validationKey="56AB7132992003EE87F74AE4D9675D65EED8018D3528C0B8874905B51940DEAF6B85F1D922D19AB8F69781B2326A2F978A064708822FD8C54ED74CADF8592E17"
    decryptionKey="A69D80B92A16DFE1698DFE86D4CED630FA56D7C1661C8D05744449889B88E8DC"
    validation="SHA1"
    decryption="AES"/>
    

    3.3 解密核心类

    在 .NET 中,AspNetCryptoServiceProvider 的主要职责是根据配置的密钥和算法,生成一个符合特定用途(Purpose)的加解密服务实例。而实现这一目标的关键方法就是 GetCryptoService 方法,该方法的定义如下所示。

    publicICryptoServiceGetCryptoService(Purpose purpose,CryptoServiceOptions options = CryptoServiceOptions.None)
    

    通过 Unprotect(byte[] protectedData),对数据进行解密,得到明文的Cookie结构,具体代码如下所示

    AspNetCryptoServiceProvider obj =newAspNetCryptoServiceProvider(strValidationKey, strValidationAlgorithm, strDecryptionKey, strDecryptionAlgorithm);
    ICryptoService cryptoService = obj.GetCryptoService(objPurpose, CryptoServiceOptions.CacheableOutput);
    var data = cryptoService.Unprotect(protectedData);
    

    我们以 Sharp4ASPXCookieDecrypt.exe 为例,该工具是基于此技术实现的Cookies解密工具,具体用法如下所示。

    图片

    综上 ,Cookie 的结构与加密机制往往是一个被忽略但极具攻击潜力的点。对于 .NET 而言,.ASPXAUTH 就是这样一个兼具隐蔽性与高价值的攻击目标。理解其加密机制、还原手段与防御策略,是每一位红队成员与防御者的必修课。

    04.NET 电子报刊

    我们的小报童电子报刊【.NET内网安全攻防】也开始运营,引入小报童也是为了弥补知识星球对于轻量级阅读支持的不足,为用户读者提供更佳的阅读体验。如果您对阅读体验的需求比较高,那么可以订阅这个专栏。

    本次电子报刊《.NET 内网安全攻防》专栏,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。

    1) .NET 安全防御绕过
    2) .NET 本地权限提升
    3) .NET 内网信息收集
    4) .NET 内网代理通道
    5) .NET 内网横向移动
    6) .NET 目标权限维持
    7) .NET 数据传输外发
    8) .NET 目标痕迹清理

    原价899,现在限时只需59元,永久买断!目前已有280+位朋友抢先预定,我们会长期更新,初步计划保持每周更新1-2篇新内容,对.NET内网安全的朋友们请尽快订阅该报刊!

    图片

     ​

    ​想要了解完整或者更多的内网安全方向的文章,可以移步订阅小报童《.NET 内网实战攻防》电子报刊,报刊地址:小报童

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    dot.Net安全矩阵

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值