字符串处理API-StringCchCopy、ExpandEnvironmentStrings与StringCchPrintf
StringCchCopy基本概述StringCchCopy是Windows提供的字符串安全拷贝函数,属于StrSafe.h头文件下的StrSafe库,目的是替代传统的strcpy等字符串拷贝函数(避免缓冲区溢出),它会严格检查目标缓冲区的大小,确保拷贝操作不会越界,提升代码安全性。 基本语法12345STRSAFEAPI StringCchCopyA( [out] STRSAFE_LPSTR pszDest,// 目标字符串缓冲区 [in] size_t cchDest,// 目标缓冲区的大小(以字符数为单位,包含终止符 '\0') [in] STRSAFE_LPCSTR pszSrc // 源字符串); 返回值HRESULT类型,常见返回值:S_OK:拷贝成功,且目标字符串以\0终止。STRSAFE_E_INSUFFICIENT_BUFFER:目标缓冲区空间不足,拷贝失败(此时目标缓冲区会被置为空字符串)。 数据类型STRSAFE_LPSTR: 1typedef _Null_terminated_ char* STRSAFE_L...
目录(Catalog)验证API-CryptCATAdminCalcHashFromFileHandle、CryptCATAdminEnumCatalogFromHash、CryptCATCatalogInfoFromContext、CryptCATAdminAcquireContext
CryptCATAdminAcquireContext基本概念CryptCATAdminAcquireContext是Windows 目录(Catalog)验证体系的 “入口函数” —— 所有目录相关操作(计算文件哈希、查找目录条目、提取.cat 文件路径)都必须先通过这个函数获取目录管理上下文句柄(HCATADMIN),它的作用类似于打开一个 “目录操作的会话”。 基本语法12345BOOL CryptCATAdminAcquireContext( [out] HCATADMIN *phCatAdmin,//上下文句柄(调用前设为NULL) [in] const GUID *pgSubsystem,//子系统GUID(几乎所有场景传NULL) [in] DWORD dwFlags //标志位(固定传0)); 返回值TRUE-成功FALSE-失败 ERROR_OUTOFMEMORY:内存不足 ERROR_INVALID_PARAMETER:参数未初始化(如phCatAdmin没设NULL) ERROR_ACCESS_DENIED:权限不足(需...
信任验证API-WinVerifyTrust
基本概念WinVerifyTrust是Windows系统中用于验证数字签名、证书链和信任状态的核心API。它可以验证文件、目录(catalog)、证书、驱动程序等对象是否可信。WinVerifyTrust是Windows提供的信任验证接口,位于wintrust.dll。它的作用是: 验证文件是否有有效的数字签名 验证签名证书是否由受信任的CA颁发 检查证书是否被吊销 验证目录文件(.cat)中的文件哈希是否可信 验证驱动程序、安装包等是否符合Windows信任策略 基本语法12345LONG WinVerifyTrust( [in] HWND hwnd, //调用方窗口的可选句柄 [in] GUID *pgActionID,//指定验证策略 [in] LPVOID pWVTData //包含待验证对象的信息); 返回值返回值是LONG类型。常见返回值:ERROR_SUCCESS (0):验证成功TRUST_E_NOSIGNATURE:文件没有签名TRUST_E_EXPLICIT_DISTRUST:被显式标记为不信任TRUST_E_SU...
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...
