theHacker's Blog
– It's just a glitch in the Matrix –

Synogear: Diagnose-Tools auf der Synology-NAS nutzen

Zu Diagnosezwecken kann es manchmal nötig sein, bestimmte Befehle auf der Synology auszuführen.

Diese muss man allerdings erst installieren. Dieser Artikel zeigt dir, wie du die Tools installierst und wieder entfernst.

Motivation

Neulich hab ich auf meiner Synology-NAS ungewöhnliche Festplattenaktivität beobachtet und wollte prüfen, wer alles gerade Aktivität verzeichnet. Im Ressourcen-Monitor unter "Verbundene Benutzer" kann ich in diesem Fall nichts erkennen, da die NAS nur von intern benutzt wird, d. h. der Übeltäter ist zwar in der Liste, ich weiß aber nicht wer.

lsof to the rescue! Normalerweise ist die Sache einfach: Mit lsof kann man sich alle geöffneten Dateien anzeigen lassen. Ein Blick in diese Liste hätte meine Frage beantwortet.

Allerdings funktioniert das auf einer Synology-NAS nicht so einfach. Während jedes Linux-System mit lsof out-of-the-box kommt, bekommt man auf der Synology-NAS nur eine Fehlermeldung, dass es den Befehl nicht gibt:

admin@iris:~$ lsof
-sh: lsof: command not found

Diagnose-Paket installieren

Glücklicherweise kann man lsof (und viele weitere Befehle) einfach nachinstallieren bzw. aktivieren. Zuerst loggt man sich auf seiner NAS per SSH ein.

Wichtig: Die Diagnose-Tools können nur als root benutzt werden. Weder der Default-admin (den Synology inzwischen empfiehlt, zu deaktivieren), noch ein anderer Administrator-Account funktionieren. D. h. nach dem Login muss man mit sudo -i auf eine Root-Shell wechseln.

Öffnet man die Root-Konsole zum ersten Mal, sieht man zusätzlich den obigen Hinweis à la "Mit großer Macht kommt große Verantwortung".

thehacker@iris:~$ sudo -i

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password: 
root@iris:~# 

Danach kann man mit dem Befehl synogear install die Diagnose-Tools installieren:

root@iris:~# synogear install
download DiagnosisTool 3.0.1-3008 successfully

Die NAS installiert darauf hin ein Paket, was man fortan auch im Menü der Web-Oberfläche als "Diagnosis Tool" sieht. Im Gegensatz zu regulären Paketen ist hier weder der Paket-Name, noch seine UI übersetzt. Man kann das Tool zum Mitschneiden von Traffic benutzen. Für diesen Artikel ist das Paket selber aber nicht relevant.

Für uns interessant ist, dass nach der Installation des Pakets nun eine ganze Menge Befehle auf der Shell verfügbar sind. Welche Befehle, kann man sich mit synogear list einfach anzeigen lassen:

root@iris:~# synogear list
All tools:
addr2line	       eu-readelf    ld		      pkill		strings
addr2name	       eu-size	     ld.bfd	      pmap		strip
ar		       eu-stack      ldd	      ps		sysctl
arping		       eu-strings    log-analyzer.sh  pstree		sysstat
as		       eu-strip      lsof	      pwdx		tcpdump_wrapper
autojump	       eu-unstrip    ltrace	      ranlib		tcpspray
capsh		       file	     mpstat	      rarpd		tcpspray6
c++filt		       fio	     name2addr	      rdisc		tcptraceroute6
cifsiostat	       fix_idmap.sh  ncat	      rdisc6		telnet
clockdiff	       free	     ndisc6	      readelf		tload
dig		       gcore	     nethogs	      rltraceroute6	tmux
domain_test.sh	       gdb	     nm		      sa1		top
elfedit		       gdbserver     nmap	      sa2		tracepath
eu-addr2line	       getcap	     nping	      sadc		traceroute6
eu-ar		       getpcaps      nslookup	      sadf		tracert6
eu-elfcmp	       gprof	     objcopy	      sar		uptime
eu-elfcompress	       iftop	     objdump	      setcap		vmstat
eu-elflint	       iostat	     perf-check.py    sid2ugid.sh	w
eu-findtextrel	       iotop	     pgrep	      size		watch
eu-make-debug-archive  iperf	     pidof	      slabtop		zblacklist
eu-nm		       iperf3	     pidstat	      sockstat		zmap
eu-objdump	       kill	     ping	      speedtest-cli.py	ztee
eu-ranlib	       killall	     ping6	      strace

