这是[信安成长计划]的第 1 篇文章
关注微信公众号[信安成长计划]
0x00 目录
0x01 密码校验
0x02 aggressor.authenticate
0x03 aggressor.metadata
0x04 数据同步
0x05 流程图
0x06 参考文章
先统一一下后续文章所提到的一些名词,以确保大家都在聊同一个东西,文中将 CobaltStrike分为 Controller、TeamServer、Beacon 三端,本文所描述的是 TeamServer 启动之后,从 Controller 登陆 TeamServer 的流程分析。
由于水平有限,对于数据同步并没有理解的足够清楚,望各位斧正。
0x01 密码校验
启动 TeamServer 后,会创建 SecureServerSocket 对象并且循环调用 acceptAndAuthenticate 方法等待 Controller 连接
在接收到信息并验证成功以后,才会去调用 clientAuthenticated 方法来线程执行 ManageUser 以处理与 Controller 的信息
当 Controller 在点击 Connect 按钮时,会调用 Connect 中的 dialogAction 方法,会先创建 SecureSocket 对象,并调用 authenticate 方法进行验证
在创建 SecureSocket 对象时,会与 TeamServer 进行握手等操作,TeamServer 会进入 SecureServerSocket.this.authenticate 方法进行验证,此时会一直在 var4.readInt() 阻塞,直到 Controller 将信息发完
接着来看 Controller 的处理,在 authenticate 中,进行了数据包的构造,先写入一个标志 48879(int),接着是密码的长度(byte),然后是密码,之后用 65 来进行填充
密码长度加填充长度,不超过 256,再加上标识位和密码长度,256+5=