PandaSniper
Linux C2 框架demo,为期2周的”黑客编程马拉松“,从学习编程语言开始到实现一个demo的产物。
特别注意:此程序仅仅是demo,请勿用于实际项目。
但是我们会不定时更新,随着我们对这次新学的编程语言的更深入了解和运用,我们会不断更新和优化代码以及架构,让PandaSniper随着我们一起成长,作为我们小组技术提升的体现。
为什么叫”PandaSniper“,没有为什么,觉得熊猫狙击手比较好听,就选它了。
起因
我相信每一个入行(信息安全)的人都有一个木马梦,向往有一天能够骑着自己的”马儿“浪迹天涯。从红狼、上兴、大灰狼到现在的MSF、Cobaltstrike等,”马儿“的名字在不停的变化,功能在不停的优化,架构在不停的更新,异或有些”马儿“慢慢消失在了信息安全这个小行业的历史长河里,但是它永远是”搞站“(渗透测试、红队评估等等)活动中的不可或缺的一大利器。
作为安全圈一名入行十余年的老鸟和带领的几个入行几年的新鸟,但都是编码圈的菜鸟的我们,一起达成了一个共识,我们要实现我们的“木马梦”,虽然我们2周前还不会写GO、C#、C/C++。我们不做”如果有这么一款马儿就好了的“美梦,我们自己上,成不成看天意,做不做看自己。
架构简述
PandaSniper使用不同编程语言,编写3个独立的组件,分为Master、Agent、Implant这3个部分。
-
Master(主控端):使用C#和WPF编写,作为主要功能的展示和操作部分。
-
Agent(代理端):使用GO编写,顾名思义作为Master端的代理人,接收和发出Master的各种指令以及数据。
-
Implant(植入端):使用c/c++编写,用于目标主机数据获取的植入程序,并发送数据到Agent端。
数据流和协议:
Master <----(tcp/ssl)-----> Agent <----(http)----> Implant
如果你打开我们的Master界面会发现,极其像Cobaltstrike。我们整个架构和界面都是模仿的Cobaltstrike,Cobaltstrike是我目前用过的最好用的和扩展性最好的以及最稳定的C2工具。我也希望我们的PandaSniper能像Cobaltstrike一样好用,但目前相差太远(及其遥远),但我们相信未来。
功能
目前只有一个可能还存在bug的命令执行功能。对一些需要交互式的命令基本没有支持,功能还需大力完善。
依赖
- Master:.NET Framework 4.6 (Visual Studio 2019)
- Agent: 无
- Implant:libcurl4
编译和安装:
-
Master端使用了MaterialDesignColors和MaterialDesignThemes.Wpf(项目网址:http://materialdesigninxaml.net/),Newtonsoft.Json项目。使用Visual Studio 2019直接编译。
-
Agent端依赖包
- github.com/bitly/go-simplejson
- github.com/dgrijalva/jwt-go
- github.com/urfave/cli
-
Implant端
- 安装依赖:apt-get install libcurl4-gnutls-dev
- 编译:gcc main.cpp -lcurl -lstdc++ -lpthread
TODO
- Master端
- 自己编写控件模板和样式,去掉MaterialDesign相关依赖
- 更换Json使用库,去掉Newtonsoft.Json依赖
- 利用MVVM设计模式编写界面
- 整理C#代码
- 完整移植Cobalstrike v4.0所有相关操作界面
- Agent端
- 整理规划代码
- 完善架构功能和数据结构
- 完善命令功能
- Implant端
- 整理规划代码
- 去掉curllib4库的依赖,使用原生函数
- 完善命令执行功能