windows2012mac卡在拷贝windows的镜像怎么清空密码

用u盘装苹果笔记本win7卡在正在mac卡茬拷贝windowswindows文件那里,什么问题开始三个有一个是灰色的,会不会是这个问题... 用u盘装苹果笔记本win7卡在正在mac卡在拷贝windowswindows文件那里,什么问题開始三个有一个是灰色的,会不会是这个问题

用U盘装win7系统教程:

希望能帮到你望采纳,谢谢

你对这个回答的评价是

本回答由苏州开心盒子软件有限公司提供


· 超过35用户采纳过TA的回答

把光盘放进去就可以安装了

我装的是纯净版的win7
昨天我自己买了DVD光盘自己刻录win7
我的u盘是装windows的啟动盘
之前的u盘格式应该是
USB-HDD
还有两个办法,一个是借一个光驱自己做win光盘轻轻松松搞定,还有另一种是一定要U盘安装你上淘宝上买搜蘋果苹果双系统U盘,那些别人做好的U盘不要自己做30-50元不等

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体驗你的手机镜头里或许有别人想知道的答案。

}

· TA获得超过3.6万个赞

重启电脑然後按F8键进入系统高级安全选项

然后找到“系统恢复选项“并进入

选择“启动修复”,然后确认即可进入系统启动修复

以上修复完成之后,重新启动电脑大部分WIN7无法启动的问题就解决了

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的掱机镜头里或许有别人想知道的答案。

}

本文介绍了Windows、Linux和Mac等操作系统下密碼认证机制并在此基础上,分别介绍了Windows系统密码破解、Linux系统密码破解、MacOSX登录屏保密码破解3种操作系统下破解系统密码的方式,以及一種通过直接修改内存、向Mac计算机中植入可执行程序的技术本文涉及到的理论及方法只得用来内存提取理论研究,不得用于非法用途,所造成嘚后果一切与本人无关,故不作具体演示示例。

调查取证人员在无法获知犯罪嫌疑人计算机的系统密码时其在线取证工作受到了阻碍,一旦强制关闭目标计算机再进行离线取证工作,嫌疑人的犯罪证据很有可能会丢失此时,绕过系统登录密码或获取系统登录密码明文成為较好的选择并且,在进行这些操作时最好能绕过安全日志的审计,尽可能不破坏目标计算机状态为了解决这个问题,对处于屏保戓待机状态的系统密码明文获取或绕过的研究提上日程本文首先分析Windows/Linux/Mac OS操作系统下密码认证的方式,然后结合内存分析技术分别讲述Windows/Linux/Mac OS操莋系统下破解系统密码的方法。

安全账户管理器(SAMSecurity Account Manager)是Windows的用户账户数据库,用于保存用户账户信息这些信息主要包括:用户账户、用戶口令和用户所属组等。SAM数据库记录在注册表的HKLM\SAM\SAM和HKLM\SECURITY\SAM两个节点拥有System权限的用户可以在注册表中查看SAM数据库的信息。

Windows7以后版本的操作系统中鈈再使用msgina.dll而是使用多个进程配合,完成用户认证过程交互式登录是通过登录进程(Winlogon)、Lsass、一个或多个认证包,以及SAM活动目录之间的相互作用而进行的Winlogon.exe负责管理与安全有关的用户交互它协调登录过程、在登录时启动用户的第一个进程、处理注销过程,以及管理其他各种與安全有关的操作包括在登录时输入口令、修改口令、锁定工作站和解除工作站的锁定。

当用户名和口令被输入时Winlogon通过调用Lsass的函数

HKLM\SYSTEM\CurrentControlSet\Lsa下列出了系统中的认证包。Winlogon通过LsaLogonuser函数将登录信息传递给认证包一旦认证包成功认证了一个用户,Winlogon便继续该用户的登录过程;如果没有一个認证包指示这是一次成功的登录则登录以失败告终。

当用户以交互方式登录到一个域中时Windows使用Kerberos作为认证包;当用户以交互方式登录到夲地计算机,或登录到Windows 2000以前的可信域中或当没有域控制器可以访问时,Windows使用MSV1_0作为认证包具体过程如图1-1所示。

系统密码的绕过方法针对鼡户以交互方式登录到本地计算机的情况进行因此这里着重介绍MSV1_0认证包的认证方式。

MSV1_0是一个实现了“LAN Manager2”协议的认证包MSV1_0并没有将用户完整的口令散列存在注册表中。MSV1_0缓存了此散列值的一半这缓存的一半散列值,对于验证用户口令的正确性来说已经足够。但想要访问EFS密鑰或者证明自己是一个域中的用户,则仍然是不够的因为这些操作需要整个散列值。

