### 🔐 Port Knocking(端口敲门)简介

Port Knocking**(端口敲门)是一种基于网络通信的隐蔽技术,用于在未经授权的情况下隐藏网络服务的入口点。只有完成特定的**敲门序列**(特定端口的访问顺序或数据模式)后,目标系统的服务端口才会开放,允许后续的通信。

这种技术主要应用于增强网络安全,防止端口扫描和未授权访问。

---

### 🛠 **Port Knocking 的工作原理


1. 默认端口关闭
服务器的服务端口(如 SSH、RDP 等)在默认状态下是关闭的,不响应连接请求。

2. 敲门序列检测
客户端按照一定顺序(例如 TCP/UDP 包的目标端口号)尝试连接预定义的端口。这些连接不会真正打开端口,而是作为敲门信号被监听器记录。

3. 验证敲门序列
服务器的 Port Knocking 守护进程会验证客户端发出的敲门序列是否正确。如果匹配,目标服务端口(如 22 号 SSH 端口)会临时开放。

4. 建立连接
客户端在目标端口开放后,可以正常连接到服务,完成通信。

5. 端口关闭
在设定的时间后,端口会重新关闭,恢复隐蔽状态。

---

### 🧩 Port Knocking 的常见实现方式

1. 基于 TCP/UDP 端口扫描
客户端按顺序尝试连接几个特定的 TCP/UDP 端口。例如,敲击顺序为 `1234 -> 5678 -> 91011`,正确的顺序才能触发端口开放。

2. 基于特定数据包的 Payload
通过在敲门包中嵌入密码或加密信息,进一步增强安全性。

3. 隐蔽型敲门
使用非标准端口号或特定协议(如 ICMP Ping 包)作为敲门信号。

---

### 🛡 Port Knocking 的优缺点

#### 优点:
1. 增强安全性:
隐藏端口,避免被简单的端口扫描工具发现。

2. 轻量化:
不需要占用大量资源或额外的网络带宽。

3. 兼容性强:
可用于现有的防火墙和服务配置。

#### 缺点:
1. 容易被监控或重放攻击利用:
如果敲门序列是明文传输,可能被监听并复制。

2. 复杂性增加:
客户端和服务端的配置可能不直观,导致管理和使用不便。

3. 对错误序列的容错性低:
敲门顺序或网络延迟可能导致误触发。

---

### 🔧 Port Knocking 实现示例

以下是基于 iptablesknockd 的实现示例:

#### 服务端配置:
1. 安装 `knockd`:
   sudo apt install knockd
   


2. 编辑 /etc/knockd.conf 配置文件:
   [options]
   logfile = /var/log/knockd.log

   [openSSH]
   sequence = 7000,8000,9000
   seq_timeout = 5
   command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
   tcpflags = syn

   [closeSSH]
   sequence = 9000,8000,7000
   seq_timeout = 5
   command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
   tcpflags = syn
   


3. 启动 `knockd`:
   sudo systemctl start knockd
   


#### 客户端敲门:
使用 `knock` 命令:
knock 192.168.1.100 7000 8000 9000
ssh user@192.168.1.100


---

### 🌐 Port Knocking 的应用场景
1. 隐藏敏感服务端口:
防止 SSH、VPN 等端口被暴力破解工具攻击。

2. 应急接入机制:
在无需长期暴露端口的情况下,为管理员提供备用访问通道。

3. 网络蜜罐增强:
配合蜜罐系统,诱导攻击者触发错误敲门序列,记录其行为。

---

### 🚀 增强安全的建议
1. 使用加密的敲门序列:
结合加密协议(如 HMAC)确保序列不被嗅探和伪造。

2. 结合动态防火墙:
配置时限短的动态规则,减少端口开放时间。

3. 审计和监控:
定期检查 knockd 的日志,发现异常敲门行为。

---

### 🔑 关键词
#PortKnocking #端口敲门 #网络安全 #隐蔽技术 #防火墙
### rustscan 命令行帮助内容

rustscan 2.3.0 是一个快速的端口扫描工具,使用 Rust 语言开发。警告:不要对敏感基础设施使用此程序,因为目标服务器可能无法处理这么多的套接字连接。

#### 用法:
rustscan [选项] [-- <命令>...]


#### 可用选项:
- -a, --addresses <ADDRESSES>
要扫描的地址,支持逗号分隔的 CIDR、IP 或主机列表,或者换行分隔的文件。

- -p, --ports <PORTS>
要扫描的端口列表,逗号分隔。例如:`80,443,8080`。

- -r, --range <RANGE>
扫描端口的范围,格式为 `start-end`。例如:`1-1000`。

