MAYHEM - багатоцільовий бот для * NIX-серверів. Розслідування Яндекс.Безопасності

    Ботнети із заражених серверів під управлінням ОС на базі * nix стають все більш популярними у зловмисників. Широкий канал, відмінний uptime і потужне залізо роблять сервера привабливою метою для зараження. Прийнято вважати, що для повноцінного зараження * nix-системи потрібно володіти правами root. Однак зловмисники вигадують все нові і нові способи вилучення з зараженого сервера максимуму користі, задовольняючись при цьому маленькими привілеями. У цьому пості ми розповімо про досить нестандартному ботнеті під назвою MAYHEM, що складається із заражених серверів.
 
 
 
Спочатку MAYHEM являє собою php-скрипт, який після запуску визначає архітектуру системи (x86 або x64) і наявність прав на запис в поточну директорію. Ці привілеї в переважній більшості випадків є у користувача, під яким запущений веб-сервер, і в даному випадку їх достатньо для роботи бота.
 
 
 
Після php-скрипт вбиває всі запущені під поточним користувачем процеси "/ usr / bin / host", витягує з себе shared object для потрібної архітектури (x86 або x64) і запускає процес "/ usr / bin / host" з підвантаженням в нього shared object за допомогою техніки LD_PRELOAD.
 
Техніка LD_PRELOAD досить добре описана. Вона дозволяє завантажити shared object в адресний простір процесу раніше оригінального виконуваного файлу. Також ця техніка дозволяє здійснювати підміну функцій, наприклад, стандартної бібліотеки. Коротенько, якщо підвантажуємий через LD_PRELOAD об'єкт експортує якусь функцію, яка збігається з функціями з інших shared objects, то буде використовуватися саме ця функція.
 
Таким чином, техніка LD_PRELOAD дозволяє з легкістю перехоплювати функції, чим і користуються зловмисники. У даному випадку шкідливий об'єкт перехоплює функцію "exit".
 
Після старту і одержання керування шкідливий shared object видаляє змінну оточення LD_PRELOAD і своє тіло з диска, а потім робить ще кілька антіотладочних прийомів. У результаті на диску не залишається практично ніяких слідів його присутності.
 
Далі, якщо все в порядку, відбувається розшифрування конфігурації, яка знаходиться в сегменті даних цього об'єкта. Конфігурація шифрується за допомогою алгоритму XTEA (32 раунду) в режимі ECB.
 
 
  
У конфігурації міститься всього три параметри: URL командного сервера (С & C), ім'я файлу з прихованою файлової системою і розмір прихованої файлової системи.
 
Після початкового налаштування бот визначає, чи створена вже прихована файлова система. Якщо ні, він створює її. Прихована файлова система являє собою образ диска з файловою системою FAT, кожен блок якої шифрується алгоритмом XTEA (32 раунду, режим ECB). Робота з FAT відбувається за допомогою open source бібліотеки FAT 16/32 File System Library , а ключі шифрування виробляються з номера блоку у файловій системі і залежать тільки від цього номера. Дана файлова система використовується для зберігання службових файлів і плагінів бота.
 
 
  
Якщо файлова система успішно инициализирована або була створена раніше, бот переходить до своїх основних функцій. Спочатку він оповіщає командний сервер (C & C) про початок роботи і далі отримує і виконує його команди: викачує потрібний плагін і завдання до нього, створює деяку кількість робочих потоків і приступає до виконання завдання.
 
Як вже було сказано раніше, бот розширює свою функціональність за допомогою плагінів. У ході дослідження нам вдалося виявити і проаналізувати деякі з них. Набір плагінів дозволяє ботнету виконувати наступні завдання:
 
 
     
  1. Пошук сайтів, уразливих до Remote File Inclusion (RFI). На скріншоті показаний шматочок списку, який використовується для тестування сайту.
     
     
     
     
  2.  
  3. Визначення імен користувачів для сайтів на базі Wordpress CMS. Бот отримує від командного сервера список сайтів під управлінням Wordpress і в процесі роботи отримує для кожного такого сайту список зареєстрованих користувачів. Робиться це за допомогою запиту наступного вигляду:
    <адрес сайта>/?author=<ID пользователя>
    . ID користувачів перебираються в діапазоні від 1 до 5. Надалі зібрані дані використовуються для підбору паролів.
  4.  
  5. Пошук сторінок авторизації для сайтів на Joomla і Wordpress. Бот отримує від C & C список сайтів і в процесі роботи намагається отримати сторінки / wp-login.php або / administration /. У разі успіху він повертає командному сервера список сайтів, на яких дані сторінки були знайдені.
  6.  
  7. Перебір паролів до сторінок авторизації CMS і ISP-панелей. Цей плагін налаштовується за допомогою гнучкої системи правил і дозволяє перебирати паролі для практично будь-яких сторінок авторизації. Приклад налаштування цього плагіна можна побачити на скріншоті нижче.
     
     
     
    Для перебору зловмисники використовують словник, що складається з 17 911 паролів з довжинами від 1 до 32 символів. Хмара з цих паролів служить заголовної картинкою до цього посту.
  8.  
  9. Пошук сторінок із заданою тематикою. Плагін отримує список сайтів, обходить їх рекурсивно (глибина обходу задається в конфігурації) і збирає адреси сторінок, які задовольняють певному набору правил. Приклад такого набору правил представлений на скріншоті нижче.
     
     
     
     
  10.  
  11. Плагіни для перебору паролів FTP-акаунтів, плагіни для обходу діапазонів IP-адрес, пошуку phpMyAdmin і так далі.
  12.  
  13. Окремо варто зупинитися на плагіні для експлуатації уразливості HeartBleed. Незважаючи на те, що багато системні адміністратори вже оновили OpenSSL, в інтернеті все ще залишається досить велика кількість вразливих серверів.
  14.  
Таким чином, модульна структура дозволяє використовувати ботнет для самих різних завдань. Окремо зупинимося на C & C. У ході досліджень нам вдалося виявити три різних командних сервера. Один з них вже не функціонував, а інші два використовувалися для управління більш ніж 1400 ботами.
 
Ми проаналізували найбільш великий з двох командних серверів. Загальний вигляд системи управління ботнетом виглядає так:
 
 
 
Під управлінням цього сервера працювало близько 1100 ботів. Розподіл заражених серверів по країнах можна подивитися на карті нижче. Більш темний тон означає більшу кількість заражених серверів.
 
 
 
Таким чином, основну частину ботнету становили сервера, розташовані в Росії, США, Німеччині та Канаді.
 
А ось так виглядає інтерфейс, що дозволяє дати завдання всьому ботнету або окремим групам ботів:
 
 
 
У момент дослідження даний ботнет займався перебором паролів для адміністративної частини сайтів на базі Wordpress CMS. На картинках нижче показано прогрес виконання завдання і частину файлу з підібраними паролями — звіту про виконану роботу.
 
 
 
 
 
Як видно, користувачі використовували слабкі паролі нестійкі до перебору.
 
Таким чином, для створення ботнету із заражених серверів аж ніяк не обов'язково отримувати доступ до сервера з правами root. Зловмисники постійно вигадують нові способи ефективного використання вразливих сайтів і серверів. На сьогоднішній день вони вже готові задовольнятися навіть малими привілеями в системі. Враховуйте це при адмініструванні своїх серверів і розробці веб-додатків, використовуйте стійкі до перебору паролі, регулярно оновлюйте OpenSSL і стежте за безпекою своїх веб-додатків.
 
Бережіть своїх користувачів і свої веб-сервери.
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.