Metasploitable 2系列教程:信息收集

Metasploitable 2 系统是一个基于ubuntu 的系统。其设计的最初目的为安全工具测试和常见漏洞攻击演示。而在这篇关于 Metasploit 的教程中,我们将列举有关 Metasploitable 2 这个系统的相关漏洞,并利用漏洞,来收集和获取我们所需要的信息。

在数学或计算机科学中的枚举是指,在一组中一一列出其中的元素。但在黑客术语中,枚举通常是指将我们所要收集的信息枚举出来。例如:我们需要枚举出数据库的用户名甚至密码,枚举系统的文件共享,枚举服务器当前状态,枚举web目录,群组及当前网络主机存活量等信息。在枚举过程中,我们还将收集到其它可利用的网络相关信息,这对于我们后续的渗透具有重要意义。对于 Metasploitable 2 最重要的是端口扫描和指纹识别的枚举信息的收集。端口扫描是用来探测服务器或主机开放的TPC和UDP端口的。而指纹识别,则是用来确定这些服务版本等基本信息的过程。在本篇文章中,我们将使用鼎鼎大名的扫描神器 Nmap ,来实现对 Metasploitable 2 的信息收集。除此之外,我们还将结合另一款枚举工具 enum4linux 来一起帮助我们完成信息的收集工作。enum4linux 是一款用于枚举 Windows 和 Samba 主机信息的工具。

从枚举过程中检索到的信息,例如,操作系统版本和正在运行的服务,我们将在这些服务中寻找到已知的漏洞。并通过开源的漏洞库(OSVDB) 和 已被公布出来的 CVE 来进行漏洞的利用!最后,我们还将使用 kali 下的 OpenVAS 来对目标主机进行一次全方位的漏洞扫描。

Metasploitable 2 的枚举与端口扫描

在这部分的 Metasploitable 2 枚举的教程中,我们将枚举正在运行的服务,帐户并同时执行端口的扫描动作。我们将使用 nmap 扫描及探测虚拟机的端口开放状态和开放服务的指纹信息。在本篇文章中,我们主要集中在网络信息的枚举收集上!

现在,让我们来打开已经安装好的 Metasploitable 2 虚拟机。并进行初始登陆,登录名及密码均为 msfadmin !登陆成功后,我们可以使用 ifconfig 命令来查看我们当前虚拟机的 IP 地址。同样,我们也可以在 kali 上使用 netdiscover 来扫描整个网段的 IP地址,以此来锁定目标的 IP !使用命令如下:

Netdiscover –r 192.168.111.0/24

以上命令会列举出所有处在 192.168.111.0 ~192.168.111.255 范围内的存活主机。当然了,如果想取得 Metasploitable 2 的IP,则必须保证你们同处一个地址段内!

Nmap 的端口及服务扫描

在这部分我们将使用 NMap 来进行扫描任务。我们将会使用 TCP SYN 的扫描方式,众所周知 SYN 是一种相对隐蔽的扫描方式,原因在于它并不向目标主机建立完整的三次握手连接。这里简单概述下, TCP 扫描的过程。TCP扫描首先会向目标服务器发送一个 SYN 包,当目标的服务端口处于开启时,则 nmap 收到一个 SYN-ACK 的响应包。如果我们发的 SYN 包在第一次发送时就没有获得响应,那么可以猜测目标防火墙可能对我们的探测进行了过滤或则并未开启服务。最后Nmap 则会向目标再次返回一个 ACK 包从而完成一次完整的 TCP 连接!

当我们使用Nmap进行 SYN 或其它形式的扫描时,如果我们不指定端口,那么 Nmap 默认会从所有的 65535 个端口中,选出其中 1000 个最为常见的端口作为扫描目标来进行探测。如果你怕遗漏一些重要信息我们可以使用 -p- 这个参数来实现对 所有 65535 个端口进行扫描!例如:

nmap -sS -p-[目标 IP 地址]

Tip:值得一提的是虽说 SYN 扫描是一种相对隐蔽的扫描方式。但是它只对那些比较老的防火墙有效,而对于如今技术不断更新及趋于完善的防火墙,它并不隐蔽!

端口开放就意味着有漏洞可被利用吗?

以上的命题,显而易见是错误的。端口开放并不意味着其底层的软件就存在可利用漏洞,我们还需结合其操作系统及运行服务的当前版本号。因此收集版本信息,对我们后续渗透也至关重要!下面 Nmap 将很好的帮我们解决这些问题。在 Nmap 中,我们可以使用 -sV-O 参数来分别获取到目标主机的 版本及操作系统版本信息。 除此之外其实我们还可以使用 -A 参数来取代 -O 参数,它同样可以获取版本信息,但它是基于 TCP 的全连接扫描,因此并不安全!命令如下:

Nmap –sS –sV -O [目标 IP 地址]

当我们成功执行以上扫描后,我们可以看到一下返回结果:

