Studi Keamanan TurboConf

Halo semuanya! Saya memutuskan untuk berbagi dengan komunitas informasi tentang analisis kecil satu utilitas kecil (dengan kode yang dikaburkan), yang dikenal di kalangan sempit julukan 1s. Ini adalah artikel pertama saya tentang Habr, saya meminta Anda untuk tidak terlalu banyak menendang, tetapi layak untuk dikritik.

Penafian

Segala sesuatu yang Anda lihat di sini dapat memengaruhi kemampuan mental Anda, jangan gunakan untuk diri sendiri apa yang dijelaskan dalam artikel, karena ini dapat membahayakan Anda. Penulis tidak bertanggung jawab atas keakuratan, kelengkapan, atau kualitas informasi yang diberikan.

Apa ini

TurboConf adalah program "shareware" yang memperluas kemampuan konfigurator 1s, bukan kata-kata lebih lanjut tentang 1s , yang tidak memerlukan instalasi. Anda dapat mengunduhnya di situs web dengan nama Runet yang sama. Semua studi dilakukan pada versi 5.9.7209.21363 tanggal 27 September 2019.

Analisis awal

Setelah mengunduh, kami mendapatkan arsip zip. Buka kemasan. Kami melihat beberapa file exe. Mari kita lihat aplikasi utama dengan ikon perusahaan. Jika Anda membukanya di editor HEX sederhana, misalnya, HxD, Anda dapat dengan mudah memahami bahwa itu adalah kumpulan di bawah .Net Framework, karena nama kelas dari pustaka .Net standar terlihat:

TurboConf dalam HxD
gambar

Selanjutnya, kita ambil dekompiler DotPeek dan lihat perakitan ini di dalamnya. Bytecode tidak dikaburkan, sehingga dekompiler menghasilkan sumber yang hampir asli:

Kode Metode yang Dipulihkan
gambar

Sangat mudah untuk memahami di sini bahwa lebih lanjut pekerjaan utilitas berpindah ke aplikasi "TurboConf.Application.exe". Buka di DotPeek. Ini juga merupakan perakitan dengan kode IL. Tetapi tidak seperti perakitan sebelumnya, beberapa metode di sini dikaburkan, kemungkinan besar menggunakan Confuser. Mempelajari kode, menjadi jelas bahwa logika utama pekerjaan adalah di "TurboConf.Service.dll" - dan ini juga merupakan perakitan untuk. Net, dan juga beberapa metode dikaburkan. Hebat, ini bahkan lebih menarik!

Penelitian Pertahanan

Saat melihat struktur perakitan, di namespace "TurboConf.Service.Utils" kita menemukan kelas "Crypto", dan di dalamnya ada metode dengan nama berbicara "DecryptStringAES":

Metode DecryptStringAES
gambar

Meskipun dikaburkan, tidaklah sulit untuk mengembalikan logika kerja darinya di masa depan. Temukan penggunaan metode ini (Shift + F12):

Hasil pencarian
gambar

Dan segera sukses! Metode ini disebut 2 kali dalam konstruktor kelas yang bertanggung jawab untuk perizinan!

Pemulihan sumber

Obfuscator mengenkripsi semua baris dan menempatkannya dalam satu file sumber daya. Anda bisa mendapatkan file ini menggunakan dekompiler Microsoft ildasm.exe yang termasuk dalam Windows SDK (dan tidak hanya):

Mengambil File Sumber Daya
gambar

Dan alih-alih baris asli, obfuscator menggantikan konstruksi berikut dalam kode: "<Module> .c (random_arithmic_operation)", di mana hasil dari operasi aritmatika adalah angka tertentu berdasarkan di mana offset untuk file sumber daya dihitung, dari mana data yang dienkripsi kemudian diekstraksi dan string asli dikembalikan. Untuk memfasilitasi tugas mendekripsi string, kami akan membuat proyek baru di Visual Studio, mentransfer, dengan sedikit perbaikan, kelas "<Module>" dan file sumber daya "resource". Dengan demikian, kita dapat memahami bahwa di jendela DotPeek kode berikut

<Module>.c(sizeof (float) - 47, sizeof (int) + 6429, (int) ((uint) k >> 16) >= 0 ? sizeof (int) + 200 : System.Type.EmptyTypes.Length - 1805516213) 

ini adalah baris "Pengguna:"

Kembalikan seluruh logika kelas lisensi secara perlahan. Kita bisa berhenti pada ini, yaitu, membuat sedikit peretasan sederhana di file "TurboConf.Service.dll" yang sedang diselidiki, mengganti cek kesetaraan untuk keberadaan lisensi dengan ketidaksetaraan, tetapi ini tidak menarik. Lebih jauh ...

Prinsip perlindungan

Untuk mendapatkan lisensi, Anda memerlukan pengidentifikasi unik untuk peralatan tempat program dijalankan. HardwareID ini dihasilkan berdasarkan pengidentifikasi prosesor dan nomor seri volume drive "Ts". Untuk mendapatkan lisensi uji coba, program membuat permintaan GET dengan pengenal peralatan untuk domain "netlenka1c.ru". Dan sebagai tanggapan datang kunci yang menunjukkan tanggal akhir periode uji coba, ditandatangani ... secara digital. Program ini didasarkan pada algoritma RSA asimetris dengan kunci 1024-bit. Pada tahap ini, saya menyadari bahwa tidak mungkin dilakukan tanpa memodifikasi file asli, karena hampir tidak mungkin untuk mendapatkan kunci privat (tidak ada dalam file utilitas).

Pusat Lisensi Mini

Setelah memahami cara kerja perlindungan, saya memutuskan untuk menjadikan diri saya dewa kecil untuk program ini, sehingga saya sendiri dapat menghasilkan kunci. Untuk melakukan ini, sebuah patcher dikembangkan, yang pertama kali mengganti kunci publik dari tanda tangan digital dalam perakitan dengan kunci publik yang dihasilkan itu sendiri:

Patcher
gambar

Dan kemudian utilitas yang dikembangkan untuk menghasilkan kunci (baik sementara untuk periode validitas tertentu dan abadi), menambahkan tanda tangan digital ke kunci berdasarkan kunci pribadi yang dihasilkan itu sendiri:

Keygen
gambar

Sebagai hasilnya, kami memiliki program terdaftar yang bisa diterapkan dengan fungsionalitas penuh:

Tentang program ini
gambar

Akhlak

Kebingungan adalah metode yang cukup bagus untuk membingungkan yang sebaliknya, tetapi itu hanya masalah waktu.

PS

Artikel ini secara khusus memiliki celah dalam narasi, sehingga tidak menggantikan penulis program. Tidak ada kode sumber dan program kerja yang dilampirkan dan tidak akan. Hormati karya orang lain, terutama kolega di "toko"!

Terima kasih kepada semua orang yang membaca pos!

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


All Articles