我经常会写一些不着边际的东西,从我博客文章就可以看出现在的风格,前言不搭后语、文章主体和内容松散不一,说来惭愧,文化程度不高,也想抽空读读书花点功夫补缺一下。

近期发生了很多的事儿,很多时候在晚上会产生一些感触,但是都没有把它们给记录下来,现在点来一支烟,慢慢回忆……

第一个思考:我感受到了自动化时代的冲击

听闻关于演练的消息,也就一天时间,不知消息真假的情况下开始推论参赛厂商的自动化覆盖程度,发现整个行业的意识形态已经建立,未来(或已经存在的)漏洞战争的趋势已经开始逼近。

关于自动化的设计,我们早期已经着手将基本的信息获取、清洗、统计、归类、存储整个过程完成,但就此一战,能很明显的发现自动化是有阶段的,我们还处于第一阶段。起初,我们为了加速红队的“行动”,做了诸多的考虑。我认为,为了完成整个行动的自动化是不太现实的,难点在于经验如何转化为机器的逻辑。步子不能迈的太大,我先分解一下我理想的自动化阶段。

第一阶段:单从基本信息收集的具备

涉及多个维度,域名、子域名、IP、系统、端口、服务、Http服务相关组件等,互联网上的大部分工具、平台可能大部分已经满足这些最小颗粒度,但有些工具、平台就是偏离真正的需求。

第二阶段:基本信息收集的数据支撑

同样涉及多个角度,主动扫描、网络空间搜索引擎数据接口、组件指纹精准度、识别技术方案等。未来主动扫描可能用的会越来越少,依赖接口的会更多一些,接口只要更加实时的更新数据即可,然后确保构建好指纹的精准度,做到不漏掉一处资产的特征就很成功了。最早接触的一个网络空间搜索引擎是Shodan,我经过查阅Wiki百科发现它最早在2013年做起来,距今已经7年,在常规的渗透中,也会偶尔使用它来寻找一些有趣的资产,在IPV4的时代下,它已经算是一个“活地图”了,这里可以思考一个有趣的问题,当世界上更普遍使用IPv6以后,是否还会有类似的“活地图”呢?

第三阶段:启发式漏洞的定位发现

最初这个概念是我在参与团队内部平台建设讨论时提出的,其实也不是什么新词,为了应对这个建立了大大小小的SOC(Security operations center,安全运营中心)时代,我们需要把历史的扫描器丢弃,把攻击的特征降噪、剔除更多漏洞利用的唯一性,第一步就要将漏洞的发现理解为单纯的“发现”,而非“发现”与“利用”在一起去理解。例如,某个系统存在RCE(Remote Code Execution Vulnerability,远程代码执行漏洞),利用条件是要向网站某个接口POST一段数据:

> POST /handler/ HTTP/1.1
> Host: 192.168.0.1
> User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36
> Accept: */*
> Content-Length: 8
> Content-Type: application/x-www-form-urlencoded

data={'username':'code'}

< HTTP/1.1 200 OK
< Content-Type: text/html
< Server: Microsoft-IIS/7.5
< X-Powered-By: ASP.NET
< Date: Sun, 23 Aug 2020 14:13:45 GMT
< Content-Length: 1163

....

假设code是代码输入点,如果要进行漏洞的发现或利用,大部分人可能比较倾向于提交执行的代码:

> POST /handler/ HTTP/1.1
> Host: 192.168.0.1
> User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36
> Accept: */*
> Content-Length: 8
> Content-Type: application/x-www-form-urlencoded

data={'username':'md5(1)'}

< HTTP/1.1 200 OK
< Content-Type: text/html
< Server: Microsoft-IIS/7.5
< X-Powered-By: ASP.NET
< Date: Sun, 23 Aug 2020 14:13:45 GMT
< Content-Length: 1163

....c4ca4238a0b923820dcc509a6f75849b....

因为让服务器端执行了md5函数,然后匹配响应内容中是否存在c4ca4238a0b923820dcc509a6f75849b由此来判断是否存在漏洞。

但在现在的大环境下,我不太赞成这样做,如果第一二阶段的工作做得相对比较扎实,完全可以直接判断/handler/ 是否存在即可标记“可能存在漏洞”。

