Історія одного злому або чим погані ftp

Сайт крутиться на одній комерційній CMS написаної на php, досить популярної, але трохи (багато?) «Кривий». Кривизна полягає в змішуванні логіки та інтерфейсу, зберігання частини коду в бд і подальшому виконанні через eval, використанні plain-sql запитів і інших радощів, «полегшують» життя програмістів. Вихідний код CMS здатний увергнути в трепетний жах навіть досвідченого кодера: багатокілометрові функції з безліччю умов неменшою довжини, глобальні змінні, eval-и і купа інших принад чекають зазирнув сюди сміливця. Незважаючи на жахливу програмну архітектуру, админка CMS достатня продумана - створюється враження, що ТЗ на систему писав профі, а реалізовував студент. Дізналися використовувану вами CMS? Співчуваю ...

Заглянувши в основний шаблон сайту, я відразу виявив підключення в футере підозрілого скрипта:

Вихідний код скрипта footer.php:

Було очевидно, що це шкідливий код і що сайт використовується як майданчик для розміщення платних посилань. Причому зломщики подбали про те, щоб власники сайту не побачили лівих посилань: посилання відображалися для всіх, крім відвідувачів з IP Єкатеринбурга (сайт знаходиться в регіоні Єкатеринбург). Як же власникам сайту вдалося побачити посилання? Виявилося що сервіс, який зловмисники використовували для визначення міста по IP, просто перестав працювати. Точніше почав видавати 404 помилку (тест: ip-whois.net/ip_geo.php?ip=212.104.72.58)

Прибравши з шаблону шкідливий інклуд, я взявся за файл logo.png, який був звичайно ніякий не картинкою, а справжнісіньким php-кодом. Исходник logo.png: pastebin.com/cTsgW2RU.

Бачимо що скрипт закодований і стиснутий і два виклики:

Вийшов досить довгий масив: pastebin.com/xyqJVfmV
Після цього я накидав простенький декодер, який замінює всі виклики функції _527006668 на відповідний елемент масиву $ a: pastebin.com/RxVyACiS
Результат прогнав через phpbeautifier.com: pastebin.com/wvw1mJA5

Теги як би натякають, тому я пішов на сайт sape.ru, скачав їх API для веб-майстра і виявив, що наш зловредів це трохи модифікований код sape. А конкретно, були замінені назви класів, назви файлів і список серверів, з яких скрипт отримував посилання.

Список серверів зловреда:

  • dispenser-01.strangled.net
  • dispenser-02.us.to
  • dispenser.amursk-rayon.ru

Перші два використовуються для виведення звичайних і контекстнихх посилань, третій для виведення статей. Всі три сайти перебувають на доменах третього рівня, і мене зацікавило, що це за домени такі. Я прогнав їх через сервіс who.is і отримав список DNS-серверів доменів.

Перевірка dispenser-01.strangled.net і dispenser-02.us.to:

На цьому дослідження зловреда було вирішено припинити, але бажаю дізнатися, чи не стикався чи хтось ще з подібною проблемою, я пішов і загугли "TRUSTLINK_client". Гугл знайшов 4 сайта на яких TRUSTLINK_client зламався і php вивів повідомлення про помилку. Скільки сайтів зламано і справно працює, приносячи прибуток власникам зловреда і збитки своїм господарям залишається тільки здогадуватися.

Залишалося з'ясувати, яким шляхом шкідливий код потрапив на сайт. Спочатку у мене було три гіпотези:

  • власники сайту посіяли паролі від ftp / ssh (вірус на комп'ютері, потрапляння в паблік і т.п.)
  • підбір паролів до ftp / ssh перебором
  • вразливість в ПО сервера

Де звична дата / час? Не зрозуміло…
Відкрив лог-файл виду @<цифры-буквы-бла-бла-бла>.s:

Схоже на спроби підбору пароля, але впевненості немає. Швидке гугленіе за форматом лог-файлу результату не принесло. Запитувати у знавців на форумах було лінь, тому вирішив просто взяти за аксіому припущення про те, що був підібраний пароль до ftp.

Отже, шкідливий код вичищений, залишилося убезпечити себе від спроб підбору паролів в майбутньому:

Чого я не зробив, але варто було б? По хорошому слід було б відключити ftp, а замість нього іспользровать sftp. Але на сайт вивантажують дані сторонні програми, які нічого крім ftp не вміють. Ще варто було б завести код на сайті під git. Але в умовах, коли чимала частина коду зберігається в БД, це не врятує від несанкціонованого измения коду.

Можливо я упустив щось ще, буду радий будь-яких пропозицій і конструктивної критики. І нехай будуть ваші сервера в безпеці! І нехай не зламає вас хакер!

Схожі статті