- Python 2.7
- VirtualBox
- Intel's PIN
- libmagic
- Mac: $ brew install libmagic --with-python
-
Clone this repo.
-
Configure the VirtualBox guests.
- For effective isolation they should be configured with a "Host Only" interface.
- For effective pcaps they should all be assigned to a separate "Host Only" interface. This is done with the VirtualBox main network preferences. Please refer to their documentation
-
Record the configuration in a conformant config file in
"conf/". The default is"conf/myfirstconfig.cfg".- Conformant config files follow Python's
ConfigParserapi: ConfigParser
- Conformant config files follow Python's
-
Ensure that any folders needed for execution are created. eg Logging or output directories. These should be configured with access for the guests to write.
- vo2 will by default attempt to write as the user
loggerusing public key authentication. - This depends on your tools and job configurations
- eg The default
pin.cfgjob file will expect/Volumes/Macintosh_HD_2/voodo_logfor thelogvariable and/Volumes/Macintosh_HD_2/voodo_logfor thejobdirvariable
- vo2 will by default attempt to write as the user
-
Create a set of keys for the user
loggerto authenticate with. These should be kept in theremote/keysfolder, and are included when copying this folder to the guest for installation.- Add the public key to your
authorized_keysfile in order for the agents to be able to log things to the host over the network.
- Add the public key to your
-
Install PIN, the default
pin.cfgwill expect the following:- Version: 2.11-49306
- Path:
c:\pin-2.11-49306-msvc10-ia32_intel65-windows\- Where the pin dll tool is in
source\tools\SimpleExamples\obj-ia32\v5.dll
- Where the pin dll tool is in
-
Copy the folder
remote/and its contents to the guest root folderc:\- If
c:\is not the root you should update the variables at the top ofvo2\guests\vbox.py
- If
-
Setup any folders that you will want to reference in your script
- This depends on your job tool specification
- The default pin.cfg job requires the following directories in addition to
remote\:c:\malware\Is the"guestworkingdir"where samples are pushed to.c:\malware\spoofs\Is the"spoofdir"where rundll32.exe and its spoofed alternatives are kept.
- Create a job config file if you're not using the default pin config, or alter an existing config if necessary.
- You can also create custom tools. They require an entry in your config file, and a
run(task)method.- Refer to the source for
work/task.pyAPI. Documentation forthcoming.
- Refer to the source for
- The following are strongly advised if you want this to work:
- The
host_toolfield in your config file is required to follow the Python dot format.- eg The default pin config file points to
tools/pin.pywhich istools.pin
- eg The default pin config file points to
- The
vmsvariable is a CSV list of the names of VirtualBox guests. Completely arbitrary. - The
typevariable is not yet implemented - The
namevariable will define directories and output labeling - The
jobdirdefines the directory where samples to be analyzed are. This program uses thevlib/scandir.pymodule to effectively iterate flat structures with enormous amounts of files without slowing down execution. Refer to the module for more information, license, etc.
- The
- The
logvariable defines wherevo2will output the logs!
- The guest agent(s) must be started first or the engine will not be able to communicate with them
- Save the running agents and the configured guest to a screenshot.
- The default setup and teardown actions will restore to the current (most recent in the change tree) screen shot.
Start the agent in a cmd prompt with:
python rpcserver.py [address port type] [debug]- If you don't specify address, port, and type then the server will default to all interfaces (0.0.0.0), port 4828, and the RPC server.
- If you specify debug then there will be some useful messages output. This isn't really useful in bulk analysis.
Start the engine with:
python vo2.py </path/to/job-config-file>- The job config file contains all the information about your job
- The VO2 config file contains all settings related to VO2 and your guests. To change it you may alter the variable
VCFGinvo2.py. Wait patiently.