/c2c_go

C2 framework for go

Primary LanguageGoMIT LicenseMIT

Server基本功能

  1. 维护Client连接列表

  2. 下发命令(单个下发/批量下发)

    • 执行系统命令

    • 更新Client

    • 获取系统信息

      • 进程列表
      • IP地址
      • 系统版本
    • 扫描同网段其他机器

    • DDoS

    • 下载文件

  3. 保活(呼吸功能)

  4. 根据配置文件载入配置

  5. 对消息进行签名

使用证书进行双向认证

指令列表

  • cmd command args
  • download url save_path
  • update
  • getinfo
  • dos atk_method ipaddr/mask

Client命令

  • ListDir 从受感染系统返回目录列表
  • ListProcesses 此命令返回在受感染系统上运行的进程列表
  • 此命令会导致恶意软件针对受感染系统上运行的目标进程执行 taskkill 命令
  • DownloadFile - 此命令会导致恶意软件下载文件并将其保存到命令参数指定的目标 位置
  • RunCMD - 此命令使用 Go os/exec 包在受感染的系统上执行系统命令
  • DLRUN - 此命令会导致恶意软件下载文件,将其保存到 %TEMP% 并执行该文件

指令格式

Token 4字节

系统层次

                windows Linux
    ----------------------------------       
                木马
                ^
                |  加密信息/执行指令
                V
    ----------------------------------
    ^         ^          ^        
    | TCP信道  | DNS信道  | HTTP信道
    V         v          V
    ---------------------------------
    TCP agent   DNS agent  HTTP agent  这里可以是不同服务器上的服务
                处理木马连接            ---> sqlite
                处理控制端指令
    --------------------------------
        发送指令^ |<-----------------------------------> 集成在controller中或者通过tcp连接传输信息
                | v 返回执行信息,新增/删除连接
    --------------------------------        发送指令
                controller |<-------------------------->|人
    --------------------------------        返回结果
                |               |
    redis 缓存指令队列       mongodb
            缓存bot队列

参考

| https://blog.netlab.360.com/pinkbot/

    Token字段,长度4字节,该字段值由服务器端指定,指定后将一直使用这个值。设置方式为:Bot启动后首先会向CC发送新生成的ECDH的公钥,此刻Token为0,当服务端接受后,会分配一个Token值给Bot,这就算指定成功了。
    指令字段,长度1字节。CC发出指令后,Bot也要用相同的指令码把执行结果返回。
    内容长度字段,长度2字节。当指令不包含具体内容时,设置为零,否则这里填充内容的字节长度数,并追加密文内容。
    指令内容。当指令包含内容时,此处填写密文的指令内容。解密方法请继续向下阅读。