DEFCON 17. Meretas 400.000 kata sandi, atau bagaimana menjelaskan kepada teman sekamar mengapa tagihan listrik meningkat. Bagian 2

DEFCON 17. Meretas 400.000 kata sandi, atau bagaimana menjelaskan kepada teman sekamar mengapa tagihan listrik meningkat. Bagian 1

Jika Anda tidak mengikuti aturan apa pun untuk membuat kata sandi, kata sandi tersebut mungkin terlihat seperti daftar PHP sederhana. Orang membenci aturan, membenci frasa dan tidak ingin menggunakannya. Jika Anda memberi mereka kebebasan, mereka akan mencetak kata sandi sepele dan akan menganggap bahwa pekerjaan itu selesai. Dalam hal ini, lebih aman jika mereka tidak menggunakan kata-kata dasar yang sederhana, jadi lebih baik menggunakan kamus input besar.



Kontribusi terbesar untuk pembuatan kamus input dibuat oleh Sebastian Ravo - ia menciptakan daftar kata-kata yang sangat besar dari setiap artikel Wikipedia, serta dari proyek serupa. Jika Anda tahu kata, maka Anda membuat artikel Wikipedia untuk itu. Tetapi apa yang baik untuk Wikipedia tidak selalu baik untuk membuat kata sandi yang aman, jadi jika kamusnya sangat besar, mustahil untuk menerapkan banyak aturan berbeda untuk itu. Anda dapat membaca daftar kata-kata dari Wikipedia di blognya http://blog.sebastien.raveau.name/ .

Jika ada kebijakan pembuatan kata sandi, maka Anda harus dipandu oleh aturan berikut:
lebih baik menggunakan tematis kecil, daftar kata khusus dalam kamus,
Kamus terbaik didasarkan pada kata sandi yang sebelumnya retak.

Demi alasan privasi, saya tidak bisa memberi Anda daftar kata sandi yang diretas, tetapi percayalah, sama seperti orang kaya semakin kaya, kata sandi yang diretas menjadi lebih kuat jika Anda melihat di mana kesalahan itu dibuat saat membuatnya dan memperbaikinya.

Ada daftar kata sandi seperti itu, dan kita dapat melihat bahwa pengguna yang sama diulang dalam daftar ini karena mereka menggunakan kata sandi yang sama di mana-mana.

Ini akan berguna jika Anda dapat mengekstrak basis dari kata sandi tersebut. Misalnya, kata sandi TigerWoods1982 tidak boleh terlalu luas, tetapi orang-orang terus-menerus menggunakan kata sandi TigerWoods . Oleh karena itu, Anda dapat mengekstrak frase dasar ini “TigerWoods” untuk membuat kata sandi yang kuat berdasarkan kata sandi tersebut. Ada beberapa alat di CD saya yang akan membantu Anda membuat ini jauh lebih mudah.

Aturan untuk membuat kata-kata untuk kata sandi sangat sederhana:


Namun, Anda perlu mengembangkan aturan sendiri jika Anda ingin memecahkan kata sandi yang sangat kuat. Di CD saya ada alat lain yang memungkinkan Anda untuk mengurai kata sandi menjadi 2 set berbeda.

Yang pertama adalah kata sandi, yang kita tahu bagaimana mereka dibuat, misalnya, kata sandi123 , dan yang kedua adalah kata sandi, prinsip yang tidak kita ketahui. Ini sangat bagus, karena Anda tidak perlu memilah 200 ribu kata sandi seperti kata sandi123 dan kemudian coba untuk membuat aturan baru untuk menggunakannya. Anda akan menerima daftar pendek yang dapat Anda lihat, misalnya, bahwa orang menggunakan emoji untuk membuat kata sandi dengan memasukkan emotikon ke dalam kata-kata. Anda akan mempelajari kombinasi tombol baru dan ini akan membantu Anda membuat kata sandi yang kuat jauh lebih mudah.

Seperti yang saya katakan, saya memutuskan untuk menjauh dari aturan JtR bawaan dan mengembangkan cara saya sendiri untuk menghasilkan "tebakan". Hasil yang baik datang dari metode retak probabilistik , retak probabilistik . Saya telah mengatakan bahwa reaksi kita bersifat universal: kita menjalankan sesuatu dengan mata kita, mengangguk, mengatakan bahwa itu terlihat hebat, tetapi bagi diri kita sendiri kita berpikir: "sampah akademis seperti apa!" Tetapi saya ingin mengatakan bahwa kami benar-benar ingin belajar cara membuat kata sandi yang paling tahan terhadap cracking, jadi kami mencoba melakukan segalanya dengan cara terbaik.

