《站在攻击者的角度来做防护》由会员分享,可在线阅读,更多相关《站在攻击者的角度来做防护(14页珍藏版)》请在金锄头文库上搜索。
1、站在攻击者的角度来做防护站在攻击者的角度来做防护001、前言、前言 习惯性的讲点废话,笔者是一名菜鸟安全工程师。有幸参与过两次安全方面的比赛,有些 个人的体会,所以就有了这篇文章了。(自知技术还很菜,望各位大牛不喜勿喷,也欢迎对 这方面感兴趣的同学来和我一起交流探讨。)002、攻击者会怎么做、攻击者会怎么做? 在做这几次防护的过程中,我一直在思考。我如果是攻击者,我会怎么来攻击?我会怎么去 做? A、第一步,针对目标做信息收集(扩大目标) 子域信息、Whois 信息、Ip 信息、端口信息、公司人员的信息、公司邮箱信息等等,一切与 目标相关的信息。 B、针对拿到的信息,进行漏洞扫描及挖掘 针对子
2、域,我们可以去尝试获取其 ip,及对其域名进行漏洞扫描。 针对 whois 信息,我们可以去尝试,获取其注册邮箱,进一步进行社工拿到密码进行域名 劫持。 针对 ip 信息,我们可以去获取 ip 对应的端口及服务,对相应的服务进行漏洞扫描及挖掘。 (对于踢场子的来说,直接进行 ddos,直接让你玩不下去。) 针对公司人员信息及公司邮箱信息,可以进行社工弱口令之类。看能否拿到某位员工的公 司邮箱,通过敏感信息进一步深入。(如果碰到某位关键人物) 看我写起来貌似很简单似的,但实际上确是一个苦逼而漫长的过程。 除了攻击者的技术水平、人的毅力及对事物的专注程度外,还与运气有点关系。(看你碰到 的是 sb
3、 管理还是 nb 管理) 做为防护者,这个时候你该怎么做了?对方已经出招,得接住呀!不然这个看场子的任务就 将失败了。003、我是这样来做防护的、我是这样来做防护的 A、Find and fix(这个其实是很关键的) 从字面上理解就是”发现并修复“,简单的来说就是通过一些手段,去发现系统中的安全 问题,然后解决问题。(医生的最高境界不是去治疗疾病,而是在疾病没有来,就拔除了, 根源在代码) 带领团队成员对站点进行安全测试,发现安全问题,尽量减少外部安全隐患。(这里只能说 是减少隐患,一个人的力量是有限的,一个团队的力量也是有限的,并且侧重点都不一样。 )上面也说了,只能是减少安全隐患,当漏了安
4、全问题的时候,该怎么办了?这就有了下面 的了。 B、Defend and Defer 从字面上来说是“捍卫和推迟”(这是谷歌翻译的啊!和我没关系),这里的防护难道仅仅是 弄一些安全设备(防火墙、入侵检测系统、web 应用防火墙)么?当然这些也是不可少的, 但不是全部。合理的事物,放在合理的位置,才能产生好的效果。纵深防护 这里主要涉及到,防火墙的 HA,入侵检测系统、白名单的使用,CDN 及云防护。 流量从外面到里面需要经过如下几层: 第一层必须经过 CDN 云防护的过滤及隐藏真实 ip; 第二层必须经过防火墙白名单过滤,只允许 cdn 过来的流量; 第三层必须经过 IDS 或者 IPS 的过
5、滤或者记录风险行为。 也就是说就算我服务器存在一些安全风险,如果你没能绕过这重重过滤也是没用的。MASTER 防火墙BACKUP 防火墙 这里防火墙的 HA,主要是为了防止单点故障或者说是流量攻击时而设。关于这个防火墙的 HA,这里有文章介绍: http:/drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/4010难道安全防护做到这里就完成了?如果有人绕过了你的种种过滤(或者说你的某一层过滤失 效了),你还能高枕无忧么?不能想当然,你做不到,并不代表别人也做不到。一切皆有可 能,做好最坏的打算。 当黑客绕过了重重过滤后,对服务器进行攻击
6、的时候,你是否能在第一时间发现?当黑客找到服务器漏洞,绕过了各种防护,拿到了 shell,你是否能在第一时间了解到,并 能分析出漏洞所在地? 这个时候就有了第四层的监控(应该算是比较失败的),基于主机的 ids(可以理解成一个文件 监控系统,自然也可以成为一个日志分析系统),从理论上讲,我们可以使用这个东西,对 网站目录进行监控及日志文件进行监控。一但网站文件发生变化,就立刻报警。但通过实 战,通过经验告诉我,不要理想化,任何东西,都不可能横空出世,都是有他的机制的。 这里第四层,使用的是 ossec 这个软件,它对文件的监控,上面也说了比较失败的。比较 失败的原因是,之前只是知道怎么去使用它
7、,并不明白它是采用的什么机制,导致差点出 大大问题。 第五层,做最坏的打算,当攻击者上传拿到 shell 后,绕过了前面三层的防护,而在第四层 失效的情况下,攻击者不就可以在你的网络里面漫游了么?这种情况是不能容忍的,这个时 候第五层防护就出现了。用专业词汇来说叫“风险控制”,风险控制的目的是,减少风险 事件发生时造成的损失。打好各个补丁(防止提权),降低服务运行权限,取消上传目录的 执行权限。就算攻击者通过某 0day 拿到服务器的 shell,他也不能干啥,因为权限很低嘛! 你现在能拿到子域信息、Whois 信息、公司人员的信息、公司邮箱信息。对于公司人员的 信息、公司邮箱信息这里暂时不考
8、虑,这个只能通过提高员工的安全意识来进行。这里还 存在子域信息,和 whois 信息。关于这个域名信息上面 B 主要就是针对这个的,这里就不 提了。 往往被大家忽略的是 whois 信息,通过 whois 信息我们可以看到有可能看到注册者的邮箱 (这里是可以隐藏的)就可以对邮箱(一般是个人邮箱,才好弄)进行社工(现在满大街的库), 如果侥幸能拿下,就 happy 了。还能看到域名使用的 ns 服务器,即而得知使用的那家的 cdn,如果说在注册域名的地方不行,那就去 cdn 呗,效果差不多。Cdn 就一定靠得住么?就算它靠的住,难保他自己会不存在问题。一不小心,发现了一个隐 患,只能说是个可能性
9、吧!你想想如果,cdn 上面的邮箱和密码被泄漏出去了,别人给你改 改,你的站点就死活打不开了,前面的一切就白费了。看到没,qq 邮箱,是不是可以对这个邮箱进行社工啊?手气好说不定就搞定了这个密码。这个是咱们的,已经改了个昵称了,默认是显示邮箱的。 C、Secure at the Source 个人理解这句话的意思应该是“源代码里面的安全”,这个就要从代码的书写者身上去找 答案了。也就是上面所提高到高明的医生,不会让疾病产生,在源头就给干掉了。很多大 公司都有他们的一套“安全开发流程”,应该就是在这个层面的。 在这里做好了,可以减少很多问题,及 bug,但往往得不到很好的解决。从代码的的书写 者
10、,角度来说,肯定是怎么方便怎么来。压根不会去考虑安全问题,或许也不了解。再者, 书写者的水平也参差不齐,就造就了不安全的代码。004、迟早都是要还的、迟早都是要还的 曾经的不谙世事,曾经的无知无畏。现在终于要还了,以前经常去挖掘别人系统的漏洞, 没日没夜的去扫别人的系统。甚至弄挂别人的服务器,都没想过有一天,我也会被晾在外 面,被人虐。 由于业务需要的原因,某重要子域需要关闭 CDN 上的云防护。即第一层的防护,这其实是 很危险的,但业务的需要也是没办法的,首先要保障的是可用,如果都不可用了,还谈什 么安全了?第二层防护其实就是为了,最大限度的隐藏真实 ip,防止 ddos 攻击。云防护已 经
11、没了,那么第三层就显的尤为重要了。这里就主要介绍下,在这个第三层发现的一些攻 击行为吧!这里主要介绍下,几个典型的案例。 案例一:某攻击者使用案例一:某攻击者使用 sqlmap 对站点进行注入攻击对站点进行注入攻击Sqlmap(sql 注入神器)打开数据包,发现其实就是这个 user-agent 暴露了自己。因为使用了 cdn,攻击者的真实 ip 放在 x-forwarded-for,通过这个找到了攻击者所在的单位。案例二:某攻击者使用某神器对网站进行注入攻击案例二:某攻击者使用某神器对网站进行注入攻击查看 Payload看来是一个高明的攻击者,对工具掌握的很好了,基本没暴露出来使用的什么工具
12、,但从 请求的时间请求的频率来看,可以判断肯定是工具提交的。 案例三:某大侠在测试上传漏洞案例三:某大侠在测试上传漏洞通过查看 x-forwarded-for,大概判断应该是两个人(不能准确的说,因为别人还有可能使用 vpn)。我们来看下它们的 Payload 吧! Payload 1.1:这不是一句话木马么? Payload 1.1:小伙子不死心呀! 这里也让我紧张了一把,虽然他们上传的是 php,没关系,我们这边不是 php 的。所以解 析不了,但还是有点怕怕的,立马登录到服务上,看了会这个上传文件的目录,才放下心 来。 Payload 2:很好奇,这个哥们这个 1.php 里面写了什么玩
13、意。通过 http 头部里面的 X-Forwarder-For 记 录的 ip,查到两位攻击者分别处于长沙和邵阳的。 案例四:意外的收获案例四:意外的收获 一个意外的收获,发现老外们都在玩这个(friendly-scanner)。查看 Payloadfriendly-scanner 到底是一个什么扫描了?百度一下高大上啊!有时间研究下这款工具。这个 VoIP 攻击,国内确实很少有人去研究都没怎么听 说过。 案例五:这个是案例五:这个是 bash 漏洞么漏洞么?查看 Payload顿时就明白是怎么回事了,但还是有点怕怕的,立马上服务器把 bash 漏洞的补丁打了。 (Yum update bas
14、h)案例六:一些七七八八的信息案例六:一些七七八八的信息这个其实也挺恐怖的,看到了”shell”这个字。 通过查看 Payload,发现其实就是上传了一个 html 文件,没啥。这应该是扫描器弄的,我们都没用 jboss。005、一颗敬畏之心、一颗敬畏之心 渗透测试,个人认为就是一种可能性的测试。没有什么不可能的,无论是做为防守者还是 攻击者,都不能是想当然,要以理性的头脑去测试或者防护。如果要归根到底的话,问题 的源头,都是人的问题。 个人认为做安全防护,还有一个原则就是“信任”。需要做的是,在不可信地方设防,到 底那里不可信,外面不可信,里面就可信了么?同样你也不能完全信任,你需要明确谁可
15、以 访问谁,做好访问控制。 最后要感谢下乌云白帽“霍大然”及“北京-lion_00”两位大侠的指点。 编者注:笔者是南方人,因此“呢”“了”不分,改不下去了,大家明白就好 参考资料参考资料 白帽子讲 web 安全 http:/drops.wooyun.org/tips/2821 http:/drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/4010 http:/drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/3874【编辑推荐】专业渗透测试人员分享入侵员工头脑的真实故事 如何确定渗透测试是否行之有效? 怎样做好移动设备的渗透测试?