Category Archives: macOS

alertasshd.sh

Comments Off on alertasshd.sh
Filed under Apple, macOS, Netzwerk, Raspberry Pi

ssh-brute-force-attacken können einen Rechner nicht nur potenziell gefährden, sondern auch während der Attacke durch die erhöhte Prozessorlast in die Knie zwingen. Einige Versuche haben gezeigt, dass die Auslastung auf den attakierenden Geräten zwischen 50 und 70 Prozent in die Höhe schnellt und dann normale Anwendungen Probleme bekommen. Aber meist ist diese Art von Attacke auf die Schnelle nicht erkennbar.


#!/bin/bash

while [ $loop 30 ] ; do
process="sshd"
if [ $(ps -ef | grep -v grep | grep $process | awk '{print $2}' | wc -l) -gt 10 ]
then
afplay alert_01.wav
fi

done
exit0

Mehr als Proof-of-Concept und nicht als reelle Abwehr (dafür sind normalerweise Firewalls nötig) ist dieses kleine Script gedacht.
Es erkennt die steigende Auslastung durch die SSH-Daemons (sshd) und spielt wiederholend einen Ton ab (alert_01.wav), solange wie die Attacke existiert.
Mehr praxistauglicher wäre dieses Script als ein entsprechender Daemon/Service, der permanent die sshds überwacht, optional.

Für Debian/Raspbian einfach “aplay” statt “afplay” verwenden.

macos-Passwort wiederherstellen (Hashcat Cracking)

Comments Off on macos-Passwort wiederherstellen (Hashcat Cracking)
Filed under Apple, macOS

Die Gründe, um ein macOS-Passwort legal cracken zu müssen, können vielfältig sein: Passwort vergessen (kommt vor!), Aufklärung von Straftaten (kommt ebenfalls vor), Todesfall (kommt früher oder später immer vor).
Ganz unten stehen die Maßnahmen, um das Cracken der nachfolgenden Prozedur definitv zu unterbinden, aber zuerst orientieren wir uns an der macOS-Standard-Installation und diese bietet die notwendigen Angriffsflächen, um das Passwort wiederherzustellen (ohne es zu ändern). Diese Prozedur erfordert physischen Zugang zu dem Rechner.


Der erste Schritt ist, die DS-Datei des entsprechenden User-Accounts zu extraieren. DS (Directory Service) ist ein DB-basierter Dienst, der die lokalen Nutzer innerhalb macOS verwaltet. Diese Datei befindet sich in /private/var/db/dslocal/nodes/default/username.plist (siehe Bild 1).

Der enthaltende Ordner (Default) ist über SIP geschützt, dieses lässt sich über die Recovery Partition ein- und ausschalten. Danach muss der Rechner in den Single-Modus versetzt und die dslocal-User-Datei auf einen externen Datenträger kopiert werden. Aus dieser wird dann der Hash für das Cracking ausgelesen.

/sbin/mount -uw /

cp /private/var/db/dslocal/nodes/default/username.plist /volumes/usbdisk

Hashcat-Installation unter macOS

Hashcat unter macOS funktioniert nur mit bestimmten OpenCL-Libraries, die Mindestvorraussetzungen sind Rechner mit Nvidia- oder Intel-GPUs, Maschinen mit ATI-GPUs fallen hier schonmal raus, das betrifft aber nur die Mac Pros bis Baujahr 2012. Je neuer der Rechner, desto besser.

git clone https://github.com/hashcat/hashcat.git

mkdir -p hashcat/deps

git clone https://github.com/KhronosGroup/OpenCL-Headers.git hashcat/deps/OpenCL

cd hashcat/ && make

./hashcat --version

Hash-File generieren

Hashcat benötigt eine Hash-Datei, um eine Attacke ausführen zu können, diese wird aus der DS-Datei generiert mithilfe von diesem Script. Dieses Script enthält fest-codierte Pfade um den Hash zu extraieren, die DS-Datei muss in /tmp/ liegen.

Danach das Python-Script mit Root-Rechten ausführen:

sudo python hashdump.py

Die Ausgabe sieht ungefähr so aus:

[('bob_sinclair', '$ml$27548$ba6261885e349ecb847854136cf32e9561cd 1af65616f7ce11abb3f04786729c$88ad7849c5b30cce20b9d6ecde9e5be3b673 6646965e0414d45d40510a574f864bafd9c5dc06fdb3cb189b877c3aa1312c2e4 497ea854d3653f5861365d41a4250042a78c93dace17d212ccbb6584e3350efe9 5bd138f27b1705ad97166d2f11fb749b6138139a9e1ebeecb1a96750db53dbf75 434c4b320b500589fa64bf5f8')]

