第二次课10.28

2023-10-28 23:04
文章标签 第二次 10.28

本文主要是介绍第二次课10.28,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

hash 计算接口 Crypto API (证书,对称加密,非对称加密,编码和解码)
CryptAcquireContext
CryptCreateHash
CryptReleaseContext
CryptHashData
CryptDestroyHash
CryptGetHashParam

注册表操作接口
RegEnumKeyEx
RegEnumValueW
RegOpenKeyExW
RegQueryValueExW
RegQueryInfoKeyW

服务注册表的路径:\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services

AutoRuns 和 AutoRuncs 下载地址
https://learn.microsoft.com/zh-cn/sysinternals/downloads/autoruns

目标:
1、在上次课的基础上把所有枚举出来的进程以及进程模块的文件hash值[MD5 sha-1,sha256]计算出来;存在父进程id的进程一并把父进程信息给关联起来一并输出;涉及运行中文件的打开,可以考虑先复制到其他地方再读取内容进行计算。
2、使用注册表接口,把注册表中的服务信息枚举出来,并输出关联的二进制路径,思考一下使用服务接口枚举的服务和注册表枚举的服务如何关联。
3、使用注册表接口,枚举当前计算启动项信息,启动项注册表路径自己查阅资料。
扩展内容:可以在进程,模块hash的基础上增加文件签名校验:参考内容链接:https://blog.csdn.net/StanfordZhang/article/details/8255605

1、hash CRC32–开销比较小 ,MD5,SHA1,SHA256 --运行开销,自定义的简单hash ,oxxxdxg.exe 长度,第一个字符是0 第四个字符是d 第六个是g 存在碰撞的可能。FFFFXAC VALUE ^ KEY = ENCODE;ENCODE ^ KEY = VALUE;

1231234535–》calc_proc—>data_spect

运行时解密。

框架原始的串 --》calc——proc -》FFFFXAC ollydbg.exe

注册表,这个就是WINDOWS 自带的数据库,或者说是一个配置库。

自启动

总结:白名单技术。云查(网络接口)

   CryptAcquireContext:phProv:指向 HCRYPTPROV 类型的句柄变量的指针。pszContainer:指向包含密钥容器名称的字符串的指针。pszProvider:指向加密服务提供程序的名称的字符串的指针。dwProvType:加密服务提供程序的类型。dwFlags:标志,用于指定加密服务提供程序的行为。CryptCreateHash:hProv:与已获取的加密服务提供程序关联的加密服务提供程序句柄。Algid:标识要使用的哈希算法的常数值。hKey:可选参数,与哈希对象关联的对称加密算法的密钥句柄。dwFlags:标志,用于指定创建哈希对象的行为。phHash:指向 HCRYPTHASH 类型的句柄变量的指针。CryptReleaseContext:hProv:与要释放的加密服务提供程序相关联的加密服务提供程序句柄。dwFlags:标志,用于指定释放上下文时的行为。CryptHashData:hHash:要使用的哈希对象的句柄。pbData:指向要进行哈希计算的数据的缓冲区的指针。dwDataLen:要进行哈希计算的数据的长度。dwFlags:标志,用于指定哈希数据时的行为。CryptDestroyHash:hHash:要销毁的哈希对象的句柄。CryptGetHashParam:hHash:要获取参数的哈希对象的句柄。dwParam:要获取的哈希参数的标识符。pbData:指向接收参数数据的缓冲区的指针。pdwDataLen:指向接收参数数据长度的变量的指针。dwFlags:标志,用于指定获取哈希参数时的行为。
  RegEnumKeyEx:hKey:要枚举子键的注册表键句柄。dwIndex:子键的索引,从0开始计数。lpName:指向接收子键名称的缓冲区的指针。lpcName:指向接收子键名称长度的变量的指针。RegEnumValueW:hKey:要枚举值的注册表键句柄。dwIndex:值的索引,从0开始计数。lpValueName:指向接收值名称的缓冲区的指针。lpcbValueName:指向接收值名称长度的变量的指针。lpReserved:保留参数,应设置为NULL。lpType:指向接收值类型的变量的指针。lpData:指向接收值数据的缓冲区的指针。lpcbData:指向接收值数据长度的变量的指针。RegOpenKeyExW:hKey:父键的注册表键句柄。lpSubKey:要打开的子键的路径。ulOptions:打开选项和标志。samDesired:权限控制标志。RegQueryValueExW:hKey:要查询值的注册表键句柄。lpValueName:要查询的值的名称。lpReserved:保留参数,应设置为NULL。lpType:指向接收值类型的变量的指针。lpData:指向接收值数据的缓冲区的指针。lpcbData:指向接收值数据长度的变量的指针。RegQueryInfoKeyW:hKey:要查询信息的注册表键句柄。lpClass:指向接收类名的缓冲区的指针。lpcchClass:指向接收类名长度的变量的指针。lpReserved:保留参数,应设置为NULL。lpcSubKeys:指向接收子键数量的变量的指针。lpcbMaxSubKeyLen:指向接收最长子键名长度的变量的指针。lpcbMaxClassLen:指向接收最大类名长度的变量的指针。lpcValues:指向接收值数量的变量的指针。lpcbMaxValueNameLen:指向接收最长值名称长度的变量的指针。lpcbMaxValueLen:指向接收最大值数据长度的变量的指针。

