Update agent response handling to deserialize multiple responses independently #493
+172
−77
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current version of Medusa has a bug in the ps command when running on Linux that returns PIDs as strings instead of ints. This causes its response to not deserialize correctly in the Mythic server code and all responses would be thrown away, even if some of them were good. This is bad because agents will typically resend responses until acknowledged and this one bad response will prevent any future responses from being handled.
The logic was updated to parse and handle responses independently so that: they can all be acknowledge back to the agent even if an error occurs with some of the responses; successful responses are handled correctly; the status of any command is updated to error if the response cannot be parsed so the operator gets that feedback.
Fixes #492