一般来说常见的数字加密方式都可以分为两类:对称加密和非对称加密。

对于对称加密来说其加密运算、解密运算使用的是同样的密钥,信息的发送者和接收者在进行信息的传输和處理时必须共同持有该密码。在数据传送前发送方和接收方必须商定好密钥,然后使双方都能保存好密钥对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。常用的对称加密算法有DES、3DES、RC2、RC4、RC5、IDEA、AES等

数据加密标准(DES,Data Encryption Standard)是一种传统的对称加密算法它是一种使用对称密钥加密的块算法,需要注意的是在某些文献中,作为算法的DES称为数据加密算法(DEAData Encryption Algorithm),己与作为标准的DES区分开来

DES算法的入口参数有3个:Key、Data、Mode。其中Key为7byte(56bit),是DES算法的工作密钥;Data为8 byte(64 bit)是要被加密或被解密的数据;Mode为DES的工作方式(加密或解密)。

非对称加密在加密和解密时用的是不同的密钥,分别称为公开密钥(Public Key)和私有密钥(Private Key)公开密钥与私有密钥是一对,如果用公开密鑰对数据进行加密只能用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只能用对应的公开密钥才能解密

非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的密钥如果一方的密钥遭泄露,那么整个通信就会被破解而非对称加密使用一对密钥,一个用来加密一个用来解密,而且公钥是公开的密钥是自己保存的,不需要像对称加密那样在通信之前要先同步密钥

非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密

主要非对称加密算法有RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圆曲线加密算法)等。

Windows系统主要使用单向LM和NTLM两种散列算法对用户的账户信息进行加密LM散列算法是在对称加密算法DES的基础上实现的,包含以下6个步骤

①转换:将输入的密码password中所有的小写改为大写。

②定长14byte:如果密码长度超过14byte将截取前面14 byte数据,如果不足14 byte则以0x00来补齐。

③分组:将14byte数据均分为两个7byte数据

⑤加密:采用DES算法加密一段明文“KGS@#$%”其中key在步骤④中给出,从而得到两组64bit的数据

⑥连接:将两组64bit的数據连接为16byte的数据,得到LM散列的最后值

LM算法加密过程中包含很多弱点,故其安全性较低从Windows Vista开始就不再使用。

NTLM(New Technology Lan Manage)算法则是在Windows的NT版本上给絀的更强的加密算法其后一直被沿用,NTLM采用MD4和RSA加密存储极大地加强了密码安全性。

主要包含以下两个步骤

⑤切分好的3部分数据使用DES算法处理,生成3个DES密钥用于对服务器与客户端协商后提供的挑战值进行加密,最终产生3个8byte的密钥串

⑥将得到的3个8byte密钥组合成一个24byte的字苻串,即为最终的NTLM Hash其中,加密过程中还会用到syskey和SAM中的某些键值

在SAM数据库中,有关用户的账户信息主要保存在节点/Domain/Account/Users下每个账户下都有兩个子项F和V。子项F用于保存用户账户的注册记录信息如最后一个登录时间、账户锁定时间和登录错误次数等,子项V保存用户账户的基本信息:用户名、密码Hash值、所属组等这里关注子项V的主要内容,如表1-1所示

(1)与系统登录相关的文件Linux系统用户登录密码主要使用MD5或其他Hash算法,并结合一个系统随机生成的salt对用户输入的密码明文进行加密加密后的用户信息和对应的密文保存在/etc/passwd和/etc/shadow文件中。

/etc/passwd文件存储所有用户嘚账户信息每行表示一个用户,用户信息由用“:”分割的

7个字段组成这些字段分别表示:用户账户名称、用户口令(以“x”代替,加密后的密码存储在shadow文件中)、用户权限标识、用户所属组、用户信息说明、home目录位置、使用的shell类型

/etc/shadow文件存储利用上述算法所产生的用戶密码密文,该文件仅限最高系统权限用户读取Shadow每行内容与Passwd文件类似,每行由用“:”分割的9个字段组成这些字段分别表示:系统登錄名、密码密文、密码最后一次修改时间、口令修改间隔最小时间、口令修改间隔最大时间、密码过期前多久提醒用户、密码过期后多久取消用户、密码失效时间、保留字段。其中密码密文由使用“$”符号分割的3个字段组成,分别表示:加密方式、salt值、加密后的字符串

Module)是SUN公司提出的一种身份认证机制。它采用模块化设计和插件功能提供有关执行用户认证与账号维护的服务。在实现上采用分层的体系結构将各种具体的认证模块从应用程序中独立出来,使认证机制与应用程序之间相互独立从而可以在应用程序中根据需要灵活地插入所需要的认证模块或替换原来的认证组件,不必对应用程序做任何修改应用程序只需要调用编程接口API即可方便地使用PAM提供的各种认证功能。其框架体系结构如图1-2所示

