Metasploit 编写自己的安全扫描器

使用您自己的Metasploit辅助模块

在某些情况下,您可能需要特定的网络安全扫描程序,或者在Metasploit中进行扫描活动比使用外部程序更容易进行脚本撰写。Metasploit具有许多可用于此目的的功能,例如访问所有利用代理,SSL,报告和内置线程的漏洞类和方法。想想您可能需要在系统上查找密码的每个实例的实例,或者扫描定制服务。更何况,写出自己的自定义扫描仪相当快捷。

 

Metasploit的许多扫描仪功能中有一些是:

  • 它提供对所有漏洞类和方法的访问
  • 为代理,SSL和报告提供支持
  • 内置线程和范围扫描
  • 易于编写和快速运行

 

编写自己的扫描器模块在安全审核期间也非常有用,它允许您定位每个错误密码的实例,或者您可以在内部扫描需要修补的易受攻击的服务。使用Metasploit框架将允许您将此信息存储在数据库中以供组织和稍后报告需求。

 

我们将使用这个非常简单的TCP扫描器,它将连接到默认端口12345上的主机,在运行时可以通过扫描器模块选项更改默认端口。在连接到服务器时,它发送'HELLO SERVER',接收响应并将其与远程主机的IP地址一起打印出来。

require 'msf/core'
class Metasploit3 < Msf::Auxiliary include Msf::Exploit::Remote::Tcp include Msf::Auxiliary::Scanner def initialize super( 'Name' => 'My custom TCP scan',
                        'Version'        => '$Revision: 1 $',
                        'Description'    => 'My quick scanner',
                        'Author'         => 'Your name here',
                        'License'        => MSF_LICENSE
                )
                register_options(
                        [
                                Opt::RPORT(12345)
                        ], self.class)
        end

        def run_host(ip)
                connect()
		greeting = "HELLO SERVER" 
		sock.puts(greeting)
                data = sock.recv(1024)
                print_status("Received: #{data} from #{ip}")
                disconnect()
        end
end

 

保存和测试我们的辅助模块

我们将文件保存到我们的./modules/auxiliary/scanner/目录中作为simple_tcp.rb并加载msfconsole。这里注意两点很重要。

首先,模块在运行时加载,所以我们的新模块不会显示,除非我们重新启动我们的选择界面。

第二个是文件夹结构非常重要,如果我们将扫描器保存在./modules/auxiliary/scanner/http/下,它将在模块列表中显示为scanner / http / simple_tcp

simple_tcp.rb

 

要测试我们的安全扫描器,请在端口12345上设置一个netcat侦听器,并在文本文件中管道以充当服务器响应。

[email protected]:~# nc -lnvp 12345 < response.txt
listening on [any] 12345 ...

 

接下来,您选择您的新扫描仪模块,设置其参数,并运行它以查看结果。

msf > use auxiliary/scanner/simple_tcp
msf auxiliary(simple_tcp) > set RHOSTS 192.168.1.100
RHOSTS => 192.168.1.100
msf auxiliary(simple_tcp) > run

[*] Received: hello metasploit from 192.168.1.100
[*] Auxiliary module execution completed

正如你从这个简单的例子中可以看出的那样,当你在渗透测试过程中需要一些自定义代码时,这种多功能性的级别会非常有帮助。框架和可重用代码的力量真正在这里发挥。

 

从我们的安全扫描仪报告结果

report mixin提供report_*() 。这些方法依赖于数据库来操作:

  • 检查实时数据库连接
  • 检查重复的记录
  • 在表格中写一条记录

 

数据库驱动程序现在自动加载。

db_driver postgres (or sqlite3, mysql)

 

在扫描器代码中使用Auxiliary :: Report mixin。

include Msf::Auxiliary::Report

 

然后,调用report_note()方法。

report_note(
:host => rhost,
:type => "myscanner_password",
:data => data
)

 

学习编写自己的网络安全扫描器可能看起来像是一项艰巨的任务,但正如我们刚刚所展示的那样,创建自己的辅助模块来存放和运行我们的安全扫描器的好处将有助于我们存储和组织数据,而不是在我们的测试中提到我们撰写报告的帮助。

    A+
发布日期:2018年05月11日 21:31:56  所属分类:Metasploit
最后更新时间:2018-05-11 21:31:56
评分: (3 票;平均数2.33 ;最高评分 5 ;用户总数3;总得分 7;百分比46.67)
付杰
iOS应用开发指南第2季:Cocoa Touch框架与构建
  • ¥ 69.0元
  • 市场价:99.0元
Kubernetes/K8S企业运维入门进阶实战
  • ¥ 298.0元
  • 市场价:498.0元
iOS应用开发指南第4季:表视图
  • ¥ 89.0元
  • 市场价:129.0元
Sublime Text3使用视频教程:神级代码编辑工具
  • ¥ 15.0元
  • 市场价:15.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  0   博主  0

  1. 头像 11001 1

    为什么use的时候无法加载模块

    • 付杰 付杰

      @11001 这个原因很多,加我好友先,我在线的话,找我远程吧!

  2. 头像 11001 1

    为什么我use的时候会出现failed load the module

    • 付杰 付杰

      @11001 这个原因很多,加我好友先,我在线的话,找我远程吧!