Core concepts

Executables

When it comes to executables, the most important tool is hackingBuddyGPT (which is also called wintermute.py within the repository). This python program identifies all implemented use-cases/agents and their respective configuration options, and allows end-users to configure and start an use-case/agent.

The following hackingBuddyGPT output lists all currently available use-cases:

(venv) andy@cargocult:~/Projects/hackingBuddyGPT$ hackingBuddyGPT --help
usage: hackingBuddyGPT [-h]
                       {LinuxPrivesc,LinuxPrivescWithHintFile,LinuxPrivescWithLSE,WindowsPrivesc,MinimalLinuxPrivesc,MinimalLinuxTemplatedPrivesc,MinimalWebTesting,WebTestingWithExplanation,SimpleWebAPITesting,SimpleWebAPIDocumentation}
                       ...

positional arguments:
  {LinuxPrivesc,LinuxPrivescWithHintFile,LinuxPrivescWithLSE,WindowsPrivesc,MinimalLinuxPrivesc,MinimalLinuxTemplatedPrivesc,MinimalWebTesting,WebTestingWithExplanation,SimpleWebAPITesting,SimpleWebAPIDocumentation}
    LinuxPrivesc        Linux Privilege Escalation
    LinuxPrivescWithHintFile
                        Linux Privilege Escalation using hints from a hint file initial guidance
    LinuxPrivescWithLSE
                        Linux Privilege Escalation using lse.sh for initial guidance
    WindowsPrivesc      Windows Privilege Escalation
    MinimalLinuxPrivesc
                        Showcase Minimal Linux Priv-Escalation
    MinimalLinuxTemplatedPrivesc
                        Showcase Minimal Linux Priv-Escalation
    MinimalWebTesting   Minimal implementation of a web testing use case
    WebTestingWithExplanation
                        Minimal implementation of a web testing use case while allowing the llm to 'talk'
    SimpleWebAPITesting
                        Minimal implementation of a web API testing use case
    SimpleWebAPIDocumentation
                        Minimal implementation of a web API testing use case

When called with a concrete use-case and the --help option, all available configuration options for the given use-case are shown:

(venv) andy@cargocult:~/Projects/hackingBuddyGPT$ hackingBuddyGPT LinuxPrivesc --help
usage: hackingBuddyGPT LinuxPrivesc [-h] [--log_db.connection_string LOG_DB.CONNECTION_STRING] [--tag TAG]
                                    [--max_turns MAX_TURNS] [--llm.api_key LLM.API_KEY] [--llm.model LLM.MODEL]
                                    [--llm.context_size LLM.CONTEXT_SIZE] [--llm.api_url LLM.API_URL]
                                    [--llm.api_timeout LLM.API_TIMEOUT] [--llm.api_backoff LLM.API_BACKOFF]
                                    [--llm.api_retries LLM.API_RETRIES] [--system SYSTEM]
                                    [--enable_explanation ENABLE_EXPLANATION]
                                    [--enable_update_state ENABLE_UPDATE_STATE]
                                    [--disable_history DISABLE_HISTORY] [--hint HINT] [--conn.host CONN.HOST]
                                    [--conn.hostname CONN.HOSTNAME] [--conn.username CONN.USERNAME]
                                    [--conn.password CONN.PASSWORD] [--conn.port CONN.PORT]

options:
  -h, --help            show this help message and exit
  --log_db.connection_string LOG_DB.CONNECTION_STRING
                        sqlite3 database connection string for logs
  --tag TAG
  --max_turns MAX_TURNS
  --llm.api_key LLM.API_KEY
                        OpenAI API Key
  --llm.model LLM.MODEL
                        OpenAI model name
  --llm.context_size LLM.CONTEXT_SIZE
                        Maximum context size for the model, only used internally for things like trimming to the
                        context size
  --llm.api_url LLM.API_URL
                        URL of the OpenAI API
  --llm.api_timeout LLM.API_TIMEOUT
                        Timeout for the API request
  --llm.api_backoff LLM.API_BACKOFF
                        Backoff time in seconds when running into rate-limits
  --llm.api_retries LLM.API_RETRIES
                        Number of retries when running into rate-limits
  --system SYSTEM
  --enable_explanation ENABLE_EXPLANATION
  --enable_update_state ENABLE_UPDATE_STATE
  --disable_history DISABLE_HISTORY
  --hint HINT
  --conn.host CONN.HOST
  --conn.hostname CONN.HOSTNAME
  --conn.username CONN.USERNAME
  --conn.password CONN.PASSWORD
  --conn.port CONN.PORT

Finally you can execute a use-case by calling it through hackingBuddyGPT. Configuration for the use-case will be initially be populated from an .env file. If any command line arguments are given, these over-write configuration options read form configuration files.

We provide scripts for later analysis of use-cases/agent runs, e.g., stats.py and viewer.py, but we will extend and move them into a dedicated analysis-scripts directory soon.

Previous
Capabilities: Adding Actions