Home
avatar

静静

Linux服务器端口和基本信息侦察指南

Linux服务器端口和基本信息侦察指南

在渗透测试或安全评估中,了解目标服务器开放的端口和基本信息是至关重要的第一步。服务器通常不会直接展示所有开放端口和详细信息,但通过一些常见的服务和文件,攻击者可以获取这些信息。以下是服务器上常见的文件、服务和配置,它们可能直接或间接地透露开放的端口和服务器的基本信息。

参考: 作为运维,应该掌握的 50 个 Linux 上重要的配置文件

1. 基础系统信息文件

1.1. /etc/services

描述: 该文件包含了服务名称与端口号及协议的映射关系。虽然它不显示当前服务器实际开放的端口,但它列出了常见的服务及其默认端口,攻击者可以借此了解哪些端口通常用于哪些服务。

  • 路径: /etc/services
  • 用途: 了解常见服务的默认端口,辅助端口扫描和识别

示例内容:

http  80/tcp www www-http # WorldWideWeb HTTP
ssh   22/tcp             # SSH Remote Login Protocol
ftp   21/tcp             # File Transfer Protocol

1.2. /etc/hosts

描述: 该文件用于将主机名映射到IP地址,通常用于本地网络解析。虽然它不直接显示开放的端口,但可以揭示服务器上配置的主机名和内部IP地址。

  • 路径: /etc/hosts
  • 用途: 了解服务器的主机名配置和内部网络结构

示例内容:

127.0.0.1       localhost
192.168.1.10    server1.example.com

1.3. /etc/hostname

描述: 该文件包含服务器的主机名。通过查看此文件,攻击者可以了解服务器的名称,有助于进一步的侦察。

  • 路径: /etc/hostname
  • 用途: 获取服务器的主机名

示例内容:

webserver01

1.4. /etc/resolv.conf

描述: DNS解析器配置文件。

  • 路径: /etc/resolv.conf
  • 用途: 了解DNS服务器配置,可能揭示内部网络结构

2. 网络连接和端口信息

2.1. /proc/net/tcp/proc/net/udp

描述: 这些文件提供了当前系统上TCP和UDP连接的状态信息,包括本地和远程地址及端口。通过解析这些文件,可以获取服务器当前活跃的连接和监听端口。

  • 路径:
    • TCP: /proc/net/tcp
    • UDP: /proc/net/udp
  • 用途: 查看当前系统上的TCP和UDP连接及监听端口

注意: 这些文件的内容是十六进制格式的,需要一定的解析技巧。通常可以使用工具或脚本来解析这些信息。

示例(简化):

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
 0: 0100007F:1F90 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12345 1 ffff880012345678 100 0 0 10 0
  • local_address中的端口部分(如 1F90)需要转换为十进制(8080)

2.2. /proc/net/tcp6/proc/net/udp6

描述: IPv6连接的TCP和UDP状态信息。

  • 路径: /proc/net/tcp6, /proc/net/udp6
  • 用途: 查看IPv6监听端口和连接

2.3. /proc/net/unix

描述: Unix域套接字信息。

  • 路径: /proc/net/unix
  • 用途: 了解本地进程间通信(IPC)使用的套接字

2.4. 运行时进程信息

路径:

  • /proc/[pid]/cmdline: 进程启动命令行
  • /proc/[pid]/environ: 进程环境变量

用途: 查看服务启动参数和环境变量,可能包含端口绑定信息

3. 网络配置文件

3.1. RHEL/CentOS 网络配置

描述: 网络接口配置文件。

  • 路径: /etc/sysconfig/network-scripts/ifcfg-*
  • 用途: 了解网络接口配置和IP地址

3.2. Debian/Ubuntu 网络配置

描述: 网络接口配置。

  • 路径: /etc/network/interfaces
  • 用途: 查看网络配置和绑定的IP地址

3.3. 网络接口系统信息