从以上结果,我们可以很清晰的看到,目标系统开放了很多危险端口及应用服务。并且详细列举出了目标操作系统的版本为 Linux 2.6.9 – 2.6.33 我们可以看到主机正在跑的服务有: SSH 其使用的是 OpenSSH 这款软件,还有 telnet 服务, Apache 2.2.8 web服务,SQL server 和其它各类服务。下面让我们来做个简单的总结:

Vsftpd 2.3.4 on open port 21

OpenSSH 4.7p1 Debian 8ubuntu 1 (protocol 2.0) on open port 22

Linux telnetd service on open port 23

Postfix smtpd on port 25

ISC BIND 9.4.2 on open port 53

Apache httpd 2.2.8 Ubuntu DAV/2 on port 80

A RPCbind service on port 111

Samba smbd 3.X on port 139 and 445

3 r services on port 512, 513 and 514

GNU Classpath grmiregistry on port 1099

Metasploitable root shell on port 1524

A NFS service on port 2049

ProFTPD 1.3.1 on port 2121

MySQL 5.0.51a-3ubuntu5 on port 3306

PostgreSQL DB 8.3.0 – 8.3.7 on port 5432

VNC protocol v1.3 on port 5900

X11 service on port 6000

Unreal ircd on port 6667

Apache Jserv protocol 1.3 on port 8009

Apache Tomcat/Coyote JSP engine 1.1 on port 8180

Nmap UDP 扫描

到目前为止,我们一直在介绍关于 TCP 的扫描。下面让我们介绍关于 UDP 的扫描!我们可以使用以下命令:

nmap -sU 192.168.111.128

同样我们可以使用 -p 参数,来指定我们要扫描的端口。相对于 TCP 扫描,UDP 扫描会慢于 TCP 。经过一小会儿的等待,Nmap 返回了以下 UDP 的扫描结果:

53/udp open domain

111/udp open rpcbind

137/udp open netbios-ns

2049/udp open nfs

Tip:UDP扫描相对于 TCP ,可能会造成大量的误报。原因在于,当目标主机的端口处于关闭状态时,它只会返回一个 ICMP 端口不可达的信息。这种扫描类似与 TCP 的 SYN 扫描方式!由于包的丢失,在很多扫描器中对于 UDP 的扫描默认都认为其端口是开放的。当我们没有获取到 ICMP 不可达的提示时,则说明目标系统的 UDP 端口是出于开放状态的。

Metasploitable 2 用户枚举

为了获取目标虚拟机上的用户信息,接下来我们将使用到 Nmap 的一个脚本 smb-enum-users 。使用命令如下:

nmap –script smb-enum-users.nse –p 445 [目标主机]

查询结果如下:

从扫描结果我们可以看到 Metasploitable 2 上大量的用户信息。其中很多服务账号和 admin 账号,都叫 msfadmin 这个用户名。下面让我们看看使用第二种方法,检索列表中的用户帐户,就是使用 Samba 服务器上的一个空会话的方式。

利用 rpcclient 空会话枚举用户账户

rpcclient 是用于执行客户端MS-RPC功能的Linux工具。空会话是指,连接一个 samba 或 SMB server 不需要用户名及密码验证,因此叫做空会话!支持空会话,是由系统默认的。但是从 Windows XP SP2 和 Windows Server 2003 开始系统就不支持空会话的连接了!连接使用的是445端口,因此目标主机也开放着445端口。当我们成功进行空会话连接后,我们就可以输入相应的命令,来查询当前主机的端口开放状态了!

现在让我们打开一个新的 terminal 窗口,使用 Metasploitable 2 samba server 来建立一个空会话连接。命令如下:

rpcclient –U “” [目标 IP 地址]

-U 参数用来指定一个空用户,后面跟上 Metasploitable 2 VM 的IP地址。当我们按 enter 后,会要求你输入密码我们继续回车即可!

接着我们执行以下命令:

rcpclient $> querydominfo

通过 querydominfo 命令,我们获取到了 domain, server 和目标系统的 用户总数 还有一些其他的信息。从返回结果我们得知,目标系统有 35 个用户下面让我们来枚举出他们!命令如下:

rcpclient $> enumdomusers

可以看到,此时已经列举出了所有可用用户账户。现在让我们使用 rpcclient ,利用已获取的用户账户信息,来查询用户更加详细的信息!命令如下:

rcpclient $> queryuser [用户名]

我们来查询 msfadmin 这个账户:

rcpclient $> queryuser msfadmin

这将返回关于服务器上的配置文件路径信息,主驱动器信息及密码相关的设置等。如果想了解更多的关于 rcpclient 的使用方法,可以使用 help 来查看。

枚举工具之 enum4linux

Enum4linux 是一款用 Perl 语言开发的工具,它主要用来枚举 Windows Samba 主机。下面让我们来看看如何在 Metasploitable 2 下使用它。

Usage: ./enum4linux.pl [options]ip

