论Windows系统安全

发布于 2021-06-08  410 次阅读


《随笔》目录

序言:

Windows系统是当前使用人数最多的系统,使用的人数一多,那么就意味着有更多的利益可图,也就会有更多的黑客去寻找其漏洞谋取利益,所以windows系统安全是当下网络安全的一个重要研究方向。

1.简介

  Windows方向的攻击手段种类繁多,攻击方需要学习的东西一般包括Windows常用命令、批处理、注册表、组策略、系统日志、网络域、用户管理、防火墙、权限提升、WMI、UAC等等。

  而Windows一般存在于公司的内网中,小型公司使用的是工作组环境,而大型公司的内网机器繁多,为了安全和方便管理,往往使用的是域环境。域环境相比工作组环境来说安全了许多,因为域环境中的机器统一由域控机器进行管理,所有的登录和互相访问都需要经过域控机器的同意;而工作组环境就简单了许多,以学校机房为例,机房中的每台机器都是平等的,默认同处于一个名为WORKGROUP的工作组中,它们都可以通过网络发现进行互相访问,相比起域环境就要不安全很多。

2.信息收集

  在进行渗透的第一步需要先进行信息收集,首先对内网环境进行基础的判断,需要收集的信息有:IP、网关、DNS、是否能连通外网、网络连接及端口、本机host文件、机器的代理、是否在域内、域名等等。然后是分析机器所处的位置区域:是在DMZ区、办公区、生产区还是核心DB等等。如果是域环境,还需要分析机器的角色:普通WEB服务器、开发服务器、文件服务器、代理服务器、DNS服务器、数据存储服务器等等。最后,需要判断进出口的流量是否能连通,其中就包括对协议和端口的判断:常见的协议有TCP、DNS、HTTP、ICMP等等,常见的能出去的端口有80,8080,443,53,110,123等等。

  一般在拿到一台机器的webshell后,就需要对其他信息进行收集:工作组信息收集、本机信息收集、网段信息收集、用户信息收集、系统信息收集、网络信息收集、防火墙信息收集、代理信息等等,若处于域环境中则还需要收集域内的一些信息,比如域名、域内计算机名、管理员用户组、域密码策略、域控主机等等。

3.突破口

  在信息收集之后就是寻找突破口进行渗透了,对于Windows系统来说,最常用的突破口是SMB服务攻击,通过永恒之蓝漏洞进而获取目标主机权限,而在域环境中,可以通过CVE-2020-1472的netlogon漏洞获取域控主机的权限,而往往公司的内网机器对于安全并不是特别重视,很少有人及时去打相关的一些补丁,就很容易存在这些漏洞。

3.1.密码哈希

  不过黑客最常用的攻击手法还是通过获取密码凭证进行渗透,而Windows系统使用两种方法对用户的密码进行哈希处理,分别是LAN Manager(LM)哈希和NT LAN Manager(NTLM)哈希,不过其中LM哈希现在已经被弃用,所以只需关注NTLM哈希值即可。NTLM哈希是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后才存储在电脑中。用户在本地登录认证时通过将用户输入的密码转化为NTLM哈希值与数据库中的哈希值进行比对,比对成功才说明登录成功,所以这里再来讲一下Windows认证。

3.2.Windows认证

  Windows认证分三种,分别是本地认证(用户直接在本机登录)、网络认证(远程连接到工作组中的某个设备)、域认证(登录到域中的某个设备)。

  Windows本地认证,用户首先输入密码, 系统收到密码之后将密码计算成NTLM哈希,然后与sam数据库(%SystemRoot%\system32\config\sam)中该用户的哈希比对,匹配则登陆成功,不匹配则登陆失败。本地认证中用来处理用户输入密码的进程为lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM Hash与sam进行比对,通常黑客使用mimikatz获取的明文密码,便是在这个进程中读取到的。mimikatz是一种专门用来获取Windows密码凭证的一种工具,会被杀毒软件检测为恶意工具而拦截。

  Mimikatz是通过将一个dll文件注入到lsass.exe进程中获取密码的工具,但是获取到Windows用户密码不止可以通过进程获取,还可以通过注册表获取到。在reg save HKLM\SYSTEM system.hiv、reg save HKLM\SAM sam.hiv、reg save HKLM\SECURITY security.hiv三个注册表项中,我们同样可以获取到用户的密码,将其导出后使用cain导入system.hiv、security.hiv就可以获取缓存中的明文信息。同时主机中存在的rdp连接记录中可能也存在用户的账户密码,同样可以通过mimikatz将其解密获取明文密码。

  但是一般黑客无法通过工具等手段直接获取到用户的明文密码,有时只能获取到用户的NTLM哈希值,这时候可以通过cmd5等网站进行哈希碰撞,其中一些弱密码则会很容易被碰撞出来,从而使黑客任意登录windows主机。

3.3.域内密码凭证获取

  对于处于工作组中的Windows主机来说密码凭证相对来说还是很容易获取的,一般只需要得到本地主机的管理员权限,然后就可以通过在本机获取到的密码凭证进行横向渗透。但是对于域内Windows主机来说,其密码凭证获取的难度直线上升,因为域控对于权限的把控还是十分严格的,这里简单介绍一种通过卷影复制服务获取域控主机密码凭证的方法。

  卷影复制服务(Volume Shadow Copy Service)是微软从 Windows XP 开始提供的用于创建一致性的时间点副本(也就是快照)的服务框架,一般用于数据备份,支持Windows Server 2003 及以上操作系统。我们可以通过创建快照来获取域内存储密码哈希的文件,这里总共需要获取三个重要文件,分别是ntds.dit、system、sam文件,位置分别为%SystemRoot%\NTDS\ntdds.dit、%SystemRoot%\System32\config\SYSTEM、%SystemRoot%\System32\config\SAM。由于Windows是禁止用户对这些文件进行读取或者复制操作,所以需要通过创建快照这种特殊手段来获取副本。其中system文件用于破解其他两个文件中的加密,因为为了保护密码哈希值,Windows使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密 。对于获取到文件同样可以通过mimikatz工具进行提取。

