Bagaimana bisa menembus ke mesin Linux apa pun melalui grub2 aman?

52

Bagaimana kemampuan seseorang yang memperoleh akses fisik ke komputer Anda untuk mendapatkan root dengan langkah-langkah itu dengan cara apa pun yang aman?

  1. Ketika menu grub2 terbuka tekan e untuk mengedit opsi mulai Linux
  2. Perubahan:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro   quiet splash" 
    

    untuk:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro init=/bin/bash"
    
  3. Sekarang Anda memiliki akses root, lakukan:

    mount -o remount,rw /
    passwd user
    mount -o remount,ro / 
    sync
    
  4. reboot komputer dan Anda menang.

Pertanyaan saya adalah, bagaimana bisa menembus mesin Linux apa pun melalui grub2 aman? Saya tidak mengerti fakta itu tentang Linux, terima kasih atas jawaban Anda.

Kopling
sumber
51
Siapa bilang akses fisik perlu dibuat tidak masuk akal? Ketika seseorang memiliki akses fisik -ALL- taruhannya adalah -OFF-. Pemilik mesin harus -ALWAYS- memiliki akses ke mesinnya ketika ia berada di sebelahnya. Kalau tidak, akan mungkin untuk menutupnya dengan cara tidak ada pemulihan.
Rinzwind
7
dan Anda dapat mengeluh tentang ini: tetapi bagaimana dengan menempelkan live dvd / usb ke dalam sistem? Atau mengeluarkan disk, memasukkannya ke komputer lain dan ddmemasukkan disk? Dan "linux"? Bekerja untuk sistem lain yang menggunakan grub juga ... windows di sisi lain ... ketika windows rusak ... Anda mungkin hanya dapat memformat sistem: P
Rinzwind
10
Agar aman sepenuhnya, Anda memerlukan solusi ini
Anwar
5
Oh tidak, kawan! @Clutchy menemukan rahasia kami. Kita semua harus minum kapsul sianida sekarang.
paulzag
3
@ Lubulag Dipahami, aku akan pergi memicu mekanisme self-destruct ruang server. Glory to RMS!
Kaz Wolfe

Jawaban:

108

Bagaimana kemampuan seseorang yang memperoleh akses fisik ke komputer Anda untuk mendapatkan root [menggunakan Grub / Bash] dengan cara apa pun aman?

Karena jika Linux memutuskan untuk mulai melakukan itu, peretas hanya akan mengeksploitasi celah keamanan lainnya. Aturan keamanan pertama adalah bahwa jika saya memiliki akses fisik ke sistem Anda, itu sudah berakhir. Saya telah menang.

Plus, bayangkan server X Anda rusak dan Anda tidak memiliki GUI lagi. Anda perlu boot ke konsol pemulihan untuk memperbaiki hal-hal, tetapi Anda tidak bisa, karena itu tidak aman. Dalam hal ini, Anda dibiarkan dengan sistem yang benar-benar rusak, tapi hei, setidaknya itu "aman!"

Tapi Kaz, bagaimana ini mungkin? Saya menetapkan kata sandi pada Grub saya sehingga Anda tidak dapat mengubah saya initmenjadi Bash!

Oh, benar, benar? Menarik, karena ini terlihat seperti album foto Anda. GRUB tidak memiliki faktor keamanan bawaan apa pun. Itu hanya bootloader , bukan langkah dalam beberapa boot aman dan rantai otentikasi. "Kata sandi" yang Anda atur sebenarnya cukup mudah untuk dilewati.

Itu, dan apa sysadmin tidak membawa boot drive pada mereka untuk keadaan darurat?

Tapi bagaimana caranya?! Anda tidak tahu kata sandi saya (yang sama sekali bukan P@ssw0rdbtw)

Ya, tapi itu tidak menghentikan saya dari membuka komputer Anda dan mengeluarkan hard drive Anda. Dari sana, beberapa langkah mudah untuk memasang drive Anda di komputer saya, memberi saya akses ke semua sistem Anda. Ini juga memiliki manfaat luar biasa dengan melewati kata sandi BIOS Anda. Itu, atau saya bisa saja mengatur ulang CMOS Anda. Entah / atau.

