È possibile stimare l'uptime dei server Windows da remoto?

3

Sto lavorando all'analisi della sicurezza di un sistema e alcune delle sue misure di sicurezza si basano sulla proprietà Environment.TickCount esposta da .NET Framework. Come affermato da Microsoft:

Because the value of the TickCount property value is a 32-bit signed integer, if the system runs continuously, TickCount will increment from zero to Int32.MaxValue for approximately 24.9 days, then jump to Int32.MinValue, which is a negative number, then increment back to zero during the next 24.9 days. You can work around this issue by calling the Windows GetTickCount function, which resets to zero after approximately 49.7 days, or by calling the GetTickCount64 function.

Quindi, quando si conosce l'uptime stimato del server, si potrebbe stimare approssimativamente il valore di Environment.TickCount . Ciò indebolirebbe significativamente la sicurezza del sistema. Un attacco a forza bruta sulla gamma completa dei possibili valori di TickCount richiederebbe circa 2 giorni e mezzo con la mia implementazione corrente (che non è molto lunga neanche), un valore di ballpark per scegliere un punto di partenza nello spazio-valore renderebbe questa ricerca è molto più efficiente.

Il server sta eseguendo il patch completo Windows Server 2012 R2 e l'unico servizio esposto sarebbe IIS che serve alcune pagine ASP.NET (forse IIS perde alcune di queste informazioni).

    
posta Jonas Köritz 04.12.2016 - 15:11
fonte

2 risposte

2

Timestamp TCP può potenzialmente essere utilizzato per stimare i tempi di attività per Windows 2012. Nmap usa ancora questa tecnica per ipotizzare i tempi di servizio.

La disattivazione di questa funzione può avere impatti sulle prestazioni, pertanto è spesso lasciata aperta.

    
risposta data 05.12.2016 - 22:41
fonte
-1

Se la domanda è come ottenere in remoto il tempo di attività del computer remoto quando si ha accesso al computer, è possibile ottenere queste informazioni direttamente da WMI in PowerShell. Ad esempio:

[Management.ManagementDateTimeConverter]::ToDateTime(
  (Get-WmiObject Win32_OperatingSystem -ComputerName computername).LastBootUpTime
)

Se la domanda è "come posso ottenere il tempo di attività esatto di una macchina Windows remota senza l'autenticazione su quella macchina remota", la risposta è "non puoi". (Sarebbe un'informazione non voluta.)

[Modifica: aggiunto il qualificatore "esatto" al paragrafo precedente. Potrebbe essere possibile stimare il tempo di attività utilizzando i timestamp TCP se l'amministratore non lo ha disabilitato.]

    
risposta data 05.12.2016 - 22:14
fonte

Leggi altre domande sui tag