当前位置: 首页 > article >正文

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


http://www.kler.cn/news/107858.html

相关文章:

  • 监控数据控中的数据表
  • Linux cp命令:复制文件和目录
  • 设置Oracle数据库默认为spfle启动,并且设置数据库SGA大小和PGA大小
  • 如何监听/抓取两个设备/芯片之间“UART串口”通信数据--监视TXD和RXD
  • Postman —— 配置环境变量
  • Linux Centos7安装后,无法查询到IP地址,无ens0,只有lo和ens33的解决方案
  • Unity中从3D模型资产中批量提取材质
  • TypeScript -类型断言的简单理解
  • 牛客小白月赛80 D一种因子游戏
  • 【C++】C++入门(下)--内联函数 auto关键字 nullptr
  • Java IDEA controller导出CSV,excel
  • 07-定位布局
  • Nginx的进程结构实例演示
  • RK3568平台 IIC子系统框架
  • Mybatis基础
  • C语言之错误处理
  • 前端CodeReivew实践 | 京东云技术团队
  • lesson2(补充)关于const成员函数
  • IP网络矿用打点紧急广播方案
  • 业界中说的快速原型法是什么
  • 如何使用PHPicker在iOS系统无授权下获取资源
  • 从澎湃OS以小见大,看小米怎么玩转车机
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • Unity3D 多人联机网络游戏开发都存在哪些误区详解
  • 【mediasoup-sfu-cpp】5: SfuDemo:分发ok
  • 自然语言处理 (NLP) 简介
  • SpringBoot使用WebSocket收发实时离线消息
  • 【理论知识:Window Aggregation】flink 窗口聚合功能概述:两种窗口聚合模式的使用例子、功能说明
  • 【Codeforces】 CF582D Number of Binominal Coefficients
  • 浅谈 MySQL 主从复制,优点?原理?