Metasploit渗透学习日记

情报收集

情报收集是渗透测试流程中的第二个步骤。情报收集的目的是获取渗透目标的准确信息,以了解目标组织的动作方式,确定最佳的进攻路线。如果情报收集工作不够细致,那么你可能会与可利用的系统漏洞或可实施攻击的目标之交臂。

情报收集的工作可能会包含从网页中收集信息、google hacking、为特定的目标的网络拓扑进行完整的扫描映射等,这些工作往往需要较长的时间,会比较考验你的耐性。情报收集工作需要周密的计划、调研,而最重要的是要具备攻击者角度去思考问题的能力。

在开始收集情报工作之前,你应该考虑如何将每一步操作和得到的结果记录下来。

使用被动、间接的信息收集技巧,你可以在不接触到目标系统的情况下挖掘目标信息。举例来说,你可以使用这些技巧确定网络边界情况和网络运维人员,甚至了解到目标网络中使用的操作系统和网站服务器软件的类型。

1、whois查询

说明:查看域名的详细信息

命令格式:

whois 域名/IP

 

首先通过域名进行一次查询,所得到的结果如下:

 


 

 在一些大机构中,DNS服务器往往部署在公司内部,可以被作为攻击点,使用针对DNS服务器的区域传送攻击以及其它类似的攻击,攻击者通常能够揭露出一个网络内部及外部的很多信息。在这里,我们可以看到Domain servers为:FIGINS1.DNSPOD.NET 和FIGINS2.DNSPOD.NET,不属于i0415.com所有,所以,我们不能对这些域名服务器进行攻击。但是我们通过whois命令可以得到很多关于这个域名相关的信息,比如域名注册人的信息等等,这在以后的渗透中也有一定的利用价值。

 

其次,我们获取一下i0415.com这个服务器的IP,然后针对这个IP再进行一次查询,其结果如下:

 

 

 

从这个结果中,我们发现,此服务器的提供商为XRNET,是息壤传媒文化有限公司。

 

NSLookup工具

为了获取关于服务器的附加信息,我们使用nslookup工具

 

 

我们可以看到i0415.com的邮件服务器的DNS指向5 mxdomain.qq.com. 说明邮件服务是由第三方运维的。

 

主动信息收集

在主动信息收集工作中,我们与目标系统直接交互,从而对其进行更深入的了解。举例来说,我们可以执行端口扫描来确定目标系统开放了哪些端口、运行了哪些服务。但是请注意:如果你在主动信息收集过程中不够小心,那么你很可能会被入侵检测系统(IDS)入侵防御系统(IPS)给逮住。

 

使用Nmap进行端口扫描

通过被动信息收集确定了目标的IP范围后,我们可以开始使用端口扫描获取目标开放的端口。端口扫描的过程实际上是逐个对远程主机的端口发起连接,从而确定哪些端口是开放的。

Nmap是一款强大的扫描工具,其参数及应用技巧非常多,在这里,只用了一些常用的选项

1、-sS 这个选项是执行一次隐秘的TCP扫描,以确定某个特定的TCP端口是否开放

2、-Pn 这个选项是告诉nmap不要使用ping命令预先判断主机是否存活,而是默认所有主机都是存活状态。

 

现在来扫描一下

 

 

 

我们看到,主机i0415.com开放了很多端口以及对应的服务。

为了获取更多的信息,可以尝试使用-A选项,它将尝试进行深入的服务枚举和旗标获取,这些能够为你提供目标系统更多的细节信息。

 

下面加上-A选项再进行一次扫描,扫描结果除了上次的端口信息外,还多了以下关于服务器的更为详细的信息:

 

 

在这里,我们可以发现,服务器运行是操作系统是window server 2003 SP1 数据库mssql,其版本信息也一目了然。

 

高级Nmap扫描技巧:TCP空闲扫描

一种更加高级的nmap扫描方式是TCP空闲扫描,这种扫描能让我们冒充网络上另一台主机的IP地址,对目标进行更为隐秘的扫描(我可不可以认为是跳板技术的一种呢?)。进行这种扫描之前,我们需要在网络上定位一台使用递增IP帧标识(IP ID:用于跟踪IP包的次序的一种技术)机制的空闲主机(空闲是指该主机在一段特定的时间内不向网络发送数据包)。

我们可以使用Metasploit框架的auxiliary/scanner/ip/ipidseq模块,来寻找能够满足TCP空闲扫描要求的空闲主机,如下所示:

 

 

需要说明的是:ipidseq模块中的options设置:必设置的项为:RHOSTS 这个可是单个IP,也可以是一个IP段(如192.168.1.1-192.168.1.254)、CIDR地址(192.168.1.0/24),另外THREAD参数是设定扫描线程数的,默认为1单线程。增加参数值可提高扫描速度,降低参数值可减少网络上的数据流量。一般来说,在windows平台上运行metasploit这个参数值最好不要超过16,在类unix平台上运行不要超过128。

 

在这里,我们发现:192.168.1.110's IPID sequence class: Incremental!提示为incremental,这说明,这台主机满足空闲TCP扫描的要求,接下来,我们在nmap中增加选项 –sI 来进行一次空闲TCP扫描:

 

 

 使用空闲扫描,我们可以不用自身IP地址向目标主机发送任何数据包,就能获取到目标主机上开放的端口信息。

 

在MSF终端中运行Nmap

 

现在我们把nmap和metasploit结合起来使用。我的使用的BT5R3平台,所以对书里的一些设置命令,在这里根本用不上,所以就省略了,因为BT5R3默认已经做好这一切了。我们直接使用就可以。

终端中输入msfconsole进入MSF,使用db_namp开始进行扫描:

 



扫描结果我这里不作分析了,相信都能看的明白。

输入services来查看目标系统上运行的服务信息:


 

到这里,我们就已经收集到了很多服务器上面的信息了

今天复了一下昨天学习的空闲扫描,发现了一细节上的问题,那就是用Nmap扫描的时候,参数的顺序问题。

Nmap扫描的时候,参数-sI一定要写在最后面,也就是说-sI后面接的是满足空闲扫描条件的主机,否则会出现错误,如下图所示:


在这里,-sI参数写在了前面,所以出现错误了……

其实,昨天利用Nmap进行的只是端口和系统信息方面的扫描,都说Nmap强大,可是仅仅用来扫描端口和系统信息,真的是有点徒有虚名了,因为其它扫描工具也一样可以实现。巧的是,今天看了一个视频,里面讲到了关于Nmap利用漏洞脚本扫描目标主机。以前这个功能我也从没用过,所以亲自试验了一下,又多学会了nmap一项很重要功能。

命令格式:nmap-script=漏洞脚本ip(在-script=漏洞脚本后也可以接其它的参数,也可以不接)。有人就会问了,那么Nmap所使用的漏洞脚本在哪里找呢?这也是我开始的时候很迷惑的地方,但这个视频里提到了,Nmap所用的漏洞脚本在Metasploit的按装目录下,我的是bt5r3,所以我的目录为:/opt/metasploit/common/share/nmap/scripts里。如下图:


 

看到了吧,我用ls命令查看了一下,有好多漏洞脚本。在试验的过程中,我发现windows下基于smb的漏洞比较多,而且很多视频里讲metaspliot渗透实战中,也基本全都是利用smb漏洞做的演示……呵呵……无语吧?下图是我用Nmap扫描的结果:


 


 

上面的第二张图中,明确扫描出了很多可利用的漏洞,但是在实际利用过程中,我发现只有MS08-067可以成功,其它的几个都不行,不知道为什么,这也是很多视频里都用MS08-067来做演示的原因吧……

 

使用Metasploit进行端口扫描

 

在Metasploit中不仅能够使用第三方扫描器,而且在其辅助模块中也包含了几款内建的端口扫描器。这些内建的扫描器在很多方面与Metasploit框架进行了融合,在辅助进行渗透攻击方面更具有优势。

利用已攻陷的内网主机获取内网的访问通道并进行攻击,这样的渗透攻击过程通常称为跳板攻击,它使我们能够利用网络内部已攻陷的主机,将攻击数据路由到原本无法到达的目标。

