AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 507231
Accepted
RomanSt
RomanSt
Asked: 2013-05-14 01:37:32 +0800 CST2013-05-14 01:37:32 +0800 CST 2013-05-14 01:37:32 +0800 CST

配置攻击者难以滥用的“强化”用户帐户

  • 772

假设您有一台运行各种敏感服务的 Windows Server 机器。假设其中一项服务非常简单,在文本文件中维护少量信息,但由于编码不当,存在(未知的)任意代码执行漏洞。

是否可以为该服务设置一个用户帐户,这样如果黑客成功利用此漏洞,他们可能造成的最大破坏就是读/写此文本文件,搞砸此特定服务,并可能列出文件C:\Windows,但没有别的?

天真的尝试这样做会立即遇到问题:“用户”中的任何人都可以写入 C:\一个非常糟糕的主意。

或者如果攻击者可以执行任意代码,无论使用哪个用户帐户,游戏都已经输了?我一直认为 Windows NT 的后代可以包含它,但现在我已经尝试过了,我不再那么确定了。

security
  • 7 7 个回答
  • 772 Views

7 个回答

  • Voted
  1. Best Answer
    MDMarra
    2013-05-16T07:27:42+08:002013-05-16T07:27:42+08:00

    默认情况下,用户无法写入C:\Program Files. 他们有读取、列出文件夹内容以及读取和执行。如果您不是这种情况,则有人或某物修改了这些权限。

    受限用户可以读取文件系统的大部分内容,但只能写入明确授予其访问权限的位置,例如其用户配置文件。

    如果您仅对那个文本文件授予修改权限,则该帐户唯一能够在文件系统上写入的就是该文件,以及其配置文件目录(我的文档等)中的内容,这些内容应该无关紧要。

    如果您的内置用户组对整个文件系统具有修改权限,那么这是非标准的。开箱即用,有限的用户帐户可以造成很小的损害。

    如果运行其进程的服务帐户的权限受到限制,则任意代码执行错误本身并不是特别无害。问题是那里有太多的特权升级漏洞,一旦你可以任意执行代码,你就可以执行一些可以让你突破特权级别的东西。就其本身而言,任意代码执行并不是什么大问题,但在现实世界中,它几乎总是与特权升级漏洞捆绑在一起。所以,是的,我会担心。

    • 5
  2. Simon Catlin
    2013-05-16T12:29:01+08:002013-05-16T12:29:01+08:00

    这里有一些非常有趣的答案。

    从实证的角度来看,在我手下有许多渗透后测试“要修复的东西”列表,我实际上会说微软近年来在提供工具和选项来很好地强化服务器方面做得很好。

    当然,MS 仍在对他们的代码进行模糊测试,他们和社区继续发现远程执行/权限提升漏洞,但我不得不说,与其他一些供应商(SonicWall、Tivoli 和我想到了甲骨文)。

    我的建议是:

    • 确保启用了用户帐户控制 (UAC)
    • 确保数据执行保护 (DEP) 已启用
    • 使用托管服务帐户(Windows 7 或 Windows Server 2008 R2 及更高版本)
    • 从绝对最低权限开始,只有在绝对需要时才添加更多权限。我的意思是文件系统 privs 和用户权限分配(本地安全策略或组策略)
    • 使用微软的Process Monitor诊断权限问题(实验时^^^)
    • 确保服务器已打补丁(至少是安全补丁,通过 WSUS)
    • 如果您安装了 3rd 方软件,请也对其进行修补。
    • 卸载Java。除非你真的需要它。修补它。然后再次打补丁,因为您应用的补丁没有修复 Oracle 所说的故障。抱歉,Oracle 毁了 Sun Java!
    • 使您的硬件供应商的系统软件保持最新(BIOS、设备驱动程序等)
    • 使用 Windows 审核来监控您的新闪亮帐户的活动。
    • 在中央某处转发事件。
    • 每天检查转发的事件或至少配置触发器以在必要时发出警报。
    • 启用 Windows 防火墙(很遗憾,但有很多人将其关闭)
    • 确保备份您的服务器,这样即使发生最坏的情况,您也可以保留数据。
    • 制定一个计划,如果最坏的情况真的发生了,你会怎么做。
    • 不允许您的服务器访问 Internet。同样,我无法相信我去过的所有服务器都可以通过 HTTP(S) 访问互联网的数据中心的数量。有些人需要被拉到一边聊天。

    重要的是要记住,没有完全安全的操作系统、应用程序或网络这样的东西。这一切都与预防层有关,并在事情看起来不同时进行识别。也不要在入侵检测上出卖,当然,除非您 a) 容易受到炒作推销的影响,b) 您手上有很多空闲时间,并且 c) 有很多空闲 $$$。

    最后,当今最狡猾的“攻击”与破坏无关;恰恰相反。重点(和资金!)已转向数据泄露。

    • 4
  3. Michael Hampton
    2013-05-16T08:14:17+08:002013-05-16T08:14:17+08:00

    在 Linux 世界中,我们会使用 SELinux或其他强制访问控制机制来减轻这种威胁。

    Windows 没有那么强大的功能,但自 Vista/2008 以来,它确实具有您可以使用的基本完整性机制。(虽然,这有一个相当高的学习曲线,并且完整地解释它需要比这里允许的更多的长度。)

    我认为最好的短期缓解措施是将服务隔离在虚拟机中。

    • 2
  4. Greg Askew
    2013-05-16T10:27:45+08:002013-05-16T10:27:45+08:00

    如果“执行任意代码”意味着进程可以创建目录,则它们可能会在当前目录、服务帐户的用户配置文件目录、C:\ 驱动器的根目录中创建目录,或者只是搜索一个目录它可以在哪里创建目录。

    上次我查看时,Windows 通常授予在 C: 根目录中创建目录的权限。由于您需要查看高级属性页面或使用 ICACLS 获取完整的权限列表,因此您可能不会在 gui 中看到它。

    即使 C:\ 根目录权限已被强化,搜索 C:\ 上的所有目录并测试权限允许服务帐户创建目录的目录也是微不足道的。很有可能会有一个。

    如果进程利用可以在 C: 的某处创建目录,那么通过创建数百万或数十亿个空目录/子目录来禁用系统是相当简单的。

    空目录是零字节,因此不受配额限制。这些目录也直接存储在 MFT 中(由于它们的体积小),因此即使可以停止进程并删除目录,MFT 也实际上是垃圾 - 太大和/或碎片化以至于系统可能需要恢复从备份。

    • 2
  5. Nathan C
    2013-05-16T08:01:55+08:002013-05-16T08:01:55+08:00

    对所有进程使用 DEP。它会阻止大多数人,但是有很多漏洞无论如何都可以击败 DEP。

    • 1
  6. Snellgrove
    2013-05-18T00:26:57+08:002013-05-18T00:26:57+08:00

    必须从头开始防止滥用 - 没有必要对攻击面很大的不安全服务器上的帐户这样做

    所以;

    1)确保服务器已打补丁。

    2)可以使用SCW(Security Config Wizard)来加固服务器。它将比大多数管理员做得更快更好。

    它允许您撤消所做的更改,但它只会撤消一步。所以如果你运行它,锁定东西然后再次运行它(即如果你错过了什么)然后你发现有东西坏了,如果它在第一次锁定期间坏了,你不能轻易撤消它(必须做它手动)

    因此,在运行并应用它之后,彻底测试功能。

    3)然后,确保您使用的帐户不是管理员、超级用户等,并且他们只有 NTFS 权限来完成他们需要做的最少的事情——没有别的。

    4) 您还可以使用本地安全策略(或域策略,如果服务器是域成员)来锁定 GUI 的其他方面。

    • 1
  7. MattPark
    2013-05-16T07:32:18+08:002013-05-16T07:32:18+08:00

    您当然可以尝试创建一个安全用户,类似于无法登录的 Windows 附带的用户,并且只能访问机器上的某些文件。缺点是特权升级漏洞可能会根据情况对该用户起作用。

    在 linux 中,我们将这样的 chroot 监狱进程和服务作为安全缓解策略的一部分。我不是 Windows 专家,但您将如何在 Windows 中执行此操作?

    要将服务放入沙箱,您可以做的一件事是在 VM 中运行它。 Virtualbox是我的选择,因为如果你愿意,你甚至可以将它安装在同一个盒子上,并让它从服务器开始,甚至是无头的,所以它几乎可以像服务一样运行。它也是免费的。漏洞很难逃脱您的 VM。这种方法的缺点是您将运行另一个完整的窗口实例,它本身需要保持最新并且会消耗资源。

    另一件可行的事情是使用专用的沙盒程序,例如sandboxie,它可以将任何进程沙盒化,以使其在受到威胁时更难逃脱。

    • 0

相关问题

  • OpenSSH 漏洞 [重复]

  • 选择什么安全套件?

  • 安全地授予对 SQL 2005 复制监视器的访问权限以创建快照

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve