Vault7: CIA Hacking Tools Revealed
Navigation: » Latest version
JQJGUNSHY: how to build tools
List of projects
These projects can be build independently. The chronos binary and flameskimmer binary 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)
- requires Legba
- edit Makefile $(LEGBA) variable to point to Legba
- edit bowtie.c: give ip address of the lp to collect bowtie's data, search and replace 10.3.2.97 with real ip address
- make bowtie -> generates a binary file and call Legba on it to produce chronos-bowtie-legba.bin
- Flameskimmer (priv)
- Helios plugin will use this priv if user agent matches SM-N910.
- requires bowtie_config.xml and bowtie.jar
- requires Legba
- edit Makefile $(LEGBA) variable to point to Legba
- edit main.c: give ip address of the lp to collect bowtie's data, search and replace 10.3.2.97 with real ip address
- make bowtie -> generates a binary file and call Legba on it to produce flameskimmer-bowtie-legba.bin
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 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.
- 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.