Віруси в PNG як видаляти?
- Показати, як важко буває знайти і придумати спосіб лікування вірусу. А часом, навіть видалення наслідків вірусу займає кілька годин, вже знаючи де і що він вразив. Часто клієнти думають, що все це робиться натисканням двох кнопок.
- Тим, хто зустрівся з подібною загрозою, пропоную даний приклад рішення.
Під час пошуку і видалення шкідливого коду зіткнулися з вірусами в картинках, віруси знаходять оригінальні місця і способи свого зберігання і проникнення. Однак нам належить ретельно видалити всі залишки шкідливого коду і нам знадобиться почистити і самі картинки. Починаємо розбирати проблему.
Відкриваємо бінарний код картинки і бачимо.
А ось як картинка виглядає в живу.
Як ми бачимо картинка цілком читана, але містить шкідливий код.
Оскільки картинки пошкоджені практично всі, видаляти тіло нам доведеться на основі регулярних виразів. При детальному огляді, файлів jpg png gif були знайдені модифікації вірусів. Якщо простіше говорити - не всі вони були однакові, а часом спеціально тіло вірусу видозмінюється кожен раз під час запису в нову картинку.
Змінюючи початок кінець, а так само назва змінних в своєму тілі. Що ускладнює його видалення.
Після пошуків це місце було знайдено. EXIF
Якщо вам це нічого не говорить, вірусу на це все одно. У двох словах це супутня інформація про фото. Де, на що вона була зроблена, умови зйомки і так далі.
З цього моменту картина прояснилася. Стало зрозуміло, що ніяка модифікація самої картинки не видалить код. Потрібно модифікувати сам EXIF.
Дивимося, що ж там написано і порівняємо з першої ж фото зробленої на фотоапарат.
А тепер наш файл.
Відмінно, ми знайшли код вірусу від початку до кінця, тепер навіть видозмінюваний вірус ми зможемо видалити, не пошкоджуючи сам файл. Залишається придумати як. Далі, відразу попереджу, ми не використовуємо звичайні хостинги, а використовуємо виключно орендоване обладнання в німецьких дата центрах, і доступ до серверів у нас повний ROOT SSH. Якщо ж ви використовуєте звичайний хостинг вам робота ускладниться.
Для якісного видалення нам знадобиться утиліта редагує EXIF. Нам цілком підійде exiftools.
Тепер нам потрібно вивчити exiftool. Після пошуків потрібного нам атрибута ми зупинилися на '-all ='
Отримуємо на виході
Створюємо регулярний вираз на основі вище знайденого.
Тим самим, бачимо чи є вірус у файлі.
Надалі не буду наводити безліч модифікацій регулярного виразу, опишу лише проблеми при його створення.
- Exiftools не повертає шлях до файлів які він відредагував.
- Cat + grep не бажають відкривати бінарники
- Exiftools створює копію файлу при його редагування.
- Потрібно виключити всі файли в exif яких немає вірусу і не чіпати їх.
- І т.д.
Загалом, ось сам скрипт, який враховує вже всі підводні камені, проте швидкість його роботи залишає бажати кращого, навіть при таких змінах він буде 300 сайтів проганяти не один десяток годин. Однак гарантує 100% видалення всіх вірусів з коректною роботою самої картинки. І в цей розрахунок не береться видалення залишився коду вірусу поза картинок.
Можна скоротити команду до більш зрозумілою.
актуально для Debian гілки.
find. - шукає все рекурсивно від поточного каталогу
-type f тільки файли
-regex регулярні вирази замість -name
-or дивитися так само
-exec запускає команду
<> - все що передала попередня команда при переборі
exiftools -all = (в кінці обов'язково пробіл) - стирає дані exif
rm - видаляє файл що залишається exiftool після змін.
Також, при лікування, варто враховувати, що видалити потрібно сам вірус, його наслідки, шелл скрипить вірусу, до того ж всі їхні копії. Віруси по одному не ходять, так що продовжуємо шукати ще віруси, до повної впевненості в їх відсутності.
Детальніше про сам вірус можна знайти в інтернеті. Я ж показую як видалити його з картинок.