Faction是面向安全专业人员的C2框架,它提供了一种扩展代理并与代理进行交互的简便方法。它着重于通过有据可查的REST和Socket.IO API为C2通信提供一个简单,稳定和可访问的平台。
0x01Faction安装
项目主页:
https://github.com/FactionC2/Faction
https://www.factionc2.com/
Faction安装脚本仅在Ubuntu 18.04.2上进行了测试。它可能在其他版本的Ubuntu上运行,但是我们并不能保证所有的系统都可以。
安装Faction的最简单方法是:
curl https://raw.githubusercontent.com/FactionC2/Faction/master/install.sh | sudo bash
如果您(可以理解)担心将Internet上的Shell脚本传送到bash中,则可以克隆安装存储库并在本地运行
git clone https://github.com/FactionC2/Faction/
cd Faction
sudo bash ./install.sh
下面我们使用第一种方法,一条命令安装。
安装完成后会提示使用sudo faction setup启动Faction,在这一步我们需要选择要使用的IP地址对应的网卡。
随后我们就不用管了,是一堆下载,拷贝文件和拉去docker镜像的过程。看到如下信息证明安装完成。
安装完成回显会显示账号密码和url,同时初始的账号密码在/opt/faction/global/config.json文件中也可以找到。
我们可以直接访问HTTPS://IP地址进行访问。
0x02Faction配置及使用
使用初始密码登录之后,在设置页面可把密码进行更改,方便个人使用。
填入初始密码及需要修改的密码。
配置流程及各个选项卡配置
Transports:传输设置方便Payload直接连接到Faction
默认情况下Faction自带一种传输方式,下面我们自己来新建一个。
先到导航栏上选择Transports选项卡并点击New Transport新建。
输入名称并点击Create Transport
Create Transport之后会弹出API名称及秘钥,这个我们最好自己保存下来,因为一旦关闭就消失了。
然后在docker找到对应的容器将生成的API名称及秘钥填入,然后运行即可。
配置方法详见
https://github.com/FactionC2/TransportHTTP
Payloads:在目标上运行Payload以建立Agent。它们控制Agent的初始设置,例如信标间隔,抖动,传输和到期日期。Payload使用相同的密码来分级Agent,作为分级过程的一部分,Agent会获得自己的通信密码。
在“Payload”选项卡上,您可以选择创建新的Payload。需要以下选项:
Agent Type:这是Payload将产生的Agent类型
Agent Format:这是将在其中构建Payload的格式
Agent Transport:这是Payload将用于启动Agent和信标的初始传输
Beacon Interval:两次信标间隔的秒数。这必须是整数。
Jitter:将随机性引入信标间隔。这是通过将信标间隔乘以抖动值来确定的,计算结果并将信标间隔随机调整到该结果。例如,信标间隔为10秒,抖动为0.2,信标将在8到12秒之间随机出现。接受0.0到1.0之间的值。
导航选择Payload选项卡,并点击New Payload新建一个Payload
Agent Type选择Marauder,Description随意输入一个描述,Agent Transport选择默认的传输选项,Version为.net的版本大家根据自己目标的环境来选择,其他的默认。然后点击Create Payload生成Payload。
在Payload页面即可显示Payload的详细信息,点击Download下面的按钮即可下载Payload。
把下载好的Payload复制到靶机里,然后双击打开。
在Faction的Agent选项卡里即可看到靶机已上线。
点击标签任意地方就会进入与主机交互的shell界面里来。
这里面有四个核心命令大家牢记之后就能运用自如了。
show modules #显示可用的模块
show commands #显示可用的命令
Help #显示帮助
help [command name] #显示各个命令的帮助
我们先使用show modules显示可用的模块,然后再使用show commands命令查找对应的模块可用的命令。
加载我们要使用的命令对应的模块load stdlib,然后使用stdlib模块能使用的命令。
执行系统命令可使用shell XXXX即可执行系统命令
Tasks:Task页面会显示所有的靶机上所使用过的任务记录。
点击导航上Task选项卡即可进入页面。
点击单个任务即可显示任务的详情和输出
Files:您可以在“Files”选项卡上上传文件,这也是您从Agent上载文件的地方。
您可以使用命令中引用文件。API会自动使用给定文件的base64编码的字节数组替换此字符串。类似的命令将利用此行为将文件写入磁盘。PS:这个模块貌似出BUG了作者正在修复!!!
0X03后言
这个项目远远没有Covenant,而且搭建的时候很多坑,稍不留神就踩着了,大家测试一下二次开发还可以,如果运用实际攻防当中还是推荐CS和Covenant!!!望大家点个“在看”和转发!!!
点“在看”你懂得