概述
身份认证(暴力破解入门)
- 身份认证
- (一)基于口令的认证
- (二)双因子身份认证技术
- (三)数字签名技术
- (四)数字证书
- (五)公钥基础设施(PKI)
- (六)常见的Web认证攻击
- Hydra
- BurpSuite
- 破解Hash
- Crunch工具
身份认证
身份认证的目的是鉴别通信中另一端的真实身份,防止伪造和假冒等情况发生。进行身份认证的技术方法主要是密码学方法,包括使用对称加密算法、公开密钥密码算法、数字签名算法等。
对称加密算法是根据Shannon理论建立的一种变换过程,该过程将一个密钥和一个数据充分混淆和置乱,使非法用户在不知密钥的情况下无法获得原始数据信息。典型的对称加密算法包括DES和AES。
公钥密码算法需要2个密钥和2个算法:一个是公开密钥,用于对消息的加密;一个是私钥(私有密钥),用于对加密消息的解密。根据名称可以理解,公开密钥是一个能公开的密钥,而私钥只能由合法用户掌握。典型的公钥密码算法包括RSA公钥密码算法和数字签名标准DSS。
数字签名是公钥密码的一种应用,其工作原理是,用户使用自己的私钥对某个消息进行签名,验证者使用签名者的公开密钥进行验证,这样就实现了只有拥有合法私钥的人才能产生数字签名(不可伪造性)和得到用户公钥的公众才可以进行验证(可验证性)的功能。
(一)基于口令的认证
基于口令的认证方式。在最初阶段,用户首先在系统中注册自己的用户名和登录口令。系统将用户名和口令存储在内部数据库中,注意这个口令一般是长期有效的,因此也称为静态口令。
当进行登录时,用户系统产生一个类似于时间戳的东西,把这个时间戳使用口令和固定的密码算法进行加密,连同用户名一同发送给业务平台,业务平台根据用户名查找用户口令进行解密,如果平台能恢复或接收到那个被加密的时间戳,则对解密结果进行比对,从而判断认证是否通过;如果业务平台不能获知被加密的时间戳,则解密后根据一定规则(如时间戳是否在有效范围内)判断认证是否通过。静态口令的应用案例如本地登录Windows系统、网上博客、即时通信软件等。
基于口令的身份认证容易遭受如下安全攻击:
(1)字典攻击。 攻击者可以把所有用户可能选取的密码列举出来生成一个文件,这样的文件被称为“字典”。当攻击者得到与密码有关的可验证信息后,就可以结合字典进行一系列的运算,来猜测用户可能的密码,并利用得到的信息来验证猜测的正确性。
(2)暴力破解。 也称为“蛮力破解”或“穷举攻击”,是一种特殊的字典攻击。在暴力破解中所使用的字典是字符串的全集,对可能存在的所有组合进行猜测,直到得到正确的信息为止。
(3)键盘监听。 按键记录软件以木马方式植入到用户的计算机后,可以偷偷地记录下用户的每次按键动作,从而窃取用户输入的口令,并按预定的计划把收集到的信息通过电子邮件等方式发送出去。
(4)搭线窃听。 通过嗅探网络、窃听网络通信数据来获取口令。目前,常见的Telnet、FTP、HTTP 等多种网络通信协议均用明文来传输口令,这意味着在客户端和服务器端之间传输的所有信息(包括明文密码和用户数据)都有可能被窃取。
(5)窥探。 攻击者利用与用户接近的机会,安装监视设备或亲自窥探合法用户输入的账户和密码。窥探还包括在用户计算机中植入木马。
(6)社会工程学(Social Engineering)。 这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等设置心理陷阱进行诸如欺骗、伤害等手段,取得秘密信息的手法。
(7)垃圾搜索。 攻击者通过搜索被攻击者的废弃物(如硬盘、U 盘、光盘等),得到与口令有关的信息。
动态口令是指用户每次登录系统的口令都不一样,每个口令只使用一次,因而也叫一次性口令(OTP , One Time Password),具有“一次一密”的特点,有效保证了用户身份的安全性。但是如果客户端与服务器端的时间或次数不能保持良好的同步,就可能发生无法使用的问题。
OTP的原理: 采用一类专门的算法(如单向散列函数变化)对用户口令和不确定性因子(如随机数)进行转换生成一个一次性口令,用户将一次性口令连同认证数据提交给服务器。服务器接收到请求后,利用同样的算法计算出结果与用户提交的数据对比,对比一致则通过认证;否则认证失败。通过这种方式,用户每次提交的口令都不一样,即使攻击者能够窃听网络并窃取登录信息,但由于攻击每次窃取的数据都只有一次有效,并且无法通过一次性口令反推出用户的口令,从而极大地提升了认证过程的安全性。
OTP 从技术上可以分为3种形式:“挑战—应答”、时间同步和事件同步。
(1)“挑战—应答” 。 “挑战—应答”认证机制中,通常用户携带一个相应的“挑战—应答”令牌,令牌内置种子密钥和加密算法。用户在访问系统时,服务器随机生成一个挑战并将挑战数发送给用户,用户将收到的挑战数手工输入到“挑战—应答”令牌中,“挑战—应答”令牌利用内置的种子密钥和加密算法计算出相应的应答数,将应答数上传给服务器,服务器根据存储的种子密钥副本和加密算法计算出相应的验证数,和用户上传的应答数进行比较来实施认证。不过,这种方式需要用户输入挑战数,容易造成输入失误,操作过程较为繁琐。近年来,通过手机短信实现OTP验证码用得比较广泛。是目前主流的OTP验证方式,目前被广泛用于交易系统以及安全要求较高的管理系统中。
(2)时间同步。 原理是基于动态令牌和动态口令验证服务器的时间比对,基于时间同步的令牌,一般每60 s产生一个新口令,要求服务器能够十分精确地保持正确的时钟,同时对其令牌的晶振频率有严格的要求,这种技术对应的终端是硬件令牌。目前,大多数银行登录系统采用这种动态令牌登录的方式,用户持有一个硬件动态令牌,登录到系统时需要输入当前的动态口令以便后台实现验证。近年来,基于智能手机的软件动态令牌逐渐受到青睐,用户通过在智能手机上安装专门的客户端软件并由该软件产生动态口令完成登录、交易支付过程。例如,“支付宝”APP便是一款携带动态令牌的手机客户端软件。
(3)事件同步。 事件同步机制的动态口令原理是通过特定事件次序及相同的种子值作为输入,通过特定算法运算出相同的口令。事件动态口令是让用户的的密码按照使用的次数不断动态地发生变化。每次用户登录时(当作一个事件),用户按下事件同步令牌上的按键产生一个口令,与此同时系统也根据登录事件产生一个口令,两者一致则通过验证。与时钟同步的动态令牌不同的是,事件同步令牌不需要精准的时间同步,而是依靠登录事件保持与服务器的同步。因此,相比时间同步令牌,事件同步令牌适用于非常恶劣的环境中,即便是掉进水中也不会发生失步问题。
基于口令认证是目前使用最为广泛的身份认证技术,静态口令认证主要用于系统登录时的身份验证如门户网站、网上银行的登录。而在银行支付、网上银行转账、交易时一般采用静态口令+动态口令组合的方式进行认证。
(二)双因子身份认证技术
在一些对安全要求更高的应用环境,简单地使用口令认证是不够的,还需要使用其他硬件来完成,如U盾、网银交易就使用这种方式。在使用硬件加密和认证的应用中,通常使用双因子认证,即口令认证与硬件认证相结合来完成对用户的认证,其中,硬件部分被认为是用户所拥有的物品。使用硬件设备进行认证的好处是,无论用户使用的计算机设备是否存在木马病毒,都不会感染这些硬件设备,从而在这些硬件设备内部完成的认证流程不受木马病毒的影响,从而可提高安全性。但另一方面,这些额外的硬件设备容易丢失,因此,需要双因子认证;也容易损坏,因此,在增加成本的同时,也带来更多不便利。
实际应用中,每个用户均拥有一个仅为本人所有的唯一私钥,用于进行解密和签名操作,同时还拥有与接收方相应的公钥用于文件发送时进行加密操作。当发送一份保密文件时,发送方使用接收方的公钥对该文件内容进行加密,而接收方则能够使用自己所有的相应私钥对该文件进行解密,从而保证所发送文件能够安全无误地到达目的地,并且,即使被第三方截获,由于没有相应的私钥,该第三方也无法对所截获的内容进行解密。
(三)数字签名技术
数字签名(Digital Signatures)是签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果,该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。
由于签名与消息之间存在着可靠的联系,接收者可以利用数字签名确认消息来源以及确保消息的完整性、真实性和不可否认性。
(1)数据完整性: 由于签名本身和要传递的消息之间是有关联的,消息的任何改动都将引起签名的变化,消息的接收方在接收到消息和签名之后经过对比就可以确定消息在传输的过程中是否被修改,如果被修改过,则签名失效。这也显示出了签名是不能够通过简单的拷贝从一个消息应用到另一个消息上。
(2)真实性: 由于与接收方的公钥相对应的私钥只有发送方有,从而使接收方或第三方可以证实发送者的身份。如果接收方的公钥能够解密签名,则说明消息确实是发送方发送的。
(3)不可否认性: 签名方日后不能否认自己曾经对消息进行的签名,因为私钥被用在了签名产生的过程中,而私钥只有发送者才拥有,因此,只要用相应的公钥解密了签名,就可以确定该签名一定是发送者产生的。但是,如果使用对称性密钥进行加密,不可否认性是不被保证的。
数字签名可以用来提供多种安全服务,包括数据完整性、数据起源鉴别、身份认证以及非否认等。数字签名的一般过程如下。
(1)证书持有者对信息M做杂凑,得到杂凑值H。国际上公开使用的杂凑算法有MD5、SHA1等,在我国必须使用国家规定的杂凑算法。
(2)证书持有者使用私钥对H变换得到S,变换算法必须跟证书中的主体公钥信息中标明的算法一致。
(3)将S与原信息M一起传输或发布。其中,S为证书持有者对信息M的签名,其数据格式可以由国家相关标准定义,国际常用的标准有PKCS#7,数据中包含了所用的杂凑算法的信息。
(4)依赖方构建从自己的信任锚开始、信息发布者证书为止的证书认证路径并验证该证书路径。如果验证成功,则相信该证书的合法性,即确认该证书,确实属于声称的持有者。
(5)依赖方使用证书持有者的证书验证对信息M的签名S。首先使用S中标识的杂凑算法对M做杂凑,得到杂凑值H’;然后使用证书中的公钥对S变换,得到H"。比较H’与H",如果二者相等,则签名验证成功;否则签名验证失败。
数字签名的实施需要公钥密码体制,而公钥的管理通常需要公钥证书来实现,即通过公钥证书来告知他人所掌握的公钥是否真实。
(四)数字证书
数字签名可用于确认签名者身份的真实性,其原理与“挑战—响应”机制相同。为避免中间人攻击,基于数字签名的身份认证往往需要结合数字证书使用。例如,金融行业标准JR/T 0025.7《中国金融集成电路(IC)卡规范第七部分:借记贷记应用安全规范》规定了一种基于数字签名的动态数据认证(DDA)过程。
动态数据认证:一个三层的公钥证书方案。每一个IC卡公钥由它的发卡行认证,而认证中心认证发卡行公钥。这表明为了验证IC卡的签名,终端需要先通过验证2个证书来恢复和验证IC卡公钥,然后用这个公钥来验证IC卡的动态签名。
数字证书也称公钥证书,是由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。
最简单的数字证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般来说,数字证书主要包括证书所有者的信息、证书所有者的公钥、证书颁发机构的签名、证书的有效时间和其他信息等。数字证书的格式一般采用X.509国际标准,是广泛使用的证书格式之一。
数字证书提供了一种网上验证身份的方式,主要采用公开密钥体制,还包括对称密钥加密、数字签名、数字信封等技术。可以使用数字证书,通过运用对称和非对称密码体制等密码技术建立起一套严密的身份认证系统,每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密,这样信息就可以安全无误地到达目的地了。因此,保证了信息除发送方和接收方外不被其他人窃取;信息在传输过程中不被篡改;发送方能够通过数字证书来确认接收方的身份;发送方对于自己的信息不能抵赖。
数字证书采用公钥密码体制,公钥密码技术解决了密钥的分配与管理问题。在电子商务技术中,商家可以公开其公钥,而保留其私钥。购物者可以用人人皆知的公钥对发送的消息进行加密,然后安全地发送给商家,商家用自己的私钥进行解密。而用户也可以用自己的私钥对信息进行加密,由于私钥仅为本人所有,这样就产生了别人无法生成的文件,即形成了数字证书。采用数字证书,能够确认以下两点:
(1)保证信息是由签名者自己签名发送的,签名者不能否认或难以否认;
(2)保证信息自签发后至收到为止未曾做过任何修改,签发的文件是真实文件。
数字证书可以分为以下几类。
(1)服务器证书(SSL 证书): 被安装在服务器设备上,用来证明服务器的身份和进行通信加密。服务器证书可以用来防止欺诈钓鱼站点。SSL证书主要用于服务器(应用)的数据传输链路加密和身份认证,绑定网站域名,不同的产品对于不同价值的数据要求不同的身份认证。
(2)电子邮件证书: 用来证明电子邮件发件人的真实性。它并不证明数字证书上面 CN一项所标识的证书所有者姓名的真实性,它只证明邮件地址的真实性。收到具有有效电子签名的电子邮件,除了能相信邮件确实由指定邮箱发出外,还可以确信该邮件从被发出后没有被篡改过。另外,使用接收的邮件证书,还可以向接收方发送加密邮件。该加密邮件可以在非安全网络传输,只有接收方的持有者才可能打开该邮件。
(3)客户端个人证书: 主要被用来进行身份验证和电子签名。被存储在专用的智能密码钥匙中,使用时需要输入保护密码。使用该证书需要物理上获得其存储介质智能密码钥匙,且需要知道智能密码钥匙的保护密码,这也被称为双因子认证。这种认证手段是目前在Internet最安全的身份认证手段之一。
(五)公钥基础设施(PKI)
身份认证的目的是要确定对方的身份是否真实或合法。
为了达到这一目的,需要建立初始信任。但在网络环境下,建立信任意味着建立一条安全通道(单向的或双向的)。这一任务在公钥密码提出之前非常困难、代价很高。公钥密码提出后,人们可以通过公钥密码手段传递秘密密钥,但公钥的真实性又难以保证。为了满足网络环境陌生人之间安全通信的需求,通过可信第三方的公钥基础设施被提出来,这样,当陌生的A与B想要建立一条安全路径时,可以寻找共同信任的第三方,在可信第三方的帮助下实现A对B所拥有的公钥的鉴别,从而建立从B到A的安全通道。
公钥基础设施就是让可信第三方对用户的公钥签署证书,只要验证公钥证书的合法性,就可以相信公钥证书中所描述的公钥属主信息。
假定有一个证书签署中心(CA,Certification Authority)、一个证书注册中心(RA,Registration Authority)、一个复杂的存放证书的公共数据库。证书的签署和使用等包括下列几个过程。
(1)证书签署: 用户向CA证明自己的合法身份并提供公钥,CA对此公钥签署公钥证书。用户可以对公钥证书进行正确性验证。用户的公钥证书可以证明该公钥属于该用户,需要使用该用户公钥的人都可以在获取该证书后进行验证以确信公钥是真实的。
(2)证书存放: 将公钥证书放在一个标准数据库中,需要使用公钥证书的用户可以到该数据库查询。因此,当用户在申请到公钥证书时,需要到RA那里去注册, RA验证证书合法性后,将证书连同用户信息存放在证书数据库中。
(3)证书注销和更新: 当用户申请注销公钥证书时,用该公钥对应的私钥对一个固定格式的消息进行数字签名并传给RA,当RA验证签名合法后,将证书从数据库中删除,同时在一个叫做证书注销表(CRL)的数据库中添加被注销的证书信息。
(4)证书更新: 当用户需要更新自己的证书时,选取一个新的公钥,用原来公钥对应的私钥对新公钥进行签名,将签名信息传给CA,CA验证签名有效后签署一个新的公钥证书。用户再将该新公钥证书连同用原私钥签名的证书更新请求传给RA,RA在验证签名以及新证书的合法性后,将原来的证书从数据库中删除,添加新证书,同时在证书注销表中添加被注销的证书信息。
(5)证书的获取: 当其他用户需要某个用户的公钥证书时,向 RA 提出咨询请求。RA根据请求所给出的用户信息查找到公钥证书,然后将公钥证书传给咨询者。有时候,咨询者已经有某个用户的公钥证书,只想查看一下该公钥证书是否仍然有效,对这种需求,RA 只需检查CRL中是否包含所咨询的公钥证书的信息即可。为查询方便,每个公钥证书都有一个身份标识,因此,查询有效性时不需要把整个证书数据在网上传输,只需要传输证书的身份标识以及其是否被注销的信息即可。
(6)证书的验证: 当得到某个用户的证书后,需要验证证书的合法性,以确定证书中所含的公钥信息的真实性。当验证者和证书持有人有相同的CA时,这个问题很容易解决,因为验证者知道CA的公钥信息,通过验证CA在证书上的数字签名,即可确定证书的合法性。但是,当验证者和证书持有人没有相同的CA时,这个问题就变得复杂多了。正如前面的讨论,单一CA的假设是不合理的,在大的应用范围内,必将由多个CA来完成证书签署工作。但RA和证书数据库可以只有一个,或在逻辑上只有一个,即实际分布式的数据库,使用的用户感知不到它的结构。
对多个CA的情况,有几种不同的架构:自上而下的树状CA结构、双向树状CA结构、平级CA结构
(六)常见的Web认证攻击
用户枚举: 当输入错误的用户名提示账号不存在,输正确的用户名提示密码错误,从而枚举用户名。注册时系统提示用户名已注册或用户未注册,这可导致通过爆破方式来批量枚举用户。
使用工具进行暴力破解,当枚举出用户账号时,然后针对指定用户进行密码爆破,如果存在账号锁定这一策略,那么可制造脚本构造批量的恶意登录,导致大部分用户被锁(如管理员)无法正常登录后台业务。
字典攻击: 攻击者可以把所有用户可能选取的密码列举出来生成一个文件,这样的文件被称为“字典”。当攻击者得到与密码有关的可验证信息后,就可以结合字典进行一系列的运算,来猜测用户可能的密码,并利用得到的信息来验证猜测的正确性。暴力破解就是一种特殊的字典攻击。
SQL注入: 用户名字段或者密码字段存在sql注入,比较典型的万能密码登录,登录数据传输多采用post,这时候用burpsuite改包找寻注入点或者使用sqlmap进行探测。
Hydra
Hydra支持对30多种常见的网络服务或协议的破解(AFP、CiscoAAA验证、FTP、HTTP、POP3、SNMP、SSH、Telnet等)
hydra 192.168.100.129 ssh -l root -x 4:4:a -t 6 -v -f
不使用字典,纯暴力破解是一件极为困难的事情
破解Telnet:hydra 目标IP地址 telnet -l 用户名 -P 密码字典(路径) -s 23
破解IMAP:hydra -L 用户名字典(路径) -P 密码字典(路径) 目标地址 service imap
破解MySQL:hydra 目标IP地址 mysql -l root -P 密码字典(路径)
Hydra项目:https://github.com/vanhauser-thc/thc-hydra
BurpSuite
Tomcat版本超过7以上不能通过爆破,Tomcat和普通认证爆破不一样,需要base64位加密
破解Hash
hash-identifier
将加密之后的离散值输入,hash-identifiter会分析出该离散值的可能加密方法。
Hash ID
Crunch工具
- 字典中包含词汇的最小长度
- 字典中包含词汇的最大长度
- 字典中包含词汇所使用的字符(默认字符集只有小写字符)
crunch 4 4 qwer1234 -o /home/kali/Downloads/password2.txt(生成字典的存放路径)
最后
以上就是开心摩托为你收集整理的身份认证(暴力破解基础)身份认证的全部内容,希望文章能够帮你解决身份认证(暴力破解基础)身份认证所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复