Vault7: CIA Hacking Tools Revealed
Navigation: » Latest version
JQJGUNSHY: how to build tools
List of projects
These projects can be build independently. The chronos-bowtie and flameskimmer-bowtie executables must be copied to a Linux box in order to run Legba on them to generate chronos-bowtie-legba.bin and flameskimmer-bowtie-legba.bin
- Helios (remote)
- make plugin -> generates in MCPlugin's directory a helios.zip
- it will call make helios -> generates the output.html
- packages the output of "make helios" into MCPlugin's directory along with plugin.py file and zips it up
- make plugin -> generates in MCPlugin's directory a helios.zip
- Legba (elf loader)
- currently, it doesn't work on MACApple Operating System OSOperating System -> plan to be built it on MACApple Operating System OSOperating System X
- use a legba that has already been built on a Linux box.
- Chronos (priv)
- Helios plugin will use this priv if the user agent does not contain SM-N910 (in this case it is the Sony Xperia T2 and TX).
- requires bowtie_config.xml and bowtie.jar (place these in top-level directory of Chronos project)
- edit bowtie.c: give ip address of the LPListening Post to collect bowtie's data, search and replace 10.3.2.97 with real ip address
- make bowtie -> generates an executable file, chronos-bowtie
- Need to copy chronos-bowtie to a Linux machine to run Legba on it to generate chronos-bowtie-legba.bin
- copy chronos-bowtie-legba.bin to MissionControl's "tools" directory
- Flameskimmer (priv)
- Helios plugin will use this priv if user agent matches SM-N910.
- requires bowtie_config.xml and bowtie.jar (place these in top-level directory of Flameskimmer project)
- edit main.c: give ip address of the LPListening Post to collect bowtie's data, search and replace 10.3.2.97 with real ip address
- make bowtie -> generates an executable file, flameskimmer-bowtie
- Need to copy flameskimmer-bowtie to a Linux machine to run Legba on it to generate flameskimmer-bowtie-legba.bin
- copy flameskimmer-bowtie-legba.bin to MissionControl's "tools" directory
Building the final Mission Control Server
- requires flameskimmer-bowtie-legba.bin and chronos-bowtie-legba.bin and place them in the tools directory
-
configs/helios-bowtie.plist (Mission Control configuration plist format) will need 2 keys inside the client config dictionary
- <key>HeliosFlameskimmerPayload</key>
- <string>flameskimmer-bowtie-legba.bin</string>
- <key>HeliosChronosPayload</key>
- <string>chronos-bowtie-legba.bin</string>
- <key>HeliosFlameskimmerPayload</key>
- requires helios.zip from Helios project's "make plugin" (listed above) in the "plugins" directory
-
how to build the Mission Control server
- /mc_creator server helios-bowtie configs/helios-bowtie.plist plugins/helios.zip plugins/common.zip -t tools
- common.zip: RRCommon plugin
- helios.zip: output of "make plugin" in Helios project
Timeline during exploitation
- Setup the LPListening Post to be serving the bt.php script.
- Make sure you have the directory /srv/bt (or whatever directory specified in bt.php) in the LP.
- Rebuild Flameskimmer and Chronos with the ip address of the LP.
- Edit Flameskimmer's main.c (see Flameskimmer section above)
- Edit Chronos's bowtie.c (see Chronos section above)
- "make bowtie" in Flameskimmer and Chronos projects to generate chronos-bowtie and flameskimmer-bowtie executables.
- Use Legba on a Linux box to make chronos-bowtie-legba.bin and flameskimmer-bowtie-legba.bin
- Make sure the generated flameskimmer-bowtie-legba.bin and chronos-bowtie-legba.bin are in Mission Control's tools directory.
- Make Mission Control plugin (see "Building the final Mission Control Server")
- Once Mission Control Server is running, target will be redirected to Mission Control Server.
- Helios plugin runs and does user agent fingerprinting (to extract Chrome and OSOperating System version).
- If user agent matches SM-N910, it will use Flameskimmer payload (flameskimmer-bowtie-legba.bin)
- Else, it will use Chronos payload (chronos-bowtie-legba.bin)
- Payload gets stamped into Helios's output.html file which is then served to the target.
- Helios browser exploit runs.
- Payload executes inside the browser process.
- Privesc runs, gains root, switches to init context, injects SELinux policy
- Payload drops bowtie.jar and bowtie_config.xml into /dev/.r.
- Payload executes bowtie.jar.
- Bowtie.jar runs.
- Bowtie.jar sends files specified in bowtie_config.xml into the specified LP.