SilverSamlForger:一款针对Silver SAML的安全研究工具

admin 2025年1月1日11:27:22评论10 views字数 3683阅读12分16秒阅读模式
SilverSamlForger:一款针对Silver SAML的安全研究工具
关于SilverSamlForger

SilverSamlForger是一款针对Silver SAML的安全研究工具,该工具可以帮助广大研究人员创建自定义 SAML 响应,并可用于研究和分析 Silver SAML 威胁。

SilverSamlForger:一款针对Silver SAML的安全研究工具

工具要求

C#

Visual Studio

工具安装

广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/Semperis/SilverSamlForger.git

然后打开Visual Studio,将项目导入并针对不同的操作系统平台进行代码构建即可。

工具使用

组织可以监控 Entra ID 审计日志,以了解 ApplicationManagement 下 PreferredTokenSigningKeyThumbprint 的更改。我们需要将这些事件与与服务主体相关的添加服务主体凭据事件关联起来,其中过期证书的轮换是一个常见的过程,因此我们需要确定审计事件是否合法。除此之外,还可以实施变更控制流程来记录轮换有助于最大限度地减少轮换事件期间的混乱。

该工具需要一组参数才能生成 SAML 响应。有两个选项可用:

1、手动传递参数;

2、使用一个JSON文件传递参数;

支持传递的参数如下:

--pfxFile  - 指定 pfx 文件的路径。--pfxPassword  - 指定 pfx 文件的密码。--idpid  - 身份提供者标识符。--recipient  - SAML 响应中的接收者。--subjectnameid  - SAML 响应中的 subjectNameID。--audience - SAML 响应中的接收方。--attributes- SAML 响应中断言内的属性/声明,采用键、值格式。

运行示例:

SilverSAMLForger.exe generate --pfxPath C:pathtocertificate.pfx --pfxPassword mycertpassword --idpid https://myidpid.com --recipient https://thesamlrecipient.com/sso/saml2/random --subjectnameid [email protected] --audience https://someaudience.com/saml2/service-provider/example --attributes http://schemas.microsoft.com/identity/claims/tenantid=<tenantID>,http://schemas.microsoft.com/identity/claims/objectidentifier=<objectID>,http://schemas.microsoft.com/identity/claims/displayname=<displayName>,http://schemas.microsoft.com/identity/claims/identityprovider=<identityProviderID>,http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress=<targetEmail>,http://schemas.microsoft.com/claims/authnmethodsreferences=http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password,http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname=<GivenName>,http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname=<SurName>,<AnythingYouWant>=<AnyValue>

生成的JSON样例文件

{    "pfxPath": "C:\Path:\To\Certificate.pfx",    "pfxPassword": "<Password>",    "idpid": "<IdpId>",    "recipient": "<Recipient>",    "subjectnameid": "<SubjectNameID>",    "audience": "<Audience>",    "attributes": {        "http://schemas.microsoft.com/identity/claims/tenantid": "<TetnantID>",        "http://schemas.microsoft.com/identity/claims/objectidentifier": "<ObjectID>",    "http://schemas.microsoft.com/identity/claims/displayname": "<DisplayName>",        "http://schemas.microsoft.com/identity/claims/identityprovider": "<IdPID",        "http://schemas.microsoft.com/claims/authnmethodsreferences": "http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password",        "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "<GivenName>",        "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname": "<SurName>",        "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress": "<Email>",        "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": "<Name>"    "<Anything>" : "<Anything>"}

使用 generateJSON 命令,我们可以生成一个 SAML 响应,该响应从 json 中加载参数。它需要按如下方式构建:

SilverSAMLForger.exe generateJSON --jsonFile path_to_json_file.json

输出是 base64 和 URL 编码的 SAML 响应。

工具输出结果

SilverSamlForger:一款针对Silver SAML的安全研究工具

安全防御建议

为了有效防范 Entra ID 中的 Silver SAML 攻击,组织应仅将 Entra ID 签名证书用于 SAML 签名目的。其中,SAML 签名证书存储在 Entra ID 中 SAML 应用程序的服务主体中。我们可以使用 Microsoft Graph API 查看有关签名密钥公开的信息,只需向以下 URI 发出 GET 请求即可:

https: //graph.microsoft.com/beta/servicePrincipals/{serviceprincipalobjectid}

组织可以审核 SAML 配置的现有服务主体并检查 displayName。如果当前使用的证书是由 Microsoft 生成的,则该证书将包含值 CN=Microsoft Azure Federated SSO Certification。

暴露信息示例

请注意,私钥材料需要设置为不可导出,这样才可以阻止威胁行为者者收集发起 Silver SAML 攻击所需的信息。

{            "customKeyIdentifier": "Gk//vUF/JYC58HRyyuGMM5ydmOuJVUL74R6OszKQn6w=",            "endDateTime": "2026-08-08T14:19:35Z",            "keyId": "66ad0fe4-111d-45da-924c-545913d77be9",            "startDateTime": "2023-08-08T14:19:36Z",            "type": "AsymmetricX509Cert",            "usage": "Sign",            "key": null,            "displayName": "CN=Microsoft Azure Federated SSO Certificate",            "hasExtendedValue": null        }
许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

SilverSamlForger

https://github.com/Semperis/SilverSamlForger

原文始发于微信公众号(FreeBuf):SilverSamlForger:一款针对Silver SAML的安全研究工具

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月1日11:27:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SilverSamlForger:一款针对Silver SAML的安全研究工具https://cn-sec.com/archives/3580514.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息