首页 / 专利库 / 广播 / 交互业务 / 攻击操作检测方法及装置

攻击操作检测方法及装置

阅读:722发布:2020-05-11

专利汇可以提供攻击操作检测方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种攻击操作检测方法,包括:抓取WEB 服务器 与 数据库 交互过程中的多条SQL语句;根据预置的各SQL模板依序组成的SQL模板序列,判断SQL语句是否对应为 访问 数据库中特定数据的登录操作;若是,则对应确定SQL模板序列所匹配的登录结果;从SQL语句中提取登录操作所对应的登录账户,并累计登录账户发生登录结果的次数;当登录账户发生登录结果的次数满足预设条件时,确定当前存在攻击操作。本发明还公开了一种攻击操作检测装置。本发明基于SQL协议进行攻击操作检测,因而可以适用于所有的数据库业务系统,并可有效保护用户或企业的数据安全。,下面是攻击操作检测方法及装置专利的具体信息内容。

1.一种攻击操作检测方法,其特征在于,所述攻击操作检测方法包括:
抓取WEB服务器数据库交互过程中的多条SQL语句;
根据预置的各SQL模板依序组成的SQL模板序列,判断所述SQL语句是否对应为访问所述数据库中特定数据的登录操作;
若所述SQL语句对应为访问所述数据库中特定数据的登录操作,则对应确定所述SQL模板序列所匹配的登录结果;
从所述SQL语句中提取所述登录操作所对应的登录账户,并累计所述登录账户发生所述登录结果的次数;
当所述登录账户发生所述登录结果的次数满足预设条件时,确定当前存在攻击操作,其中,所述攻击操作至少包括暴库操作或撞库操作。
2.如权利要求1所述的攻击操作检测方法,其特征在于,所述攻击操作检测方法还包括:生成SQL语句对应的SQL模板;
所述生成SQL语句对应的SQL模板包括:
抓取WEB服务器与数据库交互过程中的多条SQL语句;
采用词法分析识别所述SQL语句中的变量;
采用占位符替换所述SQL语句中的变量,得到所述SQL语句分别对应的SQL模板。
3.如权利要求1所述的攻击操作检测方法,其特征在于,所述攻击操作检测方法还包括:
在进行攻击操作检测之前,进行SQL模板序列训练,得到所述登录操作所对应的登录模板序列,所述登录模板序列包括登录成功模板序列、登录失败模板序列;
其中,若所述SQL模板序列与所述登录成功模板序列匹配,则所述登录结果为登录成功,若所述SQL模板序列与所述登录失败模板序列匹配,则所述登录结果为登录失败。
4.如权利要求3所述的攻击操作检测方法,其特征在于,所述当所述登录账户发生所述登录结果的次数满足预设条件时,确定当前存在攻击操作包括如下任意一种:
当所述登录结果为登录成功且所述登录账户在本次登录成功之前发生登录失败的次数达到第一预设次数时,确定当前存在暴库操作;
当所述登录结果为登录失败且所述登录账户在本次登录失败之前发生登录失败的次数达到第二预设次数时,确定当前存在暴库操作;
当所述登录结果为登录失败且所述登录账户在本次登录失败之前发生登录失败的次数未达到所述第二预设次数时,计算所有登录账户下登录成功的次数与登录失败次数的比值,若所述比值达到预设比值,则确定当前存在撞库操作。
5.如权利要求1至4中任一项所述的攻击操作检测方法,其特征在于,所述攻击操作检测方法还包括:
当确定当前存在暴库操作或撞库操作时,输出告警信息,其中,当存在暴库操作且所述登录结果为登录成功时,断开对应登录账户的所有数据连接。
6.一种攻击操作检测装置,其特征在于,所述攻击操作检测装置包括:
抓取模,用于抓取WEB服务器与数据库交互过程中的多条SQL语句;
判断模块,用于根据预置的各SQL模板依序组成的SQL模板序列,判断所述SQL语句是否对应为访问所述数据库中特定数据的登录操作;
匹配模块,用于当所述SQL语句对应为访问所述数据库中特定数据的登录操作时,对应确定所述SQL模板序列所匹配的登录结果;
累计模块,用于从所述SQL语句中提取所述登录操作所对应的登录账户,并累计所述登录账户发生所述登录结果的次数;
确定模块,用于当所述登录账户发生所述登录结果的次数满足预设条件时,确定当前存在攻击操作,其中,所述攻击操作至少包括暴库操作或撞库操作。
7.如权利要求6所述的攻击操作检测装置,其特征在于,所述攻击操作检测装置还包括:
生成模块,用于生成SQL语句对应的SQL模板;
所述生成模块包括:
抓取单元,用于抓取WEB服务器与数据库交互过程中的多条SQL语句;
识别单元,用于采用词法分析识别所述SQL语句中的变量;
替换单元,用于采用占位符替换所述SQL语句中的变量,得到所述SQL语句分别对应的SQL模板。
8.如权利要求6所述的攻击操作检测装置,其特征在于,所述攻击操作检测装置还包括:
训练模块,用于在进行攻击操作检测之前,进行SQL模板序列训练,得到所述登录操作所对应的登录模板序列,所述登录模板序列包括登录成功模板序列、登录失败模板序列;
其中,若所述SQL模板序列与所述登录成功模板序列匹配,则所述登录结果为登录成功,若所述SQL模板序列与所述登录失败模板序列匹配,则所述登录结果为登录失败。
9.如权利要求8所述的攻击操作检测装置,其特征在于,所述确定模块具体用于:
当所述登录结果为登录成功且所述登录账户在本次登录成功之前发生登录失败的次数达到第一预设次数时,确定当前存在暴库操作;
当所述登录结果为登录失败且所述登录账户在本次登录失败之前发生登录失败的次数达到第二预设次数时,确定当前存在暴库操作;
当所述登录结果为登录失败且所述登录账户在本次登录失败之前发生登录失败的次数未达到所述第二预设次数时,计算所有登录账户下登录成功的次数与登录失败次数的比值,若所述比值达到预设比值,则确定当前存在撞库操作。
10.如权利要求6至9中任一项所述的攻击操作检测装置,其特征在于,所述攻击操作检测装置还包括:
告警模块,用于当确定当前存在暴库操作或撞库操作时,输出告警信息,其中,当存在暴库操作且所述登录结果为登录成功时,所述告警模块还用于断开对应登录账户的所有数据连接。

