Kali Linux新手必学20个核心命令:从基础到渗透测试入门 Kali Linux装了快半年还是只会开个终端敲nmap很多刚接触安全测试的人都有这个困扰工具太多命令上千条不知道先学哪些。其实在正式接触漏洞利用之前Linux基础命令才是地基。这篇文章我把自己在靶场和CTF里用得最多的20个Kali核心命令整理了出来涵盖目录操作、身份查询、网络探测、进程管理、权限设置、文件搜索和打包还包括nmap、sqlmap、hydra三个安全工具的入门玩法。每个命令都会讲清楚它是干嘛的、常用参数是什么、什么时候用以及我在实际使用中踩过的坑。适合刚装好Kali、想做合法授权测试或者打CTF练手的新手照着敲一遍老手也可以当作速查表。1. 先别急着攻击从目录和基础命令开始很多人打开Kali终端第一件事就是敲msfconsole结果报错半天根源是连文件路径都搞不清。我见过太多新手把脚本放在/home下却找不到上传的临时文件。所以第一步先把三个最基础的命令练扎实。1.1 pwd搞清楚你现在站在哪个目录里pwd是print working directory的缩写作用就是告诉你当前所在的绝对路径。Kali默认的提示符往往只显示用户名和主机名比如kalikali:~$这个~代表家目录但你跑了几条命令、切了几个目录后很容易忘了自己到底在哪儿。此时敲一下pwd它会返回类似/home/kali或者/var/www/html这样的完整路径心里就有数了。举个例子你在做Web题时下载了一个压缩包通常习惯放到/tmp里如果找不到文件先pwd确认当前目录再看路径有没有写错。我常用的参数是pwd -P它会显示符号链接对应的真实物理路径。比如你人在/home/kali/Desktop但这个目录可能是一个链接加了-P能避免被链接路径误导。虽然平时pwd直接回车就够用但养成pwd习惯可以避免大量误操作。1.2 ls最常用的列表命令别只用默认参数ls应该是Linux里敲得最多的命令但很多人只会输入ls结果看到的信息有限。真正在Kali里干活我常年用ls -la。-l显示详细列表包括权限、属主、大小、修改时间-a显示隐藏文件很多敏感文件都是以点开头的比如.bashrc、.ssh、.bash_history。Kali的文件系统里配置文件经常以点开头不带-a你就漏了一半。ls -lh更适合看大小h参数会把字节数转成K、M、G一眼看出哪个文件是大块头。ls -lt按修改时间排序适合你刚解压完文件想看看哪个是最新的结果。在渗透测试中查看一个目录时我通常先执行ls -la再结合file命令确认文件类型这比只看文件名靠谱得多。1.3 cd切换目录和返回原点的技巧cd是change directory进入某个目录用cd 路径。它有几个容易被忽略的变体cd ..回上级目录cd ~或直接cd回到当前用户的家目录cd -切换到上一次所在目录。这个cd -在安全测试时特别好用比如你在/usr/share/wordlists和/var/log之间反复横跳cd -一秒切回去。还有一点注意Kali下很多工具要求工作目录在某个位置比如跑sqlmap时配置文件的相对路径这时你最好cd到指定目录再执行避免绝对路径过长。我在实际操作中会把要处理的文件先统一放到一个工作目录比如mkdir /tmp/working cd /tmp/working所有中间结果都放这里既清晰又不会污染系统目录。2. 摸清身份和系统信息whoami、id、uname在靶机上执行命令时你首先得知道自己当前是谁权限有多大。很多人喜欢直接开root但root权限并不是万能的甚至可能掩盖真实环境的问题。身份和系统信息是后续一切判断的基础。2.1 whoami确认当前用户名whoami直接输出当前用户的用户名。在Kali里默认用户是kali有些操作需要sudo提权执行后如果输出的是root说明已经切换到了root。这个命令在写脚本时也常用用来判断运行环境是否满足要求。举例某脚本需要以非root身份运行你就可以先whoami确认。虽然看起来简单但我见过有人正好因为把脚本用root跑导致权限上下文不一致最后排查半天。2.2 id看得更细的用户与组信息id是whoami的增强版它会显示uid、gid和用户所属的组列表。在linux中权限是按uid和组来判断的用户名只是给人看的。比如id kali会返回类似uid1000(kali) gid1000(kali) groups1000(kali),27(sudo),44(plugdev)...这样的信息。这里groups里有sudo组表示kali可以用sudo执行管理命令。在排查权限问题时id比whoami更有参考价值。假如你拿到的webshell显示用户是www-data但你尝试写文件时却成功可以先id看看是不是所在组给了额外权限。2.3 uname -a系统内核和架构信息uname -a能一次性输出内核名称、主机名、内核版本、硬件架构等信息。Kali的默认输出类似Linux kali 6.x.x-kali1-amd64 #1 SMP ... x86_64 GNU/Linux。这里最关键的其实是架构部分x86_64表示64位如果你下载的是arm64的二进制在这个环境就运行不了。内核版本也能帮助你判断是否需要升级或某个漏洞是否适用于当前系统。在CTF中uname -a给出的内核版本有时能直接对应已知漏洞编号但这属于后话。平时管好自己的Kali先能看懂系统信息再谈攻击面。3. 网络探测的排头兵ip、ping、netstat渗透测试的第一步往往是信息收集而网络信息收集离不开看到本地IP、目标连通性和本机开放端口。这三个命令覆盖了最基本的信息收集场景。3.1 ip查看和配置网络接口ifconfig的替代者Kali新版本已经倾向于使用ip命令老教程里的ifconfig默认不再安装但你可以通过sudo apt install net-tools把它装回来。我更推荐直接用ip addr查看所有网卡和IP地址输出简洁每个接口下面有inet字段就是IPv4地址比如192.168.1.100/24。ip route查看路由表找网关就靠它。ip link查看接口状态如果你发现网卡没有起来可以先看状态。实际操作中我经常先ip addr找到自己的内网IP然后才能判断靶机是否跟自己在同一个网段选择NAT模式还是桥接模式。如果你的Kali在虚拟机里ip addr还能看到类似eth0、wlan0等接口注意无线攻击时使用的是wlan0而不是以太网卡。3.2 ping第一件事判断目标是否在线ping用ICMP协议探测目标主机是否可达是最基础的连通性测试。用法是ping -c 4 目标IP-c指定发送次数避免它无限ping下去。我见过新手直接敲ping www.example.com然后一直在那儿刷屏甚至需要CtrlC才能停这在脚本里很麻烦。加-c 4后只发4个包就自动结束。另外-i 0.5可以调整间隔-W 1表示等待响应超时时间。注意很多服务器会禁用ICMPping不通不代表目标不在线。所以在做端口探测时nmap才是最可靠的。但ping作为第一发探路石效果很直观。在靶场中如果你能ping通目标大概率网络层面没问题可以继续后续扫描。3.3 netstat查看本机端口监听和连接状态netstat是查看本机网络状态的常用工具参数组合我固定用-tlnp。-t显示TCP连接-l只显示监听中的端口-n以数字形式显示IP和端口-p显示对应的进程PID和名称。组合起来就能看到本机哪些端口在监听哪个程序在监听。比如你启动了一个服务但不知道起没起来netstat -tlnp 秒查。同样在靶机上拿到权限后第一件事经常就是查看监听端口判断是否有异常后门。前提是你要有相应权限root和普通用户看到的信息范围不同。注意新版Kali已经把netstat退居其次很多场景建议用ss替代。ss -tlnp用法类似但显示更快。如果你记习惯netstat先安装net-tools也行但新技能还是建议ss。4. 进程管理三件套ps、top、kill系统里跑着哪些进程谁占用了CPU和内存怎么优雅地把卡死的进程干掉这些是日常维护和管理必须掌握的能力。4.1 ps快照式查看进程ps用来查看当前进程的快照。最常用的组合是ps -ef会显示所有进程的完整信息包括PID、父进程PID、启动命令等。ps aux也很常用显示CPU和内存占用。在Kali里我习惯用ps aux --sort-%mem按内存占用排序快速找出谁在吃内存。如果你在分析可疑进程可以用ps -ef | grep 关键词过滤比如ps -ef | grep nc能看到所有名字里带nc的进程排查是否有人留了后门。但注意grep本身也会匹配到自己的进程这是常识。拿到PID后后面就可以用kill精确处理。4.2 top实时监控资源占用top是一个实时刷新的系统监视器显示进程CPU、内存、运行时间。在Kali桌面环境里我通常使用top -o %CPU让进程按CPU占用排序。按1键可以显示每个CPU核心的情况按q退出。top -n 1表示只刷新一次输出适合脚本抓取。相比pstop能动态观察进程行为。如果某个程序CPU一直100%很可能是死循环或挖矿程序就要考虑kill。在靶场提权或维护自己Kali时top能帮你判断负载是否异常。如果你觉得top界面不够直观也可以装htop但那是另一个命令了先掌握top。4.3 kill给进程发送信号不只是“杀死”kill默认是发送SIGTERM信号让进程优雅退出。用法是kill PID。如果进程不响应再用kill -9 PID发送SIGKILL强制结束。这两个区别很大SIGTERM可以让进程保存数据、清理资源SIGKILL是直接抹掉可能丢数据。所以优先用不带参数的kill确实没反应再上kill -9。还有一个组合pkill按进程名杀掉比如pkill redis但小心同名误杀。killall也可以按名字杀但它会把所有匹配进程全杀掉风险较高。我在实际中更倾向于先ps找到PID再kill这样能精确定位避免把无关服务干掉。5. 文件权限别让权限挡了你的路chmod、chownLinux的权限模型是r/w/x对应读、写、执行。很多初学者在Kali里执行脚本发现Permission denied基本就是没加执行权限。理解并熟练使用chmod、chown是深入文件操作的必修课。5.1 chmod搞懂rwx和数字权限chmod可以修改文件权限。权限用三个数字表示属主、属组、其他人。r4, w2, x1加起来就是最终值。比如chmod 755 script.sh表示属主有rwx7属组和其他人有r-x5。常见的644是文件可读写、属组和其他人只读755是脚本可执行。在Kali里下载的exp或脚本经常没有执行权限先chmod x exp.py或者chmod 755 exp.py否则直接执行会报错。注意.py文件通常用python exp.py执行不需要x权限.sh文件直接./install.sh就必须有x权限。如果遇到权限不足的目录还可以用chmod -R 777 目录递归给目录下所有文件加满权限但这种一揽子方案在生产环境要谨慎不要为了省事把所有东西都开成777。5.2 chown把文件还给正确的人chown修改文件属主和属组语法是chown 属主:属组 文件。比如chown root:root config.conf就把config.conf的属主属组都改成root。只改属主可以用chown kali: 文件只改属组可以用chown :kali 文件。-R参数同样递归。在Kali中当你用sudo执行命令后生成的临时文件属主可能是root后续切换到普通用户去修改时就会提示无权限这时候用sudo chown kali:kali 文件就能解决。反过来如果你在Web目录里写文件后访问报500很可能是文件属主和属组不对Apache或Nginx进程无法读取。此时chown www-data:www-data 文件是常见修复手段。理解chown配置文件权限就不玄了。6. 文本和文件的效率利器grep、find、tar安全和运维工作中大量时间花在查日志、找文件、打包数据上。没有这三个命令效率能低一半。6.1 grep在输出和文件里精准捞数据grep是文本过滤神级命令。最常用的grep 关键词 文件。比如在访问日志里查某个IPgrep 192.168.1.100 access.log。配合管道符可以滤掉无关输出ls -la | grep ^d只看目录。常用参数-i忽略大小写-r递归搜索目录-n显示行号-v反向匹配。我用得最多的是grep -n因为拿到行号后就能用sed或vim直接定位到那行方便看上下文。在Kali的配置文件里注释特别多grep -v ^# config.conf能过滤掉注释行只留有效配置这个技巧在处理apache、nginx配置时非常实用。6.2 find按条件找文件定位配置不再难find按照指定条件在目录树中查找文件。基本语法find 路径 -name 文件名。比如find / -name *.conf寻找所有conf文件。常用-type f只找文件-type d只找目录-size 10M找大于10M的文件-mtime -1找一天内改过的文件。在渗透测试时find常用来找特定文件比如找可写文件find / -perm -ow -type f 2/dev/null这条命令在CTF里常用于找可写文件进行提权。注意2/dev/null把错误信息丢弃掉避免刷屏。find的输出往往很长建议配合-name精准搜索或者用-maxdepth 2限制搜索深度不然全盘扫描会跑到怀疑人生。6.3 tar打包压缩与解压的万能选手tar在Kali中用于将多个文件打包成一个归档也可以同时压缩。命令组合tar czvf archive.tar.gz 目录/是打包并gzip压缩tar xzvf archive.tar.gz是解压。这里的c代表创建x代表解压z代表gzipv代表显示过程f代表后面跟文件名。每次写tar我都按c z v f或x z v f记忆顺序基本固定。解压其他格式也可用tar.tar.bz2把z换成j.tar.xz把z换成J。如果只是打包不压缩可以只用tar cvf。新手常犯错误是忘记写f导致输出被重定向甚至报错。另一个坑是解压时使用了-C指定目录例如tar xzvf archive.tar.gz -C /tmp/working不然全部解压到当前目录会很乱。我在拿到压缩包后永远先tar tzf archive.tar.gz看内容列表再决定解不解这个习惯能防止解压覆盖掉同名文件。7. 安全测试入门三件套nmap、sqlmap、hydra接下来这三个命令是Kali里最出圈的。必须强调所有测试只能在你有授权、你自己的靶机或实验环境里进行。未授权扫描、爆破、注入测试都是违法行为。文中的所有示例均以本地靶场为例请用合法环境练习。7.1 nmap给目标做一次“体检”nmap是端口扫描工具。最开始只要掌握三种用法nmap 目标IP默认扫描1000个常用端口nmap -p- 目标IP扫描全部65535个端口nmap -sV 目标IP对端口服务版本进行探测。组合参数-sV -O还能识别操作系统类型。输出里每个开放端口显示服务名和版本这是接下来判断漏洞的基础。在靶机练习时我通常用nmap -sS -sV -p- 192.168.1.100-sS是SYN半开扫描速度快而且不容易被记录但在有防火墙的环境下可能失效。如果你在虚拟机里做测试注意先确认目标IP和你的网段一致。nmap最大的价值是把你从瞎猜中解放出来扫描结果会告诉你哪些端口开着、服务是什么、可能对应哪类漏洞后续再针对性做验证。7.2 sqlmapSQL注入检测的自动化工具sqlmap是专门用来检测和利用SQL注入漏洞的工具。新手不要一上来就对着互联网站点试最好在本地搭DVWA或者使用靶场。最基本的用法sqlmap -u http://靶机IP/vulnerabilities/sqli/?id1SubmitSubmit --batch --dbs。-u指定带参数的URL--batch让工具自动选择默认选项--dbs列出现有的数据库列表。sqlmap 的强大在于它自动判断注入类型、获取表名、字段名甚至数据。但你只需要先跑通流程理解它输出的参数id存在注入等信息即可。我强烈建议在靶场里跑别在真实站点上试因为一个请求就可能造成数据损坏。另外sqlmap跑起来会发出大量请求目标网站可能因此崩溃这也是为什么只能在授权环境中用。只要记住没有授权一切“扫描”都可能是违法的。7.3 hydra口令爆破需谨慎授权是底线hydra是一个在线口令爆破工具支持SSH、FTP、HTTP等多种协议。示例用法hydra -l admin -P /usr/share/wordlists/rockyou.txt 192.168.1.100 http-get-form /login.php:user^USER^pass^PASS^:Invalid这段命令很经典但新手很容易被里面的格式绕晕。核心要理解三个点-l指定用户名-P指定字典文件后面的IP 协议 表单参数是目标细节。注意rockyou.txt默认在/usr/share/wordlists目录下可能是个压缩包要先解压。hydra的本质是拿字典不断尝试非常消耗目标资源和网络带宽所以攻击思路和风险都很高。在我的练习中通常只在本地虚拟机搭建一个有弱口令的SSH服务然后用hydra验证它能否被爆破目的是理解口令强度和爆破逻辑而不是去攻击别人。如果你只是学习请务必限制在自有靶机环境内并把字典设小一点测试完立即关闭服务。8. 写在后面的几条实操心得到这里20个命令已经全部讲完。最后再分享几条我在实际使用中反复验证过的经验不算命令但非常实用。8.1 敲命令前先按Tab补全多用historyKali的命令补全和history非常强大。在终端里输入命令或路径前缀时按Tab会自动补全如果有多项可选按两下Tab会列出所有候选。这个习惯能避免大量拼写错误。想看历史命令直接敲history也可以按CtrlR搜索历史输入关键词后回车就能复用曾经执行过的命令。在跑长命令时我会先在记事本里写好再粘贴到终端减少错误和误操作。8.2 手边常备一个工作目录别把所有文件堆在桌面桌面上一堆脚本和压缩包最后根本分不清哪个是哪个。我建议在/tmp或/home/kali/work建立独立项目目录每个靶机或CTF题目一个子目录命名参考靶机IP或题目名称。所有扫描结果、脚本、字典都放进去最后打包带走。这样即使你同时测多个目标也不会混淆。我个人的习惯是每次开工前执行mkdir -p ~/work/$(date %Y%m%d) cd ~/work/$(date %Y%m%d)按日期建目录干净又不容易丢。等你项目多了会发现这种基础习惯比学什么大招都重要。