网络与信息安全 系统安全:Windows系统安全 潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse
内 容 Windows安全结构 Windows的网络结构 Windows攻防技术 一次针对Windows 2000的入侵过程
Windows安全性 设计目标 安全模型 一致的、健壮的、基于对象的安全模型 满足商业用户的安全需求 一台机器上多个用户之间安全地共享资源 进程,内存,设备,文件,网络 安全模型 服务器管理和保护各种对象 客户通过服务器访问对象 服务器扮演客户,访问对象 访问的结果返回给服务器
Windows 2000 Architecture
用户管理:帐户(accounts)和组(groups) 帐户(user accounts) 定义了Windows中一个用户所必要的信息,包括口令、安全ID(SID)、组成员关系、登录限制,… 组:universal groups、global groups、local groups Account Identifier: Security identifier(SID) 时间和空间唯一 S-1-N-Y1-Y2-Y3-Y4 Some well-known SIDs 字符串形式和二进制形式的SID
Windows NT安全组件(TCB) Winlogon Administratice Tools Local Security Authority Authentication Service Account directory Services User Account Database Local security policy database Audit Log file security policy user mode Kernel mode Audit messages Access validation requests Reference monitor Audit generation requests
Local Security Authority A protected subsystem of Microsoft® Windows NT/Windows® 2000 that authenticates and logs users onto the local system. In addition, LSA maintains information about all aspects of local security on a system, collectively known as the Local Security Policy of the system. 两个概念 LSA Authentication Model LSA Logon Sessions:从logon成功到logoff
Security Access Token 是对一个进程或者线程的安全环境的完整描述 包括以下主要信息 这是一个基本的安全单元,每个进程一个 用户帐户的SID 所有包含该用户的安全组的SIDs 特权:该用户和用户组所拥有的权利 Owner Default Discretionary Access Control List (DACL) …… 这是一个基本的安全单元,每个进程一个
Object Security 所有对对象的访问都要通过安全子系统的检查 系统中的所有对象都被保护起来 文件、目录、注册表键 内核对象 同步对象 私有对象(如打印机等) 管道、内存、通讯,等 对象的安全描述符(security descriptor) Owner SID Group SIDs Discretionary ACL Audit System ACL
Object Security Access Control List manipulation Access Check Audit Generation Security token User User Y Groups Privileges Access object X User Y process Access mask Security Reference monitor Security descriptor Owner User X Access determination DACL SACL Access mask User Y … ACL ACE ACE
NTFS file object security Windows Explorer File, Properties, Security File Access Token User xxx NTFS 1. 打开一个可写的文件 file SD 2. 从文件中得到SD Access Check 3. 是否允许? Yes/No 4. 返回文件句柄
基于policy的安全性 Auditing Privileges Logon Rights Categories: Success/Failure events Logon and Logoff、File and Object Access、Use of User rights、User and Group Management、Security Policy Changes、Restart, Shutdown system、Process Tracking Privileges Allow special abilities over and above access rights Fine grained: One Privilege = one Ability Windows NT has 23 defined privileges, such as: Backup files and directories, change the system time Logon Rights Logon on Locally (For interactive logon) Access this computer from network(for remote logon) Logon as a service(start service processes under specific service account) Logon as a batch job(submit jobs to batch queues)
Authentication: Winlogon Processing Winlogon Model Distinct desktops Every system is authenticated (window station) Winlogon Architecture Winlogon GINA DLL Multiple network providers Winlogon GINA NP 登录界面
一些跟Winlogon有关的概念 Winlogon desktop Application desktop Initializing Winlogon 首先注册CTRL+ALT+DEL SAS(secure attention sequence) 然后在WinSta0 window station内创建三个desktops Winlogon desktop Application desktop Screen-saver desktop Winlogon的状态 Logged-Out State Logged-On State Workstation-Locked State
Winlogon和GINA的职责 Services provided by Winlogon Administrative: 保护Window station and desktop Event notification: SAS Recognition User interface Notify network providers (of password change) Services provided by GINA SAS monitoring Shell activation and display messages Authorization: determine if lock workstation is allowed
Winlogon图示 CTRL+ALT+DEL Winlogon Win32 GINA Shell LSA Auth Pkg Netlogon 用户登录界面 AD/DC Netlogon Account DB Auth Pkg Account DB
LSA(Local Security Authority):Interactive Authentication & Noninteractive Authentication
Domain Credentials Domain Credentials Domain credentials are used by operating system components and authenticated by the Local Security Authority (LSA). Typically, domain credentials are established for a user when a registered security package authenticates logon data provided by the user. The logon credentials are cached by the operating system so that a single sign-on gives the user access to a variety of resources. The secret part of domain credentials, the password, is protected by the operating system. Only components running in-process with the LSA can read and write domain credentials. Applications are limited to writing domain credentials.
Windows安全性的其他方面 Network connection security Authentication、integrity、privacy Secure distributed applications Authenticated RPC DCOM security Client Server RPC run time RPC run time SSP SSP
Windows Registry(注册表) 注册表是一个很大的层次结构数据库,包含了大量的Windows配置信息,对于Windows的安全也是至关重要。一旦攻击者能够修改注册表信息,则系统安全会受到严重的威胁 Windows NT/2000中的每个注册表键都是受保护的对象 用RegEdt32可以远程访问注册表 Windows 2000中,注册表和活动目录(active directory)的关系 注册表是活动目录的一个部分写照 兼容性
Windows 2000中的活动目录(Active Directory) DNS,扩展 —— 找到域控制器 活动目录 —— 访问域中对象的信息 活动目录 一个数据库 访问协议 —— LDAP 信息的命名和组织方式 LDAP://CN=smith, OU=users, OU=receivables, DC=us, DC=qwickbank, DC=com 活动目录的安全性 客户的身份认证 —— 默认使用Kerberos作为认证协议 对信息的访问 —— 每个对象和对象的属性都有自己单独的ACL表,从而实现精细的访问控制 活动目录的维护 实现快速的数据库搜索 —— 索引和全局目录(GC, global catalog) 复制机制 —— 站点的概念,基于USN(更新序列号)的复制机制 …… 一组管理工具
两个重要的安全服务 Kerberos PKI
Windows 2000中几个证书存储区
SAM数据库 SAM: Security Accounts Manager, 包含有本地系统或者所控制域上所有用户的用户名和密文形式的密码 这是攻击者最感兴趣的部位 获取sam数据库,然后进行破解 在系统运行期间,sam数据库是上锁的 获取sam的手段 从另一个文件系统进行拷贝 从关键文件的备份中获取压缩之后的sam文件 在线提取密码散列值 从网络上进行监听 破解工具 无论是字典破解,还是穷举攻击,往往很奏效 两种手段结合起来使用 使用syskey保护
TDI: Transport Driver Interface Windows 2000中的网络结构 Interprocess comm Network API TDI: Transport Driver Interface NDIS
Windows 2000中的IPSec
NetBIOS over TCP/IP
介绍NetBIOS NetBIOS(网络基本输入/输出系统):最初由IBM开发,MS利用NetBIOS作为构建LAN的上层协议 NetBIOS位于OSI模型的会话层,也位于TCP/IP之上 NetBIOS有两种通讯模式 会话模式。一对一进行通讯,LAN中的机器之间建立会话,可以传输较多的信息,并且可以检查传输错误 数据报模式。可以进行广播或者一对多的通讯,传输数据大小受限制,没有错误检查机制,也不必建立通讯会话 NetBIOS over TCP/IP,支持三种服务 名字服务 会话服务 数据报服务
NetBIOS名字服务 NetBIOS名字被用来标识网络上的资源。程序开始和结束会话都要使用这些名称。 当一台机器激活的时候,先广播自己的名字,如果它广播成功,并且没有与别的机器重名,则注册成功。过程如下: 登录时,机器广播自己的名字6到10次,确保其他网络成员收到信息 如果其他的机器也使用了同样的名字,则它发布自己的广播,包括它正在使用的名字,于是,请求注册的机器停止 如果其他的机器没有反对它的加入,则注册成功
NetBIOS名字服务(续) NetBIOS名字服务允许名字中包含16个字母数字,但Windows只允许15个字母,第十六个为NetBIOS后缀。NetBIOS后缀用在Microsoft Networking 软件中,区别安装的功能,登记的设备和服务。 名字有两种类型:Unique (U)、Group (G) 用nbtstat –A ip-address可以查看已经注册的名字
NetBIOS名字解析 由NetBIOS名字到IP地址的解析过程 DNS名字解析是静态的,NetBIOS是动态的 名字解析的方式 本地网络广播 本地主机缓冲 NetBIOS名字服务器 客户要首先登记自己的NetBIOS名字 预定义文件lmhosts 通过DNS和hosts文件解析
NetBIOS会话服务和数据报服务 会话服务为应用程序提供一种面向连接的、可靠的双向通讯机制 数据报服务是无连接的,不可靠的 Client/Server结构 双方协作建立一个会话:一方调用Listen命令,另一方调用Call命令 Listen命令指定双方的名字 结束会话:任何一方发出Hang-Up命令 数据报服务是无连接的,不可靠的 如果发送的目标是组名,则组中所有的成员都可以收到 Send_Datagram 命令和Receive_Datagram 命令 如果NetBIOS收到数据,但却没有Receive_Datagram 命令在等待,数据将被丢弃 Send_Broadcast_Datagram 命令和Receive_Broadcast_Datagram命令
关于NetBIOS 端口分配 NetBIOS和WINS 137端口是NetBIOS名称UDP, 138端口是NetBIOS数据报UDP, 139端口是NetBIOS会话tcp Windows2000中,445端口也提供同样的功能 NetBIOS和WINS WINS是名字服务 它是实现NetBIOS名字解析的一种方式(P-node) NetBIOS实现名字解析方式:B-node, P-node, M-node, H-mode
Windows NT/2000中的null session Windows 2000中,null session是系统内置的一个功能 Windows的网络资源共享,通过445端口和139端口 Null会话是同服务器建立的无信任支持的会话。 Null会话也需要提供一个令牌,但是,令牌中不包含用户信息,但是有一个SID,所对应的用户名为Anonymous Logon(在用户列表中能看得到) Null会话的用途:有一些系统功能需要用到null session Null Session的条件 通过139端口或者445端口 系统打开IPC$共享 Null session的对策 注册表修改:HKLM\SYSTEM\CurrentControlSet\Control\LSA中的RestrictAnonymous = 2 做法: net use \\Ip-address\IPC$ “” /u:””
net命令 用net help可以查看net命令的使用指导 net use用于将计算机与共享的资源相连接,或者切断计算机与共享资源的连接 net view用于显示一个计算机上共享资源的列表 net start/stop/pause用来启动/终止/挂起一个服务,也可以列出已经启动的服务 其他 Net computer Net group Net localgroup Net user Net send Net print Net share Net time ……
Windows平台上的共享资源 在Windows平台上,共享资源既是一个暴露信息的地方,也是受攻击的入侵点 在网络环境下,又离不开共享功能 文件资源的共享 打印服务的共享 IPC$也是一个共享资源 在网络环境下,又离不开共享功能 功能与风险共存 对策 使用隐藏共享 设置好权限控制
Windows 9x/ME 它本身就不是一个安全的操作系统 主要的危险 本地系统的不安性 直接连接到共享资源上 安装后门服务程序 远程访问注册表 安装后门服务程序 利用现有服务程序的漏洞 拒绝服务 本地系统的不安性 重新启动 口令的不安全
Windows NT Windows NT是一个安全操作系统 两个显著的安全性特点 安全现状 虽然已经发现了大量的漏洞 但是总算补丁来得很及时 两个显著的安全性特点 操作系统本身并不提供远程运行代码的能力 对于控制台的交互登录权力仅限于少数帐号 安全现状 对于Windows NT的大量攻击都是通过应用服务器进行的(比如IIS Web Server)。 尽快升级到Windows 2000
Windows NT的administrator帐号 这是攻击者最期望得到的权限 手段 远程密码猜测 找到一个共享点,使用net use命令行 Nat工具 从NT的认证协议(LanMan、NTLM)着手 防护 禁止NIC得NetBIOS功能 帐户的管理策略:设定lockout功能、强制使用强口令 失败类型的审计总是需要的
Windows NT的远程攻击 远程Buffer Overflows 拒绝服务 特权升级 往系统注入代码(getadmin工具) 对于执行权限的控制(比如Web相关的文件) Trojan木马 可执行注册表键
得到了NT的Administrator之后 巩固权力 针对SAM 获取SAM 破解SAM 针对LSA 自动登录功能 键盘记录器 Sniffers 远程控制和后门
如何在NT上远程执行代码 利用schedule service 利用启动注册表键 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion下 Run RunOnce RunOnceEx RunServices
Windows 2000 原来的产品号为NT 5 活动目录作为一个全局的信息仓库 认证协议的变化,NTLM->Kerberos 在安全性方面应该增强许多,至少把已有的大量漏洞都堵上了 但是,在引入新的强大功能的同时,也必然引入新的漏洞,特别是一些复杂的功能 活动目录作为一个全局的信息仓库 容易成为暴露信息的焦点 还要考虑兼容性 认证协议的变化,NTLM->Kerberos 文件系统的增强,增强的NTFS IPSec的全面支持,提供了方便的配置界面 新的安全工具:组策略 提供了大量新的服务,带来了危险 特别是Terminal Service
加强审核功能
Windows的管理策略 友好的界面,不安全的口令 了解缺省配置的不安全 关闭不必要的服务和端口 兼容性和安全性的平衡 使用安全的口令 了解缺省配置的不安全 关闭不必要的服务和端口 兼容性和安全性的平衡 打开跟安全有关的日志功能,并且经常备份和检查 用一些安全工具进行自我保健 应用系统的不安全性也可以摧毁底层的安全防线 紧跟Microsoft的补丁
一次针对Windows 2000的入侵过程(一) 1. 探测 选择攻击对象,了解部分简单的对象信息。 针对探测的安全建议 这里,针对具体的攻击目标,随便选择了一组IP地址,进行测试,选择处于活动状态的主机,进行攻击尝试; 针对探测的安全建议 对于网络:安装防火墙,禁止这种探测行为 对于主机:安装个人防火墙软件,禁止外部主机的ping包,使对方无法获知主机当前正确的活动状态
一次针对Windows 2000的入侵过程(二) 2. 扫描 使用的扫描软件 扫描远程主机 这里选择的扫描软件是SSS(Shadow Security Scanner),目前的最高版本是5.3.1,SSS是俄罗斯的一套非常专业的安全漏洞扫描软件,能够扫描目标服务器上的各种漏洞,包括很多漏洞扫描、端口扫描、操作系统检测、账号扫描等等,而且漏洞数据可以随时更新。(呵呵,使用的是盗版软件,数据更新功能好像无效。) 扫描远程主机 开放端口扫描 操作系统识别 SSS本身就提供了强大的操作系统识别能力,也可以使用其他工具进行主机操作系统检测。 主机漏洞分析
扫描结果:端口扫描 可以看出几个比较知名的端口均处于打开状态,如139、80等 尝试使用Unicode漏洞攻击,无效。可能主机已经使用了SP进行补丁或未开放远程访问权限
扫描结果:操作系统识别 结果显示该主机操作系统为Windows 2000,正是我们期望的操作系统类型
扫描结果:漏洞扫描 SSS可对远程主机进行漏洞检测分析,这更方便了我们了解远程主机的状态,选择合适的攻击入口点,进行远程入侵 该主机存在的漏洞较多,我们可以确定选择该主机作为攻击对象。另外,主机的帐号密码使用的是“永不过期”方式,我们可以在下面进行帐号密码的强行破解
一次针对Windows 2000的入侵过程(三) 3. 查看目标主机的信息 在完成对目标主机的扫描后,我们可以利用Windows NT/2000对NetBIOS的缺省信赖,对目标主机上的用户帐号、共享资源等进行检查。事实上,在利用SSS进行扫描的过程中,SSS已经向我们报告了众多有效的信息。这里,我们再利用Windows2000的IPC空会话查询远程主机
一次针对Windows 2000的入侵过程(四) 4. 渗透 IIS攻击 Administrator口令强行破解 尝试利用IIS中知名的Unicode和“Translate:f”漏洞进行攻击,没有成功。目标主机可能已修复相应漏洞,或没有打开远程访问权限 Administrator口令强行破解 目标主机是一台个人主机,绝大部分情况下,均使用Administrator帐号进行登陆,且个人防范意识较差的话,选择的密码一般都较简单,如“主机名”、“11111”、“12345”之类的简单密码(方便自己的快速登陆)。所以考虑利用NetBIOS会话服务(TCP 139)进行远程密码猜测。 这里我们使用NAT(NetBIOS Auditing Tool)进行强行破解:构造一个可能的用户帐户表,以及简单的密码字典,然后用NAT进行破解。成功
Administrator口令破解情况
一次针对Windows 2000的入侵过程(五) 5. 巩固权力 现在我们得到了Administrator的帐户,接下去我们需要巩固权力 添加一个迷惑性的帐户,并加入administrators组,将来通过新帐户进入 装载后门 一般的个人主机为防范病毒,均会安装反病毒软件,如Norton Anti-Virus、金山毒霸等,并且大部分人也能及时更新病毒库,而大部分的木马程序在这类软件的病毒库中均被视为Trojan木马病毒。所以,这为我们增加了难度。除非一些很新的程序或自己编写的程序才能够很好地隐藏起来 我们使用NetCat作为后门程序进行演示
安装后门程序(一) 利用刚刚获取的Administrator口令,通过Net use映射对方驱动器
安装后门程序(二) 然后将netcat主程序nc.exe复制到目标主机的系统目录下(便于隐藏),可将程序名称改为容易迷惑对方的名字,如rundl132.exe、ddedll32.exe等 利用at命令远程启动NetCat,供我们远程连接使用。还添加了每日运行计划,供以后使用
安装后门程序(三) 远程NetCat服务程序启动后,我们可以在本地进行远程连接,运行命令(在远程主机上),这时,我们已经完全控制了这台机器了
一次针对Windows 2000的入侵过程(六) 6. 清除痕迹 我们留下了痕迹了吗 用event viewer看一看 看看它的日志文件 没有成功 看看它的日志文件 无安全日志记录
通过入侵过程来看Win2k的防范 尽量安装防火墙软件,并对安全规则库定期进行更新 及时更新操作系统厂商发布的Service Pack补丁程序 停止主机上不必要的服务,各种服务打开的端口往往成为黑客攻击的入口 使用安全的密码,最起码不要直接使用常见的单词、数字串以及可能暴露的主机信息(比如主机名、用户名等) 如果没有文件和打印机共享要求,最好禁止139和445端口上的空会话 经常利用net session、netstat查看本机连接情况,并利用Task Manager查看本机运行的进程,及早发现异常情况 可以利用一些安全工具(如LockDown、BlackICE等)提供的本机程序安全管理功能,监控本机程序的异常状态(主动连接外部陌生的地址),增强主机对木马程序的监控能力 ……
参考资料 书 Web站点 “黑客大曝光”(第二版),清华出版社 “Hackers Beware”,中文版《黑客——攻击透析与防范》,电子工业出版社 David Chappell, Understanding Microsoft Windows 2000 Distributed Services, 中文版(清华大学出版社,潘爱民译), 2001 Web站点 http://msdn.microsoft.com/library/default.asp, 或者MSDN-Library