首页 存档 技术 查看内容

OSX那些事---恶意软件是如何启动的?

2018-3-30 13:00 |来自: 互联网 286 0

摘要: 架构师(JiaGouX)我们都是架构师! 背景前几日,看了一份报告,是美国网络安全公司bit9发布的:《2015: The Most Prolific Year for OS X Malware》报告主要的内容就是说说2015年OS X平台恶意软件的情况。bit9的 ...

架构师(JiaGouX)
我们都是架构师!


背景
前几日,看了一份报告,是美国网络安全公司bit9发布的:《2015: The Most Prolific Year for OS X Malware》
报告主要的内容就是说说2015年OS X平台恶意软件的情况。bit9的研究团队进行了10周的分析研究,分析了1400个恶意软件样本。给出了下面这张图,可见,2015年恶意软件样本数量是前5年恶意样本数量之和的5倍。这估计要亮瞎苹果公司的眼。Mac越来越火。也越来越不安全了。


报告指出的重点有:
1.现在恶意软件的启动方式(Persistence Mechanisms)使用传统Unix技术的越来越少,基本没有了。大部分恶意软件使用OS X提供的新的启动机制了。
2.感染持续增长,但是恶意软件的复杂度却不是太高。
3.主要的启动方式有7种。
4.由于OS X平台上恶意软件多样性不如windows平台,所有相对的检测方法就简单一些,因为需要需要检查的地方比windows平台的要少。

0x01 启动


接下来就来谈谈这启动的事,看看是哪7种武器是黑客所喜欢的:

如上7种武器你知道几种(大神就自动飘过)。

Launch daemons/agents

其实这两种启动方式可以一起介绍。启动方式基本相同,只是有些区别而已。

这两种方式都是苹果官方提供的标准启动方式。在官方手册里面可以查询到更详细的介绍[link]。daemons和agents都是由launchd进程负责启动的后台作业。launchd是OS X系统用户态的第一个进程。对应于其他UN*X系统中的init。负责直接或者间接的启动系统中的其他进程。

从图中可以看到daemons和agents都是由launchd进程启动的。

  • daemons:守护程序,后台服务,通常与用户没有交互。由系统自动启动,不管是否有用户登录系统。

  • agent:代理程序,是一类特殊的守护程序,只有在用户登录的时候才启动。可以和用户有交互,还可以有GUI。

创建一个daemons或agent是非常简单的,就是创建一个普通的二进制可执行文件。然后将自己的属性列表文件(.plist)放置到daemons或agent的配置目录中:


plist文件的结构可以查看手册[link],下面给出了一个启动计算器的plist文件。拥有键值为true的RunAtLoad键。

将此.plist文件拷贝到/Library/LaunchAgents目录(拷贝之后的文件拥有者为root),就可以在重启后,自动启动计算器。

可以使用

sudo plutil -lint /path/to/com.test.plist

来检测plist文件格式是否有问题。

plist中主要的字段和它的含义:

  • Label 用来在launchd中的一个唯一标识,类似于每一个程序都有一个identifies一样。

  • UserName 指定运行启动项的用户,只有当Launchd 作为 root 用户运行时,此项才适用。

  • GroupName 指定运行启动项的组,只有当Launchd 作为 root 用户运行时,此项才适用。

  • KeepAlive 这个key值是用来控制可执行文件是持续运行呢,还是满足具体条件之后再启动。默认值为false,也就是说满足具体条件之后才启动。当设置值为ture时,表明无条件的开启可执行文件,并使之保持在整个系统运行周期内。

  • RunAtLoad 标识launchd在加载完该项服务之后立即启动路径指定的可执行文件。默认值为false。

  • Program 这个值用来指定进程的可执行文件的路径。

  • ProgramArguments 如果未指定Program时就必须指定该项,包括可执行文件文件和运行的参数。

Cron job

Cron job是一个随Unix而来的启动机制。在OS X中已经不被推荐使用。苹果公司推荐使用launchd命令来完成计划任务。但是OS X仍然支持Cron。那黑客们当然不会嫌弃。

Cron可以用来在设定的时刻执行一个命令或是脚本。如果恶意软件是python编写的,可以直接运行python命令。

Cron服务使用crontab命令来控制。在目录/usr/lib/cron/tabs目录下会有对应的用户名的配置文件。当然可以直接通过命令来进行配置。具体的可以查询手册[link]。

crontab可以直接读取文件作为输入来配置:

如图 用crontab加载文本persist

保存文本内容为:

*****open /Applications/Calculator.app

该配置为每分钟执行open命令打开计算器。

上图为文件格式,多个任务可以分多行给出,可以用#进行注释。

还可以使用@reboot等配置来设置开机启动。但是本人在OS X 10.10上测试开机启动计算器没有成功!用时间间隔来启动时可以的。

可以用crontab参数

  • -l 查看当前的crontab配置。

  • -r 移除所有配置

  • -e 编辑配置

login items

login items是苹果公司对需要开机运行的应用程序推荐的启动方式。

有两种使用login item的方式:

  1. 使用shard file list。

  2. 使用Service Management framework。针对sandbox性能的程序[link]。

第一种方式:

使用第一种方式启动的login items在系统偏好设置-

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部