1、Windows系统基础原理Windows系统安全王轶骏SJTU.INFOSEC.AD.TeamEXPLODINGCA:WindowsIS 6.0远程漏洞利用工具。TRME可以攻击开放45端口(SMB服务)的WindowsXP/203Vista/7820并提升至系统权限。IHR、TNALBUETRNALYERG、TENALCHMION、EUSLRDH:可以攻击开放45端口(SB服务)的Windows主机。STADIP服务的,了389iOJB无法被杀毒软件检测indows tkiCLIPWIG:indows器远程漏洞利用工具。EKMRLKerbWindows 20/208/ R2域控制器NISHE
2、NTISOutlk Exchage bAce的远程漏洞利用工具。2017年4月1日,“Shadow Brkes”在互联网上泄露出震惊世界的机密文档,其中包含多个精美的Wins远程漏洞利用工具,可以覆盖全球绝大部分Windows操作系统其中就括著名永恒之蓝(EtrnalBue)”漏洞。2017年5月1日,全球很多Windows主机都中了命为“Wancry(想哭)”的勒索软件该使用强大的加密算法受害者电脑内的重要文件,并向受害者勒索赎金否则加密文无被恢复,该软件还利用永恒之蓝”漏洞实现了全球范围内的快速传播在短时间内造成了巨损失。Windows系统的历史简介i 9x内核列发展Windows NT内
3、核系列的发展1983年月:is宣布诞生 193年7月:i 3.15年月:ndow 1.04年月: 52年4月:Wi36年月:indos T4.019年月: s . 197年月: wN Beta15年8月:indo95年4月:Wi 23年6月: w 8年2月:ndos0(T 5.0)19年月:isSE01年8月:i XP(1)20年月:Wndo M3年月: wServ 23(N .2)年月:i9x内核终止 27年月:indos Vita(T6.0,Build60)08年月:Wr 8( . 1)9年1月:i 7(.1il7)wsSev 20R(N 6.il 70)20年月:indo r(T2)1年
4、月: 8(N 6.)3年月:Wis .1(3)ndowServ 20R(NT 6.3Build 90)2014年月:i Pi(4)5年7月: s1(NT .)6年曰:indo 206(10)大纲1.Windows的系统架构(System Architecur )2.i 管理机制Mangn hanism3.indos进程Proces)和线程(Tred4.Wiw的内存(mory angnt)5.indos输入出系统驱动I/O d Drives6.i 文件File sytes)7.Windows的网络机制(NtworkingWindows9x内核时代.BSOD:Blue Scren ofDeath,
5、死亡蓝屏1. Windows的系统架构Windows操作系统的基本结构深入解析Windows操作系统第2章内核模式(Kernl mode)和用户模式(User mode)Windows支持Itl x86/4的两种处理器模式:内核模式(Ring 0)用户模式( 3)内核模式下的代码可以访问所有的内存空间;可以直接操纵硬件。用户模式下的代码无权访问系统空间的内存页面;无法直接操纵硬件。用户模式向内核模式的切换是受控制的。 Win32默认配置下的内存分配情况Windows执行体是i内核体的上层接口,包含了基本的操作系统服务,如进程与线程管理、内存管理、I/O管理、网络连接、进程间通信以及安全服务。i
6、ndos内核体实现与硬件体系结构支持的代码,实现底层的操作系统功能,如线程调度、中断和异常分发处理、多处理器同步等。设备驱动程序包括硬件设备驱动程序、文件系统与网络设备驱动程序。窗口和图形系统即Win32k.sy(Windows子系统的内核模式部分),实现了图形用户界面(GUI)函数,包括窗口的处理、绘制等。硬件抽象层即Hal.d文件,用于屏蔽indos内核、驱动程序与平台硬件差异性的底层代码。i操作系统模式下模块系统支持进程Windows开机自动启动的系统内建服务进程,如负责用户身份验证的 lg,会话管理的sm等。服务进程通过indos的服务管理机制所启动的一系列系统及网络服务,如自动更新服
7、务,计划任务服务、事件日志服务等。用户应用软件在用户态执行的各类用户应用软件。核心子系统DL即kernl32.dl、user32.dl、gi32.dl、avpi32.dl等动态链接库文件,作为用户态代码和系统内核的交互接口,将用户态代码调用的API函数映射到相应的一个或多个Winows内部的系统服务调用。环境子系统服务进程为操作系统运行环境提供支持的服务进程,如in32(即csr进程)、Posix等。indos操作用户模式下代码模块Windows的核心系统文件Windows系统核心结构和组件重要的系统进程Sms.ex会话( sion)管理器,系统启动时第一个运行的进程。Cr.Windw子系统进
8、程,即客户端/服务器运行进程。ilog.ex处理交互式登录。Servics.服务控制管理器,负责启动、停止、暂停和恢复服务。hot.ex共享进程服务的宿主进程。Lsa.本地安全授权子系统,验证用户登录、授权和审计。Windows的应用程序i的可执行程序EX可执行程序,包括DOS可执行程序和32位/64位的PE格式可执行程序。DL动态链接库(Dynamic-lnk libray)程序。OCX文件,即AtveX 控件,本质上还是DL。SY驱动程序,加载到内核态。OBJ编译器创建的对象文件,作为链接器的一个输入。Windows的可执行程序都满足“PE/COF”文件格式htp:/w.microsft.
9、/whdc/sytem/platfor/iware/PECOF.mspxWindows的API(应用编程接口)函数操作系统用户模式下的接口被若干个DL文件导出:kernl32.dl、user32.dl、gi32.dl逻辑上被分为很多个子类Adminstraion d magt(系统管理)Dagc(系统诊断)Grphi ultiei(图形和多媒体)Netwokn(网络)Scuriy(安全)stm ervics(系统服务)进程、线程、注册表、文件等Window UI(Window图形化界面)几个示例函数CreatFil、ReaFil、OpenProces、TrminateProcshtp:/msd
10、n2.icrosft.m/n-us/libry/dfult.asx.NET Framework微软的.NET框架包含一个被称之为FCL(ramework Clas Libry)的类库,一个“公共语言运行时”(LR, monangue Rntie),提供受管理的代码执行环境,包含实时编译、类型检查、垃圾回收、代码访问安全等特性。CL作为一个传统的COM服务器形式实现,代码依赖于标准的用户模式Windows DL提供的不受管理的API函数。.NET框架没有任何代码运行在内核模式下。原始API函数(Native API)未文档化(Undocumntd)的接口,被Ntdl.l所导出。被若干操作系统重要
11、的进程所使用(如sm、csr等)。几个示例函数:NtQuerySsteInforatinmtrDictryFileNCeatFltRdiOpnProcesNtTemiat“Windows NT/20 ative API Rfernc”htp:/undocmetd.niterals.nt/系统服务派遣(System Srvice Dispatching)2. Windows的管理机制注册表(Regitry)包含操作系统和其它软件的所有设置和配置相关数据的目录。注册表的逻辑结构类似于磁盘上的文件系统。注册表包含了键(key)和值(value)。其中键类似文件系统中的目录,而值就像文件,键可以包含子
12、键(subkey)和值。值中存储着配置数据,数据有多种类型。最顶层的键称为根键(rot key)。在内存中包含有“易变”的数据,比如当前的计算机和用户配置。深入解析Windows操作系统第4章注册表的根键(Rot Key)注册表的Hive文件注册表其实是以磁盘上的Hive(储巢)文件进行存储的,大多数位于“%SystmRot%Systm32Config”目录中。“HKLMYTECurnrolettrlHivelist”中列出了注册表键和Hive文件的对应关系。服务(Servics)服务程序是后台运行的进程,常用来执行特定的任务,不需要和用户进行交互。自动更新服务、后台智能传输服务、事件日志服务
13、等。服务程序受Servic Contrl Manger(SCM,即servics.x进程)所控制。服务程序的配置数据位于“HKLMSytemCurentotrlSetrvices”服务程序的种类(Type)内核驱动(Kernl drivs)服务独立进程(Satoc)服务共享进程(hr pre)服务服务的启动类型(t)自动(Auto)手动(Demand)禁用(isbl)服务的基本信息显示名称(DiplayNme)服务描述(escriton)可执行文件路径(IgPath)登录身份账户(ObjtNe)服务相关注册表键值的含义3. Windows的进程和线进程(Prce)进程是一个应用程序运行的实例。
14、进程包含以下一些基本组件:私有虚拟地址。可执行体程序。被操作系统分配的一份资源句柄(Handles)列表。访问控制令牌(Token),用以唯一的标识所有者及其所属组以及和该进程相关联的特权(Privlg)信息。进程标识号。一个或多个线程。深入解析Windows操作系统第4版第6章第版第5章线程(Thread)线程是CPU调度执行的基本单元。线程包含以下一些基本组件:状态。两个栈:分别用于内核模式和用户模式。线程本地存储(TLS):私有存储空间,用来保存子系统、运行时库以及D文件等。线程标识号访问控制令牌(Aces Token),用以唯一的标识所有者及其所属组以及和该线程相关联的特权(Privleg)信息。进程和线程的关系进程对象对象句柄列表VADVADVAD对象对象虚拟地址空间描述表访问令牌线程 线程 线程 . .访问令牌进程创建的主要过程1.转换并校验参数和标记;2.打开可执行映像文件(.ex);3.创建Windows执行体进程对象。4.创建初始线程(栈,上下文和执行体线程对象等)。5.通知indows子系统初始化了一个进程。6.开始运行初始线程。(除非进程创建的时候被挂起)7.在新进程和线程的上下文空间中,完成地址空间的初始化(比如加载必需的DL文件)并开始执行程序。