Kategorien
Linux

Hilfe, ich habe kein uuencode!!!

Ich wollte mir vor kurzem Schadcode zur Analyse von einem Computer ohne Netzwerk über die Serielle Console kopieren, musste jedoch leider feststellen das kein uuencode auf dem Server vorinstalliert war.

Nach einer kurzen suche suche bin ich auf xxd gestoßen, mit dem sich Binärdaten in hexadezimalcodes, und wieder zurück, umwandeln lässt.

Eine Datei “Datei” kann mit dem folgenden Aufruf in Hex-Dump gewandelt werden.:

xxd -p Datei > Datei.txt

Ich schalte bei der Seriellen Console im anschluss das Logging ein, schreibe die Ausgaben also in eine Datei. und gebe mit “cat Datei.txt” die Hex-Dump-Datei aus.

Nach dem die überzähligen Zeilen aus dem Mitschnitt entfernt wurden kann mit dem folgenden Befehl der Hex-Dump wieder in die Ursprungsdatei zurück umgewandelt werden.

xxd -p -r Datei.txt > Datei-eins

Die beiden Dateien “Datei-eins” und die auf dem ursprünglichen Computer liegende Datei “Datei” sind identisch. Der Dateiname und die Dateirechte werden bei dieser Methode jedoch im gegensatz zu uuencode nicht übernommen.

Bei einem Größenvergleich mit uuencode schneidet xxd erwartungsgemäß nicht besonders gut ab,

Test zum Speicherbedarf:

  • Anlegen einer binären Testdatei mit:
dd if=/dev/urandom of=bintest bs=1024 count=1024
  • Erzeugen der Testdateien für uuencode, xxd, base32 und base64:
uuencode bintest bintest > bintest-1.txt
xxd -p bintest > bintest-2.txt
base32 bintest > bintest-3.txt
base64 bintest > bintest-4.txt

Die Sicherung der Datei ist als Hex-Dump, xxd deutlich größer als mit uuencode oder base64, sogar noch größer als eine Umwandlung in ASCII via base32:

~$ ls -lhA bintest*
-rw-r----- 1 metzger users 1,0M Apr 25 19:19 bintest
-rw-r----- 1 metzger users 1,4M Apr 25 19:27 bintest-1.txt
-rw-r----- 1 metzger users 2,1M Apr 25 19:37 bintest-2.txt
-rw-r----- 1 metzger users 1,7M Apr 26 16:32 bintest-3.txt
-rw-r----- 1 metzger users 1,4M Apr 26 16:32 bintest-4.txt

 

Kategorien
Forensik Linux

Inotify: Dateien überwachen

Du kannst in Linux Systemen die Veränderungen an Dateien im Dateisystem mit inotify überwachen.

Um, sobald Dateien verändert wurden ein .tar.gz-Archiv zur Datensicherung zu erstellen oder die veränderte Datei auf einen anderen Server hochladen, oder auch an ein Filter / Beautifier zu übergeben oder auch einfach nur um auf meinem NAS eine LED anschalten ist inotify das Werkzeug auf das alle die es noch nicht kennen gewartet haben.

Ich bin schon vor einigen Jahren auf ein Problem gestoßen für das inotify die richtige Lösung gewesen wäre. Damals konnte ich nir nur eine Endlosschleife schreiben die immer wieder alle Dateien in meinen Verzeichnissen durchgegangen ist, keine schöne Lösung und endlose Festplattenzugriffe.
Diese Endlosschleife gefiel meinem damaligen Provider garnicht, da diese zu häufig auf die zu überwachenden Dateien Zugriff und die Festplatten am einschlafen hinderten und die Lebensdauer der Festplatten reduzierte.
Damals konnte ich die Schleife einfach mit einer längeren pause() zügeln, bin bald auf einen Cronjob gewechselt der noch seltener lief.

Auf meines eigenen NAS und meinen eigenen Servern bin ich jedoch nicht auf eine Schleife oder Cronjobs angewiesen! Mit einem Inotify Event kann ich die Änderungen direkt im Dateisystem abpassen und die gewünschte Anktion direkt nach der änderung starten.

apt install inotify-tools
Inotify-Events
KürzelFormat
ACCESSZugriff auf die Datei
ATTRIBMetadaten geändert
CLOSE_WRITEzum Schreiben geöffnete Datei geschlossen, sie muss nicht geändert worden sein
CLOSE_NOWRITEEine Datei wurde geschlossen nachdem sie schreibgeschützt geöffnet wurde
CREATENeue Datei angelegt
DELETEDatei gelöscht
DELETESELFÜberwachtes Verzeiuchnis gelöscht
MODIFYDatei modifiziert
MODIFYSELFÜberwachtes Verzeichnis modifiziert
MOVEDFROMDatei aus dem überwachten Verzeichnis verschoben
MOVEDTODatei in das überwachte Verzeichnis verschoben
OPENDatei geöffnet
inotifywait -mrq -e create --format %w%f /pfad/zum/verzeichnis/ | while read FILE
do
echo "neue Datei: $FILE"
done

Um zum Beispiel das WordPress Verzeichnises auf neue Dateien zu überwachen kann ich folgendes Snippet nutzen:

inotifywait -mrq -e create --format %w%f /home/customer/der_metzger/loteks_de/www/ | while read FILE;
 do
  echo "neue Datei: $FILE";
done

Dirch dieses Snippet werden alle im WordPressverzeichnis  neu erstellten Dateien ausgegeben.

In meinem Verzeichnis vor allem viele Dateien wp-content/temp-write-test-1492771373. (Die Zahl an ende ändert sich bei jedem Aufruf)
Jedoch werden auch alle Updates, Uploads, Plugin und Theme Installationen und auch all die neuen Dateien an die ich grade nicht denke.

Um herauszufinden welche Dateien “angefasst” werden wird nur der Parameter “-e create” auf “-e access” geändert:

inotifywait -mrq -e access --format %w%f /pfad/zum/verzeichnis/ | while read FILE
do
echo "zugriff auf Datei: $FILE"
done

Inotify ist unter Linux ein sehr nützliches Werkzeug, auch für die Fehleranalyse. 😉

Kategorien
Linux security

Reverse SSH Tunnel

Seit der Deaktivierung extern erreichbarer IPv4 Adressen, von den Providers Dual-Stack Lite oder DS-Lite genannt, bei meinem und auch vielen anderen Internetzugängen lassen sich die heimischen Computer und Router nicht mehr ohne weiteres mittels OpenSSH erreichen.

Die Alternativen, wie Beispielsweise einen VPN Tunnel und die teilweise recht obskuren Shell sharing-Dienste (Nach aufruf einer URL habe zugriff auf die Shell als der Benutzer der die Shell freigegeben hat, ohne Passwort, ohne Key), überzeugen mich einfach nicht. Besonders zur Administration meines heimischen Servers und der NAS verlange ich einfach mehr vertraulichkeit von meiner Verbindung.

In diesem Blogbeitrag zeige ich Schritt für Schritt wie ein reverser, mit anderen Worten umgekehrter, SSH Tunnel errichtet werden kann.

Revers SSH-Tunnel? Das ist wenn Bob eine Verbindung zur Shell des Computers von Alice herstellen möchte, der Computer von Alice ist jedoch wegen einem NAT oder einer Firewall nicht erreichbar ist. Alice muss dann zuerst eine Verbindung zu Bobs Computer herstellen und in dieser die Verbindung zu ihrem eigene Computer mitbringen.

Für mein Beispiel nehmen wir an, das der Computer von Alice die IP-Adresse 10.0.0.2 und der Computer von Bob die IP-Adresse 192.168.0.2 hat, und zwar eine Verbindung von Alice zu Bob, jedoch umgekehrt keine Verbindung möglich ist.

1.) SSH Verbindung von Alice zu Bob herstellen. (Vom Zielcomputer zu dem Computer auf dem eine Verbindung auf die Shell eigentlich hergestellt werden soll)

ssh -R 49152:localhost:22 benutzer@192.168.0.2

Der Port 49152 den ich hier verwende ist ein beliebiger, auf Bobs Computer nicht verwedeter Port.

2.) Nun kann Bob eine SSH-Verbindung zum Computer von Alice über den jetzt aufgebauten SSH-Tunnel herstellen.

ssh localhost -p 49152