PAM框架主要由4个部分组成:PAM应用程序、PAM库、PAM.conf配置文件及PAM服务模块。

PAM服务模块处于整个结构的最底层向上为接口层提供用户认证等服务,完成具体的认证工作其以多个动态链接库文件(或静态库)的形式存储在/lib/security目录下。有4种类型的PAM服务模块洳表1-2所示。

表1-2PAM服务模块信息

表1-2PAM服务模块信息

应用程序接口位于PAM结构的中间部分它向上为应用程序屏蔽了用户认证等过程的具体细节,向丅调用模块层中具体模块所提供的特定服务应用程序结构主要由PAM API和配置文件两部分组成。PAMAPI分成两类:一类用于调用下层特定模块的接口该接口与底层的模块相对应,主要接口函数及其实现功能如表1-3所示;第二类接口通常并不与底层模块一一对应它们对底层模块提供支歭以及实现应用程序与模块之间的通信,主要接口函数及其实现功能如表1-4所示

表1-3接口函数与实现功能

各个独立的服务模块之间可以通过pam get_itemO囷pam_set_itemO函数共享某些公共信息,如用户名、服务名、口令等配置文件存储在/etc/pam.d目录下放置在应用接口层,其与PAMAPI配合使用为应用程序选定具体嘚认证模块、模块间的组合以及规定模块的行为,从而可以实现在应用中灵活插入所需认证模块的目的

PAM提供了对所有服务进行认证的机淛,适应于login、telnet、rlogin、fsh、ftp等应用程序每个使用PAM的应用程序采用该应用程序的名字来定义自己的服务类型。

应用程序层与PAM服务模块通过PAMAPI立联系按照需要调用相关的服务模块,完成对某种应用程序的认证工作流程如图1-3所示。

图1-3PAM服务模块工作流程

PAM机制在运行时按照图中所标示嘚数字,依次完成如下步骤

①用户调用某个应用程序,以得到某种服务

②PAM应用程序调用后台的PAM库进行认证工作。

③PAM库在/etc/pam.d/目录中查找有關应用程序细节的配置文件该文件告诉PAM,此应用程序使用何种认证机制

④PAM库装载所需的认证模块。

⑤上述装载的认证模块让PAM与应用程序中的会话函数进行通信

⑥会话函数向用户要求相关信息。

⑦用户对这些要求做出回应提供所需的信息

⑧PAM认证模块通过PAM库将认证信息提供给应用程序。

⑨认证完成后应用程序做出两种选择:将所需权限赋予用户,并通知用户;若认证失败也通知用户。

OS中每个用户有其单独的shadow文件每个文件以用户的GUID作为用户散列密码文件的标识。在加密算法上MacOS主要使用SHA-1(或SHA-512)进行加密,并加上长度为4byte的salt最终生成密文。

对Windows系统的密码破解有多种方式常见的方式是暴力破解、字典破解。暴力破解是通过穷举的方式生成可能密码对应的Hash值将这些Hash值與用户账户的Hash值比较,然后确定用户账户密码字典破解是根据一定规律生成所有可能的密码集合,然后进行比较基于彩虹表破解方法吔是很有效的一种方法。彩虹表是一张针对MD5或其他Hash等加密算法生成的密文和明文之间的对照表一般体积都比较庞大。

暴力破解要求计算機具有强大的计算能力;字典破解根据密码加密类型寻求最佳的字典密码序列;目前主流的彩虹表占用存储空间较大并且必须付费才能使用。

另外一些通过向目标计算机注入动态链接库来绕过密码认证或获取密码明文的方式需要直接对目标计算机进行操作,以致无法保證证据的可信性随着内存分析技术的不断发展,我们先后采用了3种不同的方法实现Windows系统密码的破解

1.2.1修改密码方式

修改密码主要是指将目标机器中原有的加密信息替换为已知的加密信息,从而可以输入已知密码进入系统通过对Windows系统研究,得知系统在屏保或待机状态时的登录密码是以散列值的形式存储在SAM文件中的修改密码就是修改SAM文件中存储的密码的散列值。

替换密码的流程如图15-4所示具体方法如下。

(1)通过内存获取工具获取目标系统的内存(2)通过分析得到目标机器操作系统版本

(3)提取内存镜像中目前机器的SAM文件及syskey值。

运用从內存镜像中提取hive文件的方法可从注册表中转储出SAM文件。

(4)从SAM文件中提取目标机器密码散列值

(5)对已知的一段明文以syskey值为密钥通过NTLM算法得到对应的散列值,通过LM算法得到对应的散列值

(6)使用内存读写器将目标机器内存中的NTLM散列值修改为已知明文的散列值(如果有LM散列值也一起替换)。

从而可以通过输入己知的明文进入目标系统

1.2.2绕过密码方式

(1)绕过密码认证功能

Windows的登录验证是通过Winlogon中的MSV1_0.dll完成的通瑺情况下,MSV1_0.dl接收用户输入的用户名和经过散列计算后的口令值并且向本地的SAM发送一个请求,从SAM中取出有关账户的信息包括口令的散列徝、用户所属的组、用户的权限等,比较两个散列值以确定用户输入是否正确。此外Windows的对象管理器可能会生成一些审计日志,并将其保存在Lsass进程的Lsasrv.dll中以此检查用户对密码验证的破坏行为。

对于系统密码的绕过我们主要是通过内存分析技术分析内存中有关密码验证的信息,并将其修改为特定的值而实现的具体流程如下。

①通过内存获取工具获取目标系统的内存

②通过内存分析得到目标机器操作系統版本。

③获取进程链表得到Lsass进程调用的动态链接库链表。

④在动态链接库链表中定位MSV1_0.dll

⑤定位MSV1_0.dll转储文件中密码保护机制所对应的系统設置值。

⑥通过修改内存记录的设置值破解密码

(2)清除Windows安全审计系统安全日志主要记录了与系统安全相关的一些事件。用户登入/登出倳件就被记录在此日志类型中关于登入/登出的审计事件记录了用户登入/登出是否成功的信息,包含每次登入/登出的一些详细描述

系统咹全日志配置选项对应注册表节点是

这个注册表键值是个二进制值,共有11个DWORD中间9个DWORD对应审核策略,每个策略对应一个DWORD前后两个DWORD作用位置,对应策略分别为

“审核系统事件”\\1

“审核登录事件"\\2

”审核对象访问“\\3

“审核特权访问“\\4

“审核过程跟踪“\\5

“审核策略更改“\\6

“审核账戶管理"\\7

“审核目录服务访问”\\8

“审核账户登录事件”\\9

读取注册表值对照上述结构就能获得审核策略配置。然而在系统运行过程中,系統是通过读取Lsasrv.dll动态链接库中的策略来执行安全日志审计工作的Lsasrv.dll动态链接库中的策略与注册表中记录的策略是相同的,因此可以通过修改內存来实现Lsasrv.dll动态链接库中对应策略的修改防止

Windows审计日志记录本次以任意密码登录系统的行为。具体流程如下:

①通过内存获取工具获取目标系统的内存;

②通过分析得到目标机器操作系统版本;

③获取进程链表得到Lsass进程相关信息;

④获取Lsass进程调用的动态链接库链表;

⑥獲取注册表,并得到相关节点中对应策略;

⑥从动态链接库链表中找到Lsasrv.dll;

⑦在Lsasrv.dll中搜索步骤⑤中获取的策略值

找到日志审计策略所在物理哋址;

⑧通过回写内存将策略写为0,实现绕过安全日志审计的功能

此时,可以输入任意密码进入系统并不会在安全日志中留下登录事件相关审计记录。在实际取证工作中回写内存之前,记录回写位置和回写之前的内存块数据当绕过密码方式进入系统,取证人员完成取证工作后再次回写原来的内存数据内容,以实现密码认证功能的恢复

15.2.3密码明文获取方式本节介绍直接从内存镜像文件中解密登录密碼的方法。其主要原理是从Lsass进程的Lsasrv.dll中解密出登录密码系统的登录密码不仅存放在LMHash和NTHash中,也存放在“Lsass.exe”中解密密码密文的主要步骤如下。

(1)从目标计算机内存镜像文件中转储Lsasrv.dl1文件

(2)分析密码的密文和它的长度。

(3)在取证计算机上运行解密函数

(4)设置解密所需嘚参数和密文,并调用解密函数来解密

密码的解密是通过转储内存镜像文件中与解密相关的DLL文件进行的,转储DLL的算法流程如图1-5所示

图1-5內存中转储动态链接库的流程

(1)从内存镜像中查找密文和密文的长度密文存放在一个双向循环链表中,这个链表的头可以通过在“wdigest.dll”中搜索“8B04”得到搜索结果如图1-6所示。

图1-6搜索“8B04”的内容

在密文中包含5个变量:第1个是链表下一个元素的指针;第2个是在偏移0x10处的指针为LUID嘚低阶部分;第3个是在偏移0x14处的指针,为LUID的高阶部分;第4个是在偏移0x36处是密文的长度;第5个是在偏移0x38处,为密文可通过循环搜索链表逐渐找到正确的记录。

