You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
wintermute.py: error: the following arguments are required: {LinuxPrivesc,WindowsPrivesc,ExPrivEscLinux,ExPrivEscLinuxTemplated,ExPrivEscLinuxHintFile,ExPrivEscLinuxLSE,MinimalWebTesting,WebTestingWithExplanation,SimpleWebAPITesting,SimpleWebAPIDocumentation}
--log.log_server_address='localhost:4444' address:port of the log server to be used (default from builtin)
202
+
--log.tag='' Tag for your current run (default from builtin)
203
+
--log='local_logger' choice of logging backend (default from builtin)
204
+
--log_db.connection_string='wintermute.sqlite3' sqlite3 database connection string for logs (default from builtin)
205
+
--max_turns='30' (default from .env file, alternatives: 10 from builtin)
206
+
--llm.api_key=<secret> OpenAI API Key (default from .env file)
207
+
--llm.model OpenAI model name
208
+
--llm.context_size='100000' Maximum context size for the model, only used internally for things like trimming to the context size (default from .env file)
209
+
--llm.api_url='https://api.openai.com' URL of the OpenAI API (default from builtin)
210
+
--llm.api_path='/v1/chat/completions' Path to the OpenAI API (default from builtin)
211
+
--llm.api_timeout=240 Timeout for the API request (default from builtin)
212
+
--llm.api_backoff=60 Backoff timein seconds when running into rate-limits (default from builtin)
213
+
--llm.api_retries=3 Number of retries when running into rate-limits (default from builtin)
214
+
--system='linux' (default from builtin)
215
+
--enable_explanation=False (default from builtin)
216
+
--enable_update_state=False (default from builtin)
217
+
--disable_history=False (default from builtin)
218
+
--hint='' (default from builtin)
219
+
--conn.host
220
+
--conn.hostname
221
+
--conn.username
222
+
--conn.password
223
+
--conn.keyfilename
224
+
--conn.port='2222' (default from .env file, alternatives: 22 from builtin)
184
225
```
185
226
186
-
## Provide a Target Machine over SSH
227
+
### Provide a Target Machine over SSH
187
228
188
229
The next important part is having a machine that we can run our agent against. In our case, the target machine will be situated at `192.168.122.151`.
189
230
@@ -193,6 +234,23 @@ We are using vulnerable Linux systems running in Virtual Machines for this. Neve
193
234
>
194
235
> We are using virtual machines from our [Linux Privilege-Escalation Benchmark](https://github.com/ipa-lab/benchmark-privesc-linux) project. Feel free to use them for your own research!
195
236
237
+
## Using the web based viewer and replayer
238
+
239
+
If you want to have a better representation of the agent's output, you can use the web-based viewer. You can start it using `wintermute Viewer`, which will run the server on `http://127.0.0.1:4444` for the default `wintermute.sqlite3` database. You can change these options using the `--log_server_address` and `--log_db.connection_string` parameters.
240
+
241
+
Navigating to the log server address will show you an overview of all runs and clicking on a run will show you the details of that run. The viewer updates live using a websocket connection, and if you enable `Follow new runs` it will automatically switch to the new run when one is started.
242
+
243
+
Keep in mind that there is no additional protection for this webserver, other than how it can be reached (per default binding to `127.0.0.1` means it can only be reached from your local machine). If you make it accessible to the internet, everybody will be able to see all of your runs and also be able to inject arbitrary data into the database.
244
+
245
+
Therefore **DO NOT** make it accessible to the internet if you're not super sure about what you're doing!
246
+
247
+
There is also the experimental replay functionality, which can replay a run live from a capture file, including timing information. This is great for showcases and presentations, because it looks like everything is happening live and for real, but you know exactly what the results will be.
248
+
249
+
To use this, the run needs to be captured by a Viewer server by setting `--save_playback_dir` to a directory where the viewer can write the capture files.
250
+
251
+
With the Viewer server still running, you can then start `wintermute Replayer --replay_file <path_to_capture_file>` to replay the captured run (this will create a new run in the database).
252
+
You can configure it to `--pause_on_message` and `--pause_on_tool_calls`, which will interrupt the replay at the respective points until enter is pressed in the shell where you run the Replayer in. You can also configure the `--playback_speed` to control the speed of the replay.
0 commit comments