GBT 22239-2019《信息安全技术 网络安全等级保护基本要求》中,8.1.4安全计算环境—身份鉴别项中要求包括:a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,并其中一种鉴别技术至少应使用密码技术来实现。弱口令/空口令对应身份鉴别项中要求a),所以安全控制点为身份鉴别a。GBT 28448-2019《信息安全技术 网络安全等级保护测评要求》中,测评单元(L3-CES1-01)a)测评指标:应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。b)测评对象:终端和服务器等设备中的操作系统(包括宿主机和虚拟机操作系统)、网络设备(包括虚拟网络设备)、安全设备(包括虚拟安全设备)、移动终端、移动终端管理系统、移动终端管理客户端、感知节点设备、网关节点设备、控制设备、业务应用系统、数据库管理系统、中间件和系统管理软件及系统设计文档等。2)应核查用户列表确认用户身份标识是否具有唯一性;3)应核查用户配置信息或测试验证是否不存在空口令用户;4)应核查用户鉴别信息是否具有复杂度要求并定期更换。弱口令/空口令属于测评单元(L3-CES1-01)中测评实施的第3、4项,故定测评单元为L3-CES1-01.3。查看系统是否采用了简单数字组合、常规等简单易猜解或空账户口令,如应用系统、中间件、数据库登录口令、服务器远程管理账户口令、guest账户、Axis2弱口令。目前,账号仍然是最主要的用户身份认证方式,但由于安全意识的淡薄,很多人仍在使用弱口令。而一旦泄漏,所有的安全防范机制都将形同虚设。弱口令没有严格的准确的定义,通常认为容易被人猜测到或者被破解工具破解的口令均为弱口令。比如仅简单的纯数字、简单的数字与字母组合的口令,123456、123qwe等。弱口令的产生与个人习惯与相关安全意识有关,为了避免忘记密码,通常会使用非常容易记住的密码,或者直接采用系统默认的密码等。使用弱口令可导致直接被猜解后登录系统。此代码为某系统后台的登录代码,可以看出用户名是admin、密码为admin888,这应该是管理员为了避免忘记密码,使用了一个非常容易记住的密码,安全意识不够。若攻击者使用弱口令TOP100对此系统进行爆破,就可以登录成功,获得后台权限。- 数据库服务:Mysql、MSSQL、Oracle、MongoDB、DB2等;
- 特殊含义的单词、好记的特殊字符组合、特殊含义的字母用数字替换等。
针对网站的弱口令,可以先手工进行猜解几个可能的弱口令,判断系统是否做了登录失败次数限制,若没有做此限制,就可以使用爆破工具进行爆破。收集相关信息,使用社工字典生成等工具创建针对该系统的字典,可对用户名、密码同时爆破,也可通过猜测的用户名登录失败后,系统返回的信息判断该账号是否存在,再针对存在的用户名进行密码爆破。但现在很多网站为了防止系统遭受暴力破解、DDOS攻击、识别用户身份等攻击,会使用验证码机制。通常在网站的用户注册、密码找回、登录等页面处使用验证码,但当这些验证码具有一定的规律性并且没有做好对应的防护措施时会导致攻击者通过爆破等方式猜解/绕过验证码机制,可导致任意用户注册、批量注册无用账户、重置任意用户密码、获取系统权限等危害。常见的验证码主要有图片验证码、邮件验证码、短信验证码、滑动验证码和语音验证码。短信验证码绕过
短信验证码暴力破解:
大部分情况短信验证码由4-6位纯数字组成。首先可以先抓取服务器向填写的手机号发送短信验证码的请求包,查看返回包中是否有明文的验证码,若有,可直接使用。若没有可先判断验证码为4位还是6位,且判断系统是否对验证码的失效时间和尝试失败次数做限制,若没有,攻击者就可以通过尝试对这个区间内所有的数字进行暴力破解。比如,若验证码为6位,先抓取验证码验证请求包,发送至BurpSuite的Intruder模块,将验证码的范围设置为0000-9999,对验证码进行暴力破解。短信验证码重复使用:
- 系统如果在验证码认证成功后没有将session及时清空,将会导致验证码首次认证后重复使用;
- 系统只是前端JS实现验证码,后台对验证码不进行验证,这种设置如同纸老虎,可直接爆破;
验证码客户端回显:
某些系统会将验证码在客户端生成而非在服务器生成。针对此类验证码,当客户端需要和服务器进行交互发送验证码时,可借助浏览器工具或抓包工具查看客户端与服务器进行交互的详细信息,可在返回包中查看到验证码。其他思路:
- 空验证码,某些系统即使不输入验证码也不影响正常的验证流程;
- 获取验证码的方式为通过参数的方式去加载,如:www.xxx.com/yanzheng.php?code=xxx,可以尝试将参数值改为undefined,即设为控制,也可以通过编写脚本的方式,获取验证码并传入验证流程。
弱口令字典合集
【进入公众号后台回复“弱口令工具包”,即可获取相应工具及字典】后台常见弱口令:
弱口令TOP100、弱口令TOP1000、用户名TOP500、键盘组合TOP100、符合条件的强弱密码合集等中间件常见弱口令:
数据库常见弱口令:
MySQL、SQL Server、DB2、Mongo DB、Oracle、PostgreSQL、SQLServer等。端口服务类弱口令:
3389、FTP、POP3、RDP、SMB、SNMP、TELNET、phpmyadmin、ssh、system等。
网络设备弱口令:
H3C、IOT、路由器、Wi-Fi、华为安全产品、国内防火墙默认密码等。
其他弱口令:
万能密码、后门密码、强弱字典组合、高效手机号码等。
工具
【进入公众号后台回复“弱口令工具包”,即可获取相应工具及字典】1、SNETCraker—超级弱口令检查工具
windows平台的一款支持自定义服务端口和字典的弱口令检查工具。 工具采用C#开发,需要安装.NET Framework 4.0。工具目前支持SSH、RDP、SMB、MySQL、SQLServer、Oracle、FTP、MongoDB、Memcached、PostgreSQL、Telnet、SMTP、SMTP_SSL、POP3、POP3_SSL、IMAP、IMAP_SSL、SVN、VNC、Redis等服务的弱口令检查工作。- 支持多种常见服务的口令破解,支持RDP(3389远程桌面)弱口令检查。;
- 支持批量导入IP地址或设置IP段,同时进行多个服务的弱口令检查;
- 程序自带端口扫描功能,可以不借助第三方端口扫描工具进行检查;
2、WebCrack——网站后台弱口令扫描工具
使用WebCrack可以对特定后台程序进行批量的弱口令爆破,当我们有一批统一程序的后台时,可以采用此工具或类似工具进行自动化的爆破。导入URL后可以直接爆破,需提前搜集好后台地址。3、hydra—弱口令爆破工具
hydra是著名黑客组织thc的一款开源的自动化的爆破工具,可以在线破解多种密码,已集成到kali中。支持:POP3、SMB、RDP、SSH、FTP、Telnet、Mysql、AFP、Cisco AAA、Cisco auth、CVS、FTP、MSSQL、NCP、NNTP、Oracle、PCNFS、IRC、LDAP等。4、Go-x-crack—一款GO编写的常见服务的弱口令扫描工具
是一款支持Windows、Linux双用的弱口令爆破工具。支持:FTP、SSH、SMB、MySQL、MSSQL、PostgreSQL、Redis等。5、domainWeakPasswdCheck—域账号弱口令审计工具
- 将domainWeakPasswdCheck放到一个杀软杀不到的地方,不然,mimikatz会被删除,无法获取到缓存的ST凭据;
6、WeblogicWeakPwd—Weblogic弱口令批量检测工具
WeblogicWeakPwd最终版仍有欠缺,在异常处理这块还需要完善,尤其是遇到非web logic的URL,所以推荐预识别中间件,可用之前发布过的weblogic识别脚本
https://github.com/rabbitmask/WhoIsWeblogic
进行识别,另外,因为多进程模块自有的小bug,尽可能在非交互界面下使用——使用命令窗口执行。
7、pydictor—字典创建工具
pydictor是一个使用python语言开发,遵循GPLv3协议的开源命令行工具,功能强大、简洁实用、适用场景多。- 完全使用python原生库写成不需要额外安装其他任何的python模块;
- 同时支持python2.7+和python3.4版本,支持Windows、Linux、macOS;
8、在线字典创建工具—针对单个账户的密码生成
利用这两个社工库密码生成工具,根据相关信息,生成一份具有针对性的密码字典。9、白鹿社工字典生成器—社工弱口令
依据此类社工弱口令组合的规律,编写成此款灵活和易用兼顾的字典生成器。10、BurpSuite模块
jsEncrypter扩展——解决密码被加密处理问题
客户端JS文件对密码做加密处理发送给服务端,推荐使用BurpSuite的扩展工具—jsEncrypter。11、reCAPTCHA扩展-验证码处理
测试案例1:某系统未设置验证码,使用BurpSuite的Intruder模块对用户名进行爆破;测试案例2:使用工具对某系统开放的服务进行弱口令爆破;测试案例3:利用验证码验证一次反复使用的缺陷,绕过验证码机制;测试案例1
使用BurpSuite的Intruder模块,设置用户名为变量,密码为123456,使用“用户名TOP500”字典进行爆破,发现大量密码为123456的弱口令用户。测试案例2
使用超级弱口令检查工具,爆破出系统的Memcached用户名和密码均为弱口令。测试案例3
确认验证码有效性。分别输入错误的验证码、正确的验证码,查看系统返回信息,判断系统验证码有效。
抓包,提交空验证码,返回信息如下图,验证后台是否对验证码进行了验证。
修改为错误的验证码,提示如下,说明后台对验证码也进行验证。
判断验证码是否存在过期的问题。刷新网页,获取新的验证码,将新的验证码继续输入到刚才抓取的数据包中。这时输入的是正确的验证码,系统应该返回用户名与密码不正确。
将用户名或密码随意更改一下,再进行提交,正常来说,系统应该返回验证码不正确,但系统返回信息与之前相同,为“用户名与密码不正确”。说明验证码被重复使用,一次验证反复使用,不存在过期的情况。- 进入系统管理后台修改数据,比如:考试成绩,电费水费。
开发、管理角度
口令强制安全策略:
在口令生成的时候,需要满足一定的安全策略,才会被系统接受,比如:(1)口令长度大于8位;
(2)口令应该为以下四类字符的组合:大写字母、小写字母、数字、特殊字符,每类字符至少包含一个;
(3)口令中不应该包含本人、父母、子女或配偶的姓名、出生日期、纪念日、登录名等与本人相关的信息,以及字典中的单词;
(4)口令不应该为用数字或符号代替某些字母的单词;
(5)口令不应该为连续的某个字符或重复某些字符的组合;
(6)不使用空口令或系统缺省口令;
(7)口令不得使用键盘上连续的数字、字母或字符;
(8)新密码不得与旧密码重复;
口令管理安全策略:
以上的口令生成策略、口令管理策略并不能完全规避弱口令的生成,比如:- 定期修改的密码,旧密码与新密码相比,可能只是对最后的尾数做了修改;
- 双因子的具体实现中,如果双重验证因子没有进行有效的限制,同样存在被爆破的可能;
- 验证码的自动识别以及人工打码,已经形成了一条黑色产业。
普通用户角度
- 尽量将办公使用密码和私人密码分别设置,避免“一损俱损”,并定期更换密码;
- 为防止忘记密码,可以采取记忆诀窍,用一句自己能够记忆的句子,例如“XX,你是最帅的”使用每个词的首字母加上标点符号来创建密码,就是“XX,nszsd”;
- 不同设备、系统等应使用不同的密码,以免遭受“撞库攻击”;
- 避免使用姓名、手机号、生日等信息做密码,远离社工危害;
- 禁止在服务器、办公电脑中存放网络设备资产信息及登录口令;
- 针对安全运维人员,应强制系统管理员账号密码强度必须达到一定的级别,并定期更换密码。
验证码机制加固:
- 限制单位时间内验证码的失败尝试次数,比如,五分钟内连续失败5次即锁定该账号1小时。
- 针对验证码认证次数问题,建议验证码在一次认证成功后,服务端清空认证成功的session,可有效防止验证码一次认证反复使用的问题。
- 禁止验证码在本地客户端生成,应采用服务器验证生成机制,且验证码应随机生成,使用一次即失效,可防止验证码客户端回显问题。
【进入公众号后台回复“弱口令工具包”,即可获取相应工具及字典】Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室。团队公众号自创建以来,共发布原创文章370余篇,自研平台达到26个,目有15个平台已开源。此外积极参加各类线上、线下CTF比赛并取得了优异的成绩。如有对安全行业感兴趣的小伙伴可以踊跃加入或关注我们。
文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247495842&idx=1&sn=ce2ee48d395177e11ff5a0dbc80a1647&chksm=ce5dd2c3f92a5bd5db7a8b30fee5ff6898bde5c28a76ddd83fd5043c8354654a766f40ad3106#rd
如有侵权请联系:admin#unsafe.sh