举例来说,假设你攻陷了一台位于防火墙之后使用网络地址转换(NAT)的主机。这台主机使用的是无法从internet直接连接的私有IP地址。如果你希望能够使用metasploit对位于NAT后方的主机进行攻击,那么你可以利用已被攻陷的主机做为跳板,将流量传送到网络内部的主机上。

在Metasploit框架中搜索端口扫描工具的命令:

search portscan


 

上图中,显示出了扫描端口的模块。

 

根据需要,可以选择相应的扫描模块对目标进行扫描。我是参照教程来进行试验,教程中使用的是syn扫描模块



结果也很明显,扫描到了一些开放的端口。

 

针对性扫描

在渗透测试工作中,我们还可以针对某个已知的可利用的漏洞来对目标系统进行扫描。

1、服务消息块协议扫描

metasploit可以利用它的smb_version模块来遍历一个网络,并获取windows的系统版本号。下面来演示一下:



 

在上面的结果中,我们可以看见目标系统的详细信息,包括系统类型、版本、机器名字等等……而且扫描结果将保存在metasploit的数据库中,以便后续使用,可以使用db_hosts命令查看数据库中保存的结果。由于我的bt版本是bt5r3,所以db_hosts这个命令被hosts这个命令取代了。

 




SSH服务器扫描

如果在扫描过程中遇到一些主机运行着SSH(安全shell),你应当对SSH的版本进行识别。SSH是一种安全的协议,但这里的安全仅指数据传输的加密。在Metasploit中可以使用ssh_version模块来识别目标服务器上运行的SSH版本。


这里我没有安装SSH,所以没扫描出来什么结果。

 

FTP扫描

FTP是一种复杂且缺乏安全性的应用层协议。FTP服务器经常是进入一个目标网络最便捷的途径。在Metasploit可以使用ftp_version模块进行扫描


FTP服务器的版本信息为:MiscrosoftFTP Service 5.0 现在我们使用Metasploit框架中的anonymous模块来检查一下这台FTP服务器是否允许匿名用户登录


可以看到允许匿名用户登录,而且具有READ权限。

 

简单网管协议扫描(SNMP)

简单网管协议(SNMP)通常用于网络设备中,用来报告带宽利用率、冲突率以及其它信息。然而,一些操作系统也包含SNMP服务器软件,主要用来提供类似CPU利用率、空闲内存以及其它系统状态信息。可访问的SNMP服务器能泄漏关于特定系统相当多的信息,甚至会导致设备被远程攻陷。如果你能得到具有可读/写权限的Cisco路由器SNMP团体字符串,便可以下载整个路由器的配置,对其进行修改,并把传回到路由器中。

Metasploit中包含一个内置的辅助模块scanner/snmp/snmp_enum,它是为SNMP扫描专门设计的。


利用scanner/snmp/snmp_login模块,你可以尝试对一个IP或一段IP使用字典来猜解SNMP团体字符串。


 


 

编写自己的扫描器

在Metasploit中缺少很多针对特定应用和服务的扫描模块。不过值得庆幸的是,Metasploit框架拥有很多建立自定义扫描器所需的实用功能。自定义扫描器可以使用Metasploit框架中全部的渗透攻击类和方法,框架还内建了代理服务器支持、安全套接字层(SSL)支持、报告生成以及线程设置等。

Metasploit框架软件的扫描器模块包括各种mixin(混入类),如用于TCP、SMB的渗透攻击mixin,以及集成在Metasploit框架中的辅助扫描mixin。Mixin是为你预定义的函数和调用的代码模块。Auxiliary::Scanner mixin重载了Auxiliary基类的run方法,在运行时可以使用run_host(IP)、run_range(地址范围),或run_batch(IP)列表文件调用模块的方法,然后对IP地址进行处理。我们可以利用Auxiliary::Scanner调用额外的Metasploit内置功能。

 