路径 \HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services

路径 \HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services 是 Windows 注册表中存储系统服务配置信息的位置。在这个路径下,每个注册表项对应一个系统服务,并包含了该服务的配置和属性。
在 Services 路径下的每个子项代表一个单独的系统服务。这些子项的名称是服务的标识符(通常是服务名称),而键值则包含了服务的各种配置信息,如服务的启动类型、路径、依赖关系及其他参数等。
HKEY_LOCAL_MACHINE:这是注册表的根键之一,表示本地计算机上的注册表。它包含了计算机的硬件和操作系统相关的配置信息。
SYSTEM:这是 HKEY_LOCAL_MACHINE 下的一个子键,用于存储系统级别的配置数据,包括操作系统设置、设备驱动程序等。
ControlSet001:这是 SYSTEM 下的一个子键,代表当前正在使用的控制集(Control Set)。Windows 操作系统通常会有多个控制集,每个控制集对应不同的启动配置或系统状态。
Services:这是 ControlSet001 下的一个子键,用于存储系统服务的配置信息。每个子项对应一个已安装的服务,并包含了该服务的各种属性和配置选项。
通过访问这个注册表路径下的子项和键值,可以管理和配置系统中已安装的服务,例如启用/禁用服务、更改服务的启动类型、配置服务参数等

Control Set

Control Set(控制集)是 Windows 操作系统注册表中用于存储操作系统配置信息的一组相关注册表项。它们位于 HKEY_LOCAL_MACHINE\SYSTEM 下的多个子键中,例如 ControlSet001、ControlSet002 等。
每个 Control Set 对应着不同的系统启动配置或系统状态。在正常情况下,Windows 操作系统会根据当前系统的启动配置选择其中一个 Control Set 来加载并作为当前运行的配置。
当系统引导时,Windows 会自动选择最近的有效 Control Set 并加载其配置。这通常是基于上次成功启动的 Control Set。如果某个 Control Set 配置存在问题导致无法启动,Windows 可以尝试加载备份 Control Set 或进入安全模式等手段来解决问题。
每个 Control Set 存储了各种操作系统和设备驱动程序的配置信息,包括服务配置、硬件配置、启动选项等。在注册表中,Control Set 的配置信息主要存储在以下几个子键中:
ControlSetXXX\Services:存储系统服务的配置信息。
ControlSetXXX\Control:存储操作系统相关的配置信息。
ControlSetXXX\Enum:存储设备枚举和配置信息。
注意,XXX 表示具体的数字,如 ControlSet001、ControlSet002 等。
通过使用 Control Set,Windows 可以支持多个系统配置,并能够根据需要切换配置以满足不同的需求,例如修复系统故障或恢复到先前的正常工作状态

