我们假设您可以访问目标上的命令行界面,例如 Linux 系统上的“bash”或 MS Windows 系统上的“cmd.exe”。在 Linux 系统上,从一种 Shell 开始,通常可以轻松切换到另一种。同样,从“cmd.exe”开始,如果可以,您可以切换到 PowerShell。我们刚刚在下面的终端中运行了命令“powershell.exe”来启动 PowerShell 交互式命令行。
终端
user@TryHackMe$ Microsoft Windows [版本 10.0.17763.2928] (c) 2018 Microsoft Corporation。保留所有权利。
strategos@RED-WIN-ENUM C:\Users\strategos>powershell.exe Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。
user@TryHackMe$ ls -lh /var/mail/ total 4.0K -rw-rw----. 1 jane mail 0 May 18 14:15 jane -rw-rw----. 1 michael mail 0 May 18 14:13 michael -rw-rw----. 1 peter mail 0 May 18 14:14 peter -rw-rw----. 1 randa mail 0 May 18 14:15 randa -rw-------. 1 root mail 639 May 19 07:37 root
要查找已安装的应用程序,您可以考虑列出 /usr/bin/ 和 /sbin/ 下的文件:
ls -lh /usr/bin/
ls -lh /sbin/
在基于 RPM 的 Linux 系统上,您可以使用 rpm -qa 获取所有已安装软件包的列表。-qa 表示我们要查询所有软件包。
在基于 Debian 的 Linux 系统上,您可以使用 dpkg -l 获取已安装软件包的列表。以下输出来自 Ubuntu 服务器。
Terminal
user@TryHackMe$ dpkg -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=====================================-==================================-============-=============================================================================== ii accountsservice 0.6.55-0ubuntu12~20.04.5 amd64 query and manipulate user account information ii adduser 3.118ubuntu2 all add and remove users and groups ii alsa-topology-conf 1.2.2-1 all ALSA topology configuration files ii alsa-ucm-conf 1.2.2-1ubuntu0.13 all ALSA Use Case Manager configuration files ii amd64-microcode 3.20191218.1ubuntu1 amd64 Processor microcode firmware for AMD CPUs [... ] ii zlib1g-dev:amd64 1:1.2.11.dfsg-2ubuntu1.3 amd64 compression library - development
user@TryHackMe$ who root tty1 2022-05-18 13:24 jane pts/0 2022-05-19 07:17 (10.20.30.105) peter pts/1 2022-05-19 07:13 (10.20.30.113)
我们可以看到用户 root 直接登录系统,而用户 jane 和 peter 通过网络连接,我们可以看到他们的 IP 地址。
请注意,不要将 who 与 whoami 混淆,后者会打印您的有效用户 ID。
Terminal
user@TryHackMe$ whoami jane
更进一步,您可以使用 w 命令,它会显示哪些用户已登录以及他们正在执行的操作。根据下面的终端输出,在本例中,peter 正在编辑 notes.txt,而 jane 正在运行 w 命令。
Terminal
user@TryHackMe$ w 07:18:43 up 18:05, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 Wed13 17:52m 0.00s 0.00s less -s jane pts/0 10.20.30.105 07:17 3.00s 0.01s 0.00s w peter pts/1 10.20.30.113 07:13 5:23 0.00s 0.00s vi notes.txt
要打印真实有效的用户和组 IDS,您可以发出命令“id”(表示 ID)。
Terminal
user@TryHackMe$ id uid=1003(jane) gid=1003(jane) groups=1003(jane) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
user@TryHackMe$ last jane pts/0 10.20.30.105 Thu May 19 07:17 still logged in peter pts/1 10.20.30.113 Thu May 19 07:13 still logged in michael pts/0 10.20.30.1 Thu May 19 05:12 - 05:17 (00:04) randa pts/1 10.20.30.107 Wed May 18 14:18 - 07:08 (16:49) root tty1 Wed May 18 13:24 still logged in [...]
最后,值得一提的是,“sudo -l”命令会列出当前系统上调用用户允许执行的命令。
网络
IP 地址可以使用“ip address show”(可缩写为“ip a s”)或旧命令“ifconfig -a”(该软件包已不再维护)显示。下面的终端输出显示了网络接口“ens33”,其 IP 地址为“10.20.30.129”,子网掩码为“255.255.255.0”,实际值为“24”。
Terminal
user@TryHackMe$ ip a s 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:a2:0e:7e brd ff:ff:ff:ff:ff:ff inet 10.20.30.129/24 brd 10.20.30.255 scope global noprefixroute dynamic ens33 valid_lft 1580sec preferred_lft 1580sec inet6 fe80::761a:b360:78:26cd/64 scope link noprefixroute valid_lft forever preferred_lft forever
DNS 服务器可以在 /etc/resolv.conf 中找到。请考虑以下使用 DHCP 进行网络配置的系统的终端输出。DNS(即名称服务器)设置为 10.20.30.2。
您可以使用“net start”检查已安装和已启动的 Windows 服务。预计会得到一个较长的列表;以下输出已被截取。
Terminal
C:\>net start These Windows services are started:
Base Filtering Engine Certificate Propagation Client License Service (ClipSVC) COM+ Event System Connected User Experiences and Telemetry CoreMessaging Cryptographic Services DCOM Server Process Launcher DHCP Client DNS Client [...] Windows Time Windows Update WinHTTP Web Proxy Auto-Discovery Service Workstation
The command completed successfully.
如果您只对已安装的应用程序感兴趣,可以执行“wmic product get name,version,vendor”。如果您在连接的虚拟机上运行此命令,您将获得类似于以下输出的内容。
Terminal
C:\>wmic product get name,version,vendor Name Vendor Version Microsoft Visual C++ 2019 X64 Minimum Runtime - 14.28.29910 Microsoft Corporation 14.28.29910 [...] Microsoft Visual C++ 2019 X64 Additional Runtime - 14.28.29910 Microsoft Corporation 14.28.29910
Privilege Name Description State ========================================= ================================================================== ======= SeIncreaseQuotaPrivilege Adjust memory quotas for a process Enabled SeSecurityPrivilege Manage auditing and security log Enabled SeTakeOwnershipPrivilege Take ownership of files or other objects Enabled [...]
此外,您可以使用 whoami /groups 来了解您属于哪些组。下面的终端输出显示,该用户属于 NT AUTHORITY\Local account and members of Administrators group 以及其他组。
Terminal
C:\>whoami /groups
GROUP INFORMATION -----------------
Group Name Type SID Attributes ============================================================= ================ ============ =============================================================== Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group NT AUTHORITY\Local account and member of Administrators group Well-known group S-1-5-114 Mandatory group, Enabled by default, Enabled group BUILTIN\Administrators Alias S-1-5-32-544 Mandatory group, Enabled by default, Enabled group, Group owner [...]
您可以通过运行“net user”来查看用户。
Terminal
C:\>net user
User accounts for \\WIN-SERVER-CLI
------------------------------------------------------------------------------- Administrator DefaultAccount Guest michael peter strategos WDAGUtilityAccount The command completed successfully.
如果系统是 Windows 域控制器,则可以使用“net group”发现可用的组,否则使用“net localgroup”,如下面的终端所示。
Terminal
C:\>net localgroup
Aliases for \\WIN-SERVER-CLI
------------------------------------------------------------------------------- *Access Control Assistance Operators *Administrators *Backup Operators *Certificate Service DCOM Access *Cryptographic Operators *Device Owners [...]
C:\>net localgroup administrators Alias name administrators Comment Administrators have complete and unrestricted access to the computer/domain
Members
------------------------------------------------------------------------------- Administrator michael peter strategos The command completed successfully.
使用 net accounts 查看计算机的本地设置;此外,如果计算机属于域,则可以使用 net accounts /domain。此命令有助于了解密码策略,例如最小密码长度、最长密码使用期限和锁定时长。
在 MS Windows 上,我们可以使用 netstat 获取各种信息,例如系统正在监听哪些端口、哪些连接处于活动状态以及谁正在使用这些连接。在本例中,我们使用选项 -a 显示所有监听端口和活动连接。-b 可以让我们找到参与连接的二进制文件,而 -n 用于避免解析 IP 地址和端口号。最后,-o 显示进程 ID (PID)。
最后,值得一提的是,使用 arp -a 可以帮助您发现同一局域网内最近与您的系统通信的其他系统。ARP 代表地址解析协议;arp -a 显示当前的 ARP 条目,即同一局域网内与您的系统通信的系统的物理地址。示例输出如下所示。这表明这些 IP 地址已经以某种方式与我们的系统进行了通信;该通信可以是尝试连接,也可以是简单的 ping。请注意,10.10.255.255 并不代表一个系统,因为它是子网广播地址。