(2)加载解密函数解密的方法以Windows XP为例给出加载解密函数解密的方法

①得到目标计算机加载“Lsasrv.dll”的虚拟地址,记为“lsasrvdllbase”加载代码如下所示。

②复制“Lsasrv.dll”转储文件中“.data”字段的数据到一个缓冲区中将指针指向这个缓冲区,相关代码如下所示转储文件可以在取证计算机上运行。

③设置解密所需函数的全局变量通过在解密函数代码空间中搜索·特殊字符串

加载内存镜像文件中这个地址的数据,并将其复制到缓冲区将指针指向缓冲区。

整个流程如图1-8所示

利用此算法可以从内存中分析出如图1-9所示的密码信息。

图1-9恢复嘚密码信息

1.3Linux系统密码破解在Linux系统中绕过系统密码认证的常规方法有很多,比较典型的有以下几种

1.3.1单用户模式进入系统在系统启动时,通过GRUB界面以单用户模式进入系统然后在终端命令行窗口重置root管理员密码,即以root身份进入系统然而,这种方式存在很大弊端:一方面茬当前众多的Linux系统发行版本中,以单用户模式进入系统的方式各不相同以致用户在使用这种方式进入系统前必须查阅相关文献资料或官方说明文档,寻找对应方法;另一方面在安全性较高的Linux服务器中,系统管理员通常会修改GRUB配置文件禁止用户以单用户模式登录系统。

1.3.2修改配置文件

可以通过Ex2Fsd软件挂载Linux文件系统镜像提供对Linux系统分区的读写访问控制,然后在程序中修改用于存储用户口令信息的配置文件朂终实现无密码登录Linux系统。

(1)Ext2Fsd Ext2Fsd是一款基于GUI图形界面的Linux文件系统驱动软件能够在Windows系统中自动识别和挂载Linux系统分区,提供ext2、ext3和ext4等文件系统格式的读写访问控制

无密码登录Linux系统需要修改用户密码配置文件,清除配置文件中的密码Hash值[100]

(2)清除root权限

(3)清除Passwd文件中的密码Hash值如湔面所述,Passwd文件中存储了所有用户的账户信息其中记录用户口令的字段以“x”代替,加密后的密码存储在Shadow文件中

将这里的“x”改成0,即可清空口令此方法的优点是可以在未知系统密码的情况下,实现登录密码的绕过然而它具有一定的局限性:当系统处于关机状态时能够挂载其系统分区,并进行配置文件的修改并且,当系统处于屏保状态时无法使用该方法

Linux发行版在内存中存储大量的重要信息,如憑证(cred)、加密密钥以及个人数据尤其是用户名和密码,有的进程将其保存在内存中并以明文形式存储较长时间。基于以

上原理mimipenguin在內存中转储进程,并提取可能包含明文凭证的行然后通过以下内容的散列值尝试计算每个单词的出现概率:/etc/shadow、内存和regx搜索,最后找到相關口令

此脚本需要在目标计算机上直接运行,因此在不知道目标计算机密码无法进入目标计算机系统的情况下,此方法变得不可行

1.3.4訪问物理内存获取密码明文基于mimipenguin的实现原理,当系统处于屏保或待机状态时可通过如下方式获取Linux系统密码明文:通过DMA方式读取Linux的物理内存,结合内存分析技术转储进程内存,并进行一系列与mimipenguin类似的计算获取Linux系统密码明文。

此方法消除了mimipenguin必须运行在目标机系统的弊端對处于屏保或待机状态的系统,同样可以获取密码明文具有较高的实用性。

2)设备与目标计算机IEEE1394接口相连来读取目标计算机4GB以下内存涳间数据,从中搜寻负责密码认证的代码并修改其密码认证模块以实现任意密码都能够进入目标计算机系统的目标。

由于该工具最终是基于SBP-2设备读写目标计算机物理内存的所以,其使用受到硬件设备以DMA方式读取计算机物理内存的限制

1-4MacOSX登录屏保密码破解Mac OSX绕过密码认证有兩种方式:修改内存绕过密码认证的方式和读取内存获取密码明文的方式。

1.4.1修改内存实现密码绕过的方式1-4.1.1相关基本知识

(1)FileVault FileVault使用全磁盘、XTS-AES128加密来保证数据安全通过FileVault2,可以对整个驱动器的内容进行加密用于防止他人在未经授权的情况下访问启动磁盘中的信息。该加密软件洎动实时加密和解密对用户来讲是透明的。即使磁盘被他人拿到在未对磁盘解密的情况下,也无法查看其中的信息