Diketahui bahwa beberapa kata lebih disukai orang daripada yang lain, misalnya kata sandi , monyet , sepak bola . Diketahui juga bahwa orang lebih suka aturan tertentu untuk "mendistorsi" kata sandi dengan menambahkan 123, 007, $$$ atau huruf kapital pertama. Untuk meningkatkan kekuatan, kita harus mengoptimalkan aturan untuk membuat kata sandi dengan cara yang tidak biasa. Ini adalah proses yang agak memakan waktu. Dari buletin email John the Ripper , saya mengetahui tentang orang yang membuat 10 atau 12 ribu file konfigurasi aturan JtR , mencoba untuk mendapatkan yang terbaik darinya.



Saya jauh lebih malas darinya, jadi saya tidak melakukan ini. Saya hanya mencoba membuatnya lebih mudah untuk mengoptimalkan proses pembuatan kata sandi dan mengotomatiskan prosesnya. Kami memproses semua informasi dan menentukan probabilitas menggunakan kata-kata dan kombinasi tertentu, yaitu, kami memberi peringkat kata sandi berdasarkan probabilitas menebak. Dan kemudian kita menggunakan kombinasi kata dan "distorsi" yang paling tidak mungkin untuk membuat kata sandi. Jadi inilah yang harus kita coba untuk membuat kata sandi kita lebih kuat:

  • gunakan kata umum dengan cara non-umum untuk distorsi kata sandi, misalnya 13! kata sandi13!;
  • gunakan kata yang jarang dengan "distorsi" yang umum, misalnya, zibra123.

Dengan metode ini, kami telah berhasil. Jika Anda tidak dapat memecah kata sandi menjadi dua set sesuai dengan tanda-tanda yang disebutkan di atas, kami memiliki program pelatih yang secara otomatis menganalisis daftar kata sandi yang dikenal dan menghasilkan apa yang kami sebut "tata bahasa". "Tata bahasa" ini berisi semua informasi yang diperlukan, jadi kami menggunakan dua "tata bahasa" seperti itu untuk menyelidiki kemungkinan cracking password.

Berkat ini, kami menentukan kemungkinan menggunakan semua yang kami miliki: kata-kata dalam kamus, aturan untuk "mendistorsi" kata-kata dalam kata sandi, algoritma untuk mengatur karakter seperti "dua digit di akhir kata sandi 12", berbeda dengan yang Anda dapat menggunakan aturan "dua angka di akhir kata sandi 21 ", dan sejenisnya.

Saya dapat terus membicarakan hal ini, tetapi saya akan menunjukkan kepada Anda contoh yang baik tentang cara kerjanya. Saya tidak berharap Anda membaca semua yang ada di slide, jadi saya akan memberi tahu Anda apa yang akan saya lakukan. Saya akan meluncurkan cracker kata sandi probabilistik kami dan "memberi" dua kamus input berbeda kepadanya. Sebenarnya, ini mendukung hingga 10 kamus, tetapi lebih baik tidak menjadi gila.



Satu kamus input berisi kata sandi yang paling umum, sehingga memiliki kemungkinan tebakan yang tinggi. Kamus kedua berisi kata-kata yang paling tidak umum, dan cracker kata sandi akan beralih di antara kedua kamus. Setelah itu, saya "garam" hasilnya langsung di John the Ripper , karena, seperti yang saya katakan, saya ingin membuat algoritma hashing kata sandi saya sendiri.

Sayangnya, kami tidak dapat menggunakan daftar PHP di sini, lagi karena kerahasiaan, karena Anda tidak dapat mendemonstrasikan pemecahan kata sandi kepada semua orang, lembaga kami tidak mengakui ini sebagai hal yang legal. Oleh karena itu, saya akan menunjukkan karya cracker pada contoh daftar MySpace , yang diungkapkan 2 tahun lalu. Semua kata sandi di dalamnya disajikan dalam teks biasa, sehingga Anda dapat membacanya, dan operasi ini tidak menimbulkan bahaya tambahan.

Kami menggunakan hashing MD5 , ini persis algoritma hashing yang sama yang digunakan untuk daftar phpbb , jadi di sini sebagian besar mensimulasikan serangan pada phpbb . Sekitar 17.000 hash kata sandi tanpa "zest" dimuat di sini, dan kami sebenarnya membagi daftar mereka menjadi beberapa bagian berbeda untuk pembelajaran mesin biasa.