Wenn die von Alice hergestellte Verbindung zu Bob jedoch abbricht verliert auch Bob seine Verbindung zu Alice.
Bob sollte aus diesem Grund due Konfiguration seines SSH-Servers so anpassen, das die Verbindung nicht wegen eines Timeout getrennt wird.

Die Daten /etc/ssh/sshd_config kann zu diesem Zweck wie folgt angepasst werden.:
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 100

Kategorien
Linux security

Linux: sudo ohne Passwort

Auf dem eigenen Laptop, Raspberry Pi oder Computer ist es verlockend mittels sudo -s als root zu arbeiten um nicht bei jedem aufruf eines Befehls der erhöhte Rechte benötigt das eigene Passwort eingeben zu müssen. Aus diesem Grund zeige ich in dieser einfachen Anleitung aufzuzeigen wie diese Verlockung abzuschwächt werden kann in dem das Passwort nicht immer oder wenigstens nicht bei jedem aufruf eines Befehls eingegeben werden muss.

Die Einstellungen zum Befehl sudo werden in der Datei /etc/sudoers hinterlegt. In dieser Datei kann festgelegt werden welche Benutzer sudo nutzen können, ob bei jedem Aufruf das eigene Passwort eingegeben werden muss und wie in dem Fall verfahren werden soll wenn wenn ein Benutzer ohne das recht zur nutzung versucht erhöhte Rechte zu erlangen.

Die Syntax der Konfiguration der Benutzerrechte erfolgt nach dem folgenden Schema:

user_list host_list=effective_user_list tag_list command_list

Die einzelnen Tele dieser Konfigurationszeile haben die folgenden Bedeutungen:

user_list – Liste der Benutzer oder einen Benutzer-Alisa der bereits zuvor angelegt wurde
host_list – eine Liste der Hostcomputer oder eine Host-Alias auf dem ein Benutzer sudo ausführen kann
effective_user_list – list of users they must be running as or a run as alias.
tag_list – Liste von Eigenschaften wie beispielsweise NOPASSWD.
command_list – Liste von Befehlen die mit sudo ausgeführt werden dürfen

Um einem Benutzer, in meinem Beispiel kuehnel, die Ausführung aller Befehle via sudo ohne die Eingabe eines Passworts zu erlauben öffne ich die “sudoers” Konfigurationsdatei.:

$ sudo vi /etc/sudoers

Und füge die folgende Zeile ein.:

kuehnel ALL=(ALL) NOPASSWD: ALL

Alternativ kann mit der folgenden Zeile einer Gruppe, in meinem Beispiel der Gruppe sudo, mit dem Prozentzeichen (%) der Zugriff auch ohne die eingabe des Passworts ermöglicht werden.

%sudo ALL=(ALL) NOPASSWD: ALL

Um meinem Benutzer kuehnel ausschließlich die Nutzung eines einzelnen Befehls zu ermöglichen kann die Zeile durch den entsprechenden Befehl ergänzt werden, wie im folgenden Beispiel mit dem Befehl kill.

kuehnel ALL=(ALL) NOPASSWD: /bin/kill

Die folgende Zeile ermöglicht allen Benutzern der Gruppe sys die nutzung des Befehls sudo zu der Ausführung der Befehle kill und rm ohne dafür das Passwort des Benutzers eingeben zu müssen.

%sys ALL=(ALL) NOPASSWD: /bin/kill, /bin/rm

Ich hoffe diese Beispiele reichen aus um eine Vorstellung von den Konfigurations-Optionen zu erhalten. Wenn Du Fragen zu einem Bestimmten Beispiel hast oder Fragen wie Du eine bestimmte Konfiguration erreichen kannst freue ich mich über Deinen Kommentar.

logfile

sudo gibt die Log-Informationen an syslog. Es kann nach wunsch aber auch ein eigenes Logfile schreiben.

Defaults        logfile="/var/log/sudo.log"

Die in der Logdatei gespeicherten Daten können den eigenen anforderungen angepasst werden, zum Beispiel so.:

Defaults        log_host, log_year, logfile="/var/log/sudo.log"

lecture

Hinweis bei der Nutzung von sudo anzeigen.

Es gibt 3 mögliche Konfigurationen:

always – bei jedem Aufruf dem Benutzer den Hinweisen zeigen
once – nur bei der ersten Nutzung den Hinweis anzeigen
never – dem Hinweis niemals anzeigen

Defaults        lecture="always"

Zusätzlich kann festgelegt werden in welcher Datei der Text für den Hinweis hinterlegt ist:

Defaults        lecture_file="/path/to/file"

timeout

Zeitspanne in Minuten nach der das Passwort erneut abgefragt werden soll.

Defaults        env_reset,timestamp_timeout=20
Kategorien
Allgemein

DOSBox MS-DOS Installation

Ich will eine DOSBox mit MS-DOS 6.22. Wieso? Weil es geht *g*

1.) Diskettenabbilder von MS-DOS 6.22 erstellen.

Mein USB-Diskettenlaufwerk wird von Linux als sdb erkannt (dmesg zeigt es)

[331.280707] usb 3-2: manufacturer
[331.280912] usb 3-2: ep 0x81 - rounding interval to 512 microframes, ep descays 1016 microframes
[221.281222] usb-storage 3-2:1.0: USB Mass Storage device detected
[331.281435] scsi7 : usb-storage 3-2:1.0
[332.307432] scsi 7:0:0:0: Direct-Access MITSUMI USB UFDD 061M 0.00 PQ: 0 ANSI: 0 CCS
[332.308218] sd 7:0:0:0: Attached scsi generic sg2 type 0
[332.563591] sd 7:0:0:0: [sdb] 2880 512-byte logical blocks: (1.47 MB/1.40 MiB)
[332.627631] sd 7:0:0:0: [sdb] Write Protect is on
[332.627642] sd 7:0:0:0: [sdb] Mode Sense: 00 46 02 80
[333.780412] sd 7:0:0:0: [sdb] Attached SCSI removable disk

mit dem folgenden Befehl erstelle ich nacheinander die drei Abbilder meiner MS-DOS 6.22 Disketten.

~$ dd if=/dev/sdb of=MSDOS622_D1.img bs=64k

anschließend habe ich die 3 Disketten-images, MSDOS622_D1.img, MSDOS622_D2.img und MSDOS622_D3.img der Original MS-DOS Datenträger.

Da ich keine Rechte an MS-DOS halte biete ich diese Images NICHT zum Download an. Einen Versand dieser Dateien via EMail kommt für mich genauso wenig in Frage. Ich Bitte von weiteren Anfragen abzusehen!

2.) 504 MB Festplattenimage erzeugen.

Die Maximale Größe der Festplatte eines klassischen DOS-PCs ist 504 MiB groß. Größere Datenträger können mit MS-DOS 6.2, und auch mit den damaligen Festplattencontrolern nicht genutzt werden.

Die spezifikation einer solchen Festplatte lautet:
1024 Cylinder
16 Heads
63 Sektoren

Ich habe diese Festplattenkonfiguration dem PC-Guide unter der folgenden Adresse entnommen.: http://www.pcguide.com/ref/hdd/bios/sizeMB504-c.html

Die Berechnung der Sektoren der Festplatte erfolgt nach dem Schema:
Sektoren = Cylinder * Heads * Sectoren
1024 * 16 * 63 = 1032192 Sektoren

Mit Hilfe von dd erstelle ich die 504 MiB (528 MB) große Festplatte DOS.img:

~$ dd if=/dev/zero of=DOS.img bs=512 count=1032192

3.) DOSBox installieren und konfigurieren

Die Installation erfolgt unter Debian und Ubuntu mit der folgenden Befehlszeile und dauert nur wenige Sekunden.:

~$ sudo apt install dosbox

Mit Hilfe der folgenden Befehlzeile finde ich heraus welche Konfigurationsdatei beim Start von DOSBox verwendet wird.:

~$ dosbox -printconf
/home/user/.dosbox/dosbox-0.74.conf

An das Ende der Konfigurationsdatei kommt für das MS-DOS-Setup der Befehl die Festplatte einzubinden und die Disketten zur verfügung zu stellen.
Die boot Zeile enthält meine 3 MS-DOS Disketten.
Der Wechsel der Disketten erfolgt mit der Tastenkombination [Strg]+[F4].

