IFEO 映像文件劫持
“映像劫持”,也被称为“IFEO”(Image File Execution Options)
映像劫持的根本就是被恶意篡改了注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options项。
比如如在这里新建一个子项notepad.exe,再在这子项里新建一个REG_SZ的名字为Debugger,内容为cmd.exe的值项。这样就会实现映像劫持了,这样你每次用记事本的方式打开文本文件时,却打开的是命令提示符的窗口。
Debugger参数的本意----(本段摘自百度百科)
是为了让程序员能够通过双击程序文件直接进入调试器里调试自己的程序,曾经调试过程序的朋友也许会有一个疑问,既然程序启动时都要经过IFEO这一步,那么在调试器里点击启动刚被Debugger参数送进来的程序时岂不是又会因为这个法则的存在而导致再次产生一个调试器进程?微软并不是傻子,他们理所当然的考虑到了这一点,因此一个程序启动时是否会调用到IFEO规则取决于它是否“从命令行调用”的,那么“从命令行调用”该怎么理解呢?例如我们在命令提示符里执行taskmgr.exe,这就是一个典型的“从命令行调用”的执行请求,而我们在点击桌面上、普通应用程序菜单里的taskmgr.exe时,系统都会将其视为由外壳程序Explorer.exe 传递过来的执行请求,这样一来,它也属于“从命令行调用”的范围而触发IFEO规则了。为了与用户操作区分开来,系统自身加载的程序、调试器里启动的程 序,它们就不属于“从命令行调用”的范围,从而绕开了IFEO,避免了这个加载过程无休止的循环下去。由于Debugger参数的这种特殊作用,它又被称为“重定向”(Redirection), 而利用它进行的攻击,又被称为“重定向劫持”(Redirection Hijack),它和“映像劫持”(Image Hijack,或IFEO Hijack)只是称呼不同,实际上都是一样的技术手段。
这种手段还是非常危险的,如果劫持了杀软,那么你打开杀软的瞬间,其实就是打开的恶意程序。也可以劫持一些doc文档之类的,欺骗用户,同时也能屏蔽杀软,让它运行不起来。
当然这个手段的解决办法也十分简单,那就是改一下文件名,应用程序就又能使用了,然后去修改恢复注册表项。
下面是实际的实现:
目标程序:Server.exe 是自己写的一个mfc小程序

劫持之前:

执行映像劫持之后:


此时双击Server.exe 出来的就不是原来的程序,而是计算器。

修改文件名,和删除注册表项都可以解决这个问题。
其实就是简单的注册表操作,但是功能很强大,也比较脆弱。
附上源码:
#include "stdafx.h" #include <windows.h>
#include <stdio.h> int main()
{
WCHAR DllFullPath[MAX_PATH] = L"calc.exe";
DWORD Value = ;
HKEY hKey;
DWORD dwDisposition;
LPCTSTR SetData = L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\Server.exe";
if (ERROR_SUCCESS == RegCreateKeyEx(HKEY_LOCAL_MACHINE, SetData, , NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition))
{
if (ERROR_SUCCESS == RegSetValueEx(hKey, L"Debugger", NULL, REG_SZ, LPBYTE(DllFullPath), sizeof(DllFullPath)))
{
printf("Image hijacking Success!\n");
}
}
getchar();
RegCloseKey(hKey);
return ;
}
IFEO 映像文件劫持的更多相关文章
- 无需转化直接使用ESD映像文件安装系统简明教程
原版系统ISO镜像的sources文件夹中包含install.wim映像文件,将这个WIM文件“解压”(官方术语“Apply”)后,可以看到和C盘的目录完全相同,即为系统文件. 而官方提供的原版ESD ...
- VMware Workstation虚拟机使用ISO映像文件
VMware Workstation虚拟机使用ISO映像文件 VMware Workstation虚拟机使用ISO映像文件
- 映像文件工具srec
目录 映像文件工具srec 介绍与帮助 常用例子 常用选项 一个实际的例子 hex转bin 数据填充 文件合并 文件分割 加入CRC 查看信息 使用命令集合的文本 详细文件格式的描述 附录:MDK的例 ...
- bochs模拟器创建映像文件 、写入文件并启动
安装 bochs,dd for windows,nasm,并将安装目录加入到环境变量中. 我用的bochs版本是2.6.8 1.用 bochs 中 bximage.exe 创建新的 img 文件 2. ...
- 虚拟机安装及ubuntu-16.04.3-desktop-amd64.iso映像文件的安装
虚拟机安装及ubuntu-16.04.3-desktop-amd64.iso映像文件 搞了大半天才搞清楚装linux的前提是要先安装虚拟机的 先下载虚拟机,在然后创建虚拟机,在虚拟机里面再安装linu ...
- [转载]在VirtualBox中收缩虚拟磁盘映像文件
原文地址:在VirtualBox中收缩虚拟磁盘映像文件作者:bobby 由于经常要测试一些软件,我在VirtualBox虚拟机中安装了一套Windows.使用过虚拟机的朋友都知道,为了节省硬盘空间,一 ...
- Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.
Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img. 2014年10月20日 ⁄ 计算机视觉 ⁄ 共 1 ...
- 解决wubi安装ubuntu时要下载系统映像文件问题
转载:一个人的旅行的博客(http://www.cnblogs.com/rollenholt/articles/2607433.html) 下面我介绍解决wubi安装ubuntu时要去官网下载系统映像 ...
- C语言程序经过编译链接后形成二进制映像文件的组成
C语言程序经过编译链接后形成二进制映像文件由栈,堆,数据段,代码段组成,其中数据段又分为:只读数据段,已经初始化读写数据段,未初始化数据段(BSS段).如下图所示: 1.栈区(stack):由编译器自 ...
随机推荐
- OpenStack基础知识-单元测试工具介绍
针对以前学的内容的一个简单整理 1.单元测试工具介绍 unittest: 是 Python 的标准库,提供了最基本的单元测试功能,包括 单元测试运行器(简称runner) 和 单元测试框架.项目的单元 ...
- JS的几条规则
总结一下,有这么几条规则需要遵守: 不要使用new Number().new Boolean().new String()创建包装对象: 用parseInt()或parseFloat()来转换任意类型 ...
- Python实现返回指定范围内的所有素数
# 获取a, b范围的所有素数 def func(a, b): li = [] for i in range(a, b+1): for j in range(2, i): if i % j == 0: ...
- 洛谷P1932 A+B A-B A*B A/B A%B Problem
P1932 A+B A-B A*B A/B A%B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 由于数据有修改,减法运算结果可能带负号! 输入输出格式 输入格式 ...
- 洛谷P1092 虫食算
P1092 虫食算 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: http://paste.ubuntu.com/2544 ...
- [转] 出现( linker command failed with exit code 1)错误总结
这种问题,通常出现在添加第三方库文件或者多人开发时. 这种问题一般是找不到文件而导致的链接错误. 我们可以从如下几个方面着手排查. 1.以如下错误为例,如果是多人开发,你同步完成后发现出现如下的错误. ...
- STP-15-PortFast端口
PortFast是大家熟知的传统STP和PVST+改进特性,它也是RSTP和MST中标准化的增强特性.实质上,它定义了个一个边界端口.边界端口在启用之后立刻进入转发状态,不产生拓扑变化事件,不会因为处 ...
- java文件操作文件之csv
直接上代码: @Test public void dowrite(){ String filePath = "D://test.csv"; try { File f = new F ...
- CCF201809(Java)
第一题: 问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店都自己定了一个价格.店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自 ...
- Floyed-Warshall算法(求任意两点间最短距离)
思路:感觉有点像暴力啊,反正我是觉得很暴力,比如求d[i][j],用这个方法求的话,就直接考虑会不会经过点k(k是任意一点) ,最终求得最小值 看代码 #include<iostream> ...