Kategorien
CL-35B2 Linux

howto – Shellshock auf der NAS

Leider ist auch die Bash-Shell der NAS CL-35B2 vom shellshock betroffen.

Hier meine Anleitung, wie die Bash auf der NAS durch eine neue, selbst compilierte ersetzt werden kann

1.) Bash auf Shelshock Verwundbarkeit testen

curl -k https://shellshocker.net/shellshock_test.sh 2> /dev/null| bash 2> /dev/null

Sollte bei einem der Tests die Meldung “VULNERABLE” erscheinen, sollte die “Bash” mit dieser Anleitung aktualisiert werden.
Sollten alle Tests “not vulnerable” ausgeben ist diese Anleitung nicht interessant für Sie.
Ein Mirror des Scriptes ist unter der URL http://dl.loteks.de/shellshock_test.sh zu finden.

1.) Build Umgebung erstellen

Leider enthält die NAS CL-35B2 keine installierte Build-Umgebung. Von den 195MB Speicherplatz sind nur noch ca 40 frei, der Speicherplatz auf der NAS ist einfach zu klein um GCC und make zu installieren.

Ich habe einen USB stick angeschlossen, der sich als /dev/sdc meldet. (herauszufinden via dmesg)
via cfdisk habe ich auf diesem USB Stick zwei Partitionen angelegt, zuerst eine ein Gigabyte Swap Partition und im Anschluss den Rest als Linux Partition.

Im Anschluss den swap Speicher Partitionieren und aktivieren:

mkswap /dev/sdc1
swapon /dev/sdc1

Das Dateisystem auf /dev/sdc2 erstellen und Das Laufwerk Mounten:

mkfs.ext2 /dev/sdc2
mount /dev/sdc2 /mnt

Anschließend die RPM Pakete der Verwendeten Linux Distribution herunterladen. Bei der Fantec CL-35B2 ist es leider noch Fedora ARM 12, welches ein wenig betagt ist. Ich habe unter http://dl.loteks.de/fedora12arm_rpms.tar.gz (größe 119 MB) ein Paket mit den, für das Compilieren der Bash notwendigen rpm-Paketen abgelegt.

