Metasploit

Metasploit是The Metasploit Framework的简称,也可以叫做MSF! MSF高度模块化即框架由多个module组成,是全球最受欢迎的工具。

Metasploit Framework(MSF)远远不仅仅是一个漏洞的集合。这是您可以建立和利用您的自定义需求的基础架构。这使您可以专注于您独特的环境,而不必重新发明轮子。

官网地址:Metasploit | Penetration Testing Software, Pen Testing Security | Metasploit

项目地址:GitHub - rapid7/metasploit-framework: Metasploit Framework

》》》MSF模块框架介绍《《《

 1.1:模块介绍

模块名称

模块作用

Auxiliary

负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等功能的辅助模块

Exploits

利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)

Payloads

成功exploit之后,真正在目标系统执行的代码或指令。

Post

后期渗透模块。在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、跳板攻击等操作

Encoders

对payload进行加密,躲避AntiVirus检查的模块

Nops

提高payload稳定性及维持大小。在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行的Shellcode之前添加一段空指令区, 这样当触发渗透攻击后跳转执行ShellCode时,有一个较大的安全着陆区,从而避免受到内存 地址随机化、返回地址计算偏差等原因造成的ShellCode执行失败,提高渗透攻击的可靠性。

注意:MSF默认存放模块目录如下...目录下的6个子文件夹对上面6个模块一一对应....1.2:MSF接口

接口命令

接口介绍

Msfconsole

命令行控制台用户界面

Armitage

基于Msf的可视化高级后渗透工具

Web View

MSF网页界面,存在MAC OS中...

1.3:MSF更新

apt update         //更新软件源列表
apt install metasploit-framework

1.4:MSFDB管理

》》》基础操作《《《

msfdb init     # start and initialize the database   postgresql
msfdb reinit   # delete and reinitialize the database
msfdb delete   # delete database and stop using it
msfdb start    # start the database
msfdb stop     # stop the database
msfdb status   # check service status
msfdb run      # start the database and run msfconsole

》》》扩展操作《《《

操作命令

命令解释

db_status

  • 查看MSF有没有连接上后台数据库。如果没有连上数据库,在终端输入msfdb start后再启动MSF。没有连接上数据库MSF也是可以使用的,只是连接上了的话,我们渗透过程中获取的一些信息可以保存下来,比如目标机器的账号密码信息等。

db_rebuild_cache

  • 这个命令将所有模块信息缓存到数据库中,通过数据库检索效率就高很多了。

db_disconnect

  • 断开数据库连接。

db_connect

  • msf默认连上postgresql的msf数据库。可以用db_connect连接我们指定的数据库。如果要使用配置文件进行连接,默认的数据库配置文件为/usr/share/metasploit-framework/config/database.yml,可以参考这个文件进行编写。

db_nmap

  • 集成在msf中的namp扫描命令。不同的是db_nmap扫描的结果会自动保存到数据库中。
  • 可以输入hosts查看扫描到的主机信息
  • 如果数据多,可以用 hosts IP 进行过滤;hosts -u 查看up状态的机器;使用 hosts -c 列名[,列名] 指定要看的列;使用 hosts -S 进行搜索,比如hosts -S windows。
  • 输入services可以查看主机开放的端口情况

creds

  • 查看扫描出来的密码信息

vulns

  • 查看扫描出来的漏洞信息

loot

  • 有些账号密码我们可能没有获取到明文信息,可是经过加密的hash值,可以用这个显示

db_export/db_import

  • 数据库的导入和导出
  • db_export -f /root/msfbak.xml
  • nmap导出的也可以导入到msf中
  • nmap -A 192.168.1.113 -oX nmap.xml => db_import -f /root/nmap.xml

1.5:MSF基础操作

控制台命令支持TAB补全,支持外部命令的执行(系统命令)

操作命令

命令解释

help或?

  • 显示msfconsole可以使用的命令。help <command>,显示某一命令的用法。

connect

  • 可以理解成MSF中的nc命令,可以使用connect -h查看详细用法。
  • connect [options] <host> <port>

show

  • 用show命令查看msf提供的资源。在根目录下执行的话,由于有些模块资源比较多,需要执行show命令要较长的时间
  • show exploits:查看可以使用的exploit
  • 除了exploits,还支持all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options。有些选项需要用use使用一个模块后才能使用,比如给show targets。

search

  • 搜索模块
  • 简单搜索:seach ms17_010
  • 多条件搜索缩小范围:search name:mysql type:exploit platform:linux

info

  • 查看模块的信息
  • info <module name>
  • 如果用use使用了一个模块,直接输入info即可查看

use

  • search找到模块后,用use使用模块
  • use exploit/windows/smb/ms08_067_netapi
  • 用use使用一个模块后,可以使用 show options查看我们需要配置的选项、使用show targets选择目标主机系统、使用show payloads选择payload、使用show advanced查看高级参数、使用show evasion查看用来做混淆、逃避的模块。

set/setg

  • 设置参数,比如要渗透的主机IP、payload等。我们可以用show missing查看没有设置的参数
  • setg是设置全局变量,避免每个模块都要输入相同的参数

unset/unsetg

  • 取消设置参数。unsetg是取消设置的全局变量

save

  • 设置的参数在下一次启动的时候不会生效,可以用save保存我们使用过程的设置。

check

  • 检查目标是否真的存在这个漏洞,大部分模块没有check功能

back

  • 回到msfconsole根目录

run或exploit

  • 开始使用模块
  • exploit -j:以后台的方式运行