描述: 网络接口状态和配置。

  • 路径: /sys/class/net/*/
  • 用途: 查看网络接口状态和配置

4. 超级服务器配置

4.1. /etc/inetd.conf/etc/xinetd.conf

描述: 这些文件配置了由 inetdxinetd管理的服务,这些服务在需要时启动并监听特定端口。

  • 路径:
    • inetd: /etc/inetd.conf
    • xinetd: /etc/xinetd.conf/etc/xinetd.d/ 目录下的各个文件
  • 用途: 了解由超级服务器管理的服务及其端口

5. Web服务器配置

5.1. Nginx 配置

描述: Nginx的配置文件定义了服务器监听的端口和虚拟主机配置。

  • 路径:
    • 主配置: /etc/nginx/nginx.conf
    • 站点配置: /etc/nginx/sites-enabled//etc/nginx/conf.d/
  • 用途: 查看Nginx监听的端口和处理的站点

5.2. Apache 配置

描述: Apache的配置文件定义了服务器监听的端口和虚拟主机配置。

  • 路径:
    • 端口配置: /etc/apache2/ports.conf
    • 站点配置: /etc/apache2/sites-enabled//etc/apache2/sites-available/
  • 用途: 查看Apache监听的端口和处理的站点

6. 数据库服务配置

6.1. MySQL/MariaDB

  • 路径: /etc/mysql/my.cnf/etc/my.cnf
  • 用途: 查看数据库监听端口(默认3306)和绑定地址

6.2. PostgreSQL

  • 路径: /etc/postgresql/*/main/postgresql.conf
  • 用途: 查看PostgreSQL监听端口和地址

6.3. Redis

  • 路径: /etc/redis/redis.conf
  • 用途: 查看Redis监听端口(默认6379)

6.4. MongoDB

  • 路径: /etc/mongod.conf
  • 用途: 查看MongoDB监听端口(默认27017)

7. 其他网络服务配置

7.1. SSH 配置

  • 路径: /etc/ssh/sshd_config
  • 用途: 查看SSH监听端口(默认22,可能被修改)

7.2. FTP 服务

路径:

  • vsftpd: /etc/vsftpd.conf
  • ProFTPD: /etc/proftpd/proftpd.conf

用途: 查看FTP监听端口和配置

7.3. Samba

  • 路径: /etc/samba/smb.conf
  • 用途: 查看SMB/CIFS共享配置

8. 防火墙配置

8.1. iptables

描述: 防火墙规则可以揭示哪些端口是开放的或被允许的。

  • 查看命令: iptables -L -n
  • 配置文件路径: /etc/iptables/rules.v4/etc/sysconfig/iptables(取决于发行版)
  • 用途: 查看防火墙允许的端口和流量规则

8.2. ufw (Uncomplicated Firewall)

  • 查看命令: ufw status
  • 配置文件路径: /etc/ufw/ 目录下
  • 用途: 查看防火墙允许的端口和服务

8.3. firewalld

  • 查看命令: firewall-cmd --list-all
  • 配置文件路径: /etc/firewalld/ 目录下
  • 用途: 查看防火墙允许的服务和端口

9. Systemd 服务管理

9.1. Systemd 服务文件

  • 路径:
    • /etc/systemd/system/
    • /lib/systemd/system/
  • 用途: 查看通过systemd管理的服务及其配置,可能包含端口信息

10. 容器和虚拟化

10.1. Docker

路径:

  • /etc/docker/daemon.json
  • Docker容器信息: docker ps (如果有权限)

用途: 查看Docker端口映射和暴露的服务

10.2. Kubernetes 配置

路径:

  • ~/.kube/config
  • 服务配置: Kubernetes Service和Ingress定义

用途: 查看暴露的服务端口

10.3. 云提供商元数据服务

  • 访问: 通常通过 http://169.254.169.254/
  • 用途: 获取实例元数据,可能包含网络配置信息

11. 系统日志文件

