Можно ли вставить кейлоггер в изображение JPG?

16391
Obsrv_

Мне любопытно узнать, возможно ли создать файл jpg, содержащий кейлоггер, который будет выполняться при открытии изображения.

Я твердо верю, что это невозможно, однако я все больше слышу об этом. Какие-нибудь мысли?

0
security.stackexchange.com дубликат: [Как внедрить исполняемый, вредоносный код в PDF, JPEG, MP3 и т. д .?](http://security.stackexchange.com/q/8113) DavidPostill 8 лет назад 5

4 ответа на вопрос

6
kenorb

It is possible when there is a security hole in the application which you are using to open JPG file (or any other file), unless it's fake JPEG image.

So there are few scenarios:

  • running fake JPEG

    Non-experienced user downloaded file and thinks it's the image (because the icon looks like an image and OS doesn't show you extension), but it could be any executable file (.exe, .vbs, .msi, .cmd, .bat, etc.). So if your operating system doesn't warn you when you run fake image file, the image could be shown with keylogger installed. So always check your extension before opening suspicious files.

  • opening JPEG

    Any media file (and other) could carry some injected code designed to trick specific applications. They could have some flaws in parsing some data (e.g. in EXIF). So if application is buggy, the injected data could trick the application to run some arbitrary code.

    For example: Exploit:W32/JPG Vulnerability, Exploit:W32/JPG Vulnerability, MS04-028 exploit

  • loading JPEG from the server

    You could inject some programming code into JPEG, so once it's parsed by web application, it can execute any code in the given language. For example JPEG file can include special tags (<?php, ?>) and when parsed by badly coded application from the webhosting company (file_get_contents(), fopen(), readfile()), it could erase your www account.

    Example JPEG: php-logo-virus.jpg

    which has this code embedded into the file:

    ÿØÿàJFIF``ÿáfExifMM* éV@HQQQ<style>body h1</style><h1><?php echo "<hr />THIS IMAGE COULD ERASE YOUR WWW ACCOUNT, it shows you the PHP info instead...<hr />"; phpinfo(); __halt_compiler(); ?></h1>

    So once you open above image, add view-source: before the address, so you'll see the injected PHP script. Note that the above image is just the example, and it won't do anything.

    Source: Code injection – a simple PHP virus carried in a JPEG image

  • loading JPEG file which isn't JPEG file

    When you see the link such as: http://www.example.com/foo.jpeg, you think it's an image, but it doesn't have to. It all depends on its MIME type and by loading it, you actually can load the script (such as Javascript), and on vulnerable/old browser, could install a keylogger. On the other hand, your browser doesn't have to be old to achieve that.

    For example, you're visiting the page which is fake bank website, or can be real bank (with some forum where somebody uploaded fake JPEG via XSS). So to implement XSS Keylogger, you just need document.onkeypress + AJAX calls. See: XSS Keylogger

    Also check: XSS Filter Evasion Cheat Sheet

  • loading JPEG which is SVG

    Sometimes when you load media file and web-browser recognise it as different image, it fallback to the format which was recognised. And what you can do in SVG files, you can include html and JavaScript into it (if your web-browser allows that), see: Create a table in SVG (and another one).

Красиво покрыты и получены. Безусловно, хороший аргумент в пользу песочницы браузера. Frank Thomas 8 лет назад 1
3
grawity

Обычно это было бы невозможно. Файлы JPEG содержат только сжатые данные изображения; на самом деле они не содержат никаких частей, которые могли бы выполняться как программный код, и, конечно, не имели бы такого широкого доступа к системе.

Однако в программах есть ошибки. Более конкретно, некоторые из различных библиотек, используемых для распаковки данных JPEG, могут иметь ошибки, которые позволяют программе обманом запускать части данных в виде программного кода, часто используя переполнение буфера или аналогичную ошибку.


(Кроме того, некоторые другие форматы изображений плохо спроектированы и содержат исполняемый код по конструкции ... два наиболее известных примера - это WMF и PDF.)

Хм. [Внедрение кода - простой вирус PHP, переносимый в виде изображения JPEG] (http://php.webtutor.pl/en/2011/05/13/php-code-injection-a-simple-virus-written-in-php -and-carry-in-a-jpeg-image /) - настоящий эксплойт, встроенный в изображение ... DavidPostill 8 лет назад 0
2
LPChip

Это маловероятно.

Это более вероятно, что это исполняемый файл, который называется такой как: image1.jpg.exe. Если расширения скрыты, вы увидите Image1.jpg.

У программы есть значок изображения jpg, и, запустив программу, она извлекает внедренное изображение во временную папку и запускает его, чтобы имитировать открываемое изображение и не вызывать подозрений. Затем программа устанавливает кейлоггер.

Но это не изображение со встроенным кейлоггером. Это программа, изображающая из себя изображение со встроенным кейлоггером, пытающаяся обманом заставить человека открыть изображение, точно так же, как и шпионское ПО, заставляющее пользователя открывать его и устанавливать самостоятельно.

Хм. [Внедрение кода - простой вирус PHP, переносимый в виде изображения JPEG] (http://php.webtutor.pl/en/2011/05/13/php-code-injection-a-simple-virus-written-in-php -and-carry-in-a-jpeg-image /) - настоящий эксплойт, встроенный в изображение ... DavidPostill 8 лет назад 1
Никогда не говори «Это невозможно», когда дело доходит до компьютеров;) DavidPostill 8 лет назад 0
@DavidPostill: хорошая мысль. это потребует эксплойтов и, следовательно, не будет работать в большинстве программ, но это делает его маловероятным, а не невозможным. Сообщение отредактировано. :) LPChip 8 лет назад 0
0
Jannis

В общем, когда вы отображаете какой-то файл, вы читаете его и обрабатываете содержимое, чтобы оно могло отображаться правильно (например, считывать данные изображения и вычислять каждый пиксель). Поскольку файл изображения полностью статичен и содержащиеся в нем данные всегда похожи, крайне маловероятно, что данные, которые программа просмотра изображений ищет и обрабатывает (например, информация о цвете в определенных областях), могут быть выполнены как вредоносный код.

Хм. [Внедрение кода - простой вирус PHP, переносимый в виде изображения JPEG] (http://php.webtutor.pl/en/2011/05/13/php-code-injection-a-simple-virus-written-in-php -and-carry-in-a-jpeg-image /) - настоящий эксплойт, встроенный в изображение ... DavidPostill 8 лет назад 0

Похожие вопросы