> GET /handler/ HTTP/1.1
> Host: 192.168.0.1
> User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36
> Accept: */*

< HTTP/1.1 200 OK
< Content-Type: text/html
< Server: Microsoft-IIS/7.5
< X-Powered-By: ASP.NET
< Date: Sun, 23 Aug 2020 14:13:45 GMT
< Content-Length: 1163

....

按以往的安全人员惯用沉淀方式会自己使用Python语言写出POC(Proof of concept,概念验证)和EXP(Exploit,利用 国内简写风格)。关于概念验证,不同的安全人员在交换或使用POC的过程中会存在很多问题,如:库的依赖、代码风格不统一等等。关于漏洞的信息传递会失真,因为交换的不是“漏洞”本身,而是代码。另外,Pocsuite解决了代码风格和使用的问题,不得不说很赞。但往往团队中会有不热爱写代码的人,亦或是不爱阅读文档的人,要完成漏洞的落地需要更加轻便的方法。

2020-08-24-21-34-35

通过使用Goby,发现作者的思路非常赞,将常见POC的本质进行提取,把POC的落地变成了一个表单,这样直接解决了格式的问题,省去了编程的过程,但多人协作可能目前还未考虑进去,毕竟目前的定位是单兵工具。

总结下来也就是说,第三阶段需要解决:POC的去敏化、可配置化,让安全人员专注漏洞本身的检测与利用方式,而不是由他们去决定这个脚本怎么写、怎么高效的运行,这个是安全开发工程师应该干的事。

第四阶段:后渗透阶段信息协作与功能组织

Cobalt Strike我们看到了C2(Command & Control,命令控制)的特征模糊、Payload(载荷)的多样性、Beacon(信标)的接口化,但我认为它最值得我学习的是 — 协作模式。真正的从以往灰鸽子的CS(Client / Server)模式演变成了TC(TeamServer / Clients)的模式,它允许多个客户端连接和操作一个服务端。但它也有一些门槛(弊端),就是上手后想要完成一些复杂工作任务较为困难,光是解决免杀就要学习一些文章、或者编程(C语言、sleep脚本语言)等等,并且扩展的模块管理完全交给了每个使用者,hook(钩住)事件后n个客户端会触发n次。

Metasploit我们看到了它的社区力量多么强大,模块繁多,近期又更新了6这个版本,将Meterpreter的通信进行了加密,是一个突破性的进步。这里需要一个具备Cobalt StrikeMetasploit 优点的后渗透工具或框架,生态需要尽量选择脚本语言,这样在时代的进步中迭代快。

第二个思考:团队建设中价值观与文化的重要性

这个话题经常和我的领导探讨,我收获颇多,回想起以前的自己,思考的根本不会到现在这个深度。

所有企业管理者最大的难题就是“聚焦”,聚焦力量、聚焦思想,很多管理者或者员工没有换位思考的问题是:管理不是为了控制,而是为了让力量更好的聚焦。

价值观是基于人的一定的思维感官之上而作出的认知、理解、判断或抉择,也就是人认定事物、辩定是非的一种思维或取向,从而体现出人、事、物一定的价值或作用;在阶级社会中,不同阶级有不同的价值观念。价值观具有稳定性和持久性、历史性与选择性、主观性的特点。价值观对动机有导向的作用,同时反映人们的认知和需求状况。

—— 摘自 百度百科。

可以通过这句总结看出,价值观在不同阶级是有较大偏差的,所以每个企业的价值观基本都是非常的简单仅仅几个字,或者一句话,因为企业价值观需要尽可能的包容不同阶级的人群,比如企业的老板和其中的某个员工两个人,在哪些事物上会认知相同呢?举两个例子,比较简单的:某件事的是非对错,比较复杂的:在某种情况下,应当做出何种决定。

总结出来就是,企业良好的价值观让内部员工更容易的达成共识,能建立一个正向的引导,在价值观的影响下员工能够把能量释放到最合适的点上。

往往企业价值观的定义都会比较偏向“做人”这个点上,管理者需要具备某些品质才能拥有领导力、保障团队的良性发展,团队的成员才能有收获。因此可以看出,寻找一份工作不能只看薪水待遇,还要看公司价值观,直系领导的品质以及团队文化,这些要点一定会影响未来你在团队中的发展和工作状态。

团队文化,我的理解是通过价值观影响而产生的某些思维或行为习惯,也可以是某些人与人之间的约定。具体例如:项目完成的复盘总结、内部的做事流程、生日蛋糕祝福、定期的团建等等。优秀的团队文化能使人更快的建立信任,更具体的规范角色的行为,也可使人对团队的未来充满期待,能纵观整个自我成长的历史。

第三个思考:我们真的很幸运

去年有幸帮助公司的一级部门去给某学院的学生分享了一堂课,主要是关于自学安全的话题。

开始的时候分享了我的一些学习经历,我发现总结不出来如何培养自己的自学能力,因为第一个大前提:我做的是我热爱的事情,在年龄很小的时候就找到了自己喜欢的事情,为此愿意花大量的时间去探索技术,不断的学习。

从大部分普通应届生的角度来看找工作这件事,他们的选择往往很少,找到一个相对好的工作取决于自身在后天的积累是否能与社会某个职业的需要挂钩,但好像大多数学校的学生反馈的是专业知识都与职场应用有一定偏差,这就导致就业难,人生第一大门槛:“我该去往何方?”

我对兴趣的理解是:“兴趣是人生不可或缺的调味剂,一定程度能够影响半生的幸福。”一个好的兴趣是针对事物抱有无尽求知欲的,并且具备隐性的持续性,在探索的过程中、过程后,一定是情绪高涨,快乐的。我很庆幸,在年纪很小的时候拥有了兴趣,在不断探索求知的过程中,我不断收获成就感,洗涤内心的卑微,使得一个少年变得逐渐强大。

兴趣让我有了更多的选择,我的兴趣不只是安全领域,更深层次的总结可以说是对计算机网络相关的东西都感兴趣,它能使我化身成为程序员、网络工程师、产品经理、渗透测试人员等等。有许多次我都感慨,这是一个幸福的时代。