毕业四年记

有些大佬半年就会写个复盘记录,锦旭这边比较落后,四年才写一次。忙中偷闲,周日下午远离老婆(没有孩子),跑到北京大兴郊区的一处咖啡馆,带上公司配发的高级锄头:搭配M1 Pro 32GB 内存 1TB SSD的Macbook,点了一杯超大杯冰美式,陷入了对往事的追忆。。。

概览,主要分为

1. 过去四年的回顾
2. 2022 的收获
3. 2022的困惑
4. 展望人类文明的未来

最近四年我一直在xx互联网公司效力,回顾下历史,我为公司创造了这些东西。

  1. 一个漏洞预警系统
  2. 一个资产测绘平台 CyberSpace
  3. 一个自动化的资产收集工具 Athena
  4. 一个安全产品评测工具 WeAttack

以及期间还做了若干需要翻历年OKR才能想起来的小项目,就不写到这里了。

说来神奇,我做的这四个系统,至今还没能交接出去,但是还好没有死掉(除了因为合规被关停的Cyberspace之外),其他一直在为部门的安全事业贡献自己力量。

和组里的老前辈不同,有些老前辈做完一个事儿之后,马上呼啦哗啦文档一搞,就交接出去了,自己继续探索新事业。锦旭的项目则不然,写完了之后(可能是因为代码只有jinxu自己能看懂的原因),往往维护了很长的时间。

在2021年,我感觉到项目太多了,基本处于每个半年开个新坑的状态。逐渐感觉到维护成本过高了。

现在再看回顾一下这些项目,没有交接出去的原因主要有:

1. 代码多,涉及很多的技术组件

以CyberSpace为例,架构十分复杂,交接起来十分费力气。

  • 包含了全球扫扫扫的匿名主机
  • 包含快速应用层探测的go扫描工具
  • 包含通过匿名网盘辗转回国的rclone通道
  • 包含pyspark的规则&回包解析模块
  • 包含一个入库ES / Clickhouse / Hive的脚本工具 等等等
  • 一个前后端分离的Web系统

换一个比如说漏洞预警系统,整个系统由四个git 项目构成。

不论是交接还是维护,都是比较麻烦的事情。关于为什么会产生这个问题, 我一会儿再详细说。

2. 倾注了我的大量心血,感情还是有了

这里有点小心思,具体来说指的其实是CyberSpace。这个测绘系统是我一手做起来,大量时间在试错和反复验证。最后用很少的服务器成本,在某些维度能够和商业化的厂商做正面PK。还是花了很大精力的。

“自己孩子,还是不要被别人抱走了~~~” — 这个大概是我工作第二年时候的想法。

3. 远程工作,还是有些沟通不畅的情况

比如和同事的同事们朝夕相处的话,可能一些项目和坑,手把手就带会了。

魔幻的 2022

好了好了,回顾了一下过往的项目,有点负能量,迫不及待想要分享一些最近的收获。

2022 – Less Is More

2022在公司内部论坛里看到一个让我记忆深刻的回帖,叫做

代码不是资产/财富,代码是负债。代码实现的那个背后的需求才是资产/财富。

从这个角度看,很多事情是没有必要做的。事情做完之后,往往背后并没有实现什么需求 / 解决什么问题。

我在今年H1有过一段什么都不想做的迷茫阶段。这个事情不做会有什么影响呢?好像也没有什么影响。于是开始不知道干什么了。

但是大家都知道,今年H1外部环境风云变幻,每天被各种负面消息环绕。于是,我焦虑了。

焦虑的一个外在表现是有段时间产生了burnout。burnout的一个表现是到了晚上干不动活了。后来,后来我开始7点下班,7点下班之后回家写一会儿代码,或者看看外网的文章,然后在9点左右下楼和家人做做运动。自感状态恢复得不错。

焦虑的另外一个表现是没有办法深度思考,半天只能解决一个明确的问题。对于其他的一些需要抽丝剥茧,在多条路径里做出路径选择的场景里,没有办法做推理和决策。

2022H1没有开新坑,Less is more.


2022 – 把一件事情做好,可以把项目当作产品来运作

作为中后台的团队,Leader会从他的角度,给项目一些指引。有时候,会停留在满足Leader需求的层面。现在来看,这个是不对的。

作为项目负责人,没有人比我更了解产品的技术细节和能力上限。如果仅仅满足leader的需求,会很大限制项目的发展。事实上,跟着Leader的节奏走,走完之后回过头再看,可能就会出现,哎哈,怎么就这?

事实上,可以有更多的思考,比如漏洞预警系统,离VPT还有多远?比如云上的蜜罐的数据,还能有什么用法?等等的。

这是个比较复杂的问题,H1看到一个话比较有共鸣,叫做 “::有了锤子,哪里都是钉子::”。如何提升投入产出比,这是一个比较难搞的问题。

但是可以确定的是,基于要实现的功能,当作产品来做,会更有想象力和成就感。

  • 比如Athena,我在H1申请了easm.cloud的域名,大大小小迭代了好几个版本。我觉得很不错,不出意外的话接下来也会继续维护,因为这个能力每年都能用上。

2022 – 协作 Cooperation,和队友并肩作战

和足球赛一样,每个队员都有明确的分工,相互之间互相信任互相补位。又像部队作战,有人负责冲锋陷阵,有人负责后场做饭。

在协作的方面,我还需要补补课。

比如WeAttack项目初期,投入人力较多,是否可以从技术细节里抽身出来,承担产品经理的角色?把控项目走向和汇报思路。把手头的活儿更多交给团队的“新”人来做。