说明书全文

攻击操作检测方法及装置

技术领域

[0001] 本发明涉及数据库安全技术领域,尤其涉及攻击操作检测方法及装置。

背景技术

[0002] 随着网络技术的不断发展,越来越多的用户私密信息被保存到个人账号下,一旦用户账号密码被泄露或者被攻破,轻则泄露所有个人信息,重则财产受到不可挽回的损失。例如CSDN账号泄露、12306账号泄露、携程网账号泄露等,无论是对个人还是企业,都造成了重大损害。因而保护用户信息安全,防止用户信息泄露,就成为了各大企业急需解决的一大难题。
[0003] 目前,暴库、撞库是常见的两种攻击手段,只要针对这两种攻击方式进行有效的防护,就能从很大程度上保护企业和用户的数据安全。而现有技术中常用的暴库撞库检测主要是基于HTTP协议的,通过分析用户登录发起的POST请求来获取当前用户的信息,然后通过POST的回包来判断登录是否成功,最后通过登录失败的次数来检测是否存在暴库或撞库等攻击行为。例如,张三这个用户,在10s内尝试使用不同的密码登录了100次,那就很有可能是正在被暴库。
[0004] 然而,尽管基于http协议的检测简单通用,但是由于近来越来越多的网站采用了SSL加密的方式,从用户到WEB SERVER之间无法获取到明文的HTTP数据,如果一定要采用这种方式,那么需要中间多做一次SSL代理,WEB SERVER需要配合调整数据流和其他一些设置,这是很多企业都难以接受的,尤其对于一些业务流量大,业务涉及面广的企业,因此现有攻击操作的检测方式的适用范围会越来越小,同时实施的可行性也较低。

发明内容

