Mobile App mit der FRITZ!Box analysieren

„Die FRITZ!Box kann zur Diagnose alle Datenpakete im Wireshark-Format mitschneiden.“ beschreibt die Hilfeseite zum Paketmitschnitt. Die Funktionen sind etwas versteckt. Die Mitschnitte sind hervorragend geeignet um zu ermitteln wie gesprächsfreudig Android Apps sind.

Daten aufzeichnen

Der Link http://fritz.box/html/capture.html öffnet den Bereich für den Paketmitschnitt. Alle vorhandenen Interfaces sind hier hinterlegt. Entweder können spezifische Zugangskanäle ermittelt werden oder sämtlicher Traffic welcher ins Internet geleitet wird. Die „Start“ Schaltfläche startet den Download einer gestreamten Datei. Nachdem genug Daten gesammelt sind ist die Aufzeichnung unbedingt über „Stopp“ zu beenden. Das Abbrechen des Downloads führt andernfalls zu einer korrupten Datei.

Analyse mit Wireshark

Wireshark ist ein sehr mächtiges Tool zur Analyse von Netzwerkaufzeichnungen (Networkdumps, tcpdumps, …). Die soeben erstellte Datei lässt sich ebenfalls öffnen. In dem Hauptfenster sind alle durchgeführten Verbindungen dargestellt. Mit Hilfe von Filtern kann der Datenstrom aufbereitet werden. Sämtliche Daten welche nicht verschlüsselt mittels TLS/SSL übertragen wurden (https) können direkt durch den HTTP Protocol Filter zur Ansicht kommen. Bei meiner Analyse nutze ich MyFitnessPal. Dieses lädt Werbung (ads) aus dem Internet nach. Ein Paket ist hier beispielsweise:

Hypertext Transfer Protocol
    User-Agent: Mozilla/5.0 (Linux; Android xxx; ANDROIDGERÄT Build/HANDYVERSION; wv) AppleWebKit/WEBKITVERSION (KHTML, like Gecko) Version/4.0 Chrome/CHROMEVERSION Mobile Safari/SAFARIVERSION\r\n
    [Full request URI [truncated]: http://ads.mopub.com/m/ad?v=6&id=EINDEUTIGEID&nv=4.5.1&dn=ANDROIDGERÄT&bundle=com.myfitnesspal.android&q=QUERYl&ll=LATITUDE2CLONGITUDE&lla=??&llf=???]

In diesem einzigen Aufruf wird der Webseite mopub.com eine ganze Menge an Daten übermittelt. Neben den Versionen und Namen des Mobilfunkgerätes enthält der Aufruf die Versionen der genutzten Browser und Toolkits. Außerdem wird eine eindeutige ID sowie die GPS Standortdaten des Gerätes übermittelt. Das Werbeunternehmen kann somit bei jedem Aufruf mein Profil deutlich besser schärfen und meine Informationen weiter aushorchen. Die nächsten Daten erhält die Webseite openx.com, ebenfalls auf Werbung und Analyse spezialisiert. Auch Google ist mittels doubleclick involviert. Viel mehr Informationen und die Gefahren gibt es unter DEF CON 22 – Anch – The Monkey in the Middle: A pentesters guide to playing in traffic.

SQLite mit der PowerShell nutzen

SQLite hat sich als kleine Bibliothek für Datei-basierte Datenbanken etabliert. Mit Hilfe der PowerShell und einem ebenso kleinen Modul sind Zugriffe auf die Datenbank einfach zu erledigen.

SQLite

_SQLite ist eine Programmbibliothek, die ein relationales Datenbanksystem enthält. SQLite unterstützt einen Großteil der im SQL-92-Standard festgelegten SQL-Sprachbefehle. […] Die SQLite-Bibliothek lässt sich direkt in entsprechende Anwendungen integrieren, sodass keine weitere Server-Software benötigt wird. Dies ist der entscheidende Unterschied zu anderen Datenbanksystemen. Durch das Einbinden der Bibliothek wird die Anwendung um Datenbankfunktionen erweitert, ohne auf externe Softwarepakete angewiesen zu sein. SQLite hat einige Besonderheiten gegenüber anderen Datenbanken: Die Bibliothek ist nur wenige hundert Kilobyte groß. Eine SQLite-Datenbank besteht aus einer einzigen Datei, die alle Tabellen, Indizes, Views, Trigger usw. enthält. Dies vereinfacht den Austausch zwischen verschiedenen Systemen, sogar zwischen Systemen mit unterschiedlichen Byte-Reihenfolgen. Jede Spalte kann Daten beliebiger Typen enthalten, erst zur Laufzeit wird nötigenfalls konvertiert. (Quelle: Wikipedia)_

Module

Für den Zugriff auf SQLite Datenbanken gibt es eine Reihe von Modulen. Einige Kapsel sogar das komplette SQL in PowerShell Funktionsaufrufe. Für diesen Artikel reicht das PSSQLite Modul vom GitHub User RamblingCookieMonster. Das Modul ermöglicht den Zugriff auf die Datenbank mittels ein oder zwei einfachen Funktionsaufrufen.

Um .SQLite, .SQLite3 oder .db Dateien zu öffnen hilft das Programm SQLite Browser.

Das Modul kann aus GitHub runtergeladen werden oder mittels git exportiert werden. Entweder wird der Unterordner „PSSQLite“ in ein eigenes Verzeichnis gelegt oder in einen der Standard Modulverzeichnisse der PowerShell installiert. Liegt die Datei im Standardpfad:

> $Env:PSModulePath
C:\Users\xxxxxx\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\
> Import-Module PSSQLite

Andernfalls muss der gesamte Pfad angegeben werden:

> Import-Module "PFAD_ZUM_ORDNER\PSSQLite"

Die Hilfe des Moduls lässt sich über die bekannten Befehle ausgeben.

Get-Command -Module PSSQLite
Get-Help Invoke-SQLiteQuery -Full

SQL Kommandos ausführen

Ein wichtigstes Merkmal bei der Nutzung der Bibliotek ist das automatische Erstellen der SQLite Datei. Wurde die Datei noch nicht erstellt gibt es eine Warnung und eine leere Datenbank wird erzeugt.

$db = "PFAD_ZUM_ORDNER\db1.db" # oder .SQLite, .SQLite3
$query = "CREATE TABLE user (
  UserId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  Firstname NVARCHAR(250) NOT NULL,
  Lastname NVARCHAR(250) NOT NULL,
  Birthdate DATE
)"

