基于Hydra的远程服务器密码探测技术及防御措施研究

2020-07-22 09:37:20徐国天中国刑事警察学院
警察技术 2020年4期
关键词:解码黑客报文

徐国天 中国刑事警察学院

引言

互联网上存在种类齐全、数量繁多的各类网络服务器,如存储文件资源的FTP服务器、存储电子邮件的SMTP服务器、存放网站的Web服务器,存储商品信息的数据库服务器、完成域名转换任务的DNS服务器等等。这些服务器是互联网的关键组成元素,承担了重要的职责,也是黑客攻击的主要目标。攻击者尝试通过暴力探测的方式得到远程服务器的登录密码,进而窃取其上存储的敏感信息、篡改重要数据、种植木马程序,甚至完全控制目标服务器。因此研究针对远程服务器的密码暴力探测攻击方式及其防御措施对维护信息网络安全、打击此类违法犯罪活动有重要意义。

“黑雨”是早期比较知名的一种远程服务器密码暴力探测工具,其设计思想如图1(a)所示。它在一条TCP连接内测试密码字典中的所有密码,直至找到正确的密码或所有密码测试一遍,未找到匹配密码。在设计之初这款软件取得了较大成功,成为最知名的远程服务器密码探测工具。但随着服务器软件版本升级,目前这种攻击软件已经失效,原因如图1(b)所示。现有服务器软件不允许在一条TCP连接内测试大量密码,几个密码登录失败之后,服务器会发出一个RST报文将这条TCP连接异常中断。TCP连接中断之后“黑雨”软件自动结束运行,再次启动后仍然是从密码字典起始密码开始测试,这导致“黑雨”软件无法完成密码探测任务。

目前比较有效的远程服务器密码暴力探测工具是Hydra。Hydra一词原指古希腊神话中的怪物“九头蛇”,它天生九个头,传说哪个头被砍掉后会立即生长出一个新的头,因此被看作是不死的怪物。密码暴力探测工具Hydra与怪物九头蛇有共同的特征,它使用多条TCP连接进行密码测试,某条连接被异常中断之后会自动生成一条新的TCP连接,下文将对基于Hydra的远程服务器密码探测技术进行研究。

一、基于Hydra的远程服务器密码探测技术

Hydra运行后会生成多条TCP连接,每条TCP连接只测试几个密码,当服务器发出RST报文关闭这条TCP连接后,Hydra会自动生成一条新的TCP连接,从密码字典中断位置继续测试任务,直至所有密码被测试一遍,或者找出了正确的登录密码。Hydra支持几乎所有协议的在线密码探测,密码探测的关键在于是否具有一个强大的字典文件。

二、HTTP-POST参数提交方式分析

目前互联网上各种类型的网站数量众多、功能齐全,如电子商务站点、OA信息发布站点、网络游戏站点、政府机关企事业单位的门户网站等。这些站点均为用户分配了相应的账户信息,只有通过登录认证之后,才可以浏览、使用相应的资源。各类网页中登录密码的探测成为黑客关注的焦点,一些中、小规模站点(如政府机关、企事业单位门户网站)未设置验证码识别,同时未进行登录次数限制,Hydra可以针对这类站点进行密码探测。

以HTTP-GET方式提交的参数会出现在客户主机的浏览器地址栏中,一些敏感信息例如账户名、密码等不适合采用这种方式提交。这些敏感信息通常以POST方式提交给Web服务器,下面举例说明。

如图3所示,在上面的例子中,客户首先向服务器发出一个GET请求报文,请求获取“login.html”。服务器通过一个HTTP应答报文将“login.html”返回给客户。客户主机的浏览器将“login.html”解释为一个登录窗口,包含输入用户名、密码的文本框和确定按钮。

客户输入用户名、密码,单击确定按钮之后,客户机以HTTP-POST方式将账户信息发送给服务器端的“user.asp”。“user.asp”使用Request.form()方法读出用户名(peter)和密码(2480),然后通过一条Select数据库查询语句到User数据表中进行检索,发现与第一条记录匹配,于是“user.asp”将“peter”用户的相关信息通过一个HTTP的应答数据报返回给客户。

客户提交给服务器的HTTPPOST请求报文如图4所示。HTTP首部的第一行表明提交方式为POST,Referer参数表明在这之前客户访问了“login.html”,客户提交的账户信息包含在HTTP数据部分。

