码迷,mamicode.com
首页 > Web开发 > 详细

metasploit基础

时间:2015-11-29 06:46:24      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:metsaploit

Metasploit是由HDmoore创立的。它是一个开放的漏洞研究与渗透代码开发的平台。

技术分享

Metasploit的攻击阶段:

使用metasploit分为情报收集阶段、威胁建模阶段、漏洞分析阶段、后渗透攻击阶段、报告生成阶段五个阶段。

情报收集阶段主要就是通过直接或者间接的情报收集的手段,对目标进行详细的探查分析。

威胁建模阶段主要就是从整体的眼光去对前面情报收集阶段收集到的情报进行分析,决定我们应该利用哪个漏洞,具体的攻击步骤是什么,然后攻击。

漏洞分析阶段的话比较高级一点,我们刚开始学metasploit的时候不用进行这个阶段的工作。这个阶段就是利用metasploit里面的各种漏洞分析工具,通过他们的一些反馈自己去挖掘新的漏洞。

后渗透攻击阶段就是一个扩大战果的阶段。我们在前面攻击成功后要想将这个目标主机以后还能为我们所用,我们就要进行后渗透攻击了。

最后,我们需要对我们前面的过程做一个总结,列出漏洞的细节,给出攻击的路径,这就是报告生成阶段。

Metasploit框架

我们的metasploit是一个框架性的东西,所以我们把这个框架的结构搞清楚后会好学很多。

技术分享

上图就是我们的metasploit体系框架。

我们metasploit整个的框架由基础库文件、模块、插件、接口、功能程序五个部分组成。

我们最常用的部分是模块部分。模块又可以分为辅助模块auxiliary、渗透攻击模块exploits、攻击载荷模块payloads、空指令模块nops、编码器模块encoders和后渗透攻击模块post模块组成。

辅助模块主要提供大量的辅助功能,包括前期情报收集,漏洞探测等功能。

渗透攻击模块是在前期情报收集工作完成之后才使用的。这个模块里面包含着各种漏洞的攻击代码,它可以在知道你漏洞的情况下对目标进行快速而精准的攻击。

攻击载荷就是在前面的渗透攻击完成后向目标系统注入的一段代码,而我们的攻击载荷模块就是组装攻击载荷的车间。

空指令模块。我们在0day里面写shellcode时,有时候会用到0x90之类的空指令。我们在构造数据缓冲区时,经常要在真正的shellcode前加上一段足够长的空指令区。而我们用metasploit做这样的事情时,攻击载荷就是shellcode,这里的空指令模块就为shellcode保驾护航,构造空指令区。

0day里,我们已经接触到了shellcode的编码。在这里编码器模块就是对我们前面组装出来的攻击代码进行编码工作,做这样的工作,有时是因为攻击目标的限制,有时是为了隐藏自身的特征码避免被杀毒软件查杀。

在我们已经对目标攻击后,我们就要扩大我们的战果了。利用后渗透攻击模块我们可以完成进一步的攻击,比如利用这个机器做跳板再攻击或者攻击这台机器的内网之类的。

一辆坦克,只有装备动力系统,装甲系统,雷达系统以及杀伤力巨大的炮弹才能发挥出巨大的战斗力。而同样,我们在metasploit的应用过程中,只有根据这些模块的特点加以组合利用才能发挥出metasploit渗透神器的真正风采。

metasploit目录结构

在使用metasploit时,我们少不了要翻metasploit的存储目录

技术分享

技术分享

Kalibt5msf的路径为/usr/share/metasploit-framework

Modules目录

首先看modules目录:

技术分享

这里,

encoders:供msfencode编码工具使用,具体可以使用 msfencode –l

exploits:攻击模块 每个介绍msf的文章都会提到那个ms08_067_netapi,它就在这个目录下。

nops:空指令。

payloads:这里面列出的是攻击载荷,也就是攻击成功后执行的代码。比如我们常设置的windows/meterpreter/reverse_tcp就在这个文件夹下。

Post:后渗透阶段模块,在获得meterpretershell之后可以使用的攻击代码。比如常用的hashdumparp_scanner就在这里。

Data目录

其次是data目录:

这里存放的是metasploit的脚本引用文件。

技术分享

最后是msfscript目录中的resource目录:

技术分享

这里的.rc脚本相当于windows下的批处理脚本,在某些情况下会有一定便捷性。

metasploit基本命令

在这里,列出了一些关于metasploit的命令,这些命令,在我们舌头过程中经常会用到。如果你是在bt5或者kali平台上运行metasploit的话,还需结合相关的linux命令。

 

当然,如果你忘记了命令,你可以man一下,search一下,或者help(--help,-h)来查找相应的资料。

show命令:

技术分享

如果你不知道这个模块里有什么东西的话,你可以show一下来查看。

show命令,show命令的作用是帮助你查看内容及参数。具体的如下图所示。技术分享

show options

列出某个渗透攻击或模块中所有的配置参数。

show targets

列出渗透攻击所有支持的目标平台。

msfencode技术分享

msf中的编码器

msfconsole

开启metasploitconsole,有个重要的参数 –r,加载resources脚本

hosts

技术分享

这里可以使用hosts查询指定字段的内容,可用的字段下面有列出。或者也可以使用hosts –S “keyword” 进行搜索。

Creds

技术分享

Creds命令可以列出成功获取到的信息,比如用户名密码,数据库密码,开放端口及服务等。

