Metasploit渗透学习日记四
如果在扫描过程中遇到一些主机运行着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代码:
- #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
#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脚本的。然后我们在终端执行,如图所示:
这个简单的扫描器使用Msf::Exploit::Remote::Tcp Mixin处理TCP通信,使用Msf::Auxiliary::Scanner Mixin继承扫描器所需的各个参数与执行方法。我们还可以通过info auxiliary/scanner/simple_tcp 和show options来进一步理解这个脚本代码的编写方法