摘自:作者/PgHook,属FreeBuf原创奖励计划文章,未经许可禁止转载 G$ p. |. h" a" n- v+ y0 | G
" m- I6 E9 w0 G& n" ?
0×01、前言‍‍6 R, N- f6 k! p; Z
‍‍习惯性的讲点废话,笔者是一名菜鸟安全工程师。有幸参与过两次安全方面的比赛,有些个人的体会,所以就有了这篇文章了。(自知技术还很菜,望各位大牛不喜勿喷,也欢迎对这方面感兴趣的同学来和我一起交流探讨。)‍‍/ f) E/ \5 w' E9 e' k- J
0×02、攻击者会怎么做?‍‍‍在做这几次防护的过程中,我一直在思考。我如果是攻击者,我会怎么来攻击?我会怎么去做?‍‍; U- s- {3 h1 I3 N- O
‍‍A、第一步,针对目标做信息收集(扩大目标)‍‍2 {4 h- \( i0 P, L! r
‍‍子域信息、Whois信息、Ip信息、端口信息、公司人员的信息、公司邮箱信息等等,一切与目标相关的信息。‍‍( ^! M& [" d* q' E- N
‍‍B、针对拿到的信息,进行漏洞扫描及挖掘‍‍
3 S+ }- Z$ H( _& ]+ J‍‍针对子域,我们可以去尝试获取其ip,及对其域名进行漏洞扫描。‍‍4 h/ A( |) K& q0 M5 e4 D
‍‍针对whois信息,我们可以去尝试,获取其注册邮箱,进一步进行社工拿到密码进行域名劫持。‍‍
8 n2 O9 k8 E- N8 C/ Y2 {5 M# }‍‍针对ip信息,我们可以去获取ip对应的端口及服务,对相应的服务进行漏洞扫描及挖掘。(对于踢场子的来说,直接进行ddos,直接让你玩不下去。)‍‍
7 \: z7 K* f6 q7 Y8 Y2 ^8 ~‍‍针对公司人员信息及公司邮箱信息,可以进行社工弱口令之类。看能否拿到某位员工的公司邮箱,通过敏感信息进一步深入。(如果碰到某位关键人物)‍‍* d P+ G; {) X& X
‍‍看我写起来貌似很简单似的,但实际上确是一个苦逼而漫长的过程。‍‍5 ?% E5 T1 G( w/ z- X6 H- W+ J
‍‍除了攻击者的技术水平、人的毅力及对事物的专注程度外,还与运气有点关系。(看你碰到的是sb管理还是nb管理)‍‍
7 ]. ~" V4 p" y8 ?) h‍‍做为防护者,这个时候你该怎么做了??对方已经出招,得接住呀!不然这个看场子的任务就将失败了。‍‍. O: f$ V7 q1 R, c9 g. Z
‍‍0×03、我是这样来做防护的‍‍‍‍A、Find and fix(这个其实是很关键的)‍‍‍‍‍‍从字面上理解就是”发现并修复“,简单的来说就是通过一些手段,去发现系统中的安全问题,然后解决问题。(医生的最高境界不是去治疗疾病,而是在疾病没有来,就拔除了,根源在代码)‍‍
! s, F5 M, \( B- x/ w0 N2 Z‍‍带领团队成员对站点进行安全测试,发现安全问题,尽量减少外部安全隐患。(这里只能说是减少隐患,一个人的力量是有限的,一个团队的力量也是有限的,并且侧重点都不一样。)/ R+ H6 U: h* A
‍
3 K$ h5 c; A/ u8 U‍‍上面也说了,只能是减少安全隐患,当漏了安全问题的时候,该怎么办了??这就有了下面的了。‍‍
8 X$ N! H6 y) ?. q0 `‍‍‍‍B、Defend and Defer‍‍‍‍‍‍从字面上来说是“捍卫和推迟”(这是谷歌翻译的啊!和我没关系),这里的防护难道仅仅是弄一些安全设备(防火墙、入侵检测系统、web应用防火墙)么???当然这些也是不可少的,但不是全部。合理的事物,放在合理的位置,才能产生好的效果。‍‍ Q, F6 g2 s5 O( ~. m0 J; d
% {' x6 U% ?4 A- D
<img src="http://image.3001.net/images/20150323/1427081527226.png!small" title="111.png"/></p>4 X1 S8 `6 t8 Y' R$ W. Q3 Y
‍‍纵深防护‍‍
# H$ x9 K% m7 ~( H P‍‍‍‍‍‍这里主要涉及到,防火墙的HA,入侵检测系统、白名单的使用,CDN及云防护。‍‍‍‍‍‍2 \; x3 V$ b$ l5 }9 Y; v# ?$ S
‍‍‍‍流量从外面到里面需要经过如下几层:‍‍‍‍
, G2 u7 |- j1 V1 s$ [! E2 |‍‍- 第一层必须经过CDN云防护的过滤及隐藏真实ip;‍‍‍‍第二层必须经过防火墙白名单过滤,只允许cdn过来的流量;‍‍‍‍第三层必须经过IDS或者IPS的过滤或者记录风险行为。
复制代码 ‍‍‍‍也就是说就算我服务器存在一些安全风险,如果你没能绕过这重重过滤也是没用的。‍‍
# [; M y6 k# T4 \4 ~% B0 T/ p) [
* L* e0 w) V7 A. [8 u& a<img src="http://image.3001.net/images/20150322/14269949999924.png!small" title="2.png"/></strong></span></p>
/ Y/ `7 f2 U: H‍‍MASTER防火墙‍‍
$ e& e+ ^7 Y! Y
* d7 S) o6 a/ \+ U% `, `<img src="http://image.3001.net/images/20150322/14269950239745.png!small" title="3.png"/></strong></span></p>
' H' Q) {1 M% K. g‍‍BACKUP防火墙‍‍2 ~( h: o' c9 I% f! \4 T8 y
‍‍这里防火墙的HA,主要是为了防止单点故障或者说是流量攻击时而设。‍‍关于这个防火墙的HA,这里有文章介绍:‍‍‍‍& Q |$ q8 }/ ~ }& {0 L- ~
http://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/4010/ o T9 l6 h$ n' z' T2 ]+ W
‍‍难道安全防护做到这里就完成了?如果有人绕过了你的种种过滤(或者说你的某一层过滤失效了),你还能高枕无忧么?不能想当然,你做不到,并不代表别人也做不到。一切皆有可能,做好最坏的打算。‍‍ w4 _; s% S/ Y/ q2 c0 U2 J2 X
‍‍‍‍‍‍‍‍当黑客绕过了重重过滤后,对服务器进行攻击的时候,你是否能在第一时间发现?‍‍‍‍‍‍
/ o) J& x. h- N6 M; F‍‍当黑客找到服务器漏洞,绕过了各种防护,拿到了shell,你是否能在第一时间了解到,并能分析出漏洞所在地?‍‍‍‍$ u# ~$ `' z" @- y4 Q" l
‍‍这个时候就有了第四层的监控(应该算是比较失败的),基于主机的ids(可以理解成一个文件监控系统,自然也可以成为一个日志分析系统),从理论上讲,我们可以使用这个东西,对网站目录进行监控及日志文件进行监控。一但网站文件发生变化,就立刻报警。但通过实战,通过经验告诉我,不要理想化,任何东西,都不可能横空出世,都是有他的机制的。‍‍
2 T( }/ S; E, V‍‍这里第四层,使用的是ossec这个软件,它对文件的监控,上面也说了比较失败的。比较失败的原因是,之前只是知道怎么去使用它,并不明白它是采用的什么机制,导致差点出大大问题。‍‍1 n! Q+ u. @' E- X4 f) A4 R8 B
‍‍第五层,做最坏的打算,当攻击者上传拿到shell后,绕过了前面三层的防护,而在第四层失效的情况下,攻击者不就可以在你的网络里面漫游了么?这种情况是不能容忍的,这个时候第五层防护就出现了。用专业词汇来说叫“风险控制”,风险控制的目的是,减少风险事件发生时造成的损失。打好各个补丁(防止提权),降低服务运行权限,取消上传目录的执行权限。就算攻击者通过某0day拿到服务器的shell,他也不能干啥,因为权限很低嘛!‍‍; D- _3 {- Z% ~" Y+ P) U5 J
‍‍你现在能拿到子域信息、Whois信息、公司人员的信息、公司邮箱信息。对于公司人员的信息、公司邮箱信息这里暂时不考虑,这个只能通过提高员工的安全意识来进行。这里还存在子域信息,和whois信息。关于这个域名信息上面B主要就是针对这个的,这里就不提了。‍‍
, C# F2 Y' A1 F O& @( f‍‍往往被大家忽略的是whois信息,通过whois信息我们可以看到有可能看到注册者的邮箱(这里是可以隐藏的)就可以对邮箱(一般是个人邮箱,才好弄)进行社工(现在满大街的库),如果侥幸能拿下,就happy了。还能看到域名使用的ns服务器,即而得知使用的那家的cdn,如果说在注册域名的地方不行,那就去cdn呗,效果差不多。‍‍/ f$ g! v$ G2 l% b6 R! |
x! E: u, c v! u2 f
<img src="http://image.3001.net/images/20150322/14269950973848.png!small" title="4.png"/></strong></span></p>
7 \8 J6 [" N$ L; x7 x. H# B‍‍Cdn就一定靠得住么?就算它靠的住,难保他自己会不存在问题。一不小心,发现了一个隐患,只能说是个可能性吧!你想想如果,cdn上面的邮箱和密码被泄漏出去了,别人给你改改,你的站点就死活打不开了,前面的一切就白费了。‍‍3 O2 S2 ?( {) G4 K2 L, W
' S7 X: F: o1 q; q" }' p
<img src="http://image.3001.net/images/20150322/14269951439800.png!small" title="5.png"/></strong></span></p>! W# e0 p! I% X+ a
‍‍看到没,qq邮箱,是不是可以对这个邮箱进行社工啊?手气好说不定就搞定了这个密码。‍‍" F3 N6 ^0 T2 p( v) m! P
# Q- B0 O# k( C2 `6 w# Z" \2 J
<img src="http://image.3001.net/images/20150322/14269951747543.png!small" title="6.png"/></strong></span></p>
, K8 T) ~# V& E3 k3 W‍‍这个是咱们的,已经改了个昵称了,默认是显示邮箱的。‍‍) b; {* {7 L" S' A. {( _% H
‍‍‍‍C、Secure at the Source‍‍‍‍‍‍‍‍个人理解这句话的意思应该是“源代码里面的安全”,这个就要从代码的书写者身上去找答案了。也就是上面所提高到高明的医生,不会让疾病产生,在源头就给干掉了。很多大公司都有他们的一套“安全开发流程”,应该就是在这个层面的。‍‍‍‍
' W0 @0 j2 k3 c6 ~8 u$ d" M7 I3 m‍‍在这里做好了,可以减少很多问题,及bug,但往往得不到很好的解决。从代码的的书写者,角度来说,肯定是怎么方便怎么来。压根不会去考虑安全问题,或许也不了解。再者,书写者的水平也参差不齐,就造就了不安全的代码。‍‍‍‍$ I1 b! D1 L& f0 D2 d) v8 Y
‍‍0×04、迟早都是要还的‍‍‍‍曾经的不谙世事,曾经的无知无畏。现在终于要还了,以前经常去挖掘别人系统的漏洞,没日没夜的去扫别人的系统。甚至弄挂别人的服务器,都没想过有一天,我也会被晾在外面,被人虐。‍‍
8 T) o. ^6 a% m S" O‍‍由于业务需要的原因,某重要子域需要关闭CDN上的云防护。即第一层的防护,这其实是很危险的,但业务的需要也是没办法的,首先要保障的是可用,如果都不可用了,还谈什么安全了?第二层防护其实就是为了,最大限度的隐藏真实ip,防止ddos攻击。云防护已经没了,那么第三层就显的尤为重要了。这里就主要介绍下,在这个第三层发现的一些攻击行为吧!这里主要介绍下,几个典型的案例。‍‍
0 u$ E) I7 ]6 n# s" X. O案例一:某攻击者使用sqlmap对站点进行注入攻击
; j& T+ P; z2 L) }/ A. G4 v# r, o+ g% }; X- K; x8 }& U- K" i- J
<img src="http://image.3001.net/images/20150322/14269952114964.png!small" title="7.png"/></strong></span></p>$ [5 O/ p# M) d! c1 \; D/ v1 B/ p
‍‍Sqlmap(sql注入神器)‍‍# x3 G1 q# Y( A
6 F! ]) ^: O3 Z" T5 [6 |# y
<img src="http://image.3001.net/images/20150322/1426995231941.png!small" title="8.png"/></strong></span></p>- @3 Y% c" V2 r
‍‍‍‍打开数据包,发现其实就是这个user-agent暴露了自己。因为使用了cdn,攻击者的真实ip放在x-forwarded-for,通过这个找到了攻击者所在的单位。‍‍‍‍1 u. D+ ^( R% H) ] g
; l8 M; h# H2 |0 A0 u8 y7 A
<img src="http://image.3001.net/images/20150322/14269952624613.png!small" title="9.png"/></strong></span></p>- S! H9 L7 I+ A
案例二:某攻击者使用某神器对网站进行注入攻击
: x8 J7 b; }- ~/ s
- h' b% i2 b' S<img src="http://image.3001.net/images/20150322/14269952829773.png!small" title="10.png"/></strong></span></p>0 w) \+ x& q* ]! o @
‍‍查看Payload‍‍( K! t' a" A1 u
9 C: u- b& W% V3 F+ L# j4 s
<img src="http://image.3001.net/images/20150322/14269953029090.png!small" title="11.png"/></strong></span></p>
, E# q6 B0 G& i0 u8 B& s‍‍‍‍‍‍‍‍看来是一个高明的攻击者,对工具掌握的很好了,基本没暴露出来使用的什么工具,但从请求的时间请求的频率来看,可以判断肯定是工具提交的。‍‍‍‍! F3 x( Z& v7 W( |) {
案例三:某大侠在测试上传漏洞8 i9 l8 G; ]4 }$ K
2 K! q* p4 a' p9 u' w, T( Z3 Q<img src="http://image.3001.net/images/20150322/14269954054641.png!small" title="12.png"/></strong><br/></h3>4 J W# c) N2 K' z0 ~& E; G9 w
‍‍通过查看x-forwarded-for,大概判断应该是两个人(不能准确的说,因为别人还有可能使用vpn)。我‍‍们来看下它们的Payload吧!‍‍‍‍5 H7 D- ^! e$ s( F/ |
‍‍Payload 1.1:‍‍
, ]; Q! A$ _& Z/ j$ Z& P1 J* z* C1 |' K% L: A6 C& O
<img src="http://image.3001.net/images/20150322/14269954459811.png!small" title="13.png"/></strong></span></p>
1 ~; ~- P6 A/ q1 D, ~' \" D& j0 B‍‍这不是一句话木马么?+ z& w. N( N4 z! Z6 B
‍‍‍‍Payload 1.1:‍‍‍‍2 ^+ U e8 F3 h: ^
! q) L! F. u9 \" t) j! G1 U6 v1 T3 i<img src="http://image.3001.net/images/20150322/14269954779214.png!small" title="14.png"/></strong></span></p>. \' ?3 z% o: w' R1 X
‍‍小伙子不死心呀!‍‍
+ D7 v5 F2 N' t6 |) q. [: w‍‍‍‍‍‍这里也让我紧张了一把,虽然他们上传的是php,没关系,我们这边不是php的。所以解析不了,但还是有点怕怕的,立马登录到服务上,看了会这个上传文件的目录,才放下心来。‍‍‍‍! {3 `1 k" C) y8 [, j
‍‍Payload 2:‍‍, T( |8 P7 I# V j+ e! _
, w, A" K4 l p, P3 @
<img src="http://image.3001.net/images/20150322/14269955327276.png!small" title="15.png"/></strong></span></p>
7 c: L% k) d# e9 v‍‍很好奇,这个哥们这个1.php里面写了什么玩意。通过http头部里‍‍面的X-Forwarder-For记录的ip,查到两位攻击者分别处于长沙和邵阳的。
' h- h1 L3 @- X1 d5 H案例四:意外的收获
& J) P: R( l* k7 H‍‍一个意外的收获,发现老外们都在玩这个(friendly-scanner)。‍‍
7 U5 I0 I1 G0 b ^# I0 {; J! P% c
! y) \: M: ^9 n: v<img src="http://image.3001.net/images/20150322/14269955716101.png!small" title="16.png"/></strong></span></p>, j% m5 m( B: @: w
‍‍查看Payload‍‍" s1 ^( V& p. C2 {! C- {
+ G+ h/ ]) M2 f5 v1 U" l2 Z<img src="http://image.3001.net/images/20150322/14269955934602.png!small" title="17.png"/></strong></span></p>% k9 R7 q* ?6 P+ l! g. w& B5 }# c
‍‍‍‍friendly-scanner到底是一个什么扫描了??百度一下‍‍‍‍
9 B. `: x$ S9 T) M; I; n ( B$ v) R+ S. y0 A7 x: ^* m8 ~) U! ^" W
登录/注册后可看大图 : G$ ~! e( t$ j
<img src="http://image.3001.net/images/20150322/14269956335259.png!small" title="18.png"/></strong></span></p>
( b- S, @+ g' [4 ~8 z) M3 V; ?2 K2 n8 i2 W( i; P7 ]# f
<img src="http://image.3001.net/images/20150322/14269956346626.png!small" title="19.png"/></strong></span></p>+ }+ s$ s% h/ r' A$ I* {2 O! ^
‍‍高大上啊!有时间研究下这款工具。这个VoIP攻击,国内确实很少有人去研究都没怎么听说过。‍‍
1 q7 q g& V8 I" l+ [案例五:这个是bash漏洞么?
0 c- U3 l% v" J, `9 [0 B4 S1 r
5 |$ `4 O# P: b, W3 F _5 ^* _ @6 a<img src="http://image.3001.net/images/20150322/14269956559891.png!small" title="20.png"/></strong></span></p>
+ e5 m0 s6 M* Y. [7 `+ q& ~% G9 y‍‍查看Payload‍‍
8 E9 ^5 ~9 h$ n- k9 \3 M* Z
8 @3 C* c: G) i( b+ T<img src="http://image.3001.net/images/20150322/14269956881338.png!small" title="21.png"/></strong></span></p>: l: Y H7 f) u* h. {* j! \
‍‍顿时就明白是怎么回事了,但还是有点怕怕的,立马上服务器把bash漏洞的补丁打了。‍‍
8 T! n% H7 f3 v+ `5 c+ b‍‍(Yum update bash), z0 L: C- S! b& h( N
案例六:一些七七八八的信息
h8 x% y5 S5 Z( D
: t1 a9 |; z0 H2 w4 g0 b. x<img src="http://image.3001.net/images/20150322/14269957166229.png!small" title="22.png"/></strong></span></p>
( Q0 b8 `4 c# u" l9 |4 s/ J‍‍这个其实也挺恐怖的,看到了”shell”这个字。‍‍‍‍
! `: U- l' s$ R+ V' S) I% i3 I‍‍通过查看Payload,发现其实就是上传了一个html文件,没啥。‍‍
' F3 W3 j2 m& Q* h( L4 b3 |& R$ B7 B$ }3 C
<img src="http://image.3001.net/images/20150322/14269957537255.png!small" title="23.png"/></strong></span></p>& z' S; l3 r/ Q0 j# L0 f
0 y9 N& P" p9 e, B. L" |
<img src="http://image.3001.net/images/20150322/1426995781808.png!small" title="24.png"/></p>: `3 e) I$ J8 h' _6 ~# {
‍‍这应该是扫描器弄的,我们都没用jboss。‍‍
; F* V; r8 b" n2 E) e8 b# H‍‍0×05、一颗敬畏之心‍‍‍‍渗透测试,个人认为就是一种可能性的测试。没有什么不可能的,无论是做为防守者还是攻击者,都不能是想当然,要以理性的头脑去测试或者防护。如果要归根到底的话,问题的源头,都是人的问题。‍‍
, m, \0 B3 _+ J‍‍个人认为做安全防护,还有一个原则就是“信任”。需要做的是,在不可信地方设防,到底那里不可信,外面不可信,里面就可信了么?同样你也不能完全信任,你需要明确谁可以访问谁,做好访问控制。‍‍/ q) ?) o7 K- f6 \/ z
‍‍最后要感谢下乌云白帽“霍大然”及“北京-lion_00”两位大侠的指点。‍‍: I& C3 i" o+ T5 X6 Q: E: o: j* N0 m
‍‍编者注:笔者是南方人,因此“呢”“了”不分,改不下去了,大家明白就好~~~‍‍5 P' `* Q( {$ p- O8 _7 l3 L* e
‍‍参考资料
7 G4 u* L" Q+ N9 Z3 o% r. z0 l: |《白帽子讲web安全》6 M! E3 F& h: z
http://drops.wooyun.org/tips/2821+ ^7 W% m! q1 a
http://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/4010
# e$ k! Y3 s7 z6 g9 |; m1 n8 bhttp://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/3874 |
|