News Manipulierte Hosts: NAS-Systeme von QNAP mit unbekannter Malware infiziert

Frank

Chefredakteur
Teammitglied
Registriert
März 2001
Beiträge
9.153
Zahlreiche Nutzer von NAS-Systemen von QNAP haben sich in den letzten Wochen mit Problemen bei Softwareupdates auf ihren NAS zu Wort gemeldet. Diese ließen sich ebensowenig wie die Installation von Anti-Malware-Apps durchführen. Schuld ist eine Malware, die die Hosts-Datei editiert und mit rund 700 Einträgen umleitet.

Zur News: Manipulierte Hosts: NAS-Systeme von QNAP mit unbekannter Malware infiziert
 
Am besten NAS geordnet herunterfahren und abwarten was es neues zum Thema gibt.
Ist zwar nicht Optimal, aber nur so kann größerer Schaden verhindert werden.
 
  • Gefällt mir
Reaktionen: Mydgard, SteeL1942, FuzzyHead und 2 andere
Und wie infizieren sich die Systeme? Wir haben hier eins stehen :<.
 
  • Gefällt mir
Reaktionen: mkdr
Klingt für mich eher nach einem Bug in der Software...
Was hat die Malware davon alle host einträge auf 0.0.0.0 zu routen?
 
  • Gefällt mir
Reaktionen: just_f
@WeisheitsTroll Wenn ich das richtig verstanden habe, dann leitet es vor allem die Update-URLs für Virenscanner und das Gesamtsystem um. Damit eben keine Updates gefahren werden können, die dann die Malware erkennen können.
 
  • Gefällt mir
Reaktionen: nosound und Transistor 22
@kamanu: Korrekt

@neo243 : Man muss es ja nicht gleich ausschalten wie CPU-Bastler gemeint hat. Einfach den zugang aus dem Internet auf das NAS sperren. Sprich, Portforwarding auf dem Router/Firewall deaktivieren und gut ist.
 
  • Gefällt mir
Reaktionen: Mydgard, rambodieschen und kamanu
ty
 
Wer sein NAS ins www hängt, hat es nicht anders verdient. Mögen eure Dateien in der Kryptohölle landen! Trotzdem starkes Stück von QNAP :kotz:
 
  • Gefällt mir
Reaktionen: Mugen, Dimitri Kostrov, mkdr und 2 andere
Das wirft aber kein gutes Licht auf QNAP...
 
MXE schrieb:
Wer sein NAS ins www hängt, hat es nicht anders verdient. Mögen eure Dateien in der Kryptohölle landen! Trotzdem starkes Stück von QNAP :kotz:

Kannst ja gleich sagen, wer sein PC ins WWW hängt... solches Denken ist einfach falsch. Eine Sperre ist nie die Lösung.
 
  • Gefällt mir
Reaktionen: Captain Mittns, Conqi, LamaTux und 23 andere
Wenn man den verschiedenen Postings im QNAP-Forum glauben mag, dann gab es wohl eine verwundbare Version der Music-Station, die vor 4 Monaten seitens QNAP behoben wurde. Wer sein NAS damit offen ins Internet gestellt hat, konnte anscheinend gehackt werden ...
 
MXE schrieb:
Wer sein NAS ins www hängt, hat es nicht anders verdient. Mögen eure Dateien in der Kryptohölle landen! Trotzdem starkes Stück von QNAP :kotz:

Meine Rede, ein NAS gehört nicht in das Internet. Es gibt auch hier im Forum immer wieder anfragen von Usern, die Null Plan haben, aber die Kiste soll unbedingt aus dem Internet erreichbar sein.

k0ntr schrieb:
Kannst ja gleich sagen, wer sein PC ins WWW hängt... solches Denken ist einfach falsch. Eine Sperre ist nie die Lösung.

Es ist ein riesiger Unterschied, ob ich einen Service anbiete, oder ob ich mit dem PC eine Internetverbindung habe.

Fard Dwalling schrieb:
Naja wenn die Kiste nicht aus dem Internet erreichbar ist, kann sie selbst ja trotzdem ins Internet.

Das ist aber kein Problem. Wenn das NAS eine Internetverbindung hat, um z.B. Updates zu laden, dann wird die Kiste nie gekapert. Das passiert nur wenn man einen Dienst vom NAS aus dem Internet aus erreichbar macht.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Shririnovski, Asghan, Aurumvorax und 2 andere
Naja wenn die Kiste nicht aus dem Internet erreichbar ist, kann sie selbst ja trotzdem ins Internet. Und darum geht es ja. Es reicht ja wenn die QNAP zu einem botnetz zusammen gefasst werden können.

