Msf::Exploit::FILEFORMAT
这个mixin是用来创造文件格式exploit的.这个mixin实际不是很多,但最重要的方法是file_create:
顾名思义,该file_create
方法允许您创建一个文件。您应该使用这种方法,因为它不仅仅是将数据写入磁盘。它所做的一件重要的事情就是将文件创建以这个格式报告到数据库#{ltype}.localpath
,,和这个文件将总是被写入Metasploit的本地目录,定义在Msf::Config.local_directory
(默认是~/.msf4/local
),这使得文件保持良好和有序。
要使用mixin,首先导入Msf::Exploit::FILEFORMAT
到你的 Metasploit3
范围内
include Msf::Exploit::FILEFORMAT
下面是一个file_create用来构建一个想象的exploit的例子:
# This is my imaginary exploit
buf = ""
buf << "A" * 1024
buf << [0x40201f01].pack("V")
buf << "\x90" * 10
buf << payload.encoded
file_create(buf)
这个 Msf::Exploit::FILENAME
默认情况下注册一个FILENAME
数据储存选项.它实际上是可选的,如果没有文件名提供,这mixin将会用这个格式设置名字"exploit.fileformat.#{self.shortname}"
, self.shortname
意味着这个模块名的短版本
如果你想设置一个默认的(但仍然可以由用户更改),那么你只需在模块中重新注册它,如下所示:
register_options(
[
OptString.new('FILENAME', [true, 'The malicious file name', 'msf.jpg'])
], self.class)
偶尔,你可能不希望你的用户改变文件名。一个懒惰的技巧是通过FILENAME在运行时修改数据存储选项,但是这是非常不推荐的。事实上,如果你这样做,你将不会通过msftidy。相反,这是如何正确完成的:
1 - 注销FILENAME
选项
deregister_options('FILENAME')
2 - 接下来,重写该file_format_filename
方法,并使其返回所需的文件名:
def file_format_filename
'something.jpg'
end
3 - 最后,请在模块描述中留下关于此的注释。
https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/fileformat.rb
https://github.com/rapid7/metasploit-framework/tree/master/modules/exploits/windows/local