search

技术分享

搜索一切可以use的模块,常用的方法是search 直接加关键词,比如search 08_067,但是我们也可以根据cve编号查找。通常用nessus扫到的漏洞都有cve信息,这里我们就可以这样搜索了。

技术分享

info

展示出制定渗透攻击或模块的相关信息。

Use

use 命令的作用就是装载

use name

装载一个渗透攻击或模块。

use incognito

加载incognito功能(用来盗窃目标主机的令牌或假冒用户)

use priv

加载特权提升扩展模块,来扩展metasploit库。

use sniffer

加载嗅探模式。

Set

set function

设置特定的配置参数(设置本地或远程主机参数)。

set target num

指定你所知道的目标的操作系统以及补丁版本类型。
set payload name

指定想要使用的攻击载荷。

check

检测目标是否选定渗透攻击存在相应的安全漏洞。

Exploit

exploit

执行渗透攻击或模块来攻击目标。
exploit -j

在计划任务下进行渗透攻击(攻击将在后台进行)。
exploit -z

渗透攻击完成后不与回话进行交互。
exploit -e encoder

制定使用的攻击载荷编码方式(exploit -eshikata_ga_nai)。
exploit -h

列出exploit命令的帮助信息。

List:

list_tokens -u

列出目标主机用户的可用令牌。
list_tokens -g

列出目标主机用户组的可用令牌。

Sessions:

sessions -l

列出可用的交互会话(在处理多个shell时使用)。
sessions -l -v

列出所有可用的交互会话以及详细信息,EG:攻击系统时使用了哪个安全漏洞。
sessions -s script

在所有活跃的metasploit会话中运行一个特定的metasploit脚本。
sessions -c cmd

在所有活跃的metasploit会话上执行一个命令。
sessions -u sessionID

升级一个普通的win32 shellmetasploit shell

sniffer:

sniffer_interfaces

列出目标主机所有开放的网络端口。
sniffer_dump interfaceID pcapname

在目标主机上启动嗅探。
sniffer_start interfaceID packet-buffer

在目标主机上针对特定范围的数据包缓冲区启动嗅探。
sniffer_stats interfaceID

获取正在实施嗅探网络接口的统计数据。
sniffer_stop interfaceID

停止嗅探。

数据库有关命令:

db_create name

创建一个数据库驱动攻击所要使用的数据库(db_createautopwn)。
db_connect name

创建并连接一个数据库驱动攻击所要使用的数据库(db_connectuser:passwd@ip/sqlname)。
db_namp

利用nmap并把扫描数据存储到数据库中(支持普通的nmap语句,-sT -v -P0)。
db_autopwn -h

展示出db_autopwn命令的帮助信息。
db_autopwn -p -r -e

对所有发现的开放端口执行db_autopwn,攻击所有系统,并使用一个反弹式shell
db_destroy

删除当前数据库。
db_destroy userpasswd@hostport/database

使用高级选项来删除数据库。

metasploit  辅助命令

help

打开meterpreter使用帮助。
run scriptname

运行meterpreter脚本,在scripts/meterpreter目录下可查看到所有脚本名。
sysinfo

列出受控主机的系统信息。
ls

列出目标主机的文件和文件夹信息。
ps

显示所有运行的进程以及相关联的用户账户。
migrate PID

迁移到一个指定的进程IDPID号可通过ps命令从主机上获得)。

execute -f cmd.exe -i

执行cmd.exe命令并进行交互。

reg command

在目标主机注册表中进行交互,创建,删除,查询等操作。
setdesktop number

切换到另一个用户界面(该功能基于那些用户已登录)。
screenshot

对目标主机的屏幕进行截图。
upload file

向目标主机上传文件。
download file

从目标主机下载文件。
keyscan_start

针对远程目标主机开启键盘记录功能。
keyscan_dump

存储目标主机上捕获的键盘记录。
keyscan_stop

停止针对目标主机的键盘记录。

uictl enable keyboard/mouse

接管目标主机的键盘和鼠标。
background

将你当前的metasploit shell转为后台执行。
hashdump

导出目标主机中的口令哈希值。

add_user username password -h ip

在远程目标主机上添加一个用户。

reboot

重启目标主机。

Metasploit的使用

在使用metasploit的时候,基本上就是按照searchàsetàexploitàmetasploit的步骤过来。先是找我们所需要的模块,然后设置模块的参数,然后执行攻击获取权限,获取权限之后就要巩固并扩大我们所取得的战果

一般的操作方法就是按照这个步骤然根据上面的指令来执行。

攻击示例

前面我们将metasploit的框架系统将了下,下面来演示一下具体的攻击实例。这里我选择ms08_067这个漏洞,并且随便输入一个ip。(好吧,每回示例的时候都是08067躺枪)

技术分享

这个漏洞存在于Windows操作系统下的smb服务,漏洞编码是,ms08_067

大体的步骤就是下面这四个步骤,当然我们在进行具体的攻击之前一定要将情报收集工作做好。

1. 选择exploit (useexploit/windows/smb/ms08_067_netapi)

2. 选择payload

3. 设置参数 (setRHOST,set LPORT …)

4. 执行攻击

 

 


本文出自 “天下皆白,哼” 博客,请务必保留此出处http://xiaoqin00.blog.51cto.com/10468367/1717781

metasploit基础

标签:metsaploit

原文地址:http://xiaoqin00.blog.51cto.com/10468367/1717781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!