最近,我想看看当我将本地时间更改为明显错误时会发生什么。我尝试了2218年,所以未来的200年。结果是:我再也无法访问任何网站了(尽管我没有尝试太多)。我收到此错误:



我想NET::ERR_CERT_DATE_INVALID表示HTTPs证书无效。但是通常有一个“高级”选项可以让我忽略它。这里不是。另外,我想知道为什么它说“您的时钟在前面”-如果chrome知道正确的时间,为什么不花这个时间进行比较?安全?如果攻击者可以任意更改系统时间,那么哪种攻击方式可以允许这样做?是否有报道说时间操纵是至关重要的部分?

评论

“如果chrome知道正确的时间,为什么不将其用于比较?” -我不知道它是如何检查的,但是未来200年显然是不正确的。在不知道实际正确数据是什么的情况下,有可能知道某事是不正确的。

chrome可能不知道正确的时间,但知道证书的有效性超出范围。

@积累正如我所说,我不必费心检查它是如何实现的。可能是如果它看到证书已过期10年以上,而只是假设您的时钟错误。

@Acccumulation也可以基于当前版本的发布日期。

@AndrolGenhald我猜想Chrome本身有一个内置了自己的时间服务器的时间查询。我敢肯定,它使用的是本地时间,但是如果Chrome中发生了网络时间查询以了解该时间,我不会感到惊讶不管当地时间怎么说,都是“真实”时间。

#1 楼


如果攻击者可以任意更改系统时间,那么哪种攻击方式可以允许这种攻击?


证书之外...

种子RNG不足br />
他们可能能够利用种子不足的随机数生成器。在更好的随机数接口认识到普通程序员无法提供好的种子之前,使用time作为种子经常发生。攻击者可以通过将系统时间设置为随机数生成器将产生所需输出的时间来利用此漏洞。

当然,攻击者只需等待所需的时间就可以节省很多麻烦时间。
UUIDv1和v2都取决于MAC地址和时间。可以发现MAC地址。能够设置时间意味着他们现在可以控制接下来分配哪个UUID。例如,他们可能能够为自己复制管理帐户的UUID。当然,UUIDv1和v2并不是安全的,它们只是唯一的。如果您想要安全且独特,请使用UUIDv4,但是有很多软件会不适当地使用UUIDv1和v2。的日子和时间。攻击者可能会花时间来操纵它。

许多系统都有在某些时间出现的维护窗口。攻击者可能会不断重置时间以保留在该窗口中的时间,并保持系统停机以进行维护。

如果周期性地发生资源密集型过程,则他们可能会浪费时间,从而使时间倍数进程同时运行。如果系统不限制并发进程数,则可能会淹没系统。

或者您可以采用其他方法并不断重置时间,以防止关键的维护过程运行。

看门狗

系统可能具有看门狗进程,这些看门狗进程寻找在一个时间窗口内发生的动作太多或太少。看门狗可以选择采取自动维护措施,例如重启机器或停止服务。攻击者可以操纵时间,使它看起来好像跳闸看门狗的速率太高或太低,并导致其停止工作。

评论


UUIDv4的来源:第4.4节

–马丁·托马
18/09/15在11:22

+1好答案,但我不确定我是否完全同意。 1)加密RNG是从时钟以外的其他事物中获得种子的,例如:先前的种子,磁盘IO事件,网络数据包事件,因此完全控制时钟不会完全控制种子。 2)即使UUIDv4也不是安全的:“ 4.4。从真正随机数或伪随机数创建UUID的算法”,因此,任何使用UUID作为客户端机密的软件都可能是不良软件。 3)关于定期作业和看门狗的要点,另一个很好的例子是提高时钟跳过防病毒程序的计划扫描。

– Mike Ounsworth
18/09/16在13:33

@MikeOunsworth当然,如果您做对了,前两个不是问题,但是... 1)随着时间的流逝,大量的代码会让您震惊。 2)很多软件都公开其UUID。

–施韦恩
18年9月16日在18:30

