ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Lockdown Π² Ubuntu для ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π° UEFI Secure Boot

АндрСй Коновалов ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» способ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Lockdown, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠΉ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ с ядром Linux, поставляСмом Π² Ubuntu (тСорСтичСски ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ядром Fedora ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… дистрибутивов, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ протСстированы).

Lockdown ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ доступ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root ΠΊ ядру ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡƒΡ‚ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π° UEFI Secure Boot. НапримСр, Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ lockdown ограничиваСтся доступ ΠΊ /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΆΠΈΠΌΡƒ kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ интСрфСйсам ACPI ΠΈ MSR-рСгистрам CPU, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ kexec_file ΠΈ kexec_load, запрСщаСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² спящий Ρ€Π΅ΠΆΠΈΠΌ, лимитируСтся использованиС DMA для PCI-устройств, запрСщаСтся ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΊΠΎΠ΄Π° ACPI ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… EFI, Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ манипуляции с ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Π² Ρ‚ΠΎΠΌ числС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° прСрывания ΠΈ ΠΏΠΎΡ€Ρ‚Π° Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Lockdown Π½Π΅Π΄Π°Π²Π½ΠΎ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² основной состав ядра Linux 5.4, Π½ΠΎ Π² поставляСмых Π² дистрибутивах ядрах ΠΎΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ. Одним ΠΈΠ· ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ прСдоставляСмых Π² дистрибутивах надстроСк ΠΎΡ‚ встроСнной Π² ядро Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ прСдоставляСмой Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ физичСского доступа ΠΊ систСмС.

Π’ Ubuntu ΠΈ Fedora для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Lockdown прСдусмотрСна комбинация клавиш Alt+SysRq+X. ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Alt+SysRq+X ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ физичСском доступС ΠΊ устройству, Π° Π² случаС ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Π·Π»ΠΎΠΌΠ° ΠΈ получСния root-доступа Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ Π½Π΅ смоТСт ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Lockdown ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² ядро Π½Π΅Π·Π°Π²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с rootkit-ΠΎΠΌ.

АндрСй Коновалов ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ связанныС с использованиСм ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ подтвСрТдСния физичСского присутствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ нСэффСктивны. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ способом ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Lockdown Π±Ρ‹Π»Π° Π±Ρ‹ программная симуляция наТатия Alt+SysRq+X Ρ‡Π΅Ρ€Π΅Π· /dev/uinput, Π½ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½. ΠŸΡ€ΠΈ этом ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΅Ρ‰Ρ‘ Π΄Π²Π° способа подстановки Alt+SysRq+X.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ связан с использованиСм интСрфСйса «sysrq-trigger» — для симуляции достаточно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот интСрфСйс, записав «1» Π² /proc/sys/kernel/sysrq, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ «x» Π² /proc/sysrq-trigger. Указанная Π»Π°Π·Π΅ΠΉΠΊΠ° устранСна Π² Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒΡΠΊΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ядра Ubuntu ΠΈ Π² Fedora 31. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΊΠ°ΠΊ Π² случаС с /dev/uinput, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΈΠ·-Π·Π° ошибки Π² ΠΊΠΎΠ΄Π΅.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ связан с эмуляциСй ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· USB/IP ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Alt+SysRq+X с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π’ поставляСмом Π² Ubuntu ядрС USB/IP ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ (CONFIG_USBIP_VHCI_HCD=m ΠΈ CONFIG_USBIP_CORE=m) ΠΈ прСдоставлСны Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°Π²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью ΠΌΠΎΠ΄ΡƒΠ»ΠΈ usbip_core ΠΈ vhci_hcd. ΠΡ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ USB-устройство, запустив сСтСвой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° loopback-интСрфСйсС ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ΅ USB-устройство ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ USB/IP. Об ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ сообщСно Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ubuntu, Π½ΠΎ исправлСниС ΠΏΠΎΠΊΠ° Π½Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ΠΎ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru