绕过SMB强制签名执行反射攻击

简介 在信息安全领域,已修复漏洞的再次出现是一个持续存在的挑战。 本文在对 Active Directory 环境中的中继攻击进行深入研究时,发现了一种新型的反射式 Kerberos 中继攻击。自微软发布 MS08-068 补丁以阻止 NTLM 消息被中继回源主机后,类似的反射攻击被认为已得到有效缓解。然而,我们的研究证实,通过将攻击向量从 NTLM 转向 Kerberos,可以绕过这一经典防护机制。 研究表明,若攻击者能强制任意 Windows 主机通过 SMB 向其发起 Kerberos 身份验证,便可截获并中继该主机的计算机账户票证,攻击主机自身的服务,最终利用一个提权漏洞获得 NT AUTHORITYSYSTEM 级别的特权,并实现远程代码执行 (RCE)。 要了解该反射攻击我们首先需要了解 CVE-2025-33073 – 反射型 Kerberos 中继攻击漏洞。 反射型 Kerberos 中继攻击 2025年1月,RedTeam Pentesting 在一次深入研究中,偶然发现了一个潜藏在 Kerberos 认证机制中的严重漏洞——命名为“反射式 Kerberos 中继攻击”,并获得了CVE编号CVE-2025-33073。在将详尽的白皮书提交给微软后,官方已于2025年6月10日发布了修复程序。 攻击的起点非常经典:我们强制一台 Windows 主机通过 SMB 连接到我们的攻击系统,并使用 Kerberos 进行身份验证。按照传统的中继攻击逻辑,当我们把这枚 Kerberos 票证再“反射”回主机自身时,我们本以为最多只能拿到一个普通的计算机账户会话。但一个惊人的结果出现了——我们建立的 SMB 会话,其权限竟然直接跃升至 NT AUTHORITYSYSTEM。这个意料之外的权限提升,将一个看似普通的认证中继,变成了一把能够执行任意命令、完全控制系统的钥匙。…

Redis编写自定义模块

简介 Redis自定义模块允许用户扩展Redis的功能,添加新的命令和数据类型。这种灵活性使得Redis不仅仅是一个键值存储,还可以用于更复杂的应用场景。然而,这也带来了潜在的安全风险,攻击者可能利用这些自定义模块执行恶意命令。下面是关于Redis自定义模块执行命令的介绍和漏洞利用方法。 Redis自定义模块介绍 Redis自定义模块是从Redis 4.0版本开始引入的,允许开发者编写自己的模块并加载到Redis中。模块可以用C语言编写,并编译成动态库(.so文件),然后通过Redis命令加载。 创建模块文件:编写一个简单的C语言文件,例如malicious_module.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "redismodule.h" int MaliciousCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { RedisModule_ReplyWithSimpleString(ctx, "Malicious code executed!"); return REDISMODULE_OK; } int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { if (RedisModule_Init(ctx, "malicious_module", 1, REDISMODULE_APIVER_1) == REDISMODULE_ERR) { return REDISMODULE_ERR; } if (RedisModule_CreateCommand(ctx, "malicious_command", MaliciousCommand, "write", 1, 1,…

Linux Shellcode 编写

Shellcode简介 Shellcode是一段用于利用软件漏洞的有效负载,它通常是用汇编语言编写的机器码,可以执行特定的功能,例如启动一个命令行shell,从而让攻击者控制被攻击的机器。Shellcode之所以被称为shellcode,是因为它最初的目的是在目标系统上执行/bin/sh命令,打开一个交互式shell。 Shellcode可以根据攻击者是否在目标机器上执行有效负载分为本地shellcode和远程shellcode。本地shellcode通常用于在攻击者对计算机的访问权限有限,需要利用软件漏洞提升权限的情况。远程shellcode通常用于在攻击者以运行在某个网络中的另一台机器上的易受攻击的进程为目标时,如果成功执行,shellcode可以通过网络访问目标主机。 汇编基础 以编译输出wolf为例,编写wolf.asm文件如下: BITS 32 section .data msg db "wolf", 0xa section .text global _start _start: mov eax, 4 ; syscall to write() mov ebx, 1 mov ecx, msg mov edx, 4 int 0x80 mov eax, 1 mov ebx, 0 int 0x80 然后执行以下命令安装并编译: apt-get install libc6-dev-i386 ┌──(root㉿kali)-[/usr/src/linux-shellcode] └─# nasm -f elf32 wolf.asm ┌──(root㉿kali)-[/usr/src/linux-shellcode]…