HCRYPTHASH

HCRYPTHASH 是 Crypto API 中定义的哈希对象的句柄类型。它是一个指向哈希对象的句柄,用于标识和操作哈希对象。
在使用 Crypto API 进行哈希计算时,首先需要创建一个哈希对象,获得该哈希对象的句柄(HCRYPTHASH),然后可以使用这个句柄进行哈希操作,如添加数据、获取哈希值等。通过操作哈希对象的句柄,可以对数据进行逐步处理,并最终获取其哈希值。
HCRYPTHASH 类型的句柄是一个抽象的数据类型,表示 Crypto API 内部管理的哈希对象的引用。具体的实现和内部结构由 Crypto API 进行管理,开发者无需关心其具体内容。
需要注意的是,当不再需要使用哈希对象时,应该调用 CryptDestroyHash 函数来销毁哈希对象,并释放相关资源。销毁哈希对象后,相应的 HCRYPTHASH 句柄将不再有效。
总之,HCRYPTHASH 类型是 Crypto API 中用于标识和操作哈希对象的句柄类型

AutoRuns

AutoRuns64:这是针对64位操作系统的版本,专门设计用于在64位Windows操作系统上运行。它支持查看和管理64位系统中的自动启动项、服务等。AutoRuns32:这是针对32位操作系统的版本,用于在32位Windows操作系统上执行。它适用于32位的Windows系统,并提供了相同的功能,但仅适用于32位的自动启动项、服务等。AutoRuns:这是通用版本,可以在32位和64位的Windows操作系统上运行。通常,当您在64位操作系统上运行此通用版本时,它将自动检测并使用AutoRuns64的功能,以便查看和管理64位系统中的自动启动项和服务。而在32位操作系统上运行时,它会使用AutoRuns32的功能。

https://learn.microsoft.com/zh-cn/sysinternals/downloads/autoruns
在这里插入图片描述
可以在该工具上我们看到各个注册表下运行的程序,
AutoRuns 提供了许多功能,以帮助用户管理 Windows 操作系统中的自动启动项、服务、驱动程序等。以下是 AutoRuns 工具中的一些主要功能:

Everything:该选项显示系统中所有自动启动的项目,包括启动文件夹、注册表项、计划任务、驱动程序和服务等。Logon:列出在用户登录时自动启动的项目,例如启动文件夹、注册表键值、托盘图标等。Explorer:显示与资源管理器(Windows Explorer)相关的自动启动项,包括 shell 扩展、工具栏、上下文菜单等。Internet Explorer:列出与 Internet Explorer 相关的自动启动项,如 BHO(浏览器辅助对象)、工具栏、IE 插件等。Scheduled tasks:显示计划任务列表,包括由 Windows 自动调度执行的任务。Services:列出系统中安装的服务,提供对服务的控制选项,如启用、禁用、停止等。Drivers:显示系统中已加载的驱动程序,包括内核模式和用户模式驱动。Boot execute:列出在系统引导过程中自动执行的命令或脚本。Image hijacks:显示修改了默认图像文件关联的自动启动项。AppInit:显示在系统初始化过程中自动加载的 DLL。Known DLLs:列出已知的动态链接库(DLL)和它们的加载顺序。Winsock Providers:显示已注册的 Winsock 提供程序。Print monitors:列出已安装的打印监视器。

除了上述功能,AutoRuns 还提供了过滤和搜索功能,以便用户快速找到特定的启动项或服务。用户可以通过右键单击项目来执行操作,如禁用、删除、查看属性等。

这些功能使用户能够全面了解和管理 Windows 系统中的自动启动项、服务和驱动程序,从而提高系统性能、确保安全性,并进行必要的排障和配置调整。