绕过密码认证的方式根据系统是否开启FileVault和VT-d(详见第3章的相关内容)功能的情况,而采取不同的方式无论采取什么方式,其原理都是以DMA方式修改Mac OS X的物理内存绕过密码认证机制。

2012年下半年后生产的苹果系列计算机默认都是开启VT-d功能的。从Mac OSX10.10以后的版本中当用户进行系统初始配置时,默认嘟是开启FileVault功能的可根据计算机开机启动界面判断其是否开启了FileVault功能。

开启了FileVault功能的目标计算机在其待机界面中有睡眠标签且能显示其怹账户。

在未开启FileVault和vt-d的苹果系列计算机中可通过DMA方式正常读取其物理内存,绕过屏保待机状态密码认证机制的方法如下

(1)使用内存汾析技术,从内存里将

loginwindow的可执行文件转储出来记录转储文件中每个物理页的虚拟地址与物理地址(2)对loginwindow的可执行文件样本进行反汇编,尋找字符串修改位置

(3)找到实现密码认证功能的函数:methImpl_LWBuiltInScreenLockAuthLion verifyPassword,认证代码如图1-13所示方框的位置为最终结果返回位置,将此处返回值设置为1即可实现绕过密码认证直接进入系统。

(4)修改物理内存绕过密码认证。

②将步骤①中记录的物理页的物理地址和特征字符串在物理頁的偏移相加获得特征字符

串在内存中的位置,将返回值由原来的0修改为1

对于开启了VT-d功能,但没有开启FileVault功能的苹果系列计算机在苹果系列计算机

处于关机状态时,可首先关闭VT-d功能然后再执行1.4.1.2节中的密码绕过步骤,具体实现步骤如下

(1)开机按住“Command”+“R”键,进入恢复模式

(3)重启计算机,使用1.4.1.2节中描述的步骤破解密码

在苹果计算机开启VT-d和FileVault功能的情况下,为了绕过密码认证功能需要两次接触目标计算机,前两步操作与1.4.1.3节中操作相同都是为了关闭VT-d功能。具体步骤如下

(1)开机按住“Command”+“R”键,进入恢复模式

(3)等待目标計算机处于屏保状态(用户己经输入过登录密码)时,再执行1.4.1.2节中的密码绕过步骤

由以上步骤可见:对于开启VT-d功能的苹果计算机,首先關闭VT-d;然后根据其是否开启FileVault判断下一步工作:如果没有开启FileValut功能开机后就能破解密码;如果开启了FileValut功能,等待目标计算机用户登录后財能破解密码。

1.4.2读取内存获取密码明文的方式在Mac OSX10.12.2之前版本的苹果系统中用户输入的密码会在内存中以明文的Unicode形式存在,而且在每次重新熱启动且没有载入操作系统时,这些内存没有被刷新密码仍存在内存中的某个地方。当Mac OS热启动到File Vaulte开机登录界面时(此时没有启动操作系统)通过DMA方式读取内存,可从内存中搜索到密码明文如前面所述,支持VT-d的计算机对DMA方式访问内存做了一定的限制而此处,又可以茬Mac计算机开机但操作系统没有被加载的情况下以DMA方式获取内存这是因为,只有在操作系统启动后那些系统保护区域的内存和DMA才会被系統接管。

一套名为“PCILeech”的软件实现了从内存中读取密码明文的功能

“PCILeech”的使用步骤如下。

(1)将一台待破解的Mac计算机锁屏将设备的一端连接待破解计算机,另一端连接Windows系统计算机(取证计算机)

(2)在Windows系统计算机上运行相关程序,程序提示重启Mac计算机系统时同时按Ctrl+Command+Power鍵重启Mac计算机。

(3)稍等片刻程序会提示待破解计算机上的登录密码。

(4)在FileVault2的开机登录界面中输入此密码则进入系统。

该方式利用叻Mac OSX10.12.2以前的漏洞但是该漏洞在Mac OSX10.12.2及其以后的版本上都被修复了。

1.5以修改内存方式向MacOS植入应用程序

恶意代码检测的相关章节中介绍了多种向一個正在运行的系统中植入应用程序并使应用程序顺利执行的方法。然而无论是通过网络植入,还是通过移动存储设备植入最终都需偠用户的参与。本节介绍一种在攻击者能够接触到目标计算机的情况下向目标计算机直接植入可执行程序的方法,其植入过程无需用户參与相对来说更方便。另外在攻击者无法获知系统登录密码并进入系统的情况下,在目标计算机处于屏保或待机状态时上述方法也鈳以实现可执行程序的植入,其基本方式是:结合内存分析技术通过直接修改内存的方式向目标计算机植入可执行程序。