Von jetzt an funktioniert auch der lsof-Befehl:

root@iris:~# lsof | head -n 10
COMMAND     PID   TID                       USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
init          1                             root  cwd       DIR                9,0       4096          2 /
init          1                             root  rtd       DIR                9,0       4096          2 /
init          1                             root  txt       REG                9,0     313168       1143 /usr/sbin/init
init          1                             root  mem       REG                9,0      51736      17731 /usr/lib/libnss_files-2.20-2014.11.so
init          1                             root  mem       REG                9,0    1714384      17353 /usr/lib/libc-2.20-2014.11.so
init          1                             root  mem       REG                9,0      97800      20603 /usr/lib/libpthread-2.20-2014.11.so
init          1                             root  mem       REG                9,0      31688      16995 /usr/lib/librt-2.20-2014.11.so
init          1                             root  mem       REG                9,0      39760      17161 /usr/lib/libnih-dbus.so.1.0.0
init          1                             root  mem       REG                9,0     105896      20172 /usr/lib/libnih.so.1.0.0

Nachdem man fertig ist und die Shell mit exit verlassen will, fällt auf, dass man immer noch auf der Root-Shell ist. Man muss exit ein zweites Mal eingeben, um die Root-Shell zu verlassen und danach noch ein drittes Mal, um die Verbindung von der NAS zu trennen.

Das ist deshalb so, weil synogear install uns in eine separate Shell bringt, die die Diagnose-Befehle zur Verfügung hält. Sobald man diese verlässt, funktionieren die Befehle nicht mehr.

Wir können dies auch bestätigen, indem wir uns die Prozessliste als Baum ansehen. Im Auszug sehen wir:

 8659 ?        Ss     0:00 /usr/bin/sshd
 7624 ?        Ss     0:00  \_ sshd: thehacker [priv]
 7633 ?        S      0:00      \_ sshd: thehacker@pts/41
 7634 pts/41   Ss     0:00          \_ -sh
 7655 pts/41   S      0:00              \_ sudo -i
 7662 pts/41   S      0:00                  \_ -ash
 8613 pts/41   S      0:00                      \_ /bin/sh /usr/syno/bin/synogear install
 8637 pts/41   S      0:00                          \_ /bin/sh
10847 pts/41   R+     0:00                              \_ ps axf

Diagnose-Paket aktivieren

Braucht man die Diagnose-Tools ein weiteres Mal, so muss man erneut synogear install eingeben. Das Paket ("Diagnosis Tool") bleibt aber permanent auf der Web-Oberfläche sichtbar.

Mit synogear check kann man dies prüfen:

root@iris:~# lsof
-ash: lsof: command not found
root@iris:~# synogear check
Tools are installed but not loaded yet. You can run this command to load it:
   synogear install

root@iris:~# synogear install
root@iris:~# lsof | head -n 1
COMMAND     PID   TID                       USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME

Die Information "Tools are installed but not loaded yet." bedeutet also, dass das Paket grundsätzlich installiert ist, wir uns aber nicht auf der speziellen Shell befinden, die die Diagnose-Befehle anbietet.

Diagnose-Paket deinstallieren

Braucht man die Diagnose-Befehle gar nicht mehr, kann man sie mit synogear remove komplett entfernen. Dann verschwindet auch das "Diagnosis Tool"-Paket von der Web-Oberfläche.

Einer erneuten Installation mit synogear install steht aber nichts im Weg.

Kommentare zu diesem Artikel

Schreib einen Kommentar zum Artikel

CAPTCHA Das Internet ist leider voller Bots. 🙁 Bitte gib den obenstehenden Code ein.
Falls du den Code nicht lesen kannst oder dir unsicher bist, klick einfach hier, um einen neuen Code zu generieren.

Mit Abschicken des Formulars bestätigst du,
die Datenschutz-Infos gelesen zu haben.