前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Enum4linux-ng:面向安全专业人士和CTF玩家的下一代Enum4linux

Enum4linux-ng:面向安全专业人士和CTF玩家的下一代Enum4linux

作者头像
FB客服
发布2021-01-08 15:49:23
发布2021-01-08 15:49:23
1.7K00
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

Enum4linux-ng

Enum4linux-ng是面向安全专业人士和CTF玩家的下一代Enum4linux(一款Windows/Samba枚举工具),并且具备了JSON/YAML导出等附加功能。

该项目中的enum4linux-ng.py是基于Mark Lowe的enum4linux.pl重写的,Mark Lowe之前属于Portcullis实验室,现在任职于Cisco CX安全实验室。而enum4linux.pl则是一个用于从Windows和Samba系统中枚举信息的工具,主要面向的是安全专业人员和CTF玩家。该工具主要是一个封装了Samba工具nmblookup、net、rpcclient和smbclient的工具。

其一,Enum4linux-ng是出于教育目的开发的。其二,我们也是为了解决enum4linux.pl现有的问题才开发Enum4linux-ng的。跟enum4linux.pl相比,Enum4linux-ng不仅包含了原始工具原有的功能,而且还增加了许多特性修改,支持解析Samba工具的所有输出,并允许将所有结果导出为YAML或JSON文件。

功能特性

  • 支持YAML和JSON输出;
  • 颜色丰富的终端输出;
  • 包含了ldapsearch和polenum的原生实现;
  • 支持遗留的SMBv1连接;
  • 自动检测IPC签名支持;
  • “智能”枚举;
  • 支持超时;
  • 支持IPv6;

区别之处

跟原始版本的Enum4linux相比,Enum4linux-ng在某些方面还是有很明显的不同之处。下面是两个最重要的区别:

  • RID循环并不属于默认枚举(-A)进程之中,但是可以使用-R来启用该功能;
  • 参数名有着显著的不同,比如说新版使用的是-A而不是-a;

安装依赖

首先,我们需要安装工具的依赖组件。该工具使用了下列samba客户端工具:

  • nmblookup
  • net
  • rpcclient
  • smbclient

目前,几乎所有的Linux发行版都支持这些工具的运行,包名一般叫smbclient、samba-client或类似的东西。

除此之外,我们还需要下列Python包:

  • ldap3
  • PyYaml
  • impacket

工具安装

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
代码运行次数:0
复制
$ git clone https://github.com/cddmp/enum4linux-ng && cd enum4linux-ng

工具运行

代码语言:javascript
代码运行次数:0
复制
$ ./enum4linux-ng.py -As <target> -oY out

工具使用

代码语言:javascript
代码运行次数:0
复制
ENUM4LINUX - next generation

usage: enum4linux-ng.py [-h] [-A] [-As] [-U] [-G] [-Gm] [-S] [-C] [-P] [-O] [-L] [-I] [-R] [-N] [-w WORKGROUP] [-u USER] [-p PW] [-d] [-k USERS] [-r RANGES] [-s SHARES_FILE] [-t TIMEOUT]

                        [-v] [-oJ OUT_JSON_FILE | -oY OUT_YAML_FILE | -oA OUT_FILE]

                        host

This tool is a rewrite of Mark Lowe's enum4linux.pl, a tool for enumerating information from Windows and Samba systems. It is mainly a wrapper around the Samba tools nmblookup, net,

rpcclient and smbclient. Other than the original tool it allows to export enumeration results as YAML or JSON file, so that it can be further processed with other tools. The tool tries to

do a 'smart' enumeration. It first checks whether SMB or LDAP is accessible on the target. Depending on the result of this check, it will dynamically skip checks (e.g. LDAP checks if LDAP

is not running). If SMB is accessible, it will always check whether a session can be set up or not. If no session can be set up, the tool will stop enumeration. The enumeration process can

be interupted with CTRL+C. If the options -oJ or -oY are provided, the tool will write out the current enumeration state to the JSON or YAML file, once it receives SIGINT triggered by

CTRL+C. The tool was made for security professionals and CTF players. Illegal use is prohibited.

positional arguments:

  host

optional arguments:

  -h, --help         show this help message and exit

  -A                 Do all simple enumeration including nmblookup (-U -G -S -P -O -N -I -L). This option is enabled if you don't provide any other option.

  -As                Do all simple short enumeration without NetBIOS names lookup (-U -G -S -P -O -I -L)

  -U                 Get users via RPC

  -G                 Get groups via RPC

  -Gm                Get groups with group members via RPC

  -S                 Get shares via RPC

  -C                 Get services via RPC

  -P                 Get password policy information via RPC

  -O                 Get OS information via RPC

  -L                 Get additional domain info via LDAP/LDAPS (for DCs only)

  -I                 Get printer information via RPC

  -R                 Enumerate users via RID cycling

  -N                 Do an NetBIOS names lookup (similar to nbstat) and try to retrieve workgroup from output

  -w WORKGROUP       Specify workgroup/domain manually (usually found automatically)

  -u USER            Specify username to use (default "")

  -p PW              Specify password to use (default "")

  -d                 Get detailed information for users and groups, applies to -U, -G and -R

  -k USERS           User(s) that exists on remote system (default: administrator,guest,krbtgt,domain admins,root,bin,none). Used to get sid with "lookupsid known_username"

  -r RANGES          RID ranges to enumerate (default: 500-550,1000-1050)

  -s SHARES_FILE     Brute force guessing for shares

  -t TIMEOUT         Sets connection timeout in seconds (default: 5s)

  -v                 Verbose, show full samba tools commands being run (net, rpcclient, etc.)

  --keep             Don't delete the Samba configuration file created during tool run after enumeration (useful with -v)

  -oJ OUT_JSON_FILE  Writes output to JSON file (extension is added automatically)

  -oY OUT_YAML_FILE  Writes output to YAML file (extension is added automatically)

  -oA OUT_FILE       Writes output to YAML and JSON file (extensions are added automatically)

工具演示样例

在下面的例子中,我们将针对Windows Server 2012 R2进行工具执行测试,使用的是下列命令:

代码语言:javascript
代码运行次数:0
复制
enum4linux-ng.py 192.168.125.131 -u Tester -p 'Start123!' -oY out

创建了一个用户名为“Tester”且密码为“Start123!”的用户账号,防火墙配置为允许访问。枚举完成之后,由于没有指定其他选项,因此该工具将假定-A(其行为类似于enum4linux)选项。-oY选项将所有枚举数据导出为YAML文件,以便进行后续的数据处理。该工具会在开始时自动检测到远程主机上未运行LDAP。因此,它将跳过任何进一步的LDAP检查,而这些检查通常是默认枚举的一部分。

第二个例子中,我们将针对Metasploitable2主机进行测试,使用的是下列命令:

代码语言:javascript
代码运行次数:0
复制
enum4linux-ng.py 192.168.125.145 -A -C

这一次我们使用了-A和-C选项,虽然第一个选项的行为类似于enum4linux的-a选项,但第二个选项将启用服务枚举。该工具会自动检测到需要使用的SMBv1。

项目地址

Enum4linux-ng:【GitHub传送门

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Enum4linux-ng
  • 功能特性
  • 区别之处
  • 安装依赖
  • 工具安装
  • 工具运行
  • 工具使用
  • 工具演示样例
  • 项目地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档