## Description Build a payload plugin that allows Infection Monkey to simulate a cryptominer. The user should be able to configure: - CPU utilization (percentage) (single-core only) - Memory utilization (percentage) - Time limit (None for unlimited) - Send `getblocktemplate` requests (boolean) ### Notes - The cryptominer should generate sha256 hashes in order to consume CPU usage - The `getblocktemplate` requests can be sent to the Island (the payload doesn't actually need a response). - See #3389 for more details ## Tasks - [x] Create plugin skeleton (0d) - @shreyamalviya - [x] options (pydantic) - [x] determine what options cryptominer should have - [x] create a pydantic model for cryptominer options - [x] Create plugin manifest - [x] Create config schema - [x] Research and define events that the payload will generate (0d) @mssalvatore - [x] Modify the payload interface to accept the server (Island) (0d) - @shreyamalviya - [x] Modify the puppet to construct payloads with the server - [x] Build a basic cryptominer with stubbed components (0d) - @shreyamalviya - [x] plugin.py constructs and executes the cryptominer - [x] implement and call stubbed memory utilization component - [x] implement and call stubbed sha256 CPU utilization component - [x] implement and call stubbed `getblocktemplate` request generator - [x] implement the logic that respects the time limit option - [x] implement the memory utilization component (0d) @mssalvatore - [x] implement the cpu utilization component (0d) - See comments below - @shreyamalviya - [x] implement the `getblocktemplate` component (0d) - @shreyamalviya @mssalvatore @ilija-lazoroski - [x] Add a jenkins job to build the plugin (0d) @mssalvatore - [x] Update the island build jobs on Jenkins to copy the artifacts from the ransomware plugin build job - [x] Final testing (0d) - [x] Linux @mssalvatore - [x] Windows @cakekoa - [x] Zeek @shreyamalviya - [x] Add documentation (0d) @mssalvatore - [x] update changelog @mssalvatore - [x] Remove Vulture entries @mssalvatore - [x] Manual test procedure - [x] Document how to monitor bitcoin mining traffic @shreyamalviya - [x] Document CPU utilization test @cakekoa - [x] Document memory utilization test @cakekoa
Description
Build a payload plugin that allows Infection Monkey to simulate a cryptominer. The user should be able to configure:
getblocktemplaterequests (boolean)Notes
getblocktemplaterequests can be sent to the Island (the payload doesn't actually need a response).Tasks
getblocktemplaterequest generatorgetblocktemplatecomponent (0d) - @shreyamalviya @mssalvatore @ilija-lazoroski