(新型病毒都学会了用进程来隐藏自己),有谁知道这句话说的是什么意思?最好能解释的详细点。

如题所述

根据题干中的“进程”——如果你指的是计算机病毒的话,那么一种简单的理解是注入技术。

A病毒先把自己整个注入到系统服务进程中,例如csrss.exe。然后它自身带有不停向某个文件目录复制自己的功能(或是先检测,被删除后再复制自己)。

于是你就能看到一个目录中,你删除一个文件,突然它又跳了出来,如此反复。。。

这种隐藏根据细节的不同有容易被检测的,也有难以被检测的。

追问

(病毒先把自己整个注入到系统服务进程中),这句话我没理解。程序执行不都是一次性的将完整的程序装入内存的吗?你说的“注入”是什么意思?

追答

病毒的设计者让病毒在系统服务进程中模拟可执行文件加载的过程。
以Windows为例,首先你要知道一个可执行文件的本质是什么——是PE结构为代表的所有模块(PE模块可以是exe文件,dll文件和驱动.sys文件等文件,它是一种通用格式、类似linux上的ELF)。
然后你要了解PE在双击时是如何真正执行的。这个简单来说可以分为四步:
1.在系统内核层面创建内核对象(结构体)
2.把硬盘上的静态文件二进制数据加载到内存中
3.将PE默认静态状态下的文件对齐粒度转化为内存对齐粒度并按照不同情况修正PE中的关键数据结构。
4.在PE格式中规定的入口处设置线程让进程真正开始运转(没有线程的进程可以说不算是真正运行的进程)
上面四步看看就好,需要大量相关基础知识才能理解。
知道这四步后只要用一个程序把另一个程序或者该程序自己当前已经存在在内存中的整个文件模块全部通过函数写入系统服务进程中并进行相应设置就能实现“让一个进程在其他进程中运行”。
这只是注入技术中的一种,在Windows系统的3环注入中算是稍微复杂点的。我把它称为动态内存写入注入法。
当然实际要研究注入就会发现比这复杂的多——从注入的种类到注入的手法包括高级规避技术等等。例如上述的方法指的是一种模块注入——只是我没有注入DLL,而是注入exe。还有一些方法不注入整个文件模块,只注入一小段代码——类似这种都属于shellcode注入。

病毒设计者会让病毒模拟可执行文件的加载过程。
首先,你要了解在Windows操作系统上,可执行文件的本质是什么。所有可执行文件都有通用格式——PE结构。
其次,你还要了解当我们双击一个可执行文件后,PE究竟是如何从文件变成可以运行的进程的。
实际过程非常复杂,这里简化成四步:
1.在系统内核层面创建与进程对应的内核对象(内核结构体)
2.将PE文件从静态的二进制数据加载到内存中
3.将二进制数据从文件对齐粒度转化为内存对齐粒度并修复可能要修复的PE中相关数据结构,例如重定位表
4.在PE的程序入口点上赋予线程,让进程真正可以运行。(没有线程的进程可以认为只是没用的空壳)
这四步看看就好,真正理解并写出代码需要大量专业基础知识。
病毒就是把另一个程序或者它自己当前在内存中的所有数据(病毒运行时已经是内存对齐粒度了)通过一些函数跨进程写入系统服务进程中,然后模拟上述四步。最终就能实现“在其他进程中运行病毒”,这就是一种注入方式,我称之为动态内存写入注入法。
注入实际上是一个比较复杂的过程,有很多人认为注入已经很容易被检测拦截,其实并不是。要看你“从哪里注、注入的方法、层面以及注入谁”。从注入的分类到注入相关的高级规避技术等等都有很多可以思考的点。
就从注入分类上来说,上述的过程可以归纳为模块注入、一般外界不称模块注入而称DLL注入(因为DLL因为其特性更加常用)——但其实不用DLL也行,此处描述的四步中注入的就是exe模块。还有一些注入采取的方案是不注入整个模块,而是注入一段shellcode——这种可以称为shellcode注入。

病毒设计者会让病毒模拟可执行文件的加载过程。
首先,你要了解在Windows操作系统上,可执行文件的本质是什么。所有可执行文件都有通用格式——PE结构(类似linux中的ELF)。
其次,你还要了解当我们双击一个可执行文件后,PE究竟是如何从文件变成可以运行的进程的。
实际过程非常复杂,这里简化成四步:
1.在系统内核层面创建与进程对应的内核对象(内核结构体)
2.将PE文件从静态的二进制数据加载到内存中
3.将二进制数据从文件对齐粒度转化为内存对齐粒度并修复可能要修复的PE中相关数据结构,例如重定位表
4.在PE的程序入口点上赋予线程,让进程真正可以运行。(没有线程的进程可以认为只是没用的空壳)
这四步看看就好,真正理解并写出代码需要大量专业基础知识。
病毒就是把另一个程序或者它自己当前在内存中的所有数据(病毒运行时已经是内存对齐粒度了)通过一些函数跨进程写入系统服务进程中,然后模拟上述四步。最终就能实现“在其他进程中运行病毒”,这就是一种注入方式,我称之为动态内存写入注入法。
注入其实并不仅仅是计算机中的概念,例如生病时的打针就是注入;在Web安全中SQL注入就是对数据库的注入——所以可以看到,注入的本质就是把我们需要的东西放到另一样东西中从而达成我们目的的过程。
而这实际上是一个比较复杂的过程,有很多人认为注入已经很容易被检测拦截,其实并不是。要看你“从哪里注、注入的方法、层面以及注入谁”。从注入的分类到注入相关的高级规避技术等等都有很多可以思考的点。
就从注入分类上来说,上述的过程可以归纳为模块注入、一般外界不称模块注入而称DLL注入(因为DLL因为其特性更加常用)——但其实不用DLL也行,此处描述的四步中注入的就是exe模块。还有一些注入采取的方案是不注入整个模块,而是注入一段shellcode——这种可以称为shellcode注入。