路径:

  • /var/log/syslog/var/log/messages: 系统日志
  • /var/log/auth.log/var/log/secure: 认证日志
  • /var/log/apache2/access.log: Apache访问日志
  • /var/log/nginx/access.log: Nginx访问日志

用途: 可能包含连接尝试、服务启动信息等

12. 安全策略配置

12.1. SELinux

  • 路径: /etc/selinux/config
  • 查看命令: sestatus
  • 用途: 了解安全策略,可能影响端口访问

12.2. AppArmor

  • 路径: /etc/apparmor.d/
  • 用途: 了解应用程序安全配置文件

13. 定时任务

13.1. Cron 任务

路径:

  • /etc/crontab
  • /etc/cron.d/
  • /var/spool/cron/

用途: 可能包含定期执行的网络服务或端口扫描脚本

14. 应用程序特定配置

14.1. Java 应用

  • 配置文件: application.propertiesapplication.yml

14.2. Node.js 应用

  • 配置文件: package.json, .env 文件

14.3. Python 应用

  • 配置文件: settings.py, .env 文件

15. 如何利用这些文件和服务获取信息

15.1. 手动查看

如果有对服务器的Shell访问权限,可以直接查看上述文件,以获取端口和服务信息。示例命令:

# 查看 /etc/services
cat /etc/services

15.1.1. 查看进程

ps aux

用途: 查看当前运行的进程,可以识别出哪些服务正在运行

15.1.2. 查看监听端口

sudo netstat -tuln
# 或
sudo ss -tuln

输出示例:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 :::80                   :::*                    LISTEN

说明:

  • 0.0.0.0:22 表示SSH服务在所有接口的22端口监听
  • 0.0.0.0:80 表示HTTP服务在所有接口的80端口监听

注意: 这些命令需要适当的权限(通常是root)才能查看所有监听端口

15.1.3. 查看打开的文件和网络连接

lsof -i
# 或查看特定端口
lsof -i :端口号

用途: 列出打开的网络连接和监听端口

15.2. 自动化工具

使用自动化工具进行端口扫描和服务识别,可以更高效地获取服务器的开放端口和基本信息。- Nmap:强大的网络扫描工具,可以扫描目标服务器的开放端口、运行的服务及其版本。 示例命令:

nmap -sV target_ip

说明:

  • -sV:探测服务版本信息。
  • Netcat (nc):可以用于手动连接和探测端口。 示例命令:
nc -zv target_ip 1-1000

说明:

  • -z:扫描模式,不发送数据。
  • -v:详细输出。

15.3. Web 服务器信息泄露

有时候,Web服务器配置不当,可能会在网页响应头、错误页面或特定URL中泄露服务器信息,包括运行的服务、版本号和开放的端口。

  1. 常见信息泄露点:- HTTP 响应头:如 Server: Apache/2.4.41 (Ubuntu),透露了Web服务器类型和版本。
    • 错误页面:如404、500错误页面,可能包含服务器信息。
    • 特定URL:如 /phpinfo.php/admin/等,可能泄露服务器配置。 注意:这些信息通常需要通过Web请求获取,而非直接查看服务器文件。---## 3. 安全建议为了防止攻击者通过上述文件和服务获取服务器的敏感信息,建议采取以下安全措施:1. 限制文件访问权限:
    • 确保敏感配置文件(如 /etc/hosts/etc/passwd等)的权限设置正确,避免不必要的读取权限。
  2. 隐藏或移除敏感信息:
    • 避免在Web应用的错误页面、响应头中泄露服务器信息。
    • 移除或禁用不必要的服务,减少攻击面。
  3. 使用防火墙:
    • 配置防火墙(如 iptablesufwfirewalld)仅允许必要的端口和流量,限制对管理端口(如SSH的22端口)的访问。
  4. 定期更新和打补丁:
    • 保持服务器操作系统和软件包的最新状态,修补已知的安全漏洞。
  5. 使用安全配置:
    • 遵循最小权限原则,仅运行必要的服务,使用强密码和密钥认证。
  6. 监控和日志审计:
    • 实施日志监控,及时发现异常访问和潜在的攻击行为。