Saat ini di layar Anda dapat melihat kecepatan di mana kata sandi di-crack, jadi Anda mungkin harus menggunakan algoritma hashing yang lebih lambat. Ada juga pergantian di antara aturan yang berbeda, jadi ini bukan hanya upaya seperti "coba 1 digit, coba 2 digit" dan seterusnya.

Anda melihat bahwa kata sandi memiliki ukuran yang berbeda, biasanya orang menggunakan panjang 6 hingga 8 karakter dan terkadang ada tanda seru di akhir kata sandi.

Ada beberapa jenis pengoptimalan yang coba kami integrasikan ke dalam algoritma ini, karena pekerjaan kami masih berlangsung. Salah satu dari hal-hal ini adalah dimasukkannya serangan yang ditargetkan dalam proses, ketika alih-alih memecahkan beberapa kata sandi lama yang besar, program mencoba untuk memecahkan kata sandi pengguna tertentu.



Yang Anda butuhkan untuk serangan bertarget adalah menggunakan kamus input yang berbeda, seperti nama bayi, ulang tahun, kode pos, dan sebagainya.

Anda melihat bahwa proses peretasan di layar sedikit melambat, ini adalah fitur desain, jika peretasan cukup sederhana, prosesnya dipercepat. Tetapi karena didasarkan pada model probabilistik, kata sandi dengan probabilitas tertinggi ditebak lebih cepat, dan kata sandi dengan probabilitas paling kecil dipecahkan sedikit lebih lambat, jadi lebih banyak tebakan digunakan di sini.

Anda juga memperhatikan bahwa kata sandi dalam daftar ini sebagian besar sangat lemah. Ini karena kita baru saja memulai sesi pemecahan kata sandi dan tidak ingin menggunakan kata sandi yang terlalu rumit atau canggih.

Jika Anda memiliki strategi peretasan di mana Anda bermaksud menyerang hanya kata sandi yang kuat, Anda harus membuat daftar yang sesuai berdasarkan kata sandi tersebut dan memulai sesi dengan meretas hanya kata sandi yang kuat.

Jadi, program kami telah menyelesaikan tugasnya. Proses peretasan memakan waktu 2 menit 30 detik, selama itu 5586 kata sandi diretas atau ditebak, yang sedikit lebih dari 30% dari jumlah total.

Ada seratus alasan mengapa saya berpikir bahwa kebijakan untuk membuat kata sandi perlu diubah, bukan karena penggunaan kata sandi adalah sesuatu yang terbelakang dan bodoh. Hanya saja saya benar-benar percaya bahwa mereka melakukan lebih banyak kerusakan daripada kebaikan bagi keamanan kita. Terutama jika kita berbicara tentang serangan offline yang tidak dapat dilawan kecuali jika Anda mengganti kata sandi Anda setiap 2 menit.

Sekarang saya ingin berbicara tentang teknik serangan Brute Force . Serangan-serangan ini benar-benar dapat melakukan banyak kerusakan jika Anda tidak menjaga pertahanan.

Mereka cukup kuat, tetapi Anda bisa menolaknya, Anda hanya perlu menggunakan otak Anda. Untuk melakukan ini, Anda perlu menganalisis frekuensi penggunaan huruf dan simbol untuk mengetahui huruf atau simbol mana yang jarang digunakan dalam kata sandi.



Tentunya Anda semua pernah mendengar tentang ini, jadi cobalah, misalnya, untuk menggunakan huruf Q lebih sering, yang jarang terdapat pada kata sandi. Algoritme peretasan Anda seharusnya tidak mencoba memecahkan semua kata sandi, Anda harus fokus pada yang paling mungkin.

Opsi yang lebih "maju" adalah model Markov . Ini didasarkan pada probabilitas bersyarat huruf, misalnya, jika Anda memiliki dua huruf Q berturut-turut, Anda lebih terlindungi daripada ketika Anda memiliki huruf U dalam kumpulan huruf Anda, karena Anda biasanya mengikuti huruf Q dalam kata-kata. Itu juga mengasumsikan bahwa kata sandi dibuat dalam "Manusia", yaitu, jika huruf tertentu terletak di tempat kata ini, maka diikuti oleh huruf lain, yang paling sering digunakan dalam kombinasi huruf seperti itu. Model Markov digunakan oleh algoritma peretasan JtR , yang memperhitungkan bahwa huruf Q dalam "kata-kata manusia" biasanya diikuti oleh U atau W, tetapi bukan S atau Z. Jangan berpikir bahwa saya sedang berjuang untuk mendapatkan Anda "John the Ripper" di sini, tetapi itu adalah program yang sangat bagus.