Jadi ... bagaimana saya tidak membiarkan Anda mendapatkan akses ke data saya?

Sederhana. Jauhkan komputer Anda dari saya. Jika saya bisa menyentuhnya, mengakses keyboard, memasukkan flash drive saya sendiri, atau memisahkannya, saya bisa menang.

Jadi, bisakah saya hanya suka meletakkan komputer saya di pusat data atau sesuatu? Itu cukup aman, bukan?

Ya mereka. Tapi, Anda lupa bahwa manusia juga bisa diretas, dan diberi cukup waktu dan persiapan, saya mungkin bisa masuk ke pusat data itu dan menyedot semua data manis dan manis itu dari komputer Anda. Tapi saya ngelantur. Kami sedang berhadapan dengan solusi nyata di sini.

Oke, jadi kamu menyebut gertakan saya. Saya tidak bisa memasukkannya ke pusat data. Bisakah saya mengenkripsi folder rumah saya atau sesuatu?

Tentu kamu bisa! Ini komputer Anda! Akankah ini membantu menghentikan saya? Tidak sedikit pun. Saya bisa mengganti sesuatu yang penting, seperti /usr/bin/firefoxdengan program jahat saya sendiri. Lain kali Anda membuka Firefox, semua data rahasia Anda disedot ke beberapa server rahasia di suatu tempat rahasia. Dan Anda bahkan tidak akan tahu. Atau, jika saya sering mengakses mesin Anda, saya cukup mengatur folder rumah Anda untuk disalin /usr/share/nonsecrets/home/atau lokasi serupa (non-terenkripsi).

Oke, bagaimana dengan enkripsi disk penuh?

Itu ... sebenarnya cukup bagus. Namun, itu belum sempurna! Saya selalu dapat melakukan Serangan Boot Dingin menggunakan kaleng udara terkompresi saya yang terpercaya. Atau, saya bisa pasang keylogger perangkat keras ke komputer Anda. Yang satu jelas lebih mudah dari yang lain, tetapi caranya tidak terlalu penting.

Dalam sebagian besar kasus, ini adalah tempat pemberhentian yang bagus. Mungkin memasangkannya dengan TPM (dibahas di bawah), dan Anda emas. Kecuali Anda membuat marah agen tiga huruf atau peretas yang sangat termotivasi, tidak ada yang akan melalui upaya yang diperlukan melewati tahap ini.

Tentu saja, saya masih bisa membuat Anda menginstal beberapa malware / backdoors dengan menawarkan PPA atau sejenisnya, tetapi ini masuk ke bidang kepercayaan pengguna yang sangat keruh.

Jadi ... bagaimana iPhone begitu aman? Bahkan dengan akses fisik, tidak banyak yang dapat Anda lakukan.

Ya dan tidak. Maksud saya, jika saya cukup termotivasi, saya bisa membaca chip flash dan mendapatkan semua yang saya butuhkan. Tapi, iPhone pada dasarnya berbeda karena mereka sepenuhnya terkunci. Tetapi, pada saat yang sama, Anda benar-benar mengorbankan kegunaan dan kemampuan untuk pulih dari kegagalan bencana. GRUB (kecuali bila dirancang secara khusus) tidak dimaksudkan sebagai rantai dalam sistem keamanan. Bahkan, sebagian besar sistem Linux memiliki rantai keamanan mereka mulai pasca-boot, jadi setelah GRUB selesai melakukan hal itu.

Plus, iPhone memiliki penegakan tanda tangan kriptografis (juga dibahas di bawah), yang membuatnya sangat sulit bagi malware untuk menyelinap ke ponsel Anda melalui jalur yang sah.

Tapi bagaimana dengan TPM / SmartCards / [masukkan crypto tech di sini]?