Und das man einzelnen Geräten den Zugriff auf das Internet unterbindet, ist zumindest bei den meisten Usern eben auch nicht üblich.
 
  • Gefällt mir
Reaktionen: Mydgard, Digitalzombie und kamanu
Details wären schon interessant. Wie findet man heraus, ob man betroffen ist? Wenn in /etc/hosts mit einem Editor beäugt 700 Domain-Umleitungen auf 0.0.0.0 sind?
Einfach ein *.sh aus einem Forum auf Gutdünken auszuführen ist auch nicht so meins.
 
Wilhelm14 schrieb:
[...]
Einfach ein *.sh aus einem Forum auf Gutdünken auszuführen ist auch nicht so meins.

Wie wär es dann mit dem Support von QNAP?
Die können dir sicherlich auch verraten, wie du herausfindest, ob du betroffen bist.
 
WeisheitsTroll schrieb:
Klingt für mich eher nach einem Bug in der Software...
Was hat die Malware davon alle host einträge auf 0.0.0.0 zu routen?

Die Malware leitet die Adressen der Virensoftwarehersteller ins Nirwana, man ist dann von allgemeinen Updates und frischen Signaturen abgeschnitten, das ist kein kleiner Bug sondern ein schlimmer Eingriff ins System.
 
Wen’s interessiert, hier der Inhalt des Entfernungs-Shellskripts:

Bash:
#!/bin/sh

######################
# Derek Be Gone v1.1 #
# Author: qnapd      #
######################

set_mutable() {
    if [ ! -e "$1" ]; then
        return 0
    fi
    if [ -e /etc/IS_64BITS ]; then
        # 64bit set mutable
        SET_M_64="$1"
        echo " [*] Setting mutable 64bit on $SET_M_64"
        python -c "import os,fcntl,sys,struct;fd = os.open('${SET_M_64}', os.O_RDONLY); rec = struct.pack('L', 0); x = fcntl.ioctl(fd, 0x80086601, rec); flags = struct.unpack('L',x)[0]; was_immutable = flags & 0x00000010; flags = flags & ~0x00000010; f = struct.pack('i', flags); fcntl.ioctl(fd, 0x40086602, f); os.close(fd)"
    else
        # 32bit set mutable
        SET_M_32="$1"
        echo " [*] Setting mutable 32bit on $SET_M_32"
        python -c "import os,fcntl,sys,struct;fd = os.open('${SET_M_32}', os.O_RDONLY); rec = struct.pack('L', 0); x = fcntl.ioctl(fd, 0x80046601, rec); flags = struct.unpack('L',x)[0]; was_immutable = flags & 0x00000010; flags = flags & ~0x00000010; f = struct.pack('i', flags); fcntl.ioctl(fd, 0x40046602, f); os.close(fd)"
    fi
}

remove_bad_thing() {
    badpath="$1"
    if [ -e "$badpath" ]; then
        echo " [*] Removing $badpath"
        rm -rf "$badpath"
        if [ $? -eq 0 ]; then
            echo "  [+] Success!"
        else
            echo "  [-] Failed"
        fi
    fi
}