@Schwern好讨论! 1)srand并非声称是加密安全的RNG。 srand(time());例如,如果您要生成纹理贴图,那就很好了;如果人们正在使用srand来生成加密机密,那是一个问题。 2)我不确定为什么会出现问题?在我们的软件中,我们的安全模型基于以下假设:攻击者可以根据需要确定UUID值。因此,如果开发人员出于任何原因需要公开UUID,则无论如何。 UUID(与任何其他类型的ID一样)不应用作身份验证令牌。

– Mike Ounsworth
18-09-16在19:27



“在我们的软件中,我们的安全模型基于这样的假设:攻击者可以根据需要确定UUID值。”太好了很多软件没有。这些是利用常见的小型安全错误的攻击。

–施韦恩
18-09-16在19:32

#2 楼

您有很多疑问。


我想NET :: ERR_CERT_DATE_INVALID表示HTTPs证书无效。


是这是help.ubuntu.com的证书:



您会注意到它具有有效起始日期和有效截止日期;如果您尝试在这些日期之外访问受此证书保护的网站,则浏览器将抱怨。证书过期的原因是(除其他原因外)迫使网站管理员继续使用证书中的最新加密和其他新安全功能来获取新证书。

当您的浏览器尝试确定是否信任证书时,它使用系统时钟作为时间的权威。当然,它将尝试使用NTP,但如果您(管理员用户)明确告诉它NTP服务器有问题,那么您就是老板。



如果攻击者可以任意更改系统时间,那么哪种攻击方式可以允许这样做?


让我们分别考虑个人计算机和服务器。我在这里还没有做任何研究,就在我脑海中。

个人计算机


用户经常使用系统时钟玩游戏来转转“ 30天试用”类型的东西。如果您是其软件以这种方式被非法使用的公司,那么您会认为这是一个安全问题。
欺骗性网站。破解旧的过期证书要容易得多-也许它使用了10年的容易破解的加密货币,或者服务器在6年前就遭到了入侵,但是CA并没有这么长时间追踪撤销信息(理想情况是:@immibis'回答)。如果攻击者可以更改您的系统时钟,则您将看不到警告。

服务器


日志记录。在调查安全漏洞时,如果服务器的时钟不同步,则很难将所有日志汇总在一起以准确确定发生的情况和顺序。
登录名。 OTP 2因素验证之类的事情通常是基于时间的。如果一台服务器的时钟在另一台服务器后面,那么您可以观察到有人输入OTP代码,然后对后面的服务器使用它,因为该代码尚未过期。


评论


同样,显然,拒绝服务。如果服务器通过HTTPS使用某些第三方Web服务,则请求将开始失败,就像上面的浏览器一样。

– IMil
18-09-12的3:25

w.r.t.登录,不仅会影响OTP 2因素验证。 Kerberos要求计算机合理地同步(“防止重放攻击”)。例如,使用Kerberos的Windows域要求计算机彼此之间的距离不得超过5分钟(默认情况下),否则您将无法在该域上获得授权。

– davidbak
18 Sep 12'在5:35

在今年的DEF CON上提出的另一个问题是,有人可能注册了以前注册的网站,甚至可能仍然拥有前所有者可以访问的有效证书。到期日期可确保此期限不会无限期地持续下去。

–森林
18年9月12日在20:34

@ bradbury9也许吧。如果受害者使用的是最新的浏览器,浏览器将抱怨旧的加密货币(例如MD5 / SHA1)或缺少安全功能(证书透明性)。我可能是错的,但是我认为实际上是浏览器而不是CA决定了最长2年的最大证书有效期,而证书寿命最短的CA(让我们在3个月加密)完全免费。

– Mike Ounsworth
18/09/14在11:20



因“好,你是老板”而被投票。有时,无论安全系统多么出色,用户都可能成为自己最大的敌人。 :-)

–本
18/09/14在18:39

#3 楼

原因之一是证书到期后不保留证书吊销记录。

假设我10年前偷了Google的证书。 Google立即注意到并吊销了他们的证书。由于证书在过去10年中的某个时间到期,因此删除了注销条目。如果我将您的时钟设置为有效的10年,我可以假冒Google,并且您的浏览器不会注意到,因为它不知道它已被撤销。

