基于辅助功能的镜像劫持攻击原理

在杀毒软件日益完备的互联网中,那些大部分以加载系统启动项为主要攻击手段的的普通病毒和木马越来越难以攻破用户的防御屏障,但与此同时,有一些病毒却“剑走偏锋“,不仅绕过了杀毒软件的检测,还在隐藏自己的同时攻破了系统。这些病毒是如何抓住用户心理,一步步突破了用户系统。

接下来,通过本篇文章,美创第59号安全实验室将为大家剖析基于辅助功能的镜像劫持攻击原理,向大家展现还原这种攻击所带来的巨大危害以及防御手段。

0x01 辅助功能简介

所谓辅助功能就是在Windows系统中,我们可以使用多种组合键打开或关闭特定的功能,例如常用的win + ctrl + o打开屏幕键盘,win + u打开设置中心,连按5次shift打开粘滞键等等。

而且微软为了提高用户体验,非常‘贴心’的允许用户在登陆系统前也可以使用这些功能,根据这个特性,某些攻击者很可能通过远程桌面协议,在未授权的情况下运行这些功能,虽然这些功能是‘友好的’,没有危害性,但我们知道,这些功能之所以可以运行其实是在命令行里运行的系统指令罢了,例如

C:\WINDOWS\System32\Utilman.exe 打开设置中心
C:\WINDOWS\System32\sethc.exe 打开粘滞键
C:\WINDOWS\Syetem32\osk.exe 打开屏幕键盘

问题在于,如果我们在未登陆系统的情况下使用组合键运行的系统命令遭到篡改,本来应该打开‘十分安全’的辅助程序却被另一恶意程序代替执行,最终导致在用户不知情的情况下,获得系统权限,留下隐蔽后门

可如何才能使用户启动辅助功能的系统命令变成运行自己恶意软件的系统命令呢,这就要说到另一项技术:镜像劫持

0x02 镜像劫持简介

“镜像劫持”,又叫“映像劫持”,也被称为“IFEO”(Image File Execution Options),在Windows NT架构的系统里,IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。当一个可执行程序位于IFEO的控制中时,它的内存分配则根据该程序的参数来设定,而Windows NT架构的系统能通过这个注册表项使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等。大概微软考虑到加入路径控制会造成判断麻烦与操作不灵活的后果,也容易导致注册表冗余,于是IFEO使用忽略路径的方式来匹配它所要控制的程序文件名。

简单来说,当我想运行A.exe,结果运行的却是B.exe,也就是说在这种情况下A程序被B程序给劫持了,而映像劫持病毒就是通过修改某些注册表常用项的键值,达到在用户无意识的情况下想运行常用程序却让木马等恶意程序在后台运行的目的。

0x03 镜像劫持原理及实现

原理:
为了实现镜像劫持,需要先找到镜像劫持在注册表中的路径,“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ WindowsNT \ CurrentVersion \ Image File ExecutionOptions”

然而WINDOWS NT系统在试图执行一个从命令行调用的可执行文件运行请求时,会先检查运行程序是不是可执行文件,如果是的话,再检查格式,然后就会检查是否存在。由此我们发现,造成镜像劫持的罪魁祸首就是参数"Debugger",他是IFEO里第一个被处理的参数,如果该参数不为空,系统则会把Debugger参数里指定的程序文件名作为用户试图启动的程序执行请求来处理,而仅仅把用户试图启动的程序作为Debugger参数里指定的程序文件名的参数发送过去。

参数“Debugger”本来是为了让程序员能够通过双击程序文件直接进入调试器里调试自己的程序。现在却成了病毒的攻击手段。

让我们进行更深的思考,当更改的表项是杀毒软件所在的表项,会造成什么后果。毫无疑问,杀毒软件完全没办法工作,不仅绕过了杀毒软件还隐秘的执行了自己的恶意程序,一般用户根本想不到杀毒软件的注册表项会被篡改,这就进一步增加了攻击后可利用的时间。危害性不言而喻。

复现:
修改注册表的恶意代码:

#include <iostream>
#include <Windows.h>
using namespace std;int test(){DWORD dwDisposition;HKEY hKey;const char path[] = "C:\WINDOWS\System32\calc.exe";RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\chrome.exe", 0, NULL, 0, KEY_WRITE, NULL, &hKey, &dwDisposition);RegSetValueExA(hKey, "Debugger", 0, REG_SZ, (BYTE*)path, (1 + ::lstrlenA(path)));return 0;
}int main(){test();return 0;
}

恶意程序运行后,注册表中chrome.exe新增键值对Debugger=“C:\WINDOWS\System32\calc.exe”

注册表项遭到修改后,双击运行chrome运行,本该打开网页却打开了计算器程序,因为系统优先执行了”C:\WINDOWS\System32\calc.exe”。造成了镜像劫持攻击。

0x04 基于辅助功能实现镜像劫持原理及实现

安全从业者不应轻视任何一种漏洞,因为当不同的漏洞结合到一起时很有可能产生1+1>2的效果。这一点在辅助功能和镜像劫持身上很好的体现了出来。

之前我们提过辅助功能是执行系统命令,并且允许用户在未登录的情况下运行,那么当我们使用镜像劫持攻击,更改了这些指令在注册表IFEO中的键值就可能造成攻击者不需要登陆系统即可运行某些恶意软件。

原理:
修改注册表,在“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Option”中添加Utilman.exe项,在此项中添加debugger键,键值为启动cmd的命令C:\WINDOWS\System32\cmd.exe。
当攻击者通过远程桌面协议连接到受害者电脑上时,只需使用组合键win+u,本应该打开的设置中心,最终却打开了cmd命令行,通过命令行可以添加用户、打开注册表、运行恶意软件、添加隐蔽后门等等一些列攻击手段,严重性不言而喻。

复现:
在注册表中新增Utilman.exe表项,添加键值对Debugger=“C:\WINDOWS\System32\cmd.exe”

在登陆页面上运行win + u,在无需登录的情况下就打开了cmd命令框

0x05 防御和清除手段

  1. 由于此类攻击的恶意代码要修改Image File Execution Options,首先要有权限才可读写,于是,我们可以通过限制用户对该注册表的读写权限,来阻止镜像劫持。打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ImageFileExecutionOptions\,选中该项,右键→权限→高级,取消administrator和system用户的写权限即可。

  2. 由于镜像劫持需要在注册表中添加辅助功能的表项,所以检查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option”注册表路径下的程序名称,一些常用的辅助功能表项如:Utilman.exe,stch.exe,osk.exe等等

  3. 基于零信任的理念,对于有可能有安全隐患的不必要表项可以选择删除,直接禁用辅助功能即可。打开注册表编辑器,定位到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ WindowsNT \ CurrentVersion \,把“ImageFileExecutionOptions”项删除。

