April 26, 2019

[badvirus] Странный вирус

forensics 500

Перед решением ознакомьтесь с тасками Гостевой режим и Бэкдор.Вирус на компьютере Петра успешно работал лишь короткий интервал времени, однако хакеры успели получить достаточно тайных киберсекретов компании.Однако, они сами совершенно не позаботились о безопасности своих серверов. Поэтому скоро эти секреты получим и мы. Правда же?

Вспоминаем таск Backdoor. После декомпиляции видим, что кейлоггер отправлял POST-запрос с данными по адресу 45.77.142.82:31337/log:

Попытаемся зайти на главную страницу по этому адресу:

Видим, что хацкеры используют в качестве сервера БД для логов MySQL.

Попытаемся подключиться к их серверу БД. Для Windows и Linux команды одни и те же, достаточно просто установить MySQL. Мануалов в интернете полно.

Подключаемся к серверу БД:

mysql -h 45.77.142.82

И видим, что мы смогли подключиться:

Для начала, нам нужно узнать, какие БД есть на этом сервере:

SHOW DATABASES; # регистр не важен 

И получаем результат:

Первая БД нас не сильно интересует, а вот в keyes вероятно есть что-то интересное. Подключаемся к ней:

USE keyes;

Если ошибок не возникло, сразу же смотрим, какие таблицы в этой БД:

SHOW TABLES;

Видим следующую картину:

Таблица keyes — как раз то, что нам нужно. Выводим всё, что в ней есть:

SELECT * FROM keyes;

Получаем следующий результат:

В таблице keyes только две колонки: id, strokes.

Как видно, большинство символов закодированы в utf-8. Попробуем перевести пару строк:

>>> b'\xd1\x8b\xd0\xbc\xd0\xb5\xd0\xbc '.decode('utf-8')
'ымем '
>>> b'\xd1\x82\xd0\xbe\xd0\xbc\xd1\x81 '.decode('utf-8')
'томс '
>>> b' \xd1\x8c\xd1\x82\xd0\xb5\xd1\x80'.decode('utf-8')
' ьтер'
>>> b'\xd0\xb9\xd0\xb0\xd0\xbb\xd0\xbd\xd0\xbe'.decode('utf-8')
'йално'
>>> b'\xd0\xb7\xd0\xb5\xd0\xb1 \xd0\xbd'.decode('utf-8')
'зеб н'
>>> b'\xd0\xb8\xd0\xb3\xd0\xb5\xd1\x80 '.decode('utf-8')
'игер '
>>> b'\xd1\x86\xd0\xb0\xd1\x80\xd1\x82\xd1\x81'.decode('utf-8')
'цартс'
>>> b' \xd0\xb8 \xd0\xb8\xd0\xb8'.decode('utf-8')
' и ии'
>>> b'p \xd1\x81\xd0\xbc\xd1\x81'.decode('utf-8')
'p смс'

Понимаем, что нужно просто читать эти записи наоборот. Флаг у нас всегда пишется английскими буквами. Ищем такие строки в таблице:

Флаг: ugra_mysq1_1n53cur17y

ЗЫ: можно конечно написать скрипт, которые подключается к БД, считывает все строки, и декодит их. Кто это сделает тот молодец.