Metasploit是风靡全球深受各个渗透测试工程师喜爱的一款工具,称它是渗透测试必备工具丝毫不为过,保姆式的渗透过程——扫描模块、漏洞利用模块、后渗透模块为广大从业者提供了优秀的工具。
然而,有些情况下需要我们自行开发一些模块进行使用。其中后渗透模块、渗透模块和辅助模块都可以自行开发(Post模块暂时略过)
先了解Ruby的基本语句
'定义变量' a=123 a="hello"
"字符串拼接" a="123"
a << "555"
"这时a变成123555"
字符串截取
a="12345678"
a[0,2]=12
split函数
a="123,456,789"
a.split(,)
a[1]=123
a[2]=456
a[3]=789
"即以括号内的内容为分隔符,将字符串分割为字符数组"
变量类型转换
字符串转整数(int整型)
a.to_i "a由string转为int"
整数转字符串
a.to_s "a由int转为string"
数制转换
转16进制
a.hex
范围在Ruby中,在Metasploit模块开发中,是一个重要的存在,定义范围的语法如下
a=0..9
"这时,其各个极值如下"
a.mix=0 a.max=9
a.include(3)?=True
以上是对Ruby的基础语法进行讲解,下面来认识Metasploit的库文件
Rex :核心功能
MSF核心库:提供基本接口
MSF base:友好的接口
下面是这三个库的位置rex库位于/lib下,其余两个库位于/core和/base下
下面来看一个自己编写的FTP模块
class MetasploitModule < Msf::Auxiliary #MSF模块类
include Msf:Exploit::Remote::Http #include语句
include Msf::Auxiliary::Scanner #include
include Msf::Auxiliary::Report #include
def initalize #定义方法
super(
'Name' => 'FTP version Scanner' #模块说明,版权声明,编写人员等
'Description' => %q{
use this to scan the FTP version of Target(s),it is a quite quick script for scanning
writen by StarLake.wusheng please follow the laws to use this script!!
}
'Author' => 'StarLake wusheng' #作者
'License' => MSF_LICENSE #MSF许可
)
register_options( #设定目标端口
[
opt::RPORT(21) #FTP标准端口21
])
end
def run_host(target_host) #定义方法,在所有目标主机上都运行脚本
connect(true,false) #连接目标
if(banner)
print_status("#{rhost} is running") #输出状态
print_good("results: #{banner}") #输出结果
Report_servise(:host=>host, :port=>rport, :name=> "FTP", info=> banner) #保存服务
end
disconnect #断开连接
end
end
以上是作者编写的FTP 版本扫描器(Star Lake是作者创立的网络安全团队,无笙是作者写这个模块时候的ID)