奇虎360高级安全研究员李福:别让黑客毁掉运维

作者简介:

李福

奇虎360 高级安全研究员

360 WEB攻防团队 0keeTeam 成员,拥有多年安全实战经验, 擅长渗透测试与漏洞挖掘。专注于安全评估,对各种漏洞利用和场景有独到的见解。BlackHat 2016演讲者。

前言

作者来自360信息安全部的 0KeeTeam,主要做企业级的深度测试,挖掘运维基础服务的漏洞,并通过漏洞做企业级的安全评估。

1、常见的安全风险

本文以攻击者的角度看,主要写一些可能因为运维的问题会导致攻击成功。比如说弱口令问题,听起来比较 low,但实际问题一直存在。

1.1 弱口令危害安全的入口之一

弱口令对于强密码,经常有人问我,怎样的密码才叫强? “密码要求8位以上,大小写加数字和字符,为什么还说这是弱口令”。

针对键盘序列生成的密码有多少人在使用呢? 如下图所示,左边的密码规律很明显,对照右边的键盘来看,就是按照这个键盘区位产生的密码,同类型的组合还有很多。

这个组合有限的,而且很多人也有这个习惯。攻击者在攻击企业的时候,重要的入口就是邮箱,OA 这些系统会使用这样的密码。那么弱口令的问题就是一个大问题了。

常见的密码组合,这边有四个规则:

第一种,修改密码的时候说不包含数字,不符合要求,后面加 123 或者 321 符合要求。

第二种,有可能说前面的长度不够再加长一点,123456 都是有可能的。

第三种,有可能运维提示,密码今年过期了,只能再修改一个,为了方便记忆修改加一个年份,如 2017 2016

第四种,密码组合加公司域名,大家可以想像自己的密码是不是包含公司的域名。

初始化的问题。大家看到图中,根据不同人员的类型设置测试密码。我们作为攻击者首先关注到了外包人员初始化密码的规则。

密码最简单的就是出生年月,这个攻击实现起来很简单,暴露破解账号,加上有限的生日密码字典。

1.2 弱口令扩大的安全伤害

除弱口令之外,还有信息收集。现有密码泄露情况来分析,可以分析出大的一些规则。有的人喜欢把生日放在密码组合里面,有的人喜欢把公司域名放在里面。

还有通过尝试,攻击者可以看到密码,从而进入比较重要的系统。有的人说密码比较长,很安全,我说能不能谦虚一点,他说我的密码 98% 的黑客是攻破不了的。

但当你100个人说这样的话,概率还是不足1/3的。当500个员工说密码比较强的时候,这个可能性是趋于零的。

有个互联网的公开案例,某银行因为弱口令导致服务器被攻破。攻击者猜出口令,user 是人名的拼音。

中国的大环境下不同的姓有可能拼音一样,经过相关数据统计可以统计前500,前1000使用任命组合转化成拼音,我们把它作为用户名的字典。

当时攻击者利用口令进入到系统以后,拿到服务器的权限,攻击者通过这台服务器作为入侵银行的跳板。

弱口令的问题一直存在,有必要引起各位的重视,不能掉以轻心。

2、Devops面临的安全风险

2.1 关于Github的一些问题

我没有写代码层面和技术层面的安全问题,我觉得系统漏洞和人工造成的漏洞,大家都是需要负责的。

聊一聊敏感信息泄露,在过去很长的时间里,大家可以利用 GitHub 随时随地方便修改代码

上图是运维,把自己的内容上传到 GitHub 上,代码中涉及到账号密码和数据库配置,还有可能涉及到有哪一些资产。

我上传的可以保证没有漏洞,密码都去掉了。关键性的算法都去掉,但有的黑客会仔细的审计你的代码风格,挖掘代码中的漏洞,然后再攻击系统。

我们现在做过长期监控,通过关键字搜索和长期的账户监控,我们会及时地发现员工上传代码到 GitHub,有敏感影响的我们会及时地联系他删除。

git 泄露,使用了 git 攻击后会留下 git 目录。攻击者利用现场的工具可以获取部分的代码,甚至是整个网站的源代码。DS-Store 会泄露路径的信息。

idea 对攻击者有非常有用的点,git、son 都是代码上传的工具,利用这两种方式可以获取网站的原代码。通过交换文件,可以完全地还原文件的内容。