这篇关于第二次课10.28的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/296559

相关文章

毕业前第二次面试的感慨

距面试已经过去了有几天了,我现在想起来都有说多的恨感慨。 我一直都是想找刚刚起步的企业,因为这能让我学到更多的东西,然而正好有一家企业是刚起步的,而且他还有自己的产品专利,可以说这是一家,即是创业又是刚起步的公司,这家公司回复了我投给他的简历,这家企业想进一步了解我的情况,因为简历上我符合这家企业的基本要求,所以要进一步了解。 虽然面试的过程中,他给我的面试题,我做得并不是很理想,

想要深刻了解OpenAI,还得看第二次工业革命!

人类历史上经历了四次工业革命.... >>>   四次工业革命概述 第一次工业革命(18世纪60年代~19世纪中期)——资产阶级 以蒸汽机、汽船、火车为代表,标志着人类进入蒸汽时代。这次工业革命大大密切加强了世界各地之间的联系,改变了世界的面貌,最终确立了资产阶级对世界的统治地位。 第二次工业革命(19世纪七八十年代~19世纪末20世纪初)——殖民滋生 以电力、内燃机、飞机、汽车为代表,标

Cypress第二次安装遇到的问题

问题一:吐血,谁会想到node.js的官网访问不了呢! 中文网站:http://url.nodejs.cn/download/ 官网:https://nodejs.org/zh-cn nodejs安装的两种方法(官网、NVM安装-node版本切换)不知道这种方式是否可行,还需要花时间试试

大二第二次月赛--手速

手速 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 1 描述 被学长虐了之后,wyl 认识到了手速的重要性,yy了一道。 初始化序列为空 给 n 个操作: 0 :    从头部往里放 1 :    从尾部往里放 2 :      从头部删除 3 :      从尾部删除 4:    改变功能,原来是从头部放的从尾部放,从尾部放的从头部放,删除也是如此

第二次选拔——ZOJ

简单,不多说。 Description 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。 Input 题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。  1<=length<=100。  Output 对于每组输入,请输出一行,表示

第二次选拔——排序

Description 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。  你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。  Input 输入包含多组测试用例,每组输入数据只有一行数字(数字之

ATFX汇市:瑞士央行连续第二次降息,USDCHF猛涨

ATFX汇市:昨日15:30,瑞士央行公布利率决议结果,将政策利率下调0.25个百分点,至1.25%。瑞士央行在政策声明中提到:与上一季度相比,潜在的通胀压力再次下降;瑞士目前的通货膨胀主要是由国内服务价格上涨推动的;未来几个季度,瑞士的经济增长可能会保持温和。降息消息公布后,USDCHF五分钟级别猛涨,汇率从最低价0.8839飙升至0.8895,涨幅56基点。五分钟过后,USDCHF走势趋于平静

element-ui | 第一次表单验证的结果,在第二次表单验证时仍然存在

在窗口打开时,对该表单项进行重置,将其值重置为初始值并移除校验结果  if(that.$refs.newAddFrom){that.$refs.newAddFrom.resetFields();}newAddFrom为定义的ref元素 if (this.$refs.editForm) this.$refs.editForm.resetFields(); 注意!!!!一定要加if

vue-pdf 部分中文显示错误,第二次打开是空白,解决方法

首先鸣谢 1. https://blog.csdn.net/m0_71537867/article/details/131614868?spm=1001.2014.3001.5506 2. https://blog.csdn.net/weixin_43763952/article/details/133769647 3. https://github.com/FranckFreiburger/vu

传感器实验报告(第二次)

6.5外部中断实验 一.实验目的 1.掌握CC2530的外部中断寄存器设置; 2.掌握外部中断函数程序的编程方法。 二.基础知识 当按键未按下时,P0.4的电平为3.3V;当按键按下时,P0.4的电平为0V。 三.实验代码 #include "ioCC2530.h" void delay(void) //延迟函数{unsigned int i;u