Contents
1 前言
这篇文章算是我兑现好多年前自己给自己下的一个目标。起因是,当时在测试公司防 D 产品时,需要写一篇常用流量模拟工具(用于模拟各种网络攻击流量)的使用手册,我就想:干脆我来写一篇吧。结果后来拖拖拉拉,最终也没写出来(当时可没有现在写博客文章的这种主动劲,都是能拖就拖,能不写就不写~)。
再加上,现在的简中互联网环境下,这类文章已经很难找到了,就算还能零零星星找到一些,很多工具的下载方式、安装方法甚至使用步骤都已经发生了变化,导致想要了解和学习的朋友不仅难以获取完整的资料,还容易被过时的信息误导。既然如此,我索性就整理一篇,把这些工具的安装、配置和基本使用方法系统地记录下来,希望能帮到有需要的人,也顺便填补这一块内容的空缺。同时,也算是给当年的自己一个交代吧。
注:说得好听,其实是升级成了Cloudflare Pro之后,我想看看WAF的托管规则和对绝对自动流量的防御效果到底如何,权当做一次简单的安全测试,所以需要一个测试工具机,反正都要安装配置一个,随便记录下过程就好,还能水一篇文章~。
不过,当我依旧想用最熟悉的Debian系统来部署的时候,无意中发现了Kali Linux这个已经内置了不少网络攻击模拟工具的安全测试发行版。相比于在 Debian 上手动安装各种工具,Kali 直接提供了一个开箱即用的环境,省去了许多安装、依赖管理和配置的麻烦。
那么,Kali Linux 究竟是什么?它有哪些独特之处?
2 Kali Linux简介
Kali Linux 是一款专门用于渗透测试(Penetration Testing)、网络安全研究、计算机取证的操作系统,它的前身是 BackTrack Linux。
** Kali Linux 的起源**
• 2006 年:BackTrack Linux 诞生,由 Offensive Security(OSCP 认证的公司)开发,专注于网络安全和渗透测试。
• 2013 年:BackTrack 停止维护,Kali Linux 正式发布,作为 BackTrack 的继任者。
• 2020 年:Kali Linux 推出 非 root 默认用户模式,以增强安全性,并提供多种桌面环境(GNOME、XFCE、KDE)。
为什么 Kali Linux 内置这么多渗透工具?
- 专为渗透测试而生
• Kali Linux 由 Offensive Security(OSCP 认证机构)维护,他们的目标是为安全研究人员、红队和黑客提供开箱即用的安全测试环境。
- 内置 600+ 网络安全工具
• Kali 默认集成了大量著名的安全工具,包括:
• 信息收集:Nmap、Maltego、theHarvester
• 漏洞扫描:Nikto、SQLmap、OpenVAS
• 密码破解:John the Ripper、Hashcat、Hydra
• 无线渗透:Aircrack-ng、Kismet、Wifite
• Web 渗透:Burp Suite、ZAP、OWASP工具
• 社会工程:Social-Engineer Toolkit(SET)
• 后渗透:Metasploit、Empire、PowerShell攻击工具
• 匿名工具:Tor、ProxyChains、I2P
这些工具大部分是开源的,可以独立安装,但 Kali 直接集成,省去了单独配置的麻烦。
- 定制化内核,适合安全测试
• Kali 使用了 自定义 Linux 内核,允许启用无线网卡监听模式(Monitor Mode)、数据包注入等高级功能,方便无线安全测试。
- 适合离线/便携测试
• Kali 可运行在 Live USB、虚拟机、WSL、ARM 设备(树莓派),随时随地进行安全测试。
• Kali NetHunter 是一个适用于 Android 设备的 Kali 版本,支持手机上的无线测试。
我大概看了一下,Kali除了常用的渗透工具,我想要装的那些工具,在Kali中有部分已经预装了,比如hping3和slowloris,加上我还没玩过Kali Linux,所以这次就换个口味,不用Debian了,折腾一下Kali吧。
3 安装Kali Linux
3.1 安装方式的选择
KAli Linux支持多种安装方式:

其中,比较常用的应该是上图中红框标识的几种方式:Installer Images、Wirtual Machines、Containers(又分为docker和lxc/lxd),以下是这几种方式的对比:
方式 | Install Images(ISO 安装) | Virtual Machines(预装 VM 镜像) | Docker(容器) | LXC/LXD(轻量容器) |
---|---|---|---|---|
核心区别 | 传统完整安装方式 | 预装 Kali,适用于虚拟机环境 | 轻量级应用容器,运行单个或部分工具 | 轻量级系统容器,完整 Kali 体验 |
适用场景 | 物理机或 VM 需要完整 Kali | 在 VM 软件(如 VirtualBox、VMware、PVE)中运行 | 仅需特定 Kali 工具,自动化任务 | 需要完整 Kali,但不想用 VM |
系统完整度 | 完整 | 完整 | 仅部分工具 | 近乎完整,但可能有兼容性问题 |
性能消耗 | 物理机性能最佳 | 受限于 VM 资源分配 | 轻量级 | 轻量级,比 VM 更高效 |
是否有 GUI | 默认支持 | 预装 GUI | 默认无 GUI | 可选安装 GUI(但非默认) |
适合渗透测试 | 最适合 | 适合 | 仅适合 CLI 工具 | 适合,但可能需额外配置 |
适合 Proxmox VE | 可行,但不够高效 | 适合 | 需要额外配置 | 可行,但没有官方 PVE 模板 |
安装方式 | 通过 ISO 安装 | 直接下载 VM 硬盘镜像(OVA/VMDK) | docker pull 运行容器 | lxc-create 或 lxc launch |
适合长期使用 | 适合 | 适合 | 主要用于临时测试 | 适合,但管理方式与 PVE 传统 LXC 不同 |
可移植性 | 迁移不太方便(需手动克隆或重装) | 易于迁移 | 高,可随时移动 | 高,可随时移动 |
本来,按照我的想法,在 PVE 上部署 Kali 时,如果有 LXC 方式可用,肯定是优先选择 LXC 方式的,毕竟 LXC 具有更轻量的资源占用、更快的启动速度,以及与宿主机共享内核的优势。然而,Kali 的 LXC/LXD 方式与 PVE 上常见的 LXC 模板安装方式存在较大差异,它实际上是基于 Debian系统手动安装的(这种安装方式也适合其他的Linux发行版),而不是提供现成的 PVE 兼容模板直接拿来就能用。这意味着在 PVE 上使用 LXC 运行 Kali 需要手动配置,并不像常见的 LXC模板方式那样便捷,所以对我来说有点鸡肋的感觉。
相比之下,Virtual Machines(预装 VM 镜像) 方式更加简单高效,官方提供的 OVA/VMDK 镜像可以直接导入 PVE,无需手动安装和配置,省去了 ISO 方式安装时的繁琐步骤(官方已经完成了初始化工作)。同时,它也比 LXC 方式更接近完整的 Kali 体验,支持 GUI 并且不会因容器环境导致某些工具无法正常运行。因此,最终我选择了 Virtual Machines(预装 VM 镜像) 方式来部署 Kali,兼顾了安装便捷性、系统完整性和长期使用的稳定性。
注:如果你想在 PVE 上使用 Kali,但对 Virtual Machines(直接导入虚拟机镜像) 方式又不太熟悉,也可以选择 Install Images 方式。具体做法是:在 PVE 上新建一个虚拟机,下载 Install Images 的 ISO 镜像并挂载为光驱,然后从光盘引导然后一步一步根据提示安装 Kali。这种方式相对简单,适合不想折腾的用户,不过,相比直接使用 Virtual Machines 方式(挂载预装镜像),这种方法步骤多很多(毕竟相当于从头安装系统)。因此,如果你使用PVE安装Kali又希望节省性能开销,还是建议优先考虑Virtual Machines的方式。
3.2 PVE上使用 Virtual Machines 方式部署Kali
注:由于采用这种方式需要使用qm disk import
命令将qcow2格式的镜像文件导入指定的虚拟机,所以需要先创建虚拟机以获取其VM ID。
第一步、在PVE上创建一个虚拟机
按照如下图片教程在pve上创建一个虚拟机:








第二步、下载镜像并导入虚拟机

下载完成的文件是”.7z”扩展名的压缩包,解压后是qcow2格式的虚拟机镜像文件(假设为镜像文件名称为kali.qcow2)。将”kali.qcow2″镜像文件使用任意方式(sftp,ftp、smb)上传到PVE上的任意路径,假设是/var/lib/vz/images/
,然后使用qm disk import
命令将其导入之前新建的虚拟机中(此例中”VM ID”为112,存储为”local-lvm”):
qm disk import 112 /var/lib/vz/images/kali.qcow2 local-lvm
命令运行完成后会将镜像文件作为”未使用的磁盘”附加到VM 112中:






最后,就可以在控制台里开机了:

4 初始化kali
4.1 通过PVE控制台登入kali
初次启动时,需要从PVE控制台登录进入kali系统(默认登录系统时的用户名和密码均为”kali”):

进入系统:

