中培伟业IT资讯频道
您现在的位置:首页 > IT资讯 > 软件研发 > 如何用Python编写macOS的基本键盘记录器

如何用Python编写macOS的基本键盘记录器

2020-10-19 16:39:59 | 来源:中培企业IT培训网

键盘记录器可能是要在计算机上使用的比较多的。不幸的是,这种程序通常被很好地隐藏起来,并且常常被受害者完全检测不到。键盘记录器的核心是一种设备或程序,可记录您在计算机上键入的所有内容。这意味着恶意方可能会记录和读取每个密码,您发送的每个私人消息以及您键入的每个搜索。那么如何用Python编写macOS的基本键盘记录器呢?

键盘记录器主要分为两类:硬件记录器和软件记录器。硬件记录器通常更易于检测。它们通常被描述为物理上位于有线键盘和计算机之间的小型设备。随着蓝牙键盘的出现,这种类型的记录器现在已经不那么普遍了,但是确实存在蓝牙嗅探攻击。

软件记录器通常隐藏得更好,并且是Rootkit中包含的常见功能。Rootkit是一种特别令人讨厌的恶意软件,它生活在非常低的计算机级别,通常低于操作系统或防病毒程序能够检测到的级别。Rootkit通常以很高的特权运行,以至于没有任何东西在其可见性之外。除了录制简单的击键外,更高级的rootkit可能还具有其他功能,包括拍摄屏幕截图,甚至使用计算机的摄像头和麦克风秘密录制视频和声音。

在本文中,我将演示如何使用python在macOS上设置简单的键盘记录程序。苹果公司针对macOS的安全性通常要保持较高的标准,因此,要使这样的程序运行,我们需要为此目的故意削弱macOS的安全性。

实际的恶意按键记录程序可能会利用某种漏洞来越过Apple的安全控制,而高级记录程序可能会利用其他隐藏机制来隐藏进程本身,并将收集的按键数据与远程命令和控制服务器进行通信。

  禁用系统完整性保护(SIP)

苹果为其在OS X El Capitan中引入的macOS引入了系统完整性保护模式。SIP是macOS 10.12 Sierra和macOS 10.13 High Sierra中的一项众所周知的功能,可保护根级别的文件,目录和进程免遭修改。通过保护对系统位置的访问并限制运行时对系统进程的附加,它可以作为强大的防御性控件,防止对低级进程进行修改。

为了使示例键盘记录器正常工作,我们需要禁用此功能。去做这个:

1. 重新启动Mac。

2. 重新启动后,立即按住Command-R直到出现Apple徽标。

3. 等待macOS引导进入OS X Utility窗口。

4. 在“实用工具”菜单中,选择“终端”。

5. 键入csrutil disable,然后按Enter。

6. 键入reboot,然后按Enter。

7. 照常登录到Mac。

重要说明:为了您自己的安全,请记住在完成测试后重新启用此功能,请按照上面的步骤进行操作,但请输入csrutil enable步骤5。

  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}'。

  清理辅助设备白名单

我喜欢通过修改包含这些权限的sqlite数据库来做到这一点,但也可以在“系统偏好设置”中轻松完成此操作。

1. 打开“系统偏好设置”。

2. 点击“安全和隐私”。

3. 点击“隐私”标签。

4. 点击左侧栏中的“辅助功能”。

5. 单击表下方的“-”按钮,列出具有可访问性的应用程序访问。

通过上述介绍,如何用Python编写macOS的基本键盘记录器的信息,相信大家已经请知晓了吧。不过这里需要提醒的是,本文仅用于教育目的,只能在自己的计算机上运行。完成运行后,请确保自己安全以重新启用SIP。想了解更多关于Python的信息,请继续关注中培伟业。

标签: Python 软件研发