病毒设计者会让病毒模拟可执行文件的加载过程。
首先,你要了解在Windows操作系统上,可执行文件的本质是什么。所有可执行文件都有通用格式——PE结构(类似linux中的ELF)。
其次,你还要了解当我们双击一个可执行文件后,PE究竟是如何从文件变成可以运行的进程的。
实际过程非常复杂,这里简化成四步:
1.在系统内核层面创建与进程对应的内核对象(内核结构体)
2.将PE文件从静态的二进制数据加载到内存中
3.将二进制数据从文件对齐粒度转化为内存对齐粒度并修复可能要修复的PE中相关数据结构,例如重定位表
4.在PE的程序入口点上赋予线程,让进程真正可以运行。(没有线程的进程可以认为只是没用的空壳)
这四步看看就好,真正理解并写出代码需要大量专业基础知识。
病毒就是把另一个程序或者它自己当前在内存中的所有数据(病毒运行时已经是内存对齐粒度了)通过一些函数跨进程写入系统服务进程中,然后模拟上述四步。最终就能实现“在其他进程中运行病毒”,这就是一种注入方式,我称之为动态内存写入注入法。
注入其实并不仅仅是计算机中的概念,例如生病时的打针就是注入;在Web安全中SQL注入就是对数据库的注入——所以可以看到,注入的本质就是把我们需要的东西放到另一样东西中从而达成我们目的的过程。
而这实际上是一个比较复杂的过程,有很多人认为注入已经很容易被检测拦截,其实并不是。要看你“从哪里注、注入的方法、层面以及注入谁”。从注入的分类到注入相关的高级规避技术等等都有很多可以思考的点。
就从注入分类上来说,上述的过程可以归纳为模块注入、一般外界不称模块注入而称DLL注入(因为DLL因为其特性更加常用)——但其实不用DLL也行,此处描述的四步中注入的就是exe模块。还有一些注入采取的方案是不注入整个模块,而是注入一段shellcode——这种可以称为shellcode注入。
当然,就病毒来说注入只是一种可能的选择,还能通过其他方法隐藏,这里就不提了

病毒设计者会让病毒模拟可执行文件的加载过程。
首先,你要了解在Windows操作系统上,可执行文件的本质是什么。所有可执行文件都有通用格式——PE结构(类似linux中的ELF)。
其次,你还要了解当我们双击一个可执行文件后,PE究竟是如何从文件变成可以运行的进程的。
实际过程非常复杂,这里简化成四步:
1.在系统内核层面创建与进程对应的内核对象(内核结构体)
2.将PE文件从静态的二进制数据加载到内存中
3.将二进制数据从文件对齐粒度转化为内存对齐粒度并修复可能要修复的PE中相关数据结构,例如重定位表
4.在PE的程序入口点上赋予线程,让进程真正可以运行。(没有线程的进程可以认为只是没用的空壳)
这四步看看就好,真正理解并写出代码需要大量专业基础知识。
病毒就是把另一个程序或者它自己当前在内存中的所有数据(病毒运行时已经是内存对齐粒度了)通过一些函数跨进程写入系统服务进程中,然后模拟上述四步。最终就能实现“在其他进程中运行病毒”,这就是一种注入方式,我称之为动态内存写入注入法。
注入其实并不仅仅是计算机中的概念,例如生病时的打针就是注入;在Web安全中SQL注入就是对数据库的注入——所以可以看到,注入的本质就是把我们需要的东西放到另一样东西中从而达成我们目的的过程。
而这实际上是一个比较复杂的过程,有很多人认为注入已经很容易被检测拦截,其实并不是。要看你“从哪里注、注入的方法、层面以及注入谁”。从注入的分类到注入相关的高级规避技术等等都有很多可以思考的点。
就从注入分类上来说,上述的过程可以归纳为模块注入、一般外界不称模块注入而称DLL注入(因为DLL因为其特性更加常用)——但其实不用DLL也行,此处描述的四步中注入的就是exe模块。还有一些注入采取的方案是不注入整个模块,而是注入一段shellcode——这种可以称为shellcode注入。
当然,就病毒来说注入只是一种可能的选择,还能通过其他方法隐藏,这里就不提了

追问

说的真好

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-15
10 (新型病毒都学会了用进程来隐藏自己),有谁知道这句话说的是什么意思?最好能解释的详细点。追问

混沌