Nah, sekarang Anda memasangkan keamanan fisik ke dalam persamaan, itu menjadi lebih rumit lagi. Tapi, ini sebenarnya bukan solusi karena TPM relatif lemah dan semua enkripsi tidak terjadi pada chip. Jika TPM Anda (entah bagaimana) cukup kuat di mana ia melakukan enkripsi pada chip itu sendiri (beberapa hard drive yang sangat mewah memiliki sesuatu seperti ini), kuncinya tidak akan pernah terungkap dan hal-hal seperti serangan cold-boot tidak mungkin. Namun, kunci (atau data mentah) mungkin masih ada di bus sistem, yang berarti mereka dapat dicegat.

Meski begitu, keylogger perangkat keras saya masih bisa mendapatkan kata sandi Anda, dan saya dapat dengan mudah memuat beberapa malware ke komputer Anda seperti yang dieksploitasi Firefox yang saya sebutkan sebelumnya. Yang saya butuhkan adalah Anda meninggalkan rumah / komputer Anda selama satu jam.

Sekarang, jika Anda membawa TPM / smartcard / apa pun bersama Anda, dan semua enkripsi sebenarnya dilakukan pada chip (artinya kunci Anda tidak disimpan dalam RAM sama sekali), maka hampir tidak mungkin bagi saya untuk masuk semua, kecuali Anda (pengguna) tergelincir dan lupa sesuatu. Yaitu, kecuali saya menemukan cara untuk membaca kunci (tidak terenkripsi) dari bus sistem.

Tetapi bagaimana jika saya memiliki beberapa bentuk penegakan tanda tangan kriptografi / digital pada semua program saya untuk memastikan mereka sah?

Seperti yang ditunjukkan oleh berbagai perusahaan ponsel pintar, ini adalah cara yang sangat baik untuk menangani keamanan. Anda sekarang telah membatalkan kemampuan saya untuk menyuntikkan beberapa kode ke mesin Anda untuk melakukan hal-hal jahat, yang merupakan nilai tambah. Secara efektif, Anda telah menonaktifkan kemampuan saya untuk mempertahankan akses tetap ke mesin Anda dari jarak jauh, yang merupakan nilai tambah besar.

Namun, ini masih bukan metode yang sempurna! Penegakan tanda tangan digital tidak akan menghentikan keylogger perangkat keras. Itu juga harus sepenuhnya bebas bug, artinya tidak ada cara saya dapat menemukan exploit yang memungkinkan saya memuat sertifikat saya sendiri ke toko sertifikat mesin Anda. Lebih jauh, ini berarti setiap executable di sistem Anda perlu ditandatangani . Kecuali jika Anda ingin secara manual melalui dan melakukan semua itu, akan sangat sulit untuk menemukan paket Apt dan sejenisnya yang memiliki tanda tangan digital pada semuanya. Dalam nada yang sama, ini memblokir penggunaan yang sah untuk executable yang tidak ditandatangani, yaitu pemulihan. Bagaimana jika Anda memecahkan sesuatu yang penting, dan Anda tidak memiliki (ditandatangani) yang dapat dieksekusi untuk memperbaikinya? Nah, itulah sistem Anda.

Bagaimanapun, upaya untuk melakukan ini di Linux pada dasarnya sudah ditinggalkan dan tidak lagi berfungsi untuk kernel baru, jadi Anda harus membuatnya sendiri.

Jadi, tidak mungkin untuk membuat Anda keluar dari komputer saya?

Secara efektif, ya, maaf. Jika saya memiliki akses fisik dan motivasi yang cukup, selalu mungkin untuk masuk ke sistem. Tidak ada pengecualian.

Pada kenyataannya, sebagian besar orang jahat tidak akan berusaha sejauh ini hanya untuk beberapa gambar kucing. Biasanya, hanya enkripsi disk penuh (atau bahkan hanya menjalankan Linux!) Sudah cukup untuk mencegah sebagian besar skrip kiddies memiliki ketenaran dua detik.

TL; DR: Jangan biarkan orang yang tidak Anda percayai dekat komputer Anda. Itu biasanya cukup baik.