-U get userlist 获取用户列表
-M get machine list* 获取机器列表
-S get sharelist 获取分享列表
-P get password policy information 获取密码策略信息
-G get group and member list 获取组成员信息
-d be detailed, applies to -U and -S 更加详细信息,结合 -U 和 -S 使用
-u user specify username to use (default “”) 指定用户名
-p pass specify password to use (default “”) 指定密码
-a Do all simple enumeration (-U -S -G -P -r -o -n -i) 执行所有枚举操作
-o Get OS information 获取系统信息
-i Get printer information 获取打印机信息

在基本了解后,现在我们在 Metasploitable 2 上执行如下命令:

enum4linux 192.168.111.128

可以看到 enum4linux 为我们获取了许多有用的信息,我们得到了一个可用的共享:

并且还列出了可用的账户信息:

还有有关操作系统的信息:

到此为止,我们已经收集到了目标操作系统Metasploitable 2 的用户账户,开放端口及运行服务的版本等信息!同时我们还获取到了比较机密的
密码策略 信息。接下来我们就可以,对这些获取的信息进行评估分析,为我们下一步的渗透打下良好的基础。

时间: 2024-10-22 02:32:47

Metasploitable 2系列教程:信息收集的相关文章

Kali信息收集系列:(都是我以前的笔记整理了一下,就没加水印,习惯就好)

好几天没发微信公众号了,今天一起发下.(最近有点事情) 前些天老业界的一位朋友问我一些Safe新时代信息收集的问题 逆天虽然好多年不干老本行,但隔段时间都会关注一下 于是就花了点时间整理了一下,你们就当看笑话看看吧 不知道的就长点见识,知道了就笑笑~~~~~~~~ 下周起继续更新专业知识~~ 请容忍我偶尔开个安全的小差~~~(*^__^*) ~~~ —————————————————————————————— ★Kali信息收集~ 0.Httrack 网站复制机 http://www.cnblo

Web攻防系列教程之跨站脚本攻击和防范技巧详解

Web攻防系列教程之跨站脚本攻击和防范技巧详解[XSS] 收藏:http://www.rising.com.cn/newsletter/news/2012-04-25/11387.html 来源:瑞星 2012-04-25 14:33:46 摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性 以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么,又该如何进行有效的防范呢?本文对此进行了 有针对性的具体

【ASP.NET Identity系列教程(二)】运用ASP.NET Identity

注:本文是[ASP.NET Identity系列教程]的第二篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序的用户管理,以及实现应用程序的认证与授权等相关技术,译者希望本系列教程能成为掌握ASP.NET Identity技术的一份完整而有价值的资料.读者若是能够按照文章的描述,一边阅读.一边实践.一边理解,定能有意想不到的巨大收获!希望本系列博文能够得到广大园友的高度推荐. 14 Applying ASP

ComicEnhancerPro 系列教程十九:用JpegQuality看JPG文件的压缩参数

作者:马健邮箱:[email protected] 主页:http://www.comicer.com/stronghorse/ 发布:2017.07.23 教程十九:用JpegQuality看JPG文件的压缩参数 事先声明: 严格说来这篇教程是讲JpegQuality的,其实与CEP本身关系不大,但因为我自己经常从CEP启动JpegQuality查看JPG压缩参数, 我觉得其他人可能也有类似的需求,所以就在CEP系列教程里加了这么一篇,并不是有意给JpegQuality打广告. JpegQua

Django简介--Django从入门到精通系列教程

该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453131687 教程环境:Win7/10 + Python3.6 + pip + Pycharm + Django1.11 引言 我们都知道,Django是一种基于Python的Web开发框架. 那么,什么是Web开发?Web开发指的是开发基于B/S架构,通过前后端的配合,将后台服务器的数据在浏览器上

kubernetes系列教程(一)初探kubernetes功能与组件

1. kubernetes简介 1.1 kubernetes介绍 Kubernetes是google开源的一套微服务,容器化的编排引擎,是google内部容器十多年实战沉淀的结晶,已战胜Swarm,Messo成为容器编排的行业标准.kuberntes内置有很多非常优秀的特性使开发者专注于业务本身,其包含的功能如下: Service discovery and load balancing,服务发现和负载均衡,通过DNS实现内部解析,service实现负载均衡 Storage orchestrat

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

Hyper-V 2016 系列教程39 在 Windows 10中使用 Hyper-V 和 Windows PowerShell

注:以下内容部分取自微软官网: 现在你已基本了解如何部署 Hyper-V.创建虚拟机和管理这些虚拟机,让我们研究一下如何使用 PowerShell 来自动执行其中大部分活动. 返回 Hyper-V 命令列表 单击 Windows"开始"按钮,键入"PowerShell". 运行以下命令以显示适用于 Hyper-V PowerShell 模块的 PowerShell 命令的可搜索列表. PowerShell Get-Command -Module hyper-v | 

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【开篇】【持续更新中。。。】

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tutorial-building-asp-net-