[0005] 本发明的主要目的在于提供一种攻击操作检测方法及装置,旨在解决现有技术中检测攻击操作的方式适用范围较小且实施不便的技术问题。
[0006] 为实现上述目的,本发明提供一种攻击操作检测方法,所述攻击操作检测方法包括:
[0007] 抓取WEB服务器与数据库交互过程中的多条SQL语句;
[0008] 根据预置的各SQL模板依序组成的SQL模板序列,判断所述SQL语句是否对应为访问所述数据库中特定数据的登录操作;
[0009] 若所述SQL语句对应为访问所述数据库中特定数据的登录操作,则对应确定所述SQL模板序列所匹配的登录结果;
[0010] 从所述SQL语句中提取所述登录操作所对应的登录账户,并累计所述登录账户发生所述登录结果的次数;
[0011] 当所述登录账户发生所述登录结果的次数满足预设条件时,确定当前存在攻击操作,其中,所述攻击操作至少包括暴库操作或撞库操作。
[0012] 优选地,所述攻击操作检测方法还包括:生成SQL语句对应的SQL模板;
[0013] 所述生成SQL语句对应的SQL模板包括:
[0014] 抓取WEB服务器与数据库交互过程中的多条SQL语句;
[0015] 采用词法分析识别所述SQL语句中的变量;
[0016] 采用占位符替换所述SQL语句中的变量,得到所述SQL语句分别对应的SQL模板。
[0017] 优选地,所述攻击操作检测方法还包括:
[0018] 在进行攻击操作检测之前,进行SQL模板序列训练,得到所述登录操作所对应的登录模板序列,所述登录模板序列包括登录成功模板序列、登录失败模板序列;
[0019] 其中,若所述SQL模板序列与所述登录成功模板序列匹配,则所述登录结果为登录成功,若所述SQL模板序列与所述登录失败模板序列匹配,则所述登录结果为登录失败。
[0020] 优选地,所述当所述登录账户发生所述登录结果的次数满足预设条件时,确定当前存在攻击操作包括如下任意一种:
[0021] 当所述登录结果为登录成功且所述登录账户在本次登录成功之前发生登录失败的次数达到第一预设次数时,确定当前存在暴库操作;
[0022] 当所述登录结果为登录失败且所述登录账户在本次登录失败之前发生登录失败的次数达到第二预设次数时,确定当前存在暴库操作;
[0023] 当所述登录结果为登录失败且所述登录账户在本次登录失败之前发生登录失败的次数未达到所述第二预设次数时,计算所有登录账户下登录成功的次数与登录失败次数的比值,若所述比值达到预设比值,则确定当前存在撞库操作。
[0024] 优选地,所述攻击操作检测方法还包括:
[0025] 当确定当前存在暴库操作或撞库操作时,输出告警信息,其中,当存在暴库操作且所述登录结果为登录成功时,断开对应登录账户的所有数据连接。
[0026] 进一步地,为实现上述目的,本发明还提供一种攻击操作检测装置,所述攻击操作检测装置包括:
[0027] 抓取模,用于抓取WEB服务器与数据库交互过程中的多条SQL语句;
[0028] 判断模块,用于根据各SQL模板依序组成的SQL模板序列,判断所述SQL语句是否对应为访问所述数据库中特定数据的登录操作;
[0029] 匹配模块,用于当所述SQL语句对应为访问所述数据库中特定数据的登录操作时,对应确定所述SQL模板序列所匹配的登录结果;
[0030] 累计模块,用于从所述SQL语句中提取所述登录操作所对应的登录账户,并累计所述登录账户发生所述登录结果的次数;
[0031] 确定模块,用于当所述登录账户发生所述登录结果的次数满足预设条件时,确定当前存在攻击操作,其中,所述攻击操作至少包括暴库操作或撞库操作。
[0032] 优选地,所述攻击操作检测装置还包括:生成模块,用于生成SQL语句对应的SQL模板;
[0033] 所述生成模块包括:
[0034] 抓取单元,用于抓取WEB服务器与数据库交互过程中的多条SQL语句;
[0035] 识别单元,用于采用词法分析识别所述SQL语句中的变量;
[0036] 替换单元,用于采用占位符替换所述SQL语句中的变量,得到所述SQL语句分别对应的SQL模板。
[0037] 优选地,所述攻击操作检测装置还包括:
[0038] 训练模块,用于在进行攻击操作检测之前,进行SQL模板序列训练,得到所述登录操作所对应的登录模板序列,所述登录模板序列包括登录成功模板序列、登录失败模板序列;
[0039] 其中,若所述SQL模板序列与所述登录成功模板序列匹配,则所述登录结果为登录成功,若所述SQL模板序列与所述登录失败模板序列匹配,则所述登录结果为登录失败。
[0040] 优选地,所述确定模块具体用于:
[0041] 当所述登录结果为登录成功且所述登录账户在本次登录成功之前发生登录失败的次数达到第一预设次数时,确定当前存在暴库操作;
[0042] 当所述登录结果为登录失败且所述登录账户在本次登录失败之前发生登录失败的次数达到第二预设次数时,确定当前存在暴库操作;
[0043] 当所述登录结果为登录失败且所述登录账户在本次登录失败之前发生登录失败的次数未达到所述第二预设次数时,计算所有登录账户下登录成功的次数与登录失败次数的比值,若所述比值达到预设比值,则确定当前存在撞库操作。
[0044] 优选地,所述攻击操作检测装置还包括:
[0045] 告警模块,用于当确定当前存在暴库操作或撞库操作时,输出告警信息,其中,当存在暴库操作且所述登录结果为登录成功时,所述告警模块还用于断开对应登录账户的所有数据连接。
[0046] 本发明中,通过抓取登录过程中产生的SQL语句序列进行登录识别,同时,为了让单个用户产生的登录SQL语句序列具有通用性,进一步把SQL语句抽成SQL模板,从而可应用到所有的账号登录识别中以及所有的数据库业务系统中。此外,进一步根据SQL语句序列所对应的SQL模板序列,确定当前登录结果,进而可有效降低误判,同时根据登录结果的相关信息,确定当前是否存在攻击操作,进而可有效保护用户或企业的数据安全。附图说明
[0047] 图1为本发明攻击操作检测实施原理示意图;
[0048] 图2为本发明攻击操作检测方法第一实施例的流程示意图;
[0049] 图3为本发明攻击操作检测方法中生成SQL模板的流程示意图;
[0050] 图4为本发明攻击操作检测方法第二实施例的流程示意图;
[0051] 图5为本发明攻击操作检测方法一实施例中登录模板序列自动学习流程示意图;
[0052] 图6为本发明攻击操作检测方法一实施例中登录模板序列智能识别流程示意图;
[0053] 图7为本发明攻击操作检测方法一实施例中登录模板序列匹配流程示意图;
[0054] 图8为攻击操作检测装置第一实施例的功能模块示意图;
[0055] 图9为攻击操作检测装置第二实施例的功能模块示意图;
[0056] 图10为本发明攻击操作检测装置第三实施例的功能模块示意图;
[0057] 图11为本发明攻击操作检测装置第四实施例的功能模块示意图。
[0058] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0059] 应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0060] 随着网络技术的不断发展,越来越多的用户私密信息被保存到个人账号下,而现有窃取用户账户信息的攻击手段主要有暴库、撞库两种手段,同时,现有暴库撞库检测技术主要是基于HTTP协议的,通过分析用户登录发起的POST请求来获取当前用户的信息,然后通过POST回包来判断登录是否成功,最后通过登录失败的次数来检测是否存在暴库撞库等攻击行为。而本发明则基于SQL协议进行检测,如图1所示。
[0061] 参照图2,图2为本发明攻击操作检测方法第一实施例的流程示意图。本实施例中,攻击操作检测方法包括:
[0062] 步骤S10,抓取WEB服务器与数据库交互过程中的多条SQL语句;
[0063] 本实施例具体应用于C/S架构,客户端基于HTTP协议访问WEB服务器,而WEB服务器则基于SQL协议访问内部数据库。同时,随着系统安全升级,使得大多数的网站都对传输数据进行了加密,进而使得基于HTTP协议的检测方式无法获知明文传输数据而不具有适用性。因此,本实施例具体基于SQL协议进行攻击操作检测。
[0064] 本实施例中,通过抓取WEB服务器与数据库交互过程中的多条SQL语句(至少两条SQL语句)来进行攻击操作检测,需要说明的是抓取的多条SQL语句在执行时具有先后顺序,进而可根据SQL语句执行的先后顺序确定当前所对应的操作,比如,第一条SQL语句进行登录名及密码校验,而第二条SQL语句则进行相应反馈,从而根据该SQL语句执行序列,即可确定当前操作为登录操作。本实施例中对于抓取SQL语句的方式不限,比如拦截WEB服务器与数据库之间的数据流并过滤SQL语句。
[0065] 此外,为了让单个用户产生的登录SQL语句序列具有通用性,进一步把SQL语句抽成SQL模板,从而可应用到所有的账号登录识别中以及所有的数据库业务系统中。本实施例中对于SQL模板的生成方式不限。
[0066] 步骤S20,根据预置的各SQL模板依序组成的SQL模板序列,判断SQL语句是否对应为访问数据库中特定数据的登录操作;
[0067] 本实施例中,由于各SQL语句之间具有执行先后顺序,因而SQL语句相对应的SQL模板同样具有先后顺序,进而组成SQL模板序列。此外,由于不同用户的登录操作通常具有通用特征,而该通用特征可通过SQL模板序列反映出来,因此,通过分析SQL模板序列即可判断当前SQL语句是否对应为访问数据库的登录操作。同时,进一步分析SQL语句中需要访问的数据表名称(比如USER为SQL数据库中通用的用户表名)即可确定当前SQL语句是否对应为访问数据库中特定数据。
[0068] 步骤S30,若SQL语句对应为访问数据库中特定数据的登录操作,则对应确定SQL模板序列所匹配的登录结果;
[0069] 本实施例中,登录结果存在多种情况且至少包括登录成功与登录失败,不同的登录结果必然对应不同的SQL模板序列,因此可预先设置各登录结果下所对应的SQL登录模板序列,若当前生成的SQL模板序列与预设的SQL登录模板序列相匹配,则可确定当前生成的SQL模板序列所对应的登录结果。
[0070] 本实施例中,通过SQL模板序列完成登录操作识别以及确定登录操作所对应的登录结果,从而可进一步进行攻击操作的检测。
[0071] 步骤S40,从SQL语句中提取登录操作所对应的登录账户,并累计登录账户发生登录结果的次数;
[0072] 步骤S50,当登录账户发生登录结果的次数满足预设条件时,确定当前存在攻击操作,其中,攻击操作至少包括暴库操作或撞库操作。
[0073] 本实施例至少可用于检测暴库、撞库等针对用户账户信息的攻击操作,具体通过分析登录账户发生相应登录结果的次数进行确定。本实施例具体从SQL语句中提取登录操作所对应的登录账户,并累计登录账户发生登录结果的次数,然后再分析登录账户发生相应登录结果的次数是否满足预设条件,从而确定当前是否存在攻击操作,比如暴库操作或撞库操作。
[0074] 例如,登录账户名张三在10s内尝试使用不同的密码登录了100次,则该账户名很有可能正处于暴库状态;或者根据整个系统中通过登录成功与登录失败的比例来分析是否存在撞库操作。
[0075] 本实施例中,通过抓取登录过程中产生的SQL语句序列进行登录识别,同时,为了让单个用户产生的登录SQL语句序列具有通用性,进一步把SQL语句抽成SQL模板,从而可应用到所有的账号登录识别中以及所有的数据库业务系统中。此外,进一步根据SQL语句序列所对应的SQL模板序列,确定当前登录结果,进而可有效降低误判,同时根据登录结果的相关信息,确定当前是否存在攻击操作,进而可有效保护用户或企业的数据安全。
[0076] 参照图3,图3为本发明攻击操作检测方法中生成SQL模板的流程示意图。基于上述实施例,本实施例中,生成SQL语句对应的SQL模板包括:
[0077] 步骤S101,抓取WEB服务器与数据库交互过程中的多条SQL语句;
[0078] 步骤S102,采用词法分析识别SQL语句中的变量;
[0079] 步骤S103,采用占位符替换SQL语句中的变量,得到SQL语句分别对应的SQL模板。
[0080] 本实施例中,在抓取到WEB服务器与数据库交互过程中原始SQL语句后,采用词法分析方式以识别抓取的原始SQL语句中的变量,然后再采用占位符替换原始SQL语句中的变量,进而得到对应的SQL模板,本实施例对于词法分析具体方式不限。此外,本实施例对于生成SQL模板的时间不限,比如既可以在进行攻击操作检测之前预先生成,也可以在进行攻击操作检测过程中同时生成,同时还可以在攻击操作检测结束后生成,具体根据实际需要进行设置。
[0081] 例如,原始SQL语句select*from user where name=“sf”and age>20,则通过词法分析可确定该原始SQL语句种的表名与表的列名是固定的,而每个用户的名称以及年龄是不同的,也即为该语句中的变量,然后再使用占位符替换原始SQL语句中的变量,比如使用占位符“?”替换变量sf、20,则对应得到的SQL模板为:select*from user where name=$?and age>$?。
[0082] 本实施例中,通过把SQL语句中的变量使用占位符进行替换后,便可产生SQL模板,同时SQL模板相对于SQL语句既可以节约存储空间,也可以降低SQL语句的复杂度,此外通过计算SQL模板的MD5或者CRC还可以实现SQL模板序列的快速匹配。
[0083] 参照图4,图4为本发明攻击操作检测方法第二实施例的流程示意图。本实施例中,在进行攻击操作检测之前,攻击操作检测方法还包括:
[0084] 步骤S00,进行SQL模板序列训练,得到登录操作所对应的登录模板序列,其中,登录模板序列包括登录成功模板序列、登录失败模板序列;若SQL模板序列与登录成功模板序列匹配,则登录结果为登录成功,若SQL模板序列与登录失败模板序列匹配,则登录结果为登录失败。
[0085] 在基于SQL协议的攻击操作检测中,由于每一条从WEB SERVER到DATABASE的SQL交互都无法快速定位到原始用户,同时也比较难判断是否为登录操作,以及确定当前登录操作是否成功或失败,因此,为了实施基于SQL协议的攻击操作检测,本实施例中具体通过SQL模板序列来判断登录操作以及区分用户登录成功和登录失败。
[0086] 本实施例中,SQL模板序列由至少两个有序的SQL语句产生,此外,为了可以准确区分用户登录成功和登录失败,因而还同时记录成功与失败两套模板序列,从而可有效降低误判。本实施例中,对于训练生成登录模板序列的方式不限。
[0087] 例如,采用自动学习机制进行SQL模板序列训练。如图5所示,比如登录模板学习由前端界面触发,用户只需要设置好测试用户的用户名,即可开启登录模板学习;然后用户在业务系统的登录界面,触发三种不同的登录:登录成功、密码错误和用户名错误,登录模板就可以生成了,用户确认后即可提交系统,以使得该套登录模板生效。自动学习主要是针对准确性要求高,而且SQL操作复杂的业务系统。
[0088] 此外,本实施例中还可以采用智能识别机制进行SQL模板序列训练,如图6所示,比如由内置的关键字集合对密码表名、用户名关键字和密码关键字进行智能识别而无需人工干预。内置的关键字集合可定时通过端进行更新。智能识别机制主要是针对简单而且通用的业务系统,例如基于DISCUZ模板的BBS论坛等,本方式可减少管理员的干预,而且准确性也能得到保障,对于内部有各种各样小业务系统的组织机构尤其有效。
[0089] 进一步地,在本发明攻击操作检测方法另一实施例中,具体根据登录账户发生登录结果的次数,确定当前存在攻击操作:
[0090] (1)当登录结果为登录成功且登录账户在本次登录成功之前发生登录失败的次数达到第一预设次数时,确定当前存在暴库操作;
[0091] (2)当登录结果为登录失败且登录账户在本次登录失败之前发生登录失败的次数达到第二预设次数时,确定当前存在暴库操作;
[0092] (3)当登录结果为登录失败且登录账户在本次登录失败之前发生登录失败的次数未达到第二预设次数时,计算所有登录账户下登录成功的次数与登录失败次数的比值,若比值达到预设比值,则确定当前存在撞库操作。
[0093] 本实施例中,针对一个用户,可以通过单位时间内的登录次数来判断是否发生暴库行为;而对于整个业务系统,则可以通过登录成功和登录失败的比例来判断是否存在撞库行为,进而便可有效保护了用户和企业的数据安全。
[0094] 进一步可选的,当确定当前存在暴库操作或撞库操作时,输出告警信息,其中,当存在暴库操作且登录结果为登录成功时,断开对应登录账户的所有数据连接。
[0095] 如图7所示,当完成SQL模板序列训练后,即可进行登录模板序列的匹配与暴库撞库检测(用户表为特定数据):
[0096] 1、如果匹配过程中命中了登录成功模板序列,那么当前是一个正常的登录操作,此时先提取SQL语句中的用户名,然后判断这个用户是否在这次成功登录之前有累加的登录失败次数;例如,张三在登录成功前,失败了6次,那么张三这个用户很可能已经被暴库成功了,因此向管理员发送相应告警信息并断开当前用户的所有连接;
[0097] 2、如果匹配过程中命中了登录失败模板序列,那么先提取SQL语句中的用户名,并对这个用户的失败次数进行累计,如果超过了预设值,那么这个用户很可能正处于暴库攻击状态,因此向管理员发送相应告警信息;
[0098] 3、命中登录失败模板序列后还需进一步累加全局的失败次数,如果全局的失败次数和成功次数的比值超过了预设值,那么当前系统正在处于撞库攻击状态,因此向管理员发送相应告警信息。
[0099] 参照图8,图8为攻击操作检测装置第一实施例的功能模块示意图。本实施例中,攻击操作检测装置包括:
[0100] 抓取模块10,用于抓取WEB服务器与数据库交互过程中的多条SQL语句;
[0101] 本实施例具体应用于C/S架构,客户端基于HTTP协议访问WEB服务器,而WEB服务器则基于SQL协议访问内部数据库。同时,随着系统安全升级,使得大多数的网站都对传输数据进行了加密,进而使得基于HTTP协议的检测方式无法获知明文传输数据而不具有适用性。因此,本实施例具体基于SQL协议进行攻击操作检测。
[0102] 本实施例中,通过抓取WEB服务器与数据库交互过程中的多条SQL语句(至少两条SQL语句)来进行攻击操作检测,需要说明的是抓取的多条SQL语句在执行时具有先后顺序,进而可根据SQL语句执行的先后顺序确定当前所对应的操作,比如,第一条SQL语句进行登录名及密码校验,而第二条SQL语句则进行相应反馈,从而根据该SQL语句执行序列,即可确定当前操作为登录操作。本实施例中对于抓取SQL语句的方式不限,比如拦截WEB服务器与数据库之间的数据流并过滤SQL语句。
[0103] 此外,为了让单个用户产生的登录SQL语句序列具有通用性,进一步把SQL语句抽成SQL模板,从而可应用到所有的账号登录识别中以及所有的数据库业务系统中。本实施例中对于SQL模板的生成方式不限。
[0104] 判断模块20,用于根据预置的各SQL模板依序组成的SQL模板序列,判断SQL语句是否对应为访问数据库中特定数据的登录操作;
[0105] 本实施例中,由于各SQL语句之间具有执行先后顺序,因而SQL语句相对应的SQL模板同样具有先后顺序,进而组成SQL模板序列。此外,由于不同用户的登录操作通常具有通用特征,而该通用特征可通过SQL模板序列反映出来,因此,通过分析SQL模板序列即可判断当前SQL语句是否对应为访问数据库的登录操作。同时,进一步分析SQL语句中需要访问的数据表名称(比如USER为SQL数据库中通用的用户表名)即可确定当前SQL语句是否对应为访问数据库中特定数据。
[0106] 匹配模块30,用于当SQL语句对应为访问数据库中特定数据的登录操作时,对应确定SQL模板序列所匹配的登录结果;
[0107] 本实施例中,登录结果存在多种情况且至少包括登录成功与登录失败,不同的登录结果必然对应不同的SQL模板序列,因此可预先设置各登录结果下所对应的SQL登录模板序列,若当前生成的SQL模板序列与预设的SQL登录模板序列相匹配,则可确定当前生成的SQL模板序列所对应的登录结果。
[0108] 本实施例中,通过SQL模板序列完成登录操作识别以及确定登录操作所对应的登录结果,从而可进一步进行攻击操作的检测。
[0109] 累计模块40,用于从SQL语句中提取登录操作所对应的登录账户,并累计登录账户发生登录结果的次数;
[0110] 确定模块50,用于当登录账户发生登录结果的次数满足预设条件时,确定当前存在攻击操作,其中,攻击操作至少包括暴库操作或撞库操作。
[0111] 本实施例至少可用于检测暴库、撞库等针对用户账户信息的攻击操作,具体通过分析登录账户发生相应登录结果的次数进行确定。本实施例具体从SQL语句中提取登录操作所对应的登录账户,并累计登录账户发生登录结果的次数,然后再分析登录账户发生相应登录结果的次数是否满足预设条件,从而确定当前是否存在攻击操作,比如暴库操作或撞库操作。
[0112] 例如,登录账户名张三在10s内尝试使用不同的密码登录了100次,则该账户名很有可能正处于暴库状态;或者根据整个系统中通过登录成功与登录失败的比例来分析是否存在撞库操作。
[0113] 本实施例中,通过抓取登录过程中产生的SQL语句序列进行登录识别,同时,为了让单个用户产生的登录SQL语句序列具有通用性,进一步把SQL语句抽成SQL模板,从而可应用到所有的账号登录识别中以及所有的数据库业务系统中。此外,进一步根据SQL语句序列所对应的SQL模板序列,确定当前登录结果,进而可有效降低误判,同时根据登录结果的相关信息,确定当前是否存在攻击操作,进而可有效保护用户或企业的数据安全。
[0114] 参照图9,图9为本发明攻击操作检测装置第二实施例的功能模块示意图。基于上述实施例,本实施例中,攻击操作检测装置还包括:
[0115] 生成模块60,用于生成SQL语句对应的SQL模板;
[0116] 本实施例中,生成模块60具体包括:
[0117] 抓取单元601,用于抓取WEB服务器与数据库交互过程中的多条SQL语句;
[0118] 识别单元602,用于采用词法分析识别SQL语句中的变量;
[0119] 替换单元603,用于采用占位符替换SQL语句中的变量,得到SQL语句分别对应的SQL模板。
[0120] 本实施例中,在抓取到WEB服务器与数据库交互过程中原始SQL语句后,采用词法分析方式以识别抓取的原始SQL语句中的变量,然后再采用占位符替换原始SQL语句中的变量,进而得到对应的SQL模板,本实施例对于词法分析具体方式不限。
[0121] 例如,原始SQL语句select*from user where name=“sf”and age>20,则通过词法分析可确定该原始SQL语句种的表名与表的列名是固定的,而每个用户的名称以及年龄是不同的,也即为该语句中的变量,然后再使用占位符替换原始SQL语句中的变量,比如使用占位符“?”替换变量sf、20,则对应得到的SQL模板为:select*from user where name=$?and age>$?。
[0122] 本实施例中,通过把SQL语句中的变量使用占位符进行替换后,便可产生SQL模板,同时SQL模板相对于SQL语句既可以节约存储空间,也可以降低SQL语句的复杂度,此外通过计算SQL模板的MD5或者CRC还可以实现SQL模板序列的快速匹配。
[0123] 参照图10,图10为本发明攻击操作检测装置第三实施例的功能模块示意图。基于上述实施例,本实施例中,攻击操作检测装置还包括:
[0124] 训练模块70,用于在进行攻击操作检测之前,进行SQL模板序列训练,得到登录操作所对应的登录模板序列,登录模板序列包括登录成功模板序列、登录失败模板序列;
[0125] 其中,若SQL模板序列与登录成功模板序列匹配,则登录结果为登录成功,若SQL模板序列与登录失败模板序列匹配,则登录结果为登录失败。
[0126] 在基于SQL协议的攻击操作检测中,由于每一条从WEB SERVER到DATABASE的SQL交互都无法快速定位到原始用户,同时也比较难判断是否为登录操作,以及确定当前登录操作是否成功或失败,因此,为了实施基于SQL协议的攻击操作检测,本实施例中具体通过SQL模板序列来判断登录操作以及区分用户登录成功和登录失败。
[0127] 本实施例中,SQL模板序列由至少2个有序的SQL语句产生,此外,为了可以准确区分用户登录成功和登录失败,因而还同时记录成功与失败两套模板序列,从而可有效降低误判。本实施例中,对于训练生成登录模板序列的方式不限。
[0128] 例如,采用智能识别机制进行SQL模板序列训练,如图6所示,比如由内置的关键字集合对密码表名、用户名关键字和密码关键字进行智能识别而无需人工干预。内置的关键字集合可定时通过云端进行更新。智能识别机制主要是针对简单而且通用的业务系统,例如基于DISCUZ模板的BBS论坛等,本方式可减少管理员的干预,而且准确性也能得到保障,对于内部有各种各样小业务系统的组织机构尤其有效。
[0129] 进一步地,在本发明攻击操作检测装置一实施例中,确定模块50具体用于:
[0130] (1)当登录结果为登录成功且登录账户在本次登录成功之前发生登录失败的次数达到第一预设次数时,确定当前存在暴库操作;
[0131] (2)当登录结果为登录失败且登录账户在本次登录失败之前发生登录失败的次数达到第二预设次数时,确定当前存在暴库操作;
[0132] (3)当登录结果为登录失败且登录账户在本次登录失败之前发生登录失败的次数未达到第二预设次数时,计算所有登录账户下登录成功的次数与登录失败次数的比值,若比值达到预设比值,则确定当前存在撞库操作。
[0133] 如图7所示,当完成SQL模板序列训练后,即可进行登录模板序列的匹配与暴库撞库检测:
[0134] 1、如果匹配过程中命中了登录成功模板序列,那么当前是一个正常的登录操作,此时先提取SQL语句中的用户名,然后判断这个用户是否在这次成功登录之前有累加的登录失败次数;例如,张三在登录成功前,失败了6次,那么张三这个用户很可能已经被暴库成功了;
[0135] 2、如果匹配过程中命中了登录失败模板序列,那么先提取SQL语句中的用户名,并对这个用户的失败次数进行累计,如果超过了预设值,那么这个用户很可能正处于暴库攻击状态;
[0136] 3、命中登录失败模板序列后还需进一步累加全局的失败次数,如果全局的失败次数和成功次数的比值超过了预设值,那么当前系统正在处于撞库攻击状态。
[0137] 参照图11,图11为本发明攻击操作检测装置第四实施例的功能模块示意图。本实施例中,攻击操作检测装置还包括:
[0138] 告警模块80,用于当确定当前存在暴库操作或撞库操作时,输出告警信息,其中,当存在暴库操作且登录结果为登录成功时,告警模块还用于断开对应登录账户的所有数据连接。
[0139] 本实施例中,为提升用户数据安全性,因此,在检测到暴库操作或撞库操作时,告警模块80进一步输出告警信息,以便于管理人员及时了解数据安全状况。此外,本实施例中,告警模块80进一步断开对应登录账户的所有数据连接以供进一步降低攻击操作对用户数据的影响。
[0140] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