第二次课10.28

news2024/11/24 7:25:41

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 系统中的自动启动项、服务和驱动程序,从而提高系统性能、确保安全性,并进行必要的排障和配置调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1145020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何快速解决d3dcompiler_43.dll缺失问题?五种方法快速解决

在计算机使用过程中,我们常常会遇到一些错误提示,其中之一就是“D3DCompiler_43.dll缺失”。这个错误通常会导致游戏、应用程序或系统无法正常运行。为了解决这个问题,我们需要采取一些修复方案来恢复缺失的文件。本文将介绍五个修复D3DCompi…

Vue 3响应式对象: ref和reactive

目录 什么是响应式对象? Ref Reactive Ref vs Reactive 适用场景: 访问方式: 引用传递: 性能开销: 响应式对象优点 响应式对象缺点 总结 Vue 3作为一种流行的JavaScript框架,提供了响应式编程的…

Linux中shell脚本中的运算

目录 一、运算符号 二、运算指令 三、练习 一、运算符号 加法-减法*乘法/除法%除法后的余数**乘方自加一--自减一 <小于<小于等于>大于>大于等于等于ji&#xff0c;jji*jj*i/jj/i%jj%i 二、运算指令 (()) ##((a12)) let ##let a12 expr ##expr 1 2 …

MyBatis入门的第一个程序

2023.10.28 今天正式开始MyBatis的学习&#xff0c;先来一个入门程序的编写。 ①准备一个数据库表&#xff1a; ②配置pom.xml文件&#xff1a;&#xff08;打包方式和2个依赖的引入&#xff09; <?xml version"1.0" encoding"UTF-8"?> <proj…

freeRTOS学习day4-中断使用消息队列

首先设置好中断优先级 看freeRTOS配置文件 freeRTOS可以管理的优先级范围是5-15 所以开始我把子优先级设置为4 会卡死在发送那里 https://www.cnblogs.com/realiot/articles/16699272.html 另外一点 一定要设置中断优先级分组 忘了设置也会卡死 void USART1_IRQHandler(vo…

【多线程面试题 三】、 run()和start()有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; run()和start()有什么区…

【电路笔记】-交流波形和交流电路理论

交流波形和交流电路理论 文章目录 交流波形和交流电路理论1、概述2、交流发电2.1 涡轮发电2.2 变压器 3、交流功率3.1 RMS值3.2 功率分配 4、总结 当谈论电流或电压时&#xff0c;这些信号可以分为两大类&#xff1a;直流和交流。 DC 状态为“直流电”&#xff0c;该定义重新组…

中文编程开发语言工具系统化教程零基础入门篇和初级1专辑课程已经上线,可以进入轻松学编程

中文编程开发语言工具系统化教程零基础入门篇和初级1专辑课程已经上线&#xff0c;可以进入轻松学编程 学习编程捷径&#xff1a;&#xff08;不论是正在学习编程的大学生&#xff0c;还是IT人士或者是编程爱好者&#xff0c;在学习编程的过程中用正确的学习方法 可以达到事半…

构造、清理、拷贝和移动简单实例

Complex 复数类 显示地写出构造、清理、拷贝和移动。 Complex类 class Complex { private:double real 3; //复数的实部double imag 4; //复数的虚部 public:Complex(); /*无参构造*/Complex(double a, double b); /*有参构造*/Complex(Complex& …

docker 中给命令起别名

docker 的有些命令特别复杂&#xff0c;我们可以给它设置别名简化输入&#xff0c;就不用每次都输入那么多了&#xff01;&#xff01;&#xff01; 1. 进入 .bashrc 中修改配置&#xff08; .bashrc 是root下的隐藏文件&#xff09; cd /rootvim .bashrc2. 在 .bashrc 中加入…

Java架构师系统相关与性能评价

目录 1 导学2 计算机语言3 多媒体4 系统工程2 性能指标3 性能评价方法4 阿姆达尔解决方法想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导学 2 计算机语言 计算机语言是人与计算机之间交流的桥梁,它们帮助人们编写程序并让计算机理解执行。计算机语言可以分为不同…

【算法练习Day31】单调递增的数字买卖股票的最佳时机含手续费监控二叉树

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 单调递增的数字买卖股票的最…

【爬虫】python打包可执行程序(ui界面制作完成后)

1.安装pyinstaller pip install pyinstaller可能出现连接超时安装不上的情况,可以切换源进行下载 pip install -i http://pypi.douban.com/simple/ pyinstaller2.打包程序 pyinstaller xxxxx.py --noconsole --hidden-import PySide6.QtXml

锐捷云课堂主机 默认口令 目录遍历漏洞

输入默认账号密码admin/admin,成功登录 构造payload&#xff0c;并访问&#xff1a; /pool/目录遍历漏洞&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法…

电子器件 电容的参数、选型与使用技巧

一、参数 最重要的参数有五个&#xff0c;分别是精度、温度系数、耐压、温度范围和ESR。 1.1 精度 电容和电阻不同&#xff0c;电阻精度可以做到高于 0.1%&#xff0c;而电容的话 5% 精度非常高的了。一般为 5%&#xff0c;10%&#xff0c;25% 等。 1.2 温度系数 电容的电…

Graalvm-21 Windows初体验

前言 除了最新新出的jdk21以外&#xff0c;oracle还推出了重磅的graalvm-jdk-21。这个graalvm可以把java代码编译为本地执行文件&#xff0c;就是把原来的jar包直接打成exe。并且使用打完的exe占用的内存资源更小&#xff0c;启动速度更快&#xff0c;非常适合云平台部署&#…

仓库管理系统源代码集合,带图片展示和网站演示

目录 1、ModernWMS2、GreaterWMS3、kopSoftWMS4、SwebWMS5、若依wms6、jeewms 1、ModernWMS 体验地址&#xff1a;https://wmsonline.ikeyly.com 简易完整的仓库管理系统 该库存管理系统是&#xff0c;我们从多年ERP系统研发中总结出来的一套针对小型物流仓储供应链流程。 简…

crs 维护模式 exclusive mode

How To Validate ASM Instances And Diskgroups On A RAC Cluster (When CRS Does Not Start). (Doc ID 1609127.1)​编辑To Bottom [rootrac1 ~]# ps -ef|grep grid root 2477 1 1 20:47 ? 00:00:51 /opt/oracle.ahf/jre/bin/java -server -Xms32m -Xmx64…

JavaScript控制流程简介

目录 条件语句 if语句 else if语句 else语句 循环语句 for循环 while循环 do...while循环 switch语句 总结 在编程中&#xff0c;控制流程是指程序执行的顺序&#xff0c;即代码按照何种方式被执行。JavaScript作为一种强大的脚本语言&#xff0c;具备了灵活的控制流…