Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >恶意软件可以覆盖和执行任何内存位置或它必须是特定的吗?

恶意软件可以覆盖和执行任何内存位置或它必须是特定的吗?
EN

Security用户
提问于 2022-09-18 02:11:44
回答 1查看 116关注 0票数 0

使用Python3和受害者机器上已有的类似软件的原始恶意软件(如果不能使用PyInstaller/pycom也可以编译)能够在用户的进程运行时覆盖内存中的进程。

甚至还有一个图书馆。当然,您甚至可以使用来自Python3的集成标准库命令来进行类似的操作,但在我看来,pymem使它更容易实现。引证:"Python可以调用任何Microsoft并使用经典的VirtualAlloc()、CreateRemoteThreat()等执行流程注入。“

因此,这个攻击向量似乎是进程注入的一个子类别,称为过程空化。这个问题似乎只出现在Windows上,因为它是防病毒等的一个设计选择,可以注入进程。

所以我的问题是:

  • 恶意软件可以覆盖进程的任何内存位置然后执行吗?或者它必须是特定的?
  • 因为这样做的可能性(如果我错了请纠正我)只存在于Windows (根据MITRE ATT&CK页面),我如何减轻/保护Windows机器上的这个威胁向量?
  • 同样,当我们谈论“劫持”过程时,为了邪恶的目的,我们在这里谈论的是虚拟内存还是物理内存?
  • 如何成功地监控进程操作?(是的,MITRE ATT&CK提到了,但仅此而已)
EN

回答 1

Security用户

回答已采纳

发布于 2022-09-18 06:49:24

Windows和Linux都允许进程注入,区别是Linux在检查权限时更加严格。

实际上,在Linux下,它等同于PTRACE_ATTACH检查,默认情况下,该检查只授予根进程(通过CAP_SYS_PTRACE)或父进程。

在Windows下,默认情况下,进程可以在相同的完整性级别上访问同一用户的另一个(无保护的)进程。

这个攻击向量是进程注入,其中,进程空洞化是一种特定的类型。

如果允许,恶意软件可以读取/写入目标进程的任何读/可重写页,但为了获得执行,它必须小心地这样做。

通常,分配一个全新的缓冲区,并创建一个新线程来执行外壳代码。

另一种可能是劫持,这可以通过更改函数指针(例如,vtable中的条目)、返回地址或简单地更改目标线程的上下文来实现。当然,劫持会损害目标进程的功能。

检查进程的完整性在一般情况下是昂贵的(因此不能实时完成),而从进程本身进行则类似于白盒加密。

这也是很困难的。原则上,您只需要度量进程的代码和数据,虽然这对于代码和只读数据来说很容易,但是对于堆栈或堆内存之类的东西来说,这是很困难的,在这样的情况下,来自外部(输入)的值会慢慢出现,并且没有一组已确定的允许值和不允许值(比如带有vtable的C++对象数组)。

实际上所做的是正确地设置流程对象的DACL,以拒绝其他进程访问它。另一种可能是提高流程的完整性。

这首先防止了任何修改,并避免了检查进程内存中任何更改的值的需要。如果您也不信任更高权限的进程(例如,系统服务或操作系统),那么您需要一个完整的远程认证框架,比如SGX飞地。

进程只处理虚拟内存(它们可以通过抽象间接地处理物理内存),因此询问虚拟内存还是物理内存是没有意义的。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/264888