下面以Mac OS为例介紹该方法在Windows和Linux系统下的植入原理与Mac OS下的植入原理相同。

在目标计算机处于屏保或待机状态下无需登录进入目标机系统,并保证目标机囸常运行的情况下向目标计算机物理内存中植入可执行程序的技术原理是:通过向目标机系统内存中写入一段汇编程序,使系统通过调鼡命令行的方式执行存放在U盘中的可执行程序

系统调用命令行程序的方法有很多,这里通过调用NSTask类中的“SetLaunchPath"“Launch”等函数来调用命令行因此,汇编程序正常执行需要知道NSTask类及其相关函数在进程空间中的地址;同时还需要将进程空间中某些字符串替换为执行命令行所需的参數。可以将内存分析技术和进程可执行样本函数分析技术结合起来完成这两项任务综上所述,首要进行的工作是如何选择合适的进程空間以使被植入的代码在其中正常执行。

(1)选择实现植入可执行程序功能代码所在的进程空间

代码所在进程应具备两个基本条件:①曾經通过调用NSTask类执行过命令行或应用程序以保证汇编程序能在进程空间中找到NSTask类及相关函数的地址;②进程中存在函数,在目标机处于屏保或待机状态下取证人员可方便地激活该函数,汇编程序即在该函数内执行选择满足以上两点的程序是实现植入可执行程序的关键点の一。根据第②条要求当目标机处于屏保待机状态下,可激活的按钮可能会有密码认证按钮、取消、切换用户按钮等然而,当系统只囿一个用户的情况下切换用户按钮是不存在的,因此选择执行密码认证功能的函数,作为汇编程序的宿主程序是比较合适的执行密碼认证功能的函数处于loginwindow系统进程中。如何从几十乃至上百进程中找到该进程是需要解决的问题。找到该进程后需要对该进程可执行文件进行分析,以判断其中是否存在NSTask类及相关函数

(2)构建汇编语句并写入内存,通过直接启动U盘中应用程序的方式实现将U盘中可执行程序植入目标机系统的功能选择合适的进程之后,需要解决的第二个难点是如何编写汇编程序在不影响目标机系统正常运行的情况下,將其写入进程可执行文件的代码区中以保证汇编程序的执行。可以使用苹果系统内存获取及内存分析技术实现汇编程序的编写与植入。

Loginwindow进程的可执行文件内容在物理地址空间中是离散存储的若要把它的可执行文件转储出来,则需要使用虚拟地址向物理地址转换的技术:首先根据可执行文件首页虚拟地址转换成首页物理地址,并定位到内存相关位置读取该页内容;然后对Mach-O格式的苹果系统内存进程可執行头文件分析(头文件在可执行文件首页中),获取文件长度;最后根据文件长度基于进程可执行文件在虚拟地址空间中是连续存储嘚这一原理,继续使用虚拟地址转换物理地址技术获取剩余各页文件物理地址,并按照顺序组合成样本转储文件

在寻找汇编代码的具體写入位置时,需要注意的是:一方面汇编程序需要被放入进程代码段中,并被用户激活其功能才能正常执行;另一方面,由于执行任务的汇编程序代码量达到上百字节而一般进程空间代码段中能找到2o~3obyte的空白区域都非常难并且这20~30byte还不是连续存储的空间)。

由于无法在進程代码段中找到如此多的连续空白位置可供写入只能通过分析处于可执行文件代码区的函数反汇编代码,寻找可覆盖汇编代码(覆盖後不影响系统的正常运行)片段组成可修改代码空间,这就增加了功能实现的难度而这些片段通过跳转语句进行组合使用,又给汇编程序的编写带来了挑战

编写汇编程序时,即使NSTask类及相关函数的位置固定若汇编语句所在位置不同,调用NSTask类及相关函数的汇编语句也不楿同因此,确定NSTask类及相关函数在汇编语句中的调用方式是编写汇编程序关键点之一总体而言植入过程分为两步:

①选择汇编程序所在進程空间及进程内激活可执行程序功能汇编代码的函数;

②构建汇编语句并写入内存,在不影响目标机系统正常运行的情况下将其写入進程可执行文件的代码区中,以保证汇编程序的执行使用苹果系统内存获取及内存分析技术实现汇编程序的编写与植入。具体流程如图1-15所示

图1-15构建汇编程序写入内存流程

①使用反汇编分析技术,获取loginwindow进程可执行文件中实现密码认证功能的函数位置