特别巧的是,通常有人会去对你数据库配送文件。通过还原科技获取到数据库密码。代码备份,我打一个包,以日期命名或者当前的目录命名。

不管是数据库程序,在攻击者的眼里是很容易扫描到代码和数据库数据的。通过代码审计漏洞,然后通过代码获取敏感连接或者获取关键性的算法。

2.2 代码和流程问题

代码和流程问题。很多的开发人员说自己开发代码,为了更加方便在代码加入开关,看有哪一些数据输出输入。

测试完成以后没有问题就上线,代码还是线上代码。因为这个开关没有人会注意,但黑客倾向于发现这样的问题,为了方便,开关可能放在 Cookies 里面,或者在 git 请求里面。

有一个典型的例子,开源的 CMS 对外发布一个版本,在用户系统里每个人有用户空间。UID=1,这是用户空间。然后 git 请求下,会把用户信息给你打印出来。

数据库报错的信息,可以清楚地知道这个领域,也可以猜测你的数据库结构,知道你存储了哪一些东西,利用这些东西可以更加深层地挖掘漏洞。

2.3 其他的信息泄露风险

信息泄露另外的途径就是不可控的途径,我也不知道自己的信息和密码在互联网上有多少版本。

有一次通过密码泄露查到了初中时候使用的 QQ 号密码。我觉得比较惊喜和惊讶,对员工的攻击面是非常广的。很多人使用公司邮箱注册密码,我攻击企业肯定通过数据公开查询对比密码,然后再针对员工去攻击。

这个员工可能在互联网上有两三套密码,我都解决掉,在他的邮箱和网盘发现了敏感的内容。公司某某的电话多少,公司的通信录密码多少。

员工个人安全也是我们专注的,因为有人说自己是 360 的,个人邮箱和网盘被攻破了,我们认为这是安全的问题,因为网盘存储的内容和我们360相关。

GitHub 运维脚本,邮箱是否可以连通,使用了自己的账号和密码。比较配合地将内容上传到 GitHub,黑客用关键字搜索这家公司域名的时候,发现运维脚本,然后登录了统一认证系统,统一认证系统说手机二次验证,因为没有手机号。

攻击者通过邮箱的密码给了邮件,说我的手机号码换了,确认一下身份,我是某某,手机号换多少。手机号修改成攻击者自己的,经过了二次验证。

在内网核心的攻击是代码支持库,核心代码的 SVN 与 GitHub。后台系统在管理人员看来已经为所欲为。

3、运维躺过的那些坑

3.1 基础服务上的安全风险

基础服务的安全风险无非就是弱口令、未授权、配置不当。上图列的是代码备份的访问,连上去可以下代码和操作的。

通过未授权可以获得服务器的选项,因为可以执行系统命令。

3.2 如何去改进

  • 访问控制访问控制,办公网和测试网与生态环境要进行隔离。不能说现场服务器修改代码备份,我把测试服务器当现场服务器用。

    这里有一个典型的例子,有黑客对网站进行攻击的时候,发现测试系统存在弱口令,原因是因为测试环境和生产环境混在一起了导致存在弱口令,这样的问题很容易出现。

    另外同事之间不在自己的电脑上搭建外部服务或者说开启一些敏感端口,黑客入侵到内网的时候,会先入侵到内网的服务器。入侵办公网,这个概念又是不一样,因为个人电脑存储敏感信息比服务器更多。

  • 权限限制权限控制是最小权限,什么人可以用什么就给他什么用。明明做内部系统,为什么开放外网。运营的权限,为什么开管理员权限的后台。
  • 密码策略密码策略,弱口令和密码组合,通过信息泄露对系统和员工做口令攻击。更换周期尽量得到保证,因为无法确定你的密码是不是会被泄露。
  • 漏洞跟踪漏洞跟踪,已知的漏洞能修复就修复,有的漏洞修复后黑客无从下手。

4、总结

我作为攻击者,做安全评估时间很长。但自己总是站在防疫的角度看,安全是一个整体,细节再安全难免有疏忽。攻击者总是寻找薄弱点进行攻击,木桶原理。作为防御者我会以攻击者的角度来防御。

未知攻,焉知防。只有知道怎么攻击,才能更好地防御。

原文来自微信公众号:高效运维

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部