安全建议

  1. 最小权限原则: 限制对敏感配置文件的访问权限
  2. 定期审计: 定期检查开放的端口和运行的服务
  3. 防火墙配置: 只开放必要的端口
  4. 日志监控: 监控异常的访问尝试和配置文件访问
  5. 文件完整性监控: 使用工具(如AIDE、Tripwire)监控关键配置文件的变化
  6. 禁用不必要的服务: 关闭不需要的网络服务以减少攻击面

Windows服务器端口和基本信息侦察指南

在Windows环境中进行渗透测试或安全评估时,了解目标服务器开放的端口和基本信息同样至关重要。Windows服务器通过注册表、配置文件和各种服务来管理网络配置。以下是Windows服务器上常见的文件、注册表项和服务,它们可能直接或间接地透露开放的端口和服务器的基本信息。

参考: 【2024/3/12 更新】Windows Server 2019 服务配置与管理汇总

1. 系统基本信息

1.1. 主机名和网络配置

1.1.1. 计算机名称

位置:

  • 注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName
  • 文件: 可通过命令 hostname 获取

用途: 获取服务器的计算机名称

1.1.2. Hosts 文件

路径: C:\Windows\System32\drivers\etc\hosts

用途: 了解本地DNS解析配置,可能揭示内部主机名和IP地址映射

示例内容:

127.0.0.1       localhost
192.168.1.10    server1.domain.local
10.0.0.50       database.internal.com

1.1.3. Networks 文件

路径: C:\Windows\System32\drivers\etc\networks

用途: 网络名称与网络地址的映射

1.1.4. Services 文件

路径: C:\Windows\System32\drivers\etc\services

描述: 包含服务名称与端口号及协议的映射关系,类似Linux的 /etc/services

用途: 了解常见Windows服务的默认端口

示例内容:

http    80/tcp
https   443/tcp
smb     445/tcp
rdp     3389/tcp

2. 注册表中的网络配置

2.1. TCP/IP 配置

路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

重要键值:

  • Hostname: 主机名
  • Domain: 域名
  • NameServer: DNS服务器地址
  • DhcpNameServer: DHCP分配的DNS服务器

用途: 查看网络配置和DNS设置

2.2. 网络接口配置

路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}

重要键值:

  • IPAddress: 静态IP地址
  • SubnetMask: 子网掩码
  • DefaultGateway: 默认网关
  • DhcpIPAddress: DHCP分配的IP地址

用途: 查看每个网络接口的详细配置

2.3. 端口代理配置

路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PortProxy

用途: 查看配置的端口转发规则

3. Windows防火墙配置

3.1. 防火墙规则

路径:

  • 配置文件: C:\Windows\System32\LogFiles\Firewall\pfirewall.log
  • 注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy

PowerShell命令:

Get-NetFirewallRule | Where-Object {$_.Enabled -eq 'True'}
Get-NetFirewallPortFilter

用途: 查看防火墙允许的端口和服务

3.2. Windows Defender 防火墙配置文件

路径: C:\Windows\System32\config\systemprofile\AppData\Roaming\Microsoft\Network\Connections\Pbk\

用途: VPN和远程连接配置

4. IIS (Internet Information Services) 配置

4.1. IIS 配置文件

路径:

  • 主配置: C:\Windows\System32\inetsrv\config\applicationHost.config
  • 站点配置: C:\inetpub\wwwroot\web.config
  • 应用程序配置: 各站点目录下的 web.config

用途: 查看IIS监听的端口、绑定的域名和虚拟目录配置

关键配置节点:

<sites>
    <site name="Default Web Site" id="1">
        <bindings>
            <binding protocol="http" bindingInformation="*:80:" />
            <binding protocol="https" bindingInformation="*:443:" />
        </bindings>
    </site>
