The backend database changed, and now many of the details are kept in a new 'options' field. This options field contents needs to be parsed for human readability. At a later date.
The REST API won’t start due to a bug:
./empire --rest --username "emp" --password "emp"
[*] Loading modules from: /mnt/hgfs/cjones/Empire/lib/modules/
Starting Empire RESTful API on port: 1337
RESTful API token: 2bjmeuwa6pr6yy4x0n88rauyyl1nve7cekdgkefh Traceback
(most recent call last): File "/usr/lib/python2.7/logging/init.py",
line 853, in emit msg = self.format(record) File
"/usr/lib/python2.7/logging/init.py", line 726, in format return
fmt.format(record) File "/usr/lib/python2.7/logging/init.py", line 465,
in format record.message = record.getMessage() File
"/usr/lib/python2.7/logging/init.py", line 329, in getMessage msg = msg
% self.args TypeError: %d format: a number is required, not str Logged
from file _internal.py, line 87
After casting the port from a string to an int, the REST service works.
POST /api/agents/<string:agent_name>/shell now tasks an agent to execute a shell command
POST /api/agents/<string:agent_name>/rename now renames an agent
GET/POST /api/agents/<string:agent_name>/clear now clears an agent task buffer
GET/POST /api/agents/<string:agent_name>/kill now kills an agent
DELETE /api/agents/<string:agent_name>/results now clears agent result buffer
The api username defaults to 'empireadmin' and the password is randomly generated and stored in empire.db
The username/password can be modified with the ./empire --username X --password Y flags
Added new ./empire options: --rest to run just the RESTful API, --headless to run the RESTful API and a full Empire instance
Added /empire/api/admin/shutdown to API to shut the server down
Added proper shutdown functionality
Added hooks for CTRL+C to shut everything down gracefully
Cleaned up some SQL calls
Moved tasking/results into database fields for agents, instead of being kept in memory on the client
Added --headless option to ./empire