4.提权

  一般黑客在攻破一台新的主机时,其权限往往是很低的,这时需要通过各种手段提权,最后拿到管理员权限。常见的windows提权方法有MS06-067、MS10-084、MS11-014、MS11-05、MS12-020、MS16-032等。

4.1.WMI

在提权过程中,同样需要进行信息收集,我们可以通过Windows系统自带工具WMIC(Windows Management Instrumentation,Windows管理工具)进行信息收集。通过命令行可以提取进程、服务、用户帐号、用户组、网络接口、硬盘信息、网络共享信息、安装Windows补丁、程序在启动运行、安装的软件列表、操作系统、时区等信息。

例如获取杀软名:WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName/Format:List

4.2.注册表提权

  在Windows中,与服务相关的信息存储在HKLM\SYSTEM\CurrentControlSet\Services 注册表项中。如果我们想查看有关我们的“易受攻击的服务”的信息,我们应该检查 HKLM\SYSTEM\ControlSet\Services\Vulnerable Service 的键值。此时如果对注册表项有写入权限,就可以通过编辑ImagePath值来更改此服务的可执行路径,若将其改为我们上传的木马路径,则可达到提权的目的,不过这里的修改一般需要重启系统才可生效。

4.3.UAC

  UAC(User Account Control,用户账户控制),是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序损坏系统的效果。

  UAC的本质就是平常我们在使用Windows系统高权限功能时弹出的那个小窗口。虽然UAC的设置降低了Windows系统的便利性,但是它极大的提高了Windows系统的安全性,可以说是一个非常巧妙的功能。

  下图表示已经关闭UAC提示,不推荐设置为从不通知。

5.权限维持

  为了保证获取到的目标权限不会因为漏洞的修复而丢失,攻击者通常会在目标上安装一个后门,来保证对目标的持久化控制。而在meterpreter中的权限维持技术有两种:一种是注册表后门,另一种是服务后门。

5.1.注册表后门

  注册表后门通过Persistence模块进行执行,原理是先上传vbs脚本,然后执行vbs脚本修改注册表 HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(该注册表用于开机自启动) 从而完成自启动。

  注册表(Registry)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息,它几乎存储着windows系统中的所有重要信息。例如常见的开机自启注册表项有HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run。

  一般黑客会在系统中创建一个隐藏账户从而达到留下后门的目的,该后门一般通过命令行不可见,但是任何手段都无法隐藏账户在注册表中的信息,因为注册表必须存储这些重要信息,所以一般我们可以通过查看系统注册表来检测电脑中是否存在隐藏账户,可以通过同时按下WIN和r键,然后输入regedit启动注册表项来查看。

5.2.辅助工具劫持

  一般在远程登陆界面,都会存在一个辅助功能选项,黑客可以通过劫持该工具,使其运行时去执行留下的后门文件从而达到权限维持的目的。

  例如我们通过执行该条命令将辅助工具管理工具替换为cmd.exe,从而开启一个命令行:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utilman.exe" /t REG_SZ /v Debugger /d "C:\windows\system32\cmd.exe" /f

  同理,黑客可以设置一个shift后门,在一般情况下连按五次shift键会弹出一个粘滞键的功能,但其同样可以设置为后门,通过将cmd.exe拷贝覆盖C盘windows\system32文件夹中的sethc.exe程序从而达到连按五次shift键弹出cmd命令行的功能,黑客一般将其替换为木马程序。

6.痕迹擦除

  在渗透的最后一步,就是痕迹擦除。日常生活中,我们对Windows进行的很多操作都会产生系统日志。而同样对于入侵者而言,windows日志也会记录其在系统上进行的敏感操作,如添加用户,远程登录,执行命令等。攻击者通常会对Windows日志进行清除和绕过。

  Windows日志包括五个类别:应用程序、安全、Setup、系统、转发事件。其保存的文件路径为%systemroot%\System32\winevt\Logs\。

  Windows日志对于windows系统来说还是非常重要的,所以我们对于其能够执行的操作仅限于清空,但是清空日志这个事件本身就是一条日志,仅仅是简单的进行此操作反而会引起防护人员的警惕,并且能够通过日志产生时间定位到黑客入侵时间,从而更容易使黑客暴露。所以黑客一般会通过关闭相关的日志记录进程然后通过相关的日志清除软件达到清除痕迹的行为。

  下图的进程即用于日志记录服务,将其关掉后系统将停止日志记录。

  在日常的日志审计中,一些敏感操作都会有相关的时间ID,所以一般我们只需要查看筛选出我们需要的事件ID即可,例如下图的管理员登录操作,其事件ID为4672。

  这里简单列出几个比较敏感的操作的事件ID:4625登录输入失败、4688系统执行ipconfig、4732创建新进程(用户组管理)、4720用户账户组管理、4728安全组管理等。

7.结语

  随着Windows应用的发展,它会变得越来越便捷,但同时带来的是更严峻的安全挑战,随着它功能的丰富也会带来更多的漏洞,所以我们应该在不断开拓创新的同时更注重windows系统的安全性。


人生就像赛跑,不在乎你是否第一个到达终点,而在乎你是否跑完全程。