mkdir -pv /mnt/{chroot,rpm}
cd /mnt/
wget http://dl.loteks.de/fedora12arm_rpms.tar.gz
tar xzf fedora12arm_rpms.tar.gz
rpm --install --nodeps --root=/mnt/chroot/ rpm/*.rpm

Nach dieser, sehr sehr lange dauernden Installation (dies dauert auf der NAS mehrere Stunden!) befindet sich die chroot umgebung im Order /mnt/chroot

2.) Bash Quellen bereitstellen

Jetzt brauchen wir die Bash Quellen und Patches in der chroot-Ubgebung:

mkdir -pv /mnt/chroot/usr/src/bash
cd /mnt/chroot/usr/src/bash
wget ftp://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
tar xzf bash-4.3.tar.gz
wget ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/ -m -nd
chroot /mnt/chroot/
cd /usr/src/bash/bash-4.3 
for file in ../bash43-0[0-9][0-9] ; do patch -p0 < $file; done

Ab diesem Punkt liegen die Quellen der Bash gepatched im Verzeichnis /mnt/chroot/usr/src/bash-4.3. Das herunter geladene sstrip.c brauchen wir am ende um die Datei “bash” auf ein der NAS angepasste Größe zu kürzen.
Jetzt können je nach Wunsch beliebige Compiler Flags gesetzt werden und die Configurationsoptionen gesetzt werden.

CHOST="armv6j-hardfloat-linux-gnueabi"
CFLAGS="-Os -march=armv6j -mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=hard -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
./configure --with-installed-readline
make
strip bash
exit

mit dem “strip bash” werden alle, für die Ausführung der bash, nicht benötigten teile der elf-Datei entfernt. Die Datei wird von fast 1,5 MB auf unter 840KB reduziert.

3. bash Installieren

cp /mnt/chroot/usr/src/bash/bash-4.3/bash /bin/bash1
/bin/bash1
cp /bin/bash /bin/bash_
cp /bin/bash1 /bin/bash
exit
rm /bin/bash1 /bin/bash_
curl -k https://shellshocker.net/shellshock_test.sh 2> /dev/null| bash 2> /dev/null

CVE-2014-6271 (original shellshock): not vulnerable
CVE-2014-6278 (Florian’s patch): not vulnerable
CVE-2014-7169 (taviso bug): not vulnerable
CVE-2014-//// (exploit 3 on https://shellshocker.net/ ): not vulnerable
CVE-2014-7186 (redir_stack bug): not vulnerable
CVE-2014-7187 (nested loops off by one): not vulnerable

Die Anleitung wurde vom mir zuletzt am 05.10.2014 getestet.
Sollten Irrtümer, Fehler oder Verbesserungen zum Artikel auffallen bitte ich dies mir mit einem Kommentar zu melden.

Besser wäre ein rpm-Paket, ich hoffe die Anleitung demnächst bezüglich rpm-Paket bau erweitern zu können.


Das aus diesem Tutorial entstehende Bash-Binary und RPM-Datei aus dem RPM-Tutorial zur Installation

Kategorien
Forensik Linux security

Festplatten Seriennummern unter Linux herausfinden

Um im PC-oder NAS Gehäuse immer gleich die richtige Festplatte zum Tauschen zu finden, muss im ID bzw. die Seriennummer der Festplatte herausgefunden werden.

Da leider nicht jedes NAS auf der Shell auch alle Befehle erlaubt Beziehungsweise alle Befehle anbietet, hier eine Liste mit 4 Methoden die Seriennummer von Festplatten unter Linux auszulesen.:

udebadm

udevadm info --query=property --name=/dev/sda | grep "^ID_SERIAL_SHORT=" | sed "s/ID_SERIAL_SHORT=//g"

Unter “–name=/dev/” wird das Laufwerk angegeben, die Ausgabe ist nur die Seriennummer.

hdparm

hdparm -i /dev/sda | sed -ne '/SerialNo/{s/.*SerialNo=\s*\(.*\)/\1/ ; p}'

Die Festplatte wurd als “-i /dev/sda” angegeben, alternativ können hier mehrere Festplatten mit “-i /dev/sd[ab]” angegeben werde. Die Ausgabe ist ausschließlich die Seriennummer.

smartctl

smartctl -i /dev/sda|sed -ne '/Serial\ Number\:/{s/.*Serial\ Number\:\s*\(.*\)/\1/ ; p}'

Auch bei smartctl wird mit “-i /dev/sda” die fragliche Festplatte angegeben. Die Ausgabe ist ausschließlich die Seriennummer.

 grep, awk, sed

ls -l /dev/disk/by-id/ | grep scsi- | grep -v part | awk '{print $NF " " $(NF-2)}' | sed 's|../../||g' | sed 's/scsi-...._//g'

gibt alle Festplatten mit den zugehörigen Seriennummern und Bezeichnung aus.

Kategorien
Allgemein Linux

MAC-Adresse ändern (Linux, Apple, Windows)

Die MAC-Adresse ist für jede Netzwerkschnitstelle einzigartig. Die MAC-Adresse zu ändern geht in den verschiedenen Systemen wie folgt:

Linux

Unter Linux kann die MAC-Adresse unkompliziert über das Terminal geändert werden.:

ip link set dev [Interface] addr [MAC-Adresse]

Mac OS

Wie unter Linux kann auch unter dem Apple MAC OS die Adresse über das Terminal geändert werden.
Der Aufruf sieht dort wie folgt aus:

ifconfig [Interface] ether [MAC-Adresse]

oder alternativ

ifconfig [Interface] lladdr [MAC-Adresse]

Windows 7

Unter Windows 7 muss die Mac Adresse über einen Registry Eintrag geändert werden.
Hier gilt es “regedit.exe” zu starten und im Anschluß der Eintrag

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

Unter diese “key” erscheint eine Nummern-Sequenz (000, 001, 002…), von welchem festgestellt werden muss welcher die Netzwerkkarte repräsentiert, in dem Feld  “DriverDesc” steht der Name der Netzwerkkarte. (bei mit 007)

In diesem Key (bei mir 007) suche nach dem Schlüssel “NetworkAddress” und ändere diesen. Änderungen sind über doppelklick oder alternativ Rechtsklick + Ändern.
Gib die gewünschte MAC-Adresse als zusmmenhängende Zeichenfolge, ohne Leerzeichen, Punkte oder Minuszeichen ein.

Wenn der Schlüssel bei der Netzwerkkarte nicht vorhanden ist, Rechtsklick auf einen Freien Bereich und “Neu” – “Zeichenfolge” wählen. Gib als Name “NetworkAddress” und als Wert und als Daten die gewünschte MAC Adresse ein.

Anschleßend muss noch das Netzwerkinterface deaktiviert und in folge wieder aktiviert werden.

Kategorien
Allgemein

Cronjobs unter Android einrichten

Anforderungen

  • Das Android Gerät muß für diese Anleitung gerooted sein
  • Busybox muss auf dem Android Gerät installiert sein
  • das Android Gerät muss als Init-System init.d verwenden

Creating cronjob

Erstelle im Verzeichnis /data/crontab/ eine Datei mit dem Dateinamen “root“. Diese Datei wird die Cronjobs für den Unix-Benutzer Root enthalten. Schreibe alle deine Cronjobs in diese Datei, mache die Datei anschließend ausführbar.

mkdir -pv /data/crontab
touch /data/crontab/root
chmod +x /data/crontab/root

Führe nun die folgenden Befehle aus um zum Benutzer root zu wechseln und den Cron-Daemon die Cronjobs prüfen zu lassen:

su -
crond -b -c /data/cronjob

Jetzt kannst Du prüfen ob der Cron-Daemon erfolgreich gestartet wurde:

top|grep crond

Um den Cron-Daemon crond bereits beim Starten des Android Gerät mit starten zu lassen lege eine weitere Datei im Verzeichnis /system/etc/init.d mit dem folgenden und dem folgenden Inhalt an.

mkdir -pv /system/etc/init.d
cat > /system/etc/init.d/crond << "EOF"
crond -b -c /data/crond
EOF

cronjob Beispiel

Der folgende Beispiel-Cronjob startet das Gerät jede Stunde zur dreiundfünfzigsten Minute neu. (Ein wirklich minimales Beispiel, nichts was Du wirklich möchtest):

53 * * * * reboot

Eine Anleitung wie die Zeitangaben für den Cron-Daemon aufgebaut sein müssen findest Du zum unter anderem in der Wikipedia, einen kompfortabelen Editor auf der Seite crontab-generator.org.

Fehlerbehebung

Wenn es beim Einrichten einen Feler wegen eines  “read only file system” gibt, kann das Dateisystem über den folgenden Befehl beschreibbar neu gemounted werden:

mount -o rw,remount /dev/stl12 /system

Nach dem Anlegen der Cronjobs kannst Du über den folgenden Befehl das Dateisystem wieder nur lesbar Mounten:

mount -o ro,remount /dev/stl12 /system
Kategorien
Allgemein

Zufällige MAC-Adresse erzeugen

Manchmal kann es hilfreich sein, eine zufällige MAC Adresse zu generieren, beispielsweise für einen Cronjob der eine Netzwerkkarte abschaltet, eine neue MAC-Adresse vergibt und die Verbindung dann eine neue Verbindung herstellt.

Mit folgender Linux-Shell Zeile lässt sich eine solche MAC Adresse generieren.

echo -n 00-01-02; dd bs=1 count=3 if=/dev/random 2>/dev/null|hexdump -v -e '/1 "-%02X"'

Im ersten Teil werden die ersten 3 Byte der Mac-Adresse ausgegeben, diese geben den Hersteller der Netzwerkkarte an. Ich gebe in meinem Beispiel an, das es sich um eine 3COM Netzwerkkarte handelt.
Im zweiten Teil werden 3 Byte Zufallsdaten auf /dev/random entnommen und anschließend werden im Dritten Teil, mittels Hexdump, diese 3 Byte in deren Hexadezimalentsprechung umgewandelt.

Folgend eine kleine Liste mit MAC Adressen verbreiteter Hersteller:

00-01-02-xx-xx-xx 3COM
00-07-E9-xx-xx-xx Acer
00-0A-95-xx-xx-xx Apple
00-15-F2-xx-xx-xx Asus
00-24-fe-xx-xx-xx AVM
00-60-2F-xx-xx-xx Cisco
00-50-8B-xx-xx-xx Compaq
00-11-0A-xx-xx-xx HP
AC-E2-15-xx-xx-xx Huawei
00-07-E9-xx-xx-xx Intel
00-1F-3C-xx-xx-xx Intel
00-1D-92-xx-xx-xx Micro-Star
DC-3E-F8-xx-xx-xx Nokia
B8-27-EB-xx-xx-xx RaspberryPi
90-18-7C-xx-xx-xx Samsung
6C-23-B9-xx-xx-xx Sony
Kategorien
Linux

Partitionierung Klonen

Zum nachträglichen Manuellen einrichten eines RAID Mittels mdadm benötige ich auf beiden Festplatten exakt die gleiche Partitionierung.

Mit hilfe von sfdisk kann schnell und unkompliziert die Partitionierung eines Datenträgers gesichert und zurückgeschrieben werden.
Zuert die Partitionstabelle des Datenträgers in eine Datei sichern.:

sfdisk -d /dev/sda > sda.part

und im Anschlus die Partitionierung auf die nächste Festplatte schreiben.:

sfdisk /dev/sdb < sda.part

ACHTUNG! Alle Daten auf der Festplatte /dev/sdb gehen hierbei verloren!!

Kategorien
Linux

Ubuntu wie Windows 7 aussehen lassen

Leider wirkt Ubuntu für viele WindowsXP Nutzer im Aussehen abstoßend, sie haben sich nun einmal an ein bestimmtes Aussehen gewöhnt.

Mit der Bedienung gibt es keine Schwierigkeiten, die alten Windows Benutzer haben Ihren gewohnten Firefox Browser, Ihr Thunderbird für die EMails und auch den VLC für Ihre Videos, nur leider wirkt die Umgebung für diese Nutzer etwas ungewohnt.

Um diese Benutzer doch von der Benutzung von Ubuntu zu überzeugen kann es helfen die Icons und die Fensterrahmen einfach der gewohnten Darstellung anzupassen.

sudo add-apt-repository ppa:noobslab/themes
sudo add-apt-repository ppa:noobslab/icons
sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install win-themes win-icons ubuntu-tweak

Im Anschluss Ubuntu-Tweak starten und unter “Optimierungen” => “Thema” das gewünschte Windows Thema für die Icons und Fensterrahmen wählen.

 

Kategorien
Linux

qcow2 Disk Image unter Linux mounten

Um ein qcow2-Disk Image unter Linux zu mounten muss qemu installiert sein.

zuerst müssen das Kernel Module nbd geladen werden:

modprobe nbd max_part=8

Das qcow2 Image muss im Anschluss an ein Gerät gebunden werden:

qemu-nbd --connect=/dev/nbd0 db1_old.qcow2

Im anschluss kann das gerät gemountet werden (im Beispiel die erste Partition):

 mount /dev/nbd0p1 /mnt/

Um im Anschluss das qcow2-Image wieder freizugeben, das Laufwerk unmounten und das Image vom Gerät lösen:

umount /mnt/
qemu-nbd --disconnect /dev/nbd0
Kategorien
Linux Video

.ts und .mpg Dateien zusammenfügen

Bei manchen Festplattenrecordern erscheinen aufnahmen als eine reihe von *.ts oder *.mpg Dateien an. Diese Dateien lassen sich mit jedem Videoplayer wiedergeben, wenn sie jedoch zusammengefügt werden läuft Ton und Bild langsam auseinander.

Dies wird durch die ungewöhnliche Art verursacht, in der viele Festplattenrecorder die .ts/.mpg Dateien schreiben. Häufig ist im ersten mpeg Frame keine Bildinformation sondern Zusatzinformationen des Rekorders abgelegt, die es zu entfernen gilt.:

ffmpeg -ss 00:00:00.2 \
 -i "concat:eins.tx|zwei.ts|...|letzte.ts" \
 -i "concat:eins.tx|zwei.ts|...|letzte.ts" \
 -acodec copy -vcodec copy \
 -map 0:0 \
 -map 1:1 \
 -f mpegts \
 ausgabe.ts

 ffmpeg

-ss 00:00:00.2
überspringt die ersten beiden Frames jeder Video-Datei

-i “concat:eins.ts|zwei.ts|…|letzte.ts”
nimmt die zusammengefügten Dateien eins.ts, zwei.ts und letzte.ts als Quelle 0
meint in diesem Zusammenhang nur hier belibig weitere Dateien!

-i “concat:eins.ts|zwei.ts|…|letzte.ts”
nimmt die zusammengefügten Dateien eins.ts, zwei.ts und letzte.ts als Quelle 1

-acodec copy -vcodec copy
Die Audio- und Videospur soll unverändert übernommen werden.

-map 0:0 -map 1:1
Nimmt aus der “Quelle 0” die Spur 0 (das Video) und aus der “Quelle 1” die Spur 1 (Audio)

-f mpegts
nimmt als Ausgabeformat das Format MPEG-ts

Am ende folgt die Ausgabedatei, welche Ihr Kontainerformat aus der Dateierweiterung bezieht, in unserem Fall “ausgabe.mkv”. Als Ausgabedatei kann je nach persönlichem Geschmack

Kategorien
Allgemein Linux security

RETTET TrueCrypt…

Da TrueCrypt auf der offiziellen Internet Seite eine Anleitung zur Umstellung auf unsicherere Software, wie zum Beispiel “BitLocker”, gestellt hat und aus Archiven verschwindet hier ein Spiegel der letzten Aktuellen Version! Bewahrt es gut auf!

Ich hoffe es finden sich Entwickler die TrueCrypt weiterführen!!!

Die Checksummen der Dateien (Bitte mit den Dateien und Checksummen aus Drittquellen vergleichen!)
md5sum:

  • bb355096348383987447151eecd6dc0e truecrypt-7.1a-linux-x64.tar.gz
  • 09355fb2e43cf51697a15421816899be truecrypt-7.1a-linux-x86.tar.gz
  • 89affdc42966ae5739f673ba5fb4b7c5 truecrypt_7.1a_mac_os_x.dmg
  • 102d9652681db11c813610882332ae48 truecrypt-7.1a-source.tar.gz
  • 7a23ac83a0856c352025a6f7c9cc1526 truecrypt_setup_7.1a.exe

sha1sum:

  • 086cf24fad36c2c99a6ac32774833c74091acc4d truecrypt-7.1a-linux-x64.tar.gz
  • 0e77b220dbbc6f14101f3f913966f2c818b0f588 truecrypt-7.1a-linux-x86.tar.gz
  • 16e6d7675d63fba9bb75a9983397e3fb610459a1 truecrypt_7.1a_mac_os_x.dmg
  • d43e0dbe05c04e316447d87413c4f74c68f5de24 truecrypt-7.1a-source.tar.gz
  • 7689d038c76bd1df695d295c026961e50e4a62ea truecrypt_setup_7.1a.exe

STELLT AUCH IHR SPIEGEL DES QUELLCODES!