Сышышь ты, выходи сюда,
поговорим !

Вниз по RogueAV і кролячій отвір Blackhat SEO (частина 2)

У цьому щоденнику я продовжую аналіз PHP-скрипта, який хлопці RogueAV використовують на своїх веб-серверах. Ви можете прочитати перший щоденник у http://isc.sans.edu/diary.html?storyid=9085 .

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

Заражає весь сайт

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

Інфекція складається з вставки одного рядка на початку кожного файлу PHP, як показано нижче:

Інфекція складається з вставки одного рядка на початку кожного файлу PHP, як показано нижче:

Цей рядок (який я навмисно скоротив) містить невеликий PHP-скрипт, який просто кодується Base64. Отже, коли будь-яка веб-сторінка на веб-сайті з компрометованим доступом доступна, скрипт нападників на PHP буде виконаний першим! Нижче наведено розшифрований сценарій:

Нижче наведено розшифрований сценарій:

Розшифрована частина показує, що зловмисники роблять:

  1. Якщо глобальна змінна msfn не встановлена ​​і існує функція ob_start (це стандартна функція PHP), виконується наступний код.
  2. Глобальна змінна встановлюється вказувати на головний скрипт PHP (той, про який ми говоримо - називається style.css.php у цьому прикладі). Зверніть увагу, що він може бути де-небудь на диску, доки процес Apache має доступ до нього.
  3. Якщо файл існує, він включений. Це змушує головний PHP-скрипт виконувати і виконувати основну обробку. Я розгляну цей процес виконання в наступних щоденниках.
  4. Якщо головний PHP-скрипт працював правильно, він буде визначати функції gml і dgobh, так що останній рядок може виконуватися. Це частина, яка фактично відображає оригінальні веб-сайти і, при необхідності, додає посилання на пошукові системи - це я розглянув у попередньому щоденнику.

Таким чином, зловмисники переконалися, що їх сценарій буде виконуватися кожного разу, коли буде доступний інший PHP-скрипт на скомпрометованому веб-сайті. Це дозволяє їм мати необмежену свободу у використанні різних URL-адрес для отруєння пошукових систем, а також для перенаправлення користувачів на сайти, що обслуговують RogueAV (або будь-який інший зловмисне програмне забезпечення). Очищення веб-сайту після такої інфекції не надто складно - все, що вам потрібно зробити, це видалити перший рядок, але, як і будь-яка інфекція або компроміс, я б рекомендував відновити файли з резервних копій (ви їх робите, правда?).

Якщо вам цікаво, як зловмисники вставляють цей рядок у кожен файл PHP, відповідь проста - спеціальна функція в майстер-PHP-скрипті опікується цим. Він рекурсивно обходить всі каталоги, знаходить будь-які файли PHP і, якщо він може змінювати їх, вставляє рядок на початку. Після того, як зловмисники встановлять головний скрипт PHP (style.css.php), все, що він повинен зробити, це викликати скрипт з правильним параметром, як ви можете бачити на скріншоті нижче:

php), все, що він повинен зробити, це викликати скрипт з правильним параметром, як ви можете бачити на скріншоті нижче:

Цей інтерфейс захищений паролем, тому ви не можете отримати доступ до нього безпосередньо, не пройшовши аутентифікацію. Для тих, хто цікавиться, існує також функція, яка очищає весь сайт (параметр dgr = 1, ймовірно, для видалення), але доступ до нього також захищений паролем.

Налякані інші нападники?

Майстер PHP скрипт складається з десятків функцій, які займаються різними завданнями. Сьогодні я охоплюю першу пару рядків, які виконуються, оскільки вони відносно цікаві. Нижче наведено код PHP:

Нижче наведено код PHP:

Цей код робить щось цікаве. Він приймає вміст суперглобалів $ _GET, $ _POST і $ _COOKIE, які містять параметри запиту та (звичайно) вміст cookie. Потім код трохи перетасовує вміст, перетворює його на весь нижній регістр і виконує на ньому urldecode. Це дозволить нормалізувати будь-який вміст (наприклад,% 61 буде перетворено на нижній регістр a).

Нарешті, код порівнює цей вміст з будь-яким рядком у рядку 12: 'base64', 'user_pass', 'substring (', 'або id =', 'eval (', 'nutch', '_ users', 'union') \ t all ',' mid (').

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

І з цим ми підходимо до кінця другого щоденника. У наступному щоденнику я перейду до деяких просунутих функцій PHP скрипта, таких як автоматичне оновлення, а також інтерфейс адміністраторів. Звичайно, ви можете зв'язатися з нами, якщо у вас виникнуть питання.

-
Боян
INFIGO IS

Я буду навчати наступного: Тестування проникнення через веб-застосунок та етичний злом - SANS Ер-Ріяд, квітень 2019 року

Html?
Ви їх робите, правда?
Налякані інші нападники?