sessions

  • 查看当前已经建立的sessions,说明已经拿到了shell
  • sessions -i id 可以进入一个session交互

load/unload

  • 调用外部的扫描命令,比如openvas

loadpath

  • 加载自己的模块

route

  • 添加一条路由。比如发往某个子网的流量都通过攻陷的机器发送。

二:永恒之蓝漏洞

见发布文章的第一篇

三:Meterpreter

Meterpreter通常作为漏洞溢出后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给我们一个控制通道。

Meterpreter是Metasploit框架的一个扩展模块,可以调用Metasploit的一些功能,对目标系统进行更深入的渗透,这些功能包括反追踪、纯内存工作模式、密码哈希值获取、特权提升、跳板攻击等。

》》》常规命令《《《

  • shell 建立一个被控主机的CMD终端

3.1:核心命令

background – 将当前会话移动到背景
exit、quit – 终止 meterpreter 会话
help – 帮助菜单
migrate – 移动到一个指定的 PID 的活动进程
run – 执行以后它选定的 meterpreter 脚本
use – 加载 meterpreter 的扩展
load– 加载其他辅助组件

3.2:文件命令

cat -读取并输出到标准输出文件的内容
cd -更改目录对受害人
del -删除文件对受害人
download-从受害者系统文件下载
edit-用 vim编辑文件
getlwd -打印本地目录
getwd -打印工作目录
lcd -更改本地目录
lpwd -打印本地目录
ls -列出在当前目录中的文件列表
mkdir -在受害者系统上的创建目录
pwd -输出工作目录
rm -删除文件
rmdir -受害者系统上删除目录
upload-从攻击者的系统往受害者系统上传文件

3.3:网络命令

ipconfig -显示网络接口的关键信息,包括 IP 地址、 等。
portfwd -端口转发
portfwd add‐l 33333 ‐r 192.168.5.101 ‐p 3389   #将远程主机的3389端口转发到本地的3333端口
route -查看或修改受害者路由表
#在全局给指定的session增删路由

route add 192.168.11.0  255.255.255.0  1     #在session1中添加到达192.168.11.0网段的路由
route add 192.168.12.0  255.255.255.0  1     #在session1中添加到达192.168.12.0网段的路由
route add 0.0.0.0       0.0.0.0        1     #在session1中添加到达0.0.0.0/24网段的路由
route del 192.168.12.0  255.255.255.0  2     #在session2中删除到达192.168.12.0网段的路由
route print    #打印路由信息


#也可以在进入session下添加路由
run autoroute -s 192.168.11.0/24             #添加到达192.168.11.0网段的路由
run autoroute -s 192.168.12.0/24             #添加到达192.168.12.0网段的路由
run autoroute -s 0.0.0.0/0                   #添加到达0.0.0.0/0的路由

run autoroute -p                             #打印路由信息

3.4:系统命令

clearev -清除了受害者的计算机上的事件日志
drop_token -被盗的令牌
execute-执行命令
getpid -获取当前进程 ID (PID)
getprivs -尽可能获取尽可能多的特权
getuid -获取作为运行服务器的用户
kill -终止指定 PID 的进程
ps -列出正在运行的进程
reboot-重新启动受害人的计算机
reg -与受害人的注册表进行交互
rev2self -在受害者机器上调用 RevertToSelf()
shell -在受害者计算机上打开一个shell
shutdown-关闭了受害者的计算机
steal_token -试图窃取指定的 (PID) 进程的令牌
sysinfo -获取有关受害者计算机操作系统和名称等的详细信息

3.5:用户界面命令

keyscan_dump -键盘记录软件的内容转储
keyscan_start -启动键盘记录软件
keyscan_stop -停止键盘记录软件
screenshot-抓去 meterpreter 桌面的屏幕截图
set_desktop -更改 meterpreter 桌面
webcam_list – 列举摄像头
webcam_snap – 抓取摄像头影像图片
webcam_stream – 抓取摄像头影像流

3.6:其他常用命令

hashdump – 抓取HASH密码(SAM文件中的值)
getsystem – 获得系统管理员权限

四:MSFVenom

msfvenom取代了之前版本的msfpayload和msfencode,常用于生成木马并在目标机器上执行,使其在本地机器kali的MSF中上线....

》》》常用参数《《《

-l, --list <type> 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops,......all
-p, --payload < payload> 指定需要使用的payload(攻击荷载)。也可以使用自定义payload,几乎是支持全平台的
-f, --format < format> 指定输出格式
-e, --encoder <encoder> 指定需要使用的encoder(编码器),指定需要使用的编码,如果既没用-e选项也没用-b选项,则输出raw payload
-a, --arch < architecture> 指定payload的目标架构,例如x86 还是 x64 还是 x86_64
-o, --out < path> 指定创建好的payload的存放位置
-b, --bad-chars < list> 设定规避字符集,指定需要过滤的坏字符。例如:不使用 '\x0f'、'\x00'
-n, --nopsled < length> 为payload预先指定一个NOP滑动长度
-s, --space < length> 设定有效攻击荷载的最大长度,就是文件大小
-i, --iterations < count> 指定payload的编码次数
-c, --add-code < path> 指定一个附加的win32 shellcode文件
-x, --template < path> 指定一个自定义的可执行文件作为模板,并将payload嵌入其中
-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行
-v, --var-name < value> 指定一个自定义的变量,以确定输出格式
-t, --timeout <second> 从stdin读取有效负载时等待的秒数(默认为30,0表示禁用)
-h,--help 查看帮助选项
--platform < platform> 指定payload的目标平台

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值