[autoexec]
imgmount c "/home/user/DOS.img" -size 512,63,16,1024 -fs none
boot "/home/user/MSDOS622_D1.img" "/home/user/MSDOS622_D2.img" "/home/user/MSDOS622_D3.img"

Die Option -size enthält die oben, beim anlegen der Festplatte festgelegten Parameter: Blockgröße (der bs= Parameter vom dd), Sektoren, Heads und Cylinder.

Beim Start von dosbox wird automatisch von der ersten Diskette gestartet und die Festplatte erst partitioniert und nach dem Neustart, dosbox beendet sich und muss neu gestartet werden, wird die Festplatte formatiert, Nach dem Start der Installation kann, sobald das Setup nach der nächsten Diskette verlangt einfach mit der Tastenkombination [Strg]+[F4] zur nächsten Diskette gewechselt und mit [Enter] das Setup fortgesetzt. Wenn das MS-DOS Setup fertig ist und neu starten möchte tauschen wir den Autostartbereich der DOSBox zu dem folgenden Inhalt.:

[autoexec]
imgmount 2 "/home/user/DOS.img" -size 512,63,16,1024 -fs fat
boot -l c

Jetzt haben ich ein DOSBox das, aus meinem Benutzerordner das Festplatten-Image DOS.img startet.

Kategorien
Forensik Linux security

auth.log – Das Logging-Verhalten von Debian Jessie

Bei einer Debian 8 minimal Installation, bezeihungsweise einer minimalen Debian Jessie Installationen erscheint im Verzeichnis /var/log in einigen fällen kein auth.log
Das kein auth.log erstellt wird liegt an dem, in der Minimalinstallation, fehlenden Paket: rsyslog.

Sollte ein auth.log erforderlich sein kann das Paket rsyslog sehr einfach mit dem folgenden Befehl nachinstalliert werden.

apt update
apt install rsyslog

Das Paket rsyslog wird auch bei Virtuellen Servern absichtlich nicht installiert, hierdurch gibt es auf dem Virtuellen Maschinen weniger Festplattenzugriffe was alle Virtuellen Server “beschleunigt”.

Solltest du einen Virtuellen Server betreiben entferne das Logging aller Dienste die Du nicht ubedingt benötigst, das Loggin aller Dienste deren Logdaten Du und nicht auswerten musst und auch das Logging aller Dienste die Du nicht auswerten möchtest.

Jede Information die Du keine oder nur ein sehr eingeschrängt schreiben lässt kann auch nicht gestohlen werden und nicht verloren gehen.
Der freiwillige Verzicht die Daten zu schreiben entspricht nicht nur der im deutschen Datenschutz gebotenen Datensparsamkeit, die nicht geschriebenen Daten belegen natürlich auch keinen Speicherplatz auf der Festplatte und ermöglichen zusätzlich bei Virtuellen Servern das trotz geringer IO-Resourcen einen einigermaßen schnelleren Betrieb der eigenen Dienste auf dem virtuellen Server.

Kategorien
Linux

Audiobuch CD in Audiobuch m4b umwandeln

Ich habe einen sehr kurzen und schnellen Weg gefunden Audiobuch CDs in Autobuch .m4b Dateien unter Linux umzuwanden.

Es sind nur 3 Werkzeuge notwendig die Schnell aufgerufen werden können und einfach verfügbar sind.

1.) abcde
abcde Wandelt eine Audio CD in ein beliebiges Format um. Gut, beliebig ist in diesem Fall das klassische Wave Format.
2.) mplayer
mplayer entfernt die Wave Header um eine saubere pcm Datei für faac um.
3.) faac
faac wandelt die pcm-Datei in eine m4b Datei um.

Befehlsfolge:

abcde -1 -M -N -o wav -d /dev/sr0
mplayer -vc null -vo null -ao pcm:nowaveheader:fast:file=temp.pcm Unknown_Artist-Unknown_Album/Unknown_Album.wav
faac -R 44100 -B 16 -C 2 -X -q 80 -o Hoerbuch.m4b temp.pcm
rm -r Unknown_Artist-Unknown_Album
rm temp.pcm

 

Kategorien
Forensik Linux

Server Benchmark Test from Loteks

Ab dem erleben dieser wird es interessant das Ergebnis eines Benchmarks zu haben um belastbare Zahlen zum vergleich zu haben.

