2、环境搭建:搭建AI渗透测试实验室

好,咱们正式开始动手了。

这一章,我带你搭一个能用的AI渗透测试环境。说白了,就是给你的Kali Linux装上「眼睛」和「拳头」——眼睛能看穿模型,拳头能打穿漏洞。

我个人习惯把实验室分成三层:基础层(Kali)、容器层(Docker)、框架层(PyTorch/TensorFlow)。一层层往上搭,稳得很。

2.1 为什么非要用Kali Linux?

你可能想问:我用Ubuntu不行吗?

行,当然行。但Kali预装了400+渗透测试工具,省了你90%的安装时间。我当年第一次搞AI安全时,傻乎乎地在Ubuntu上一个个装工具,光配依赖就花了两天。后来换了Kali,半小时搞定。

嗯,这里要注意:Kali默认是root用户,权限大,但也容易手滑。建议你开个普通用户做日常操作,root只用来装系统级工具。

我的推荐版本:Kali Linux 2023.4 或更新版本。内核6.0以上,对GPU驱动支持更好。

2.2 第一步:装Kali(虚拟机版)

我建议新手先用虚拟机,别直接物理机装。为啥?因为AI渗透测试经常要快照回滚——你搞崩了模型环境,一键恢复,不心疼。

  1. 下载镜像:去Kali官网下VMware或VirtualBox专用镜像。别下错了,选「Kali Linux VMware 64-bit」那个。
  2. 分配资源:至少4核CPU、8GB内存、80GB硬盘。AI模型跑起来吃内存,我见过有人只给2GB,跑个BERT直接OOM(内存溢出)。
  3. 网络模式:选NAT模式。桥接模式容易暴露你的测试机到真实网络,不安全。
  4. 安装后更新:
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y python3-pip git curl wget

小技巧:装完立刻拍个快照。我每次搭新环境都拍,后面翻车了直接回滚,省得重装。

2.3 第二步:Docker——隔离你的「战场」

Docker在AI渗透测试里太重要了。你想啊,你攻击一个模型,可能把它的依赖搞坏,或者把系统库搞乱。用Docker容器隔离,搞坏了删掉重建,几秒钟的事。

我曾经在项目里同时跑5个不同版本的PyTorch环境,全靠Docker。要是没它,依赖冲突能让我崩溃一整天。

2.3.1 安装Docker

sudo apt install -y docker.io
sudo systemctl enable docker --now
sudo usermod -aG docker $USER
# 退出终端重新登录,让用户组生效

验证安装:

docker --version
docker run hello-world

看到「Hello from Docker!」就对了。

2.3.2 安装Docker Compose(可选但推荐)

当你需要同时启动多个容器(比如模型服务+攻击工具+监控),Compose就派上用场了。

sudo apt install -y docker-compose

注意:Kali默认的Docker源可能比较旧。如果你遇到安装失败,试试添加Docker官方源:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update && sudo apt install -y docker-ce

2.4 第三步:AI框架安装

核心来了。AI渗透测试离不开两个框架:PyTorch 和 TensorFlow。我个人偏爱PyTorch,因为它的动态图机制在调试对抗样本时特别方便。但TensorFlow在模型部署场景里更常见,所以两个都得装。

2.4.1 安装PyTorch

先确认你有没有NVIDIA显卡:

lspci | grep -i nvidia

如果有,装CUDA版;如果没有,装CPU版。

有GPU(CUDA 11.8):

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

无GPU(CPU版):

pip3 install torch torchvision torchaudio

验证:

python3 -c "import torch; print(torch.__version__); print('CUDA可用:', torch.cuda.is_available())"

避坑指南:我曾经在Kali上直接pip装PyTorch,结果装成了CPU版,跑对抗样本生成慢得像蜗牛。后来才发现是没装CUDA驱动。记住:先装NVIDIA驱动,再装CUDA toolkit,最后装PyTorch。顺序错了,白忙活。

2.4.2 安装TensorFlow

pip3 install tensorflow

验证:

python3 -c "import tensorflow as tf; print(tf.__version__); print('GPU:', tf.config.list_physical_devices('GPU'))"

2.4.3 安装其他常用库

做AI渗透测试,这几个库你迟早要用到:

库名 用途 安装命令
Adversarial Robustness Toolbox (ART) 对抗样本生成与防御 pip3 install adversarial-robustness-toolbox
Foolbox 快速生成对抗样本 pip3 install foolbox
CleverHans 对抗攻击基准库 pip3 install cleverhans
OpenCV 图像处理(很多AI模型输入是图像) pip3 install opencv-python
Jupyter 交互式调试 pip3 install jupyter

我的习惯:把所有依赖写进一个requirements.txt,一键安装:

pip3 install -r requirements.txt

内容大概这样:

torch==2.1.0
torchvision==0.16.0
tensorflow==2.13.0
adversarial-robustness-toolbox==1.15.0
foolbox==3.3.3
cleverhans==4.0.0
opencv-python==4.8.1
jupyter==1.0.0
numpy==1.24.3
matplotlib==3.7.2

2.5 验证环境:跑一个简单的对抗样本

环境搭好了,总得试试能不能用。我写个最简单的例子——用Foolbox对ResNet-18生成一个快速梯度符号法(FGSM)攻击。你跑通了,说明环境没问题。

import foolbox as fb
import torch
import torchvision.models as models

# 加载预训练模型
model = models.resnet18(pretrained=True).eval()
# 包装成foolbox模型
fmodel = fb.PyTorchModel(model, bounds=(0, 1))

# 生成一张测试图片(随机噪声)
images, labels = fb.utils.samples(fmodel, dataset="imagenet", batchsize=1)

# FGSM攻击
attack = fb.attacks.FGSM()
adversarials = attack(fmodel, images, labels)

# 检查是否攻击成功
print("原始标签:", labels)
print("攻击后预测:", fmodel(adversarials).argmax(axis=-1))
print("攻击成功!" if (fmodel(adversarials).argmax(axis=-1) != labels).any() else "攻击失败")

如果输出显示攻击成功,恭喜你——你的AI渗透测试实验室已经能跑了。

常见问题:

  • ImportError: No module named 'torch' → 没装PyTorch,或者装在了不同Python环境里。检查你用的是不是python3而不是python。
  • RuntimeError: CUDA out of memory → GPU内存不够。试试把batchsize调小,或者换CPU模式。
  • ModuleNotFoundError: No module named 'foolbox' → 没装foolbox。pip install一下。

2.6 环境检查清单

最后,给你一个自查表。我每次搭完环境都会过一遍:

检查项 命令 预期结果
Kali版本 cat /etc/os-release Kali GNU/Linux Rolling
Docker运行 docker ps 无报错,显示容器列表
PyTorch可用 python3 -c "import torch; print(torch.__version__)" 输出版本号,如2.1.0
TensorFlow可用 python3 -c "import tensorflow; print(tensorflow.__version__)" 输出版本号,如2.13.0
ART可用 python3 -c "import art; print(art.__version__)" 输出版本号
对抗样本生成 运行上面的FGSM示例 输出「攻击成功」

环境搭好了,下一章咱们就开始真刀真枪地搞攻击了。记住:环境是基础,基础不牢,地动山摇。我见过太多人一上来就搞高级攻击,结果环境没配好,折腾半天连个模型都加载不了。

嗯,先把这一步走稳。后面的事,后面再说。