三、Hydra探测网页密码设计思路分析

用户登录网站存在成功和失败两种情况,这两种情况下网站返回的应答数据存在差别,Hydra在提交一组账户、密码之后,通过检测网站的返回数据可以确定登录是否成功。因此使用Hydra探测网页密码的关键环节是提取出登录成功和登录失败两种情况下服务器应答数据的区别,并将这种区别设置到Hydra软件中,使其能够识别不同情况。

登录失败情况下的通信流程如图5所示,首先Hydra模拟客户提交了一组错误的账户、密码数据,服务器返回的第一个数据包是响应代码为100的HTTP-continue类型应答报文。第二个报文是响应代码为200的HTTP-OK报文,在这个数据包中携带了一段Vbscript脚本,它的作用是弹出一个对话框,显示内容为ERROR,内容长度为32个字节。登录成功状态下服务器返回的应答数据中通常不会存在ERROR字符串,并且应答报文的长度也不会是32字节,因此这两个数值可以尝试作为区分登录成功和失败情况下的采集点。

登录成功情况下的通信数据如图6所示,可见服务器返回的应答数据中不存在ERROR字符串,并且应答报文的长度也不是32字节,进一步说明之前确定的采集点正确。Hydra只要识别出应答报文中不存在ERROR或32字符串,即认定登录成功,否则认定登录失败。

并不是所有网页密码都可以使用Hydra进行探测,Hydra只能识别响应代码为200的HTTP-OK报文中携带的应答数据,而不能识别其它类型响应代码中的数据。图7显示的例子中,无论登录成功与否,服务器均返回代码为302的HTTP-Object moved应答报文,这类网页密码就不能使用Hydra进行探测。

使用Hydra探测网页密码的执行流程如图8所示。首先任意输入一组账户信息,登录网站,捕获登录失败报文。如果应答报文响应代码为302,则该站点不能进行密码探测。

如果黑客具有一组正确的登录账户信息,则可以捕获一组成功登录数据报,通过比较成功和失败情况下服务器返回的应答数据,可以准确计算出两者的区别,获得采集点。如果没有合法账户信息,则需要估算采集点,例如可以将应答报文的长度值作为采集点。最后使用密码字典循环探测,直至探测成功,或结束测试。

四、基于Hydra的远程Web服务器密码探测攻击实例

下面举例说明使用Hydra探测网页密码。准备工作包括以Host-only方式启动两台Windows虚拟机,一台作为被攻击的网站服务器,另一台作为攻击者使用的计算机,配置IP地址实现网络通信,在服务器端安装一个测试用网站。

(一)在黑客主机端捕获登录失败的通信数据,确定采集点

在黑客主机端访问网站登录页面输入一个真实存在的用户名“jack”,密码随意输入,点击登录。同时使用wireshark捕获通信数据。在测试当中Wireshark会捕获大量通信数据,为了便于分析,可以将特定TCP数据流提取出来。方法如下:首先定位POST数据包,账户和密码就包含在这类数据包中,单击编辑,选择查找数据帧,在过滤文本框中输入POST,选择在String中查找,单击确定。在定位到的POST数据包上单击鼠标右键,选择“follow tcp stream”,可以提取出这条TCP通信流上传递的数据。

提取出的TCP流数据如图9所示,这里显示的是每个数据包的应用层内容。可以确定登录页面URL地址为“/356e/access.asp”,包含登录用户名和密码的POST数据为“username=jack&password=123456&url=login.asp&imageField.x=20&imageField.y=3”,服务器返回的第二个应答报文响应代码为200,确定数据采集点为95。这些信息主要用于后面的密码探测。

(二)生成字典文件

这里使用名为Superdic的字典生成工具形成一个电话号码字典文件。选择基本字符集,由于电话号码由数字组成,因此字符集选择数字。

(三)使用Hydra探测密码

这里使用7.4版Hydra进行密码探测。如果在Win xp系统上使用8.1版Hydra,需要安装Vc2005_x86。Hydra软件的命令格式为:Hydra -l 用户名-P字典文件-w超时间隔-t线程数-f-v 192.168.0.3 http-post-form “URL:账户数据格式:错误返回值”。相关参数可以从第一步的Wireshark分析结果中提取。