- -n, --no-config
是否忽略配置文件。

- -c, --config-path <CONFIG_PATH>
配置文件的自定义路径。

- -g, --greppable
输出仅包含端口的可供 grep 处理的格式,不包含 Nmap 输出。适用于 grep 或导出到文件。

- --accessible
可访问模式。关闭可能对屏幕阅读器产生负面影响的功能。

- --resolver <RESOLVER>
逗号分隔的 DNS 解析器列表或文件。

- -b, --batch-size <BATCH_SIZE>
批量扫描大小,决定扫描速度。取决于操作系统的文件打开限制。如果设置为 `65535`,会同时扫描所有端口,但可能会超过操作系统的支持限制。[默认值:4500]

- -t, --timeout <TIMEOUT>
假定端口关闭的超时时间(毫秒)。[默认值:1500]

- --tries <TRIES>
假定端口关闭前的尝试次数。如果设置为 0,RustScan 会自动调整为 1。[默认值:1]

- -u, --ulimit <ULIMIT>
自动提升文件描述符限制(ULIMIT)到指定值。

- --scan-order <SCAN_ORDER>
扫描顺序。`serial` 按升序扫描端口,`random` 随机扫描端口。[默认值:serial]
可选值:`serial`, random

- --scripts <SCRIPTS>
执行时所需的脚本级别。[默认值:default]
可选值:`none`, default, custom

- --top
扫描最常见的 1000 个端口。

- -e, --exclude-ports <EXCLUDE_PORTS>
要排除的端口列表,逗号分隔。例如:`80,443,8080`。

- --udp
UDP 扫描模式,查找有响应的 UDP 端口。

- -h, --help
显示帮助信息。

- -V, --version
显示版本信息。

### 总结:
- rustscan 是一个功能丰富的端口扫描工具,提供了多种扫描选项,包括指定端口、扫描范围、超时设置、批量扫描大小等。
- 它支持灵活的配置文件管理,能够执行高效的端口扫描,并允许用户根据需求调整扫描策略。

https://github.com/RustScan/RustScan

#RustScan #端口扫描 #UDP扫描 #超时设置 #批量扫描 GitHub - bee-san/RustScan: 🤖 The Modern Port Scanner 🤖
### Stdapi 网络命令详解

在 Metasploit 的 Stdapi: Networking Commands 模块中,提供了一些常用的网络命令,这些命令有助于渗透测试人员了解和操作目标主机的网络配置。下面是这些命令的详细解释:

#### 1. arp
- 描述**:显示主机的 ARP(地址解析协议)缓存。
- **用途**:`arp` 命令列出目标机器的 ARP 缓存,显示主机的 IP 地址与 MAC 地址映射。通过查看 ARP 缓存,可以了解目标主机最近通信过的其他设备。
- **常见用法**:
```bash
meterpreter > arp
```

#### 2. **getproxy

- 描述**:显示当前的代理配置。
- **用途**:此命令用于查看目标主机是否配置了代理服务器,如果有,它会显示代理的设置,如地址、端口等。这对于需要通过代理进行隐蔽渗透的情况非常有用。
- **常见用法**:
```bash
meterpreter > getproxy
```

#### 3. **ifconfig

- 描述**:显示所有网络接口的配置。
- **用途**:`ifconfig` 命令用于列出目标主机上所有网络接口的信息,包括 IP 地址、子网掩码、MAC 地址等。这有助于你了解目标系统的网络配置和可用的网络接口。
- **常见用法**:
```bash
meterpreter > ifconfig
```

#### 4. **ipconfig

- 描述**:显示网络接口配置信息(类似于 `ifconfig`,但通常在 Windows 系统上使用)。
- **用途**:这个命令在 Windows 系统中常用,类似于 Linux 上的 `ifconfig`。它会列出所有网络接口的 IP 地址、子网掩码和默认网关等信息。
- **常见用法**:
```bash
meterpreter > ipconfig
```

#### 5. **netstat

- 描述**:显示当前的网络连接。
- **用途**:`netstat` 命令可以显示目标系统的活动网络连接,包括 TCP 和 UDP 连接、监听的端口等。这对于识别目标主机上的开放端口、监听服务以及网络通信状态非常有用。
- **常见用法**:
```bash
meterpreter > netstat
```

#### 6. **portfwd

- 描述**:将本地端口转发到远程服务。
- **用途**:这个命令允许你将一个本地端口转发到目标主机上的某个端口。它通常用于通过目标主机访问防火墙后面的内部服务(例如目标网络中的其他主机)。
- **常见用法**:
```bash
meterpreter > portfwd add -l 8080 -p 80 -r
192.168.1.10
```
这条命令将本地机器的 8080 端口转发到目标主机(`192.168.1.10`)的 80 端口。

