Windows安全简介和账号概念、账号克隆
Windows系统高级安全配置:
1、 账号安全策略设置
2、 文件系统安全
3、 系统服务安全设置
4、 配置注册表提高系统安全
5、 系统进程和端口检查和分析
6、 日志安全
7、 IPSEC安全
8、 组策略安全
9、 WSH组件的安全
10、常见CMD维护命令的使用
11、Windows自带的安全攻击和第三方安全工具
12、其他一些零碎的安全设置
13、Windows 下的病毒手工查杀
账号安全策略设置:
基本概念:
1、 用户账户(Account)
所谓用户账户,是计算机使用者的身份标识
用户账户由两种基本类型:本地用户账户和全局用户账户(域用户账号)
(1)、本地用户账户创建于网络客户机,作用范围仅限于创建它的计算机。
(2)、全局用户账户创建于服务器(域控制器),可以在网络中任何计算机上登录,作用范围是整个网络。
Windows系统常用的内置账户:
(1)、Guest:来宾账户
(2)、Administartor:系统管理员账户,具有最高权限。
2、组(Group)
组是一组相关账号的集合,即用户账户的一种容器,提供了为一组用户同时设定权力和权限的可能。
使用组的目的:简化对系统的管理,通过组可以一次性地为一批用户授予一定的权利或权限。
内置用户账号:
Administartor和Guest
可以改名,不可以删除
内置用户组账号:
Administrators
Users
Guests
Backup Operators
Domain * (Administrators,Users,Guests)
特殊组(Network,Interative,Everyone,…)
Windows系统中的组有三种基本类型:
本地组、全局组、特别组
(1)、本地组
工作组网络环境中的组)用于创建网络客户机,控制对所创建的计算机资源的访问。他的成员是用户账户和全局组,在一个本地的系统或域中进行维护。本地组只有在创建它的本地系统或者域中才能实现权限的管理。
(2)、全局组(域环境中的组)
用于创建服务器(域控制器),控制对资源的访问。系统管理员可以利用全局组有效地将用户按他们的需要进行安排。
Windows系统提供了三类全局组:
A、 管理员组(Domain Admins)
B、 用户组(Domain Users)
C、 域客人组(Domain Guests)
(3)、特殊组
Windows系统为了特定的目的创建了特别组。通过用户访问系统资源的方式来决定用户是否具有特别组的成员资格,特别组不可以通过用户管理器为其增加新成员,同时他也不可以被浏览和修改。
Windows提供的特别组如下:
1)、System:Windows操作系统
2)、Creator Owner:创建对对象拥有所有权的用户
3)、Interactive:以交互的方式在本地系统登录入网的所有用户
4)、Network:系统中所有通过网络连接的用户
5)、Everyone:登陆上网的系统中的所有用户(包括Interactive和Network组)
需要注意的是,在特别组中,所有登录账户都是Everyone组的成员。
账号安全管理:
1、用户账户的管理
(1)、要保证用户不会从隶属于的组中获得超过其任务要求的额外权限,同时用户隶属于的组能满足他的任务要求。
2、系统管理员账户的管理:
(1)、系统管理员口令设置
为了使爆破密码变得更加困难,应该选择复杂度高的密码来设置系统管理员,尤其是系统域管理员(主域控制器的系统管理员)的口令。其他服务器的管理员应采用与域控制器中管理员不同的密码,一边更安全的保证域的绝对管理权限。
3、 组的安全管理措施
(1)、应该清楚用户组的成员设置是否得当,要对其进行仔细的观察。
(2)、为了使具有相同安全策略的用户组在登录时间、密码和权限等方面保持一致,可以用组将其组织在一起。
账号克隆和SID
基本概念:
1、 安全标识符(Security Identifiers)
SID也就是安全标识符,是表示用户、组和计算机账户的唯一号码。其实Windows系统是按SID来区别用户的,不是按用户的账户名称,所以建立一个账户A,然后删除后马上在重建一个用户A其实是两个账户。
2、 利用SID原理进行账户克隆
(1)、在Windows操作系统中通过对注册表的HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\下的子键进行操作,(需要system权限)使一个普通用户具有与管理员一样的桌面和权限,这样的用户就叫克隆账号。
(2)、在日常查看中这个用户却显示它正常的属性,例如Guest用户被克隆后当管理员查看guest的时候他还是属于guest组,如果是禁用状态,显示还是禁用状态,但这个时候guest登入到系统而且是管理员权限。
(3)、一般攻击者在入侵一个系统就会采用这个办法来为自己留一个后门。
3、 账号克隆演示
(1)、新建一个隐藏用户,我们会发现在CMD下使用”net user”是看不到的,但是在”计算机管理—本地用户和组”中还是可以看到隐藏掉的用户。
(2)、打开注册表,对HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\的子键进行操作。
(3)、将”F”子键中的值全部复制下来,copy到要克隆的账户的”F”子键中。然后将”abc$”和”000003EA”导出。
(4)、删除用户abc$,在将上面的导入。这样建立的隐藏用户,在windows2003中重启后,计算机管理--用户管理那里又能看到账户,但有些windows2003几年都不重启!
4、 防范账号克隆
1、首先要重启服务器。
2、进入计算机管理—用户管理中查看。
3、进入注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Name查看。
什么使"账号枚举":
由于Windows的默认安装允许任何用户通过空用户得到系统多有账号和共享列表,这本是为了方便局域网用户共享资源和文件的,但任何一个远程用户通过同样的方法都能得到账户列表,使用暴力破解账户密码后,对服务器进行攻击,称之为账号枚举。
防止"账号枚举"的本地安全设置:
1、 控制面板---管理工具---本地安全策略选项
2、 在Windows设置-"安全设置"中单击"本地策略"中的"安全选项"命令,将右边"策略"中"网络访问:不允许SAM账户的匿名枚举"及"网络访问:不允许SAM账户和共享的匿名枚举"命令启用。如图:
其他账号安全设置要点:
1、 Administrator账号更名
(1)、由于windows的administrator账号是不能停用的,也不能设置安全策略,这样就给了我们爆破的可能。
(2)、在"计算机管理"中把administrator账号更名来防止这一点。鼠标右键点击"重命名",重新输入一个名称。
2、不要显示上次登录的用户名
(1)、攻击者一般还会从本地或者Terminal Service的登录界面看到用户名,然后去爆破。
(2)、进制显示登录的用户名。选择【控制面板】--【管理工具】--【本地安全策略】--【安全选项】,在右侧双击"登录屏幕上不要显示上次登录的用户名"一项,选中"已启用"。
(3)、另一种方法:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon新建DWORD键值项"Don't Display Last User Name",将其数据设置为1。
3、强制Windows口令的复杂性
通过组策略来实现强制口令复杂性的设置。
4、检查组和账号
(1)、常规检查
计算机的常规检查主要通过"我的电脑"-"管理"-"计算机管理"-"本地用户与组"来实施检查,主要检查管理员组中是否存在多余账号,是否存在多个用户账号。(或者net user系列命令)
(2)、检查用户
操作系统中默认存在Administrator以及按照个人喜爱而添加的用户名称,其他还有一些用户例如启动IIS进程账户、Internet来宾账户等,这些账户和系统中提供的服务或者安装的软件有关。
对帐号的检查也可以在Dos提示符下实现。
"net user" -- 查看系统所有用户
"net localgroup administrators" -- 查看管理员组
如果入侵者在添加账号是在账号末尾加上了"$"符号,则使用"net user"命令查看用户时,以"$"结束的用户名不会显示,需要在用户管理的图形界面来查看。
(3)、检查组
任何一个用户账户都必须有一个组,需要特别注意Administrators组,这个组具有管理员权限的组,在"计算机管理"中,双击"组"中的"Administrators"即可查看是否存在多余的管理员账号。
Windows登录安全
Windows本地登录过程原理
Winlogon -- GINA -- SSPI -- Kerberos/NTLM
包含的要素:
Winlogon -- Winlogon.exe是系统启动必须的进程,管理用户的登录和退出。位于system32目录下。
Winlogon的作用:
负责进行安全的用户登陆和交互的可执行文件,启动登陆进程。具体完成如下工作:桌面锁定、加载User Profile、控制屏幕保护程序、支持多种网络服务提供者、查找GINA(MSGINA.dll)。
Graphical Identification and Authentication DLL(GINA) à GINA(Msgina.dll),这个DLL用来接收用户和密码, 是一个被Winlogon进程在启动的前期阶段加载的DLL模块。
GINA负责处理SAS事件并激活用户SHELL。作用:
1、可以实现在登陆之前的警告提醒框;
2、显示上一次登陆用户名;
3、自动登陆、允许关机;
4、激活Userinit.exe进程。
Local Security Authority(LSA)à Winlogon和GINA调用LSA处理登陆凭据。LSA的验证过程中包括了如下的组件:验证包(Authentication Packages)、SAM和AD。
LSA管理本地安全策略、管理审计策略和设置、为用户生成包含SID和组权限关系的令牌。
LSA验证的过程:LSA以一种安全的方式收到Msgina.dll传送来的用户名和密码,并对其进行处理,通过访问本地SAM(Security Accounts Manager)数据库或AD数据库,可以完成本地用户的验证。
进程为lsass.exe
Security Support Provider Interface(SSPI) -- Windows系统在执行认证操作所使用的API。
SSPI是SSP的API接口
Authentication Packages --
LSA调用该组件来分别处理本地登陆和网络登陆。
Security support provider -- 又名Security Package.简单的理解为SSP就是一个DLL,用来实现身份认证。
在系统启动的时候SSP会被加载到进程lsass.exe中.
Netlogon Service --
NetLogon服务:NetLogon服务验证NTLM的登陆请求,注册、认证和定位域控制器的位置,并提供NT4.0的兼容性、更新主机的DNS记录、定位域控制器。
Security Account Manager(SAM) -- Windows的用户账户数据库
Winlogon and Gina -- 键盘记录
1、Winlogon调用GINA DLL,并监视安全认证序列。而GINA DLL提供一个 交互式的界面为用户登录提供认证请求。
2、Winlogon在注册表查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,如果存在GinaDLL键,Winlogon将使用这个DLL,如果不存在该键,Winlogon将使用默认值MSGINA.dll。
3、Winlogon键盘记录
WinLogon启动时会调用GINA.DLL,那么我们如果将它替换掉呢? ---
(1)、下载WinlogonHack工具,运行install.bat
(2)、当有人远程登录时,WinLogonHack会记录账号密码,运行ReadLog.bat,
(3)、密码文件在pass.bat中。
LSA:SAM文件的安全
Windows中对用户账户的安全管理使用了安全账号管理器(Security Account Manager)的机制,SAM对账号的管理是通过安全标识进行的,安全标识在账号创建时就同时创建,一旦账号被删除,安全标识也同时被删除。安全标识时唯一的,即使时相同的用户名,在每次创建时获得的安全表示都是完全不同的。
SAM的具体表现就是%SystemRoot%system32\config\sam文件。所有用户的登录名及口令等相关信息都会保存在这个文件中。
SAM文件位置:
C:\windows\repair\SAM
C:\windows\system32\config\SAM
第一个SAM文件时账户数据库的备份文件,第二个SAM文件时系统正在使用的账户数据库。
SAM和活动目录
1、SAM构成Windows注册表里五大分支之一,具体内容保存在%systemroot%\system32\config\sam里;
2、在Windows域控制器上,账号和口令密文保存在活动目录(Active Directory,AD)里,对应文件时:%systemroot%\ntds\ntds.dit,这里面包含的不只是username和Hash,还有OU、Group等。
- SAM = Security Account Manager
- %systemroot%\system32\config\sam
- HKEY_LOCAL_MACHINE\SAM\SAM
SAM文件的破解步骤
1、 SAM文件存储在C:\Windows\system32\config文件夹内,直接复制粘贴出来是不行的。
2、 使用工具将SAM文件取出来。
3、 Samcopy或hWinHex工具提取
4、使用ophcrack进行彩虹表破解。
彩虹表
彩虹表就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表越大,现在主流的彩虹表都是100G以上。
算法对明文密码进行加密存储,由于哈希算法不可逆,因此由密码逆向出明文就成了不可能。
Ophcrack
1、 打开ophcrack软件选择load,加载提取的sam和system文件。
2、 点击crack,开始跑表。
LSA注入
本地安全认证(Local Security Authority):
1、调用所有的认证包,检查在注册表
2、重新找回本地组的SIDs和用户的权限
3、创建用户的访问令牌
4、管理本地安装的服务所使用的服务账号
5、储存和映射用户权限
6、管理审核的策略和设置
7、管理信任关系
WinPswLogger:
Windows的身份认证一般最终都是在lsass进程,默认模块时msv1_0.dll,而关键在其导出函数LsaApLogonUserEx2,本程序通过注入代码到lsass进程hook LsaApLogon UserEx2,截取密码。
Netlogon Service--NTLM认证
早期SMB协议在网络上传输明文口令,简称LM。后来出现LAN Manager Challenge/Response验证机制,称之为NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系(保存的加密后的散列统称为hash,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。)
NTLM是windows早期安全协议,因向后兼容性而保留下来。NTLM是NT LAN Manager的缩写,及NT LAN管理器。
NTLM的使用场景
在网络环境中,NTLM用作身份验证协议以处理两台计算机(其中至少由一台计算机运行Windows NT 4.0或更早版本)之间的事务。
列举两种配置将使用NTLM作为身份验证机制:
1、windows或windows XP Professional客户端向windows NT4.0的域控制器验证身份。
2、Windows NT4.0 Workstation客户端向Windows或Windows Server 2003域控制器验证身份。
NTLM工作流程:
1、 客户端首先在本地加密当前用户的密码成为密码散列
2、 客户端向服务器发送自己的账号,这账号是没有经过加密的,明文传输
3、 服务器产生一个16位的随机数字发送给客户端,作为一个challenge(挑战)
4、 客户端再用加密后的密码散列来加密这个challenge,然后把这个返回给服务器作为response(响应)
5、 服务器把用户名、给客户端的challenge,客户端返回的response这三个东西,发送域控制器。
6、 域控制器用这个用户名在SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密challenge。
7、 域控制器比较两次加密的challenge,如果一样,那么认证成功。
NTLM散列窃取和破解
Pwdump7可以在CMD下提取出系统中的用户和密码Hash(包括LM和NTLM),当然,必须有系统权限,提取出了HASH,再用ophcrack破出明文密码。
禁止LM HASH存取
方法1:通过使用"组策略"实现NoLMHash策略
要通过使用"本地组策略"禁止在本地计算机的SAM数据库中存储用户密码的LM哈希,或通过使用Active Directory中的"组策略"。
1、 在"组策略"中,依次展开"计算机配置","windows设置","安全设置","本地策略",然后单击"安全选项"。
2、 在可用策略的列表中,双击"网络安全:不要在下次更改密码时存储LAN Manager的哈希值",单击"启用",然后单击"确定"。
方法2:使用长度至少为15位字符的密码
组织windows存储密码的LM哈希的最简单方法是:使用长度至少位15位字符的密码。在这种情况下,windows会存储无法用于验证用户身份的LM哈希值。
Keberos
Keberos是为TCP/IP网络系统设计的可信的第三方认证协议。网络上的Keberos服务基于DES堆成加密算法,但也可以用其他算法替代。因此,Keberos是一个在许多系统中获得广泛应用的认证协议。