Jetzt muss etwas gebastelt werden, denn nur ein Teil dieses Shadow-Kennworts ist für Hashcat verwertbar, und zwar nur die ersten 128 Zeichen nach dem vierten $-Zeichen (mit TextWrangler lassen sich Zeichenkettenlängen in Echtzeit messen).

Der Nutzername (bob_sinclair) muss ebenfalls raus, die fertige Hash-Datei anhand von dem Beispiel oben sieht dann so aus:

Diese als txt-Datei abspeichern (hash.txt).

Start Hashcat

./hashcat -a 0 -m 7100 /Users/rob/Desktop/hash.txt /Users/rob/Desktop/example.dict -w 4 --potfile-path /tmp/cracked_hash.pot

hashcat (v5.1.0-1512-g784eeb25) starting...

Hashcat braucht den Hash (hash.txt) und eine Wörterbuch-Datei, mit der die Attacke ausgeführt wird. Im Beispiel wird die Ziel-Datei (cracked_hash.pot) in /tmp/ abgelegt. In meinem Fall hat die erfolgreiche Attacke genau 12 Stunden gedauert, anhand einer Wordlist-Datei mit 14 Millionen Einträgen (iMac, Intel Core i5, Intel HD Graphics 6000 1500 MB, macOS 10.13.6).

Prävention

Um diese Variante des Password-Crackings komplett zu unterbinden, genügt es FileVault einzuschalten. Oder ein Open-Firmware-Passwort einzurichten. Denn dann wird eine Passwort-Abfrage vor der Recovery-Partition notwendig und ohne den Zugriff auf die DS-Datei erübrigt sich der Rest.

Linktipp: Hacker interessieren sich nicht für Stopp-Schilder, Netzpolitik.org

Adobe-CC-Reste bereinigen

Comments Off on Adobe-CC-Reste bereinigen
Filed under macOS

Um eine frische CC-Installation anlegen zu können, müssen nicht nur die Applikationen deinstalliert sein, auch die umfangreichen Prefs, Caches und sonstige Dateireste müssen weg. Meist verhindern diese nicht gelöschten Adobe-Daten den Download über den CC-Manager komplett bzw. der Fortschritt stoppt nach einer gewissen Zeit. Natürlich ohne eigene Fehlermeldung.
Es gibt ein entsprechendes Script, was ich schon ein paar Mal erfolgreich angewendet habe:


#!/bin/bash
sudo rm -rf /Applications/Adobe* /Applications/Utilities/Adobe* /Library/Application\ Support/Adobe /Library/Preferences/com.adobe.* /Library/PrivilegedHelperTools/com.adobe.* /private/var/db/receipts/com.adobe.* ~/Library/Application\ Support/Adobe* ~/Library/Application\ Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.adobe* ~/Library/Application\ Support/CrashReporter/Adobe* ~/Library/Caches/Adobe ~/Library/Caches/com.Adobe.* ~/Library/Caches/com.adobe.* ~/Library/Cookies/com.adobe.* ~/Library/Logs/Adobe* ~/Library/PhotoshopCrashes ~/Library/Preferences/Adobe* ~/Library/Preferences/com.adobe.* ~/Library/Preferences/Macromedia* ~/Library/Saved\ Application\ State/com.adobe.*

exit


Damit werden radikal ALLE lokalen Adobe-Daten gelöscht, die Orte, in denen das Script aktiv ist, sollte man sich mal in Ruhe anschauen. Interessant ist, das der Flash Player weiterhin unter der Marke Macromedia läuft (Macromedia wurde 2005 von Adobe gekauft).

System Profiler Commands

Comments Off on System Profiler Commands
Filed under macOS

General Hardware Information:

system_profiler SPHardwareDataType

Serial Number:

system_profiler SPHardwareDataType | grep Serial

Exact CPU Model:

sysctl -n machdep.cpu.brand_string

Turn Off/On SSH

Comments Off on Turn Off/On SSH
Filed under macOS

Enabling SSH:

$ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

Disabling SSH:

$ sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist

Siehe auch Turn Off/On AFP/SMB

TimeMachine: Emergency Test

Comments Off on TimeMachine: Emergency Test
Filed under macOS

