API 介绍说明

CrossC2 在 LinuxMacOS 端可以无文件落地,直接从内存中解析加载并最终执行用户下发task中的动态库 ( .so / .dylib ) 与 可执行文件 ( ELF / MachO )。

更是预留了CobaltStrike数据集中收集的信息接口,例如 'portscan'端口扫描结果, 'screenshot'屏幕截图,键盘记录,密码凭证等等结果都可以自由指定返回,轻松快捷的开发出例如portscan等攻击套件。同时也预留了类似于 beaconNode, ssh beacon等高级接口,如果熟悉ExtC2或者使用纯粹的自定义通讯C2协议进行集连管理都将可以,攻击元数据的收集将更加灵活。

最终用以下方式去给 CrossC2 beacon下发task从内存中加载执行文件。

cna: 插件中定义命令,调用bcrossc2_load_dyn()函数加载执行文件
bcrossc2_load_dyn($beaconid, $taskType, $taskName, $taskResType, $loadlib, $transportArg);

可执行文件: 会从内存搜索解析头部入口点,最终传入task中包含的参数去执行。同时意味着可以在进程中查看到它,所以推荐下方的动态库执行方式。

动态库文件: 
    1. 需要传入参数的场景指定了动态库入口点 
        int crossc2_entry(int argc, char **argv)  
        与传统的main函数一致的传参方式, argc记录参数个数,argv则是个二维数组,指向了各个具体传入的参数值
    2. 如果不需要传入参数,则可以执行利用编译时attribute指定入口,在动态库被加载时自动执行

强烈推荐动态库的方式,这样在进程查看时,不会出现可执行文件的进程信息。

results matching ""

    No results matching ""