# Cobalt Strike 控制台 ### 基本要求 - 能够向客户端发送shell指令并且在客户端执行之后接受返回的指令执行结果(完成) - 采用模块化程序设计思想(完成) - 实现心跳功能(定期检查客户端存活) ### 进阶要求 - 通信流量加密(加密方式不限,推荐与二进制学员商量实现自定义加密) - 文件浏览(完成) - 文件的上传及下载(完成) - 可控制客户端的激活,休眠与自杀 - 能够与多个客户端进行通讯 ### 额外要求 - 实现提权操作(完成) - 集成浏览器密码一键抓取(并不是一键但是提供了解密工具) - 调用数据库来实现相关信息的储存 - 图形化界面(低优先级) - 通讯实现https - 自定义通讯协议 ### 使用方法 可以使用go run console.go直接运行,也可以使用go build console.go编译生产二进制文件。在release中也有编译完成的二进制文件可以直接下载使用。 ### 模块化设计思路 - 服务端控制台与各功能分离,能由控制台统一控制,也能单独使用。 ### 控制台功能 - 提供了一个简陋的本地shell,调用了系统函数来执行命令 - shell里内置了一些特殊命令如'help', 'set', 'show', 'listen', 'dial'。以此实现连接木马端 - 用结构体保存了连接所需的参数,如本地监听端口,远程主机地址,远程主机端口 ### 监听和连接器器功能 - 监听指定本地端口,木马上线会有提示 - 连接指定ip的指定端口,链接成功会有提示 - 使用goroutine来保证接收和发送的异步,使用channel来控制goroutine的流程 - 如果出现接收缓存满了,可以使用":flush"命令继续输出 ### 文件上传下载功能 - 下载时利用dd命令将文件分成与缓冲区大小一致的数据块发送,当接收到数据大小不一致时则判断传输完成 - 上传时利用dd命令bs和count参数指定接收文件大小,这样就可以通过标准输入流写入文件(未测试读写权限问题) - 提供了downloaded目录用来保存下载好的文件 ### 提权功能 - 在privsec文件夹中提供了shell脚本和多种架构的二进制文件,可辅助提权。上传至客户端后运行即可。 ### 更新日志 #### v1.0.0 实现本地shell #### v1.1.0 实现监听,上传下载功能 #### v1.2.0 实现自动构建docker镜像,推送至harbor。 实现自动编译二进制文件并发布到release中 #### v1.3.0 实现自动部署到集群 ## 参考资料 知识点参考:https://toothsome-cardamom-46e.notion.site/Go-TCP-Cooolin-4d03a3eaed09446bb501826cbbd6bc22 语言参考:https://pkg.go.dev/ 提权脚本参考:https://github.com/carlospolop/PEASS-ng 提权思路参考:https://book.hacktricks.xyz 浏览器密码解密项目:https://github.com/unode/firefox_decrypt ci以及k8s部分参考代码:https://blog.csdn.net/qq_19655405/article/details/117924018