Kami dapat lebih memperdalam logika Brute Force dengan menggunakan serangan yang ditargetkan. Mereka didasarkan pada penggunaan prinsip-prinsip pembuatan kata sandi tersebut:

  • orang cenderung memulai kata sandi dengan huruf besar;
  • mereka biasanya menambahkan angka di akhir kata sandi;
  • untuk alasan yang sama, mereka suka menggunakan kombinasi php atau phpbb dalam kata sandi.


Prinsip yang sama dapat digunakan untuk "serangan kamus". Ada alat yang sangat bagus untuk memeriksa efektivitas serangan yang disebut "Crunch" , dapat ditemukan di forum programmer remote-exploit.com .

Saya ingin memberi Anda contoh melanggar kata sandi "kuat" menggunakan serangan Brute Force . Untuk melakukan ini, saya pertama mulai JtR dan mulai menghasilkan "tebakan" berdasarkan huruf kecil menggunakan model Markov.



Anda melihat bahwa dalam daftar ini ada banyak kata-kata nyata, seperti anjing, tanpa bintang, laut, yang ada di kamus input. Namun berkat model Markov, ia juga menghasilkan kata-kata yang hilang di sana, misalnya, stech. Tetapi karena kita sedang memecahkan kata sandi yang kuat, kita perlu menerapkan beberapa logika tambahan. Oleh karena itu, saya menggunakan skrip yang memberikan huruf besar di awal kata, dan juga menambahkan karakter dan angka khusus di akhir kata.



Seperti yang Anda lihat, "tebakan" ini terlihat seperti kata sandi yang sangat kuat. Sekarang setelah Anda mengetahui kebijakan pembuatan kata sandi, Anda harus mengklik tombol "matikan kemalasan" dan menghabiskan 5 menit untuk memberikan kata-kata ini ukuran tertentu, karena mereka terlihat terlalu pendek.

Kami juga dapat mencoba mengunggah semuanya kembali ke JtR dan mencoba memecahkan hash.



Di awal presentasi, saya berbicara secara rinci tentang memecah daftar kata sandi untuk pengguna phpbb.com , dan sekarang saya ingin berbicara sedikit tentang memecah daftar Web Hosting Talk .



Dia diretas pada 21 Maret 2009, setidaknya pada saat itu daftar diterbitkan di jaringan, dan penyerang ternyata adalah bajingan nyata, karena dia ditempatkan di domain publik sekitar 200 ribu login dan kata sandi dan informasi pengguna rahasia lainnya. Dia mencuri hash, dan kemudian menghapus situs itu sendiri dan semua cadangan. Ini merupakan pukulan besar bagi administrator sistem.



Setelah itu, pemilik situs melaporkan bahwa mereka diretas, tetapi pengguna tidak perlu khawatir, karena sekarang mereka aman. Pada saat yang sama, mereka mengungkapkan satu pemikiran, yang sebenarnya menipu dan berbahaya, saya mengutip kata-kata koordinator komunitas iNET : "Kata sandi memiliki" semangat ", dan itu akan menjadi peristiwa yang belum pernah terjadi sebelumnya jika seseorang dapat mendesain ulang mereka. Saya mengubah kata sandi saya secara berkala, jadi mungkin hari ini adalah hari yang baik untuk ini. "

Sepertinya saya katakan: "halo teman-teman, Anda tahu, ruang fotokopi menyala, tetapi jangan khawatir, ada sistem pemadam api di sana, jadi sangat mustahil bagi bangunan ini untuk membakar ke tanah." Tapi kadang-kadang saya suka keluar rumah saat makan siang, jadi Anda juga bisa berjalan di luar jika mau. ” Ini adalah salah satu alasan mengapa saya memutuskan untuk meretas daftar ini di sini.

Selanjutnya, koordinator menerbitkan pernyataan berikut: "Tidak ada kartu kredit pengguna tunggal atau akun PayPay telah diretas." Mungkin hanya karena peretas tidak membutuhkan ini. Dan kemudian ada kegagalan baru - situs yang sama diretas lagi oleh peretas yang sama pada 7 April, dan kali ini dia menerbitkan di jaringan sekitar 202 ribu kata sandi hash dan 2218 nomor kartu kredit.

Saya tidak akan pernah pergi ke situs tersebut, administrasi yang mengatakan: "Ya, dua ribu kartu kredit telah dicuri dari kami, tetapi sisanya aman"!

