macos编写python
简要了解如何在macOS上秘密记录用户活动
This️ 此帖仅用于教育目的 ⚠️
键盘记录器可能是您要在计算机上使用的最后一件事。 不幸的是,这种程序通常被很好地隐藏起来,并且常常被受害者完全检测不到。
键盘记录器的核心是一种设备或程序,可记录您在计算机上键入的所有内容。 这意味着恶意方可以记录和读取每个密码,您发送的每个私人消息以及您键入的每个搜索。
键盘记录器主要有两类,硬件记录器和软件记录器。 硬件记录器通常更易于检测。 它们通常被描述为物理上位于有线键盘和计算机之间的小型设备。 随着蓝牙键盘的出现,这种类型的记录器现在已经不那么普遍了,但是蓝牙嗅探攻击的确存在 。
软件记录器通常隐藏得更好,并且是Rootkit中包含的常见功能。 Rootkit是一种特别讨厌的恶意软件,它生活在非常低的计算机级别,通常低于操作系统或防病毒程序能够检测到的级别。 Rootkit通常以如此高的特权运行,以至于没有任何东西在其可见性之外。 除了录制简单的击键外,更高级的rootkit可能还具有其他功能,包括拍摄屏幕截图,甚至使用计算机的摄像头和麦克风秘密录制视频和声音。
在本文中,我将演示如何使用python在macOS上设置简单的键盘记录程序。 苹果公司针对macOS的安全性通常要维持在较高的标准之下,因此,要使这样的程序运行,我们需要为此故意降低macOS的安全性。
实际的恶意按键记录程序可能会利用某种漏洞来越过Apple的安全控制,而高级记录程序可能会利用其他隐藏机制来隐藏进程本身,并将收集的按键数据与远程命令和控制服务器进行通信。
禁用系统完整性保护(SIP)🔐
苹果为其在OS X El Capitan中引入的macOS引入了系统完整性保护(SIP)模式。 SIP是macOS 10.12 Sierra和macOS 10.13 High Sierra中的一项众所周知的功能,可保护根级别的文件,目录和进程免遭修改。 通过保护对系统位置的访问并限制运行时对系统进程的附加,它可以作为强大的防御性控件,防止对低级进程进行修改。
为了使我们的示例键盘记录程序正常工作,我们需要禁用此功能。 去做这个:
- 重新启动Mac。
- 重新启动后立即按住Command-R直到出现Apple徽标。
- 等待macOS引导进入OS X Utility窗口。
- 在“实用工具”菜单中,选择“终端”。
- 键入
csrutil disable
,然后按Enter。 - 键入
reboot
,然后按Enter。 - 照常登录到Mac。
重要提示:为了您自己的安全,请记住在完成测试后通过按照上述步骤在第5步中输入
csrutil enable
来重新启用此功能。
Python代码
运行此示例按键记录器所需的python代码在很大程度上依赖于Apple自己的一些类,即NSApplication和NSEvent ,我们将通过pyobjc库进行安装。 完整的代码在这里可用,但是我将在下面进行有趣的介绍。
我想使应用程序可配置,在这种情况下,我使用ConfigParser来配置我的设置,以将收集的数据写入何处。 我还提供了一些默认值,以防配置丢失。
接下来,我们将创建Writer类。 此类负责创建日志文件并记录所有收集的击键。
最后,我们来看一下AppDelegate类,该类实际上将收集keydown事件,以及处理程序,该处理程序将解释keydown事件并将结果发送到Writer类的“ write_to_log”方法。
启动脚本
为了确保我们的按键记录器可以运行,我们将使用方便的启动脚本来为我们完成一些设置。 您可以在此处查看完整的脚本,出于我们的目的,我将介绍一些有趣的内容。
首先,我们检查macOS版本,以及是否启用了SIP,我们假定此脚本只能在运行10.12及更高版本的系统上运行,并且必须禁用SIP。
接下来,我们尝试将终端应用添加到macOS的辅助设备白名单中。 为了使我们的脚本具有捕获通常无法访问的按键事件的权限,这是必需的。 在此示例中,我同时添加了Terminal和iTerm2 ,这是我的选择。 如果您使用其他Shell应用程序,则可以在此处添加它。
最后,我们将以静默方式安装python依赖项,并在后台启动python脚本。
测试并清理⌨️
查找记录的文件
如您在python代码中可能已经注意到的那样,我正在尝试将数据写入/Library/Caches/com.apple.pkl
。 这里的想法是尝试将数据写入不明显的地方,例如系统缓存所在的位置。 大多数用户永远不会访问此位置,更不用说寻找任何可疑的东西了。
杀死脚本
假设脚本成功运行,它应该只是一个在后台运行的python进程。 如果您像我那样将python文件命名为“ pkl.py”,则可以通过运行以下命令将其kill -9 $(ps aux | grep pkl.py | awk '{print $2}'
: kill -9 $(ps aux | grep pkl.py | awk '{print $2}'
。
清理辅助设备白名单
我喜欢通过修改包含这些权限的sqlite数据库来做到这一点,但也可以在“系统偏好设置”中轻松完成此操作。
- 打开“系统偏好设置”。
- 点击“安全和隐私”。
- 点击“隐私”标签。
- 点击左侧栏中的“辅助功能”。
- 单击列出具有访问权限的应用程序表下方的“-”按钮。
结语
请记住,该代码仅用于教育目的,您只能在自己的计算机上运行它。 完成运行后,请务必为您自己的安全重新启用SIP。