教程中给出了一个简单的TCP扫描器的Ruby脚本,我也亲自测试了一下,脚本功能可以完全实现。需要说明的是我们自己定义的代码存放位置,按我的从教程中的理解是这个自己定义的脚本放在modules文件夹下所对应的各个子文件夹里,MSF就可以自动装载了。我是放在了modules下的Auxiliary/scanner文件夹里面了,进入到MSF里面后,提示Auxiliary从原来的499个变成了500个。下面我给出TCP扫描器的ruby代码:

 

  1. #Metasploit   
  2.   
  3. require'msf/core'  
  4.   
  5. classMetasploit3 < Msf::Auxiliary  
  6.   
  7. includeMsf::Exploit::Remote::Tcp  
  8.   
  9. includeMsf::Auxiliary::Scanner  
  10.   
  11.     def initialize  
  12.   
  13.         super(  
  14.   
  15.              'Name' =>'My custom TCP scan',  
  16.   
  17.              'Version' =>'$Revision:1$',  
  18.   
  19.              'Description' =>'My quickscanner',  
  20.   
  21.              'Author' =>'Your namehere',  
  22.   
  23.              'License' =>MSF_LICENSE  
  24.   
  25.              )  
  26.   
  27.     register_options(  
  28.   
  29.              [  
  30.   
  31.                 Opt::RPORT(12345)  
  32.   
  33.              ],self.class)  
  34.   
  35.     end  
  36.   
  37.     defrun_host(ip)  
  38.   
  39.              connect()  
  40.   
  41.              sock.puts('helloserver')  
  42.   
  43.              data= sock.recv(1024)  
  44.   
  45.              print_status("Receviced:#{data}from#{ip}")  
  46.   
  47.              disconnect()  
  48.   
  49.      end  
  50.   
  51. end  


把这个保存一下,我这里按教程中定义的名字一样为simple_tcp.rb,下面我们来验证它:

我们在auxiliary/scanner目录下建立一个1.txt的文本文件,里面随便写点什么,我写的是hello metasploit,这个文件的作用是回复信息给simple_tcp.rb脚本的。然后我们在终端执行,如图所示:


这个简单的扫描器使用Msf::Exploit::Remote::Tcp Mixin处理TCP通信,使用Msf::Auxiliary::Scanner Mixin继承扫描器所需的各个参数与执行方法。我们还可以通过info auxiliary/scanner/simple_tcp 和show options来进一步理解这个脚本代码的编写方法


今天的内容没什么实质性的东西,都是介绍工具的,而且介绍的也不多,不够全面。算是学习日记凑数吧~:(

 

 

漏洞扫描

 

漏洞扫描器是一种能够自动在计算机、信息系统、网络以及应用软件中寻找和发现安全弱点的程序。它通过网络对目标系统进行探测,向目标系统发送数据,并将找反馈数据与自带的漏洞特征进行匹配,进而列举出目标系统上存在的安全漏洞。

 

 

使用漏洞扫描器通常会在网络上产生大量流量,因此如果你不希望被别人发现渗透测试工作踪迹的时候,建议不要使用漏洞扫描器。无论你使用自动还是手工方式,漏洞扫描都是渗透测试工作流程中最为重要的步骤之一。

 

 

基本的漏洞扫描

 

 

 

 

nexpose

 

nessus

 

 

 

 

专用漏洞扫描器

 

当你想要在一个网络上查找某个特定的漏洞时,Metasploit自带的许多辅助模块可以帮助你完成这样的任务。

 

 

 

 

验证SMB登录(smb_login模块)

 

使用SMB登录扫描器对大量主机的用户和口令进行猜解。这种扫描会在被扫描的windows主机系统日志中留下痕迹。smb_login模块允许你指定用户名和口令的组合、用户名列表和口令列表的组,或者前两者中各要素的组合(用户名加口令列表,或用户名列表加口令)。

 

扫描开放的VNC空口令(vnc_none_auth模块)

 

当扫描到空口令后,可使用vncviewer来连接目标系统。

 

 

扫描开放的X11服务器(open_x11)

 

 

当扫描到有漏洞的主机后可使用xspy工具来对目标的键盘输入进行记录:/pentest/sniffers/xspy/xspy-display 192.168.230.130:0 -delay 100

 

利用扫描结果进行自动化攻击(autopwn)

 

在bt5r3中,已经没有了这个工具.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值