基于辅助功能的镜像劫持攻击原理相关推荐

  1. 第33篇:DNS劫持攻击原理讲解及溯源分析的常规步骤

     Part1 前言  在世界杯举办期间,DNS劫持事件估计会和链路劫持事件一样,风险提升很多.上期分享了一篇<第32篇:某运营商链路劫持(被挂博彩页)溯源异常路由节点(上篇)>,本期就讲一 ...

  2. XSS跨站脚本攻击原理与常见的脚本及《XSS跨站脚本攻击剖析与防御》摘录总结

    XSS跨站脚本攻击原理与常见的脚本及<XSS跨站脚本攻击剖析与防御>摘录总结 一.XSS跨站脚本攻击的原理 1.什么是XSS跨站脚本 2.跨站脚本攻击产生因素 二.XSS跨站脚本攻击的类别 ...

  3. https和http有什么差别、如何抓包、中间人攻击原理

    目录 1 HTTPS与HTTP的区别 2 HTTPS的实现原理 2.1 证书验证阶段 2.2 数据传输阶段 2.3 为什么数据传输使用对称协议呢而不直接用非对称加密呢? 2.4 HTTPS怎么加密传输 ...

  4. 什么是会话劫持攻击以及如何防止会话劫持

    在计算机科学中,会话劫持攻击一词代表了对真实有效的计算机会话的利用.它还用于未经授权访问计算机系统中的信息.毫无疑问,会话是互联网通信的重要组成部分.大多数会议都是基于网络的.此外,会话也是两个计算机 ...

  5. 基于ACR的镜像仓库管理,云计算技术与应用实验报告

    实验环境:在ECS(centOS7.7)上部署Docker环境 实验内容和要求: 通过实验了解Docker的基本概念和工作原理,掌握Docker安装方法.掌握Docker镜像和容器的基本操作. 通过实 ...

  6. 不可不知 DDoS的攻击原理与防御方法(2)

    转自: http://tech.sina.com.cn/s/2006-07-17/09501040151.shtml DoS攻击.DDoS攻击和DRDoS攻击相信大家已经早有耳闻了吧!DoS是Deni ...

  7. Sync 攻击原理及防范技术

    据统计,在所有黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法.相信很多人还记得2000年YAHOO网站遭受的攻击事例,当时黑客利用的就是简单而有效的SYN攻击,有些网络蠕虫病毒配合SY ...

  8. 带你了解DDoS攻击的原理,让你轻松学会DDoS攻击原理及防护措施

    DDoS攻击原理是什么? 随着网络时代的到来,网络安全变得越来越重要.在互联网的安全领域,DDoS(Distributed DenialofService)攻击技术因为它的隐蔽性,高效性一直是网络攻击 ...

  9. 图解ARP协议(二)ARP攻击原理与实践

    一.ARP攻击概述 在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答.数据包结构以及协议分层标准,今天我们继续讨论大家最感兴趣的话题:ARP攻击原理是什么?通过ARP攻击可以做什么 ...

  10. SYN 攻击原理以及防范技术

    据统计,在所有黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法.相信很多人还记得2000年YAHOO网站遭受的攻击事例,当时黑客利用的就是简单而有效的SYN攻击,有些网络蠕虫病毒配合SY ...

最新文章

  1. python os方法-Python os.lchflags() 方法
  2. 第二章 Vue快速入门-- 28 自定义按键修饰符
  3. sap gateway data provider - /IWFND/IF_MGW_CORE_RUNTIME
  4. windows mobile开发循序渐进(6)windows mobile device center 使用问题
  5. .NET基金会讨论 .NET 开源事业之路
  6. 数据结构 - 链表(单向环形链表)(约瑟夫问题)
  7. 验证客户端和服务端可以传输经SM4加密的密文数据,从而验证发送数据已使用服务器密码机进行SM4加密,而不是随便的字符串乱码
  8. python接口测试框架django_开源~自研接口测试平台 Django2.0+Vue
  9. mysql explain 结果值介绍
  10. treelistview 所有节点失去焦点_重大福利!中国外交部发布新规 关乎所有海外华人!...
  11. caffe使用预训练的模型进行finetune
  12. 招生网上报名程序090512.rar
  13. paip.rmvb视频的无损分割与截取
  14. Scratch编程与科学结合-串联与并联
  15. 数据结构 --- c语言实现双向循环链表
  16. java调用高拍仪获取图像_使用Java调用摄像头进行拍照源码
  17. 计算机cpu好坏之分,学查看CPU天梯图,正确判断CPU性能好坏
  18. rsa 模数 指数转换 c语言_CTF中RSA的一些攻击思路
  19. 产品经理如何进行用户需求分析?
  20. 群晖Docker部署MySQL服务

热门文章

  1. TensorFlow激励函数
  2. 51单片机数码管闪烁c语言,AT89C51单片机数码管闪烁问题怎么解决
  3. 【单片机项目实训】51单片机电子秤(语音播报版)
  4. 牛逼!一款基于SpringBoot的微信点餐系统
  5. SolidWorks工程图中模板与格式的关系
  6. 计算机动漫与游戏制作电脑配置,动漫与游戏设计该如何选电脑配置?
  7. ds18b20触摸没反应_写个DS18B20初始化程序,死活没反应
  8. 安装sql server2012报错
  9. img文件制作linux启动u盘,用syslinux制作简单U盘启动盘教程
  10. matlab双闭环绘图,matlab双闭环直流调速系统设计及仿真+电路图