dapatkah kami mengetahui kata sandi untuk pengguna lain jika kami memiliki akses root?

24

Jika seseorang memiliki akses root ke mesin RHEL tertentu, apakah mereka dapat mengambil kata sandi pengguna lain?

monu
sumber
4
Ya Anda bisa, mereka bisa membaginya dengan Anda ditanya dengan baik :) dengan kata lain, pertanyaan Anda tidak tepat dimasukkan.
poige

Jawaban:

37

TL; DR: Tidak, kata sandi disimpan sebagai hash yang (secara umum) tidak dapat dipulihkan.

Linux tidak menyimpan kata sandi teks biasa di mana pun secara default . Mereka hash atau dienkripsi melalui berbagai algoritma. Jadi, secara umum, tidak, ini tidak mungkin dengan data yang disimpan.

Jika Anda memiliki kata sandi yang disimpan di tempat lain selain dari /etc/passwdbasis data, kata sandi tersebut dapat disimpan dengan cara yang memungkinkan hal ini. htpasswdfile dapat berisi kata sandi terenkripsi yang lemah, dan aplikasi lain mungkin menyimpan hash yang lebih lemah atau kata sandi teks biasa karena berbagai alasan (biasanya buruk).

Selain itu, file konfigurasi pengguna dapat berisi kata sandi yang tidak dienkripsi atau kata sandi yang dilindungi dengan lemah karena berbagai alasan - mengambil surat mengambil konten dari layanan lain .netrc,, atau hal-hal sederhana yang otomatis dapat mencakup kata sandi.

Jika kata sandi di-hash atau dienkripsi dengan algoritma yang lebih tua dan lemah (3DES, MD5) akan mungkin untuk bekerja dengan efisien / murah apa kata sandinya - meskipun dengan menyerang data daripada hanya membalikkan transformasi. (mis: hal-hal seperti http://project-rainbowcrack.com/ atau http://www.openwall.com/john/ )

Karena Anda root, Anda juga dapat menyerang kata sandi pengguna di tingkat lain - ganti biner login, atau sudo, atau bagian dari PAM, dll, dengan sesuatu yang akan menangkap kata sandi ketika dimasukkan.

Jadi, secara khusus, tidak, tetapi secara umum memiliki akses root tidak membuatnya lebih mudah untuk mendapatkan rincian pengguna melalui berbagai saluran samping.

Daniel Pittman
sumber
1
Info lebih lanjut di Wikipedia: /etc/shadow, fungsi hash kriptografi , garam dan password cracking
Tim
2
Ini adalah jawaban yang bagus untuk sebagian besar, namun 3DES dan MD5 pada kenyataannya tidak secara signifikan lebih lemah daripada algoritma lainnya. Brute force masih satu-satunya metode untuk menemukan kata sandi dari hash ( tabel pelangi adalah cara untuk mempercepat metode brute force untuk algoritma apa pun, bukan kelemahan MD5). Apa yang meningkatkan metode hash untuk kata sandi adalah lambat dan menggunakan cukup banyak garam.
Gilles 'SO- berhenti bersikap jahat'
13

Berbeda dengan beberapa jawaban lain di sini, saya akan mengatakan bahwa jawaban sederhana, untuk ini dan banyak pertanyaan lain yang berakhir dengan "jika Anda memiliki root" adalah YA.

Pada dasarnya, root dapat melakukan apa saja pada mesin yang dapat dilakukan oleh sistem itu sendiri. Sistem dapat menerima kata sandi Anda, jadi root dapat menerima kata sandi Anda, atau miliknya sendiri, dengan usaha yang cukup. Lebih penting lagi, dia dapat dengan mudah mengubah kata sandi Anda, atau MENJADI Anda.

Secara khusus, kata sandi biasanya dienkripsi. Ini biasanya semacam algoritma yang disebut "satu arah", yang menghasilkan angka (hash) yang dapat digunakan untuk memeriksa kata sandi, tetapi umumnya tidak membalikkan nomor dan mendapatkan kata sandi kembali. Jadi, ini bukan masalah hanya membaca file untuk mendapatkan kata sandi seseorang.

Yang mengatakan, Anda BISA membaca riwayat shell mereka, dan riwayat login, di mana mereka kemungkinan besar mengetikkan kata sandi mereka alih-alih nama pengguna mereka, atau mengetiknya di shell bukannya pada prompt kata sandi. Dalam hal ini, itu AKAN menjadi teks biasa. Ini sangat umum pada terminal berbasis teks, tanpa solusi yang baik yang saya ketahui.

Namun, meskipun mengesampingkan masalah itu, enkripsi "satu arah" tidak benar-benar satu arah. Ada banyak alat di sekitar yang akan melalui banyak kombinasi frasa sandi, mengenkripsi mereka dengan proses satu arah yang sama, sampai Anda menemukan yang cocok. Mereka kemudian mengetahui kata sandi yang akan mendapatkan akses (meskipun sebagai root, mereka SUDAH memiliki akses, pada mesin ITU).

Lebih buruk lagi, ada tabel pelangi, yang merupakan jawaban prakiraan untuk proses di atas: orang-orang telah menghasilkan kata sandi asli yang berasal dari kata sandi terenkripsi yang diberikan. Menggunakan ini, ini adalah pencarian sederhana - tidak ada upaya retak memakan waktu.

Sekali lagi, akses tingkat root adalah hal yang harus dilindungi. Dengan kompromi itu, seluruh mesin, dan semua yang ada di dalamnya dikompromikan. Saatnya memulai, termasuk memberi tahu semua pengguna Anda bahwa bisnis Anda tidak lagi dapat dipercaya untuk melindungi privasi mereka. Dan, ya, itu bisa berarti keluar dari bisnis.


sumber
Mendapatkan akses ke akun saya berbeda dengan mendapatkan kata sandi saya. Jika Anda mengizinkan saya pengguna login ke mesin Anda dan saya (bodoh tapi umum) menggunakan kata sandi yang sama untuk semua mesin, Anda tidak memiliki akses ke semua mesin hanya b / c Anda dapat mengubah kata sandi saya di mesin Anda. Saya baru saja dikunci dari satu akun.
emory
Selain itu, jika menggunakan sistem file terenkripsi untuk data sensitif, kompromi akses root tidak menyiratkan waktu untuk memulai kembali.
emory
@emory Jika Anda menggunakan sistem file terenkripsi dan sistem di-root-kan, maka dapatkah Anda mempercayai kode yang berhubungan dengan sistem file terenkripsi, membaca frasa sandi enkripsi, dll.? Saya akan mengatakan bahwa Anda tidak bisa, karena menurut definisi, kompromi root-privilege berarti semua yang ada di sistem (hingga kernel) siap untuk diperebutkan.
CVn
@ MichaelKjörling Dapatkah saya mempercayai kode yang berkaitan dengan sistem file terenkripsi? Dalam kebanyakan kasus, tidak. Dalam kasus saya, ya. Itu ditempatkan di media read-only. Root tidak bisa menulis padanya. Log masuk ke drive WORM. Sama saja, saya tidak membagikan kunci untuk root dan mungkin akan memulai dari awal.
emory
8

Jika sudah, rootAnda dapat menjalankan cracker kata sandi /etc/shadow(dengan asumsi kata sandi lokal dan bukan LDAP atau Kerberos, dll.). Ini mungkin tidak efektif jika mereka memilih kata sandi yang baik dan sistem dikonfigurasikan untuk menggunakan hashing kata sandi yang kuat. Tetapi kata sandi sistem tidak disimpan dalam plaintext; kata sandi bahkan tidak tersedia secara langsung untuk root.

geekosaurus
sumber
5

Semua kata sandi disimpan dalam /etc/shadowfile. Anda dapat membuka file ini menggunakan akses root dan melihat hash valuekata sandi ini untuk setiap pengguna (bahkan pengguna root).

Kecuali Anda memiliki perangkat lunak pengurai kata sandi apa pun, Anda tidak dapat mengonversi nilai hash ini kembali ke teks normal.

Namun tetap saja jika Anda memiliki akses ke pengguna root, Anda dapat mengubah kata sandi pengguna normal dengan menggunakan perintah berikut dan mengakses akun mereka.

root@localhost$ passwd pradeep

Ini akan meminta Anda untuk passwd baru yang ingin Anda atur untuk pengguna pradeep. Dengan cara ini Anda dapat mengubah passwd untuk pradeep.

Sekarang Anda dapat mengakses dari akunnya dengan:

root@localhost$ su pradeep

Ini akan menghasilkan peralihan ke pengguna pradeep dan Anda akan mendapatkan terminal seperti ini:

pradeep@localhost$

pradeepchhetri
sumber
1
Anda dapat melakukan "su pradeep" bahkan tanpa mengubah kata sandi pradeep, karena ketika Anda melakukan "su pradeep" dengan pengguna root, Anda tidak perlu mengetikkan kata sandi pradeep untuk masuk ...
Wolfy