CN116956240A - 一种绕过Google safetynet认证方法及相关组件 - Google Patents
一种绕过Google safetynet认证方法及相关组件 Download PDFInfo
- Publication number
- CN116956240A CN116956240A CN202310941478.3A CN202310941478A CN116956240A CN 116956240 A CN116956240 A CN 116956240A CN 202310941478 A CN202310941478 A CN 202310941478A CN 116956240 A CN116956240 A CN 116956240A
- Authority
- CN
- China
- Prior art keywords
- authentication
- safe
- safe net
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000006870 function Effects 0.000 claims description 58
- 230000000977 initiatory effect Effects 0.000 claims description 27
- 238000012986 modification Methods 0.000 claims description 15
- 230000004048 modification Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000012795 verification Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 11
- 238000011161 development Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 241001125831 Istiophoridae Species 0.000 description 2
- 238000012857 repacking Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种绕过Googlesafetynet认证方法及相关组件,包括:通过app发送safetynet请求至安全认证API进行safetynet认证,并返回初始safetynet认证结果,获取初始safetynet认证结果中的有效数据和设备基本完整性的当前状态,并构建为字符串;修改字符串中的有效数据和获取设备中的设备基本完整性的当前状态为可通过验证的值,并更新字符串;使用更新后的字符串对safetynet请求进行更新,通过app再次发送safetynet请求至安全认证API进行safetynet认证,返回新的safetynet认证结果并提交到待绕过的APP进行验证,以完成认证。本发明通过对初始safetynet认证结果进行修改,并更新safetynet请求并重新发起,以返回新的safetynet认证结果,然后将新的safetynet认证结果替换掉初始safetynet认证结果,从而实现了待绕过的appsafetynet认证。
Description
技术领域
本发明涉及软件技术领域,尤其涉及一种绕过Google safetynet认证方法及相关组件。
背景技术
安全网认证API(safetynet Attestation API)是一种反滥用API,可以让应用开发者评估运行其应用的Android设备以及应用的完整性。
安全网认证API会提供加密签名的证明,为了创建证明,该API会检查设备的软件和硬件环境,以查找是否存在完整性问题,软件环境检查如应用是否被篡改后进行了重打包,硬件环境检查如设备是否已启用了root权限,检查后会将相应软件和硬件数据进行编码后发送给Google进行签名后返回。返回的证明还会一并绑定调用方应用提供的Nonce以及safetynet Attestation API生成的时间戳,随后证明将被提交到调用方进行签名验证及有效数据判断。
目前,Android设备开发的app会经过Google服务器进行safetynet认证才能使用,当Android app触发了safetynet认证后,app端会通过Google服务器向安全网认证API发起safetynet请求,并传入一个由调用端生成的随机数,当Google进程收到safetynet请求后,首先会获取调用端app的包名、应用证书指纹摘要以及应用摘要,接着会对调用端设备进行设备完整性检测,最后会把上面获取到的数据发送到Google服务器端进行RSA私钥签名后到调用端进行签名及有效数据验证。
但是,当对使用safetynet认证的app进行二次开发重打包后,应用证书指纹摘要以及应用摘要会发生改变,进而导致safetynet认证无法通过,app不能使用。
发明内容
本发明的目的是提供一种绕过Google safetynet认证方法及相关组件,旨在解决现有app进行二次开发重打包无法通过safetynet认证的问题。
第一方面,本发明实施例提供一种绕过Googlesafetynet认证方法,其包括:
获取设备系统的root权限,并搭建hook环境;
通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,并通过hook操作后返回初始safetynet认证结果,解密获取所述初始safetynet认证结果中的有效数据和设备基本完整性的当前状态,保存所述有效数据;
修改设备中对应所述设备基本完整性的参数值,使所述设备基本完整性的当前状态更新为正确状态;
定位所述有效数据在safetynet请求的关键函数中的位置,通过hook操作修改所述关键函数中对应所述有效数据的值,使Google服务器更新所述有效数据;
定位所述关键函数中表示safetynet请求的发起次数的位置,通过hook操作修改所述发起次数的返回值为小于最大请求次数的值;
通过新的app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,通过hook操作后返回新的safetynet认证结果并提交到待绕过的APP替换掉所述初始safetynet认证结果,以完成认证。
第二方面,本发明实施例提供一种利用绕过Googlesafetynet认证装置,其包括:
获取单元,用于获取设备系统的root权限,并搭建hook环境;
认证单元,用于通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,并通过hook操作后返回初始safetynet认证结果,解密获取所述初始safetynet认证结果中的有效数据和设备基本完整性的当前状态,保存所述有效数据;
修改单元,用于修改设备中对应所述设备基本完整性的参数值,使所述设备基本完整性的当前状态更新为正确状态;
第一定位单元,用于定位所述有效数据在safetynet请求的关键函数中的位置,通过hook操作修改所述关键函数中对应所述有效数据的值,使Google服务器更新所述有效数据;
第二定位单元,用于定位所述关键函数中表示safetynet请求的发起次数的位置,通过hook操作修改所述发起次数的返回值为小于最大请求次数的值;
认证单元,用于通过新的app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,通过hook操作后返回新的safetynet认证结果并提交到待绕过的APP替换掉所述初始safetynet认证结果,以完成认证。
第三方面,本发明实施例提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的绕过Googlesafetynet认证方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的绕过Googlesafetynet认证方法。
本发明实施例提供一种绕过Googlesafetynet认证方法及相关组件,包括:通过app发送safetynet请求至安全认证API进行safetynet认证,并返回初始safetynet认证结果,获取初始safetynet认证结果中的有效数据和获取设备中的设备基本完整性的当前状态,并构建为字符串;修改字符串中的有效数据和获取设备中的设备基本完整性的当前状态为可通过验证的值,并更新字符串;使用更新后的字符串对safetynet请求进行更新,通过app再次发送safetynet请求至安全认证API进行safetynet认证,返回新的safetynet认证结果并提交到待绕过的APP进行验证,以完成认证。本发明实施例通过对初始safetynet认证结果进行修改,并更新safetynet请求并重新发起,以返回新的safetynet认证结果,然后将新的safetynet认证结果替换掉初始safetynet认证结果,从而实现了待绕过的appsafetynet认证。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的绕过Googlesafetynet认证方法的流程示意图;
图2为本发明实施例提供的绕过Googlesafetynet认证方法的子流程示意图;
图3为本发明实施例提供的绕过Googlesafetynet认证方法的又一子流程示意图;
图4为本发明实施例提供的绕过Googlesafetynet认证方法的又一子流程示意图;
图5为本发明实施例提供的绕过Googlesafetynet认证方法的又一子流程示意图;
图6为本发明实施例提供的绕过Googlesafetynet认证方法的又一子流程示意图;
图7为本发明实施例提供的绕过Googlesafetynet认证方法的又一子流程示意图;
图8为本发明实施例提供的绕过Googlesafetynet认证装置的示意性框图;
图9为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,图1为本发明实施例提供的绕过Googlesafetynet认证方法的流程示意图;
如图1所示,该方法包括步骤S101~S106。
S101、获取设备系统的root权限,并搭建hook环境;
通过获取设备系统的root权限,可以获得对设备系统的完全控制权。搭建hook环境是指在设备上设置钩子函数,以便在特定的函数或代码执行时拦截和修改数据。
对于root权限的获取,具体的可以通过Magisk来获取,Magisk是一套开源的android框架,其中一个重要功能是android设备root权限的获取和管理。
需要说明的是,由于Magisk获取设备的root权限方法会根据不同设备而有所不同,因此需要根据实际情况来获取。
S102、通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,并通过hook操作后返回初始safetynet认证结果,解密获取初始safetynet认证结果中的有效数据和设备基本完整性的当前状态,保存有效数据;
该步骤中,通过应用程序app发送safetynet请求至安全认证API,以进行safetynet认证。安全认证API将对设备的设备基本完整性和应用程序app安全性进行评估,并返回初始safetynet认证结果。然后解密并获取认证结果中的有效数据,并获取设备的设备基本完整性的当前状态,并将其构建为字符串。
S103、修改设备中对应设备基本完整性的参数值,使设备基本完整性的当前状态更新为正确状态;
该步骤中,定位到设备中对应设备基本完整性的参数值的位置,通过Magisk模块和LSPosed模块将设备基本完整性的当前状态更新为正确状态。
S104、定位有效数据在safetynet请求的关键函数中的位置,通过hook操作修改关键函数中对应有效数据的值,使Google服务器更新有效数据;
该步骤中,通过Googlegms进程找到对应safetynet请求的关键函数,定位有效数据在关键函数的位置并修改其返回值为可通过验证的值。
S105、定位关键函数中表示safetynet请求的发起次数的位置,通过hook操作修改发起次数的返回值为小于最大请求次数的值;
该步骤中,定位关键函数中表示safetynet请求发起次数的位置并修改其返回值为小于最大请求次数的值。这样做可以绕过safetynet请求发起次数的限制。
S106、通过新的app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,通过hook操作后返回新的safetynet认证结果并提交到待绕过的APP替换掉初始safetynet认证结果,以完成认证。
本实施例中,安装应用程序app的设备可以是手机和平板等电子设备,当需要对app进行二次开发重打包时,需要使用app调用安全认证API发送safetynet请求至Google服务器,然后Google服务器会返回一个初始safetynet认证结果到发起safetynet请求的调用端。
然后根据返回的初始safetynet认证结果得到设备的设备基本完整性的当前状态和有效数据,基于步骤S103至S104的修改,使设备基本完整性的参数值修改为正确状态,以及使有效数据修改为可通过验证的值;如此再通过新的app发起safetynet请求时,返回新的safetynet认证结果,将新的safetynet认证结果提交到待绕过的app,待绕过的app应用程序则可以绕过设备基本完整性的检测和有效数据的检测。
进一步地,安全认证API对safetynet请求设置有请求次数的限制,当在设备上连续使用多次safetynet请求时,后面短时间内继续发起safetynet请求会显示请求失败。为了在应用程序app发起safetynet请求时,不被请求次数的限制,则需要修改发起次数的返回值为小于最大请求次数的值,具体可以通过定位关键函数中表示safetynet请求的发起次数的位置,对发起次数的返回值,将该返回值修改为小于最大请求次数的值,则可以不被安全认证API对safetynet请求次数限制,从而实现使用次数限制的绕过。
最后,基于上述对有效数据和设备基本完整性的参数值的修改后,Google服务器会自动更新上述修改后的有效数据和设备基本完整性的参数值,然后再使用新的app调用安全认证API发起safetynet请求至Google服务器,Google服务器对再次发起safetynet请求进行safetynet认证,而此次返回的新的safetynet认证结果提交到待绕过的app进行验证是否有效,若有效则完成safetynet认证,若无效,则基于步骤S103~S106继续进行修改调整,直至完成绕过safetynet认证。
本实施例中,使用已绕过的新的safetynet认证结果对二次开发重打包的应用程序app得到的初始safetynet认证结果进行替换,以此完成二次开发重打包的应用程序app的safetynet认证,从而通过本申请的此种方式不需要普通用户得到Google服务器的私钥签名,解决了safetynet认证的app实现二次开发重打包困难的问题。
在一实施例中,如图2所示,步骤S102包括:
S201、通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证并调用Google服务器的回调函数;
S202、对回调函数进行hook操作,得到初始safetynet认证结果;
对返回的回调函数进行hook操作,以拦截并获取初始的safetynet认证结果,从而可以分析safetynet认证结果并进行后续的处理。
S203、对初始safetynet认证结果进行解密得到公钥证书、json形式的有效数据和有效数据的签名,其中,有效数据包括设备生成的随机数、向Google服务器事先申请的GoogleAPI密钥和设备app包名、应用指纹证书及应用摘要;
初始safetynet认证结果通常是加密的,所以在这一步中,需要对其进行解密操作。解密后,将获得一些重要的信息,包括公钥证书、以json形式表示的有效数据和有效数据的签名。
为了验证签名的有效性,需要使用相应的公钥证书对返回的签名进行解密。公钥证书是与私钥对应的公开密钥,可以用于解密相应的加密数据。
解密后的有效数据包括设备生成的随机数、app应用开发人员向Google服务器事先申请的GoogleAPI密钥、设备的app包名、应用指纹证书以及应用摘要。这些信息是safetynet认证过程中的重要组成部分,用于验证设备和应用程序的合法性和完整性。
S204、对设备的设备基本完整性的校验机制进行分析,得到设备的设备基本完整性的当前状态;
分析设备的设备基本完整性校验机制,这是safetynet认证的一部分。通过分析该机制,可以得到设备的设备基本完整性的当前状态。从而确认设备是否符合safetynet认证的要求。
本实施例中,通过hook回调函数得到初始safetynet认证结果,然后对初始safetynet认证结果进行解密,以得到json形式的有效数据;对设备基本完整性的校验机制进行分析,得到设备的设备基本完整性的当前状态。
其中,对设备的设备基本完整性的校验机制进行分析包括:检查设备的软件和硬件环境软件环境检查为应用是否被篡改后进行了二次开发重打包,硬件环境检查为设备是否已启用了root权限,以确认设备是否存在完整性问题,软件环境检查和硬件环境检查后,则可以得到设备的设备基本完整性的当前状态的参数值,当前状态可以为正确状态或错误状态,当当前状态为错误状态时,则需要将错误状态更改为正确状态。
在一实施例中,如图3所示,步骤S103包括:
S301、利用Magisk模块修改设备中的相关属性值,包括:控制进程对文件的操作的权限控制修改为强制性、设备引导加载程序锁定状态修改为开启、能否将新软件刷写到设备上修改为锁定及是否存在从引导加载程序到已验证发过去的完整信任链修改为存在;
Magisk是一个基于开源的系统修改工具,允许用户在Android设备上进行系统级别的修改。通过创建一个Magisk模块,可以修改设备中的相关属性值。在这种情况下,可以修改控制进程对文件的操作的权限控制,将其修改为强制性,以加强对文件的保护。此外,还可以修改设备引导加载程序的锁定状态,将其修改为开启。再者,还可以修改能否将新软件刷写到设备上的属性,将其修改为锁定。最后,还可以修改是否存在从引导加载程序到已验证发过去的完整信任链的属性,将其修改为存在。
S302、利用LSPosed模块修改Googlegms进程中的设备指纹、设备产品名、设备驱动名称及设备型号的值为Google信任设备的有效值;
LSPosed是一个开源的模块化框架,用于在Android设备上进行Xposed模块的加载和修改。通过使用LSPosed模块,可以修改Googlegms(Google移动服务)进程中的设备属性值。这些属性值为Android.os.Build类中的成员变量,这些属性值包括设备指纹(Fingerprint)、设备产品名(product)、设备驱动名称(device)以及设备型号(model)。具体可以将设备指纹(Fingerprint)修改为user/release-keys,将设备产品名(product)修改为marlin,将设备驱动名称(device)修改为marlin以及将设备型号(model)修改为PixelXL。通过将这些值修改为Google信任设备的有效值,从而使得Google服务器能够信任发起safetynet请求的设备。
需要说明的是,有效值具有多个,具体有效值的修改可根据应用情况进行修改,修改完后返回到设备中验证通过即可。
S303、根据Magisk模块和LSPosed模块的修改,使当前状态更新为正确状态。
通过使用Magisk模块和LSPosed模块修改设备中的相关属性值,你可以更新设备的当前状态为符合认证要求的正确状态。通过此操作可以使得设备在safetynet认证中通过验证,并被识别为受信任的设备。
本实施例中,通过Magisk模块修改设备中的属性值,LSPosed模块修改Googlegms中的属性值,从而使得Google能够信任发起safetynet请求的设备,以便于后续的safetynet认证操作。
在一实施例中,如图4所示,步骤S104包括:
S401、定位Googlegms进程中处理safetynet请求的关键函数;
定位Googlegms进程中处理Safetynet请求的关键函数。这个关键函数通常负责处理Safetynet认证请求的逻辑,包括验证设备的完整性和安全性。
S402、分析关键函数的构造,定位关键函数中对应设备的app包名的位置,通过LSPosed脚本对设备的app包名进行修改;
通过对关键函数的分析,可以了解其结构和逻辑。在这个关键函数中,需要定位处理设备的app包名的位置。这个位置通常用于与请求中的app包名进行比较和验证,确保请求来自合法的应用程序。
利用LSPosed框架,可以编写一个脚本来修改设备的app包名,app包名根据开发的app所需的名字进行适应修改。然后通过找到之前app包名定位的位置,可以使用LSPosed的能力来篡改或替换设备的app包名,以绕过安全认证API系统进行safetynet认证。
S403、定位关键函数中对应应用指纹证书和应用摘要保存的位置,通过预先构造的正确的应用指纹证书和应用摘要进行替换,以完成修改并由Google服务器进行更新。
在关键函数中,通常会存在一些位置来保存应用指纹证书和应用摘要。这些信息用于验证应用程序的合法性和完整性。需要定位这些位置,以便后续的替换和修改操作。
本实施例中,通过预先构造的正确的应用指纹证书和应用摘要进行替换:根据之前定位到的位置,可以使用预先构造的正确的应用指纹证书和应用摘要来替换原有的应用指纹证书和应用摘要。这样可以使关键函数认为应用程序的指纹证书和应用摘要与预期的一致,从而绕过认证或达到所需的认证结果。
在一实施例中,如图5所示,步骤S105包括:
S501、获取预设时段内发起safetynet请求的最大请求次数的值;
首先,需要获取预设时段内发起safetynet请求的最大请求次数的值。这个值通常是根据设备和应用程序的合法性和安全性要求进行设置的。
S502、定位关键函数中表示safetynet请求的发起次数的位置,当判定预设时段内发起safetynet请求的次数时,将判定的次数对应的返回值修改为小于最大请求次数的值。
在关键函数中,需要定位表示Safetynet请求发起次数的位置。这个位置通常记录了在预设时段内发起Safetynet请求的次数。通过定位这个位置,便可以对发起次数进行后续的修改操作。
具体的是,当判断预设时段内发起Safetynet请求的次数时,可以修改关键函数中对应发起次数的返回值。将其修改为小于预设最大请求次数的值,以使系统认为发起的请求次数未达到最大限制。
本实施例中,safetynet请求会有最高次数的限制,当达到safetynet请求次数的最大值时,safetynet请求就会失败。
为了更清楚说明safetynet请求的最大请求次数的限制,现举例说明:
每次发起safetynet请求时都会生成一个时间戳随同请求一起压入队列中,当队列元素不为空时,如果当前请求与队列的第一个请求时间差大于两分钟则把队列的第一个请求从队列中移除,此时可以正常请求;如果时间差小于两分钟,则移除队列头元素,并在后面逻辑中判定当前队列的元素数量是否大于10,如果大于10,则请求异常。
因此,为了实现绕过safetynet请求次数的限制,从第一次请求发起开始计算,两分钟内不能连续发起超过10次请求。
由此可知,当我们要实现绕过safetynet请求最高次数的限制时,需要修改关键函数中对应发起次数的返回值,将其修改为小于10的最大请求次数的值,由此便在safetynet请求时不会达到最大次数的限制。
在一实施例中,如图6所示,步骤S101包括:
S601、在设备中安装LSPosed模块,通过所述LSPosed模块搭建所述hook环境。
本实施例中,对于hook环境的搭建,具体可以通过安装Lsposed框架来搭建,LSPosed框架是Edxposed框架的一个新的分支,LSPosed框架与Edxposed框架相互兼容,却比Edxposed框架更加简洁、易用和高效。
LSPosed框架与Xposed框架相同,LPSosed可以在不真实修改任何应用和系统组件的情况下达到修改的目的,从而实现强大的功能。
在一实施例中,如图7所示,步骤S601包括:
S701、预先在设备的Magisk模块内安装Riru和Riru-LSPosed模块后,重启所述设备。
本实施例中,在安装Lsposed框架前,首先需要在Magisk里分别安装好Riru和Riru-LSPosed模块,将重启设备后安装Zygisk-LSPosed模块,然后在设备的通知框弹出关于LSPosedapp的入口,然后点击该入口即可进入LSPosedapp,最后就可以开发LSPosed模块来实现hook操作。
本发明实施例还提供一种利用绕过Googlesafetynet认证装置,该利用绕过Googlesafetynet认证装置用于执行前述绕过Googlesafetynet认证方法的任一实施例。具体地,请参阅图8,图8是本发明实施例提供的利用绕过Google safetynet认证装置的示意性框图。
如图8所示,一种绕过Googlesafetynet认证装置800,包括:获取单元801、认证单元802、修改单元803、第一定位单元804、第二定位单元805、认证单元806。
获取单元801,用于获取设备系统的root权限,并搭建hook环境;
认证单元802,用于通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,并通过hook操作后返回初始safetynet认证结果,解密获取初始safetynet认证结果中的有效数据和设备基本完整性的当前状态,保存有效数据;
修改单元803,用于修改设备中对应设备基本完整性的参数值,使设备基本完整性的当前状态更新为正确状态;
第一定位单元804,用于定位有效数据在safetynet请求的关键函数中的位置,通过hook操作修改关键函数中对应有效数据的值,使Google服务器更新有效数据;
第二定位单元805,用于定位关键函数中表示safetynet请求的发起次数的位置,通过hook操作修改发起次数的返回值为小于最大请求次数的值;
认证单元806,用于通过新的app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,通过hook操作后返回新的safetynet认证结果并提交到待绕过的APP替换掉初始safetynet认证结果,以完成认证。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
上述利用绕过Googlesafetynet认证装置可以实现为计算机程序的形式,该计算机程序可以在如图9所示的计算机设备上运行。
请参阅图9,图9是本发明实施例提供的计算机设备的示意性框图。该计算机设备900是服务器,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图9,该计算机设备900包括通过系统总线901连接的处理器902、存储器和网络接口905,其中,存储器可以包括非易失性存储介质903和内存储器904。
该非易失性存储介质903可存储操作系统9031和计算机程序9032。该计算机程序9032被执行时,可使得处理器902执行绕过Googlesafetynet认证方法。
该处理器902用于提供计算和控制能力,支撑整个计算机设备900的运行。
该内存储器904为非易失性存储介质903中的计算机程序9032的运行提供环境,该计算机程序9032被处理器902执行时,可使得处理器902执行绕过Googlesafetynet认证方法。
该网络接口905用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图9中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备900的限定,具体的计算机设备900可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域技术人员可以理解,图9中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图9所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器902可以是中央处理单元(CentralProcessing Unit,CPU),该处理器902还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本发明实施例的绕过Google safetynet认证方法。
存储介质为实体的、非瞬时性的存储介质,例如可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的实体存储介质。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种绕过Google safetynet认证方法,其特征在于,包括:
获取设备系统的root权限,并搭建hook环境;
通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,并通过hook操作后返回初始safetynet认证结果,解密获取所述初始safetynet认证结果中的有效数据和设备基本完整性的当前状态,保存所述有效数据;
修改设备中对应所述设备基本完整性的参数值,使所述设备基本完整性的当前状态更新为正确状态;
定位所述有效数据在safetynet请求的关键函数中的位置,通过hook操作修改所述关键函数中对应所述有效数据的值,使Google服务器更新所述有效数据;
定位所述关键函数中表示safetynet请求的发起次数的位置,通过hook操作修改所述发起次数的返回值为小于最大请求次数的值;
通过新的app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,通过hook操作后返回新的safetynet认证结果并提交到待绕过的APP替换掉所述初始safetynet认证结果,以完成认证。
2.根据权利要求1所述的绕过Google safetynet认证方法,其特征在于,所述通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,并通过hook操作后返回初始safetynet认证结果,解密获取所述初始safetynet认证结果中的有效数据和设备基本完整性的当前状态,保存所述有效数据,包括:
通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证并调用Google服务器的回调函数;
对所述回调函数进行hook操作,得到初始safetynet认证结果;
对所述初始safetynet认证结果进行解密得到公钥证书、json形式的有效数据和有效数据的签名,其中,所述有效数据包括设备生成的随机数、向Google服务器事先申请的Google API密钥和设备app包名、应用指纹证书及应用摘要;
对设备的设备基本完整性的校验机制进行分析,得到设备的设备基本完整性的当前状态。
3.根据权利要求1所述的绕过Google safetynet认证方法,其特征在于,所述修改设备中对应所述设备基本完整性的参数值,使所述设备基本完整性的当前状态更新为正确状态,包括:
利用Magisk模块修改设备中的相关属性值,包括:控制进程对文件的操作的权限控制修改为强制性、设备引导加载程序锁定状态修改为开启、能否将新软件刷写到设备上修改为锁定及是否存在从引导加载程序到已验证发过去的完整信任链修改为存在;
利用LSPosed模块修改Google gms进程中的设备指纹、设备产品名、设备驱动名称及设备型号的值为Google信任设备的有效值;
根据Magisk模块和LSPosed模块的修改,使所述当前状态更新为正确状态。
4.根据权利要求2所述的绕过Google safetynet认证方法,其特征在于,所述定位所述有效数据在safetynet请求的关键函数中的位置,通过hook操作修改所述关键函数中对应所述有效数据的值,使Google服务器更新所述有效数据,包括:
定位Google gms进程中处理safetynet请求的关键函数;
分析所述关键函数的构造,定位所述关键函数中对应设备的app包名的位置,通过LSPosed脚本对设备的app包名进行修改;
定位所述关键函数中对应应用指纹证书和应用摘要保存的位置,通过预先构造的正确的应用指纹证书和应用摘要进行替换,以完成修改并由Google服务器进行更新。
5.根据权利要求1所述的绕过Google safetynet认证方法,其特征在于,所述定位所述关键函数中表示safetynet请求的发起次数的位置,通过hook操作修改所述发起次数的返回值为小于最大请求次数的值,包括:
获取预设时段内发起safetynet请求的最大请求次数的值;
定位所述关键函数中表示safetynet请求的发起次数的位置,当判定预设时段内发起safetynet请求的次数时,将判定的次数对应的返回值修改为小于最大请求次数的值。
6.根据权利要求1所述的绕过Google safetynet认证方法,其特征在于,所述搭建hook环境,包括:
在设备中安装LSPosed模块,通过所述LSPosed模块搭建所述hook环境。
7.根据权利要求6所述的绕过Google safetynet认证方法,其特征在于,所述在设备中安装LSPosed模块,通过所述LSPosed模块搭建所述hook环境,包括:
预先在设备的Magisk模块内安装Riru和Riru-LSPosed模块后,重启所述设备。
8.一种绕过Google safetynet认证装置,其特征在于,包括:
获取单元,用于获取设备系统的root权限,并搭建hook环境;
认证单元,用于通过app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,并通过hook操作后返回初始safetynet认证结果,解密获取所述初始safetynet认证结果中的有效数据和设备基本完整性的当前状态,保存所述有效数据;
修改单元,用于修改设备中对应所述设备基本完整性的参数值,使所述设备基本完整性的当前状态更新为正确状态;
第一定位单元,用于定位所述有效数据在safetynet请求的关键函数中的位置,通过hook操作修改所述关键函数中对应所述有效数据的值,使Google服务器更新所述有效数据;
第二定位单元,用于定位所述关键函数中表示safetynet请求的发起次数的位置,通过hook操作修改所述发起次数的返回值为小于最大请求次数的值;
认证单元,用于通过新的app调用安全认证API发送safetynet请求至Google服务器进行safetynet认证,通过hook操作后返回新的safetynet认证结果并提交到待绕过的APP替换掉所述初始safetynet认证结果,以完成认证。
9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的绕过Google safetynet认证方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至7任一项所述的绕过Google safetynet认证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310941478.3A CN116956240A (zh) | 2023-07-28 | 2023-07-28 | 一种绕过Google safetynet认证方法及相关组件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310941478.3A CN116956240A (zh) | 2023-07-28 | 2023-07-28 | 一种绕过Google safetynet认证方法及相关组件 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116956240A true CN116956240A (zh) | 2023-10-27 |
Family
ID=88448822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310941478.3A Pending CN116956240A (zh) | 2023-07-28 | 2023-07-28 | 一种绕过Google safetynet认证方法及相关组件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116956240A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117241276A (zh) * | 2023-11-16 | 2023-12-15 | 国家计算机网络与信息安全管理中心 | 一种面向移动应用的检测工具及检测方法、系统及设备 |
-
2023
- 2023-07-28 CN CN202310941478.3A patent/CN116956240A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117241276A (zh) * | 2023-11-16 | 2023-12-15 | 国家计算机网络与信息安全管理中心 | 一种面向移动应用的检测工具及检测方法、系统及设备 |
CN117241276B (zh) * | 2023-11-16 | 2024-02-06 | 国家计算机网络与信息安全管理中心 | 一种面向移动应用的检测工具及检测方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11637707B2 (en) | System and method for managing installation of an application package requiring high-risk permission access | |
US11539748B2 (en) | Monitoring and reporting enterprise level cybersecurity remediation | |
US10176330B2 (en) | Global platform health management | |
US9871821B2 (en) | Securely operating a process using user-specific and device-specific security constraints | |
EP2659373B1 (en) | System and method for secure software update | |
JP2022123064A (ja) | 分散型台帳を用いるデジタルアセット・トレーサビリティおよび保証 | |
CA2923740C (en) | Software code signing system and method | |
US8880898B2 (en) | Anti-roll-back mechanism for counter | |
US20130031371A1 (en) | Software Run-Time Provenance | |
CN101657792A (zh) | 可信部件更新系统和方法 | |
JP2008537224A (ja) | 安全な起動方法およびシステム | |
CN113646761A (zh) | 向应用提供应用安全、验证和特征分析 | |
CN111295655B (zh) | 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法 | |
US9652599B2 (en) | Restricted code signing | |
Mbakoyiannis et al. | Secure over-the-air firmware updating for automotive electronic control units | |
CN113282946B (zh) | 基于高可信环境下数据访问过程的信息安全方法及系统 | |
WO2016165215A1 (zh) | 应用程序加载代码签名的方法和装置 | |
CN116956240A (zh) | 一种绕过Google safetynet认证方法及相关组件 | |
KR20190062797A (ko) | 클라우드 서비스를 사용하는 사용자 단말기, 단말기의 보안 통합 관리 서버 및 단말기의 보안 통합 관리 방법 | |
US11277270B2 (en) | Flexible controls for certificates | |
CN116032484A (zh) | 一种通信设备安全启动的方法、装置和电子设备 | |
Gopalan et al. | Policy driven remote attestation | |
CN112579374B (zh) | 一种用于嵌入式设备的安全调试的系统和方法 | |
CN113407213B (zh) | 资源包更新方法、装置、设备及存储介质 | |
Hine et al. | Securing distributed computing against the hostile host |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |