当地时间对于安全有多重要?
你有一堆问题。
我猜 NET::ERR_CERT_DATE_INVALID 意味着 HTTPS 证书无效。
是的。
这是证书help.ubuntu.com
:
您会注意到它具有 Valid From 和 Valid Until 日期;如果您尝试在这些日期之外访问受此证书保护的网站,您的浏览器会抱怨。证书过期的原因是(除其他原因外)强制网站管理员使用证书中的最新加密和其他新安全功能不断获取新证书。
当您的浏览器试图确定它是否信任证书时,它会使用系统时钟作为时间的权威来源。当然,它会尝试使用 NTP,但如果你(管理员用户)明确告诉它 NTP 服务器是错误的,那么你就是老板。
如果攻击者可以任意更改系统时间,哪些攻击允许这样做?
让我们分别考虑个人计算机和服务器。我没有在这里做任何研究,只是在我的脑海中。
个人电脑
- 用户经常用他们的系统时钟玩游戏来绕过“30 天试用”类型的东西。如果您是其软件以这种方式被非法使用的公司,那么您会认为这是一个安全问题。
- 欺骗网站。破解旧的过期证书要容易得多——也许它使用了 10 年前很容易破解的加密货币,或者服务器可能在 6 年前被入侵,但 CA 不会跟踪这么长时间的撤销信息(想法信用:@immibis'回答)。如果攻击者可以更改您的系统时钟,那么您将看不到警告。
服务器
- 记录。在调查安全漏洞时,如果您的服务器时钟不同步,则可能很难将所有日志拼凑在一起以准确了解发生了什么以及发生的顺序。
- 登录。诸如 OTP 2 因素身份验证之类的事情通常是基于时间的。如果一台服务器的时钟落后于另一台服务器,那么您可以看到有人输入 OTP 代码,然后对后面的服务器使用它,因为该代码还没有过期。
原因之一是证书过期后没有保留证书吊销记录。
假设我 10 年前偷了 Google 的证书。谷歌立即注意到并撤销了他们的证书。由于证书在过去 10 年中的某个时间过期,因此删除了吊销条目。如果我将您的时钟拨回 10 年到有效时,我可以冒充 Google,您的浏览器不会注意到,因为它不会知道它已被撤销。
如果攻击者可以任意更改系统时间,哪些攻击允许这样做?
除了证书...
种子不良的 RNG
他们可能能够利用种子不良的随机数生成器。time
在更好的随机数接口意识到你的普通程序员不能被信任提供一个好的种子之前,经常使用作为种子。攻击者可以通过将系统时间设置为随机数生成器将产生所需输出的时间来利用这一点。
当然,攻击者只需等待合适的时间,就可以省去很多麻烦。
UUID
UUIDv1 和 v2 都取决于 MAC 地址和时间。可以发现 MAC 地址。能够设置时间意味着他们现在可以控制接下来分配哪个 UUID。例如,他们可能能够为自己复制管理帐户的 UUID。当然,UUIDv1 和 v2 并不意味着是安全的,它们只是意味着是唯一的。如果你想要安全和独特,你可以使用 UUIDv4,但是有很多软件不恰当地使用 UUIDv1 和 v2。
定期作业
许多系统具有在特定日期和时间定期运行的关键进程。攻击者可以利用时间来操纵它。
许多系统都有在特定时间出现的维护窗口。攻击者可以不断重置时间以保持在此窗口中并保持系统停机以进行维护。
如果有一个周期性发生的资源密集型进程,它们可能会扰乱时间,从而使多个这些进程同时运行。如果系统不限制同时处理的数量,这可能会淹没系统。
或者您可以采取其他方式并不断重置时间以防止关键维护过程运行。
监察者
系统可能有看门狗进程,它会寻找在一个时间窗口内发生的太多或太少的动作。看门狗可以选择采取自动维护措施,例如重新启动机器或停止服务。攻击者可以操纵时间,使其看起来好像速率太高或太低,从而使看门狗跳闸并导致其停止工作系统。
您的问题很广泛,但如果攻击者可以更改本地系统时钟,那么他们可以毒害他们的活动日志。这样,他们可以隐藏他们的活动,使其看起来像是在过去某个时间发生(并且可能超出了管理员正在寻找活动的窗口)或与其他用户的活动相吻合。
例如,如果您在半夜闯入系统,您可以将时钟设置为前一天中午,进行活动,然后将时钟调回。任何检查日志的人都会假设普通用户执行了该活动(或者在普通用户的活动中根本看不到它)。
这就是为什么将时钟设置为与权威的外部源同步很重要的原因。那就是所有来源的所有日志都可以正确关联。