mcpField
D
detecting-deepfake-audio-in-vishing-attacks

detecting-deepfake-audio-in-vishing-attacks

github.com/mukul975安全35.2k63 次安装8 周前更新
代码仓库

关于 detecting-deepfake-audio-in-vishing-attacks

面向安全运营、事件响应和欺诈调查人员的音频取证技能,用于分析语音钓鱼录音中的合成语音迹象。它结合声学特征、分类与频谱图检查,并生成取证报告。

主要功能

  1. 01预处理多种格式的音频
  2. 02提取 MFCC 与频谱特征
  3. 03使用集成分类器判别音频
  4. 04分析音高抖动等时序特征
  5. 05生成频谱图供人工检查
  6. 06汇总分析结果为取证报告

适用场景

  1. 01调查疑似冒充高管的语音电话
  2. 02评估录音是否包含合成语音
  3. 03为欺诈调查整理音频取证证据
  4. 04在红蓝队演练中测试语音检测

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill detecting-deepfake-audio-in-vishing-attacks

安装后在 Claude Code 中输入/detecting-deepfake-audio-in-vishing-attacks确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
agent.py

详细介绍

检测语音钓鱼攻击中的深度伪造音频

何时使用

  • 疑似语音钓鱼电话使用了 AI 克隆的高管声音来授权电汇
  • 安全运营团队收到一条语音留言,听起来像 CEO,但语气似乎不对
  • 事件响应需要确定一段录制的电话通话是否包含合成语音
  • 欺诈调查需要音频为 AI 生成的取证证明
  • 红队演练使用声音克隆,蓝队需要检测能力

不要使用于基于文本的网络钓鱼(电子邮件/短信);请改用电子邮件标头分析或 URL 引爆工具。

先决条件

  • 已安装 librosa、numpy、scikit-learn 和 scipy 的 Python 3.9+
  • WAV、MP3 或 FLAC 格式的音频样本(单声道或立体声,任意采样率)
  • 目标个人的已知真实语音样本参考语料库(可选,但可提高准确率)
  • 已安装 FFmpeg 用于音频格式转换(librosa 依赖项)
  • 至少 3 秒音频以进行可靠的特征提取

工作流

步骤 1:音频预处理

归一化并准备音频样本以进行特征提取:

import librosa
import numpy as np

# Load audio, resample to 16kHz mono
y, sr = librosa.load("suspect_call.wav", sr=16000, mono=True)

# Trim silence from beginning and end
y_trimmed, _ = librosa.effects.trim(y, top_db=25)

# Normalize amplitude to [-1, 1]
y_norm = y_trimmed / np.max(np.abs(y_trimmed))

音频预处理确保在不同录音条件、麦克风和编解码器伪影下进行一致的特征提取。

步骤 2:提取频谱特征

提取区分真实语音与合成语音的特征集:

梅尔频率倒谱系数(MFCC):

# Extract 20 MFCCs + delta and delta-delta
mfccs = librosa.feature.mfcc(y=y_norm, sr=sr, n_mfcc=20)
mfcc_delta = librosa.feature.delta(mfccs)
mfcc_delta2 = librosa.feature.delta(mfccs, order=2)

MFCC 捕捉语音的频谱包络,表示声道如何塑造声音。深度伪造音频通常在高阶 MFCC 中表现出不自然的平滑度,因为神经声码器近似但不完美复现物理声道的声学共振。

频谱特征:

spectral_centroid = librosa.feature.spectral_centroid(y=y_norm, sr=sr)
spectral_bandwidth = librosa.feature.spectral_bandwidth(y=y_norm, sr=sr)
spectral_contrast = librosa.feature.spectral_contrast(y=y_norm, sr=sr)
spectral_rolloff = librosa.feature.spectral_rolloff(y=y_norm, sr=sr)
zero_crossing_rate = librosa.feature.zero_crossing_rate(y_norm)

深度伪造音频的关键指标:

  • 4-8 kHz 范围内的频谱对比度降低(声码器压缩高频细节)
  • 频谱质心随时间异常一致(真实语音具有自然变化)
  • 过零率方差较低(合成语音缺乏微扰动)
  • 辅音-元音边界处共振峰过渡缺失或衰减
步骤 3:构建特征向量并分类

将帧级特征聚合成固定长度向量并进行分类:

from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.model_selection import cross_val_score

def build_feature_vector(y, sr):
    features = []
    mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=20)
    for coeff in mfccs:
        features.extend([np.mean(coeff), np.std(coeff), np.min(coeff), np.max(coeff)])
    for feat_fn in [librosa.feature.spectral_centroid,
                    librosa.feature.spectral_bandwidth,
                    librosa.feature.spectral_rolloff,
                    librosa.feature.zero_crossing_rate]:
        feat = feat_fn(y=y, sr=sr) if feat_fn != librosa.feature.zero_crossing_rate else feat_fn(y)
        features.extend([np.mean(feat), np.std(feat), np.min(feat), np.max(feat)])
    contrast = librosa.feature.spectral_contrast(y=y, sr=sr)
    for band in contrast:
        features.extend([np.mean(band), np.std(band)])
    return np.array(features)

分类使用集成方法:随机森林提供稳健性,梯度提升提供准确率,并通过投票机制减少误报。