# SQLite erstellt die Datei automatisch
Invoke-SqliteQuery -Query $query -DataSource $db

# Daten einfügen
Invoke-SqliteQuery -Query "INSERT INTO user(Firstname, Lastname, Birthdate) VALUES ('Max', 'Müller', '2000-09-01');  -DataSource $db"

Verbindungen nutzen

Möchte man mehr als nur One-Shoot Befehle ausführen bietet sich das öffnen und schließen von Verbindungen an. Dazu benötigt es nur einen weiteren Befehl. Anstelle der DataSource kann dann bei den Querys die SQLiteConnection zum Einsatz kommen.

$db = "PFAD_ZUM_ORDNER\db1.db"
$conn = New-SQLiteConnection @Verbose -DataSource $db
$conn.ConnectionString
$conn.State

Invoke-SqliteQuery -SQLiteConnection $conn -Query "SELECT * FROM user"

$conn.Close()
$conn.State

SQL-Injection umgehen mittels Parametern

_SQL-Injection bezeichnet das Ausnutzen einer Sicherheitslücke in Zusammenhang mit SQL-Datenbanken, die durch mangelnde Maskierung oder Überprüfung von Metazeichen in Benutzereingaben entsteht. Der Angreifer versucht dabei, über die Anwendung, die den Zugriff auf die Datenbank bereitstellt, eigene Datenbankbefehle einzuschleusen. Sein Ziel ist es, Daten auszuspähen, in seinem Sinne zu verändern, die Kontrolle über den Server zu erhalten oder einfach größtmöglichen Schaden anzurichten (Quelle: Wikipedia)_ Wie sieht das aber in der Praxis aus? Nehmen wir an das ein Programm Daten vom Benutzer einließt.

$vorname = Read-Host "Vorname"
$nachname = Read-Host "Nachname"
$gebdat = Read-Host "Geburtsdatum (YYYY-MM-DD)"

Würden diese Daten nun direkt in das Query eingegeben werden kann der Benutzer jede Zeichenkette zu einem SQL Befehl machen.

# SEHR SCHLECHT!!!!!! SQL-Injection anfällig!!!!!!!!!
$query = "INSERT INTO user(Firstname, Lastname, Birthdate) VALUES ('$vorname', '$nachname', '$gebdat')"

Gibt der Benutzer als Geburtsdatum dann etwas ein wie: 2016-10-10′); DROP TABLE user; — Dann wird aus dem obigen Befehl:

INSERT INTO user(Firstname, Lastname, Birthdate) VALUES ('xxxx', 'xxxx', '2016-10-10'); DROP TABLE user; --')"

Damit erzeugt das Statement einen Datensatz und löscht direkt darauf die Tabelle. Dies ist ein sehr destruktives Beispiel. In einem weniger schädlichen Szenario können damit weitere Datensätze erzeugt werden. Der richtige Weg ist die Nutzung von Parametern. Die SQLite Bibliothek übernimmt dann die Aufgabe der korrekten Maskierung von schädlichen Eingaben.

