玩转Metasploit(一):开始与结束的序章
众人皆黑,唯我独尊;天下武功,唯简不破。
前奏:基本布局和简单命令
在Kali中,metasploit是预装好的。与其说是一款工具,它更像是一个渗透平台——在metasploit套件中,最著名的接口就是msfconsole。下面我将重点讲解msfconsole,然后如果还有空闲就顺带讲一下其它的接口。
metasploit使用postgresql数据库,在kali上也已被预装好了,使用如下命令启动postgresql数据库服务(kali 2.0废除了metasploit服务)
service postgresql start
接着初始化该数据库,使用msfdb(metasploit套件之一)用来管理metasploit的数据库
msfdb init # 这会创建一个用户名和密码均为msf的数据库用户
用ss -ant
检查下(5432),然后就可以敲命令打开msfconsole了
msfconsole
msfconsole的布局是一个树状结构,使用use命令进入某个module,之后使用back命令退出该module,一切都是自然而然的事情。下面是让你能够在msfconsole中*穿行的命令和基本知识点,学会它也就算入门了。
首先是help命令,这会打印msfconsole的所有命令的帮助界面,它相当于内置的帮助文档
help
如果想要进一步了解某个命令,使用
help $某个命令
接着是show命令,默认展示所有的模块和选项
show
也可以指定特定的模块类名或其它选项:msfconsole内置了基本六类module,分别是auxiliary(辅助)、encoders(编码)、exploits(漏洞利用)、nops(空指令)、payloads(有效载荷)、post(邮递),这些翻译只是为了便于理解,不必记忆;其它的如option、targets等;对于像targets、options、info这样的选项,也可以不加show,打印的结果是一样的
show $模块类名或其它
然后是search命令,它用来搜索模块:它的语法
search $模块名
这是一个重要的命令,学会高效的查找能使你的工作事半功倍
使用use命令进入某个模块
use $模块名
使用back命令退出某个模块
back $模块名
那么多模块总不能一个个的全部记住吧,msfconsole的info命令这时候便起到大作用了。info命令默认展示当前使用模块的信息(如果已经加载了的话)
info
在info后面跟上特定的模块名用来展示对应模块的信息
info $模块名
check命令用来检查目标主机是否存在漏洞,没有任何参数;该命令通常在载入某个模块后使用
check
connect命令用来连接远程主机,其连接方式和netcat、telnet相同。可以指定端口
connect $主机的IP地址 $端口号
另外就是set命令,用来设置载入模块的相关信息,如RHOST(远程主机)、LHOST(本地主机)等,至于像payload、encode这样的信息,因为涉及模块,我觉得还是小写的好
'''
一点例子,关于set命令的用法
'''
set payload blah/blah/blahblah
set LHOST 192.168.1.5
set RHOST 192.168.1.12
最后介绍一个在攻击时用的命令sessions命令,它用来显示活跃的会话,并提供-i参数用来在这些会话之间切换,-l参数用来查看攻陷主机的相关信息
sessions -l # 查看当前主机的相关信息
sessions -i 2 # 切换到sesion channel2
除了上述命令,msfconsole还有一些别的命令,由于篇幅这里不再赘述。需要用是自然是手到擒来。
模块存储在/usr/share/metasploit-framework/modules
目录下。往上/usr/share/metssploit-framework
存储metasploit的所有配置和数据文件。
前面说过metasploit有两种启动方式:除了控制台接口msfconsole,还有图形化界面armitage(如图是它的启动图标,你也可以在命令行下敲它的名字启动)
在早期的版本中还有一款msfcli作为metasploit的命令行接口,却不幸现已被正式废弃,准确说是被整合到当前版本msfconsole的命令中,使用-x参数
msfconsole -x "use exploit/multi/samba/usermap_script; set RHOST 192.168.1.12; set PAYLOAD cmd/unix/bind_netcat;[set LHOST IP;] run"
metasploit套件还提供了自动化生成payload的组件:msfvenom和msfpc。注意它们都包括在msfconsole里面,可以从msfconsole启动,不过考虑到其重要性所以把它们拎出来了。什么?你问我二者有什么区别:msfvenom是metasploit的标准payload生成器,它除了可以生成payload还负责encoder;而msfpc可以看成是前者的简化/封装版本,专心致力于生成payload,在操作上相对简单、友好。
插曲:metasploit的文件系统
前面讲到,metasploit的主要文件存储在/usr/share/metasploit-framework
。下面具体讲解每个文件夹的具体作用。
0x01:data
data文件夹包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。
0x02:documentation
顾名思义,documentation文档包含框架的可用文档。
0x03:lib
lib文件夹就是metasploit的库文件夹。
0x04:modules
modules文件夹存储metasploit的模块文件。
0x05:plugins
plugins文件夹用来存放metasploit的插件。
0x06:scripts
scripts文件夹用来存放metasploit的脚本,包括meterpreter及其它脚本。
0x07:tools
tools文件夹存放多种的命令行实用程序。
间奏:黑客们的葵花宝典
本段文字属于介绍性的概述:0. 如何科学的使用search命令、1. 以实例为证,传授读者以黑客攻击的基本“套路”流程、2. 如何使用msfpc生成payload、3. 如何搞一个后门、4. 如何在网络世界隐藏自己。这些东西都是黑客学习的基础,但也是最重要的。希望读者也能早日找到自己的节奏,提炼出自己的葵花宝典。
0x01:search命令
search命令虽然也有带横杆的参数但是更常用的是带冒号的参数。使用type参数限定模块的类型;使用platform参数限定针怼的操作系统或服务。详见help文档
# 查找exploit类型的模块,并且它作用于windows的smb服务
search type:exploit platform:windows smb
0x02:Nmap扫描+msf攻击
众所周时,Nmap已经成了黑客们走亲访友、居家旅行必备之优秀端口扫描神器。下面就让我们以实战入侵一台Windows笔记本来验证我的论点。
接下来的入侵假设你已经攻进了目标主机所在的局域网。首先运用一系列社工知识搞到了对方的IP地址,接着用Nmap进行扫描目标主机
nmap -sV $目标IP地址
Nmap用法多样,它还可以扫描网段内的流氓接入点、存在蠕虫病毒的主机等;但是端口扫描仍然是Nmap的核心构件。
0x03:生成payload
前面说过metasploit的payload可以通过msfvenom或msfpc自动生成,下面将以msfpc为工具讲解如何生成多种多样的payload。
0x04:生成backdoor
为了能够持久的对目标进行攻击,我们需要在目标主机植入后门。为了方便起见,我还是使用msfpc生成backdoor,毕竟backdoor也是一种形式的payload。
0x05:隐藏黑客行为的方法
在窃取到我们想要的信息,或给目标主机实施了预计的效果后,在离开之前最重要的便是清理你流过的痕迹。最先想到的便是日志文件,我们的很多足迹都残留在这些日志文件中,meterpreter shell内置了clearev命令可以直接清除这些日志上留下的足迹。而这不是本文要讲的重点,事实上psexec模块可以做到这一点。为了隐藏自己的行踪,在完成入侵后首要任务就是清除浏览的痕迹;有的黑客会购买或自己捕捉大量肉鸡,来代替自己完成某些需要大量网络资源消耗的任务,比如集体性的DDoS攻击;这里推荐一款浏览器,名曰Tor(洋葱路由浏览器),它能很好的隐藏你在网络世界的行踪,有兴趣的同学可以了解下(仅作为学习交流目的哦)。
尾声:文末说明
你知道吗?metasploit最早是用Perl写成的,在零七年用Ruby重写。现在它有两个版本:企业本和社区版。企业版是要收费的,一年的费用大概是三万美刀,在Kali内置的就是社区版,由Github上一群活跃的年轻人维护。
所以,还是老老实实学习社区版吧。(笑)
上一篇: C++类型转换运算符详解
推荐阅读
-
php求一个网段开始与结束IP地址的方法
-
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
-
php求一个网段开始与结束IP地址的方法,phpip_PHP教程
-
php求一个网段开始与结束IP地址的方法
-
php求一个网段开始与结束IP地址的方法_PHP
-
PHP一次请求的开始与结束:MINIT和RINIT、RSHUTDOWN和MSHUTDOWN
-
02-一次请求的开始与结束 韩国结束与开始 结束与开始图片 结束与开始影音先
-
php求一个网段开始与结束IP地址的方法_PHP
-
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
-
PHP一次请求的开始与结束:MINIT和RINIT、RSHUTDOWN和MSHUTDOWN