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渗透测试经常要快照回滚——你搞崩了模型环境,一键恢复,不心疼。
- 下载镜像:去Kali官网下VMware或VirtualBox专用镜像。别下错了,选「Kali Linux VMware 64-bit」那个。
- 分配资源:至少4核CPU、8GB内存、80GB硬盘。AI模型跑起来吃内存,我见过有人只给2GB,跑个BERT直接OOM(内存溢出)。
- 网络模式:选NAT模式。桥接模式容易暴露你的测试机到真实网络,不安全。
- 安装后更新:
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示例 | 输出「攻击成功」 |
环境搭好了,下一章咱们就开始真刀真枪地搞攻击了。记住:环境是基础,基础不牢,地动山摇。我见过太多人一上来就搞高级攻击,结果环境没配好,折腾半天连个模型都加载不了。
嗯,先把这一步走稳。后面的事,后面再说。