$query = "INSERT INTO user(Firstname, Lastname, Birthdate) VALUES (@firstname, @lastname, @birthdate)"
Invoke-SqliteQuery -SQLiteConnection $Script:Connection -Query $query -SqlParameters @{
  firstname = $vorname
  lastname = $nachname
  birthdate = $gebdat
}
Kali Linux auf dem Raspberry Pi

Mit Kali Linux steht eine der beliebtesten Linux Distributionen für das Penetration Testing, Netzwerkanalyse, Sniffing, Exploiting und weitere Sicherheitsanalysen für den Raspberry Pi zur Verfügung. Dank der Größe des Einplatinencomputers kann die Installation in die Rechenzentren an unterschiedlichen Standorten oder für die Vor-Ort-Analyse von Netzwerken mitgenommen werden.

Kali Linux installieren und nutzen

Kali.org stellt unter Installation von Kali ARM auf einem Raspberry Pi einen kleinen Artikel zur Installation bereit. Dort wird jedoch auf einem bestehenden Linux System als Basis aufgesetzt. Die Installation aus Windows heraus ist jedoch ebenso einfach.

Die Artikel auf meiner Einkaufsliste sind wieder eine gute Basis für den Einkauf der Komponenten für den Raspberry Pi 3.

Die Kali Linux Images für ARM Prozessoren sind auf der Download Seite zu finden.

Mit Hilfe des Win32DiskImager kann das Image auf die SD Karte kopiert werden. Die Software muss mittels Rechtsklick auf „Als Administrator ausführen“ gestartet werden. Danach wählt man das heruntergeladene ISO Image aus, gibt den korrekten!!! Laufwerksbuchstaben der SD Karte an und klickt auf „write“.

Nach dem Schreiben des Images auf die Karte ist die „Installation“ von Kali Linux erledigt. Die SD Karte muss nur noch in den Raspberry Pi gesteckt werden. Nach dem Anbringen der Stromversorgung sollte das System booten. Mit einem SSH Tool auf die IP Adresse erscheint die Anmeldemaske. Die Zugangsdaten lauten „root / toor“.

Notwendige Änderungen

Sowohl das Passwort als auch der SSH Host Schlüssel sind standardmäßig auf allen Systemen identisch. Diese müssen daher beide geändert werden! Der erste Schritt ist bereits in dem verlinkten Artikel beschrieben.

root@kali:~ rm /etc/ssh/ssh_host_*
root@kali:~ dpkg-reconfigure openssh-server
root@kali:~ service ssh restart

Die Änderung des Passwortes erfolgt mit dem bekannten passwd (Wenn passwd nicht bekannt ist sollte die SD Karte möglicherweise gleich wieder in den Müll wandern ;-)).

Wie es weiter geht

Mit der Linux Distribution sind nun eine Reihe von Programme für Analysen, Exploits und Penetration Tests installiert. In dem Artikel Securitysoftware und Scanner sind viele der Programme vorgestellt.

 

Bildquelle: KALI LINUX ™ is a trademark of Offensive Security.

Kali Linux Meme
Kali Linux Meme
Kali Linux
Kali Linux

Software Toolchains

Ich wurde bereits des öfteren gefragt welche Software ich für meine Anwendungen, Spiele und in der täglichen Arbeit einsetze. Je nach (Betriebs-)System und Einsatzzweck habe ich diverse Programme im Einsatz. Dabei setze ich auf ein Zusammenspiel von mächtigen professionellen Werkzeugen und Open Source Software (OSS).

Windows

Softwareentwicklung

  • WinMerge – Vergleichen von Dateien und Diff erstellen
  • .NET – Das .NET Framework
  • Microsoft ASP.NET MVC – Bibliothek für Model View Control ASP.NET Webseiten
  • Microsoft SQL Server – Datenbank von Microsoft
  • Microsoft Visual Studio – Entwicklungsumgebung für C# und viele weitere Sprachen
  • TortoiseSVN – Client für Subversion
  • Java Runtime Environment – Laufzeitumgebung für Java

Webentwicklung

  • Microsoft Visual Studio – Entwicklungsumgebung für C# und viele weitere Sprachen
  • Google Chrome – Browser von Google
  • Firefox – Browser der Mozilla Foundation
  • Fiddler – HTTP debugging proxy server Anwendung
  • FileZilla – FTP Programm für Datentransfer
  • Notepad++ – Extrem mächtiger Texteditor
  • Microsoft Visual Studio Code – Extrem mächtiger Codeeditor

Bildbearbeitung

  • Paint.NET – Zeichenprogramm
  • GIMP – Umfangreiche Bildbearbeitung
  • Inkscape – Bearbeitung von Vektorgrafiken/SVC Dateien
  • Adobe Photoshop – Das wohl beste Bildbearbeitungsprogramm (Abo über Cloud Photography Plan)