</sites>

4.2. IIS 日志文件

默认路径: C:\inetpub\logs\LogFiles\

用途: 分析访问记录、连接来源和请求模式

5. 远程桌面服务 (RDP)

5.1. RDP 配置

注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server

重要键值:

  • fDenyTSConnections: 0=允许RDP连接, 1=禁用
  • PortNumber: RDP监听端口(默认3389)

注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

用途: 查看RDP服务是否启用及监听端口

6. 数据库服务配置

6.1. Microsoft SQL Server

配置文件路径:

  • SQL Server 2019: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\
  • 配置管理器: SQL Server Configuration Manager

注册表路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\

日志路径: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\

用途: 查看SQL Server监听端口(默认1433)和实例配置

常用命令:

Get-Service | Where-Object {$_.Name -like "*SQL*"}

6.2. MySQL/MariaDB (Windows版本)

配置文件:

  • C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
  • C:\Program Files\MySQL\MySQL Server 8.0\my.ini

用途: 查看MySQL监听端口(默认3306)和绑定地址

6.3. PostgreSQL (Windows版本)

配置文件: C:\Program Files\PostgreSQL\[version]\data\postgresql.conf

用途: 查看PostgreSQL监听端口和地址

7. 文件共享服务

7.1. SMB/CIFS 共享

查看命令:

Get-SmbShare
net share

注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares

用途: 查看共享文件夹配置(使用端口445)

7.2. FTP 服务

IIS FTP配置: 包含在 applicationHost.config

路径: C:\Windows\System32\inetsrv\config\applicationHost.config

用途: 查看FTP站点绑定和端口(默认21)

8. 邮件服务

8.1. Microsoft Exchange Server

安装路径: C:\Program Files\Microsoft\Exchange Server\

配置路径:

  • C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\
  • C:\Program Files\Microsoft\Exchange Server\V15\Bin\

用途: 查看Exchange监听的端口:

  • SMTP: 25
  • POP3: 110
  • IMAP: 143
  • HTTPS (OWA): 443

8.2. SMTP 服务

IIS SMTP配置:

  • 元数据库: C:\Windows\System32\inetsrv\MetaBase.xml

用途: 查看SMTP中继配置和端口

9. DNS 服务

9.1. Windows DNS Server

配置文件路径: C:\Windows\System32\dns\

区域文件: C:\Windows\System32\dns\*.dns

日志路径: C:\Windows\System32\dns\dns.log

用途: 查看DNS区域配置和解析记录(默认端口53)

10. Active Directory 相关

10.1. Active Directory 配置

数据库路径: C:\Windows\NTDS\ntds.dit

日志路径: C:\Windows\debug\netlogon.log

重要端口:

  • LDAP: 389
  • LDAPS: 636
  • Global Catalog: 3268, 3269
  • Kerberos: 88

注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters

10.2. 组策略对象 (GPO)

路径: C:\Windows\SYSVOL\domain\Policies\

用途: 可能包含网络配置、防火墙规则等策略

11. Web应用服务器

11.1. Apache (Windows版本)

配置文件:

  • 主配置: C:\Apache24\conf\httpd.conf
  • 虚拟主机: C:\Apache24\conf\extra\httpd-vhosts.conf

用途: 查看Apache监听的端口和虚拟主机配置

11.2. Tomcat

配置文件: C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf\server.xml

用途: 查看Tomcat监听端口(默认8080, 8443)

11.3. nginx (Windows版本)

配置文件: C:\nginx\conf\nginx.conf

用途: 查看nginx监听端口和服务器配置

12. 应用程序配置

12.1. .NET 应用程序

配置文件:

  • web.config (Web应用)
  • app.config (桌面应用)
  • appsettings.json (.NET Core)

常见位置: 应用程序根目录

用途: 可能包含数据库连接字符串、API端点等信息

