安全服务工程师的自我修养

断了今生、忘了曾经 提交于 2019-12-09 17:29:39

安全服务工程师的自我修养

原创: 安全因果律 安全因果律 11月3日

原版链接:https://mp.weixin.qq.com/s/_6lAx43blXzQhIzGDtM9DQ

第一篇文章,聊一下安全圈里职业体系中的基础-安全服务工程师。之所以说是基础是因为安服具有更广泛的跨分支能力,走技术路线可以上到安全研究,下到威胁情报,中间还可以客串一下售前,再不然就搞搞bug hunter;走管理路线,从项目支撑到咨询,从安全产品到营销体系,只要是跟安全着边的没有跨不到的。

这里也交代一下自己的情况,从业三年多,在某乙方安全厂商做了两年安服,所以也对这个工作有着很多理解和经验之谈。先聊聊技术方面的:

 

1.渗透测试≠安全服务

长期以来,很多来面试安服的应届生都会被问到“你会不会渗透测试?”,显而易见,渗透测试作为安全服务的基础具有不可替代性,如果连常规的攻击都不懂,怎么去给用户做测试?怎么帮助用户处理应急事件?

安全服务是一个宽泛的概念,涉及到安全方面的:渗透测试,驻场,应急,打补丁,培训,等级保护,风险评估,HW等等都属于安全服务的范畴。

 

2.拒绝一把梭

新手安服在测试网站的时候都喜欢上来就开扫描器,有的时候一个项目扫描器比重占到70%~80%,之前有个同事就是在人家表单里面开了sqlmap,填充了一堆脏数据。还有就是有的扫描器可能会有DoS的检测,一不小心就可能给人网站扫挂了。两点建议:

1)扫描器要适当慎用,最好配置好扫描插件。

2)要对功能了解,可能引起的破坏功能(比如文件删除和覆盖以及网站性能因素)尽可能提前报备。

 

2.SQL注入中的坑点

安服工作中SQL注入漏洞占不小的比例,我也曾经写过上百个SQL注入的测试报告😓,基本上测到的功能点参数都是SQL语句直接拼接的。总结如下坑点:

1)尽量避免使用or语句,曾经遇到有的开发写的多重select子句嵌套,正常的查询都很慢,or之后直接把数据库halt几十秒。

2)分析好注入位置再测试,判断注入点是where后面还是order by后面还是group by后面,避免做无用功。

3)验证漏洞即可,避免做深入数据提取,贸然使用dump功能可能引起不必要的麻烦。

4)测试漏洞的时候习惯性加上某些绕过规则,比如:规避空格,函数大小写混用,特殊字符替换等(比如有的过滤xss的规则就会把大于号小于号过滤,用between and或者in替代)。

 

3.编写脚本能力

这个虽然不是硬性要求,不会写代码也可以完成工作内容,但是你会发现在某些特殊场景会崩溃的。记得曾经公司接到专项任务,对几百个**委网站渗透,要求要中高危漏洞,后来分析了几个网站发现都是用了同一套框架,然后去网上搜集多个历史漏洞写成poc,写poc花了一下午,但是扫出来几十个高危漏洞只用了几分钟。

 

4.与公司安全产品联动

往往安服工程师面对比较多的甲方应用场景,有的时候安全产品规则写的过于局限,往往忽略了某些特定场景,就导致出现了一定的误报率以及漏报率。不断完善公司体系内安全产品于公司和自身都是双赢的,一方面公司会纳入绩效考核的一部分,另一方面对自己也是一个提升过程。不单是安服,安全运营、交付等都适用于这一条。

 

5.聊聊应急响应

应急响应能力也是衡量安服水平的一个指标,甚至很多乙方公司在安服体系内挑选出一批优秀的人才单独成立应急响应部门,不谈APT多数应急人员可能遇到这些情况:

1)挖矿木马,不管是什么系统平台的挖矿,抑或是网页挖矿,都会看到比较高的CPU占用,甚至频繁请求矿池IOC,CPU利用率排序观察一下很快可以定位到挖矿进程,而有的时候挖矿进程可能被守护进程监控,所以要找出挖矿的根源问题。网页挖矿多数都是加载conhive.min.js,script标签里有miner.start关键字,全局查找即可。经验发现,挖矿木马多数都是命令执行漏洞造成的,没有黑客会愿意花费巨大时间利用xss或SQL注入给你植入挖矿。

