Minaki Scan

Threat wiki / Mirai

Mirai

Tested by us on a real sample

Minaki Scan's removal was run against a real copy of this threat, caught by our own sensors, on a sealed test machine with no network. Nothing came back, including after a restart test. The hand steps below do the same things in the same order.

What it isIoT DDoS botnet client (Linux ELF, memory-resident)
Goes afterInternet-connected IoT devices such as home routers, network cameras and digital video recorders, and Linux systems running similar firmware
Our verdictCan be removed with care
Last reviewed2026-10-15

What it is

Mirai is a family of botnet programs. Each copy takes over a device or Linux machine and waits for orders, mostly to flood a website or network with traffic until it falls over (a DDoS attack). Its source code was published in 2016, so many different groups run their own versions. The version our own sensor caught in October 2026 hides a copy of itself in /var/tmp on a Linux server and sets up three separate ways to start again after a restart.

How it gets in

Mostly through default or weak passwords, and through software on internet-facing devices and servers that hasn't been updated.

Close the door: Change all default passwords to strong unique ones, patch device firmware as updates appear, disable UPnP on routers unless needed, and keep IoT devices on a separate network from systems critical to daily operations.

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 name/var/tmp/.sys_recovery.sh
File name/etc/cron.d/netupd
Process nameconfigd
Process namehttpd
Scheduled task line@reboot root /bin/sh /var/tmp/.sys_recovery.sh &
Startup entry/etc/systemd/system/netd.service
Startup entry/etc/init.d/sys_daemon

These commands only look. They change nothing.

Look for the known file locations:

sudo ls -la /etc/cron.d/netupd /etc/init.d/sys_daemon /etc/systemd/system/netd.service /var/tmp/.sys_recovery.sh 2>/dev/null

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

for p in $(pgrep -f 'configd|httpd'); 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 every scheduled task for the known lines:

sudo grep -rnF -e '@reboot root /bin/sh /var/tmp/.sys_recovery.sh &' /etc/crontab /etc/cron.d /var/spool/cron 2>/dev/null

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.

888f4a852642ce70197f77e213456ea2b3cfca4a592b94647827ca45adf2a5b8 b43a8a56c10ba17ddd6fa9a8ce10ab264c6495b82a38620e9d54d66ec8677b0c b45142a2d59d16991a38ea0a112078a6ce42c9e2ee28a74fb2ce7e1edf15dce3 366ddbaa36791cdb99cf7104b0914a258f0c373a94f6cf869f946c7799d5e2c6 413e977ae7d359e2ea7fe32db73fa007ee97ee1e9e3c3f0b4163b100b3ec87c2 2d0c8ab6c71743af8667c7318a6d8e16c144ace8df59a681a0a7d48affc05599 4cb8c90d1e1b2d725c2c1366700f11584f5697c9ef50d79e00f7dd2008e989a0 461f59a84ccb4805c4bbd37093df6e8791cdf1151b2746c46678dfe9f89ac79d aed078d3e65b5ff4dd4067ae30da5f3a96c87ec23ec5be44fc85b543c179b777 0d404a27c2f511ea7f4adb8aa150f787b2b1ff36c1b67923d6d1c90179033915 eca42235a41dbd60615d91d564c91933b9903af2ef3f8356ec4cfff2880a2f19 c15382bc81e1bff4cf03d769275b7c4d2d586a21e81ad4138464d808e3bb464c 3674a103804cac96027fe1cf62aaab4948c1d547d1c885542177a263103b4260

How sure these signs are: Versions differ, so a file name or fingerprint from one version tells you nothing about another. The files and startup entries listed here come from the one sample we caught: one sensor, one day. The process names configd and httpd come from a different version, and normal software uses the same names, so neither proves anything on its own. A restart does not remove the version we caught, because it has three ways to start itself again.

How to remove it by hand

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

  1. Save evidence before you change anything: run the checks above and keep their output, and copy each suspect file somewhere safe along with its SHA-256 fingerprint.
  2. Cut the server off from the internet, but keep a way to log in, such as your hosting provider's web console. That stops it being used in attacks while you work.
  3. Remove all three ways it restarts itself, first. Delete /etc/cron.d/netupd if it only holds the @reboot line shown above. Run sudo systemctl disable --now netd.service, delete /etc/systemd/system/netd.service, then run sudo systemctl daemon-reload. Delete /etc/init.d/sys_daemon (on Debian or Ubuntu, also run sudo update-rc.d -f sys_daemon remove). If you remove only one or two, it comes back.
  4. Stop the restart script before the bot, or it starts the bot again: find processes running /var/tmp/.sys_recovery.sh and stop them with sudo kill -9 followed by the process number. Then stop every process whose program lives in /var/tmp; the process check above shows where each one runs from.
  5. Delete /var/tmp/.sys_recovery.sh and the bot's own copy in /var/tmp. The copy is a hidden file with a random name, so find it by its fingerprint, not its name.
  6. Run the checks above again. Then restart the server and check once more. Nothing should come back.
  7. Before you reconnect: change every password on the server, switch SSH to key logins, and install all updates.
  8. If you find anything you can't account for, or the attacker had full control (root), rebuild from a fresh install instead of trusting the cleanup.
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 every day for this and the other threats in this wiki. $1 per server a month. Downloads open soon.

Caught by our sensors

Our honeypot sensor in US West (San Jose) caught a sample on 2026-10-14 13:16 UTC. We label it Mirai-lineage: it shares markers with this family, so treat the name as our best reading, not a certainty. Its fingerprint (SHA-256) is 3674a103804cac96027fe1cf62aaab4948c1d547d1c885542177a263103b4260.

On a sealed test machine it planted: /var/tmp/.MGdneGj7, /var/tmp/.sys_recovery.sh, /etc/cron.d/netupd, /etc/systemd/system/netd.service, /etc/init.d/sys_daemon. Our cure removed every one, and a restart test (setting off each way it had set itself up to start again) brought nothing back.

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.