CS下的linux马

    渗透测试 lz520520 4年前 (2020-10-09) 2134次浏览

    1 cs3.14 linux马

    https://gitee.com/mirrors_trending/CrossC2,发布了2.0版本插件

    更新log

    1.1 加载

    选择src里CrossC2.cna,CrossC2.cna需要修改脚本内容,如果客户端在windows上,则如下修改,注意正斜杠

    CS下的linux马

     

    然后有不同平台生成C2马的生成器

    CS下的linux马

     

    1.2 插件生成马步骤:

    先看下生成的界面,2.0版本的windows生成工具有bug,无法生成,所以只能手动生成马,这里暂时可以不看了。
    但简单说一下,.cobaltstrike.beacon_keys是cs server的监听端口的key,用于客户端发起请求生成cs马

    CS下的linux马

    手动的方式,你可以直接回车查看参考

    CS下的linux马

     

    提供一个可用命令

    生成后,可以直接上传目标运行。
    如果是通过UI界面生成的,会提供一条命令,一键上线,但其实风险还是蛮大的,和powershell一样,会下载其他命令,这种流量很容易被捕捉到,建议还是上传二进制后操作。
    因为windows有bug,无法正常生成,但可以跳过生成步骤,直接通过这个界面,快速生成web delivery,用于发送请求下载文件执行。
    他这边最后outputfilename路径有两个作用,一个是通过客户端发送请求生成cs马的输出路径,另一个是将该路径下的二进制文件通过web delivery发布,这两个步骤的独立的,也就是生成马失败也同样可以正常发布,只要指定路径下存在文件即可,仍然会挂在http://vps_ip:55413/{随机字符串}下,所以通过linux生成的马,放到本地指定目录下,用于上传到server http挂载。

     

    CS下的linux马

    执行build操作后,会提供一条命令,用于下载另一个脚本并执行

    下载的内容如下,其实可以简单看出,就是下载ELF文件,执行后停顿7秒然后删除文件,以此来实现内存马功能。

    如果是上传ELF文件,./xxxx 执行即可,他会自动以后台服务方式挂在init进程下运行。

     

    2. CS4.1的linux马

    上面的项目作者有说明仅支持3.14,并且通过测试4.1能上线,但无法进行任何操作,应该是通信协议做了调整导致的,但现在普遍使用4.1进行操作了,来回切换版本怪麻烦的,不过有另外一个github项目已支持4.1,经过测试,效果良好。
    https://github.com/darkr4y/geacon
    用于cs4.1的linux马,同时也适用于windows和mac

    这个项目实际上使用golang重新实现了cs的通信协议,目前支持上传下载,目录浏览以及命令执行,功能不多,但主要用途是做权限维持。
    并且我基于这个项目做了一些代码优化,比如linux一键后台init进程挂载,和一些数据传输的问题。

    因为是使用golang实现的通信细节,所以不存在shellcode特征,免杀效果应该会更好些,我觉得做权限维持应该会相对隐蔽些,后续可以实战测试。

    简单说下调整部分
    (1). linux修改为一键执行挂起到init进程下运行,主要防止作为当前进程的子进程,会在当前进程(如web进程)挂掉后,一同被杀掉。
    (2). 修改上线时,ComputerName显示不全,以及程序arch显示均为x86问题,这个算是一点小bug吧。

    使用步骤:

    2.1 编译好作者提供的java代码,用于转换cs的beacon_key为PEM格式。

    CS下的linux马

    2.2 然后找到cmd/config/config.go文件
    (1). 将RSA公钥位置替换成上面的公钥,私钥在这里没有用,只是之前作者做测试的。
    (2). 另外需要替换C2的值,这个即你设置好的Listener
    (3). 如果是https的,将GetUrl和PostUrl里的前缀替换成sslHTTP。
    (4). 接着编译就好了,go build -ldflags="-s -w",编译出来的文件加upx差不多2兆

    PS: 其实在事先配置好的,基于不同listener,只需要修改C2的值,然后一键编译就好了,操作也不算复杂。

    CS下的linux马

    2.3 测试通过webshell上传并执行该程序,无不良反应,并且提供简单的文件管理功能,测试上传几兆的大文件正常。

    CS下的linux马

     

    CS下的linux马

    3. 结语

    上面两个算是目前针对cs的linux马,比较好的方案了,但我比较偏向于geacon,他支持4.1,并且使用golang重新实现,不同于原有网上针对shellcode的各种加载器,免杀效果会更好些,也适用于windows,并且我之前做了golang的代码混淆工具,即使当前样本被杀了,也可以实时免杀。等什么时候CrossC2支持4.1了,可以考虑,因为他支持的功能确实更多。

     

    4. 后续

    后续主要考虑对geacon项目做改造,因为作者其实留了一个csprofile.go的文件,用于profile文件解析,来支持更多的server设置,比如CDN

    PS: 该功能目前开发完毕,思路是,为防止profile文件泄露,通过解析profile文件,将设置转换生成新的go代码文件,然后参与整体项目编译即可。


    Security , 版权所有丨如未注明 , 均为原创丨
    转载请注明原文链接:CS下的linux马
    喜欢 (5)