Чи дійсно ви можете отримати троян у файлі зображень, і якщо так, як він буде виконаний?


11

Я щойно оцифрував пару грамплатівок і мені знадобилося трохи обкладинки. Мій сканер недостатньо великий для сканування альбому, тому я шукав і завантажував зображення з мережі.

Коли я це зробив, Avast повідомив, що в одному з них міститься троян "Win32: Hupigon-ONX" і негайно поставив його під карантин. Не бажаючи ризикувати, я завантажив іншу копію, яка повідомила як чисту.

Тепер це був лише хибний позитив від Avast чи міг насправді бути троян у jpg?

Якби це було, як це було б виконано?

Треба визнати, що цей аспект троянів і вірусів мене завжди здивував. Як розробник програмного забезпечення я завжди перевіряв довжину масивів тощо, тому не бачу, чому такі речі, як перевищення буфера, повинні відбуватися. Я розумію, що люди роблять куточки і роблять помилки, і якщо програмне забезпечення досить складне, ці помилки можуть проскочити.

Відповіді:


11

Експлуатуючи файли зображень, використовуйте недоліки перевищення буфера в коді обробки зображень ОС. Кілька років тому в шарі GDI Windows було виявлено кілька суттєвих таких недоліків - патчі були випущені давно, але образотворчі зображення все ще існують або просто тому, що вони залишилися, або в надії, що вони потраплять на машину, яка ще не була зафіксована. .

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

Сучасні процесори мають захист, який зупиняє більшість цих подвигів, якщо код підтримує його. Це працює програмою / бібліотекою, чітко позначаючи, які з її сторінок є даними, а які - кодом - процесор створить виняток, якщо що-небудь із того, що має бути даними (наприклад, зображення даних), намагається виконати як код. IIRC Vista і новіші версії та новітні версії .Net перепрофілювали всі свої бібліотеки, щоб підтримати цей захист, і він підтримується і іншими ОС, але це не зупиняє всіх таких подвигів і працює лише у тому випадку, коли явно увімкнено (інакше багато старого коду зламається).


9

Треба визнати, що цей аспект троянів і вірусів мене завжди здивував. Як розробник програмного забезпечення я завжди перевіряв довжину масивів тощо, тому не бачу, чому такі речі, як перевищення буфера, повинні відбуватися.

Ну, ласкаво просимо в реальний світ ;-). Буфер переповнює & c. може статися в багатьох мовах (особливо в тих , з ручним керуванням пам'яттю , як C), і , як розробники роблять помилки, вони дійсно трапляються.

Хоча звичайно переповнення буфера буде просто руйнувати програму (порушення сегментації чи подібне), це може дозволити зловмиснику виконувати код -> активований троянець.

Наприклад:

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories/35216/

А для пояснення, як це дозволяє виконувати код:

/programming/460519/how-are-buffer-overflows-used-to-exploit-computers


Я знаю, що вони трапляються - це просто одна з основних перевірок, яку я завжди робив під час обробки даних - перевірити, чи є у мене / виділилося достатньо місця для даних.
ChrisF

@ChrisF, те, що вам потрібно забезпечити перевірку (на відміну від "комп'ютера", - це сама проблема.
Забба

@Zabba, що я мав на увазі, що я "кодую програму для перевірки" під час обробки даних.
ChrisF

3

Був експлойт, який перекрив буфер на розбитій бібліотеці JPEG, яка могла запустити довільний код у 2006 році. Microsoft випустила патч, щоб виправити його швидше, ніж я коли-небудь бачив. Ваша машина майже напевно не вразлива, і Хупігон зараз створює занадто багато помилкових позитивних результатів.

http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?name=Win32/Hupigon


2

Треба визнати, що цей аспект троянів і вірусів мене завжди здивував. Як розробник програмного забезпечення я завжди перевіряв довжину масивів тощо, тому не бачу, чому такі речі, як перевищення буфера, повинні відбуватися. Я розумію, що люди роблять куточки і роблять помилки, і якщо програмне забезпечення досить складне, ці помилки можуть проскочити.

Можливо, ви перевіряєте всі ваші покажчики, масиви тощо. Але ви впевнені, що всі програмісти будь-якої бібліотеки 3-го патрі, яку ви (можливо) використовуєте (колись), теж зробили?

Найпростішим рішенням для цього було б завантаження файлу на зразок "image.jpg.exe" або чогось подібного замість реального зображення.

Тут уже описані більш просунуті способи зараження вашого ПК (наприклад, переповнення буфера, ...)


1
Щоправда - але я змінюю параметри папки, щоб показувати розширення. Я впевнений, що приховування відомих розширень викликало більше проблем, які він вирішує. Насправді я не можу придумати проблему, яку вона насправді вирішує.
ChrisF

full ack - це один з перших варіантів, які я
активую

@ChrisF: Очевидно, що проблема, яку вона вирішує, полягає в тому, що в іншому випадку користувачі можуть випадково змінити розширення файлу, перейменувавши його. Це викликає звичну проблему "Піктограма мого документа виглядає смішною, і я більше не можу його відкрити. Допомога!" :-) (і так, інколи я роблю технічну підтримку для своєї родини).
sleske

@sleske - Windows 7 не вибирає розширення під час перейменування файла.
ChrisF

1
@ChrisF: Цікаво, я не знав цього. Раніше це було інакше - принаймні Windows Server 2003 для перейменування вибирає ціле ім'я. І в будь-якому випадку, якщо користувачі зможуть редагувати розширення, вони :-).
sleske
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.