CN111984963A - 绕过自签证书校验的方法和装置 - Google Patents
绕过自签证书校验的方法和装置 Download PDFInfo
- Publication number
- CN111984963A CN111984963A CN202010761224.XA CN202010761224A CN111984963A CN 111984963 A CN111984963 A CN 111984963A CN 202010761224 A CN202010761224 A CN 202010761224A CN 111984963 A CN111984963 A CN 111984963A
- Authority
- CN
- China
- Prior art keywords
- target
- certificate
- bytecode
- preset
- self
- 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.)
- Granted
Links
Images
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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例公开了绕过自签证书校验的方法和装置。该方法的一具体实施方式包括:响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类;如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法;如果当前运行的方法是目标方法,将目标方法对应的可执行文件所在的内存的操作权限修改为可写;确定目标方法对应的字节码在内存中的位置,并将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验。该实施方式实现了利用动态修改字节码实现了高效率地绕过自签证书的限制,有助于达到对加密流量进行检测的目的。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及绕过自签证书校验的方法和装置。
背景技术
目前,一些应用程序(例如Android应用程序,包含病毒和木马应用)通常为了提高网络数据传输的安全性,通常采用HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)或WSS协议,这样会给恶意流量的检测带来困难。
为了能够检测Android ssl/tls加密流量内容,目前常用做法是:采用中间人方法对加密后的流量进行检测。由于Android通常会使用自签证书,预埋在应用当中代替CA(Certificate Authority)签发的证书参与ssl/tls握手,应用客户端需要重写ssl/tls握手过程中的证书校验流程,使用预埋证书代替CA证书去验证服务器,这种方式会导致中间人方法失效(原因是中间人工具生成的证书无法通过自签证书校验)。
证书的校验过程是通过实现X509TrustManager中的checkServerTrusted(checkClientTrusted)和getAcceptedIssuers来实现的,通常客户端只要实现checkServerTrusted和getAcceptedIssuers即可。
由于自签证书的存在,导致中间人的流量解密失败,无法进行下一步的流量检测,因此要采用中间人解密数据,必须解决自签证书引入的问题。目前常用做法是:一、采用xposed等hook框架,对证书校验部分进行hook,强制信任任何证书(如xposed的模块justtrustme等);二、重新打包apk,对证书校验部分代码进行修改,使其信任任意证书。这些修改都是需要反编译分析源码中所有校验签名的接口,一旦遇到应用本身实现的代码再加上代码混淆加壳,实现起来难度较大,且可能会出现遗漏、处理不全的情况。因此,无论是hook方式,还是重打包方式,都无法全面的处理应用中证书校验部分。
发明内容
本申请实施例的目的在于提出了一种改进的绕过自签证书校验的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请实施例提供了一种绕过自签证书校验的方法,该方法包括:响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类;如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法;如果当前运行的方法是目标方法,将目标方法对应的可执行文件所在的内存的操作权限修改为可写;确定目标方法对应的字节码在内存中的位置,并将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验。
在一些实施例中,在将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验之后,该方法还包括:对目标应用进行流量检测。
在一些实施例中,将目标方法对应的可执行文件所在的内存的操作权限修改为可写,包括:确定目标方法是否被预设编译方式进行了编译;如果被预设编译方式进行了编译,将目标方法的执行方式强制修改为解释执行;将目标方法对应的可执行文件所在的内存的操作权限修改为可写。
在一些实施例中,将目标方法的执行方式强制修改为解释执行,包括:将目标方法的用于修改执行方式的字段置为预设值。
在一些实施例中,确定目标应用是否采用了预设证书信任管理器类,包括:在用于定义类的方法中进行插桩,以检测目标应用是否采用了预设证书信任管理器类。
在一些实施例中,确定当前运行的方法是否为用于校验自签证书的目标方法,包括:在用于链接代码的方法中进行插桩,以检测当前方法的名称是否为目标方法的名称。
在一些实施例中,目标方法包括以下至少一种:用于校验访问端证书的方法、用于设置可接受的证书信任发行人的方法。
在一些实施例中,将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验,包括:将用于校验访问端证书的方法的字节码修改为第一目标字节码,以使用于校验访问端证书的方法无返回值;将用于设置可接受的证书信任发行人的方法的字节码修改为第二目标字节码,以使用于设置可接受的证书信任发行人的方法返回空。
第二方面,本申请实施例提供了一种绕过自签证书校验的装置,该装置包括:第一确定模块,用于响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类;第二确定模块,用于如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法;权限修改模块,用于如果当前运行的方法是目标方法,将目标方法对应的可执行文件所在的内存的操作权限修改为可写;字节码修改模块,用于确定目标方法对应的字节码在内存中的位置,并将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验。
第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实现方式描述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一实现方式描述的方法。
本申请实施例提供的绕过自签证书校验的方法和装置,通过在目标应用启动时,如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法,如果是,将目标方法对应的可执行文件所在的内存的操作权限修改为可写,并且在内存中的位置,将目标方法对应的字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验,从而利用动态修改字节码实现了高效率地绕过自签证书的限制,有助于达到对加密流量进行检测的目的。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的绕过自签证书校验的方法的一个实施例的流程图;
图3是根据本申请的绕过自签证书校验的装置的一个实施例的结构示意图;
图4是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请实施例的绕过自签证书校验的方法的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101,网络102和服务器103。网络102用以在终端设备101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101通过网络102与服务器103交互,以接收或发送消息等。终端设备101上可以安装有各种通讯客户端应用,例如搜索类应用、网页浏览器应用、购物类应用、即时通信工具等。
终端设备101可以是各种电子设备,包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。
服务器103可以是提供各种服务的服务器,例如对终端设备101收发的数据流量进行监控后台服务器。后台服务器可以向终端设备提供各种数据(例如向终端设备101发送各种应用安装包)。
需要说明的是,本申请实施例所提供的绕过自签证书校验的方法一般由终端设备101执行,相应地,绕过自签证书校验的装置一般设置于终端设备1013中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,其示出了根据本申请的应绕过自签证书校验的方法的一个实施例的流程200。该方法包括以下步骤:
步骤201,响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类。
在本实施例中,绕过自签证书校验的方法的执行主体(例如图1所示的终端设备)可以响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类。
需要说明的是,在诸如Android等系统中,类中的方法会在首次被加载时初始化。因此,本申请实施例可以应用在初始化过程中。
其中,目标应用可以是上述执行主体从其包括的各种应用中确定的应用,该应用安装本实施例进行处理后可以让自签证书的校验。作为示例,在安装应用时,系统会生成应用的唯一标识(UID),通过判断当前启动的应用的唯一标识,可以确定出当前启动的应用是否为目标应用。
上述预设证书信任管理器类用于提供校验证书的接口,作为示例,预设证书信任管理器类可以为X509TrustManager。
上述执行主体可以在目标应用启动过程中,实时检测应用程序的运行情况,以确定是否采用了预设证书信任管理器类。
在本实施例的一些可选的实现方式中,上述执行主体可以在用于定义类的方法中进行插桩,以检测目标应用是否采用了预设证书信任管理器类。作为示例,上述用于定义类的方法可以为ClassLinker中的DefineClass方法,DefineClass用于进行类的加载,然后调用LoadMethod方法可以对类中的方法进行加载,在DefineClass中通过插桩,检测是否直接或间接实现了X509TrustManager(直接继承自X509TrustManager Interface或者其继承的某个类继承了X509TrustManager Interface)。
需要说明的是,插桩技术是目前方法使用的公知技术,这里不再赘述。本实现方式通过在用于定义类的方法中进行插桩检测是否采用了预设证书信任管理器类,可以精确地对目标应用进行检测,准确地、高效地确定是否采用了预设证书信任管理器类,提高实现绕过自签证书的效率。
步骤202,如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法。
在本实施例中,如果采用了预设证书信任管理器类,上述执行主体可以确定当前运行的方法是否为用于校验自签证书的目标方法。
具体地,在目标应用启动后,操作系统会实时检测当前运行的方法是否为用于校验自签证书的目标方法。需要说明的是,这里运行的方法是指为完成某个特定功能的代码段在运行时执行的过程,在一些编程语言中,也可以称为函数,因此,这里描述的“目标方法”不限定某种编程语言或系统,凡是与本方案中描述的“目标方法”的功能相同的概念,均在本申请的保护范围内。
在本实施例的一些可选的实现方式中,目标方法可以包括以下至少一种:用于校验访问端证书的方法、用于设置可接受的证书信任发行人的方法。上述两种方法均用于在客户端对证书进行校验。具体地,作为示例,上述用于校验访问端证书的方法和用于设置可接受的证书信任发行人的方法所属的类可以分别继承自X509TrustManager,例如checkServerTrusted、getAcceptedIssuers等。如果某个类中存在这两个方法,且这个类间接或直接继承自X509TrustManager,那么这两个方法就是用来校验证书的。
本实现方式通过确定当前运行的方法是否为上述两种方法中的至少一种,可以快速、准确地对目标方法进行拦截,从而有助于快速、准确地进行绕过字签证书校验的操作。
在本实施例的一些可选的实现方式中,确定当前运行的方法是否为用于校验自签证书的目标方法,包括
在用于链接代码的方法中进行插桩,以检测当前方法的名称是否为目标方法的名称。
作为示例,在Android系统中,用于链接代码的方法可以为LinkCode方法,在该方法中进行插桩,可以实时检测当前运行的方法的名称是否为目标方法的名称。通过在用于链接代码的方法中进行插桩,可以快速、准确地检测出目标方法,有助于提高绕过字签证书校验的操作的效率。
步骤203,如果当前运行的方法是目标方法,将目标方法对应的可执行文件所在的内存的操作权限修改为可写。
在本实施例中,如果当前运行的方法是目标方法,上述执行主体可以将目标方法对应的可执行文件所在的内存的操作权限修改为可写。
具体地,目标方法运行后可以生成对应的可执行文件,例如在Android系统中,会生成DEX文件。上述执行主体可以对DEX文件所在的内存的操作权限由默认的只读修改为可写。
在本实施例的一些可选的实现方式中,步骤203可以如下执行:
首先,确定目标方法是否被预设编译方式进行了编译。
其中,预设编译方式用于将生成的可执行文件(例如DEX文件)编译成汇编指令。作为示例,预设编译方式可以为oat编译。
然后,如果被预设编译方式进行了编译,将目标方法的执行方式强制修改为解释执行。
由于本方案通常采用的是解释执行的指令(例如smali指令),因此,需要将目标方法的执行方式强制修改为解释执行。
最后,将目标方法对应的可执行文件所在的内存的操作权限修改为可写。
将内存的操作权限修改为可写是目前广泛使用的公知技术,这里不再赘述。
本实现方式通过在目标方法被预设编译方式进行编译时,将目标方法的执行方式强制修改为解释执行,使目标方法的执行方式与其他方法一致,有助于为后续的修改字节码提供支持。
在本实施例的一些可选的实现方式中,上述执行主体可以按照如下步骤将目标方法的执行方式强制修改为解释执行:
将目标方法的用于修改执行方式的字段置为预设值。作为示例,可以将目标方法的entry_point_from_quick_compiled_code_字段设置为NULL,从而可以使目标方法的执行方式改为解释执行。本实现方式通过设置用于修改执行方式的字段,可以快速、准确地修改目标方法的执行方式。
步骤204,确定目标方法对应的字节码在内存中的位置,并将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验。
在本实施例中,上述执行主体可以确定目标方法对应的字节码在内存中的位置,并将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验。
其中,预设字节码用于使目标方法的返回值为特定值,从而可以在目标应用运行时,无法对自签证书进行校验。
在本实施例的一些可选的实现方式中,上述执行主体可以按照如下步骤将字节码修改为预设字节码:
将用于校验访问端证书的方法的字节码修改为第一目标字节码,以使用于校验访问端证书的方法无返回值。
作为示例,上述用于校验访问端证书的方法为checkServerTrusted,如果checkServerTrusted发现证书有问题,就会抛出异常,从而导致ssl握手失败,无法建立连接。将该方法的字节码修改为0E00(即第一目标字节码),则可以将checkServerTrusted方法的内容替换为空,阻断签名校验流程,在对证书签名校验不通过的情况下,不返回任何值(return void)后,即就算证书有问题,也不会抛出异常。
将用于设置可接受的证书信任发行人的方法的字节码修改为第二目标字节码,以使用于设置可接受的证书信任发行人的方法返回空。
作为示例,上述用于设置可接受的证书信任发行人的方法为getAcceptedIssuers。如果上述checkServerTrusted不做校验证书,则getAcceptedIssuers无意义,通过修改字节码为12001100,使其返回空(null)。
本实现方式通过使用于校验访问端证书的方法无返回值,以及使用于设置可接受的证书信任发行人的方法返回空,可以快速、高效地绕过对自签证书的校验。
在本实施例的一些可选的实现方式中,在步骤204之后,上述执行主体还可以继续对目标应用进行流量检测。由于执行了上述步骤201-步骤204之后,系统绕过了自签证书的校验,因此,可以实现对加密流量的实时检测,提高了流量检测的全面性。
本申请的上述实施例提供的方法,通过在目标应用启动时,如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法,如果是,将目标方法对应的可执行文件所在的内存的操作权限修改为可写,并且在内存中的位置,将目标方法对应的字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验,从而利用动态修改字节码实现了高效率地绕过自签证书的限制,有助于达到对加密流量进行检测的目的。
进一步参考图3,作为对上述各图所示方法的实现,本申请提供了一种绕过自签证书校验的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例的绕过自签证书校验的装置300包括:第一确定模块301,用于响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类;第二确定模块302,用于如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法;权限修改模块303,用于如果当前运行的方法是目标方法,将目标方法对应的可执行文件所在的内存的操作权限修改为可写;字节码修改模块304,用于确定目标方法对应的字节码在内存中的位置,并将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验。
在本实施例中,第一确定模块301可以响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类。
需要说明的是,在诸如Android等系统中,类中的方法会在首次被加载时初始化。因此,本申请实施例可以应用在初始化过程中。
其中,目标应用可以是上述装置300从其包括的各种应用中确定的应用,该应用安装本实施例进行处理后可以让自签证书的校验。作为示例,在安装应用时,系统会生成应用的唯一标识(UID),通过判断当前启动的应用的唯一标识,可以确定出当前启动的应用是否为目标应用。
上述预设证书信任管理器类用于提供校验证书的接口,作为示例,预设证书信任管理器类可以为X509TrustManager。
上述第一确定模块301可以在目标应用启动过程中,实时检测应用程序的运行情况,以确定是否采用了预设证书信任管理器类。
在本实施例中,如果采用了预设证书信任管理器类,上述第二确定模块302可以确定当前运行的方法是否为用于校验自签证书的目标方法。
具体地,在目标应用启动后,操作系统会实时检测当前运行的方法是否为用于校验自签证书的目标方法。需要说明的是,这里运行的方法是指为完成某个特定功能的代码段在运行时执行的过程,在一些编程语言中,也可以称为函数,因此,这里描述的“目标方法”不限定某种编程语言或系统,凡是与本方案中描述的“目标方法”的功能相同的概念,均在本申请的保护范围内。
在本实施例中,如果当前运行的方法是目标方法,上述权限修改模块303可以将目标方法对应的可执行文件所在的内存的操作权限修改为可写。
具体地,目标方法运行后可以生成对应的可执行文件,例如在Android系统中,会生成DEX文件。上述权限修改模块303可以对DEX文件所在的内存的操作权限由默认的只读修改为可写。
在本实施例中,字节码修改模块304可以确定目标方法对应的字节码在内存中的位置,并将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验。
其中,预设字节码用于使目标方法的返回值为特定值,从而可以在目标应用运行时,无法对自签证书进行校验。
在本实施例的一些可选的实现方式中,上述装置300还可以包括:检测模块(图中未示出),用于对目标应用进行流量检测。
在本实施例的一些可选的实现方式中,权限修改模块303可以包括:第一确定单元(图中未示出),用于确定目标方法是否被预设编译方式进行了编译;第一修改单元,用于如果被预设编译方式进行了编译,将目标方法的执行方式强制修改为解释执行;第二修改单元(图中未示出),用于将目标方法对应的可执行文件所在的内存的操作权限修改为可写。
在本实施例的一些可选的实现方式中,第一修改单元可以进一步用于:将目标方法的用于修改执行方式的字段置为预设值。
在本实施例的一些可选的实现方式中,第一确定模块301可以进一步用于:在用于定义类的方法中进行插桩,以检测目标应用是否采用了预设证书信任管理器类。
在本实施例的一些可选的实现方式中,第二确定模块302可以进一步用于:在用于链接代码的方法中进行插桩,以检测当前方法的名称是否为目标方法的名称。
在本实施例的一些可选的实现方式中,目标方法包括以下至少一种:用于校验访问端证书的方法、用于设置可接受的证书信任发行人的方法。
在本实施例的一些可选的实现方式中,字节码修改模块304可以包括:第三修改单元(图中未示出),用于将用于校验访问端证书的方法的字节码修改为第一目标字节码,以使用于校验访问端证书的方法无返回值;第四修改单元(图中未示出),用于将用于设置可接受的证书信任发行人的方法的字节码修改为第二目标字节码,以使用于设置可接受的证书信任发行人的方法返回空。
本申请的上述实施例提供的装置,通过在目标应用启动时,如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法,如果是,将目标方法对应的可执行文件所在的内存的操作权限修改为可写,并且在内存中的位置,将目标方法对应的字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验,从而利用动态修改字节码实现了高效率地绕过自签证书的限制,有助于达到对加密流量进行检测的目的。
下面参考图4,其示出了适于用来实现本申请实施例的电子设备的计算机系统400的结构示意图。图4示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图4所示,计算机系统400包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有系统400操作所需的各种程序和数据。CPU401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所述的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一确定模块、第二确定模块、权限修改模块和字节码修改模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,第一确定模块还可以被描述为“用于响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类的模块”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:响应于目标应用启动,确定目标应用是否采用了预设证书信任管理器类;如果采用了预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法;如果当前运行的方法是目标方法,将目标方法对应的可执行文件所在的内存的操作权限修改为可写;确定目标方法对应的字节码在内存中的位置,并将字节码修改为预设字节码以使目标应用运行时绕过自签证书的校验。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (11)
1.一种绕过自签证书校验的方法,其特征在于,所述方法包括:
响应于目标应用启动,确定所述目标应用是否采用了预设证书信任管理器类;
如果采用了所述预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法;
如果所述当前运行的方法是目标方法,将所述目标方法对应的可执行文件所在的内存的操作权限修改为可写;
确定所述目标方法对应的字节码在所述内存中的位置,并将所述字节码修改为预设字节码以使所述目标应用运行时绕过所述自签证书的校验。
2.根据权利要求1所述的方法,其特征在于,在所述将所述字节码修改为预设字节码以使所述目标应用运行时绕过所述自签证书的校验之后,所述方法还包括:
对所述目标应用进行流量检测。
3.根据权利要求1所述的方法,其特征在于,所述将所述目标方法对应的可执行文件所在的内存的操作权限修改为可写,包括:
确定所述目标方法是否被预设编译方式进行了编译;
如果被所述预设编译方式进行了编译,将所述目标方法的执行方式强制修改为解释执行;
将所述目标方法对应的可执行文件所在的内存的操作权限修改为可写。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标方法的执行方式强制修改为解释执行,包括:
将所述目标方法的用于修改执行方式的字段置为预设值。
5.根据权利要求1所述的方法,其特征在于,所述确定所述目标应用是否采用了预设证书信任管理器类,包括:
在用于定义类的方法中进行插桩,以检测所述目标应用是否采用了预设证书信任管理器类。
6.根据权利要求1所述的方法,其特征在于,所述确定当前运行的方法是否为用于校验自签证书的目标方法,包括:
在用于链接代码的方法中进行插桩,以检测当前方法的名称是否为所述目标方法的名称。
7.根据权利要求1-6之一所述的方法,其特征在于,所述目标方法包括以下至少一种:用于校验访问端证书的方法、用于设置可接受的证书信任发行人的方法。
8.根据权利要求7所述的方法,其特征在于,所述将所述字节码修改为预设字节码以使所述目标应用运行时绕过所述自签证书的校验,包括:
将所述用于校验访问端证书的方法的字节码修改为第一目标字节码,以使所述用于校验访问端证书的方法无返回值;
将所述用于设置可接受的证书信任发行人的方法的字节码修改为第二目标字节码,以使所述用于设置可接受的证书信任发行人的方法返回空。
9.一种绕过自签证书校验的装置,其特征在于,所述装置包括:
第一确定模块,用于响应于目标应用启动,确定所述目标应用是否采用了预设证书信任管理器类;
第二确定模块,用于如果采用了所述预设证书信任管理器类,确定当前运行的方法是否为用于校验自签证书的目标方法;
权限修改模块,用于如果所述当前运行的方法是目标方法,将所述目标方法对应的可执行文件所在的内存的操作权限修改为可写;
字节码修改模块,用于确定所述目标方法对应的字节码在所述内存中的位置,并将所述字节码修改为预设字节码以使所述目标应用运行时绕过所述自签证书的校验。
10.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010761224.XA CN111984963B (zh) | 2020-07-31 | 2020-07-31 | 绕过自签证书校验的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010761224.XA CN111984963B (zh) | 2020-07-31 | 2020-07-31 | 绕过自签证书校验的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984963A true CN111984963A (zh) | 2020-11-24 |
CN111984963B CN111984963B (zh) | 2022-05-20 |
Family
ID=73444996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010761224.XA Active CN111984963B (zh) | 2020-07-31 | 2020-07-31 | 绕过自签证书校验的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984963B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022116587A1 (zh) * | 2020-12-02 | 2022-06-09 | 上海哔哩哔哩科技有限公司 | Web端数据签名方法、装置及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170063841A1 (en) * | 2015-08-27 | 2017-03-02 | Sony Corporation | Trusting intermediate certificate authorities |
CN106933645A (zh) * | 2017-01-17 | 2017-07-07 | 深圳市能信安科技股份有限公司 | 一种Apk安全风险自动化静态审计系统以及方法 |
CN107330332A (zh) * | 2017-05-23 | 2017-11-07 | 成都联宇云安科技有限公司 | 一种针对安卓手机app的漏洞检测方法 |
US20180234390A1 (en) * | 2017-02-12 | 2018-08-16 | Noam Camiel | System and method for the separation of systems that work together |
-
2020
- 2020-07-31 CN CN202010761224.XA patent/CN111984963B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170063841A1 (en) * | 2015-08-27 | 2017-03-02 | Sony Corporation | Trusting intermediate certificate authorities |
CN106933645A (zh) * | 2017-01-17 | 2017-07-07 | 深圳市能信安科技股份有限公司 | 一种Apk安全风险自动化静态审计系统以及方法 |
US20180234390A1 (en) * | 2017-02-12 | 2018-08-16 | Noam Camiel | System and method for the separation of systems that work together |
CN107330332A (zh) * | 2017-05-23 | 2017-11-07 | 成都联宇云安科技有限公司 | 一种针对安卓手机app的漏洞检测方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022116587A1 (zh) * | 2020-12-02 | 2022-06-09 | 上海哔哩哔哩科技有限公司 | Web端数据签名方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111984963B (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bhat et al. | A survey on various threats and current state of security in android platform | |
Jung et al. | Repackaging attack on android banking applications and its countermeasures | |
US9721101B2 (en) | System wide root of trust chaining via signed applications | |
Yang et al. | Automated generation of event-oriented exploits in android hybrid apps | |
CN111163095B (zh) | 网络攻击分析方法、网络攻击分析装置、计算设备和介质 | |
CN110688428B (zh) | 用于发布智能合约的方法和装置 | |
CN111163094B (zh) | 网络攻击检测方法、网络攻击检测装置、电子设备和介质 | |
Blasco et al. | Automated generation of colluding apps for experimental research | |
Liu et al. | Iotverif: Automatic verification of SSL/TLS certificate for IoT applications | |
Ibrahim et al. | SafetyNOT: on the usage of the SafetyNet attestation API in Android | |
Gadyatskaya et al. | Security in the Firefox OS and Tizen mobile platforms | |
Yang et al. | Breaking and fixing mobile app authentication with OAuth2. 0-based protocols | |
CN111737687A (zh) | 网页应用系统的访问控制方法、系统、电子设备和介质 | |
CN113886825A (zh) | 代码检测方法、装置、系统、设备及存储介质 | |
Yankson et al. | Security assessment for Zenbo robot using Drozer and mobSF frameworks | |
CN111984963B (zh) | 绕过自签证书校验的方法和装置 | |
US11431727B2 (en) | Security of code between code generator and compiler | |
CN108563953B (zh) | 一种安全可扩展的可信应用开发方法 | |
CN106648770B (zh) | 一种应用程序安装包的生成方法、加载方法及装置 | |
CN116094793A (zh) | 基于数据证书建立运营中心与安全设备连接的方法及系统 | |
CN113114681B (zh) | 测试报文处理方法、装置、计算机系统及可读存储介质 | |
Khadiranaikar et al. | Improving Android application security for intent based attacks | |
Titze et al. | Preventing library spoofing on android | |
Cho et al. | A strengthened android signature management method | |
CN113761587A (zh) | 用于签名校验的方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |