
Pada artikel ini, kita belajar tentang fungsi crypt, belajar bagaimana memilih kata sandi untuk arsip ZIP dengan nama file yang tidak dienkripsi, berkenalan dengan utilitas xortool, dan juga berurusan dengan generator angka pseudo-acak. Artikel sebelumnya tentang topik ini:
Bagian 1 -
Penyandian, shift cipher, hash kasar dan pembuatan gambar menggunakan PIL python.Informasi OrganisasiTerutama bagi mereka yang ingin mempelajari sesuatu yang baru dan berkembang di bidang informasi dan keamanan komputer, saya akan menulis dan berbicara tentang kategori berikut:
- PWN;
- kriptografi (Crypto);
- teknologi jaringan (Jaringan);
- membalikkan (Reverse Engineering);
- steganografi (Stegano);
- pencarian dan eksploitasi kerentanan WEB.
Selain itu, saya akan membagikan pengalaman saya dalam forensik komputer, analisis malware dan firmware, serangan pada jaringan nirkabel dan jaringan area lokal, melakukan pentest dan menulis eksploitasi.
Agar Anda dapat mengetahui tentang artikel baru, perangkat lunak, dan informasi lainnya, saya membuat
saluran di Telegram dan
grup untuk membahas masalah apa pun di bidang ICD. Juga, saya pribadi akan mempertimbangkan permintaan pribadi Anda, pertanyaan, saran dan rekomendasi
secara pribadi dan akan menjawab semua orang .
Semua informasi disediakan hanya untuk tujuan pendidikan. Penulis dokumen ini tidak bertanggung jawab atas kerusakan yang disebabkan seseorang sebagai akibat dari menggunakan pengetahuan dan metode yang diperoleh sebagai hasil dari mempelajari dokumen ini.
ELF64 - Enkripsi PID

Kami melihat kode sumbernya. Program mengambil string sebagai argumen dan membandingkannya dengan apa fungsi cryt kembali dari PID program dan string "$ 1 $ mengagumkan".
Fungsi cryt adalah fungsi perpustakaan yang digunakan untuk menghitung hash kata sandi. Output dari fungsi bukan hanya hash, tetapi satu baris teks yang juga mengandung garam, algoritma hash yang digunakan dan parameter yang menerima hash, seperti jumlah putaran dan opsi lainnya.

Fitur ini termasuk dalam bahasa pemrograman Perl, PHP, Pike, Python dan Ruby. Dengan demikian, Anda perlu menebak PID yang dengannya program akan diluncurkan. Setelah terhubung melalui SSH, kami melihat bahwa mereka memberi kami sebuah program, sumbernya, dan file dengan kata sandi.

Di Linux, setiap aplikasi yang berjalan baru akan menerima nilai PID gratis tambahan yang paling perkiraan. Misalnya, jalankan ps beberapa kali berturut-turut. PID bertambah setiap kali.

Jadi, Anda dapat menghitung hash dari PID gratis apa pun, dan dengan nilai ini sebagai argumen, jalankan program tanpa henti. Mari kita ambil PID, misalnya 30000, dan jalankan fungsi crypt. Saya akan melakukannya dengan python.

Sekarang jalankan eksekusi program tanpa akhir.

Dan semenit kemudian, kami mendapatkan shell dari tempat kami membaca kata sandi.

File - PKZIP

Unduh file yang mereka berikan kepada kami. Ini adalah arsip ZIP yang dilindungi kata sandi. Mari kita pergi melalui kata sandi. Karena nama file tidak dienkripsi, kami menjadikannya utilitas fcrackzip, dan menjadikan rockyou.txt sebagai kamus.

Setelah membuka ritsleting, kami mendapatkan file teks di mana dikatakan bahwa jawabannya adalah kata sandi dari arsip.

Teks yang dikenal - XOR

Kami diberi gambar yang dienkripsi menggunakan XOR BMP. Karena kami menggunakan XOR (saya berasumsi dengan kunci pendek) dan memiliki ciphertext yang besar, Anda dapat menggunakan xortool.

Dengan demikian, xortool percaya bahwa panjang kunci yang paling mungkin adalah 6. Mari kita memintanya untuk menentukan kunci.

Bagus Kuncinya didefinisikan, tetapi xortool sendiri telah mendekripsi file dan menyimpannya di direktori xortool_out.

Kode - Pseudo Random Number Generator

Kami diberi program dengan mana file dienkripsi, serta file itu sendiri. Selain itu, mereka mengatakan bahwa enkripsi terjadi pada Desember 2012. Mari kita membersihkan kodenya.
Pada awal program, waktu saat ini dihafalkan (lebih tepatnya, waktu berlalu sejak 1 Januari 1970). Selanjutnya, keberadaan parameter program diperiksa - path ke file.


Kemudian file ini dibuka untuk dibaca dan file baru dibuat untuk ditulis. Penjelas kedua file diteruskan ke fungsi crypt_file.

Dalam crypt_file, fungsi genere_key () membalikkan kunci 32 byte, yang digunakan untuk XOR mengenkripsi file. Hasil enkripsi ditulis ke file yang baru dibuat.

Kuncinya dikompilasi dengan pseudo-random. Dari alfabet yang disajikan pada setiap langkah, nilai dipilih tergantung pada nilai holdrand, yang juga berubah pada setiap langkah, dan pada awalnya itu sama dengan waktu saat ini.

Jadi, kita perlu membuat kunci yang mungkin. Kode sumber python terlihat seperti ini.
keys = [] charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789" l = len(charset) holdrand = None def Rand(): global holdrand holdrand = holdrand * 214013 + 2531011 return ((holdrand >> 16) & 0x7fff) def genere_key(): key = "".join( [ charset[Rand()%l] for _ in range(32) ] ) keys.append(key) start = ? fin = ? for ts in range(start, fin): holdrand = ts genere_key()
Sekarang mari kita berurusan dengan batasan waktu. Karena enkripsi dilakukan pada bulan Desember 2012, kita perlu memilah-milah semua nilai yang mungkin dari 1 Desember hingga 31 Desember.

start = 1354320000 fin = 1356998400
Kami telah memutuskan perbatasan, tetapi masih akan ada banyak kunci. Untungnya, file tersebut memiliki ekstensi - ini adalah bz2.

Artinya, tiga byte pertama file harus "BZh", yang keempat harus menjadi salah satu karakter dari "1" hingga "9", dan enam byte berikutnya harus 0x314159265359. Mari tambahkan filter untuk kunci. Untuk melakukan ini, kita memerlukan byte pertama dari ciphertext.

def key_filter(key): ctext = "\x23\x17\x5d\x70\x5a\x11\x6d\x67\x37\x08" BZh = "BZh" sign = "".join( [ chr(ord(ctext[i])^ord(BZh[i])) for i in range(3) ] ) byte4 = "".join( [ chr(ord(ctext[3])^ord(i)) for i in "123456789" ] ) bytePI = chr(ord(ctext[4])^0x31) if sign in key[:3] and key[3] in byte4 and key[4] in bytePI: print(key)
Dan kami hanya mendapatkan satu kunci.

Dan menggunakan xortool yang sama, Anda dapat mem-proxy file dengan kunci.

Dengan demikian, Anda mendekripsi arsip.
Anda dapat bergabung dengan kami di
Telegram . Mari kita mengumpulkan komunitas di mana akan ada orang-orang yang berpengalaman dalam banyak bidang TI, maka kita selalu dapat saling membantu dalam masalah TI dan keamanan informasi.