12.2. Java 应用程序

配置文件:

  • application.properties
  • application.yml
  • server.xml

用途: 查看应用监听端口和服务配置

13. VPN和远程访问

13.1. RRAS (Routing and Remote Access Service)

注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess

配置文件: 通过远程访问管理控制台配置

用途: 查看VPN配置和端口:

  • PPTP: 1723
  • L2TP: 1701
  • IKEv2: 500, 4500

13.2. VPN连接配置

路径: C:\Users\[Username]\AppData\Roaming\Microsoft\Network\Connections\Pbk\rasphone.pbk

用途: 查看保存的VPN连接配置

14. 系统服务和端口

14.1. 服务列表

注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\

查看命令:

Get-Service
sc query

用途: 列出所有已安装的服务,识别网络服务

14.2. 启动程序

注册表路径:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

文件系统路径:

  • C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
  • C:\Users\[Username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\

用途: 可能包含自动启动的网络服务或后门程序

15. 日志文件

15.1. Windows事件日志

访问方式: 事件查看器 (eventvwr.msc)

日志位置: C:\Windows\System32\winevt\Logs\

重要日志:

  • Security.evtx: 安全审计日志
  • System.evtx: 系统事件日志
  • Application.evtx: 应用程序日志

PowerShell命令:

Get-EventLog -LogName Security -Newest 100
Get-WinEvent -LogName Security

用途: 分析登录尝试、服务启动、网络连接等事件

15.2. IIS日志

路径: C:\inetpub\logs\LogFiles\W3SVC1\

用途: Web访问日志,包含IP地址、请求URI、状态码等

15.3. 防火墙日志

路径: C:\Windows\System32\LogFiles\Firewall\pfirewall.log

用途: 记录防火墙阻止或允许的连接

16. 常用PowerShell和CMD命令

16.1. 查看网络连接和监听端口

# 查看所有TCP连接和监听端口
netstat -ano
netstat -ano | findstr LISTENING

# 使用PowerShell查看
Get-NetTCPConnection
Get-NetTCPConnection -State Listen

# 查看UDP端口
Get-NetUDPEndpoint

输出示例:

Proto  Local Address          Foreign Address        State           PID
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1000
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       1234

16.2. 查看运行的进程

# 查看所有进程
Get-Process
tasklist

# 查看特定端口的进程
netstat -ano | findstr :80
Get-Process -Id [PID]

16.3. 查看已安装的程序和服务

# 查看已安装程序
Get-WmiObject -Class Win32_Product
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*

# 查看服务
Get-Service
Get-Service | Where-Object {$_.Status -eq "Running"}

16.4. 查看网络配置

# 查看IP配置
ipconfig /all
Get-NetIPConfiguration
Get-NetIPAddress

# 查看路由表
route print
Get-NetRoute

# 查看DNS缓存
ipconfig /displaydns
Get-DnsClientCache

# 查看ARP缓存
arp -a
Get-NetNeighbor

16.5. 查看共享和权限

# 查看共享文件夹
net share
Get-SmbShare

# 查看共享会话
net session
Get-SmbSession

# 查看打开的文件
openfiles /query
Get-SmbOpenFile

16.6. 查看防火墙规则

# 查看防火墙状态
netsh advfirewall show allprofiles
Get-NetFirewallProfile

# 查看防火墙规则
netsh advfirewall firewall show rule name=all
Get-NetFirewallRule | Where-Object {$_.Enabled -eq 'True'}

# 查看特定端口的规则
Get-NetFirewallPortFilter | Where-Object {$_.LocalPort -eq 80}

16.7. 查看计划任务

# 查看计划任务
schtasks /query /fo LIST /v
Get-ScheduledTask | Where-Object {$_.State -eq "Ready"}

16.8. 查看用户和组

# 查看本地用户
net user
Get-LocalUser

# 查看本地组
net localgroup
Get-LocalGroup

# 查看登录会话
query user
qwinsta

17. WMI (Windows Management Instrumentation) 查询

17.1. 网络适配器配置

Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled -eq $true}