Saya ingin sedikit mengklarifikasi situasinya. Meretas orang adalah fakta, dan saya tidak ingin menyalahkan Web Hosting Talk untuk ini . Mencoba menyimpan dan mengeluarkan sesuatu dari sistem Anda segera setelah diretas adalah masalah yang sulit, terutama jika pengguna berulang kali meminta Anda untuk membuat cadangan sistem. Oleh karena itu, saya pikir masalah utama dengan Web Hosting Talk adalah mereka meremehkan risiko yang dihadapi oleh pengguna mereka. Dan bertindak atas nama mereka sangat berbahaya.

Karena Anda, setidaknya, harus memberi pengguna sesuatu seperti jam yang menunjukkan kebutuhan untuk masuk dan mengubah kata sandi Anda, tidak hanya untuk situs ini, tetapi untuk semua situs lain, secepat mungkin. Ini sangat penting, karena segera saya menemukan fakta menarik tentang situs ini: setelah serangan pertama, 1348 pengguna mengubah kata sandi mereka, yang jumlahnya hanya 0,6% dari total jumlah yang terdaftar di situs!

Itulah sebabnya peretas memiliki peluang besar untuk kembali dan meretas situs lagi menggunakan kredensial pengguna yang tidak berubah yang sama, atau bahkan menggunakannya untuk meretas situs lain di mana mereka juga terdaftar.

Saya ingin mengetahui apakah hash situs ini benar-benar sangat lemah, dan beralih ke Google untuk mencari tahu perangkat lunak apa yang digunakan situs. Ternyata ini adalah mesin forum vBulletin , ditulis dalam PHP dan menggunakan server MySQL untuk memelihara databasenya. Google juga menjawab pertanyaan algoritma hash mana yang digunakan situs ini - ini adalah hashing ganda seperti MD5 (MD5 (Kata Sandi) .salt) . Artinya, Anda mengambil kata sandi pengguna, menggunakan hash MD5 dan sekali lagi hash kata sandi yang diterima menggunakan MD5 yang sama. Saya tidak tahu bagaimana "John the Ripper" akan menangani hashing seperti itu, jadi saya menulis "cracker" saya sendiri. Tetapi saya tidak mencoba untuk memecahkan kata sandi asli dari situs ini, karena akan memakan waktu beberapa minggu, saya hanya memutuskan untuk menguji keberadaan kata sandi "kata sandi" dalam daftar dan segera meretas 1109 orang yang menggunakan kata "kata sandi" sebagai kata sandi.



Saya ingin mengatakan bahwa "highlight" pada kata sandi benar-benar menjadi masalah bagi penyerang dan karena itu penting bagi pengguna. Saya terus "mengiklankan" kata sandi dengan "zest" yang berbeda karena bagi seorang cracker ini berarti harus "menebak" hash dari setiap kata sandi untuk setiap pengguna. Jika kita mengambil situs phpbb , misalnya, di mana hash satu langkah MD5 digunakan, maka peretas menghabiskan sekitar 1 jam untuk memecahkan daftar kata sandi. Untuk serangan semacam itu pada daftar kata sandi Web Hosting Talk , jika dilindungi oleh "zest", itu akan memakan waktu 200 ribu jam.

Apa lagi yang perlu dikatakan? , «Dell» 34% 200 phpbb . , «». , , ? , .

, «» , - , , , «». , , 200 , . , «admin» «webmaster».

, , . , , «», , .

, weir@cs.fsu.edu

- , .

: , «It's fun to try the impossible»! : «!!It's fun to try the impossible!» «!!ifttti!».

, Mad Libs , .

: ASCII, :




Terima kasih telah tinggal bersama kami. Apakah Anda suka artikel kami? Ingin melihat materi yang lebih menarik? Dukung kami dengan melakukan pemesanan atau merekomendasikannya kepada teman-teman Anda, diskon 30% untuk pengguna Habr pada analog unik dari server entry-level yang kami temukan untuk Anda: Seluruh kebenaran tentang VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps dari $ 20 atau bagaimana membagi server? (pilihan tersedia dengan RAID1 dan RAID10, hingga 24 core dan hingga 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps hingga Desember secara gratis ketika membayar untuk jangka waktu enam bulan, Anda dapat memesan di sini .

Dell R730xd 2 kali lebih murah? Hanya kami yang memiliki 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV dari $ 249 di Belanda dan Amerika Serikat! Baca tentang Cara Membangun Infrastruktur Bldg. kelas menggunakan server Dell R730xd E5-2650 v4 seharga 9.000 euro untuk satu sen?

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


All Articles