还在用传统的防火墙、IPS还防护网络安全?现在弱爆了,因为攻击已经自动化了!了解更多详细,请查看下面乌云安全峰会神秘嘉宾猪猪侠的主题演讲《自动化攻击背景下的过去、现在与未来》。
以下是猪猪侠的演讲全文:
大家下午好!非常高兴有机会在这里和大家分享一个关于自动化攻击的议题。这个议题主要会从过去、现在、未来三个不同的时间跨度来介绍各自背景下的攻击的发展状况。
议题一,会引用到我经常用的做实例,附带讲几个小研究,还会披露安全现状,也希望使大家的安全意识提升那么一丁点儿。我先做一下调查,在座的有谁是在甲方的?有在乙方做安全研究的?有多少人是做开发的?这么少人,其他的人是干吗的?
我先介绍一下,在乌云ID上的猪猪侠是我的昵称,有八年的从业经历,擅长Web安全,数据挖掘。我的微博就是这个,会后有什么问题的话可以发私信给我。
开始议题之前,我想讲一下我的安全观。今天我们大谈信息安全的时候肯定都离不开互联网,互联网到底是什么呢?我理解的互联网就是信息。信息做什么用?信息的一个用处就是交换。所以可以用八个字总结互联网,就是连接彼此,交换信息。
而互联网下的信息安全就是保护信息在交换、传递过程中的完整性、可用性和保密性。因为互联网的特性是无时无刻都在发起连接和请求,所以黑客在选择攻击对象的时候不会在意你是谁,而是你有没有与目标系统进行信息交换,或者间接对目标系统发起连接的请求。
也就是说,如果耦合度越高的系统,也就是关联程度越高的系统,被攻击的可能性越大。有时候可能某个公司由于单个系统存在某个安全缺陷或者是用户帐号存在一个微弱的问题,都会导致整个网络被入侵。
更深入一点去了解互联网的话我们会发现,信息传递的客体对象,社会信息背后的属性都和人有关。说到人,因为在中国是没有良好的信息安全培训,就是安全培训机制的,就是普通网民安全意识还是比较低的。更重要的是有些人的愚蠢根本就没有补丁可打。这个是近年来很典型的APT案例,会发现,其中有一半,70%以上最终问题都出在人的身上。
2003年、2004年那个时候我刚如行,当时是IS和ASP的天下,记得那个时候,当时只要手上有每小时旁注的工具有可以做到想黑哪里黑哪里。那个时候比较流行的WEB程序是动议和动网,就是有天动网报出一个信息的时候,你黑动网的话来找到攻击目标,找到论坛就找出管理员的密码。
从现在看过去的玖,以前的工具来来去去就那么几个,还都是图形界面的,如果想用脚本调用的话根本没法儿调用。所以那个时候的工具流程都是很简单的一步一步,没有什么新意。过去可以总结成一个《三字经》,无非就是:进谷歌,找记录,没记录,找旁注,没旁注,猜目录,没目录,就嗅探,找后台,穷枚举,传小马,放大马,偷密码,挂页面,提权限,扫内网。个人感觉现在要攻击一个网站是越来越容易,我一直都想实现一个扫描器,只要你点一下鼠标就会黑下一堆服务器,直到我用上了一哥一整套分布式扫描框架之后,再套上一点脚本,这个想法就实现了。
就开始可以点一下鼠标黑一堆服务器。先讲一下这个扫描器的特点,先用模块化高可扩展,系统、服务、组件指纹标准化入库,高覆盖率,重新定义网络边界。
这里是整个扫描器的控制台,被红色框起来的是信息搜集模块,右边是扫描主机的管理模块,就是你只要把主机添加,设置好它的IP,然后设置好进程点保存,扫描任务就会分发下去。
黄色那块是任务管理模块,主要是用来添加扫描任务的,然后还可以查看扫描节点的完成状态。完成框里面主要是漏洞利用模块,可以用来配置一些Web下的识别规则或者管理一些漏洞管理代码或者测试脚本。大致上整个扫描器的结构就是这样,接下来我会逐个介绍里面的一个一个功能。
先讲一下流程,就是你添加一个目标,然后会有脚本自动分析这个目标,目标可以是IP段也可以是一个域名,目标分解后会有信息分析脚本去做全面扫描,把系统、网络或者网站的信息全部放到数据库里,接下来漏洞利用脚本选择适合自己条件的目标进行测试,验证后是否存在,如果存在的话会返回结果到数据库。
使用扫描器之前需要给扫描器设置一个目标,这里只要填写一个你想扫描的IP,然后截出IP,设置好扫描参数以后,看这个参数和MIKE很像,因为后台就用的MIKE,设置好这几个信息之后点保存,整个扫描任务就会开始,然后你要做的就是等待扫描器返回漏洞结果。
这里就是把域名当做扫描目标,如果你想黑乌云的话,你只要把乌云域名打上,点保存,它自动就会去黑乌云了,后台的大致工作流程,第一步,它会检查一下这个域名有没有存在DNS预漏洞,如果存在的话就会自动利用那些信息。
如果不存在,就会利用定义好的去穷检域名,还会有一个脚本去在Google上爬,就采集乌云底下的二级域名,搜集完这些域名之后,接着会有对应的域名把这些写成一个一个IP,当获得这些之后把整个C段一下加到扫描堆里了,会不某个域名或者某个公司的MX加到C段里。当得到IP后,引擎里会查出每个IP对应的域名传到数据库,然后就会开始整个漏洞扫描,之后要做的结果就是等待扫描完成,然后看有哪些漏洞。这里是信息搜集查询界面所要保持IP所对应的类型,所使用的什么版本。
这里是更细化了一点,可以看到它的搜集能力还是非常强的,细化到每个小版本。这里可以查询每个主机开放哪些端口,端口开放哪些服务,用的什么信息,什么版本。这是刚刚讲的反查的东西,就是当把某个IP上面所绑定的信息,找到上面首页的东西,一起存到数据库。
这个界面是用Web指纹职别规则的,就是说你只要设置好规则它就会检测某个域名,某个IP或者某个系统使用了什么中间件或者什么Web程序。
讲一个简单的例子,如果我们要识别一个网站中间件是否用的金Boss,就可以在这个编辑框里设置一个条件,判断HPPT里头是否包含金Boss这几个关键字,如果包含的话就会判断出它使用的是金Boss。
如果你要识别某个网站或者域名使用的是不是Opres,第一步可以先对比一下它后台存在的某个文件,然后再看Opres登录里面是否存在某些内容,比如W1里面,你要找回密码就会有密码这样的关键字,然后判断这个网页里是否包含content路径,当所有条件都满足以后,就可以确定这个网站是不是真的是Opres。
我们可以看一下漏洞库配置的细节,反正只要你设置好参数,然后写好测试方法,测试规则,验证问题,是否存在的规则,点保存就可以扫描了,就好像这是一个最新出的Cast7.2的侏儒漏洞,就可以分析一下,然后把相应的规则,怎么测试,怎么识别填到里面点保存,就可以批量地扫整个世界上用Discars是否存在漏洞。
脚本管理模块,就每个漏洞你可以专门为它写一个脚本,只要你设置好每个漏洞的传参,你只要脚本指定两个参数,一个IP,一个端口。对应的脚本漏洞都可以手工下发,然后我们可以看到图片任务条件那里,是从端口表里查询出所有端口为43的IP,配这个心脏流血这个脚本,点保存之后就会开始全网扫描,全网扫描的目标就是从前面类似钟爱信息搜集里面读取的。
这里还是刚刚Discas侏儒漏洞里面,这还是从应用表里查询出Discas的脚本,保存之后就可以进行全网扫描。这里是一些已经执行过的脚本任务记录,任务条件是是否查询,还是简单使用。
讲完细节之后再回顾一下扫描流程,如果你要黑乌云的话,只需要在控制台那里输入乌云,点保存,它就会自动分解乌云目标,自动搜集所有与乌云的相关信息,然后会自动存到数据库,漏洞设置脚本会自动生成队列下发,最后你只需要等待漏洞结果。这里就是真的实现了全自动的攻击。
整个框架还有可以强化的地方,比如更强的信息搜集能力,也就是要加入更多的信息搜集规则,比如Web指纹,还可以加强资源整合能力,还有更高的覆盖率,更少的误保率,更多的应用规则。
在强化信息搜集这方面,未来将,这是1467项Google扫描器加进来。这是规则漏洞库。如果你想扫描整个互联网,就是全世界的话,对网络的资源要求还是挺高的,这是我们的扫描成本,如果你有10台5兆宽的机器扫描A段的话,大概需要7天,就是你要扫描全世界的话需要16万人民币,这个成本非常高的,考虑大成本的问题,我们又加入一个新功能,就是你只要搞到一个能执行系统命令,填上一个密码,点保存,它就会成为一个攻击节点,成本立马降下来了。
讲完了扫描器整个结构和工作流程之后,做分享一些我们做的小研究。当我们优化一些细节的时候,发现成功率是很可怕的,这里是优化的两个细节,一个是用户常用口令设置规则,一个是常用特定URL目录字典库的积累。
这两个越大的话,效果也会越好,能得出的结果就是稍微大一点的互联网公司就淡定不能不了,等一下会有一个漏洞扫描结果给大家看一下。
就如果研究用户密码设置规则的话就得上大数据,这里我们搜集了10亿条用户和用户密码,我们得出了这个东西,我们利用大数据,统计出了100多个使用的最多的弱口令,标红色的是Top10,中国是使用英语较少的国家,我们可以看到前10位全是数字,再看蓝色标记的,这个很有意思,这是一个多情的国家。我还对比一下,我的更具有中国特色,我这是Top数字使用数据,在整个10亿条密码中,使用123456有4千多万,使用123456789的有9千8百多万。
分析这10亿密码可以看到密码用纯数字的大概有3.7亿,就占了36%,密码全部用小写字母当密码的占了41.8%,密码全是大写的占了0.38%,用户名和密码相同的也有两千多多万,占了2.36%,密码中包含了一部分用户名的也有1.32%,使用Top10口令的大概占了17%左右,口令中含有特殊字符的占7.24%。
这是整个整个针对使用10亿密码计算出来的结果。当我们分析一些密码的时候,往往也能够得到一个规律,就是我根据那些10亿条密码得出的结论,就是大多数人设置密码的时候都会把生日加进去,还会把年份加进去,比如这个密码是去年设置的,会把2013年加进去。还有可能是名字加上生日,做技术员的会转换一下,还有设密码的时候,复杂度有要求,就要有数字和特殊符号,就会加上@,还有键盘布局,和公司相关的东西补充进去,还有些地方要求大小写,要么就是第一个大写,要么第一个单词大写这样,或者把自己姓名的第一个首字母大写。
这是我们发现频率最高的密码设置方式,就可以总结成这样,要么是用户名加生日,用户名加特定字符,要么是用户名@加生日,中文名拼音加生日,中文名拼音@加拼音。
根据这些规律,我们实现了生成密码的算法,可以根据你这个人生成一个和你有关的密码。大家可以看一下,这是一个分隔符,比如很多人会用乌云@123,要么乌云.123这样来连接后面一些特殊常用字符,就有一次我在微博上面看到李铁军,他教别人怎么设置密码,他说他的密码一般都是在后面会加上一堆@123Com,他把这个方法告诉更多人,更多人可能会采用这个方法,所以你只需要看他们怎么设置的,然后把它变成算法,自动生成出来,这是处理生日的一个小函数,我们知道日期这个东西会有前导0的,没有前导0的话是9,有前导0的话是0909。
就是你把能够考虑的细节考虑进去,就生成一个专门有针对性的密码脚本。有了生日密码算法,我们发现都是中文名,我们又有一个小函数,就是把中文名转成拼音,然后再把你拼音的名字,比如姓不转成拼音,把你的名取前面的两个开头字母,这里可以看到朱
整个生成别人密码的过程是动态生成的,有人会说你根本不知道我的名字,不知道我的生日是没办法知道我的密码的,在这里的话,因为互联网上已经泄漏了10亿多条用户信息,我们知道,所以这里可以做一个数据接口,然后给扫描器调用,给算法调用,这里是我做的一个案例,大家可以看一下,乌云上也介绍过,就是你只需要在这个系统上面输入一个域名,然后它就会返回所有与这个域名为结尾的所有人的信息。
以京东为例,你比如360buy.com,点击,它就会把所有的信息返回过来。我们只需要知道一个人叫什么,他的人生日是哪天,或者不知道通过什么渠道得到了他的身份证号,就可以很简单地利用一些常用的密码生成算法,算出他的密码,比如前几天泄漏的QQ群数据,备注里就有很多人的真实姓名,那个拿过来的话就可以生成密码,效率大大提高。
这里再介绍一下众测刷钱的方法,我得到最终的信息,一个是用户名和密码。指令好,美杜莎支持协议,举个例子,在蘑菇街上,直接用美杜莎暴力截取他们的邮箱服务器,整个过程都是自动化的。
我们知道每个互联网多多少少都有应用或服务,比如邮箱、博客或者企业应用,如果当某个员工的邮箱或者密码泄露之后,都会直接导致网络边界被突破,可以看乌云上面的一些精彩案例,第一个是,我是如何进入中石油网络的,还有阿里巴巴信息泄露,直接进入内网,右边是优酷和土豆,由于敏感信息泄露就被内网漫游。
阿里巴巴的问题是由于员工安全意识不足,内网帐号挟持就变成了秘密访问,后来你都懂的。中石油是内部文档被员工上传到百度文库,这个文档里面还包含了用户名和密码,直接被人进了内网,就买了那么多防火墙,其实有时候是没用的。这是第三个小研究,就是有时候你用心思考,一些开发和运维的小习惯,把他们的习惯写成检测规则,你就能够在互联网上下载到各种各样的敏感信息,惨不忍睹。
比如说上面的灰色是备份文件的,比如你用VI编辑文件的时候,如果忘记保存,或者你在管理服务器的时候HS断了,它会有一个交换文件放在那里,这是我能想到的一些东西填在这里。下面这个就是网页浏览包,就是管理或者运维的要发布一些新的版本,图方便会把原码打成一个包扔上去再解压,有时候忘记删除了原码包就会造成更严重的影响。反正大家上乌云去搜各种案例吧。
还是回到正题,未来扫描器会更加智能,会有更多的规则,会有真针对性的扫描,总之未来攻击会越来越野蛮。
这是在未来要做的事,就是在传统安全公司还在讲防火墙这些东西应该联动起来阻拦攻击的时候,我们已经实现了实时扫描,就是里只需要在浏览器上设置一个代理,你在浏览器上每次点击链接的流量都会生成一个拷贝,服务商就会分析流量拷贝中的端口信息,会自动传递给扫描器,后台就会自动扫描服务器存在哪些漏洞,这里是扫描器插件,你可以用扩展写成插件,去分析当前网页中存在哪些URL资源,端口的信息,再回传给扫描器,后台会下载一个扫描任务,然后扫描个人存在的漏洞。
如果这个东西也可以用在移动客户端,如果你要找移动客户端的漏洞,你在上面播上微片,微片会自动分析出你每次点击的流量的URL资源,后台会把这些当做扫描目标,自动扫描它存在的漏洞。
这些用到的代理服务端都是修改过的,主要目的就是用来分析出流量中包含的URL,域名和端口给扫描器用。我们这里流量控制台得到的分析URL,主机,域名,端口都会在这里,然后会分发给扫描引擎,就是这样的话未来你找漏洞,就变得很简单,你只需要在浏览器设一个代理,然后点点就可以找到漏洞。
然后在移动APP上放一个微片,然后在移动APP上面各种点,使用各种业务有能自动发现可能存在的漏洞,这个工具近期会在乌云上上架。然后利用这个代理,你可以很轻易地找到产生的漏洞,这是扫描到的腾讯的漏洞,这是百度的,这是微博的,就是说你找漏洞不需要再像以前那样开一个分析工具,然后还要各种复制粘贴,不停地来回地切换,很繁琐,现在的话找漏洞主要点点点就行了。
有一天不小心扫到了阿里云的服务器,Agent又忘记删除,然后又不小心发现这里连接了ACE的数据库。所以说未来扫描工具并不可怕,至少有规则是可以检测到扫描行为,但是有些突如其来的攻击是完全没有办法防御的。
之前剑心跟我说,筹办本次峰会的目的,是想白帽子和厂商的攻防实践对安全的认知,让谈谈云计算,大数据的看法,顺带披露一些安全现状。现在讲一下安全现状,一个是互联网的攻击根基在动摇。
看到这个图,不知道有没有人知道这个事情,就是说2009年1月8号的时候,由于Discuz和Phpwind第三方接口问题,在DNS被劫持。这是新网的,当时安全做的很差,只是证明一下有这么一个事。
再看这个图,这个就更久远了,旺旺,06年11月份的时候,因为旺旺某个子目录下面使用了动议的4S版,后来注入了一个成功在它们网页上排窗。也就是说,旺旺,新网,国内最大的厂商都没办法保障自己的安全。
所以我们知道世界上可以总结出有三种人:一种是被黑过,一种是不知道自己被黑过,还有一种是不承认自己不黑过,后来我又想到第四种,就是正在被黑。
我们的基础运营商其实比想象中要脆弱很多的,就是从乌云上可以看到无数的技术运营商都在乌云上被人报过漏洞,比如说第一张图,这好像是中国铁通的信息系统,就可以入口进去。这是中国电信某台服务器上保留了大量核心路由的配置文件,看配置文件里是什么?
配置文件里基本上是某个城市的核心路由的IP,管理帐号密码或者是Root的密码。这个不知道是哪家的,广告系统自带DNS劫持功能。
有一天我无意间发现某个运营商系统是可以查询所有手机用户短信发送记录,可以看到左边倒数第二个,它还可以帮助用户发短信。有了这个系统后发现手机二次验证安全怎么办?就是你发一个短信,然后别人就能从运营商系统查询到短信的内容,就是你要找回支付宝密码。
输一个验证码,就给你重置了,QQ、微信等的密码更简单了,因为我发现微信用户体验最好的,就是它会自动识别出你手机号码是什么,按一个按纽,找回密码,然后查询出验证码,就能重置别人的微信密码。
中间的红框是我在测试的时候发现,我只是修改一下手机的服务密码,系统把我的服务密码也记录在里面了。根基在动摇的一点,就是你的身份证已不再是秘密。
就是你的出行记录,你的身份证不再是秘密了,因为整个国家的基础系统其实没有想象中那么安全,然后这是我在群里找的图,就是说别人要知道你的身份证其实很容易的,只需要知道你叫什么名字,你的生日,就可以推算出你的身份证号,有了身分证号,你在互联网要怎么玩儿,其实真是想怎么玩儿就怎么玩儿。
其实还有一点,信息泄露比大家在互联网上看到的要严重的多,远远不止十亿条那么简单,我们可以看到这张图上面,整个社会媒体的格局图上面,大家知道有多少家被黑过吗?这就发一个图,我就不讲了。
再讲一个小实例,就是王思聪在网站上暴露某电商送货太慢,就把自己的订单号推出来了,你看到他的定单号可以查到他的电话、地址、邮箱是什么,然后可以间接地搜集到大量的关于他的个人信息。
比如说有一天,他又晒图片,这是晒他的电脑桌,然后那里有一个小优盘,其实价值一万多,这是土豪的生活理解不了的。我就去看了一下,这个是真的,他真的买了,不是山寨的。
所以到现在,我越来越能理解,就是那些明星照片泄露事件,其实说根本的都是因为他们自己的不小心,自己也不知道怎么泄露了。
就像今天你去注册微博或者注册QQ空间,人人网,就各种网站,当你填下注册资料的时候,你永远不知道QQ会给你公开哪些信息在互联网上,微博会公开哪些信息在互联网上,有一天你只需要把所有涉及到媒体上面的那些公开信息抓下来,再做一个差异化对比,发现这些不对称可以完全还原出关于那个人的所有信息。比如说微博有时候会显示一个人的生日,人人网上不会,但是它会显示某个人是哪个学校的,你只要抓住这些差异,就可以还原出你想要的某些人的某些信息。
现在很多订单会泄露你在哪里吃过饭,睡过觉,这是某团可以查到任意用户信息,你的订单全部存在网上的,比你想象的要严重。
随着移动互联网这几年的爆炸性发展,就来自移动端,就是手机端创造的数据是传统PC时代的上百倍,就在这样的一种大数据时代里面,越来越多的移动用户,移动设备无时无刻不在工作,随时随地都在连接互联网,前所未有的用户数据都被上传到云端,用户变得越来越透明,用户的安全也和互联网公司的安全捆绑在了一起,未来安全问题不在于黑客攻击那个电脑,很可能把某个互联网的服务器攻破,就可以得到上亿人的个人隐私信息。
未来我们面对的对手都是信息发掘资源整合的高手,我们不知道他们现在到底掌握了多少资源,但是从我个人了解的情况来看,结果很不乐观的,反正只要是一旦遭受攻击,结果都是灾难性的。
对于处于防御场景的甲方来看,有时候你只要被黑一次只要被黑客带走的信息足够多,下次他依然能够接触那些以往获取到的信息再次黑进来。