巧妙绕过面部活体检测

摘要 在现有社交媒体的今天,聊天视频是社交的一种手段,而面部活体检测则成为抵御身份欺诈的最后一道屏障。但是,攻击者可以通过虚拟摄像头注入预录视频,绕过面部活体检测的传感器层。 本文深入拆解这一攻击手法的实施方式及其背后的技术逻辑,并探讨对身份验证体系的深层威胁与防御方向。 身份验证 在数字世界里,“证明你是你”是一个根本性的安全命题。主流的身份验证方式可以分为四个递进的层级: 知识因子:密码、PIN码、安全问题。这是成本最低、也最容易被钓鱼和爆破的方式。 持有因子:一次性验证码、硬件令牌。增加了攻击成本,但SIM卡劫持和OTP拦截已相当成熟。 文档因子:身份证、护照、驾照。通过OCR提取信息并与数据库比对,但证件伪造产业已高度工业化。 生物特征因子:人脸、指纹、虹膜、声纹。因为“身体无法被窃取”,被视为最强验证手段。 其中,面部识别因其非接触、低摩擦的特性,成为金融、加密货币交易平台等高风险场景的首选。但它回答的仅仅是“这是对的人吗?”,而一个更前置的问题——“这是真人吗?”——则由面部活体检测来回答。 面部活体检测的本质,是判断摄像头前呈现的到底是一个真实的、有生命的人类,还是一个伪造的呈现物。根据实现方式,它分为两大流派: 类型 机制 优势 劣势 被动活体检测 无需用户配合,通过分析输入图像的纹理、光照、颜色空间等特征判断真伪 用户体验好,快速无感 对输入质量要求高,低光环境等场景表现不佳 主动活体检测 要求用户做出指定动作(转头、眨眼、追踪移动物体等) 难以用预录视频欺骗 体验繁琐,用户容易不耐   然而,这个看似坚固的防御体系,正在面临一种根本性的威胁——攻击者选择直接欺骗传感器本身。 传统呈现攻击 在学术界,对生物识别传感器的攻击被称为“呈现攻击”,常见有三种形态: 2D静态欺骗:将目标的高清照片打印在纸上,或显示在手机、显示器屏幕上,对着摄像头展示。 视频重放攻击:播放预先录制或AI生成的视频,而非静态图像。 3D硅胶面具:制作高仿真的三维面具,物理上覆盖攻击者的面部。 2019年曾发生过一起轰动行业的真实案例:诈骗者使用硅胶面具,通过Skype视频通话冒充法国外交部长,骗取了高达9000万美元的资金。 在这三种方法中,视频重放攻击看似最经济,但存在两个难以克服的技术短板: 一是质量损失。 当预录视频通过显示器屏幕再次被摄像头捕获时,会经历一次“二次采样”——摄像头的CMOS传感器重新捕捉屏幕发出的光线,这个过程必然引入: 颜色空间退化:原始视频的HSV/HSL色彩信息被压缩并二次编码,饱和度与亮度曲线发生偏移; 对焦/模糊损失:显示器的像素网格与摄像头的对焦系统之间产生摩尔纹或柔焦效果; RGB通道失真:屏幕的背光光谱与自然光不同,灰度层次被压缩。 二是显示器物理特征的暴露。 任何显示屏都无法完全隐藏自身的存在: 屏幕表面的眩光和反射; 特定角度的色度偏移; 显示器刷新率导致的频闪(50Hz/60Hz的电网频率残留)。 这些特征正是活体检测系统重点捕捉的异常信号。2019年Black Hat大会上展示的硬件级视频注入方案虽然有效,但基于专用芯片(如TC358749XBG)的搭建成本高、资源消耗大,不具备大规模滥用条件。 这就引出了一个关键问题:能不能绕过“显示器呈现”这个环节,直接把视频信号注入给验证系统? 虚拟摄像头注入 核心思路极为简洁: 传统攻击:真人视频 → 显示器播放 → 摄像头“看”屏幕 → 验证系统 注入攻击:预录视频…

利用TG收集网页钓鱼信息

引言 在不断演变的网络威胁环境中,网络钓鱼攻击早已脱离了粗制滥造的早期形态,演变得愈发隐蔽和精巧。如今的攻击者不仅擅长利用像素级复刻的伪造 HTML 登录页面来攻破用户的心理防线,更在窃取数据的“最后一公里”展现出了极其狡猾的一面——他们正越来越多地将目光投向了 Telegram 等合法的即时通讯平台,将其转化为数据外发的“暗道”。 传统上,黑客往往依赖自建的服务器来接收窃取的账号密码,但这些未知 IP 和域名极易被安全软件标记并拦截。为了在重重防御中隐匿行踪,现代网络钓鱼攻击开始巧妙地“寄生”于受信任的合法服务之上。通过在恶意 HTML 页面中嵌入自动化脚本,攻击者能够将受害者提交的敏感凭证,利用 Telegram Bot API 转化为加密消息,悄无声息地推送到攻击者的手机端。 由于企业防火墙和安全网关通常不会拦截流向 Telegram 的正常 HTTPS 流量,这种“滥用合法通道”的策略使得数据窃取过程如同披上了隐形斗篷,极大地增加了安全团队检测和阻断的难度。 本文将深入探讨这一结合了社会工程学与云服务滥用的威胁模型。我们将揭开“伪造登录页面与 Telegram 数据外传”协同运作背后的逻辑,分析这种攻击方式为何如此难以被传统安全手段察觉,并探讨企业和个人应如何升级防御体系,以抵御这种暗藏杀机的新型钓鱼攻击。 伪造登录页面并集成TG 整个攻击流程的第一步,是向用户展示一个极具迷惑性的虚假登录表单,诱导受害者输入其用户名和密码。当受害者点击“登录”按钮时,真正起作用的并非合法的验证机制,而是潜伏在网页后台的恶意 JavaScript 代码。这些代码会瞬间截获用户输入的敏感数据,随后调用 Telegram Bot API,将窃取到的凭证作为消息,直接且隐蔽地推送到攻击者的 Telegram 聊天窗口中。 为此,我们简单的创建个登录表单: <div class="login-container"> <h2>登 录</h2> <form id="loginForm"> <div class="input-group"> <input type="text" id="username" placeholder="用户名" required> </div> <div class="input-group"> <input type="password" id="password" placeholder="密码" required> </div>…

绕过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]…