python网络安全 应用程式安全技术

消息钩取 (Message Hooking)

消息钩取是 Windows 操作系统中的一种机制,允许程序“拦截”并处理发送给其他应用程序的消息。在 Windows 中,应用程序之间或系统与应用程序之间通过消息(例如鼠标点击、键盘输入、窗口移动等)进行通信。

恶意软件可以利用消息钩取来监控用户的操作,比如记录键盘输入(键盘记录),从而窃取密码和敏感信息。它就像在邮局里安装了一个窃听器,在信件送达收件人之前,先偷看信件内容。

API 址取 (API Hooking)

API(应用程序编程接口)是操作系统提供给应用程序调用的一系列函数。API 钩取是一种技术,通过修改内存或文件,来劫持对这些函数的调用。当一个程序尝试调用某个合法的 API 函数时,API 钩取会将其重定向到攻击者自己编写的恶意代码。

例如,一个木马程序可以钩取 CreateProcess 函数,这样每当用户启动一个新程序时,木马都可以知道并进行干预。这种技术常被用于以下目的:

  • 隐藏恶意行为:例如,钩取文件相关的 API,让恶意文件在文件管理器或命令行中不可见。
  • 窃取数据:钩取与网络通信相关的 API,以拦截和窃取传输中的数据。
  • 绕过安全软件:钩取杀毒软件的 API,让其无法正常工作或检测到恶意程序。

DLL 注入 (DLL Injection)

DLL(动态链接库)是一种可执行文件,其中包含可被多个程序共享的代码和数据。DLL 注入是指攻击者将一个恶意的 DLL 文件强行加载到另一个合法程序的内存空间中。一旦恶意 DLL 被加载,它就可以像合法程序的一部分一样运行,并且获得与该程序相同的权限和访问能力。

DLL 注入通常是实现其他恶意行为(如 API 钩取)的第一步。例如,一个恶意 DLL 可以被注入到浏览器进程中,然后钩取浏览器API来记录用户的浏览历史和表单数据。

代码注入 (Code Injection)

代码注入是一个更广泛的概念,指的是将任意恶意代码注入到正在运行的进程中。DLL 注入是代码注入的一种特定形式,但代码注入的方式远不止于此。其他常见的代码注入技术包括:

  • 远程线程注入:在目标进程中创建一个新线程,并强制其执行恶意代码。
  • 修改进程内存:直接向目标进程的内存中写入恶意代码,然后劫持程序执行流,使其跳转到新写入的代码。

代码注入的主要目的是让恶意代码在合法进程的上下文和权限下运行,从而绕过安全机制,隐藏其踪迹,并访问通常无法访问的资源。它就像是给一辆合法运行的汽车换上了一个非法驾驶员,而交警很难发现异常。