复制
相关文章
python 执行完成后,cmd窗口自动关闭
一般脚本运行完需要点击一下 在代码最后添加以下内容即可自动关闭cmd: import os import time time.sleep(1) # 方便展示,可删除 os.system("taskkill /f /im cmd.exe") # 关闭cmd窗口
Michael阿明
2021/09/06
3.3K0
Qt编译完成后自动执行脚本
有时候我们编译程序完成后需要执行某些操作,比如复制执行文件或库文件到指定目录,如果这些都靠手动复制,未免会太繁琐且容易出错。本文介绍使用Qmake工具编译完成后自动执行自定义脚本的方法。 编译完成后执行脚本/命令 使用QMAKE_POST_LINK变量可以指定一个或多个脚本/命令在编译完成(链接)后执行的操作。 比如: QMAKE_POST_LINK += cmd_line1 cmd_line2 编译完成前执行脚本/命令 使用QMAKE_PRE_LINK变量可以指定一个或多个脚本/命令在编译完成前(链接前
Qt君
2019/08/05
1.9K0
phpstorm swoole和CI代码自动补全
在你项目的External Libraries上右键->Configure PHP Include Path然后选择那个文件夹(swoole-ide-helper-en)就可以了
黄啊码
2020/05/29
8140
PHPstorm批量修改文件换行符CRLF为LF
背景 在win系统配置远程SSH解释器, 并同步文件后, 导致所有文件换行符全变为CRLF, Git Commit时发现Changelist有很多文件, 那么怎么全部换回来LF呢? 解决方案 (1)
码农编程进阶笔记
2022/02/17
1.1K0
PHPstorm批量修改文件换行符CRLF为LF
.Net Windows服务安装完成后自动启动
考虑到部署方便,我们一般都会将C#写的Windows服务制作成安装包。在服务安装完成以后,第一次还需要手动启动服务,这样非常不方便。查阅了网上的一些资料,发现有一种方法是在安装完成事件里面调用命令行的方式启动服务,这种方式虽可行,但觉得不够完美。好了,下面来看看如何更好地做到服务自动启动。
跟着阿笨一起玩NET
2018/09/18
1.4K0
.Net Windows服务安装完成后自动启动
phpstorm中如何设置自动上传
本文为北溟有鱼QAQ原创文章,转载无需和我联系,但请注明来自北溟有鱼QAQ https://www.umdzz.cn
北溟有鱼QAQ
2019/12/19
8140
phpstorm中如何设置自动上传
详解PHP如何更好的利用PHPstorm的自动提示
写了一段时间的java之后,特别不习惯PHP本身的弱类型方式,在写代码的时候总觉得不怎么放心,特别本身PHP又是弱类型的语言,所以在编码的时候,很多时候是没有代码提示的。 一个一般例子
用户2323866
2021/06/30
5470
c++ const放置的位置
标准中int const a 与 const int a 是完全等价的。正因为如此,会有很多各种不同的风格,同样的还有“*是跟类型还是变量?”,比如char* p与 char *p,它们是等价的。
meteoric
2018/11/19
1.9K0
【react-dnd使用总结一】拖放完成后获取放置元素在drop容器中的相对位置
工具函数-根据元素的起始位置和最终位置,计算相对于某元素的位置 export interface IPosition { left: number; top: number; } /** * 根据元素的其实位置和最终位置,计算相对于某元素的位置 * @param initialPosition 拖动元素相对于屏幕左上角的起始位置(偏移量) * @param finalPosition 拖放完成后当前节点相对于屏幕左上角的位置 * @param containerEle 目标容器元素 * @
fastmock
2022/07/13
4.4K0
怎样插入图表?用图表功能可以插入不同的图表。
1、点击[插入] 2、点击[图表] 3、点击[折线图] 4、点击[确定]
裴来凡
2022/05/28
1.6K0
怎样插入图表?用图表功能可以插入不同的图表。
【说站】php之phpstorm自动代码补全的使用
2、点击PHP、右上角新增Live Template,点击下面的Define、勾选PHP
很酷的站长
2022/11/24
1K0
【说站】php之phpstorm自动代码补全的使用
xBIM 高级02 插入复制功能
  IFC 模型中的合并和删除实体是一个非常重要的任务,因为 IFC 不是一个分层结构。它是一个复杂的结构,具有潜在的循环关系,是一个双向导航。在单个实体上执行这些任务并不是问题(您可以将其想象为STEP21文件中的一行)。
张传宁IT讲堂
2019/09/17
6510
unity ugui的拖拽与放置
2、创建Panel(会自动创建Canvas 和EventSystem),将Panel中的Image组件删除,重命名为MainPanel。
酱紫安
2022/05/10
2.4K0
unity ugui的拖拽与放置
mySQL插入数据自动生成时间
mySQL插入数据自动生成时间 使用navcat for mysql工具创建数据库时,如果需要设置一个时间字段,并且在插入数据时让这个时间是自动生成。可以参考下面方法:
全栈程序员站长
2022/07/19
4.6K0
.Net实现Windows服务安装完成后自动启动的两种方法
考虑到部署方便,我们一般都会将C#写的Windows服务制作成安装包。在服务安装完成以后,第一次还需要手动启动服务,这样非常不方便。 方法一:在安装完成事件里面调用命令行的方式启动服务 此操作之前要先设置下两个控件 设置serviceProcessInstaller1控件的Account属性为“LocalSystem” 设置serviceInstaller1控件的StartType属性为"Automatic" 在服务器上添加安装程序,在private void ProjectInstaller_Afte
hbbliyong
2018/03/06
1.6K0
.Net实现Windows服务安装完成后自动启动的两种方法
Laravel的Phpstorm插件
laravel-ide-helper 用于实现方便的代码提示功能,详细查看插件官网
无道
2019/11/13
1K0
Laravel的Phpstorm插件
C++ 流插入和流提取运算符的重载
假定我们要想把某个对象里的内容进行打印输出,那么我们可以重载 ostream 类的流插入 << 运算符。
小林coding
2020/03/31
1.1K0
C++ 流插入和流提取运算符的重载
Yarn管理放置规则
这是CDP中Yarn使用系列中的一篇,之前的文章请参考<使用YARN Web UI和CLI>、<CDP 中配置Yarn的安全性>、<CDP的Yarn资源调度与管理>、<CDP中Yarn管理队列>、<Yarn在全局级别配置调度程序属性>和<Yarn配置每个队列属性>。
大数据杂货铺
2021/09/15
2.2K0
Yarn管理放置规则
ASMM自动管理的功能[通俗易懂]
Automatic Shared Memory Management(ASMM)是ORACLE10g另外一个自动管理的功能。[@more@]
全栈程序员站长
2022/09/02
1.2K0
MyBatis Plus 批量数据插入功能,yyds!
最近 Review 小伙伴代码的时候,发现了一个小小的问题,小伙伴竟然在 for 循环中进行了 insert (插入)数据库的操作,这就会导致每次循环时都会进行连接、插入、断开连接的操作,从而导致一定的性能问题,简化后代码如下:
磊哥
2021/09/28
8.8K1

相似问题

PhpStorm中的TypeScript -无自动完成功能

117

PHPStorm自动完成数组键(动态插入)

22

PhpStorm -如何关闭自动卷曲大括号插入

14

如何阻止IntelliJ在自动完成后放置分号?

112

PhpStorm:标识符被自动引用,甚至变量

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文