Sonstiges

  • VLC – Video- und Audioplayer für alle gängigen Dateiformate
  • Audacity – Audioberbeitung
  • Spotify – Musikstreaming
  • Microsoft Office – Office Paket von Microsoft
  • OpenOffice – Freies Office Paket
  • Adobe Reader – PDF Anezige
  • MiKTeX – Compiler und Pakete für LaTeX
  • TeXnicCenter – Editor für TeX/LaTeX
  • PDFCreator – PDF Erstellung
  • Avira – Antivirenprogramm
  • KeePass 2 – Passwortverwaltung
  • FreeMind – MindMap Erstellung
  • Dropbox – Cloud Datenspeicher
  • OneDrive – Cloud Datenspeicher
  • 7-Zip – Datenkomprimierung
  • WinRAR – Datenkomprimierung
  • Skype – Telefonie und Video über das Internet
  • Thunderbird – Mailclient
  • RD Tabs – Remotedesktop mit mehreren Tabs

Linux

Raspberry Pi

  • PuTTY – SSH Client für Windows

Ninite

Download der wichtigsten Tools über Ninite.

Großes Paket

.NET 4.6.1, Audacity, Avira, CDBurnerXP, Chrome, Dropbox, FileZilla, Firefox, GIMP, Google Drive, Inkscape, Java 8, KeePass 2, Notepad++, OneDrive, OpenOffice, Paint.NET, PuTTY, Skype, Spotify, Steam, Thunderbird, VLC, WinMerge, WinRAR

Kleines Paket

.NET 4.6.1, 7-Zip, Chrome, Dropbox, FileZilla, Firefox, GIMP, Inkscape, Java 8, KeePass 2, Notepad++, Paint.NET, PuTTY, Spotify, VLC, WinMerge

Lesenswert – Bücher – 2016

Bücher die inspirieren, neue Ideen bringen oder einfach lustig zu lesen sind.

Start-Ups und Beruf

The Lean Startup: How Constant Innovation Creates Radically Successful Businesses (Eric Ries) Lean Startup: Schnell, risikolos und erfolgreich Unternehmen gründen (Eric Ries) Mit einem minimum viable product schnell in den Markt drängen anstatt jahrelang im Keller am Markt vorbei entwickeln.

Silicon Valley: Was aus dem mächtigsten Tal der Welt auf uns zukommt (Christoph Keese) Eine Reise durch das Silcon Valley. Warum amerikanische Start-Ups so erfolgreich sein. Warum Facebook in Deutschland nicht möglich gewesen wäre und warum Plattformen in Zukunft viele Arbeitsplätze und Unternehmen abschaffen werden.

The Innovator’s Dilemma: When New Technologies Cause Great Firms to Fail (Management of Innovation and Change) (Clayton Christensen) The Innovators Dilemma: Warum etablierte Unternehmen den Wettbewerb um bahnbrechende Innovationen verlieren (Clayton Christensen) Warum Unternehmen früher oder später von schnellen und neuen Firmen überholt werden.

Mach es einfach!: Warum wir keine Erlaubnis brauchen, um unser Leben zu verändern (Ilja Grzeskowitz) Geld und Titel braucht es nicht um etwas zu bewegen.

Dein nächstes großes Ding: Gute Ideen aus dem Nichts entwickeln (Matthew Mockridge)

influence: The Psychology of Persuasion (Robert B., PhD Cialdini) Das Standardwerk über die Denkweise von Menschen und wie man diese beeinflussen kann.

Deutsch für junge Profis: Wie man gut und lebendig schreibt (Wolf Schneider) Gute Artikel werden immer seltener. Wolf Schneider schafft Abhilfe.

Das Escape-Manifest: Das Leben ist kurz. Steigen Sie aus. Kündigen Sie. Fangen Sie etwas Neues an. (Rob Symington) Ein Wegweiser zum Ausbrechen aus dem Hamsterrad.

Politik

Placebo-Politik: Warum Politiker alles tun, nur nicht das Nötige (Bernd Weiß) Der Titel sagt schon alles aus. Bern Weiß beschreibt aus der Innensicht was in der Politik alles falsch läuft bzw. überhaupt nicht angefasst wird und warum.

Leben

Ich breche aus!: Wie Sie in 21 Tagen den Alltag durchbrechen und entdecken, was wirklich wichtig ist (Michael Leister) An 21 Tagen das eigene Leben neu entdecken.

Romane

DAEMON: Die Welt ist nur ein Spiel (Die DAEMON-Romane, Band 1) (Daniel Suarez) Erschreckende nah an der Wirklichkeit. Ein tolles Buch über Technologie und deren Einsatz zur Kontrolle der Welt.

Witziges

Dilbert 2017 Day-to-Day Calendar (Scott Adams) Der Kalender der auf keinem Tisch fehlen darf. Jeden Tag ein neuer Comic.