我们已经安装好了nmap软件,Superscan软件,如图所示,现在对局域网设备进行端口扫描

实验原理
TCP 三次挥手
- 第一次通话(A → B)
A 拿起电话拨号:“喂?能听到吗?我想和你通话。”
含义:A 主动发起连接请求,询问 B 是否就绪。 - 第二次通话(B → A)
B 听到铃声,接起电话回复:“我能听到,你那边能听到我吗?”
含义:B 同意建立连接,同时反问 A,确认双向通道都正常。 - 第三次通话(A → B)
A 听到回应后说:“我也能听到,那我们可以正常通话了。”
含义:A 确认对方已就绪,双向通信通道正式建立。

标志位顺序(肉眼识别)
SYN=1,ACK=0连接请求SYN=1,ACK=1同意 + 确认SYN=0,ACK=1最终确认
确认号(Ack) = 对方上一包的序列号(Seq) + 1
在抓包列表中,逐行查看 Info 列(Wireshark 会自动翻译标志位):
[SYN]→ 第一包[SYN, ACK]→ 第二包[ACK]→ 第三包

端口扫描原理
SuperScan 默认使用 TCP 全连接扫描,就是完整走一遍我们刚才讲的「TCP 打电话流程」

场景 1:端口【开放】(房间有人,服务正常运行)
- 扫描机向目标 22 端口发送
SYN包(拨号:喂,能通话吗?) - 目标主机 22 端口有服务在监听,回复
SYN+ACK包(接电话:我可以) - 扫描机回复
ACK包(三次握手完成,连接建立) - 扫描机只是 “试探”,不需要真正通信,立刻发送
RST包挂断电话
场景 2:端口【关闭】(房间空着,没有服务)
- 扫描机拨号(发 SYN 包)
- 目标 22 端口没有任何程序监听,相当于房间没人、电话没装机
- 目标主机直接回复
RST包(直接挂断:别打了,这里没人)
场景 3:端口【被防火墙过滤】(被拦截,完全收不到信号)
- 扫描机拨号(发 SYN 包)
- 目标主机的防火墙,直接拦下了拨号请求,数据包根本到不了端口
- 扫描机一直等待,全程没有任何回应,超时
端口扫描三种结果:
✅ 有回应 → 端口开放
❌ 直接挂断 → 端口关闭
🔒 无回应(超时) → 防火墙过滤
superscan
内网扫描
| 角色 | IP 地址 |
|---|---|
| 攻击者(攻击机) | 192.168.150.10 |
| 靶机(被攻击者) | 192.168.150.12 |
| 网关(默认网关) | 192.168.150.2 |
1、输入目标靶机的IP地址

2、设置扫描端口列表
第一步:点击端口列表
第二步:全选所有端口
第三包:保存端口扫描配置文件
第四步:点击确定保存

3、扫描类型
扫描类型只需要勾选显示主机相应 还有 扫描所有在列表中选择的端口 就可以了。

4、点击开始
扫描速度可以设置的慢一点,然后点击开始扫描,查看端口扫描结果。


139 端口依赖 Windows 的「Server 服务(文件共享)」和「NetBIOS over TCP/IP」组件,只要开启了文件共享,这两个服务默认就会开启,139 端口就会处于监听状态。
公网扫描
必须经过授权才可以检测公网服务器的端口扫描,不然是违法的,这是我自己的云服务器,仅供测试使用:
IP = 117.72.201.196

扫描结果如下:

nmap
一般语法格式:nmap [Scan Type(s)] [Options]
-sT
TCP connect()扫描:这是最基本的TCP扫描方式。connect()是一种系统调用,由操作系统提供,用来打开一个连接。如果目标端口有程序监听, connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。

-sS
TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接。这项技术最大的好处是,很少有系统能够把这记入系统日志。
-sP
ping扫描:若只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP地址发送ICMP echo请求数据包,nmap就可以完成这项任务,如果主机正在运行就会作出响应。在默认的情况下nmap也能够向80端口发送TCP ack包,如果你收到一个RST包,就表示主机正在运行。nmap使用的第三种技术是:发送一个SYN包,然后等待一个RST或者SYN/ACK包。对于非root用户,nmap使用connect()方法。在默认的情况下(root用户),nmap并行使用ICMP和ACK技术。实际上,nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。如果只是想知道目标主机是否运行,而不想进行其它扫描,才会用到这个选项。
-sU
UDP扫描:如果想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用这种扫描方法。nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的。
扩展指令:
nmap -p 22 --script ssh-brute --script-args "userdb=C:\\Users\\kipley\\Desktop\\users.txt,passdb=C:\\Users\\kipley\\Desktop\\pass.txt" 117.72.201.198
这是一条 基于 Nmap 脚本引擎(NSE)的 SSH 弱口令暴力破解指令,核心目的是:
对目标主机 117.72.201.198 的 SSH 服务,用你提供的「用户名字典 + 密码字典」尝试爆破登录,检测目标是否存在弱口令漏洞。
| 指令片段 | 作用说明 |
|---|---|
nmap |
调用 Nmap 工具的基础命令 |
-p 22 |
指定目标端口:限定只扫描 / 操作 22 端口(SSH 服务默认端口),避免浪费时间扫描其他端口 |
--script ssh-brute |
调用 NSE 脚本:加载 Nmap 自带的ssh-brute.nse脚本,这个脚本专门用于 SSH 服务的账号密码爆破 |
--script-args "..." |
给脚本传递参数:给ssh-brute脚本传入自定义配置,双引号里是具体参数 |
userdb=C:\\Users\\...\\users.txt |
告诉脚本「用户名字典文件」的路径:文件里存着要尝试的所有用户名 |
passdb=C:\\Users\\...\\pass.txt |
告诉脚本「密码字典文件」的路径:文件里存着要尝试的所有密码 |
117.72.201.198 |
目标主机 IP:指定要测试的目标主机地址 |
必须合法授权!
只能测试自己的主机、或明确获得对方授权的主机,非法爆破他人设备是违法行为
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com