步骤 4:时间伪影分析

检查神经声码器留下的时域伪影:

# Pitch stability analysis - deepfakes often have unnaturally stable F0
f0, voiced_flag, voiced_probs = librosa.pyin(y_norm, fmin=50, fmax=500, sr=sr)
f0_clean = f0[~np.isnan(f0)]
pitch_std = np.std(f0_clean) if len(f0_clean) > 0 else 0
pitch_jitter = np.mean(np.abs(np.diff(f0_clean))) if len(f0_clean) > 1 else 0

真实人类语音表现出自然的音高抖动(基频的微变化)和振幅微扰(振幅扰动)。由 Tacotron 2、VALL-E 或 ElevenLabs 生成的深度伪造音频与真实语音相比通常表现出降低的抖动和微扰。

步骤 5:频谱图目视检查

生成频谱图以供人工取证审查:

import librosa.display
import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2, figsize=(14, 10))
librosa.display.specshow(librosa.power_to_db(librosa.feature.melspectrogram(y=y_norm, sr=sr)),
                         sr=sr, ax=axes[0, 0], x_axis='time', y_axis='mel')
axes[0, 0].set_title('Mel Spectrogram')
librosa.display.specshow(mfccs, sr=sr, ax=axes[0, 1], x_axis='time')
axes[0, 1].set_title('MFCCs')

目视检查可揭示梅尔频谱图中的条带伪影、声码器频率上限以上的不自然能量截止,以及高频范围内神经语音合成特有的周期性噪声模式。

步骤 6:生成取证报告

将发现汇总为可操作的报告:

DEEPFAKE AUDIO ANALYSIS REPORT
================================
File:              suspect_executive_call.wav
Duration:          47.3 seconds
Sample Rate:       16000 Hz
Analysis Date:     2026-03-19

CLASSIFICATION RESULT
Verdict:           LIKELY DEEPFAKE (confidence: 94.2%)
Ensemble Score:    RF=0.91, GBT=0.97, Avg=0.94

FEATURE ANOMALIES DETECTED
- MFCC variance in coefficients 13-20: 62% below genuine baseline
- Spectral contrast (4-8 kHz): 0.23 (genuine avg: 0.41)
- Pitch jitter: 0.8 Hz (genuine avg: 2.4 Hz)
- Zero-crossing rate std: 0.003 (genuine avg: 0.011)

SPECTROGRAM ARTIFACTS
- Energy cutoff above 7.8 kHz (consistent with neural vocoder ceiling)
- Banding pattern at 50ms intervals in mel spectrogram
- Missing formant transitions at 12.4s, 23.1s, 35.7s timestamps

RECOMMENDATION
High confidence of AI-generated audio. Recommend out-of-band
verification with the purported speaker. Preserve original audio
file with chain of custody documentation for potential legal action.

关键概念

术语定义
MFCC梅尔频率倒谱系数;在梅尔(感知)频率尺度上对短时功率谱的表示
频谱质心信号中现有频率的加权平均值;表示声音的感知亮度
频谱对比度频谱中各频率子带上峰值与谷值之间的幅度差
声码器从声学特征合成音频波形的信号处理组件;用于 TTS 和声音克隆
音高抖动基频的逐周期变化;在人类语音中自然存在,在合成语音中减少
语音钓鱼通过电话进行的社交工程攻击,越来越多地使用 AI 克隆声音
共振峰定义元音声音的声道共振频率;共振峰之间的过渡对 AI 来说难以完美复现

工具与系统

  • librosa:用于音频分析的 Python 库,提供 MFCC、频谱特征提取和频谱图生成
  • scikit-learn:用于随机森林和梯度提升分类的机器学习库
  • Resemblyzer:用于比较已知真实样本和可疑样本之间声音身份的说话人嵌入库
  • Speechbrain:用于语音处理的深度学习工具包,带有预训练的深度伪造检测模型
  • Praat:用于对语音样本进行详细音高、抖动和微扰分析的语音学软件
  • FFmpeg:librosa 所需的音频格式转换和预处理实用程序

常见场景

场景:高管冒充电汇欺诈

背景:CFO 接到一个看似来自 CEO 的电话,要求紧急电汇 $2.3M。电话来自未知号码,但声音听起来与 CEO 完全相同。IT 安全部门能够从电话系统获取通话录音。

方法:

  1. 从电话系统录音中提取音频并转换为 16kHz 的 WAV
  2. 对可疑音频运行 MFCC 和频谱特征提取
  3. 与来自录制会议的已知真实 CEO 声音样本进行比较
  4. 根据人类语音基线分析音高抖动和微扰
  5. 使用训练好的集成模型进行分类并生成置信度分数
  6. 生成带有频谱图证据的取证报告,用于法律/合规

陷阱:

  • 电话编解码器压缩(G.711、AMR)会降低音频质量,并可能掩盖深度伪造痕迹
  • 短音频片段(低于 3 秒)会产生不可靠的特征统计
  • 通话环境中的背景噪声会降低分类准确性
  • 高度复杂的声音克隆(例如,使用 30+ 分钟训练数据微调的 VALL-E)可能逃避基本特征分析
  • 通过 VoIP 传输的真实语音可能表现出与深度伪造相似的频谱伪影

评论

支持 Markdown