Instead of one large monolithic application, Faction is designed loosely around a micro services architecture. Functionality is split into separate services that communicate through message queues. This approach provides several advantages, most important of which is allowing users to quickly be able to learn how the system operates.
Faction consists of four main services:
Console: The Console service hosts a javascript application that interacts with the Faction API. It can be accessed with any modern browser and serves as the operational entry point to the system.
API: The API is the how users, agents, and anything else interacts with Faction.
Core: The Core service handles all user and agent messaging, including processing user commands and handling encrypting/decrypting agent messages.
Build Servers: Build Servers handle building payloads and modules. They are language specific, allowing Faction to be easily extended to support new languages. Currently Faction supports .NET payloads and modules.
In addition to these services, Faction also relies on a RabbitMQ instance for communication between services and a PostgreSQL instance for data storage. Further details about Faction services can be found on the Faction Components page.
The Faction install script has only been tested on Ubuntu 18.04.2. It might work on other versions of Ubuntu, but we're not promising anything.
The easiest way to install Faction is with:
curl https://raw.githubusercontent.com/FactionC2/Faction/master/install.sh | sudo bash
If you're (understandably) concerned about piping a shell script from the internet into bash, you can instead clone the install repository and run it locally
git clone https://github.com/FactionC2/Faction/cd Factionsudo bash ./install.sh
Once the install has finished, you'll be able to use the faction
command to interact with your Faction install. The first thing you're going to want to do is run sudo faction setup
. This command provides plenty of configuration options (including some that are totally unsupported), some of the relevant options are covered here. More details about the Faction CLI can be found here.
Parameter | Description |
--external-address | This is the address that you'll use to access Faction. By default, the external IP for the computer will be used over SSL ([https://[external](https://[external) ip address]) |
--admin-password | By default, a random password will be generated for the Admin account. |
If you need to the admin password after install, you can find it in /opt/faction/global/config.json
Note that the config file only stores the password that was set during installation. It does not get updated if you change the admin password
Once your install has finished, you can log into Faction at the address displayed at the end of installation using the username and password provided.
Further details on using Faction can be found in the Using Faction section.