教你如何用Meterpreter渗透Win系统
在这篇文章中,我们将跟大家介绍如何使用Meterpreter来收集目标Windows系统中的信息,获取用户凭证,创建我们自己的账号,启用远程桌面,进行屏幕截图,以及获取用户键盘记录等等。
相关Payload
Payload中包含有需要在远程系统中运行的恶意代码,而在Metasploit中Payload是一种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。简而言之,这种漏洞利用模块可以访问目标系统,而其中的代码定义了Payload在目标系统中的行为。
Metasploit中的Payload模块主要有以下三种类型:
-Single
-Stager
-Stage
Single是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单,例如添加一个系统用户或删除一份文件。由于Single Payload是完全独立的,因此它们有可能会被类似netcat这样的非metasploit处理工具所捕捉到。
Stager这种Payload负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。一种常见的Stagers Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条tcp连接。另一种常见的是bind_tcp,它可以让目标系统开启一个tcp监听器,而攻击者随时可以与目标系统进行通信。
Stage是Stager Payload下载的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。
在Metasploit中,我们可以通过Payload的名称和使用格式来推断它的类型:
Single Payload的格式为<target>/ <single>Stager/Stage Payload的格式为<target>/ <stage> / <stager>
当我们在Metasploit中执行“show payloads”命令之后,它会给我们显示一个可使用的Payload列表:
在这个列表中,windows/powershell_bind_tcp就是一个Single Payload,它不包含Stage Payload。而windows/x64/meterpreter/reverse_tcp则由一个Stager Payload(reverse_tcp)和一个Stage Payload(meterpreter)组成。
Meterpreter是什么?
在Metasploit Framework中,Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。
其中,攻击者与目标设备中Meterpreter的通信是通过Stager套接字实现的。
部署Meterpreter
在这里,我们选择使用reverse_tcp(windows/x64/meterpreter/reverse_tcp)来作为Stager,配置和运行情况如下图所示:
注意:运行了exploit命令之后,我们开启了一个reverseTCP处理器来监听192.168.198.196:4444,即我(攻击者)的本地主机地址(LHOST)和端口号(LPORT)。运行成功之后,我们将会看到命令提示符meterpreter >出现。
接下来,我们就可以开始“做事”了。
访问文件系统
Meterpreter支持非常多的文件系统命令(基本跟Linux系统命令类似),一些常用命令如下:
cd:切换目标目录;
cat:读取文件内容;
del:删除文件;
edit:使用vim编辑文件
ls:获取当前目录下的文件;
mkdir:新建目录;
rmdir:删除目录;
上传/下载文件
“download”命令可以帮助我们从目标系统中下载文件,“upload”命令则能够向目标系统上传文件。
“download”命令的使用样例如下所示:
权限提升
有的时候,你可能会发现自己的Meterpreter会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个“getsystem”命令,它可以使用多种技术在目标系统中实现提权:
“getuid”命令可以获取当前用户的信息,在上面的例子中,用户为“NT AUTHORITY\SYSTEM”,这个就是Windows本地系统账号。
获取凭证
hashdump模块(post)可以从SAM数据库中导出本地用户账号,credential_collector脚本(post/windows/gather/credentials)也可以从目标设备中收集令牌信息。
脚本和post模块都需要通过“run”命令执行,我在测试环境中运行hashdump模块后的结果如下:
数据的输出格式为:用户名:SID:LM哈希:NTLM哈希:::,所以我们得到了三个用户账号,分别为Administrator, Guest和Coen。
其中的LM哈希(aad3b435b51404eeaad3b435b51404ee)跟NTLM哈希(31d6cfe0d16ae931b73c59d7e0c089c0)对应的是一个空密码。
接下来要处理的就是用户Coen的密码(f773c5db7ddebefa4b0dae7ee8c50aea)了。虽然我们可以使用类似John the Ripper这样的工具来破解密码,但是我们直接Google这个哈希之后,就直接得到了密码明文:trustno1。
运行程序
我们还可以使用“execute”命令在目标系统中执行应用程序。这个命令的使用方法如下:
execute -f<file> [Options]
运行后它将执行file参数所指定的文件。可选参数如下:
-H:创建一个隐藏进程
-a:传递给命令的参数
-i:跟进程进行交互
-m:从内存中执行
-t:使用当前伪造的线程令牌运行进程
-s:在给定会话中执行进程
屏幕截图
我们可以使用“screenshot”命令来进行屏幕截图并存储在我们的系统之中。
截取的效果如下所示:
创建一个新账号
接下来,我们可以在目标系统中创建一个新的用户账号(getgui脚本,使用-u和-p参数),并给它分配管理员权限(使用),然后将其添加到”远程桌面用户”组中。
当然了,你也可以尝试将这个新添加的用户Hacker在Windows登录界面中隐藏。
启用远程桌面
当我们新添加的用户已经拥有远程桌面权限之后,我们就可以使用这个账号凭证来开启远程桌面会话了。
首先,我们需要确保目标Windows设备开启了远程桌面功能(需要开启多个服务),不过我们的getgui脚本可以帮我们搞定。我们可以使用-e参数确保目标设备开启了远程桌面功能(重启之后同样会自动开启):
在开启远程桌面会话之前,我们还需要使用“idletime”命令检查远程用户的空闲时长:
aaarticlea/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" width="399" data-ratio="0.1046831955922865" data-src="http://mmbiz.qpic.cn/mmbiz_jpg/Pngia66PePlxybE6fcicEXIHj4Oeict5mLZqlWf2y1vWkKdKsRsYE2zsQu0ce4FAncVBxq9d9R8ErYubHogQfa3Qw/0?wx_fmt=jpeg" data-type="jpeg" data-w="363" />
这样可以降低你被发现的概率,因为当目标用户登录之后,它将会看到如下图所示的信息:
下图显示的是攻击者使用新创建的“Hacker”账号连接到远程桌面的画面:
键盘记录
Meterpreter还可以在目标设备上实现键盘记录功能,键盘记录主要涉及以下三种命令:
keyscan_start:开启键盘记录功能
keyscan_dump:显示捕捉到的键盘记录信息
keyscan_stop:停止键盘记录功能
首先,我们需要启动键盘记录进程:
aaarticlea/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" width="399" data-ratio="0.1165644171779141" data-src="http://mmbiz.qpic.cn/mmbiz_jpg/Pngia66PePlxybE6fcicEXIHj4Oeict5mLZkHHjUDZpDIm08XdmGVKyZ8unTw21QKhkH608mLWic3fZeAARLh9H5hQ/0?wx_fmt=jpeg" data-type="jpeg" data-w="326" />
启动之后,我们需要等待一段时间后再导出记录信息:
不过在使用键盘记录功能时,通常需要跟目标进程进行绑定,接下来我们介绍如何绑定进程。
绑定进程
Meterpreter既可以单独运行,也可以与其他进程进行绑定。因此,我们可以让Meterpreter与类似explorer.exe这样的进程进行绑定,并以此来实现持久化。
在下面的例子中,我们会将Meterpreter跟winlogon.exe绑定,并在登录进程中捕获键盘记录。
首先,我们需要使用“ps”命令查看目标设备中运行的进程:
接下来,使用“getpid”找出需要绑定的进程,接下来,使用migrate命令+pid来绑定进程。
绑定完成之后,我们就可以开始捕获键盘数据了:
aaarticlea/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" width="399" data-ratio="0.1165644171779141" data-src="http://mmbiz.qpic.cn/mmbiz_jpg/Pngia66PePlxybE6fcicEXIHj4Oeict5mLZkHHjUDZpDIm08XdmGVKyZ8unTw21QKhkH608mLWic3fZeAARLh9H5hQ/0?wx_fmt=jpeg" data-type="jpeg" data-w="326" />
接下来,我们可以选择导出键盘记录,或者使用命令“enum_logged_on_users”来检查用户是否成功登录:
等待片刻之后,使用keyscan_dump命令导出记录信息:
捕捉到的用户密码为trustno1。
清除事件日志
完成攻击操作之后,千万别忘了“打扫战场”。我们的所有操作都会被记录在目标系统的日志文件之中,因此我们需要在完成攻击之后使用命令“clearev”命令来清除事件日志:
教你如何用Meterpreter渗透Win系统的更多相关文章
- 手把手教你如何利用Meterpreter渗透Windows系统
在这篇文章中,我们将跟大家介绍如何使用Meterpreter来收集目标Windows系统中的信息,获取用户凭证,创建我们自己的账号,启用远程桌面,进行屏幕截图,以及获取用户键盘记录等等. 相关Payl ...
- Android | 教你如何用代码一键实现银行卡绑定
前言 小编前面几期文章分别给大家介绍了用代码实现微笑抓拍.证件照DIY.拍照翻译的功能开发(链接见文章末尾),本次小编给大家带来的是用代码一键实现银行卡识别与绑定功能. 银行卡识别的应用场景 ...
- 教你如何用PS制作多款按钮UI设计教程
教你如何用PS制作多款按钮UI设计教程 本文教大家制作按钮的方法 LV. ★ 初入设计,学做按钮.只会套个底色,加个阴影,字体纯白,小聪明的弄个圆角. LV. ★★(描边.字体.内阴影) 看了很多案例 ...
- Emacs添加主题插件(Win系统)
Emacs添加主题插件(Win系统) */--> /* @licstart The following is the entire license notice for the JavaScri ...
- 电脑开机后win系统运行异常慢,鼠标移动卡
今天公司里面一个小伙伴的电脑开机后还没有打开应用程序系统就运行非常慢,打开文件夹反应慢,鼠标是一点一点的在移动.体验感极差.作为运维的我立即上去解决问题: 首先是查看一下电脑确实运行比较慢,然后就查看 ...
- Win系统的快捷键
用了Macos觉得win系统不好用,其实不然,win也有很多方便的快捷键. win系统的快捷键: super/Alt+Tab键切换应用程序,而不是用鼠标点,切换多任务,super就是win win+D ...
- Cocos2d-x3.0终于版Mac以及Win系统相关环境部署
因个人原因此博客停止更新,其它更新博文将在该博客继续更新. http://blog.csdn.net/xiaohan_aimti/article/details/24653831 就在前几天,2014 ...
- 阿里云VPS(win系统)装ROS教程
以下方法是VPS下的WIN系统下安装ROS的方法,LINUX暂时没有 VPS系统装2003或2008 ,建议2008 启动快,安全,但以下内容是在2003上测试的, 2003系统,2003设置开机自动 ...
- Mac使用bootcamp安装win系统花屏解决方法
15年11'乞丐版air装win屏幕花屏,很郁闷,先后找了网上很多方法,最终总结出了一个比较折中的方法,不玩游戏不使用大型3D的可以参考. 1 花屏现象 2 解决方法 2.1 禁用驱动 2.2 使用M ...
随机推荐
- 使用代理创建连接池 proxyPool
配置文件properties url=jdbc:mysql://127.0.0.1:3306/mine?characterEncoding=UTF-8 user=root password=1234 ...
- 单工程搭建springmvc+spring+mybatis(maven,idea)
单工程搭建springmvc+spring+mybatis(maven,idea) 1.pom.xml <properties> <project.build.sourceEncod ...
- SQLserver 进程被死锁问题解决
事务(进程ID xx)与另一个进程被死锁在 锁|通信缓冲区 资源上,并且已被选座死锁牺牲品.请重新运行该事务.Sqlserver 当出现这个错误时,如下图: 解决办法:更改数据库事务隔离级别 alte ...
- [BUAA_SE_2017]案例分析-Week3
Week3 案例分析 一.调研评测 案例: 神策数据的数据概览功能 Demo: 电商类产品Demo 评价: d) 好,不错 个人评价:神策数据电商类产品Demo的数据概览功能是相当不错的.首先点击进入 ...
- IP config with netsh under windows
================================================= CHINAUNICOME.bat route delete 0.0.0.0 mask 0.0.0.0 ...
- jmeter(psot) 表单提交 注意项
Form表单提交:直接使用表单方式提交即可,此方式采取页面直接跳转的形式.用jmeter请求的时候,日志打印传的参数是空的.考虑到form提交和http的提交请求头可能是不一样的,所以优化了请求头: ...
- [转帖]浅析Servlet执行原理
浅析Servlet执行原理 原贴地址: https://www.cnblogs.com/wangjiming/p/10360327.html 原作者画的图挺好. 自己之前看过iis的一些配置文档 但是 ...
- 转发--UIPATH http://baijiahao.baidu.com/s?id=1596656405106773890&wfr=spider&for=pc&qq-pf-to=pcqq.c2c
之前和朋友聊起RPA,他们第一反应就是哎哟,主流几家vendor太贵了. 我们公司业务量没有那么大,用不上啦~ 尤其Blue Prism和 Automation anywhere报价,一般规模的企业一 ...
- [转帖]/etc/security/limits.conf的含义
https://www.cnblogs.com/pzk7788/p/7250723.html /etc/security/limits.conf 是 Linux 资源使用配置文件,用来限制用户对系统资 ...
- __new__ __init__区别
1 class A(object): 2 def __init__(self,*args, **kwargs): 3 print "init A" 4 def __new__(cl ...