CNG加密API-BCryptOpenAlgorithmProvider、BCryptGetProperty、BCryptCreateHash与BCryptHashData、BCryptFinishHash
BCryptOpenAlgorithmProvider基本概念BCryptOpenAlgorithmProvider是Windows系统中BCrypt (Cryptography Next Generation, CNG)接口的核心函数,作用是: 打开指定加密算法的 “算法提供程序” 句柄(类似于获取算法的操作入口); 后续可通过该句柄调用加密、解密、哈希、签名等具体加密操作; 支持指定算法实现的提供商(如微软默认的MS_PRIMITIVE_PROVIDER),也可留空使用系统默认提供商。 基本语法123456NTSTATUS BCryptOpenAlgorithmProvider( [out] BCRYPT_ALG_HANDLE *phAlgorithm, //打开的算法句柄 [in] LPCWSTR pszAlgId, //算法标识符(如哈希、加密算法的字符串) [in] LPCWSTR pszImplementation,//算法提供商(通常为 NULL 使用默认) [in] ULONG ...
Windows加密API-CryptCreateHash、CryptHashData与CryptGetHashParam
CryptCreateHash基本概念CryptCreateHash属于Windows CryptoAPI(Advapi32.dll),作用是初始化一个哈希计算上下文(哈希对象),后续可通过CryptHashData向该对象添加数据,最终通过 CryptGetHashParam获取哈希结果。 基本语法1234567BOOL CryptCreateHash( [in] HCRYPTPROV hProv,// 加密服务提供程序(CSP)的句柄 [in] ALG_ID Algid,// 哈希算法标识符 [in] HCRYPTKEY hKey, // 密钥句柄(哈希计算时设为NULL) [in] DWORD dwFlags,// 标志位(通常设为0) [out] HCRYPTHASH *phHash //创建的哈希对象句柄); 数据类型ALG_ID: 1typedef unsigned int ALG_ID; ALG_ID本质是无符号整数,专门用来标识Windows CryptoAPI中的加密 / 哈希算法. 1234567ALG_ID ...
Windows加密API-CryptAcquireContext与CryptReleaseContext
基本概述CryptAcquireContext是Windows加密API(CryptoAPI)中的核心函数,主要作用是获取一个加密服务提供程序(CSP)的上下文句柄。这个句柄是后续所有加密操作(如创建 / 打开密钥、加密 / 解密数据、数字签名 / 验证等)的基础,相当于 “登录” 到系统的加密服务,拿到操作权限。简单来说:没有这个函数获取的上下文句柄,你无法使用 Windows 系统提供的加密功能(比如使用RSA加密、生成数字证书等)。 CryptReleaseContext是Windows CryptoAPI中用于释放通过CryptAcquireContext获取的CSP上下文句柄(HCRYPTPROV)的专用函数。简单来说,它的作用就是 “归还” 你之前从系统申请的加密服务资源,相当于加密操作完成后的 “注销登录”,是避免内存 / 资源泄漏的核心步骤。只要调用CryptAcquireContext成功获取了HCRYPTPROV句柄,就必须调用这个函数释放,否则会导致进程持有的系统加密资源无法回收。 基本语法12345678910111...
渗透作业-远程控制
远程控制攻击(正向连接 vs 反向连接)远程连接攻击是渗透测试、网络安全实训中常用的技术(仅限授权场景),核心目标是建立主控端与被控端的通信通道,实现对目标设备的远程控制。其核心分为「正向连接」和「反向连接」两种模式,本质差异在于连接发起方不同。 正向连接(主动连接模式)核心逻辑:主控端主动发起连接,被控端被动监听类比:你(主控端)主动拨打朋友(被控端)的电话,朋友提前守在电话旁等待接听。 极简流程: 攻击者在被控端植入「正向木马」,配置木马在特定端口(如 8888)监听; 主控端(如 Kali)通过被控端的公网 IP + 监听端口,主动发起连接请求; 被控端验证连接后建立通道,攻击者通过通道控制目标设备。 反向连接(被动连接模式)核心逻辑:被控端主动发起连接,主控端被动监听类比:朋友(被控端)提前记下你的电话号码,主动拨打给你(主控端),你只需等待来电即可。 极简流程(对应你的实验): 攻击者在主控端(Kali)用msfvenom生成「反向木马」(内置主控端 IP + 监听端口); 主控端通过Metasploit的multi/handler模块,在...
TCP53端口和UDP53端口
相同点TCP 53和UDP 53端口均是DNS(域名系统)服务的专用端口,核心功能是实现 “域名→IP 地址” 的映射(如将www.baidu.com解析为180.101.49.11),但因底层传输协议`(UDP/TCP)`的特性差异,两者在用途、工作机制、适用场景上完全互补,共同保障`DNS`服务的高效与可靠。 不同点UDP 53端口UDP(用户数据报协议)是无连接协议,核心特点是 “快、轻量、无额外开销”,因此UDP 53成为DNS的默认传输方式,覆盖了90%以上的日常域名解析场景。 核心特性 无连接:客户端无需与DNS服务器建立连接,直接发送解析请求,服务器收到后直接返回响应,省去 “建立连接→断开连接” 的流程,延迟极低; 不可靠传输:UDP不保证数据一定送达(无重传机制)、不保证顺序(数据包可能乱序),但DNS查询通常简短,丢失概率极低,即使丢失,客户端会自动重试(默认重试 2-3 次); 数据长度限制:单条UDP DNS请求 / 响应的最大长度为512字节(这是DNS协议的规定),超过则会被服务器 “截断”(返回TC=1标志,告知客户端 “数据太长,需用T...
主动扫描工具Nmap
Nmap(Network Mapper)是一款开源的网络扫描与安全审计工具,广泛应用于网络探测、端口扫描、服务识别、操作系统指纹识别等场景,是网络安全工程师、系统管理员必备的工具之一。 核心功能:1.端口扫描 这是Nmap最基础的功能,可探测目标主机开放的TCP/UDP端口,判断哪些网络服务正在运行。 支持多种扫描方式,如TCP全连接扫描(-sT)、SYN半开放扫描(-sS,默认)、UDP 扫描(-sU)、FIN 扫描(-sF)等,不同方式适用于不同网络环境和隐蔽性需求。2.服务与版本识别(-sV)扫描开放端口上运行的服务类型(如Apache、SSH、MySQL)及具体版本号,帮助识别潜在漏洞(如特定版本的Heartbleed漏洞)。3.操作系统指纹识别(-O)通过分析目标主机的TCP/IP协议栈特征,判断其操作系统类型(如Windows 10、Ubuntu 22.04、CentOS 7)及版本。4.主机发现(-sn)不进行端口扫描,仅探测目标网段内存活的主机,常用方式包括ICMP ping、TCP SYN ping、UDP ping等,适用于大型网段的主机存活排查。...
网络空间搜索引擎
ZoomEyeZoomEye(钟馗之眼)是中国知名网络安全公司知道创宇推出的一款网络空间测绘引擎。它通过持续不断地扫描整个互联网,来探测、识别和索引网络设备、服务器、Web服务等各种网络资产。 核心功能与特点1.资产发现与识别 设备识别:能够识别路由器、摄像头、打印机、工业控制系统等各类联网设备。 服务探测:精准识别开放的端口及其运行的服务,如SSH, FTP, HTTP, Redis等。 组件指纹识别:通过Banner信息、网页特征等,识别操作系统、Web服务器(Apache/Nginx/IIS)、中间件、CMS(如WordPress, Joomla)及其版本号。2.强大的搜索语法ZoomEye的核心竞争力在于其丰富且灵活的搜索语法,让你能精确锁定目标。 基础组件/服务搜索: app:"Apache Tomcat" - 搜索运行Apache Tomcat的服务。 app:"Microsoft IIS httpd" - 搜索运行微软IIS的服务。 port:3389 - 搜索开放了3389...
环境变量操作API-GetEnvironmentStrings与FreeEnvironmentStrings
基本概念GetEnvironmentStrings和FreeEnvironmentStrings是Windows API中成对使用的环境变量操作函数:前者用于获取当前进程的「所有环境变量完整缓冲区」,后者用于释放该缓冲区,核心是实现「安全遍历所有环境变量」并避免内存泄漏。GetEnvironmentStrings:分配一块内存,存储当前进程的所有环境变量(格式:NULL分隔的字符串列表,结尾双NULL终止),返回缓冲区指针。FreeEnvironmentStrings:释放GetEnvironmentStrings分配的缓冲区,回收系统资源。 强制规则:仅GetEnvironmentStrings分配的缓冲区,能通过FreeEnvironmentStrings释放(不可释放malloc/LocalAlloc等手动分配的内存);缓冲区需「分配一次 + 释放一次」,重复释放会导致内存损坏,不释放会导致资源泄漏;释放后,原缓冲区指针失效,不可再访问(避免野指针操作)。 基本语法12345678910111213// GetEnvironmentStrings(分配缓冲区)// Unic...
注册表类API-RegEnumValue
基本概念RegEnumValue是Windows注册表API 中的值项枚举函数,用于遍历指定注册表键(HKEY)下的所有「值项」(包括默认值),获取每个值项的名称、数据类型、数据大小等信息。配合循环调用,可完整枚举键下所有值项,是注册表批量读取、备份等场景的核心接口。 基本语法1234567891011121314151617181920212223// Unicode 版本LSTATUS RegEnumValueW( [in] HKEY hKey, //打开的注册表项的句柄 [in] DWORD dwIndex, //要枚举的值项索引(从 0 开始,依次递增) [out] LPWSTR lpValueName, // 接收值项名称的缓冲区 [in, out] LPDWORD lpcchValueName,// 输入:缓冲区大小(字符数,含 \0);输出:实际名称长度(不含 \0) LPDWORD lp...
注册表类API-RegGetValue
基本概念RegGetValue是Windows Vista及以上系统提供的注册表读取增强函数,整合了RegOpenKeyEx + RegQueryValueEx + RegCloseKey的核心功能,支持直接读取指定路径的注册表值项(默认值或命名值),无需手动管理键句柄,大幅简化代码逻辑,是现代Windows开发中推荐的注册表读取接口。 基本语法123456789101112131415161718192021// Unicode 版本LSTATUS RegGetValueW( [in] HKEY hkey, //打开的注册表项的句柄 [in, optional] LPCWSTR lpSubKey, //子键路径(相对于 hKey,NULL 表示直接读取 hKey 的值) [in, optional] LPCWSTR lpValue, //要读取的值项名称(NULL 表示默认值) [in, optional] DWORD dwFlags, //读取标志(控制类型检查、扩展环境变量等) [o...