# clear fake qpkg
bdir=
test -f "${confdir}/smb.conf" && for i in homes Public Download Multimedia Web Recordings; do bdir=`getcfg "$i" path -f "${confdir}/smb.conf"` && test ! -z "$bdir" && bdir=`dirname "$bdir"` && test -d "$bdir" && testwriteable=$(mktemp "${bdir}/.tmp.XXXXXX") && rm "${testwriteable}" && break; bdir=''; done
test -z "${bdir}" || test ! -d "${bdir}" && { command -v readlink >/dev/null 2>&1 || ln -sf /bin/busybox /usr/bin/readlink; for i in Public Download Multimedia Web Recordings homes; do bdir=`readlink "/share/${i}" 2>/dev/null` && test ! -z "$bdir" && bdir=`dirname "$bdir"` && bdir=/share/${bdir##*/} && test -d "$bdir" && break; done;
test -z "${bdir}" || test ! -d "${bdir}"; } && { bdir=`getcfg SHARE_DEF defVolMP -f "${confdir}/def_share.info"`
test -z "${bdir}" || test ! -d "${bdir}"; } && { bdir=`mount | sed -n "s/.*\(\/share\/[^ /]\+\) .*/\1/gp" | head -n 1`
test -z "${bdir}" || test ! -d "${bdir}"; } && { for i in CACHEDEV3_DATA CACHEDEV2_DATA CACHEDEV1_DATA MD0_DATA; do test -d "/share/${i}" && bdir="/share/${i}" && break; done;
test -z "${bdir}" || test ! -d "${bdir}" && bdir=/mnt/HDA_ROOT; }

echo "[o] System path: ${bdir}"
echo "[o] Removing fake qpkg"
remove_bad_thing "${bdir}/.qpkg/.liveupdate/"
remove_bad_thing "${bdir}/.qpkg/.config/"
echo "---"

# clear dom
mdir=/tmp/config
__BOOT_DEV=
__model=`getcfg System "Internal Model"`
CONFIG_DEV_NODE=`getcfg "CONFIG STORAGE" DEVICE_NODE -f /etc/platform.conf`
CONFIG_DEV_PART=`getcfg "CONFIG STORAGE" FS_ACTIVE_PARTITION -f /etc/platform.conf`
CONFIG_DEV_FS=`getcfg "CONFIG STORAGE" FS_TYPE -f /etc/platform.conf`
__BOOT_CONF=`test -f /etc/default_config/BOOT.conf && cat /etc/default_config/BOOT.conf 2>/dev/null || cat "${confdir}/BOOT.conf"` || { test "$arch_o" = arm && __BOOT_CONF=TS-NASARM; }
command -v hal_app > /dev/null 2>&1 && { __BOOT_DEV=$(hal_app --get_boot_pd port_id=0); }
test "${__BOOT_CONF}" = TS-NASARM || test "$arch_o" = arm && { test -f /etc/IS_TAS && __BOOT_DEV="${__BOOT_DEV:-/dev/mtdblock}7" || __BOOT_DEV="${__BOOT_DEV:-/dev/mtdblock}5"; } || __BOOT_DEV="${__BOOT_DEV:-/dev/sdx}6"
test "x${CONFIG_DEV_NODE}" != "x" && { ubiattach -m "${CONFIG_DEV_PART}" -d 2; mount -t ubifs ubi2:config "${mdir}" > /dev/null 2>&1 || { test -f /etc/IS_TAS && mount -t ext4 /dev/mmcblk0p7 "${mdir}"; } } || mount ${__BOOT_DEV} -t ext2 ${mdir} || { test "${__model}" = "TS-201" && mount -t ext2 /dev/mtdblock4 ${mdir}; } || { ubiattach -m "${CONFIG_DEV_PART}" -d 2; mount -t ubifs ubi2:config "${mdir}"; mount -t ext4 /dev/mmcblk0p7 "${mdir}"; } || { test "${__model}" = "TS-269L" && mount -t ext2 /dev/sdc6 ${mdir}; } || { test "${__model}" = "TS-869" && mount -t ext2 /dev/sdi6 ${mdir}; } || { test "$arch_o" = arm || ${__BOOT_CONF} = "TS-NASARM" && { for i in 5 7 4 6 3 8; do mount -t ext2 "/dev/mtdblock${i}" ${mdir} && break; done; }; } || { test "$arch_o" = x86 && for n in /dev/sdc /dev/sdx /dev/sdi $__BOOT_DEV; do for i in 6 $CONFIG_DEV_PART; do mount -t ext2 ${n}${i} ${mdir} && break 2; done; done; } || { mount -t ext2 $(/sbin/hal_app --get_boot_pd port_id=0)6 ${mdir}; }

echo "[o] Cleaning DOM"
remove_bad_thing "$mdir/autorun.sh"
for i in $mdir/K0*.sh; do
    remove_bad_thing "$i"
done
umount "$mdir"
echo "---"

# reinstall MR
echo "[o] Remove old MR"
mrpath="${bdir}/.qpkg/MalwareRemover/"
set_mutable "$mrpath"
set_mutable "$mrpath/modules/10_derek_3.pyc"
set_mutable "$mrpath/modules/12_derek_3.pyc"
remove_bad_thing "$mrpath"
rmcfg MalwareRemover -f /etc/config/qpkg.conf
echo "---"

echo "[o] Install new MR"
mrpkg=MalwareRemover_3.4.0_20190121_173849.qpkg
wget -nv "https://download.qnap.com/Storage/tsd/utility/$mrpkg"
sh "$mrpkg" > /dev/null 2>&1
getcfg MalwareRemover Enable -f /etc/config/qpkg.conf > /dev/null
if [ $? -eq 0 ]; then
    echo " [+] Success!"
else
    echo " [-] Failed"
fi
rm -f "$mrpkg"
echo "---"
echo "Finished!"
rm -f "$0"
 
  • Gefällt mir
Reaktionen: kryzs, LukS, cm87 und 5 andere
Mich würde interessieren wie so eine Malware installiert werden kann auf dem NAS? Dazu müssten doch Admin Accounts gehackt worden sein? Oder nicht?
 
Zurück
Oben