但是历史没有假设哈,可能我承担产品经理角色之后,搞不好也会把大家带偏了🐶

回过头来看,WeAttack整体还是乱的,尤其是前端部分,投入了不少人力。但是现在打开,仍然像一个运营工具,不像一个产品。

怎么样才算一个产品呢?

产品解决的问题,一定是一句话就能说清楚的,WeAttack,可能是“以供促防”,或者是“攻防靶场”。但是还是不像个产品。形态也比较难变成产品。

H1调研过不少BAS的内容,也希望H2能够把WeAttack变成产品。解决实际的问题,给部门赚点钱。

如果H2能够推动能力产品化的话,我希望能够全力投入进去,然后像老板一样,“::一定要搞定,搞不定就自己走人::”。

说远了,回到和队友并肩作战。H1因为疫情没有和团队见面,H2有机会多去深圳。(部门差旅费用要顶住啊)


2022 – 编程要 Kiss,Keep It Simple & Stupid

代码能够实现非常多的事情。如果不对代码加以限制的话,很容易在代码里写出来一个元宇宙 -》然后变得不可维护。

我有很多的项目都很复杂,上面提到的四个项目,如果去看代码量的话,其实都不少。代码量多一定会带来高昂的维护成本和非常费脑的理解难度。

尤其是在一个安全为中心的团队里,复杂的代码结构带来的就是,不敢动,啥feature,没用过?

我正在重构雅典娜,我希望Athena可以成为一个我认为很 Kiss的项目。比如:

class DomainWorker:
    def __init__(self, domain):
        self.domain = domain

    def domain2subdomains(self):
        return [i for i in self.plugin_results if i.event_type.linked_model == 'subdomain']

不用关注底层细节了,好用就行,不好用你给我提bad case,我来改。需求理清楚之后,我觉得就能开发得很顺溜了。

这样代码也方便后人接手,如果哪天我离开公司了,我的队友看到我的代码之后也不会骂娘。

2022的一些负能量事情

我喜欢瞎琢磨,也喜欢和人聊天,我和大家聊天时都比较掏心掏肺,不藏着掖着,我感觉大家对我也是一样。有些小事情一直记在心上。也许他们都是对的。在这里也记录一下,过几年看能不能解开这些个心结。

安全的天花板

和一个安全专家聊天。安全这个东西,很难搞出新的东西。全球最牛逼的人都在研究安全,你要是想呼啦啦啦搞出来一个横空出世的东西,基本上不可能。

事实上也是,H1关注到Mandiant被Google云花重金收购了。感觉这家公司无比牛逼,于是查了一下资料。我也在做EASM(投入人力很少),人家也做EASM。感觉大家没有区别。底层技术都是一样的。一看演示视频里的数据结构,更加确信了这一点,::确实没什么区别::。。

那人家为什么能被Google收购呢?

我觉得有一个重要的原因是 LongTimeRun:长期的安全运营,Mandiant已经成立18年了。对安全投入也非常舍得砸人。

Mandiant Threat Intelligence deploys 300+ intelligence analysts and researchers located in 23 countries. We collect up to 1 million malware samples per day from more than 70 different sources.

那么,中国为啥没出来Mandiant呢?和另外一个专家聊天时给我解了惑。大概是国内安全盘子太小,钱不够,撑不起来这个建设成本。

所以说回天花板:

国内安全行业的天花板 -〉取决于企业能给安全投入多少钱 -〉企业能给安全投入多少钱则又取决于企业收入和预算情况。

有了行业天花板 -〉剩下就是各自厂商争抢份额的事情了。

经济下行的趋势下,安全不会太好做。安全缺乏的想象空间,在于不能出海。海外认可度低。

海外厂商做一功能,全球用户来买单,国内厂商一做,只有国内厂商买单,这个客观差距还是在的。

::当然了,这事儿也不用锦旭着急,天塌下来有大老板顶着。::

公司的行动也是比较明确,降本增效。要求业务团队健康可持续。健康可持续,就是要能自己养活自己。

生存 是文明的的第一要义

上半年出现了很多糟心的事情。都可以用这个三体里的话来解释。

比如 公司为何要裁员:公司要生存。出于生存做的考量:裁员有助于公司的生存。所以裁员。

比如 疫情防控和加码:xxxxxxxxx,所以要加码。

比如 俄罗斯为什么打乌克兰:再不开打北约要把武器放到俄罗斯国界线边上了。俄罗斯要生存,所以要开战。

再比如:美国为什么要制裁中国。

再往回看:日本为什么要发动甲午战争。

其实都是一样的,都能用这个思维模型来解释。

在公司里搬砖,也要想想关于生存的事情。

“一个组织存在的意义和价值是什么,然后层层分解到个人…”


最后再分享一个好消息

人类文明一定是向前发展的

万丈高楼平地起,不论朝代的兴衰。万丈高楼会留给我们的子孙后代。我们在安全领域和前沿科学的探索,也会传给后代。

假如哪天公司倒闭了,公司大厦会被另外一个更牛逼的公司买下来,然后入驻。

假如哪天锦旭离开公司了,会有一个更牛逼的人替代我的位置,为人类文明的发展带来贡献。

我坚信所有的困难都是暂时的,一代又一代人的努力,终将会推动人类文明走向新的高潮!

最后还有一个好消息:即使躺着不动人类文明也会滚滚向前。

在推动社会前行的同时也注意身体健康,让我们一起见证这波澜壮阔的历史吧!