Ein Benchmark? Es gibt für Linux unglaublich viele Benchmark Werkzeuge. Ich möchte kein Benchmark Werkzeugs. Ich möchte nichts großes und ich will nicht herausfinden welches Werkzeug den Parameter misst der mich interessiert.

Ich möchte ein einfachen kleinen Hack der Messen kann was mich interessiert!

Zu diesem Zweck dient dieser Artikel

Dieser Artikel ist ein wenig im Fluss und wird je nach vorliegenden Kommentaren angepasst.

Messen der CPU Geschwindigkeit: (Pi bis zur Stelle 5000 berechnen)

time echo "scale=5000; a(1)*4" | bc -l

Messen der Festplatten Schreibrate:

dd if=/dev/zero of=/test.file bs=1024 count=10240

Messen der Festplatten Leserate:

dd if=/test.file of=/dev/null

Messen der Netzwerkgeschwindigkeit:

wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
./speedtest-cli

Für alle die Virtuelle Server gemietet haben:
Ja, es ist schade das euer VServer wirklich langsam ist. Lebt damit! Ihr teilt euch die CPU, Netzwerkverbindung und die Festplattenzugriffszeiten mit anderen. Seid sozial und übertreibt es nicht mit den Festplattenzugriffen, die anderen wollen auch mal. Lebt mit den 10MByte lese und Schreibrate!
Wenn es darauf ankommt nutzt doch bitte dedizierte Server!

Kategorien
Forensik Linux

Bitte spielt nicht mit den Logdateien

Vor kurzem durfte ich erleben das Festplatten ohne guten grund voll belegt waren, da Administratoren auf die Idee kamen im Log Verzeichnis die Logfiles zu komprimieren.

Bitte ändert die Dateien im LogVerzeichnis nicht! Der Logrotate Dienst wird die Dateien nicht mehr finden und die Datei bleibt für immer dort liegen.

Um Logfiles zu rotieren benutzt logrotate!

Der Aufruf für das rotieren der Logfiles lautet:

logrotate -f /etc/logrotate.conf
Kategorien
Windows

Windows Schriftart ohne Administratorrechte

Um unter Windows eine neue Schriftart zu verwenden muss diese Installiert sein. Leider ist die Installation von Schriftarten unter Windows eine Aufgabe des Administrators und ohne Administrator Rechten nicht möglich.

Es ist mit einer kleinen Software möglich Schriftarten temporär unter Windows zu registrieren. Die Schriftarten bleiben bis zur Abmeldung oder dem Neustart des Computers verfügbar.

Das fragliche Werkzeug heisst “RegisterFonts” und kann hier heruntergeladen werden.
Bei Interesse findest Du den Quellcode hier! In dem Zip-Container ist ein “Microsoft Visual Studio 2008” Projekt welches den kurzen c++ Quellcode des Projets enthält. (Die Datei enthält ohne header und leerzeilen nur 61 Zeilen)

Um Schriftarten unter Windows ohne die dazugehörigen Rechte zu beauftragen Entpacke die Zip-Datei RegisterFont.zip in einen Ordner und lege die Dateien der gewünschten Schriftarten in den gleichen Ordner.

Klicke mit der rechten Maustaste auf die Datei “RegisterFont.exe” and wähle “Verknüpfung erstellen” aus.

Nun klicke mit der rechten Maustaste auf die neu entstandene Verknüpfung und wähle “Eigenschaften” aus. In dem Eingabefeld “Ziel” geben Sie dann nach dem Dateiname “RegisterFont.exe” noch zusätzlich die Zeichenfolge “add” gefolgt von den Dateinamen der Schriftarten, mit Leerzeichen getrennt an.

In meinem Beispiel gebe ich die Schriftarten 1979.ttf und 28days.ttf ein.
Dies sieht unter Windows7 bei mir wie folgt aus.:

Schriftart mit RegisterFonts einstellen Fenster unter Windows 7

Um die Schriftarten zu laden reicht ein doppelklick auf die Verknüpfung.

Wenn die Schriftarten beim Start von Windows automatisch geladen werden sollen kann die Verknüpfung im Startmenü in den “Autostart” Ordner verschoben oder kopiert werden.