Vault7: CIA Hacking Tools Revealed
Navigation: » Latest version
Queue
Purpose
The Queue program, queue, provides command line access to the queue implementation on the LP. The user interface (UIUser Interface) and the transport use this program.
Usage
Command Line
queue -q <que_id> command [parameters]
Returns
Return Codes
These are incomplete, actual numbers to be refined and may./will change during development
0 - done, no error
1 - unspecified
2 - misuse
3 - queue does not exist
4 - no data
5 - file does not exist
Stdout
filepath of next task file to implant
Notes
- Only one positional parameter (aka command) per execution
- Operating system numeric return code code
- next parameter returns full path to next task file via stdout
- There are no user locks for the queue. A hard lock is used during execution, which should take only milliseconds
- Need or use of sender and dest parameters is not clear. Possible use is in addressing when sending queue status via transport interface
Examples
queue -q boss0042 ingest --file=changes.tar --sender=c32 --dest=qboss42 // processes command in changes.tar file (usually queue changes from C2), then deletes file
queue -q boss0042 next // get the next task file
queue -q boss0042 succeed -f /d/gibson/boss0042/u1001 // file specified successfully sent
Breakdown
command = next | ingest | fail | succeed | exist | clone | create
next - Copy the next task file off queue and print full filepath to stdout, return "no data" error code if queue empty
fail - Delete file specified (with -f), from last next command, and log failure
succeed - Delete file specified
(with -f),
from last next command), remove from queue, and send queue update to C2
ingest - process tar file specified (with -f) then delete file. Usually queue updates from C2
exist - return "queue does not exist" or "no error" depending on existence of queue
clone - copy specified queue structure/files to create a new queue specified by -to parameter
create - create new queue with default
structure/files
named by -q parameter
parameters = [parameter] [parameters]
parameter =
-q --queue <que_id>
-f --file <task_file | tar_file> // required for succeed, fail, delete, or ingest
--to <que_id> // required for clone
--sender <sender>
--dest <destination>
que_id - alphanumeric, at least 5 alphanumeric (first 4 are parent id)
task_file - file name of file to be deleted (succeed) from queue
tar_file - file name of tar file to be processed / ingested
sender - alphanumeric string
destination - alphanumeric string