add: [malwagon] Malwagon sandbox lookup and submit expansion modules - #899
add: [malwagon] Malwagon sandbox lookup and submit expansion modules#899projectboot wants to merge 4 commits into
Conversation
|
Thanks for actually running it - that was a real bug and you found it in one try. You were right about the symptom and it was worth chasing, because the routing Two changes: the anonymous tier now allows the Linux sandbox as well, and the Your submission is on the same page, re-run: the file now lists both runs, the One thing we are not claiming: the verdict did not change. Nothing matched in Happy to hold the PR until you are satisfied it behaves. |

Adds two expansion modules for Malwagon, an online
malware-analysis sandbox that detonates a file or a URL on instrumented Windows
and Linux virtual machines.
Disclosure: I work on Malwagon, so this is a vendor-submitted module.
Two modules rather than one, deliberately.
malwagonisexpansionandhover;malwagon_submitisexpansiononly. A hover module fires merelybecause an analyst is looking at an attribute. A hash lookup is free, instant
and sends only a digest, so it is safe there. A detonation costs minutes, spends
one of a small number of hourly submits, and ships the sample to a third party,
so it must never be triggerable by hovering, and
module-typeis per module.This follows the existing
assemblyline_query/assemblyline_submitpair._malwagon_api.pyholds the shared client and is underscore-prefixed so modulediscovery skips it, as
_assemblyline_api.pyis.Behaviour worth knowing:
if the digest is known, spending no submit quota.
always_submitforces adetonation.
malware-sampleattribute arrives base64-encoded and zipped with thepassword
infected; it is unwrapped before submission, and no error pathever echoes decoded sample bytes.
max_tlpgate (defaulttlp:amber) refuses to submit an attribute markedmore restrictively.
misp:threat-level), not raw vendorstrings, and remote tags are rendered as text rather than written into the
instance's taxonomies.
Authorizationheader only, every request carriesan explicit timeout, redirects are not followed, and a 429 honours
Retry-Afteronce rather than looping.Free tier: an API key is issued without payment details, so the lookup
module is usable by anyone reading this list.
Verification.
flake8 --extend-exclude=misp_modules/lib/,tests/,website/is clean,
poetry buildsucceeds,make generate_docsrenders both modules,and
tests/test_malwagon.pypasses 32 tests with every HTTP call mocked and noAPI key required. The modules were additionally run against the live service:
the lookup returns a
fileobject and asandbox-reportobject carrying theverdict, the score and a permalink.
No new dependency:
requestsandpymispare already resolved.