Kaz Wolfe
sumber
Atau hanya mengenkripsi partisi rumah Anda.
user13161
5
@ user13161 Ini masih memungkinkan entitas jahat mengganti sesuatu seperti /bin/bashdengan skrip jahat mereka sendiri, yang akan melakukan Hal-Hal Buruk dengan folder rumah yang tidak dienkripsi.
Kaz Wolfe
GRUB memungkinkan Anda menggunakan partisi boot terenkripsi LUKS, di mana skenario kata sandi untuk boot tidak dapat dilewati. Lihat wiki.archlinux.org/index.php/Dm-crypt/… .
v7d8dpo4
@ v7d8dpo4: Enkripsi /bootsebenarnya adalah imo yang tidak berguna. Ini akan menambahkan kata sandi boot, tetapi Anda masih harus mendekripsi /untuk benar-benar melakukan sesuatu yang bermanfaat, jadi Anda hanya menambahkan beberapa overhead tambahan untuk sedikit atau tanpa manfaat. Plus, saya bisa menggunakan disk Grub saya sendiri untuk mem-bypass boot terenkripsi Anda jika hanya /boot dilindungi. Atau saya bisa membaca drive seperti biasa.
Kaz Wolfe
2
iPhone (6 dan seterusnya, saya pikir) tidak hanya memiliki enkripsi "disk" penuh, tetapi juga terhubung dengan kode PIN / biometrik. Jadi jika Anda ingin komputer Anda menolak untuk boot tanpa intervensi, Anda juga dapat mengikat enkripsi disk-nya ke modul token / password / TPM perangkat keras. Cukup banyak pekerjaan.
pjc50
17

Jika Anda ingin menggunakan kata sandi . Dari tautan:

GRUB 2 Catatan Perlindungan Kata Sandi

Grub 2 dapat menetapkan persyaratan kata sandi pada:

  • Semua menuentries
  • Menuentries tertentu
  • Untuk pengguna tertentu: Misalnya, pengguna "Jane" dapat mengakses Ubuntu tetapi bukan mode pemulihan Windows, yang hanya dapat diakses oleh "John", superuser.
  • Administrator harus mengaktifkan perlindungan kata sandi secara manual dengan mengedit file sistem GRUB 2.

  • Pengguna dan kata sandi harus diidentifikasi dalam /etc/grub.d/00_headerfile skrip GRUB 2 atau yang lain.

  • Kecuali diinginkan perlindungan universal dari semua menuentries, entri spesifik harus diidentifikasi:

    • Secara manual dengan mengedit /etc/grub.d/skrip Grub 2 seperti 10_linuxdan30_os-prober
    • Secara manual dengan mengedit file konfigurasi khusus yang dibuat oleh pengguna.

    • Salah satu dari metode di atas memungkinkan GRUB 2 untuk secara otomatis menambahkan persyaratan kata sandi ke file konfigurasi (grub.cfg) setiap kali pembaruan-grub dijalankan.

    • Secara manual dengan mengedit /boot/grub/grub.cfg. Suntingan ke file ini akan dihapus ketika update-grubdijalankan dan perlindungan kata sandi akan hilang.

  • Jika segala bentuk perlindungan kata sandi GRUB 2 diaktifkan, nama dan kata sandi superuser diperlukan untuk mendapatkan akses ke baris perintah GRUB 2 dan mode pengeditan menu.

  • Nama pengguna dan / atau kata sandi tidak harus sama dengan nama login / kata sandi Ubuntu.
  • Kecuali jika fitur enkripsi kata sandi GRUB 2 digunakan, kata sandi disimpan sebagai teks biasa dalam file yang dapat dibaca. Lihat bagian Enkripsi Kata Sandi untuk panduan tentang cara menggunakan fitur ini.

Secara default (!) Dalam hal ini kegunaan melampaui keamanan. Jika Anda tidak dapat mempercayai orang-orang yang ada di sekitar Anda, bawalah mesin bersama Anda setiap saat. Orang yang membutuhkan lebih banyak keamanan cenderung untuk mengenkripsi seluruh sistem mereka sehingga kebutuhan akan kata sandi wajib.

