minaki scan

Threat wiki / Sysrv

Sysrv

Also known as Sysrv-hello, Sysrv-New.

Sysrv, also seen as Sysrv-hello, is a botnet written in the Go language that takes over Linux and Windows servers to mine the cryptocurrency Monero, using a built-in copy of the XMRig miner.

Tested on a planted test copy, not a real sample. Minaki Scan's removal was tested on an isolated test machine where a harmless stand-in played the malware. That proves the removal works on the signs listed here; it was not run against the real malware.

What it is
Crypto miner, Botnet
Goes after
Internet-facing Linux and Windows servers running weakly protected or unpatched web, database and application services
Verdict
Can be removed with care
Testing
Tested on a planted test copy, not a real sample
Minaki Scan
Finds it and removes it after you type yes
Caught by our sensors
Not yet
Last reviewed
15 Oct 2026

What it is

Sysrv, also seen as Sysrv-hello, is a botnet written in the Go language that takes over Linux and Windows servers to mine the cryptocurrency Monero, using a built-in copy of the XMRig miner. Researchers report it changes the server's scheduled tasks and adds an SSH key so the attackers keep access, but they didn't publish the exact lines. One 2021 version also left a Windows program, BrowserUpdate.exe, and a Python script, /tmp/a.py, that edits website files. A report from December 2024 shows it still in use, apparently by several rival groups.

How it gets in

Through weak passwords on web, database and application services, and through internet-facing software that hasn't been updated.

Close the door: Use strong, unique passwords (ideally key-based or single sign-on) on every database, application admin and CI service, keep internet-facing software patched, and do not expose management or database ports to the internet; restrict them with a firewall or VPN.

How to tell if you have it

Signs published for this threat. One sign alone proves little: names get reused, and newer versions change them. Look for several together.

KindSign
File location/tmp/network01
File location/tmp/BrowserUpdate.exe
File location/tmp/a.py
File nameldr.sh
File namesysrv
File namenetwork01
File namexmr64
File namexmr32
File namekthreaddi
File nameBrowserUpdate.exe
Process namenetwork01
Process namekthreaddi
Process namesysrv
Network port52013
Network port52014
Network port52015
Network port52016
Network port52017
Network port52018
Network port52020
Network port52021

These commands only look. They change nothing.

Look for the known file locations

sudo ls -la /tmp/BrowserUpdate.exe /tmp/a.py /tmp/network01 2>/dev/null

Search for the known file names (slow on big disks)

sudo find / -xdev \( -name 'ldr.sh' -o -name 'sysrv' -o -name 'network01' -o -name 'xmr64' -o -name 'xmr32' -o -name 'kthreaddi' \) 2>/dev/null

Look for the known process names, and where each one runs from

for p in $(pgrep -f 'network01|kthreaddi|sysrv'); do echo "$p $(sudo readlink /proc/$p/exe)"; done

List running programs that live in a temporary folder (real software almost never does)

sudo ls -l /proc/[0-9]*/exe 2>/dev/null | grep -E '/(tmp|var/tmp|dev/shm)/'

Check for programs using the known ports

sudo ss -tunap | grep -E ':(52013|52014|52015|52016|52017|52018|52020|52021)\b'

Fingerprint a suspect file and compare it with the list below

sudo sha256sum /path/to/suspect-file

Known file fingerprints (SHA-256). A match identifies that exact file; newer builds differ.

1a63f7a38c7f5a5cc770246c958aea70ea95bcafac1bad92d2d524f4fe24c1ca 4fd37fa6ccf027e11409e3ca3b8109b2830cb3d7842303e67e6d0c087ae1b419 848ed7e90c767e7ab2b1a93f9b8ca9c41eb02c3c76bf8b7dfd806fe26c1f431e 296d3d3ed5feeda7f6d99adc9da2566cb6c460194066acccac941a7b09bedfc3 1c91ed47c3c0baa74fa15c9b02330701dd02fc1e9b44963e1fe9a650ef7b78ef 7ff5f2b3145d1e54a84f5bcc13ae6838baac2d6c20951d19608166833753d96f 544d20fc286d0803dee86a9c34b4c348333e320a4e33fd2730079701cb6e108f c55706ddbfdcecf77f225e711463f50d7da127818ee93a6be10836e4c1662393 95f9faf8a4ef5db4a3e60d577287e18fbbe32336a3b98c256da601645b674c74 89bc80a0bca059535741063ea882c1602cb369af7deea0e45e982b33faa10a68

How sure these signs are: Most of these signs come from reports in 2020 and 2021; a 2024 report shows the botnet still running, but newer builds use random names, so not finding these names doesn't clear a server. Names such as network01, ldr.sh, sysrv and xmr64 are generic, and kthreaddi is made to look like the real kernel task kthreadd: a real kernel task has no program file behind it, this one does. A copy holds a local network port open in the range 52013 to 52021 as a marker, but a listener on a high port proves little until you check which program owns it. The fingerprints identify packed samples from those early reports only. No exact scheduled task line or SSH key was published, so those have to be checked by hand.

How to remove it by hand

Work through these in order. Don't skip the first two.

  1. Cut the server off from the internet, but keep a way to log in, such as your hosting provider's web console. Save evidence first: the process list with where each process runs from, listening ports (sudo ss -ltnp), the crontabs of root and every user, every ~/.ssh/authorized_keys file, shell history, and copies of suspect files with their SHA-256 fingerprints.
  2. Find its processes by where they run from, not by name. For each suspect process number, run sudo readlink /proc/NUMBER/exe and fingerprint that file with sudo sha256sum. For a listener on a port from 52013 to 52021, sudo ss -ltnp shows which process owns it. Stop confirmed processes with sudo kill NUMBER, and use kill -9 only if that doesn't work.
  3. Move confirmed files, such as /tmp/network01, /tmp/a.py, /tmp/BrowserUpdate.exe and any file that matches a fingerprint above, into a folder only root can read. Delete the originals once you've finished collecting evidence.
  4. Go through every crontab and every authorized_keys file line by line. Because the exact lines were never published, ask the owner of each account about anything unfamiliar, and remove only lines confirmed not to be theirs. Never delete a whole crontab or key file.
  5. Check your website folders and application files for changes you didn't make and for stray copies of BrowserUpdate.exe. Put back changed files from a backup or your source code.
  6. Treat any account or service the attacker could reach as compromised. If they had full control (root), or you can't confirm what changed, rebuild from a fresh install and restore only data you've checked.
  7. From a clean computer, change the database and service passwords, SSH keys and application secrets that were on the server, and cancel the old ones.
  8. Before you reconnect: use strong, unique passwords (or key or single sign-on logins) on every service, install all updates, and keep database and management ports off the internet with a firewall or VPN. Run the checks above again, restart, and check once more.

These steps are provided as-is, without warranty. Run them at your own risk, and back up first. If you're unsure, rebuild from a known-good install.

What Minaki Scan does about it

Minaki Scan finds this threat by the fingerprints of its files and processes and removes it, but only after you type yes. It backs up what it changes and logs every change on your server.

Minaki Scan checks your server for this and every other threat in this wiki, explains each finding in plain English, and never changes anything without your OK. $1 per server a month. Downloads open soon.

Sources

This page is written by MinakiLabs in our own words. The facts above come from this published research; credit and thanks to its authors.