Linux 手工枚举

  • 作为红队,拥有手动枚举的能力很重要,因为它为我们提供了关于目标系统上的信息以及潜在的提权途径的最好的和最深入的洞察。

我是谁?

  • id:该命令显示当前用户的UID(用户ID)、GID(组ID)以及所属的其他组的信息。它可以用于确定当前用户的身份和权限。
  • who:该命令显示当前登录的用户及相关信息,如登录时间、终端等。它可以用于查看当前系统上的用户会话。
  • whoami:该命令显示当前用户的用户名。它可用于快速确定当前会话所使用的用户名。
  • w:该命令提供关于当前登录用户的详细信息,包括他们在做什么以及系统的负载信息。它显示了每个登录用户的用户名、终端、登录时间、运行的命令和系统负载等。
  • last:该命令显示系统最近的登录记录。它列出了过去登录到系统的用户、登录时间、登录来源等信息。可以用于审计和跟踪用户登录活动。

我几岁?

  • uname -a:该命令用于显示系统的相关信息,包括内核名称、主机名、内核发行版本、内核版本、硬件名称等。它提供了关于系统配置和内核的基本信息。
  • lsb_release -a:该命令用于显示Linux标准基础(LSB)的发行信息。它会显示一些关于发行编号、发行名称、发行描述等信息,提供了更详细的发行版信息。
  • cat /proc/version:该命令用于显示内核版本和编译信息。/proc/version文件包含了当前运行的内核版本、编译器版本和其他相关信息。
  • cat /etc/issue:该命令用于查看系统的发行版本信息。/etc/issue文件通常包含了操作系统发行版的名称和版本,它可用于快速了解系统的发行版信息。
  • cat /etc/*-release:该命令用于查看系统发行版的详细信息。它会搜索/etc/目录下所有以 -release 结尾的文件,并显示它们的内容。这些文件通常包含操作系统的发行名称、版本、代号等更详细的信息。

我住哪?

  • ip -a/ifconfig:这些命令用于显示系统中网络接口(网卡)的信息,包括接口名称、IP地址、MAC地址、网络配置等。ifconfig是较旧的命令,而ip命令是较新的替代品,用于执行类似的功能。这些命令对于配置和管理网络接口非常有用,并可以帮助发现内网网段。
  • ip route:该命令用于查询系统的路由表。它显示了系统中定义的网络路由信息,包括目标网络、网关、接口等。通过查看路由表,可以了解系统中数据包的转发路径和网络连接情况。
  • ip neigh:该命令用于查询系统的邻居表,也称为ARP(地址解析协议)缓存。邻居表包含了本地网络中已知的主机的IP地址和对应的MAC地址。通过查看邻居表,可以了解本地网络中的主机和它们的物理地址。
  • arp -a:该命令用于显示系统的ARP缓存,其中包含了已解析的IP地址和对应的MAC地址。ARP是一种网络协议,用于将IP地址映射到物理MAC地址。通过查看ARP缓存,可以了解已经解析的IP地址和对应的MAC地址,有助于进行内网主机发现和网络故障排除。

其他信息

  • hostname:该命令返回目标机器的主机名。主机名是系统在网络中的标识符,尽管它可以被更改为任意值,但在某些情况下,它可以提供关于目标系统在网络中的角色的信息。
  • sudo -l:该命令列出了允许用户以root权限运行某些或全部命令的权限。通过执行该命令,可以查看当前用户在系统上拥有的特权和允许执行的命令。
  • ls -a:该命令用于列出当前目录中的所有文件和目录,包括隐藏文件和目录。通过使用-a选项,可以显示以.开头的隐藏内容。
  • history:该命令用于查看历史命令列表,它会显示用户在该会话中执行的先前命令。查看历史命令可以提供关于目标系统的一些信息,例如使用过的命令、密码或用户名等。
  • /etc/passwd:这是一个文本文件,包含了系统上所有用户的基本信息,如用户名、用户ID、主目录路径等。通过查看该文件,可以获取有关系统用户的信息。
  • /etc/crontab:该文件包含了系统上的定时任务(Cron Jobs)的配置。通过查看该文件,可以了解系统上已定义的定时任务,这对于了解系统的自动化操作很有帮助。
  • echo $PATH:该命令用于显示当前用户的命令执行路径。执行命令时,系统会在定义的路径中查找可执行文件。通过查看$PATH环境变量,可以了解可执行文件的搜索路径,有助于理解系统命令的来源。
  • ps -ef:该命令用于列出系统中运行的进程。通过执行该命令,可以查看当前系统中运行的进程列表,包括进程的PID(进程ID)、所属用户、内存使用情况等。
  • netstat:该命令用于查看网络连接和网络统计信息。通过执行不同的选项,可以获取有关系统上的网络连接、监听端口、网络接口等信息。
  • find:该命令用于在目标系统上搜索文件和目录。它可以帮助发现重要的信息和潜在的权限提升向量。通过指定不同的搜索条件,可以查找特定类型的文件、文件所有者等。

Linux 自动枚举

  • 在枚举过程中,有几个自动化工具可以帮助节省时间。这些自动化工具执行的枚举操作简单、快速,并提供全面的信息,具有明显的优点。

LinPEAS

1
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
  • 不过国内一般都用不了,需要科学上网。

image-20240217211925637

  • 总结:
    • 整体界面美观;
    • 收集内容比较全面;
    • 会调用 LES 脚本进行 Linux 漏洞收集。

LinEnum

  • LinEnum(Linux Enumeration):⼀个流行的 Linux 本地枚举脚本,用于收集有关系统的各种信息,识别不安全的配置,提取可用于提升权限的漏洞信息。

  • 官方没给一键利用命令,需要下载到本地进行利用,我这里简单编一个:

1
git clone https://github.com/rebootuser/LinEnum.git ; cd LinEnum ; sh LinEnum.sh

image-20240217212146187

  • 总结:

    • 整体界面一般,没什么美化;

    • 收集内容比较一般,更多的是本地的文件内容;

    • 不会进行 Linux 漏洞收集。

linux-smart-enumeration

  • linux-smart-enumeration(LSE):这是⼀个具有模块化功能的 Linux 本地枚举脚本,它可在不同的等级上运行以获取不同详细程度的信息。

  • 一键利用脚本如下:

1
curl "https://github.com/diego-treitos/linux-smart-enumeration/releases/latest/download/lse.sh" -Lo lse.sh;chmod 700 lse.sh; sh lse.sh

image-20240217212454485

  • 总结:

    • 整体界面美观;

    • 收集内容比较全面,更多的是本地的文件内容;

linux-exploit-suggester

  • linux-exploit-suggester(LES):该工具主要用于识别 Linux 系统中可能存在的可利用的漏洞,以帮助用户提升权限。

  • 一键利用脚本:

1
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh ; chmod +x les.sh ; ./les.sh

image-20240217212839421

  • 总结:

    • 整体界面一般;

    • 收集内容比较少,只有系统漏洞,所以被 LinPEAS 包含了;

Linuxprivchecker

1
wget https://raw.githubusercontent.com/sleventyeleven/linuxprivchecker/master/linuxprivchecker.py ; python2 linuxprivchecker.py -w -o linuxprivchecker.log

image-20240217213041923

  • 总结:

    • 整体界面一般;

    • 收集内容比较少;

unix-privesc-check

1
git clone https://github.com/pentestmonkey/unix-privesc-check.git ; cd unix-privesc-check ; sh upc.sh

image-20240217213440263

  • 总结:

    • 脚本老旧,10年前的了;

    • 整体界面非常一般;

    • 收集内容比较少;