macOS的15个安全技巧(二)

运维 系统运维
自2004年以来,我每天都在使用macOS,自从OSX Panther(2003年10月发布)以来,我使用过该操作系统的每一个版本,而且自从Lion 10.7(2011年7月发布)以来,我每年都会对macOS的每一个版本进行beta测试。

隐藏桌面上的所有文件

技巧

  1. chflags hidden ~/Desktop/* 

  1. chflags nohidden ~/Desktop/* 

介绍

另一个与记录和报告有关的技巧是:如果你需要获取桌面的屏幕截图或屏幕记录,那么除了移动或删除所有杂乱的桌面之外,还有一个替代方法,即使用chflags实用程序临时隐藏所有桌面文件。

请注意,尽管这与使用Finder使用Keychord Command-Shift-Period显示/隐藏不可见文件的另一个技巧无关,但是,如果你已使用该Keychord在Finder中启用了不可见文件,则还需要再次调用 Finder keychord并将设置切换为“关闭”,此技巧才能起作用。

截屏或录制后,请不要忘记使用nohidden标志来取消隐藏。

编码/解码URL字符串

技巧

  1. alias urldecode='python3 -c "import sys, urllib.parse as ul; print(ul.unquote_plus(sys.argv[1]))"' 

  1. alias urlencode='python3 -c "import sys, urllib.parse as ul; print(ul.quote_plus(sys.argv[1]))"' 

介绍

百分比编码的URL字符串非常常见,因此我发现在我的shell .rc脚本中定义一个别名来处理它们非常有用,特别是用于解码。尽管这个技巧使用的是Python 3,但是还有许多其他方法可以使用不同的工具来实现这一点:Python 2、Perl、Ruby、纯Bash和Zsh等等,精确度各不相同。我个人更喜欢Python 3,因为根据我的经验,它是最可靠的。


创建一个随机命名的文件或目录

技巧

  1. mktemp -d /tmp/XXXXXXXXXXXX 

介绍

使用带有或不带-d开关的mktemp实用程序分别创建一个随机命名的文件或目录,不需要指定/private/tmp目录,你可以同样使用$TMPDIR目录或任何其他你希望的目录:如果没有路径前缀,该工具将在当前工作目录中创建随机命名的文件或目录。

在防御性编程中,随机命名的临时文件非常有用,可以确保攻击者无法预测你可能需要定位应用程序或程序资源的临时文件的路径。类似地,攻击者使用它们将恶意文件放入临时目录和其他具有随机名称的位置,以帮助他们规避简单的基于路径的探测启发式和YARA规则,这些规则试图通过指定特定位置来减轻资源的负担。

在上面的示例中,我使用12 Xs生成一个很难猜测的随机名称。但是,防御者和攻击者可以通过明智地使用正则表达式搜索模式在一定程度上让这个技巧变得无用。 


顺便说一下,macOS上使用了许多不同的临时目录。虽然/tmp是/private/tmp的别名,但/private/var/tmp和$TMPDIR都是完全不同的位置,如以下图像中每个列表所证明的。我们从ls -al而不是$ TMPDIR的目录列表中显示计数,仅仅是因为那里的文件太多,所以无法方便地将其放入屏幕截图中。

 

使用Swift作为脚本语言

技巧

  1. #!/usr/bin/swift 

  1. #!/usr/bin/env swift 

介绍

使用Swift作为脚本语言的优势在于,它允许你从文本文件运行代码,这些文本文件可以本地调用Apple Cocoa api。通过访问Foundation、AppKit和其他框架中的代码,你可以构建与本机二进制文件一样强大的可移植脚本,这对于攻击者或防御者来说都是理想的。

以这种方式使用Swift取决于目标计算机上Xcode命令行工具的存在,因此这将你的目标主要限制在开发人员中,相当大的一群人通常不愿安装安全控件,而如果你正在考虑的话,可以选择一个不错的目标群体有关供应链攻击和横向移动的信息或者安装依赖作为post-exploitation的一部分。通过将脚本转换为自己计算机上的Swift二进制文件,然后将二进制文件导入到目标设备,可以完全避免依赖关系。为此,只需从脚本中删除shebang并使用swiftc编译器即可快速创建本机Mach-O二进制文件:

swiftc my_script.swift -o my_script

使用Swift作为脚本语言显然需要了解Swift本身,你可以在Derik Ramirez的网站上找到很好的介绍。


现在,请注意使用#!/usr/bin/env形式的此脚本或任何其他脚本shebang的注意事项。开发人员通常会推荐这种做法,因为这样可以确保即使shell程序不在标准路径中,也不会存在多种版本(例如Python 2,Python 2.7,Python 3等),shell都可以找到该可执行文件。但是,从安全角度来看,这会引入潜在的漏洞。由于env将使用指定名称(例如,Swift)首先出现在用户$ PATH中的任何可执行文件,因此恶意进程可能会在用户路径的顶部删除一个cuckoo二进制文件,并执行该文件,而不是真正的Swift二进制文件。出于这个原因,如果需要考虑安全性,我建议始终使用Swift(和其他)二进制文件的绝对路径。

在截屏时移动或调整所选区域的大小

技巧

用Command-Shift-4选择区域时按住空格键。

介绍

这是我几个月前才学会的一个奇妙的技巧,尽管我多年来每天都使用screencapture keychordCommand-Shift-4。虽然该办法可以让你快速选择一个自定义区域,但如果你的起始位置不对,则操作结果会出现偏差。

使用此技巧,你无需取消Esc并重试。按住鼠标/触控板以避免拍摄,然后只需按住空格键并移动光标即可将所选区域重新定位到所需位置。重新定位后释放空格键,并根据需要通过常规拖动继续进行调整,释放鼠标/触控板进行拍摄。


在macOS Catalina 10.15中,还有额外的Command-Shift-5 keychord,它提供了来自HUD风格界面的各种选项,包括指定不同的默认保存位置。

将Cocoa时间戳转换为人类可读的日期

技巧

  1. date -r $(( + 978307200)) 

介绍

这是我在前面介绍macOS事件响应时提到过的一个技巧,但是值得在这里重复一遍。从1970年1月1日星期一00:00:00开始的Unix时间戳已在macOS和其他操作系统中广泛使用,可以在命令行上使用日期实用程序将它们转换为人类可读的形式。

Cocoa时间戳大家可能就不太熟悉了,它采用类似的形式,但通常有一个表示第二个追加部分的小数,如587381138.016775。不过,最重要的区别是,Cocoa的时间戳开始时间要比Unix 晚31年,即2001年1月1日。因此,要使用日期实用程序转换Cocoa时间戳,我们需要添加31年的差异,即978307200秒。出于大多数非取证的目的,可以忽略小数点后一秒的分数。


本文翻译自:https://www.sentinelone.com/blog/15-macos-power-tricks-for-security-pros/如若转载,请注明原文地址。

 

责任编辑:姜华 来源: 嘶吼网
相关推荐

2020-12-02 10:49:32

macOS漏洞恶意软件

2023-11-26 17:54:07

JavaScript开发

2022-12-22 14:44:06

JavaScript技巧

2022-12-25 16:03:31

JavaScript技巧

2024-01-22 13:16:00

接口性能优化本地缓存

2022-10-09 13:36:44

接口性能优化

2015-01-14 10:26:30

JavaScript编程技巧

2021-11-10 18:52:42

SQL技巧优化

2023-04-23 15:11:26

2022-04-02 09:56:44

pipPython

2022-09-05 14:17:48

Javascript技巧

2020-05-15 10:26:36

终端macOSHomeBrew

2018-07-30 13:36:13

MacO开源应用程序

2024-01-15 17:26:26

JavaScriptWeb开发

2020-11-11 08:22:40

前端开发JavaScript

2018-02-23 13:55:16

ASP.NET性能优化技巧

2024-05-28 09:26:42

2022-03-12 09:55:09

安全误报SOC

2023-09-04 15:52:07

2019-06-14 14:06:13

点赞
收藏

51CTO技术栈公众号