2)被挂黑页,当务之急是要协助甲方人员清除黑页代码消除不良影响。接下来就是去分析日志中的攻击了,当然也可以分析一下网站的框架,检查是否被通用漏洞击中。

3)webshell就不多说了,web目录拖出来D盾扫描下,或者写脚本在线扫描。

4)C&C流量外带,有时安全产品会检测到服务器会向某未知IP周期性的发送一定字节的数据,该行为是与C2的控制端进行心跳检测。首先根据五元组信息找到本地端口,然后对应到进程,kill掉观察心跳是否停止,接下来就是漏洞排查与日志分析了。

当然还有很多情况就不一一介绍了,总而言之应急响应就是把自己幻想成假想敌。另外每次应急对被攻陷服务器运行一遍安全基线检查脚本往往会有意外收获。

 

6.针对工控系统的安全检查

在重保单位的检查中,很多石油、化工、水利单位都具备比较多的工业控制系统,而这些系统多数都是没有测试环境的,也就意味着你的安全测试或者等保检查面对的都是生产环境或灾备,所以有几个原则一定要清楚:

1)能不上手的尽量不上手,这里说的不上手不意味着你啥也不做,是指尽量配合那边的安全或运维人员,把要检查的点口述给他们,简而言之就是告诉他们怎么做,这样可以规避自己带来的风险,毕竟重要的基础设施他们也不敢轻易相信外人。

2)能验证漏洞的不要利用,对于像ms17-010这种漏洞,对某些系统平台的支持并不好,万一对方的wince被打挂了,这个锅可不是轻易背的下来的。

3)不要在对方系统插入U盘等外设,哪怕U盘没问题,但是假设出现了问题,客户可以就抓你这个行为把锅甩给你。

4)不要搞客户需求以外的尝试,有些安服人员可能初次接触到工控就想研究下协议或者试试一些像plcscan或者isf的开源工具,还是那句话,不要让自己幼稚的行为变成职业生涯的句号。

 

7.HW中容易忽略的点

1)验证码安全,假如登录框中不存在验证码复用的情况,是不是就会放弃了?可以尝试一下google的OCR识别框架tesseract,之前测试过某些站点,识别成功律能达到70%。

2)优先攻击有价值的目标,比如某目标单位的GPS系统,有可能利用bing就能搜到。

3)JS代码中隐藏的接口敏感信息或子域名等。

4)某些MVC框架隐藏方法的挖掘,比如index.php?m=content&c=template&a=show,如果把show改成read,download,edit这种试试呢?

5)了解是否存在ACL的限制,比如在某云上的服务器,限制只能从该公有云访问端口。

 

8.技术笔记整理

这个其实相当于备忘录,有些项目中是不联网的环境,随时随地的去搜索引擎查看技术文章变得不现实,这就需要日常的文章积累和整理,推荐印象笔记,有个牛X功能可以从图片中搜索关键字。

 

技术聊到这,给广大安服从业人员的几点建议:

1)要了解客户的外在需求和内在需求。比如在合同中做的一些安全服务项目是客户的外在需求,但是在实际实施过程中,客户更希望交付的是可以直接汇报的材料,这就是内在需求。

2)处理好和客户的关系,可能一个安服工程师对接的是多个客户,不同客户的脾性又有很大差异,这就需要日常多留意客户的性格特点及处事风格了。

3)每做一个项目及时跟项目经理汇报进度和工作进展,不可能所有项目都是一帆风顺的,及时汇报项目情况有助于项目经理协调资源和解决阻塞因素。

4)初入安服行业的小伙伴应以学技术为主,技术的广度和深度可以决定未来的职业发展轨迹,建议在日常工作中能发现自己的特长及兴趣点,可以更好的规划自己。

 

最后再谈谈情怀。安全服务工程师大多都是直奔一线或二线,每天背着本本四处跑,甚至还经常出差。工作性质确实如蜜蜂般辛苦,但是换个角度想想,可以参与到各大重保会议,这个本身也是很有荣誉感的事情,回想起自己刚大学毕业参加某峰会重保的场景,头脑里只想表达三个字:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!