注:sudo命令获取权限时的密码同样也是”kali”。
4.2 配置SSH远程登录
其实就是配置debian系统的SSH远程登录,默认openssh-server软件都是已经安装好了的,所以只需要设置一下相关配置文件即可,以允许kali账号使用用户名和密码远程SSH登录系统为例,需要进行如下设置:
* 允许使用kali账号名和密码登录SSH
默认kali的SSH只允许使用公钥方式登录,如果要使用用户名和密码登录,可以按照如下步骤操作。
编辑ssh_config
文件:
sudo vim /etc/ssh/ssh_config
去掉PasswordAuthentication
左边的#
号并保存:

然后重启ssh服务,之后就使用kali账号和密码通过SSH登录了:
sudo systemctl restart ssh
在设置SSH服务开机自启:
sudo systemctl enable ssh
注:记得使用sudo passwd
命令修改kali账号的默认密码。
- 允许使用root账号登录SSH(从安全性角度不推荐)
kali和其他Debian系统默认设置一样,root账号正常是被禁止登录SSH的,如果要允许root账号通过SSH登录,可以按照如下步骤操作。
编辑sshd_config
文件:
sudo vim /etc/ssh/sshd_config
去掉PermitRootLogin
左边的#
号,并将prohibit-password
改为yes
,然后保存:

然后重启ssh服务,之后就可以使用root账号和密码通过SSH登录了:
sudo systemctl restart ssh
注:记得使用sudo passwd root
命令修改root账号的默认密码。
4.3 通过VNC客户端通过远程桌面登录kali
4.3.1 碎碎念
因为我只需要SSH即可,而kali要支持远程桌面访问,不管是VNC还是XRDP都还要折腾一下,我实在是懒得弄了(关键还影响系统稳定性),不过为了文章的完整性,还是简单的写一下。
4.3.2 安装和配置tightvncserver
- 安装 VNC 服务器
sudo apt update
sudo apt install tightvncserver
- 初始化 VNC 服务器并设置密码
执行以下命令来启动 VNC 服务器:
vncserver
- 停止 VNC 服务器
初始化后,你可以停止 VNC 服务器,以便配置它:
vncserver -kill :1
- 配置 VNC 启动脚本
创建一个 xstartup 文件,通常位于 ~/.vnc 目录下,编辑它来配置你希望启动的桌面环境:
vim ~/.vnc/xstartup
修改文件内容,确保它包含你喜欢的桌面环境(例如 xfce4),然后保存:
#!/bin/sh
xrdb $HOME/.Xresources
startxfce4 &
- 重启 VNC 服务器
启动 VNC 服务器:
vncserver :1
这样,VNC 服务器就会在 :1(端口 5901)上启动,允许通过VNC客户端进行远程桌面访问。
最后只需要使用 VNC 客户端(如 TigerVNC, RealVNC, 或 Vinagre 等)连接到 Kali 的 VNC 服务器,地址是 Kali_IP:1,其中 Kali_IP 是 Kali Linux 的 IP 地址,:1 是 VNC 会话的显示号。
注:如果不使用VNC方式,xrdp方式也可以,网上教程很多,我就不重复写了。
5 kali默认集成工具的梳理
以下是 Kali Linux 默认集成的一些常用工具,按功能类别进行整理:
1、 信息收集 (Information Gathering)
- Nmap: 网络扫描工具,用于发现网络上的主机、服务、操作系统等信息。
- Netdiscover: 网络发现工具,主要用于在局域网中发现活动主机。
- Whois: 查询域名注册信息的工具。
- Dnsrecon: DNS 信息收集工具。
- theHarvester: 用于通过搜索引擎收集电子邮件、域名和其他信息。
- Shodan: 一个用于搜索互联网连接设备的工具。
- Maltego: 图形化信息收集和分析工具,适用于社交工程、网络分析等。
2、漏洞扫描 (Vulnerability Analysis)
- Nikto: Web 服务器漏洞扫描器,能够检测各种漏洞,如 SQL 注入、跨站脚本等。
- OpenVAS: 开源漏洞扫描工具,提供全面的漏洞扫描和管理。
- Nessus: 商业漏洞扫描工具,Kali 中默认没有,但可以安装。
- Burp Suite: 集成式的Web应用程序安全测试平台,提供代理、爬虫、扫描、漏洞分析等功能。
- W3AF: Web 应用程序安全扫描工具,专注于寻找 Web 应用漏洞
3、无线网络攻击 (Wireless Attacks)
- Aircrack-ng: 无线网络破解工具,支持 WEP、WPA、WPA2 等无线加密协议的攻击。
- Reaver: 针对 WPS(Wi-Fi Protected Setup)的攻击工具。
- Kismet: 无线网络嗅探工具,能够捕捉 Wi-Fi 网络流量和信号。
- Fern WiFi Cracker: 以图形界面形式提供的无线网络破解工具。
4、Web应用安全 (Web Application Analysis)
- OWASP ZAP (Zed Attack Proxy): 由 OWASP 提供的 Web 应用安全扫描工具,适合自动化和手动测试。
- Dirbuster: Web 目录爆破工具,通过暴力破解方式检测隐藏的目录或文件。
- Burp Suite: 主要用于 Web 应用安全测试,包含中间人代理、自动化扫描等。
- Wfuzz: 高度灵活的 Web 目录和文件爆破工具。
- Sqlmap: SQL 注入自动化攻击工具,可以帮助用户发现并利用 SQL 注入漏洞。
5 、密码攻击 (Password Attacks)
- Hydra: 快速的密码破解工具,支持多种协议如 SSH、FTP、HTTP、Telnet 等。
- John the Ripper: 强大的密码破解工具,支持多种算法和哈希形式。
- Medusa: 类似于 Hydra 的网络登录爆破工具。
- Hashcat: 世界上最快的密码破解工具之一,支持多种算法。
- CeWL: 网络抓取工具,可以生成字典,供密码破解使用。
6、后渗透攻击 (Post Exploitation)
- Metasploit Framework: 经典的渗透测试框架,提供了丰富的漏洞利用和后渗透攻击工具。
- Empire: PowerShell 和 Python 后渗透攻击框架,支持命令和控制。
- BeEF: 专注于浏览器的渗透框架,允许攻击者利用 Web 浏览器执行攻击。
- Mimikatz: Windows 系统密码提取和认证凭证获取工具。
- Netcat: 网络工具,常用于反向 shell 和端口监听。
- SET (Social-Engineer Toolkit): 专注于社交工程攻击,允许通过电子邮件、USB 脚本等方式传播攻击。
7、渗透测试框架 (Exploitation Tools)
- Metasploit Framework: 一个综合性的渗透测试框架,涵盖了漏洞利用、攻击模块、payload 生成等功能。
- Armitage: Metasploit 的图形化前端工具,简化了渗透测试流程。
- Veil Framework: 生成有效的、可绕过杀毒软件的 payloads。
- Cobalt Strike: 商业渗透测试工具,提供全面的后渗透攻击和命令控制功能。
8、社会工程学攻击 (Social Engineering)
- SET (Social-Engineer Toolkit): 提供一系列用于社交工程攻击的工具,如钓鱼邮件、Web 攻击等。
- Evilginx2: 一个用于钓鱼攻击的中间人代理工具,能够高效地捕获并转发登录凭证。
9、恶意软件分析 (Malware Analysis)
- Radare2: 强大的开源逆向工程框架,适用于恶意软件分析。
- Cutter: Radare2 的图形化前端。
- PEStudio: 用于分析 Windows 可执行文件的工具。
- Volatility: 内存取证工具,广泛用于恶意软件分析和数字取证。
10、反取证工具 (Forensics)
- Autopsy: 数字取证分析工具,用于分析硬盘和文件系统。
- Sleuth Kit: 包含多个数字取证工具,适用于分析文件系统。
- Plaso: 用于从事件日志中提取并构建事件时间线。
11、网络嗅探和监控 (Sniffing and Spoofing)
- Wireshark: 网络协议分析工具,用于捕获和分析网络流量。
- Ettercap: 网络嗅探和中间人攻击工具,适用于局域网中的流量拦截和修改。
- Bettercap: 高效的网络嗅探工具,支持 ARP 欺骗和中间人攻击。
- Dnsmasq: 用于网络流量分析和域名解析的工具。
12、隐私与加密工具 (Privacy and Cryptography)
- Tor: 匿名通信工具,用于加密和隐藏用户的网络流量。
- OpenSSL: 开源加密工具,支持多种加密算法。
- GPG (GNU Privacy Guard): 用于加密和签名电子邮件或文件的工具。
- TrueCrypt/VeraCrypt: 硬盘加密工具,保护数据隐私。
大家可以根据自己的需求选择不同的工具。
6 后话
虽然本文只是(上)篇,但是也可以算作专门讲Kali Linux部署的文章,只是对于网络攻击方面的测试来说,还差几个比较经典的工具,这些就放在(下)篇中来讲吧。不过(下)篇一时半会顾及写不了,因为我”云上灾备中心”从腾讯云轻量服务器搬到了Racknerd的VPS,好多东西要记录,只能以后有时间的时候再补上(下)篇了~。