Triage Thursday

API Client and Family Updates


The year of September is finally over, and it’s time for a new month and new Triage Thursday blog!

This week we release our new API library/client. Available in Python and Go it includes full libraries you can use in your own programs to interact with Triage, as well as a pre-made commandline client for manual use. Read on below for more information.

As usual we also have a bunch of family detection updates which have been deployed over the course of the week:

Remember you can always give feedback or report any issues through the Feedback button in any analysis report. You can also reach us directly through the website or on Twitter.

Not signed up yet? Head over to to register for a free account!

API Library and Client

The Triage API is a REST-like interface which provides a way to interact with Triage via the commandline or scripts. We will not be going in-depth with the API itself here - you can find full documentation here if you want to know more about that aspect.

Today we are publishing libraries for use with the API, to simplify the process of creating custom scripts. We have also created pre-made clients for manual use on the commandline. These are all implemented in both Python 3 and Go, and are cross-compatible with Windows and Linux.

Below we will take a quick look at these clients and some basic usage.


The full library is available on Github -

Clone the repository to a local directory. You will see directories for Python and Go inside it.


In the triage/go directory, simply run the make command to compile and install the client. The binary will be written to your configured Gobin path as triage. Any version of Go 1.13 or later will support the client, although it’s always advisable to use the latest version (currently 1.15).

$ cd go
$ make
go build -o "~/work/bin/triage"

$ triage --help
Usage of triage:

  authenticate [token] [flags]

    Stores credentials for Triage.

  submit [url/file] [flags]

    Submit a new sample file or URL.

  select-profile [sample]

    Interactively lets you select profiles for samples that have been submitted
    in interactive mode. If an archive file was submitted, you will also be
    promted to select the files to analyze from the archive.

  list [flags]

    Show the latest samples that have been submitted.

  file [sample] [task] [file] [flags]

    Download task related files.

  archive [sample] [flags]

    Download all task related files as an archive.

  delete [sample]

    Delete a sample.

  report [sample] [flags]

    Query reports for a (finished) analysis.

  create-profile [flags]

  delete-profile [flags]

  list-profiles [flags]

Python 3

While the Python library is located in the triage/python directory, one can easily install the library through pip. Note that it requires Python 3.

$ pip install hatching-triage
Successfully installed hatching-triage-0.1

$ triage --help
Usage: triage [OPTIONS] COMMAND [ARGS]...

  --help  Show this message and exit.


Basic Usage

Now that it is installed, you can start using the client just by the triage command.

First, you can always access help for any command by running triage [command] --help, which will list the available options. A full list of commands can be seen with just triage --help.

To get started you first need to register your API token with the client. This allows it to handle requests and access your account without you needing to supply the API key every request, or type it on the commandline regularly.

triage authenticate [API_KEY]

By default the client is configured to use the public Triage API endpoints. If you wish to use it with a private instance, you can also register that using the authenticate command:

triage authenticate [API_KEY] -u [API_URL]

The URL used here should be the root API without any endpoint paths. For example for the public server. Note that the client currently can only be logged in with one instance at a time, and cannot store multiple sets of credentials.

You can now access all the client’s functionality. Here is a brief description of each command’s purpose:

Exorcist 2.0 Ransomware

At the end of September it was reported that the Exorcist ransomware was distributing a new version in fake software cracks that were available online. We already had detection for the original Exorcist, and we have now updated this to cover the new 2.0 variant as well.

The family drops a note in the .hta format which directs victims towards a .onion site for payment instructions.



Bazar is a well known loader and backdoor which has been reported to have potential links to the Trickbot developers. It uses EmerDNS to communicate with C2 via the .bazar domains which gave the family its name. A detailed writeup of the family by CyberReason can be found here.

We recently observed that some Bazar samples were not being caught by our existing signatures, so we reviewed a number of samples and updated our detection. Triage’s coverage of the family is now much more robust, and we will continue to update as required by new variants.


Crypt32 Ransomware

Crypt32 is an unusual type of ransomware which is sometimes referred to as fan-extortion malware. It does not demand any financial payment in return for decrypting an infected system, but simply requires that the victim install the game Heroes of the Storm.

It drops a .txt ransomnote which has the instructions in both English and Korean. Thanks to @Amigo_A_ for the sample.


Dusk Ransomware

Dusk was observed at the end of September by @GrujaRS. It is a straightforward ransomware with very distinctive naming and ransomnote contents. We have added family classification for it, and will keep an eye on future versions.


Sekhmet Ransomware

Sekhmet was mainly active in early and mid 2020, but was brought to our attention recently by @Amigo_A_, who reported a potential new variant of the family calling itself Egregor.

Sekhmet is distributed as a DLL file intended to be launched using regsvr32.exe. It drops .txt ransomnotes and includes communication with a C2 server.


You may also like: