简述
想了想还是给自己写一个2021年的年终总结,回顾下过去一年所做的事情,复盘下自己的不足、待改进项。
上一次给自己写年终总结还是在2019年的时候,本来打算2020年也写一篇的,可惜太懒了就一直没写,拖到了现在。最近把个人博客的前后端代码重写了一遍,这不得写篇文章放上去看看效果嘛。嘿嘿~
回顾我的2021
想做的事情很多很多,但去年不知道从什么时候开始,在生活、工作中少了些许“激情,热爱“。干活的动力减少了,很多事情本可以做的更好但只使出了一半力气,想着能用就行。还好之前用甘特图计划好的一年的工作排期,在大方向上没有偏移太多。
年底一次通过了 OSCP 的考试,给了自己一剂加强针,重新拾起了一点自信(软考中级还是没考过… )。
关于工作
在刚入职现公司时当了一把救火队员,被分到里离住的地方有将近两个小时远的总部,去支持项目过等保。那时候正好有项目计划上阿里云,就和云平台的同事待在一起,配合他们完善云上安全 CheckList 及等保 CheckList。
这块我个人觉得没什么好多说的,一是等保的检查项都列在那里一条条过就好,安全人员需要做的就是去推动落实,修复好发现的风险检查项。云安全一般在采购的时候会打包一个等保的套餐,运维协助一起配置好基线即可,剩下的就是定期检查和安全事件响应。
到2020年五、六月份的时候,这边基本不需要我参与了,有一个之前常驻在这的同事负责。我就去了另外一个办公地点待着。
部门副总监和有次我聊天,我表达出公司现在渗透测试流程中对写报告这个环节不太友好,想写点团队类的工具简化下渗透测试的工作流程(中心、事业部打电话或发邮件要进行产品的渗透测试,安全工程师编写渗透测试Word文档报告,完了邮件发给项目组),他表示支持并表示以前就想做只是没有这块的人手。
之前在 OYO 工作的时候,安全和运维在同一个部门,到后期计划做 DevOps 的工作。当时我已经完成了在运维发布平台接入静态代码扫描的模块开发工作,CD后的Web自动扫描模块也开发的差不多了的。所以想在现工作也做一做,试试看能不能干成 DevSecOps。
可惜理想很丰满,现实很骨感。因为现公司组织架构的复杂性,安全部门的特殊性,产品和业务多样性,想搞完整的 DevSecOps 几乎不可能,只能想办法进行功能上的分拆,剔除不适应项做现在看得到摸得着的。
内部的安全工作运营平台
写这个平台时计划的就是做前后端分离,一是前后端分离开发比较主流,二是如果有人来帮我分担点活我就会轻松很多。之前写了几年PHP,在OYO的时候为了和运维更好的合作,用的 Python 然后基于 Django 开发的微服务模块,所以后端最终选型就是 Django 了。前端则是用的 Vue.js 配上 element-ui 。
额… 真就从零入门 Vue.js 和 Django,后面还有 django rest framework。一个人全栈承包了所有工作,包括不限于:前、后端开发、写产品需求文档、画主要功能流程图、规划排期甘特图、Gitlab+Jenkins+Docker 自动化部署。
然后2020年八月左右完成了第一版的上线,主要围绕渗透测试工作流程做的功能开发,安全测试工作生命周期:
然后用了两个月,觉得 element-ui 对 Table 的组件支持不够友好,花了一个月的时间将网站整个用 iview 重构了一遍(都怪当年学艺不精…)。
现在所有的渗透测试任务都在该平台创建和领取,方便了统计和管理。而安全工程师只需要创建报告和录入漏洞详情,就可以发标准的渗透测试报告,邮件及时通知需求发起人来验收安全测试漏洞。规范了工作流程,大大减少了后续汇总时的数据错误。
后面又陆续加了一些其他的功能模块,如:应用备案录、应用安全风险自查表单等。随着内容增多,干脆用 docsify 写了个在线帮助文档,现在关于平台使用的问题就比较少了,优先让他们先看手册。
为什么要做它呢?个人总结下来有以下几点好处:
- 从集团安全部门的角度制定自己的“赛道“,让下面的中心、事业部更好的配合我们的工作;“留下一个希望的种子“,先把东西做出来并落地实践,后面再围绕它去迭代去优化,争取在安全工作中发力让上面看到优势。
- 规范化安全工作,移除渗透测试工作后期对报告的排版等耗时工作,统一标准化输出;
- 让部分安全工作工具化、自动化,为中心、事业部提供多种解决方案,让安全工作在企业中其他部门能够感知到,拉他们一起入伙;
AWD内部安全竞赛
把上面的事情忙的差不多了的,就琢磨着搞搞内部攻防的事情。想着一起提升下团队的攻防技能,促进下团队技术交流氛围、部门凝聚力。因为部门的固定工位不够大都数都是在流动工位上办公,同事之间的交流也不是特别密切。
怕自己也怕身边热爱学习的同事陷入一个原地踏步的怪圈,忙活一年下来发现技术一点没长进,尴尬不尴尬?
在这期间呢,两个技术很好的伙伴离职了,一个技术成长很快热爱技术的回老家结婚奋斗了,另一个回老东家做安全研究。现在有的时候一些技术上的问题都不知道找谁交流。
扯远了,当时的选型就想着弄AWD这种具有强竞技性质的,个人感觉比纯CTF具备跟多趣味性、更贴近真实的攻防实战场景。找了很久最终发现 Cardinal 最适合,虽然在部署和实际使用过程中出现了一些接口参数错误,不过也都通过查看源代码找到了(比如一些后端接收必填参数,前端没有做校验,然后后端返回的错误信息也不准确)。
整好今年一直在打 HackTheBox 的靶机,所以就去复刻了四台靶机(3 Web + 1 PWN),将他们做成Docker进行快速部署。然后为了更好的构建,将它们做成了一套 docker-compose ,每个 docker-compose.yml 就能为一只队伍拉起一整套的环境。
为了更好的做网络隔离,在容器网段里加了个 OpenVpn ,这样每只队伍都需要先拨 OpenVpn 进入战场环境,才能进行攻击和提交获取的Flag。
在这里有个坑点我一直没解决,如果有会的朋友麻烦请告诉我下,就是拨上 OpenVPN Server 之后会断外网,改了 ip rule、DNS 解析还是没用。
当然,因为就我一个人捣鼓这玩意,还有好多坑没填。比如像裁判端的 CheckList 脚本就没写好,后期只能手动去请求接口。缺失好的 DateV 攻防数据,不像其他大赛那种具备观赏性。靶机 Down 后的拉起不够自动化等等问题。
不过也算是磕磕绊绊,没出什么大问题成功举办了两次,将大部分的人积极性都调动起来了。后面忙别的事情去了,这块就暂时搁置了,总不能每次都打同一套靶题吧?明年看这块能不能搞点预算来,做成激励类的内部技能赛事,再来个人来帮我分担点工作就好了。
hvv攻防演练
去年年初吧,我们有同事做为蓝方出差去客户现场保障。去年中期我也有幸参与到该演练中,不过是作为红方攻击队的身份,也是我们公司第一次参与攻击队,虽然只是区的小行hvv。
因为疫情的原因,组织方并没有将人员拉到一起意思,在公司订了一周的会议室。队友都是那种只做渗透测试的,不知道什么是后渗透或根本没接触过后渗透,没办法硬着头皮上呗。只让他们帮忙收集下目标资产在公网暴露的敏感信息,和我打下来后的一些攻击报告的编写和上交。
个人觉得,很难得碰到这种完整的生产环境,且有权限让你放开手脚攻击的机会。所以干了几个通宵,至少我自己是玩的挺开心的。把目标中的一个集团打穿了拿了一万分,而这一万分也保住了我们取得第二名的成绩。期间裁判还发错了一批目标,导致有几百分没拿到吧,但这并没有对最终排名产生什么大的影响。
这次我总结为对自己个人渗透测试能力的一次大考,将之前积累的各种知识全部用上了,所谓温故知新。
本来打算写一篇脱敏后的实战类型的文章,后来想想还是算了,毕竟已经很少在 t00ls 这类的网站上,见到以前的老ID、老大佬发这种实战类文章。
总结下来,不管是应对Hvv演练检查还是啥,企业本身连简单的安全类基线都不重视,出现信息安全事故只是早晚的事。能早点做就早点做,哪怕是做最基础的运维时的应用安全扫描,都比不做要强。
代码审计
在 2019 年后我就很少去深挖这块了,以前还会挖一挖开源的 PHP CMS 系统,提交一下 CNVD 或者写文章投到信安之路。在 OYO 从事甲方安全太忙了,安全部门就两人能不忙吗?不过期间接触到了国标这种东西,随手搜了搜看国标里有没有代码审计的东西,还真有。
- 【GB/T 39412-2020】《信息安全技术 代码安全审计规范》
- 【GB/T 34943-2017】《C/C++语言源代码漏洞测试规范》
- 【GB/T 34944-2017】《Java语言源代码漏洞测试规范》
- 【GB/T 34946-2017】《C#语言源代码漏洞测试规范》
以上国标都是现行中的标准,建议在做代码审计或对代码审计感兴趣的看看,里面对于代码审计相关的术语、代码审计执行流程、漏洞产生实例、修复建议等等,都是很专业的。虽然语言源代码漏洞测试规范有点老了,但也比你去报个什么培训班学习强啊,这都是免费的。
依托于写了好几年的PHP,所以对其他语言也能理解个大概,在做 HackTheBox 的时候给了我很大的助力。而在现公司,加起来做过四到五次的代码审计吧,都是中心或事业部需要安全部门给予的支撑。
给的是 Java 类安卓应用APP源代码,碰到比较多的通病都是密钥硬编码。有次还出现了 Aliyun AccessKeySecret 写在代码里,这种危险的的情况。
所以在企业中推行应用编码安全是很有必要的。安全部门也组织了全员进行过安全编码的培训,但因为产品代码的管控不归我们,最终的结果不好说,从现场答卷的情况来看还有待改善的空间。
这是也是我后面安全工作运营平台需要添加的功能模块,以前在OYO的时候做了基于 Fortify 、SonarQube 的扫描工具,一只没找到合适的契机加上。
其他
关于工作上的事情大致就是这些,其他零散的也有一点,并不能做为我主要的工作内容。比如参与写了几次新的现行制度解析、检查项清单等,团队内部知识分享等。
总结个人在工作上的缺点还是比较明显的,对文档类工作编写能力一般。说明白点就是缺少一些阅读理解能力,技术类输出校多,所以很多工作在进行和实践角度优先考虑的是怎么落地、用那种技术去形成解决方案。
就像上周写的年度个人工作述职,写的全是XX工作的进展、新功能和优化,以及明年要做的啥啥功能,全然没有老板想看的那种,如:你做这玩意这一年下来取得了啥进展,又为公司带来了哪些收益,它能为公司带来啥结果。
这都是我后续需要思考的方向,不管在哪家公司都要成长的方向。
关于生活
这块我仔细想了想,还是得写点什么做为总结,毕竟不能全都是工作也需要一些“诗和远方”。
旅游
为什么把旅游放在生活里的第一项来说呢,因为我太想出去走走逛逛了,但自己却是一个很宅的人。除了吃美食能让我坐两个小时的地铁,长短假除了回老家就是呆家里,祖国的大好河山都没一一领略。
2020年的时候另一个大学同学还在上海,和他们一起爬过一次黄山,然后就出过上海了。翻了下手机相册,2021年就和媳妇去了一次上海动物园。五一的前几周,看到好久以前的前同事创办的暴走团推公众号文章了,就拉着媳妇掺了个团。
五一国庆节在枸杞岛过的,蛮有意义的避开了人流大潮。体验了人生中第一次海岛上的生活,看到了向往中的那种生活。可惜前同事带大漠的团了,没能面基,互通了电话听说他现在乌镇做生意成家立业了,由衷的祝福,以后有机会再暴走团相聚。
打HackThebox
2020年初冲了一年的 VIP,准备刷刷 Box 为年底考 OSCP 做准备。然后就成了我2020年周末的主弦律,上班工作不忙的时候开个Kali就开始打Box,下班或周末到家就开kali继续。
难度是从简单向上刷,因为 VIP 是可以打退休Box的,所以我按时间排序从晚到新依次刷。到我8月报告 OSCP 的时候,简单级别的新旧Box已经全部做完了,中等难度的退休Box也做了一半,逐渐熟悉拿Box的技巧和思路,并使用这些思路刷 OSCP 的 Lab。在30天的Lab结束后就预约了线上考试,但因为各种原因改到了11月才考。最终运气不错已 85 分的成绩通过 OSCP 考试,通过了认证。
我的通过技巧就是刷Box,官方发的PDF也只是随意翻了翻,视频都没看,就纯刷Box算上Lab的机器我应该刷了140+(HTB的109台,Lab的30+台)台机器。
因为疫情影响需要等待60天以上才能收到:
个人公众号
去年受到两位前同事的影响,见他们都是在自己的公众号上写文章,才想起自己还有个N年前申请过一个用于公众号开发。所以也就打算运营下自己的公众号,看能不能把他当作副业干干。
一开始的定位就是分享技术,写写打过的 HackThebox 文章,不会去跟风热点吃瓜。然后半年下来至今才 267 个关注,也实属有点惨淡。等把手上剩余的 HackTheBox 文章发完了,考虑是不是要换个方向和思路去运营。涨到500才能接广告呢。
个人博客的重构
这块是最近一个月在做的事情,在2017年的时候用 CodeIgniter 开发了一版博客,然后一直用到今年。用 Vue.js 写完安全工作运营平台后,让我动了重构个人博客的心思。以前的风格太丑了点,还不兼容移动端。
https://web.archive.org/web/20210514015317/https://www.jgeek.cn/
从快照里可以看到橙色为主色调,显得一点也不极客。而且老代码是前后端混写的,后续我想增加功能都显得特别麻烦,索性重写。对了,2016年的时候还有个更丑的版本,现在看来显的非常大众。
受到新改版的 HackTheBox 主页配色影响,看着挺顺眼的就借鉴了一下,同时也借鉴了点「离别歌」的首页内容。HTB 官网出过一个 Hack_The_Box_Brand_Assets_Guide,详细列举了一些实例:
所以,我最终重构的博客长这样:
反正我是觉得挺Geek的,不接受反驳思。
说说使用的架构吧,之前在学 Vue.js 的时候知道了 NuxtJS 简单了解了下,索性这次就使用 NuxtJS 做为前端进行开发。后端则是因为自己想学Go,所以找了找发现 Beego 的 Go Web 对初学者相对比较友好,就用了它。
我发现现在很多安全工具有向Go迁移的趋势,可能是都看到了它的跨平台移植性,和天生多线程并发。后面我也想将Go最为自己的主要开发语言,Python 的话也会兼顾,因为后面筹备考取 OSWE,写那些 exploit 还是现阶段的 Python 显得成熟点。
在用 NuxtJS 写前端的时候真的是一步一个坑,Beego 部署的时候也是一步一个坑。遇到不懂的只能 Google,Google 都搜不到就这能组合关键字去搜 GitHub 。还好功夫不负有心人,总算是赶在跨年夜发布上去了,替换了之前老的博客。
后面再考虑加个留言功能,免费的有广告,自己写的得加个安全内容过滤,计划到时候调用阿里云一类的接口好了。本来在后台文件编辑的时候,打算把 微信 Markdown 编辑器 加进去。捣鼓了好久没成功,能力有限没能成功单独拎出来做成组件集成进来,有知道小伙伴可以告诉我下,有偿。
投资以及BTC
哎,这块是真的坑,小几万没了。RNM,退钱~~。基金还被埋在里面呢,不敢瞎操作再放两年看看。
2022未来展望
有太多想做的了,但饭得一口一口吃脚踏实地。
最早在阅读 银行业安全运营平台的建设与思考 文章时,我就联想到在公司中落地实践这类东西。然后接触到 SDLC、DevSecOps 及前人写下的优质文章:DevOps在证券互联网研发中的应用与实践、从SDLC到DevOps下的广义应用安全管控体系 ,更加充实了眼界心里也大致有了个学习架构。
明年再发发力,将安全工作运营平台的功能参考SDLC框架进行“左移”。让安全部门能够介入更多的场景,让安全工作能够提前有计划的进入,而不是每次都充当救火队员。
不对,应该说是今年…
新年2022 ,新的 Flag,新的 Check all:
- 年底前考取中级职称
- 年底前考过 CISSP 认证
- 在考过 CISSP 后准备 OSWE 的考试认证
- 年底前用 Go 写一款安全类开源工具
- 持续找寻长沙安全安全工作岗位