Ein TimeMachine-Backup zu haben ist schön, aber noch besser ist es, die exakte Notfall-Prozedur ebenfalls zu üben. Der Worst-Case wäre es, bei einem Ernstfall festzustellen, dass das TM-Backup nicht funktioniert. Die Gründe können auch da vielfältig sein, aber ein Szenario ist definitiv fehleranfällig: keine dezidierte Backup-Platte zu verwenden, sondern eine “gemischte Platte”, die den Backup-Ordner und andere Daten enthält. Diese neue Aufgabenstellung für diese Festplatte kann auch wieder neue Probleme generieren. In dieser Konstellation sollte unbedingt mal ein Test mit dem vorhandenen Backup durchgeführt werden.

Dazu im Recovery-Modus starten (Taste CMD und R beim Start gedrückt halten), danach im Recovery-Menü den ersten Punkt “Von TimeMachine-Backup wiederherstellen” auswählen. Dort würden zuerst die vorhanden TimeMachine-Orte aufgelistet werden (lokale Platten und/oder Netzwerk-Platten) und danach würde zweitens die TimeMachine-Zeit/Datum ausgewählt werden. Dass beides zusammen funktioniert ist NICHT zwingend, deswegen ist diese Prozedur so wesentlich. Falls also einer der Schritte nicht funktioniert: sofort ein neues Volume oder Festplatte für ein frisches Backup definieren und auch sofort durchführen.

Update: manche Probleme hinsichtlich eines (Netzwerk-) TimeMachine-Backups entstehen durch die nachträgliche Änderung des Computer-Namens, siehe auch diesen Artikel.

InfoSys 0.7

Comments Off on InfoSys 0.7
Filed under macOS, QC

Ein QC-Projekt, dass als ScreenSaver die aktuellen News der Fakultät darstellt. Die Datei in ~/Library/ScreenSaver bewegen und im Kontrollfeld “Bildschirmschoner” auswählen. Funktioniert nur bis macOS 10.13 HighSierra.

Mac ohne Tastatur betreiben

Comments Off on Mac ohne Tastatur betreiben
Filed under Exhibitions, macOS

Einen Desktop-Mac passiv (also ohne Tastatur, aber mit Monitor) zu betreiben kommt im Ausstellungskontext häufig vor. MacMinis, MacPros und iMacs, die mit vorgefertigten Programmen bestückt werden und nur noch eingeschaltet werden sollen. Das Problem dabei ist: der Bluetooth-Keyboard-Assistent startet bei nicht angeschlossenen Eingabe-Geräten automatisch (auch bei ausgeschalteten Bluetooth) und verhindert das nachfolgende Ausführen von Programmen, ScreenSaver etc.
Die Lösung ist, diesen Assistenten zu deaktivieren bzw. umzubenennen.

sudo mv "/System/Library/CoreServices/Bluetooth Setup Assistant.app" "/System/Library/CoreServices/Bluetooth Setup Assistant.dissabled.app"

Vorraussetzung dafür: SIP deaktivieren.
Um den Assistenten wieder einzuschalten kehrt man die Umbenennung um:

sudo mv "/System/Library/CoreServices/Bluetooth Setup Assistant.dissabled.app" "/System/Library/CoreServices/Bluetooth Setup Assistant.app"

Show Large Files in Terminal

Comments Off on Show Large Files in Terminal
Filed under macOS


#!/bin/sh
echo "Disk: "
read input_variable
echo "Search Sizes larger than x MB: "
read input_variable3
find "/volumes/$input_variable/" -type f -size +"$input_variable3"M -exec ls -lh {} \; 2> /dev/null | awk '{ print $5 " > " $NF}' #thatsit
exit

Update: die awk-Option “$NF” zeigt das letzte Feld des separierten Satzes an, zerschneidet dadurch aber Pfade mit Lehrzeichen. Die Option “$0” zeigt den kompletten Satz an, also auch den kompletten Pfad. Oder “$9 ” ” $10″, also Felder 9 und 10, das wäre der erste Teil des Pfades und der zweite Teil des Pfades inklusive einem künstlichen Lehrzeichen. Kann man noch weiter verfeinern, wichtig wäre aber Feld 9, den ohne den ersten Teil des Pfades hat man weniger Hinweise, wo man suchen würde …

ssh-keygen für ssh-Auto-Login

Comments Off on ssh-keygen für ssh-Auto-Login
Filed under macOS, Netzwerk

ssh-keygen ist faktisch das Schlüsselbund für die Kommandozeile, hier nur die wesentlichen Befehle.

Schlüsselbund erstellen: ssh-keygen -t rsa -b 4096 # just press Enter till the end

Schlüssel zum Schlüsselbund hinzufügen: ssh-copy-id user@server

Zeigt public oder privaten Schlüssel im Format RFC4716 an: ssh-keygen -e