形成的探测指令如下:hydra -l jack -P c:superdic.txt -f-v192.168.0.3 http-post-form "/356e/access.asp:username=jack&password=^PASS^&url=login.asp&imageField.x=24&imageFie ld.y=2:95"。显示探测出的密码为86982480,如图10所示。

五、密码探测防御措施及其面临的安全问题

(一)采用行为验证和无感验证防止密码探测

为了防止恶意网络攻击和网络刷单行为,早期采用图形文字验证码或简单的数学题等方式来识别提出访问请求的是机器还是人类,理论基础是“只有人类能识别图像中的文字,完成数学运算”。但随着人工智能的快速发展,机器已经能够准确识别图像中的文字,完成简单的算数运算。黑客可以采用人工方式或自动识别方式来获取验证码。人工方式是密码探测过程中,每测试一组密码,将获得的验证码图片发给一个人工解码员,人工解码员使用手机等终端识别验证码,并将识别结果返回给黑客。这种方式下,黑客需要为人工解码员支付服务费。人工解码服务一般由另一伙黑灰产业集团经营。自动解码服务是黑客将图片验证码发送给自动解码系统,解码系统将识别结果返回给黑客主机。上述方式均可绕过图文验证码这道安全屏障。

短信验证码在一定程度上克服了图文验证码存在的不足,用户登录时输入手机号码,只有正确提交平台发出的短信验证码,才允许用户登录,这一措施比较有效地防止机器自动批量登录平台。但是短信验证方式也可以人工自动解码,还面临着短信被拦截的风险。同时,对于用户来说,每次登录都要查看手机短信,也带来不便捷的体验。

目前,无感验证和行为验证越来越多地应用于网络平台的登录验证。无感验证是通过采集用户的屏幕滑动,键盘输入等行为数据,通过对这些数据进行统计分析来识别提交访问请求的是机器还是人类,甚至能根据使用习惯识别出具体人员信息,目前已有比较成熟的无感认证产品。行为验证主要有拖动式和点触式验证,拖动式就是提示用户将滑块拖动到指定位置,点触式是根据提示信息,依次点击图片中的文字或数字,进而完成人机识别。在实际应用当中,可以将行为验证和无感验证结合应用,大量用户可以通过无感验证进行识别,对这部分用户来说感觉不到验证过程。无感验证无法有效识别的部分登录用户,如新用户或潜在的恶意用户,可采用行为验证方式加以判断。这种结合的验证方式在增强网络防护的同时,也带来了便捷的用户体验。

(二)限制IP地址登录失败次数

网络服务器可以采用限制某一IP地址的登录失败次数来防止密码探测,网上银行普遍采用这一措施防止密码探测。这种方法是限制客户的登录次数,如客户连续登录失败三次,则将账户锁定24小时。银行采用的安全限制比较严格,一般的Web服务器在用户连续登录失败后,会将账户锁定几分钟,之后用户可以再次尝试登录。这样一个简单的防御机制可以有效解除密码探测威胁。

六、结语

早期的探测技术是在一条TCP连接内测试多组账户密码对,随着操作系统的升级和漏洞修补,这种方式已经失效。Hydra采用的是在一条TCP连接内只测试一组账户信息的方法,当这条TCP连接被异常阻断之后,立即产生一条新的TCP连接继续测试。这种方式对一些中小规模Web、FTP、邮件服务器和网站系统比较有效,但当网站采取了图片验证码、错误登录次数限制等措施后,这一技术也将失效。目前互联网上出现了利用自动解码平台和自动代理切换技术来绕过验证码和登录次数的限制,已经出现了这方面的实际案例,并造成较大影响,后续笔者将对这类新型攻击的检测和取证技术加以研究。

猜你喜欢
解码黑客报文
基于J1939 协议多包报文的时序研究及应用
汽车电器(2022年9期)2022-11-07 02:16:24
欢乐英雄
趣味(数学)(2022年5期)2022-07-29 03:24:22
多少个屁能把布克崩起来?
趣味(数学)(2022年5期)2022-07-29 03:24:22
《解码万吨站》
CTCS-2级报文数据管理需求分析和实现
网络黑客比核武器更可怕
解码eUCP2.0
中国外汇(2019年19期)2019-11-26 00:57:32
浅析反驳类报文要点
中国外汇(2019年11期)2019-08-27 02:06:30
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机