Rinzwind
sumber
Jujur saja, kata sandi itu dapat dengan mudah dilewati dengan akses fisik. Mereka melindungi sistem dari noobs, tetapi tidak dari penyerang dengan beberapa keterampilan dasar (menggunakan google mungkin sudah cukup) dan akses fisik.
Byte Commander
3

Retas yang disengaja Anda mulai dengan ini:

  1. Ketika menu grub2 terbuka tekan 'e' untuk mengedit opsi mulai linux

Tetapi Anda dapat melindungi kata sandi eopsi seperti yang dibahas di sini: Cara menambahkan perlindungan kata sandi GRUB ke proses pemuatan OS alih-alih saat mengedit opsi boot

Anda dapat mengambil langkah ekstra mengenkripsi kata sandi grub seperti yang dibahas dalam tautan. Memang dengan mungkin 3% dari populasi (tebakan liar) menggunakan Linux / Ubuntu di rumah itu adalah ide yang baik untuk Administrator Sistem untuk melindungi terhadap efungsi pada sistem produksi di tempat kerja. Saya membayangkan jika Ubuntu digunakan di tempat kerja maka 30 hingga 40% akan menggunakannya di rumah juga dan mungkin 10% dari mereka akan belajar bagaimana melakukan hal itu epada sistem rumah mereka.

Berkat pertanyaan Anda, mereka baru saja belajar lebih banyak. Dengan tautan di atas, Administrator Sistem memiliki tugas lain di daftar tugas mereka untuk melindungi lingkungan produksi.

WinEunuuchs2Unix
sumber
1
Jujur saja, kata sandi itu dapat dengan mudah dilewati dengan akses fisik. Mereka melindungi sistem dari noobs, tetapi tidak dari penyerang dengan beberapa keterampilan dasar (menggunakan google mungkin sudah cukup) dan akses fisik.
Byte Commander
@ByteCommander Ini semua tentang akses fisik. BIOS dapat diatur dengan kata sandi administrator sehingga tidak pernah bisa boot dari USB, atau DVD. Seseorang dapat membuka kasing, pendek dua pin pada motherboard dan kata sandi diatur ulang ke kosong (tidak ada kata sandi yang diperlukan untuk mengubah urutan boot BIOS).
WinEunuuchs2Unix
0

Agar grub aman, Anda perlu melindungi aksesnya. Ini dapat dilakukan hanya dengan kata sandi hard disk, dan saya berbicara di sini tentang keamanan disk tempat disk disimpan dalam firmware disk itu sendiri. Disk tidak dapat dibaca atau ditulis. Karenanya tidak hanya grub tidak dapat diakses tanpa kata sandi, data Anda juga.

Karena kata sandi disimpan di disk itu sendiri, memindahkannya ke sistem lain tidak akan membantu peretas.

Ada perangkat lunak di sekitar yang dapat menghapus kata sandi dari beberapa disk pabrik, tetapi juga secara efektif menyeka disk. Jadi data Anda masih aman.

Scooby-2
sumber
Komentar terlambat, tetapi saya ingin menunjukkan bahwa ini kadang-kadang dapat dikalahkan dengan cara sederhana. Mungkin ada beberapa perintah pabrikan (didokumentasikan) untuk menghapus kata sandi HDD tanpa memicu format. Demikian pula, saya mungkin bisa hanya "meminjam" piring-piring hard drive dan meletakkannya di controller saya sendiri - kata sandinya (biasanya) disimpan di NVRAM pengontrol, bukan pada piring itu sendiri.
Kaz Wolfe
@ Ka, kamu benar sekali dalam apa yang kamu katakan, tetapi penekanan harus diberikan pada kata "sesekali" dalam kalimatmu "ini sesekali dapat dikalahkan dengan cara sederhana." Karena teknologi hard drive terus meningkat, bertentangan dengan apa yang Anda katakan, hampir semua produsen sekarang menyimpan firmware dan kata sandi mereka pada piringan sehingga mengubah kartu pengontrol tidak akan membantu. Ada perangkat lunak di sekitar untuk membuka kunci drive tanpa menghapus data, tetapi hanya berfungsi pada drive lama.
Scooby-2