Встроенный Linux: установка времени без NTP

Мне приходит на ум множество потенциальных возможностей:

  • Отказ в обслуживании: это может быть на вашей машине или, что более вероятно, используйте вашу машину для атаки второй на стоимость собственных ресурсов.
  • Майните биткойны. Использование вашего процессора для получения денег кажется достаточно привлекательным
  • . Если браузер уязвим, он попытается перенаправить вас на все виды сайтов, установить панели или показать всплывающие окна, которые принесут им доход. К счастью, в Linux это кажется сложнее, или спамеры не так хороши в этом.
  • Получите личные данные для коммерческого использования и продавайте их другим. Только для скомпрометированного пользователя: дата рождения, телефон, если он есть в кэше браузера.
  • Доступ к другим файлам на сервере, которые доступны для чтения.
  • Создавать вредоносные сценарии, которые могут запрашивать пароль root. Например, в вашем bash они могут попытаться перенаправить sudo на другие объекты, чтобы получить ваш пароль.
  • Получение сохраненных паролей в браузере или попытка ввести в журнал учетные данные банка. Это может быть сложнее, но, безусловно, будет опасно. С помощью Gmail они могут получить доступ к facebook, украсть ваш аккаунт Steam, Amazon и т. Д.
  • Установить вредоносные сертификаты как действительные для вашего пользователя

Конечно, это худший сценарий, так что не паникуйте. Некоторые из них могут быть заблокированы другими мерами безопасности и вовсе не будут тривиальными.

1
26.02.2019, 19:53
2 ответа

Мое решение состояло в том, чтобы писать напрямую в rtc, используя ioctrl. Вот реализация для тех, кто сталкивался с этим:

#include <linux/rtc.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>


int main(void)
{
  int fd;
  fd = open("/dev/rtc0",0);
  if (fd < 0)
    printf("Can't open rtc!");

  struct rtc_time time;

  time.tm_sec = 12;
  time.tm_min = 12;
  time.tm_hour = 7;
  time.tm_mday = 12;
  time.tm_mon = 7;
  time.tm_year = 118;

  if (ioctl(fd, RTC_SET_TIME, &time) < 0 )
    printf("Set rtc failed!");

  return 0;
}
0
27.01.2020, 23:41

Вы можете использовать hwclock, который должен быть встроенным в каждый встроенный дистрибутив Linux.

$hwclock— это -, поскольку имя команды предполагает -аппаратные часы , не зависящие от используемой ОС. В наши дни он использует маломощный -генератор, встроенный в материнскую плату, который отслеживает течение времени, даже когда машина выключена (использует батарею mb, которая будет работать долго)

Если hwclockнедоступен, есть другие альтернативы, которые я с удовольствием пройдусь, но hwclockдолжна быть вашей командой goto, если она доступна.

1
27.01.2020, 23:41

Теги

Похожие вопросы