【转】几年安全学习经验杂谈
批注: 作者将自己多年对安全行业各方向学习方法与经验做了详细阐述,并给出了典型参考文献等,值得一读。
我属于11年左右才开始入行的小菜鸟,听着前辈们经常讲着在10年之前,注入分分钟拿站,到10年开始慢慢出现waf,作为一个新人,waf当年的确是个不错的ideas,当时的确挡住了我。学习渗透的路上,为了学好,我选择了PHP,作为比较早的一代资源收集狂(比如电驴等),看各种的视频。
毕业之后,从事的工作和安全粘上了边儿,也看着这个圈子发展到如今,从12年之前的后端程序员是主流,到后来的对浏览器的攻击(前端程序员),再到移动端的攻击(web抓包和逆向分析),也有到如今的web fuzz和 自动化渗透。安全的东西细分起来很多,但是也比较杂,说多不多,说少不少。
想起了当初的wooyun,怪狗曾说过,渗透你只要把乌云的文章全部看一遍,你至少是一个初级渗透师,这个思路也是对的,wooyun虽然关闭了,但是莫里在前几个月把wooyun的数据公开了,有心的可以去看看,多看一点,至少对自己没有坏处。
Waf这块,通过wooyun的总结,比如MayIKissYou的cookbook、破见的《WAF攻防研究之四个层次Bypass WAF》、c4rt1y的《上传绕过WA》、从容的by pass、安天科技的《浅析Waf优缺点||硬件Waf、软件Waf、云Waf之总结 》,在很大的程度把waf绕过的思路和特性都做了一个简单讲解,主要的思路还是通过流量的路线,检测每个阶段是否可以利用。
web渗透,经常会遇到cdn,这时我们首先要突破cdn的防护,比如历史注册信息,网站报错,利用zamp全网扫描信息收集,通过二级域名查询等,因为一般情况下,我们只是把服务器挂载在别人的cdn上而不会把所有的域名全部解析到cdn上,这个时候就可以通过其他域名线索来寻找真实IP了。还有就是采取直接对ip进行端口检测、对站点检测、或者旁站,C段,甚至多级域名查找,利用公开漏洞,或者逻辑漏洞,XXE,SSRF,端口的未授权访问,命令执行漏洞等等进行测试,我们可以搭建一些常见端口的服务,自己去搭建测试环境,或者使用docker,或者学习个cms的漏洞利用。这里的阐述,应该很多的大牛已经实现了使用工具自动化实现,搜集,扫描,测试效果。
内网上,通过拿下一台服务器,从而获取了边界的权限,进而进入了内网,那么内网之中,就是利用各种的操作,icmp和dns的流量一般情况下是不会被阻止的,所以在很大的程度上我们可以通过这些协议进行缓慢渗透,了解和掌握常见的内网命令及使用方法,迅速分辨出那台是关键服务器,通过自己的分析画出内网的拓扑图,掌握大部分的信息收集的思路,这一块,我觉lostwolf总结的那篇文章蛮好的,内网的各种账号信息收集,然后使用MS14-068,NBNS等协议攻击,其中可以配合Phishing和免杀,剩下的应该就是等待时间和运气,在之后就是如何维持服务器了,比如窃取hash,清除攻击日志。
关于代码审计,我记得LN之前发起过做一次代码审计的目录(可惜后面慢慢消失了)和seay也写了一本书,这里也可以推荐去t00ls,90sec或者wooyun之前1000分php代码审计的文献,按照LN的目录,找些开源的和旧的版本进行审计,我记得雨大神学习别人代码审计的笔记也被人放出来了,其实我们也可以做到,代码审计,php的话,在一定程度上,他的漏洞类型比较多,所以也是比较系统的去了解一些内容,也可以去看下dvwa的那份,最老的版本是菊花写了一个文档,然后有人也在freebuf发了一份1.09版本最新的版本绕过的语法,另外safe3也出过asp,php,jsp的三套代码审计,jsp的话就不要看了,其他应该对新人来说还算凑合。至于java,没怎么接触过,不过java的话可以乌云之前drop上有个系列,还有就是现在也有少部分问开始分享这方面的资料,不过开源的java的cms实在太少了,框架有比较难挖掘。至于python,我所了解的的,目前也只是对它存在命令执行,eval,pyyaml,init等等。
关于移动端,可以做web渗透,因为到目前为止,安卓或者ios的开发者对安全目前的重视程度也不是很厉害,另一个方面就是二进制分析,关于这块,飞虫大大出了两本书,也算是方方面面都介绍到了,不过介绍的也比较浅,跟着操作,基本上可以实现,但是针对于深入的话,就看玩的有多久了,另外看雪,逆向未来,飘云阁,52破解,零日论坛,爱破解都比较不错,飘云阁每年都有个5.4,学习pc,安卓,ios,免费的,而且视频也会分享出来。
关于无线,换句话说,应该就是设备的问题吧,目前网上应该有也有大量的视频,我认为还是工具的问题,因为外接无线网卡,GSM欺骗,甚至高大上的卫星,应该说起来,应该也是协议的问题吧,我不是牛人,我只会利用工具,这一块,我能理解的就是我们最大程度就是学习各种工具,谁的工具更加智能化,如果想继续的话,就是编程和协议原理等等的深入。
关于固件分析,在一定角度上可以学习各种的汇编指令,这里额外提一点,记得历来各种大佬曾经说过,如果你想学习底层,其实你就应该开始学习X86,然后你会发现后门的各种汇编,其实基本上大差不差,然后,如果大伙觉得看书比较吃力,这里也可以推荐一些,比如北风网 C++反汇编基础,揭秘反汇编视频教程,编程魔方C++逆向基础教程,郁金香的2013汇编与外挂,滴水第三期等等一堆,配套的书籍,比如《C++反汇编与逆向分析技术揭秘》、《揭秘数据解密的关键技术》、《逆向工程核心原理》、《0day2》、《 黑客反汇编揭秘》,后期的0day2和黑客反汇编之类的,就是对汇编代码的分析进入深入的部分,这里网上也有大量的pwn的地址,这里就不一一列举了,github上搜索ctfs应该能找到一大片,后期的路由器,智能家居,其实大体类似,只是他们基于的汇编语言不一样,应该是MIPS等等,大体还是相似的。
关于免杀,在内网的时候讲解了内网免杀使用powershell,我们可以采取不同的编译器编译或者运行,可以借鉴2016年的evi1cg 和三好学生大神的乌云大会ppt《后渗透攻击》,另外技术应该不会过期,《黑客免杀攻防》的大部分内容,其实和《杀不死的密码》很多相似,或者百度搜索《一时无粮脚本免杀系列教程》,比较和书本书本上的讲解内容是否一致,另外关于免杀,推荐的是《HackSky复活无特征码免杀》还有他的饭客免杀教程。
关于运维,关于运维,各种环境的搭建,到这两年的各种云产品和自动化的更新,发现运维也在不断的都像自动化,云等等各方面,这里面,推荐的书,目前好像没有多少本书是centos7系列的,虽然未来主流,鸟哥三本,《CentOS7系统管理与运维实战》、《Docker进阶与实战.华为Docker实践小组》、《自动化运维软件设计实战》。视频的话,《阿铭学Linux第三期》、《老男孩架构师第11期》。
关于编程,这方面资料太多了,我建议看书+看视频吧。书本推荐cookbook的系列书籍,翻译成中文讲什么,这个自己百度查吧。视频的话,太多了,不过只要你有恒心,最终应该会有所成,我也是看了很多的教程。如果有哪方面想学的,我建议看视频的时候,再看看书,你会发现,看书的速度比看视频快,然后慢慢的,你就可以抛弃了视频。
最后,我简单阐述下我的个人观点,一套视频,我列举出来的应该是滴水第三期时间最长,也就110个小时左右,貌似三个实验项目。如果有心,其实自己算下,预估自己的时间,假设一天看2个小时,那么55天应该可以看完,然后操作4个小时,因为有时候你会遇到视频里或者书里面遇不到的坎,这样的时间消耗,虽然看起来很多,但是如果你从事IT行业,你会发现,这将是你未来,大部分技术的奠基石,未来的技术在变,如果你走的还是同样的,那么万变不离其宗。其实110小时,有很多时间都是扯废话了,记得当初燕十八的内部培训,mysql(基础使用)一共就8小时不到的视频,到公开课,mysql(基础使用)一共40个小时。另外比如某个知识点,突然出现了bug,视频或者书里面不存在这个问题,我遇到的次数太多了,你可以把这个关键字,丢到百度或者谷歌里面进行搜索,可能有人在这方面,早早已经写了blog,这样可以更快,直接按照别人的笔记操作,岂不更好,学习的思路是很多很多的,要善于利用各种ideas。再比如渗透,我觉得现在也基本上搞团队合作了,比如一个人拿站,另一个人拿下源码审计,然后发现更多的漏洞,一个内网,单纯的只会拿站在现在的生活里越来越难,还是需要加倍的努力,比如学习编程,当初微笑大神曾经教育我,不过我没听,现在深深地后悔。
最后的最后,这是我对我过去的一个总结,或许有时间,我会把我学过的东西,慢慢写成文档发出来,因为我觉得这些都是别人的东西,他们不属于我的原创,所以我在很大的角度上,都是不怎么想去写这方面的笔记,因为感觉,熟能生巧吧,我和新手的区别,我能快速发现问题,然后解决问题,而新手需要不断地查找资料罢了,或许对我而言不是一个值得骄傲的地方。啰嗦一堆,前后不着调,大大小小的问题,难怪以前语文一直在60分以下,不过希望对新手有一定的帮助,脚踏实地的向前冲吧,否则后悔的总就是你自己,而不是别人。