如何使用Metasploit框架
//Metasploit Framework下文用msf代替
什么是msf
msf是一个强大的开源工具,它允许管理员去测试网络中存在的漏洞。
A program that exploits a security problem and implements its own code is usually referred to as an exploit.//理解不了,等大神翻译
对缓冲区溢出的成功攻击需要很多繁琐的工作。开发人员必须尝试偏移地址,找到包含要编码的代码的有效载荷的空间,然后在被攻击系统的内存中创建它。
但是,即使对目标系统进行了微小的更改,代码也不再有效。例如,开发人员很少会在Windows的不同版本中使用一个“通用”存储地址,在那里他可以放置自己的shell code并通过缓冲区溢出来执行它。因此,在每个平台上都会出现不同的安全漏洞。
msf框架的体系结构
下面的图片显示了msf框架体系结构的示意图。模块化设计可以根据各自的需求进行框架的扩展和更改,因为已经存在的功能可以十分方便地重用。下面简要介绍各个组件。
Ruby扩展库(REX)
Ruby扩展库是框架的基本组件,它包含各种可以由底层或其他工具直接使用的类。库提供的功能包括各种网络协议的服务端和客户端程序。
MSF-Core
框架核心提供了事件处理和会话管理功能,为处理框架提供了重要的功能。
MSF-Base
框架允许更容易地访问核心,并形成外部接口。用户界面直接访问这个库。Metasploit的插件功能值得一提,它允许通过向现有组件添加新命令来灵活地扩展框架。
模块
模块中框架函数的结构允许对程序进行清晰的处理,因为模块名称也反映在程序的文件夹结构中。
利用模块
这个模块包含用于利用漏洞的程序和脚本
载荷
这里提供了有效载荷,可以在成功地利用目标系统漏洞之后使用。有效载荷是运行在目标上的实际恶意代码。
编码器和空指令
为了使有效载荷在IDS / IPS1系统或反病毒程序下能不被发现,这些模块提供了混淆载荷的功能。
辅助模块
辅助模块为信息检索提供各种扫描程序。其中包括登录扫描器、漏洞扫描器、网络嗅探和端口扫描器。
开始使用msf
使用msfconsole命令从Linux shell启动程序。开始:
msfconsole
如果出现错误,请遵循下面的步骤
1.错误信息
git-compat-util.h:280:25: fatal error: openssl/ssl.h ...
解决:
sudo apt-get install libssl-dev
2.错误信息
"A database appears to be already configured, skipping initialization"
I run msfconsole but then the connection error shows up:
"Failed to connect to the database: could not connect to server:
Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?
could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1)
and accepting TCP/IP connections on port 5432?"
解决:
grep "port =" /etc/postgresql/9.6/main/postgresql.conf
如果你看到端口不是5432,就改成5432,如果你的端口是5433,使用这条命令去升级
sed -i 's/\(port = \)5433/\15432/' /etc/postgresql/9.6/main/postgresql.conf
重启 postgresql 服务
service postgresql restart
重新初始化msf数据库
msfdb reinit
1.错误信息
fatal: Not a git repository (or any of the parent directories): .git
现在必须添加git存储库。别担心,这需要一段时间
git clone git://github.com/gitster/git
第二步
cd git
第三步
make
第四步
make install
第五步
git init
1 如果你输入
help show
或者
help search
你会得到你需要的大量命令帮助
确定一个远程主机
请注意正确的用法
db_nmap -v -sV host_or_network_to_scan
这是得到存活主机的方法.
列出开放端口:
search port-scan
列出所有找到的主机
hosts
将这些主机添加到远程目标列表:
host -R
确定漏洞,使用利用模块
一旦您了解了远程主机系统使用(nmap、lynix、maltego、wp - scan等),您可以选择一个利用模块并测试它。还有一种方法可以在msfconsole中搜索各种各样的漏洞:
search type:exploit
search CVE-XXXX-XXXX
search cve:2009
search platform:aix
看一下metasploit unleashed获取更多的搜索例子
从这一点开始,需要的选项根据你正在使用的利用模块改变,但是你可以得到可用的选项列表用:
show payloads
现在你得到了大量的payload列表
在你列出目标之前,你需要选择一个利用模块,然后:
show targets