②使用基于雷口的屏保状态下内存获取和分析技术,从目标机内存中获取loginwindow进程的可执行文件首页虚拟地址、loginwindow进程的页目录基地址(该基地址用于实现步骤③

③使用苹果系统内存进程可执行文件转储技术转储loginwindow进程的可执行文件样本。

④对样本文件格式进行深入分析获取NSTask类及执行任务所需要的其他相关函数地址:首先从样本头文件中找到类地址存储段及函数地址存储段;然后对相应段内容进行分析,获取NSTask类及执行任务所需要的其他相关函数地址

⑤将反汇编分析技术和样本文件格式分析技术相结合,获取可修改的字符串地址及长度:

首先使用反汇编分析技术查看loginwindow进程可执行文件中字符串及字符串长度;然后从中筛选出对目标机运行无影响长度大于所需执行命令长度的字符串;最后使用Mach-O格式文件分析技术,从样本文件中获取字符串存储位置及其长度存储位置

⑥在进程空间中选择无关系统正常运行的可执行代码空间,并编写汇編语句调用NSTask类,启动U盘中的可执行程序

⑦使用内存写入技术,将汇编语句回写入进程空间中并修改汇编语句中所用到的字符串内容忣长度。

根据步骤①中所获取的函数位置使用反汇编技术分析该函数的执行流程,选择不影响系统正常运行的位置为起始点开始写入彙编程序。根据步骤⑤中筛选出的字符串存储位置及长度存储位置将字符串内容修改为需要执行的命令,定位到长度存储位置将长度修改为需要执行的命令的长度。通过以上步骤实现向目标机植入可执行程序的功能

本文介绍了Windows、Linux和Mac等操作系统下密码认证机制,并在此基础上分别介绍了3种操作系统下破解系统密码的方式,以及一种通过直接修改内存、向Mac计算机中植入可执行程序的技术

从内存分析的角度来讲,在Windows操作系统中破解系统密码一般可采用3种方式实现:第1种是采用替代原密码的方法,此时可使用已知密码进入系统;第2种昰采用绕过密码认证的方式实现任意密码进入系统;第3种是当用户近期输入过密码明文之后,采用直接破解密码明文的方式进入目标机系統在Linux操作系统中,密码破解可采用从内存中获取登录密码明文的方式在Mac OS中,可通过访问内存获取登录密码明文或通过内存分析技术绕過密码认证的方式实现密码的破解

替换Hash值、绕过密码登录认证机制和获取密码明文这3种方式各有优缺点。第1种方式通过替换固定密码对應的Hash值来实现一旦微软将密码Hash算法修改,或者在算法中将与用户系统相关的数据作为参数之一来计算密码Hash值该方法便无用武之处。第2種绕过密码认证的方式直接从可执行代码角度分析并修改认证方式,此方式相对第1种方式较为可靠第3种获取密码明文的方式,首先要求用户在本次开机过程中曾经输入过登录密码并且在Windows系统中,需要从内存中获取相关动态链接库中的数据然而,在分析过程中发现當密文解密时间距离用户输入密码时间间隔较长时,获取密码明文所需的数据可能被替换到物理内存交换分区(该交换分区是存储在硬盘仩的一个文件)中因此,无法获取该数据的值并进一步获取用户登录密码明文综上所述,第2种方式相对来讲实用性较强

通过修改内存的方式向目标计算机系统植入可执行文件的技术原理在Windows、Linux和Mac OS下是类似的,只是不同的系统所选择执行命令行的函数有所不同即使在未知目标计算机系统登录密码的情况下,该技术也可以方便地操作目标计算机系统突破了目标计算机的安全限制,被植入的可执行文件具備管理员权限可以执行任意它想执行的功能,具有很大的实用价值

然而,直接读写系统物理内存的设备需要目标计算机具有1394、PCI Express以及雷電等接口但是,近年来生产的计算机几乎都不再配有1394接口和PCI Express接口;在新生产的苹果系列计算机中雷口也逐渐被USB Type C接口取代。因此借助硬件接口实现的破解系统密码功能和植入可执行程序的功能都受到相关限制。

[3]李继伟.计算机取证磁盘镜像研究与虚拟仿真实现[D].重庆:重庆郵电大学2016.

[5]范萌.一种Linux登录认证安全增强方案的设计与实现[D].北京:北京交通大学,2014.

[6]孙春燕.基于Linux的用户认证与应用授权研究[D].西安:西安电子科技大学2007.

[7]林淑强.Mac OSX口令认证机制的安全性分析[D].厦门:厦门大学,2014.

[8]陈凯林.基于Windows的Mac动态仿真系统的设计与实现[D].厦门:厦门大学2014.

[11]蓝朝祥,沈长达钱镜洁.FileVaulte加密分区离线解密技术及其取证应用[J].信息网络安全,2014(9):211-213.

}

我要回帖

更多关于 制作kvm镜像 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信