gloxec / CrossC2

generate CobaltStrike's cross-platform payload
2.27k stars 344 forks source link

配合malleablec2后linux能上线,mac无法上线 #58

Closed mackleadmire closed 3 years ago

mackleadmire commented 3 years ago

1.3.14版本文件上传下载没问题,但是4.0之后的都没有文件和文件下载 2.mac frp代理存在线程多开问题,发生此错误是因为增加了安全性以限制Mac OS High Sierra中的多线程。

gloxec commented 3 years ago
  1. 4.x系列的需要添加 CrossC2Kit 来添加文件管理功能, https://github.com/gloxec/CrossC2/blob/master/CrossC2Kit/CrossC2Kit_Loader.cna

  2. Mac frp有报错信息吗?以及mac无法上线的问题可否说明CrossC2 & MacOS 版本?本地测试10.x系统应该是正常的

mackleadmire commented 3 years ago

1 mac frp报错是这个objc[50958]: +[__NSPlaceholderDate initialize] may have been in progress in an, 添加export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES这个可以成功,但是后门权限不够没法source 2 mac是4.x 加载malleable没法成功,linux没啥问题,mac版本10.14.1

gloxec commented 3 years ago
  1. mac frp使用的是CrossC2 Kit中的吗?还是自编译的其它版本?CrossC2 Kit中包含的frp应该是不存在这个问题的?暂时在macOS Catalina & Big Sur (intel & M1)中测试通过。

  2. OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES 关于这个暂时无法绕过,目前像CrossC2Kit中关于prompt_spoof组件也因为这个问题被禁止运行,后续的解决方案是prompt_spoof这个组件会文件落地一次,然后调用本地文件执行,这样就相当于最终运行的payload在独立的进程中,而非处于一个fork的线程中。

  3. 关于4.x 加载malleable c2profile这个问题,示例中的也无法运行吗? https://github.com/gloxec/CrossC2/blob/master/protocol_demo/c2profile.c

gloxec commented 3 years ago

关于 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES 这个问题,目前不影响文件落地的解决方案,就是关于内存执行功能这块添加新标志位,对于特殊的程序禁止fork新进程再调用子线程去执行,而是直接在当前进程的子线程中运行。不过这样做的话,假设传入的程序不可靠产生了crash,则会导致整个crossc2的主进程退出,cs丢失会话。

mackleadmire commented 3 years ago

1 mac frp使用的是CrossC2 Kit中的,这个frp改过的代码能给出来参考下吗 2 c2profile.c 这个linux可以运行,mac上线没反应,而且还有个地方不匹配,改过后才可以执行命令, char payload = (char )calloc(*payload_len +1 ,sizeof(char));

mackleadmire commented 3 years ago

1 而是直接在当前进程的子线程中运行 (这个方式可以接受,可以留的时候多留一个,这个用来不落地加载,哪怕crash也还有个备用)感谢大佬的回复,期待更好的版本

gloxec commented 3 years ago

1 mac frp使用的是CrossC2 Kit中的,这个frp改过的代码能给出来参考下吗

抱歉,这个是其他人写的,我这里也没有对应的代码

mackleadmire commented 3 years ago

好的感谢