天天看点

Metasploit渗透学习日记四

SSH服务器扫描

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

Metasploit渗透学习日记四

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

FTP扫描

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

Metasploit渗透学习日记四

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

Metasploit渗透学习日记四

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

简单网管协议扫描(SNMP)

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

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

Metasploit渗透学习日记四

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

Metasploit渗透学习日记四
Metasploit渗透学习日记四

编写自己的扫描器

在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代码:

#Metasploit

require'msf/core'

classMetasploit3 < Msf::Auxiliary

includeMsf::Exploit::Remote::Tcp

includeMsf::Auxiliary::Scanner

    def initialize

        super(

             'Name' =>'My custom TCP scan',

             'Version' =>'$Revision:1$',

             'Description' =>'My quickscanner',

             'Author' =>'Your namehere',

             'License' =>MSF_LICENSE

             )

    register_options(

             [

                Opt::RPORT(12345)

             ],self.class)

    end

    defrun_host(ip)

             connect()

             sock.puts('helloserver')

             data= sock.recv(1024)

             print_status("Receviced:#{data}from#{ip}")

             disconnect()

     end

end
           

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

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

Metasploit渗透学习日记四

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

-------------------------------------Metasploit渗透学习日记四----------------------------------------