评论


在我看来,您描述的是相反的问题。当您更改本地时间时,OP显示,浏览器接受更改并采取相应的措施。如果有这种行为,则使您描述的攻击成为可能,但似乎并不能阻止这种攻击。

–苏马
18/09/13在8:39

@Suma,出于安全目的,Chrome会始终使用用户计算机的时间。浏览器显示“此证书已于2018-12-09过期,当前是2218-08-06,因此该证书不受信任,因此需要证书错误页面”。确定需要证书错误页面后,Chrome会通过猜测问题的根本原因来尝试创建适当的页面。在这种情况下,Chrome猜测证书可能实际上没有使用200年,也许您的时钟不正确。因此,Chrome建议您更改时钟。


18-09-15在23:14

#4 楼

您的问题很广泛,但是如果攻击者可以更改本地系统时钟,那么他们可以中毒其活动日志。这样,他们可以隐藏自己的活动,使其看起来好像是在过去的某个时间发生过(可能超出了管理员正在寻找活动的窗口),或者与其他用户的活动保持一致。

例如,如果您在半夜闯入系统,则可以将时钟设置为前一天的中午,进行活动,然后将时钟重新设置。检查日志的任何人都将假定普通用户已执行该活动(或在普通用户的活动中根本看不到该活动)。

这就是为什么将时钟设置为与权威外部源同步很重要的原因。这样,所有来源的所有日志都可以正确关联。

评论


这不能解决为什么在这种特殊情况下时钟不同步是一个问题。

–奥斯汀·海梅加恩(Austin Hemmelgarn)
18/09/11在23:59

这是一个广泛的问题,我已经解决了一部分。

– schroeder♦
18-09-12在7:13

嗯...只有在涉及多个系统的情况下,这才是正确的,对吗?因为日志通常是逐行写的(附加到文本文件中)。这意味着攻击者可以“放慢时间”而不另行通知,但是如果攻击者“及时返回”(使日志条目不按时间顺序排列),则很容易发现他操纵时间的地方。

–马丁·托马
18-09-14在5:09

这也是为什么某些日志记录解决方案在条目中包含序列号的原因,或者例如,为什么Linux内核日志自启动以来使用秒数的原因。

–乔尔·科恩(Joel Coehoorn)
18-09-14在16:01



@schroeder for i在range(1,len(loglines))中:如果loglines [i] ['time']
–马丁·托马
18/09/15在11:12

#5 楼

在两种可能的情况下,一台认为是2038年的计算机试图连接到外部世界,而外部世界中的一切都表明它是2018年:


计算机的时钟是错误的。
实际上是2038年,似乎是外界在使用从2018年以来的20年以来被破解的证书伪造了一切。

尽管要进行这种形式的攻击非常困难,实际上在实践中第一种可能性要大得多,但是要防范第二种可能需要确认计算机时钟实际上是错误的。

评论


嗯您在哪里划界线?外界可以接受的差异是什么?

–马丁·托马
18-09-14在5:16

@MartinThoma:如果计算机的时钟在其证书有效的范围内,则证书可能有效。如果计算机的时钟不在该范围内,则可能(在某些情况下)证书实际上是有效的,并且仅是计算机的时钟有误,但是计算机无法确定任何外部时间服务器是否值得信赖在计算机报告的时间有效的证书。如果外部时间服务器始终报告“过去”的时间,则表明...

–超级猫
18/09/14在14:35

...有关计算机时钟将来的诊断将比显示所有证书已过期的消息更有用,但是应该允许用户查看以下消息:“您的计算机时钟说是2018年,但是每个人其他人说是2012年,然后说“是2018年;声称2012年的服务器有误-可能是故意的。”

–超级猫
18/09/14在14:38

因此,您的行是一个日历年。这意味着a年中错误的365天是可以的,但超过一日则不行。

–马丁·托马
18/09/14在15:06