#### 7. **resolve

- 描述**:解析一组主机名。
- **用途**:此命令用于将主机名转换为 IP 地址(即 DNS 解析)。如果你知道目标系统的域名或主机名,可以使用此命令获取相应的 IP 地址。
- **常见用法**:
```bash
meterpreter > resolve
example.com
```

#### 8. **route

- **描述**:查看和修改路由表。
- **用途**:`route` 命令允许你查看或修改目标系统的路由表。通过修改路由表,可以改变网络流量的转发路径,通常用于绕过防火墙或将流量通过某些中间设备进行转发。
- **常见用法**:
- **查看路由表**:
       meterpreter > route
       

- **添加路由**:
       meterpreter > route add 192.168.2.0 255.255.255.0 192.168.1.1
       

这条命令将目标主机的流量通过 192.168.1.1 路由到 192.168.2.0/24 子网。

---

### 总结

这些网络命令帮助渗透测试人员在目标机器上执行一系列网络操作,从查看网络配置、扫描端口、修改路由表到通过代理转发流量,提供了强大的支持。在进行内网渗透时,合理使用这些命令可以帮助你收集网络拓扑信息、绕过防火墙、设置中继等,推动渗透过程的进一步发展。

#Metasploit #Stdapi #NetworkingCommands #渗透测试 #ARP #路由 #代理 #端口转发
nmap 收集信息:

### 1. 快速全端口扫描

sudo nmap --min-rate 10000 -p- 192.168.153.130
   

- 功能**:扫描目标 IP 地址(192.168.153.130)上的所有端口(1-65535)。
- **选项**:
- `--min-rate 10000`:设置最小扫描速率,每秒发送最少 10000 个数据包,加快扫描速度。
- `-p-`:扫描所有端口。
- **用途**:适用于需要快速发现目标主机上开放端口的场景。

### 2. **TCP 全连接扫描 + 服务版本识别 + 操作系统识别 + 默认脚本扫描


sudo nmap -sT -sV -sC -O -p 22,80 192.168.153.130
   

- 功能**:对目标 IP 地址执行 TCP 连接扫描(全连接),并同时执行服务版本识别、操作系统识别和默认的漏洞扫描脚本。
- **选项**:
- `-sT`:TCP 连接扫描(通过完整的三次握手连接目标主机端口)。
- `-sV`:服务版本识别,查找目标主机上运行的服务版本。
- `-sC`:执行 nmap 默认脚本(例如检测已知漏洞、配置问题等)。
- `-O`:操作系统识别。
- `-p 22,80`:仅扫描端口 22 和 80。
- **用途**:适用于详细的信息收集和漏洞识别,尤其是对常见的服务(如 SSH、HTTP)进行深度分析。

### 3. **UDP 扫描


sudo nmap -sU -p 22,80 192.168.153.130
   

- 功能**:对目标 IP 地址执行 UDP 扫描,扫描端口 22 和 80。
- **选项**:
- `-sU`:执行 UDP 扫描(与 TCP 扫描不同,UDP 扫描不会建立连接,通常较慢)。
- `-p 22,80`:扫描端口 22 和 80(通常这两个端口是 TCP 服务,但此命令是通过 UDP 扫描的)。
- **用途**:用于检测目标主机上的 UDP 服务,特别是在 UDP 协议上常用的服务。

### 4. **漏洞扫描


sudo nmap --script=vuln -p 22,80 192.168.153.130
   

- **功能**:对目标 IP 地址执行漏洞扫描,检查端口 22 和 80 是否存在已知的漏洞。
- **选项**:
- `--script=vuln`:启用 nmap 的漏洞扫描脚本(检查已知漏洞)。
- `-p 22,80`:扫描端口 22 和 80。
- **用途**:用于检测目标主机是否存在已知的安全漏洞,尤其适用于评估目标主机的安全性。

### 总结:
- **快速扫描**(第一个命令)适用于快速检测目标主机上开放的端口。
- **详细扫描**(第二个命令)用于获得目标的服务版本、操作系统信息和潜在漏洞。
- **UDP 扫描**(第三个命令)专门用于检测 UDP 协议上的服务,适用于识别不常见的 UDP 服务。
- **漏洞扫描**(第四个命令)通过漏洞脚本检查目标的已知漏洞,帮助识别潜在的安全风险。

这些命令可以帮助网络安全人员全面了解目标主机的开放端口、服务版本、操作系统信息,以及可能存在的安全漏洞。
#nmap #网络扫描 #漏洞扫描 #服务识别 #端口扫描
 
 
Back to Top