指导:重温C/C++之恶意软件键盘记录器完整的开发步骤和运行原理拆解方法。
声明:该系列目的在于研究键盘记录器的内部运行原理,从而进行更好的防御!禁止用于违法行为!同时也是为了从头掌握C/C++的完整系列一!
首先,恶意软件和其他程序一样,也只是一段代码。例如,如果你想编写一个无法被检测到的键盘记录器,首先应该了解一下普通游戏在 Windows 系统中的运行机制。比如,每次你在游戏中按下某个键(上、下、左、右、Ctrl 等),系统都会调用一个 Windows 句柄来捕获按键并根据按键执行相应的操作。所以,如果我能编写一个运行在后台的程序,代码与游戏相同,只需稍作修改,将按键记录存储在内存中,而不是执行游戏相关的操作,它就变成了一个键盘记录器。然后,我可以将其转换成一个模块,并将其推送到反向 shell,从而从远程机器上获取按键记录。
然而,在深入恶意软件领域之前,有一些先决条件。我们需要在开始之前做一些准备工作。以下是在编写恶意软件之前需要思考的一些最重要的问题:
C/C++ —难度:⭐⭐⭐
汇编/Shell —难度:⭐⭐⭐⭐
在这里将全程使用 TCP 连接,但我们编写的恶意软件可以轻松移植到 HTTP。为了便于说明,本系列将编写投放器和无阶段恶意软件,因为编写有阶段恶意软件需要我们深入学习汇编语言、创建 shellcode 并将其发送到缓冲区执行。
但由于我们希望编写快速且相对简单的程序,我将使用 C 和 C++ 编写这些程序,并使用 Python 3 编写服务器代码。基于 C/C++ 的二进制文件体积非常小,而且在编写恶意软件的处理程序/服务器时,我们需要快速高效的编程语言,因此选择了 Python 3。我强烈建议不要使用 Python 或 Ruby/其他编写恶意软件,因为编译后的二进制文件大小会达到1 MB,而我们编写的恶意软件理想情况下应该小于 50 KB。
先决条件
以下是我认为要完全理解本系列中编写的代码所必需的一些技能:
1.C/C++
指针[用于在受害方内存中存储数据]
TCP套接字[反向shell]
操作堆上的缓冲区[读取大文件]
2.Python 3 [服务器/处理器代码]
多进程/多线程 [多个机器人的处理程序]
使用数据结构处理数据类型
TCP套接字
事件信号处理
3.WINAPI(Windows套接字)
4.Mingw-g++ 编译器标志/选项[用于减小二进制文件大小]
5.Elasticsearch 和 Kibana [用于可视化受损系统/用户、红队评估期间获得的权限]
搭建恶意软件测试研究环境所需的工具:
1.Linux(首选 Debian 系统,用于运行恶意软件处理服务器)
下载链接 – https://www.debian.org/
2.Windows [虚拟机 – 用于测试二进制文件]
3.Visual Code(用于编写 Python 和 C++ 代码)
下载链接 – https://code.visualstudio.com/download
在 Debian 系统中安装 Mingw 交叉编译器:
$ apt-get install mingw-w64-common mingw-w64-i686-dev mingw-w64-tools mingw-w64-x86-64-devWindows 系统进行开发,则可以从这里下载 Mingw 编译器:
https://sourceforge.net/projects/mingw/files/

合集:用于记录一些 恶意软件研究与开发的故事!重温C/C++
根据文章点赞人数决定,是否继续扩展更新更多的拆解文章!
夜雨聆风