17.2. 监听端口

Get-WmiObject -Class Win32_Process | Where-Object {$_.Name -like "*server*"}

17.3. 已安装的软件

Get-WmiObject -Class Win32_Product

18. 容器和虚拟化

18.1. Docker (Windows容器)

配置文件: C:\ProgramData\Docker\config\daemon.json

查看命令:

docker ps
docker port [container_id]

用途: 查看容器端口映射

18.2. Hyper-V

配置路径: 通过Hyper-V管理器查看

PowerShell命令:

Get-VM
Get-VMNetworkAdapter

用途: 查看虚拟机网络配置

19. 云和企业服务

19.1. Azure Arc

配置路径: C:\ProgramData\AzureConnectedMachineAgent\

用途: Azure混合云连接配置

19.2. System Center Configuration Manager (SCCM)

客户端路径: C:\Windows\CCM\

日志路径: C:\Windows\CCM\Logs\

用途: 企业配置管理信息

20. 安全相关配置

20.1. BitLocker配置

注册表路径: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\FVE

用途: 磁盘加密配置

20.2. Windows Defender

配置路径: C:\ProgramData\Microsoft\Windows Defender\

日志路径: C:\ProgramData\Microsoft\Windows Defender\Support\

PowerShell命令:

Get-MpPreference
Get-MpComputerStatus

20.3. 审计策略

查看命令:

auditpol /get /category:*

用途: 了解系统审计配置

21. 证书和加密

21.1. 证书存储

路径: C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\

查看命令:

Get-ChildItem -Path Cert:\LocalMachine\My
Get-ChildItem -Path Cert:\CurrentUser\My

用途: 查看安装的SSL/TLS证书,可能揭示服务域名

22. 备份和恢复

22.1. Windows Server Backup

配置路径: 通过Windows Server Backup管理

日志路径: 事件查看器中的 Microsoft-Windows-Backup

用途: 可能包含敏感文件路径和配置信息


安全建议

  1. 访问控制: 严格限制对注册表、配置文件和系统目录的访问权限
  2. 审计日志: 启用详细的审计日志记录,监控对敏感文件和注册表的访问
  3. 防火墙配置: 使用Windows防火墙或第三方防火墙限制入站和出站连接
  4. 定期审计: 定期检查开放的端口、运行的服务和启动项
  5. 最小化服务: 禁用或删除不必要的服务和功能
  6. 补丁管理: 及时应用Windows更新和安全补丁
  7. 加密敏感数据: 使用BitLocker加密磁盘,加密敏感配置文件
  8. 网络分段: 使用VLAN和防火墙规则隔离敏感服务
  9. 监控异常: 使用SIEM工具监控异常的端口扫描和服务访问
  10. 强化RDP: 修改RDP默认端口,使用网络级身份验证(NLA),限制访问IP

常见Windows服务端口速查表

服务默认端口协议说明
HTTP80TCPWeb服务
HTTPS443TCP加密Web服务
FTP21TCP文件传输
FTPS990TCP加密FTP
SSH22TCP安全Shell
Telnet23TCP远程终端
SMTP25TCP邮件发送
DNS53TCP/UDP域名解析
POP3110TCP邮件接收
IMAP143TCP邮件接收
SNMP161UDP网络管理
LDAP389TCP目录服务
LDAPS636TCP加密LDAP
SMB/CIFS445TCP文件共享
SQL Server1433TCP数据库
MySQL3306TCP数据库
PostgreSQL5432TCP数据库
RDP3389TCP远程桌面
WinRM5985/5986TCPWindows远程管理
Kerberos88TCP/UDP身份验证
Global Catalog3268/3269TCPAD目录服务
Tomcat8080/8443TCPWeb应用服务器
服务器 OSCP 漏洞利用 手册