向你提问:
老牛师傅好,我想提个问题。有一些web基础和内网基础。作为一个普通的驻场安服怎么进阶到红队?没有实战项目打,很多知识点学了没多久就忘记了(公司内护网项目一般也只能打点,内网不需要我们操作)。老牛师傅一般怎么样学习?
在回答你的提问之前,我们需要明白技术学习和技术工作学习的区别。我们先说技术学习,技术学习的动力有很多种,例如:想找一份工作;想赚更多钱;想要炫耀等等,但唯有热爱,可抵岁月漫长;唯有热爱,不畏世间无常。说人话就是如果你想在技术领域做到顶尖,唯有热爱才能让你轻松度过漫长又枯燥的过程,因为你不会觉得这个过程枯燥,反而很是享受。而你如果仅仅把技术作为工作或者是其他事情的一种工具,那么你学习技术的方式是不一样的,这就是技术工作的学习。技术工作学习首要的目的是为了有一份工作或者在当下的工作中你能发挥的更好。在工作中要获得更好的绩效,或者更高的职位,亦或是薪资更高的岗位,这是一件复杂的事情,技术仅仅是一只叩门手,你只有叩门的机会,不代表门会开。明白了技术学习和技术工作学习的差异,我们首先来看下在攻防领域(红队)方向的技术学习。
在攻击领域(offensive),当下大家大多自称Red Team Operator,以前是Penetration Tester。不管叫什么,offensive领域的底层学习逻辑是没有变化的:知识学习--->操练(自己搭建测试环境)--->实战,这3个环节,每个环节都需要做笔记(建议写文章并发表)。
这个过程中有新手和老手的区别,新手刚开始最好是利用系统性资料学习,可以站在前人的肩上,快速掌握知识。老手需要跟进前沿技术成果和开始技术拓展的研究。说回攻击领域的学习无外乎两块儿:打点、内网。
在星球有用户提过这样一个问题:匿名用户 提问:
师傅,现在攻防比较多,一个客户一年可能要做好几次攻防,以前的漏洞都打没了,请问在前期信息收集时,除了子域名 c段 子公司 公众号之外还有哪些思路可以收集到更多的信息,寻找到更多的突破口?我刚打攻防,现在也只会爆破子域名 扫c段 用一些软件查一下子公司,一旦这些方式获取不到有效信息,我就有点不知所措了
我的回答:
从你的问题中,我想应该拆分为2个问题,1个是除了漏洞还有其他打点方式么?2个是信息收集的方式除了子域名、C段、子公司还有其它的么?先说第一个问题:我大致把打点分为以下5种方式:
互联网可利用漏洞(T1190)
钓鱼(T1192、T1193、T1194)
滥用认证机制(T113、T1078)
供应链攻击(T1195、T1199)
近源攻击(T1200、T1091)
具体描述可以根据后面编号在ATT&&CK框架网站中查询。使用这5种方式之前都涉及到信息收集。就是第二个问题,关于信息收集的方式上。上面的5种打点方式需要收集的信息侧重点不同
漏洞:主要是目标网络边界资产测绘IP、端口、域名、应用以及详细指纹,这的应用是一个泛指,例如:常见的web、WEB容器、中间件、设备、协议等等,一切暴露在边界的。这些方式不稀奇,现在拼的已经不是方式的多少,而是数据大小、指纹深度、扫描周期等公司级投入了。
钓鱼:钓鱼主要针对的是人,因此人员的信息收集渠道和能力就非常重要的,这块儿信息主要分为:身份信息(姓名、性别、年龄、职位等)、交流方式(手机、邮件、即时通讯等)、兴趣爱好(各种社交平台)。当然收集方式就涉及到各种小技巧,需要个人尝试整理,因为涉及到的各种平台的机制在不停变化。
认证:认证是网络的门锁,账号密码是钥匙,先通过测绘找到各种锁,例如:web登录、VPN、各种服务协议的认证入口等等。然后就是了解这些认证所需要的钥匙样式,有账号密码、有的只需要密钥、有的可能天生未授权,有的可能固定密钥或密码。根据密码的策略,账号的样式,然后通过信息收集涉及目标的各种关键字、以及常见密码设置的规则,来生成密码。其实很多设备类资产,特别是复杂架构类设备,例如会议系统,涉及到多个组件功能,内置了很多默认密码。实在不行咸鱼买账号登录内网也不是没发生过。
供应链:供应链有上游下游,有物理网络上的供应链关系、也有业务逻辑上的供应链关系。这些信息收集例如:常见的企查查、招投标、财报、新闻等等 。
近源:这里主要收集目标办公点、机房、安保信息,以及涉及到的wifi、门禁、自助设备等,主要根据场地实际情况突破安保和监控找到网络接入点。
以上是关于打点,再说到内网渗透,有人说渗透的本质是信息收集,这个说法个人觉得比较片面,我还是比较喜欢@Jackson_T用OODA循环来阐述渗透的过程。OODA是一个军事理论,Observe观察、Orient定位、Decide决策、Action行动。有兴趣的同学可以自己搜索学习下。说回内网,我个人认为内网的知识大致分为:
系统设备操作:你要学会各种系统(windows、linux、交换机OS、路由器OS等等)的各种命令操作。
网络架构理解:内网内网,庞大的网络结构,你需要理解网络结构,定位自身所处位置,找到目标位置。
权限提升:一步一步把自身权限提升到管理人员层级,你需要权限才能走到你目标的位置。
横向移动:找到你自身到目标的路径,通过不管是RPC协议,还是运维工具,打通这条路径。
影响评估:找到目标如何获取目标。1T的数据如何出来?
以上只是一个笼统的分类,其中每个分类所涉及的知识都是海量的。在内网渗透中还有一个三****通道的理论:命令通道、潜伏通道、数据通道。一切的技术围绕着这3个通道的创建,在内网中如果你不能建立起这3种通道,你的任务就很难完成和抵御风险,这个不多说。
在学习了知识过后,操练是必不可少的,我建议自己搭建测试环境,这样能让你对系统设备的操作有深入理解。纸上得来的不一定完全正确,信息的传递也存在失效和误差,操练是一个纠偏的过程。
最后就是实战,实战是检验一切技术的标准,不管是刷SRC还是H1,亦或是HW项目还是渗透测试项目,也可以把眼光看向外边的世界。我个人对目前行业里的技术人员分为3种:只学习了知识的嘴炮选手,通过了操练的实验室黑客,以及正在实战的一线人员。当然这是从纯技术角度出发的视角,并不包含工作属性。
除了以上,还有2点我没说到:
一点是防御对抗,不实战时仅仅学习和操练是不会遇到防御对抗的,不管是WAF、还是内网的流量对抗、终端对抗。对抗是一个此消彼长的过程,不停地在演进。不管是在打点还是在内网,都涉及到对抗,所以对抗我一般单独拿出来看。做个比喻就好比知识的学习和操练就是你在靶场实弹打靶,靶是没有防弹衣的,靶也是不会反击的,而实战中目标是有防弹衣或者也会反击你的。突破防御和做好自身防御,使自己操作根据实际环境做OPSEC,这些都是所谓的经验和感觉,是需要实战才能练出来的。因此当操练过后,学习一些前沿的对抗技术,然后在实战中不断打磨。对抗技术的时效性很强,需要技术人员在实战中不停摸索,这可能也是实战中别人搞不定你搞得定的关键。同样也是很多老手不愿意给新手分享的核心技术。被防御方知晓就会失效。
二点是笔记!笔记!还TM是笔记。没有人能记住所有,随时做好笔记,定期做梳理,时不时写成文章,是非常有必要的。这个过程比较枯燥,把笔记写成文章发表,是一个不错的抵御枯燥的方法。比较值得学习的是我遇到一个同学,在向我提问的时候,把自己的问题写成了一个文档给我,我看完就很快找到了他问题所在,这样非常的高效。可能你会觉得写文档浪费时间,其实写文档的过程就是梳理你问题的过程,可能你在梳理的过程中你自己都找到了问题的原因。
以上是技术学习,而技术工作学习,可能和以上思路有很多不一样的地方。技术学习可以让你在技术领域比较突出,但并不一定让你在工作中突出。
技术工作学习要注意2个问题:技术适配和技术溢出。岗位JD、实际工作内容、实际工作目标这3者往往并不是一致的,而你的技术能不能让你完成你的工作目标,或者你技术学习的方向是不是在跟着你的工作目标而变化。当然完成工作目标,技术只是其中一部分,打XX打的也是人情世故。因此你的技术工作学习是跟你的实际工作目标相关的,和纯技术学习是不一样的。所以你必须做好技术适配。举个例子:如果工作需要的是嘴炮,你学习学习知识就行了,更多的专研向上管理可能会让你在工作中混的更好。如果你想混甲方,多写写操练文章,扩大扩大影响力,混点会议,做做社交,不需要实战,不注意可能你就是负责人了。当然我这里并不是嘲讽,因为岗位的需求是不一样的,摸清楚真实的职责和价值,才是技术工作学习的正确方向。至于技术溢出,目前很多岗位其实不需要太深入的技术,很多核心的赚钱部门,同样并不需要所谓的高深技术,也就是赚钱的技术并不一定高深,高深的技术并不一定赚钱。
技术工作学习的话题很大,涉及技术人员的职业发展,今天就说到这儿了,后续有机会再聊。也欢迎加入星球向我提问,不管是攻击领域(offensive)的技术问题,还是工作求职问题。下面是3天体验卡。