我很好奇,想知道是否有可能制作一个包含键盘记录器的 jpg 文件,该键盘记录器会在打开图像时执行。
我坚信这样的事情是不可能发生的,但是我听到越来越多的传言。有什么看法吗?
答案1
当您用来打开 JPG 文件(或任何其他文件)的应用程序存在安全漏洞时,这种情况就有可能发生,除非它是假的 JPEG 图像。
因此,有以下几种情况:
运行假 JPEG
缺乏经验的用户下载了文件并认为它是图像(因为图标看起来像图像,而操作系统不会显示扩展名),但它可能是任何可执行文件(
.exe
、.vbs
、.msi
、.cmd
、.bat
等)。因此,如果您的操作系统在您运行假图像文件时没有警告您,则该图像可能会在安装了键盘记录程序的情况下显示。因此,在打开可疑文件之前,请务必检查您的扩展名。打开 JPEG
任何媒体文件(和其他文件)都可能携带一些旨在欺骗特定应用程序的注入代码。它们在解析某些数据(例如 EXIF)时可能存在一些缺陷。因此,如果应用程序存在错误,注入的数据可能会诱使应用程序运行一些任意代码。
从服务器加载 JPEG
您可以将一些编程代码注入 JPEG,这样一旦它被 Web 应用程序解析,它就可以执行给定语言中的任何代码。例如,JPEG 文件可以包含特殊标签(
<?php
、?>
),当被来自 Web 托管公司的编码不良的应用程序解析时(file_get_contents()
、fopen()
、readfile()
),它可能会抹去您的 www 帐户。JPEG 示例:
php-logo-virus.jpg
该文件中嵌入了以下代码:
ÿØÿàJFIF``ÿáfExifMM* éV@HQQQ<style>body{font-size: 0;} h1{font-size: 12px !important;}</style><h1><?php echo "<hr />THIS IMAGE COULD ERASE YOUR WWW ACCOUNT, it shows you the PHP info instead...<hr />"; phpinfo(); __halt_compiler(); ?></h1>
因此,打开上图后,
view-source:
在地址前添加,这样你就会看到注入的 PHP 脚本。请注意,上图只是示例,它不会执行任何操作。加载非 JPEG 文件
当您看到以下链接时,例如:
http://www.example.com/foo.jpeg
,您会认为这是一张图片,但其实并非如此。这完全取决于其 MIME 类型,通过加载它,您实际上可以加载脚本(例如 Javascript),并且在易受攻击/较旧的浏览器上,可以安装键盘记录器。另一方面,您的浏览器不必太旧才能实现这一点。例如,你访问的页面是假银行网站,也可能是真正的银行(在某个论坛上有人上传了假的 JPEG跨站脚本)。因此,要实现 XSS Keylogger,您只需要
document.onkeypress
+ AJAX 调用。请参阅:XSS 键盘记录器另请检查:XSS 过滤规避备忘录
加载 JPEG,即 SVG
有时,当您加载媒体文件并且网络浏览器将其识别为不同的图像时,它会恢复到被识别的格式。您可以在 SVG 文件中执行的操作是,您可以将 html 和 JavaScript 包含在其中(如果您的网络浏览器允许),请参阅:在 SVG 中创建表格(和另一个)。
答案2
答案3
这不太可能。
更可能的是,这是一个可执行文件,其名称如下:image1.jpg.exe
。如果扩展名被隐藏,您将看到Image1.jpg
。
该程序的图标是 jpg 图像,启动程序后,它会将嵌入的图像提取到临时文件夹并启动它,以模拟正在打开的图像,而不会引起怀疑。然后,程序会安装键盘记录器。
但这不是嵌入键盘记录器的图像。它是一个伪装成嵌入键盘记录器的图像的程序,试图诱骗人们打开图像,就像间谍软件诱骗用户打开并自行安装一样。
答案4
一般来说,当您显示某种文件时,您会读取它并处理内容,以便正确显示(例如,读取图像数据并计算每个像素)。由于图像文件完全是静态的,并且其中包含的数据始终相似,因此图像查看器查找和处理的数据(如某些区域的颜色信息)极不可能作为恶意代码执行。