@MartinThoma:什么时间可以接受将取决于计算机在任何特定时刻安装了哪些证书。

–超级猫
18/09/14在15:23

#6 楼

如果您运行的是单个Windows域控制器或其一部分网络,则时差只有五分钟或几分钟是至关重要的:Kerberos Time Tolerance

我曾经不得不处理失败的问题Windows SBS 2008 Server,必须找到一种以SYSTEM身份进入事件日志的方法。

事实证明,电源浪涌已将域控制器上的CMOS BIOS时钟复位,可追溯到几年前的系统设计日期。结果是无法发出Kerberos票证。

Kerberos票证仅在几分钟内有效。

#7 楼

另一个(略微复杂的)对系统时间滞后的计算机进行攻击的示例是,从由DNSSEC保护的区域提供过时的DNS记录。

例如,如果客户端要求输入www.example.com地址,则攻击者可以通过引荐其自己的DNS服务器和不存在(过期)DS记录证明来答复。 .com从example.com尚未签名的时间开始,随后为example.com区域中的任何内容提供伪造的DNS记录。

#8 楼

可以认为是伪造的,始终不同步计算机时钟可能有其优点和缺点。显而易见的是那些已经指出的内容。我对NTP枚举了解不多,但是它在渗透测试中使用,因此是考虑安全性的一个因素。 br />您的网络,这在使用Directory
服务时尤为重要。全世界有许多时间服务器
,可用于保持系统彼此同步。 > UDP端口123。通过NTP枚举,您可以收集诸如
之类的信息,例如连接到NTP服务器的主机列表,IP地址,系统名称,
以及网络中客户端系统上运行的OS。 br />信息可以通过查询NTP服务器来枚举。”来源:“ https://www.greycampus.com/opencampus/ethical-hacking/ntp-enumeration”


评论


该答案缺少对我有用的具体细节。如果网站不知道我的计算机上的本地时间,会带来什么危害?隐私问题如何?

–马丁·托马
18/09/11在20:24

如果您使用的是VPN或代理,并且系统使用的时区与IP应该使用的时区不同,那么任何人都将认为您使用的是VPN或代理。默认情况下,大多数代理和VPN无法隐藏操作系统的时钟,网站可以读取该时钟(因此,即使使用代理/ VPN,也指向您的住所,因此会破坏您的隐私)

–Devuan用户
18/09/11在20:47



@DevuanUser需要满足许多条件:1)网站必须根据位置查找您的IP并查找时区,2)页面上的javascript必须查询本地时间并将其发回到服务器,3)您的VPN必须与您所在的时区不同。这些是重要条件,因此不应在简短描述中加以掩盖。

– schroeder♦
18年9月11日在21:01

“一个优点是网站不会知道您的真实日期” –您的真实日期与其他人的真实日期相同。我们在同一个宇宙中,我们只有一个共同商定的时间流。像空间。 (锻炼:出于安全考虑,我将隐瞒我目前处于多少个维度。什么?您猜到了三个?该死!您怎么知道的?)

–通配符
'18 Sep 12'在0:35

无论客户端和服务器的设置如何,NTP协议仅以UTC交换时间戳。因此,NTP服务器最多可以获得的是来自某个IP的计算机在一定时期内处于不同步状态。具有讽刺意味的是,如果在固定时间段内始终不同步,即使IP地址更改后,数据也可以用于跟踪计算机。与定期同步的机器相比,该机器与该地区的其他机器具有相似的偏移时间。

– Martheen
18年9月12日在4:34

#9 楼

许多软件,尤其是在集群中运行的软件,时间同步非常重要。因此,如果有人在弄乱时间,那么在该系统上运行的软件将引起很多问题,尤其是同步问题。这最终将算作服务影响。

评论


欢迎!这看起来更像是评论,而不是完整的答案。我建议删除它并将其添加为对其他答案之一的评论,或者添加足够的信息以使其成为完整的答案。

–浏览
18-09-13在22:51

我认为撰写评论必须至少获得50分:stackoverflow.com/help/privileges

–马丁·托马
18-09-16在6:04