一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于内存镜像离线提取DPAPI密钥的方法和系统与流程

2022-03-23 02:39:25 来源:中国专利 TAG:

session list和logon session count;在lsasrv.dll内存范围分别以对应系统版本decrypt key sign表的标志位的不同偏移进行search sign apply offset操作获取16字节的iv和key3des,对key3des进行search sign apply offset操作获取key aes;
28.解密单元:配置用于根据cache master key、key3des、key aes和iv解密获得各个logon session对应的master key。
29.在一些具体的实施例中,search sign apply offset操作具体为:搜索标志位,获取一位置sign base,偏移sign offset字节,以小端格式读取4字节无符号长整数记做offset,结果为sign base sign offset 4 offset。
30.在一些具体的实施例中,logon session sign表中一个系统版本的标志位对应存在偏移0和偏移1两个偏移信息。
31.在一些具体的实施例中,偏移处理单元中具体包括:
32.在lsasrv.dll内存范围以对应系统版本logon session sign表的标志位,偏移0作为sign offset进行search sign apply offset操作,获取logon session address list,再根据logon session结构获取登录会话列表的信息logon session list;
33.在lsasrv.dll内存范围以对应系统版本logon session sign表的标志位,偏移1作为sign offset进行search sign apply offset操作,获取logon session count。
34.在一些具体的实施例中,decrypt key sign表中一个系统版本的标志位对应存在偏移0、偏移1和偏移2三个偏移信息。
35.在一些具体的实施例中,偏移处理单元中具体包括:
36.在lsasrv.dll内存范围以decrypt key sign表的标志位中偏移0作为sign offset进行search sign apply offset操作得到16字节的iv;
37.在lsasrv.dll内存范围以decrypt key sign表的标志位中偏移1作为sign offset进行search sign apply offset操作得到decrypt key结构中的decrypt handle address,再根据decrypt key结构读取得到一个密钥key3des;
38.将sign offset替换为decrypt key sign表对应的偏移2,重复进行search sign apply offset操作,得到key aes。
39.本发明提出了一种基于内存镜像离线提取dpapi密钥方法和系统,无需依赖于目标数据源所在的操作系统,无需知道计算机的用户名和密码,即可对dpapi系统存储区和用户存储区的加密数据的密钥进行提取和解密,同时也满足对证据源只读操作和跨平台解密的需求。通过加载内存镜像,获取到的dpapi密钥字段,再调用解密的dpapi blob的方法获得dpapi加密数据的明文,从而达到提高取证效率,现场只需要制作内存镜像、硬盘镜像,后续可以在实验室再处理,减轻现场勘验压力的目的。并且能够用于对内存镜像中dpapi密钥的提取,避免传统方法有可能出现关键dpapi密钥灭失,导致重要加密数据无法被解密。能够解析chromium保存密码的数据库,outlook加密的数据库、远程桌面密码、ftp账号密码、outlook账号密码、ie和chrome浏览器上网自动表单、无线上网密码、efs的私钥加密、msn messenger密码等多种使用dpapi加密的数据。
附图说明
40.包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本
说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本技术的其它特征、目的和优点将会变得更明显:
41.图1是本技术的一个实施例的基于内存镜像离线提取dpapi密钥方法的流程图;
42.图2是本技术的一个具体的实施例的logon session结构图;
43.图3是本技术的一个具体的实施例的cached master key结构图;
44.图4是本技术的一个具体的实施例的decrypt key结构图;
45.图5是本技术的一个具体的实施例的提取dpapi密钥的方法的流程图;
46.图6是本技术的一个实施例的基于内存镜像离线提取dpapi密钥的系统框架图;
47.图7是适于用来实现本技术实施例的电子设备的计算机系统的结构示意图;
48.图8是本技术的一个具体的实施例的提取dpapi密钥方法的效果图。
具体实施方式
49.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
50.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
51.根据本技术的一个实施例的基于内存镜像离线提取dpapi密钥的方法,图1示出了根据本技术的实施例的基于内存镜像离线提取dpapi密钥的方法的流程图。如图1所示,该方法包括:
52.s101:加载内存镜像,从内存镜像中获取系统版本信息,提取lsass.exe进程的minidump。minidump为应用程序的小型转储文件,为故障转储文件的子集,提取lsass.exe进程的minidump可用于提升速度,提高效率。
53.s102:在lsasrv.dll内存范围分别以对应系统版本logon session sign表的标志位的不同偏移进行search sign apply offset操作获取logon session list和logon session count。
54.在具体的实施例中,logon session sign表中存有获取登录会话的标志位以及相应偏移,其包括偏移0和偏移1两个偏移。具体如下表1所示
55.表1.logon session sign表
[0056][0057]
如果系统版本不在上述表格中,可以参考最接近的系统版本。
[0058]
在具体的实施例中,search sign apply offset操作具体为:搜索标志位,获取一位置sign base,偏移sign offset字节,以小端格式读取4字节无符号长整数记做offset,结果为sign base sign offset 4 offset。结合表1,该步骤中在lsasrv.dll内存范围以对应系统版本logon session sign表的标志位,偏移0作为sign offset进行search sign apply offset操作,获取logon session address list,再根据logon session结构获取登录会话列表的信息logon session list;在lsasrv.dll内存范围以对应系统版本logon session sign表的标志位,偏移1作为sign offset进行search sign apply offset操作,获取logon session count。
[0059]
s103:根据不同的系统版本在对应的动态链接库内存范围以cached master key结构获取各个logon session对应的cache master key。
[0060]
在具体的实施例中,logon session结构中记录了logonid,sid,domain等信息,可以用于获取对应的master key缓存。具体的logon session结构如图2中示出的本技术的一个具体的实施例的logon session结构图。cached master key结构记录了logon id,key uid,cached master key等信息,通过遍历可以取到logon id所对应的cached master key。具体的cached master key结构如图3中示出的本技术的一个具体的实施例的cached master key结构图,其中dpapisrv base存有cached master key的动态链接库内存基址,windows8及以后版本为dpapisrv.dll,其他版本为lsasrv.dll。
[0061]
s104:在lsasrv.dll内存范围分别以对应系统版本decrypt key sign表的标志位的不同偏移进行search sign apply offset操作获取16字节的iv和key3des,对key3des进行search sign apply offset操作获取key aes。
[0062]
在具体的实施例中,decrypt key结构中记录了用于解密cached master key的密钥。具体的decrypt key结构如图4中示出的本技术的一个具体的实施例的decrypt key结构图。decrypt key sign表中存有获取解密cachedmasterkey密钥的标志位以及相应偏移,其包括偏移0、偏移1和偏移2三个偏移。具体如下表2所示:
[0063]
表2.decrypt key sign表
[0064][0065]
如果系统版本不在上述表格中,可以参考最接近的系统版本。
[0066]
在具体的实施例中,结合表2,该步骤中在lsasrv.dll内存范围以decrypt key sign表的标志位中偏移0作为sign offset进行search sign apply offset操作得到16字节的iv;在lsasrv.dll内存范围以decrypt key sign表的标志位中偏移1作为sign offset进行search sign apply offset操作得到decrypt key结构中的decrypt handle address,再根据decrypt key结构读取得到一个密钥key3des;将sign offset替换为decrypt key sign表对应的偏移2,重复进行search sign apply offset操作,得到key aes。
[0067]
s105:根据cache master key、key3des、key aes和iv解密获得各个logon session对应的master key。其中master key即为dpapi用户密钥/系统密钥。
[0068]
继续参考图5,图5示出了本技术的一个具体的实施例的提取dpapi密钥的方法的流程图,如图5所示,该方法包括:
[0069]
步骤501:加载内存镜像,获取版本号并提取lsass.exe的minidump;后分别执行步骤5021、5022和5023;
[0070]
步骤5021:表1参数进行search sign apply offset操作(具体如前述方法中的步骤102),获得步骤5031中logon session list、logon session count;
[0071]
步骤5022:cached master key的动态库按照结构进行提取,获得步骤5032中cache master key;
[0072]
步骤5023:表2参数进行search sign apply offset操作(具体如前述方法中的步骤104),获得步骤5033中iv、key3des、key aes
[0073]
步骤504:判断是否已遍历cache master key,若否,进入步骤505;
[0074]
步骤505:获取下一个cache master key;
[0075]
步骤506:判断cache master key的logon id是否在logon session list中,若
否,返回步骤504,若是,则进入步骤507;
[0076]
步骤507:判断cache master key长度是否为8的倍数,若是,进入步骤508,若否,则进入步骤509;
[0077]
步骤508:使用key aes、iv对cache master key进行aes-cfb解密;获得步骤510的master key;
[0078]
步骤509:使用key aes、iv前8字节对cache master key进行3des-cbc解密,获得步骤510的master key。
[0079]
在一个具体的实施例中,chrome保存的密码是使用aes加密的,加密密钥经过dpapi用户密钥加密存放在%appdata\local\google\chrome\user data\local state中,以base64存储在os_crypt字段中,经过解码得到一串以dpapi开头的字符串,将头部dpapi字符串移除之后的字符串为经过用户dpapi加密的aes密钥,dpapi解密后得到密钥明文,即可解密chrome保存的密码。解密效果图如图8所示。
[0080]
windows操作系统的lsass.exe进程用于本地安全和登录策略,在进程内存中缓存加密后的dpapi用户密钥以及系统密钥,并且在内存特定位置存放有用于解密出加密后的dpapi用户密钥以及系统密钥明文的初始化密钥。本方法通过关键位置的标志位进行搜索,读取特定模块的内存偏移的数据进行解密,从而获得dpapi密钥。该方法能够用于对内存镜像中dpapi密钥的提取,避免传统方法有可能出现关键dpapi密钥灭失,导致重要加密数据无法被解密。也能够解析chromium保存密码的数据库,outlook加密的数据库、远程桌面密码、ftp账号密码、outlook账号密码、ie和chrome浏览器上网自动表单、无线上网密码、efs的私钥加密、msn messenger密码等多种使用dpapi加密的数据。
[0081]
继续参考图6,图6示出了根据本发明的实施例的基于内存镜像离线提取dpapi密钥的系统框架图。该系统具体包括内存镜像加载单元601、cache master key获取单元602、偏移处理单元603和解密单元604,其中,内存镜像加载单元601配置用于加载内存镜像,从内存镜像中获取系统版本信息,提取lsass.exe进程的minidump;cache master key获取单元602配置用于根据不同的系统版本在对应的动态链接库内存范围以cached master key结构获取各个logon session对应的cache master key;偏移处理单元603配置用于在lsasrv.dll内存范围分别以对应系统版本logon session sign表的标志位的不同偏移进行search sign apply offset操作获取logon session list和logon session count;在lsasrv.dll内存范围分别以对应系统版本decrypt key sign表的标志位的不同偏移进行search sign apply offset操作获取16字节的iv和key3des,对key3des进行search sign apply offset操作获取key aes;解密单元604配置用于根据cache master key、key3des、key aes和iv解密获得各个logon session对应的master key。
[0082]
下面参考图7,其示出了适于用来实现本技术实施例的电子设备的计算机系统700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0083]
如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram 703中,还存储有系统700操作所需的各种程序和数据。cpu 701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总
线704。
[0084]
以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
[0085]
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本技术的方法中限定的上述功能。需要说明的是,本技术的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0086]
可以以一种或多种程序设计语言或其组合来编写用于执行本技术的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0087]
附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标
注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0088]
描述于本技术实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
[0089]
作为另一方面,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:加载内存镜像,从内存镜像中获取系统版本信息,提取lsass.exe进程的minidump;在lsasrv.dll内存范围分别以对应系统版本logon session sign表的标志位的不同偏移进行search sign apply offset操作获取logon session list和logon session count;根据不同的系统版本在对应的动态链接库内存范围以cached master key结构获取各个logon session对应的cache master key;在lsasrv.dll内存范围分别以对应系统版本decrypt key sign表的标志位的不同偏移进行search sign apply offset操作获取16字节的iv和key3des,对key3des进行search sign apply offset操作获取key aes;根据cache master key、key3des、key aes和iv解密获得各个logon session对应的master key。
[0090]
以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献