Oleh :
NPM : 147006139
TEKNIK INFORMATIKA
FAKULTAS TEKNIK UNIVERSITAS SILIWANGI
TASIKMALAYA
2017
A. Struktur Malware
Mirai merupakan malware yang menyebabkan sebuah perangkat IoT dapat terinfeksi
dan menyebabkan kemanan menjadi lemah. Mirai adalah sebuah Trojan Linux dengan
kemampuan rootkit (termasuk dalam kategori 'malware ELF'). Dalam komputasi, Format
Executable and Linkable (ELF, sebelumnya disebut Extensible Linking Format) adalah
format file standar umum untuk executable, kode objek, shared library, dan core
dumps.Dengan kata lain: ELF adalah Linux seperti PE (.exe, .com, .scr) adalah Windows dan
Mach-O ke OS X.
Kita bisa melihat itu ELF 32-bit yang bisa dieksekusi untuk i386 - dan itu tidak dilucuti.
Mengapa bagian terakhir itu penting? strip memungkinkan untuk menghapus simbol dan
bagian dari file pilihan, yang pada gilirannya membuat lebih sulit untuk merekayasa balik
(membongkar) juga. Dalam kasus ini, file sepertinya tidak dilucuti, bagus! Misalnya, kita bisa
melihat file sumber dan mendapatkan ide tentang apa yang dilakukan malware ini:
Gambar 1.11 Tampialn Struktur Mirai
Dari gambar diatas kita akan mulai dengan menggunakan readelf untuk penyelidikan
lebih lanjut tentang file tersebut. Kita tahu, berkat perintah file, ini adalah ELF 32-bit yang bisa
dijalankan untuk i386. Menggunakan readelf dan parameter -h kita akan bisa mengumpulkan
lebih banyak informasi. Pada gambar memberi kita lebih banyak informasi, misalnya; Magic
(7F 45 4C 46 untuk file ELF, file 4D 5A untuk MZ) komplemen 2, little endian, jenis file yang
tepat (file executable, jenis file ELF lainnya mungkin merupakan file yang dapat direlokasi,
objek bersama, inti file atau prosesor tertentu) tapi yang terpenting disini adalah alamat entry
point, atau dimulainya program. Struktur mirai tersebut bisa dilihat pada gambar diatas. Dalam
hal malware itu sendiri, dengan menggunakan parameter, kita bisa membuang satu ton
informasi, kita dapat menemukan output dari perintah ini pada perangkat lunak perusak di
Pastebin: Xor.DDoS - "readelf -a" output.
Untuk membongkar file tersebut, kita dapat menggunakan objdump yang
memungkinkan kita membongkar hanya bagian yang diharapkan mengandung instruksi
(parameter -d) atau untuk membongkar isi semua bagian (-D parameter). Namun, untuk
menngetahu sedikit lebih dalam ke dalam kode malware, kita akan menggunakan IDA,
pembongkar dan debugger multi-prosesor dan Radare, kerangka pembalikan (portable) yang
terkenal. Perhatikan bahwa ini masih akan melirik sekilas, karena MalwareMustDie juga telah
melaporkannya secara ekstensif. Perhatikan bahwa varian Xor.DDoS yang dibahas di malware
mirai ini menggunakan 2 tombol XOR untuk komunikasi (jaringan), yaitu sebagai berikut:
BB2FA36AAA9541F0
ECB6D3479AC3823F
Pada video yang saya buat untuk menganalisa malware menggunakan IDE dengan
menggunakan GUI, berarti memiliki utilitas lain yang berguna: ELFparser. Ini akan melakukan
penilaian berdasarkan beberapa faktor, seperti perintah shell, fungsi HTTP dan manipulasi
proses. Misalnya, untuk file kami:
Gambar 1.12 Tampilan Aplikasi ELF Preser
Anda bisa melihatnya mencetak cukup tinggi. Aku ingin tahu apa yang harus dikatakan tentang
alamat IP hardcoded.
Hapus kedua baris ini dari crontab Anda. Jangan lupa simpan. Hapus file terkait,
terletak di /etc/cron.hourly. Dalam kasus kami, isinya adalah sebagai berikut:
cron.sh
hg
Seperti yang dikatakan sebelumnya, hapus file-file ini secara manual, begitu pula file-
file yang disebutkan dalam skrip. (dalam kasus ini: /lib/libgcc.so.bak, /lib/libgcc.so dan
/lib/libgcc4.4.so.) Perhatikan bahwa file-file ini tidak terkait dengan perpustakaan runtime
GCC dan dengan demikian dapat dengan aman dihapus. Ini hanya cara lain bagaimana malware
mencoba untuk menyembunyikan diri.
Juga periksa ulang tidak ada file atau skrip berbahaya di /etc/rc.d. jika tidak ada maka dibuang
saja. Menghentikan dan membunuh proses berbahaya: mengidentifikasi proses yang sudah
lama, Biasanya itu akan menjadi yang paling banyak memakan CPU, yang bisa Anda verifikasi
menggunakan perintah sebelumnya, yang paling mudah. Pertama, pastikan untuk
menghentikan proses induk dan menunggu proses anak mati. Gunakan perintah: kill -STOP $
pid
Saat proses anak mati, bunuh orang tua dengan menggunakan: kill -9 $ pid Jika Anda melihat
proses berbahaya lainnya, baliki 2 perintah terakhir lagi. Hapus file berbahaya yang tersisa,
lokasi tempat malware mungkin berada di tempat yang telah ditentukan sebelumnya, namun
harus lengkap.
/ direktori root, dalam kasus yang jarang terjadi diantaranya :
/tempat sampah/
/ boot /
/etc/init.d/
/etc/rc.d
/etc/rcX.d (di mana X adalah angka)
/ lib /
/ lib / udev /
/ sbin /
/ tmp /
/ usr / bin /
Gunakan rm -rf untuk menghapus file secara permanen. Hati-hati dengan perintah ini.
Memiliki masalah menghapus file, Apakah kita perlu root Jika tidak perlu, coba kill proses atau
hapus file menggunakan root dengan cara menambahkan sudo sebelum perintah. Sebagai
contoh: sudo kill -STOP $ pid
Proses berbahaya terus datang kembali, lakukan langkah-langkah sebelumnya, tapi kali
ini catat tempat malware berada. Buat direktori itu dan file-filenya tidak bisa dimodifikasi
dengan memanfaatkan perintah chattr. Misalnya, malware sedang dibuat kembali di / usr / bin/.
Gunakan perintahnya: chattr -R + i / usr / bin / Kemudian, hentikan yang lama, tunggu sampai
child mati dan bunuh yang lama. Hapus file Jangan lupa gunakan chattr lagi setelah
membersihkan infeksi. (dalam contoh kita: chattr -R -i / usr / bin /). Ini juga mungkin malware
untuk sementara menyimpan file ke / tmp / saat mencoba untuk membunuh prosesnya. Bila itu
terjadi, gunakan perintah chattr yang sama di direktori / tmp / dan mulailah dari awal. Jika
ragu, gunakan perintah chattr pada semua direktori yang disebutkan di atas dan mulailah dari
awal. Sangat penting: jangan lupa gunakan chattr -R -i pada mereka setelah itu. Dalam kasus
yang jarang terjadi, penyerang mungkin masih terhubung ke kotak. Jika memungkinkan,
potong koneksi internet dan lakukan langkah disinfeksi. Jika ini tidak mungkin, pertama
hentikan SSH dengan memasukkan perintah:
sudo /etc/init.d/ssh stop.
Kemudian, gunakan iptables untuk menjatuhkan koneksi ke IP yang malware terhubung ke
(gunakan netstat misalnya, lihat juga Diagnosis) dan untuk melepaskan koneksi dari penyerang
atau cybercriminal. Bagaimana cara melakukannya:
Kami mengetahui bahwa K & C kami 103.25.9.228 dan 103.25.9.229. Jadi, ketik atau copy /
paste 2 perintah berikut ini:
iptables-OUTPUT -d 103.25.9.228 -j DROP
iptables-OUTPUT -d 103.25.9.229 -j DROP
Untuk memblokir koneksi dari penyerang bisa menemukan IP penyerang menggunakan netstat
iptables -A INPUT -s $ attackerIP -j DROP Jangan lupa untuk menyimpan aturan iptables yang
baru dibuat dengan menggunakan perintah /etc/init.d/iptables save Setelah itu, ubah semua kata
sandi. (SSH, pengguna anda, root) Skenario kasus terbaik di sini jelas memulihkan dari
cadangan Jika mesin itu virtual, pulihkan dulu snapshot Bila memiliki salah satu dari ini yang
tersedia, jangan lupa untuk mengganti semua kata kunci setelahnya untuk mencegah infeksi
ulang - dan tempelkan mesin. Beberapa varian XOR.DDoS juga bisa memasukkan rootkit.
Dalam kasus ini, harap Anda memiliki "skenario kasus terbaik" yang tersedia. Setelah sebuah
kotak dikompromikan sepenuhnya, mungkin akan sulit mengembalikannya kembali ke
keadaan normal atau semula.
Untuk pengecekan ganda terhadap rootkit dan malware lainnya, Anda mungkin ingin
memeriksa chkrootkit atau sebaliknya, rkhunter. Selain itu, Anda bisa mendownload dan
menginstal antivirus, misalnya ClamAV. Jika melakukan pembersihan manual seperti
ditunjukkan di atas dan sudah memastikan semuanya beres, Anda dapat menginstal ClamAV
dan melakukan pemindaian ekstra untuk memastikannya. Lebih baik aman daripada menyesal.
Lalu, ikuti tips pencegahan di bawah ini untuk tetap aman.
Pencegahan
Gunakan kata sandi yang kuat untuk SSH atau gunakan kunci alih-alih kata sandi untuk
otentikasi. Anda bisa membaca bagaimana melakukannya di sini. Jika Anda tidak memerlukan
SSH ke mesin tertentu, nonaktifkan di mesin itu dengan perintah sudo apt-get remove openssh-
server Untuk menonaktifkannya dari start up Anda bisa menggunakan update-rc.d -f ssh delet
Jangan membuka port SSH yang masuk (default 22) ke APAPUN, namun batasi ke alamat IP
tepercaya. Untuk informasi lebih lanjut tentang penggunaan SSH dengan aman, lihat: SSH:
Praktik terbaik Gunakan firewall yang kuat. Di Linux ada banyak pilihan, iptables adalah
pilihan yang solid. Dasar iptables dasar yang baik bisa ditemukan disini. Dalam jaringan atau
jika perlu melindungi beberapa mesin, Anda mungkin ingin mempertimbangkan alat perangkat
keras terpisah sebagai pilihan firewall / UTM / .
Perintah 'n kontrol Mirai Server (CNC) mengakuisisi bots melalui telnet, yang
ditemukan diaktifkan dan terkena sebagai kerentanan dalam perangkat IOT berlebihan
menjalankan berbagai bentuk tertanam Linux. Dikombinasikan dengan hardware default akun
produsen login, Mirai dapat dengan cepat memperoleh akses shell pada perangkat (bot). The
Mirai CNC server diberi makan berbagai perintah melalui antarmuka admin untuk
melaksanakan Denial of Service (DoS) serangan pada jaringan outbound perangkat Terdiri ini.
Selain itu, CNC perangkat panen alamat IP dan meta-data yang diperoleh melalui
pemindaian bot dan penemuan dari perangkat yang diberikan. Setelah dikompromikan
perangkat akan “telepon rumah” untuk CNC. Sementara perangkat terus muncul beroperasi
secara normal ketika sedang leveraged oleh server CNC dalam botnet besar terdiri dari ratusan
ribu perangkat IOT.
Build
Membangun script naskah Bash sederhana yang menyediakan fungsionalitas standar
seperti membersihkan artefak, memungkinkan bendera compiler, dan bangunan debug atau
rilis binari via pergi dan compiler gcc. Rilis membangun mendukung kompilasi binari bot
untuk berbagai platform (prosesor & terkait set instruksi): SPC, MIPS, x86, ARM (lengan, 7,
5n), PowerPC, Motorola 6800, dan SuperH (SH4).
Command and Control (CNC)
Ini adalah perintah dan kontrol (CNC) logika bahwa server (s) berlaku untuk botnet. Itu semua
kode sumber Go yang mendefinisikan berbagai API dan fungsi perintah untuk mengeksekusi per
perangkat “bot”.
Admin
Ada login administratif dan fungsi didukung melalui admin.go ini adalah antarmuka
admin utama untuk masalah kontrol untuk mengeksekusi terhadap botnet (misalnya
membuat user admin, memulai serangan, dll). Permata favorit saya dalam sini adalah
pada membangun koneksi masuk ke server CNC pengguna diperlakukan dengan
STDOUT besar menyambut prompt “Saya suka chicken nugget”, atau setidaknya itulah
yang Google Translate disediakan dari prompt.txt yang dari sini pengguna harus
memberikan mandat yang tepat (username & password), yang divalidasi terhadap
MySQL DBMS melalui database.go
Setelah berhasil dikonfirmasi server memberikan kiasan bahwa ia
menyembunyikan koneksi dibajak dari netstat dan menghapus jejak akses pada mesin
(misalnya variabel lingkungan ditetapkan sebelumnya). Mencetak ke stdout bahwa itu
melaksanakan jejak penghapusan tersebut, namun pada kenyataannya tidak apa-apa.
Berikutnya panel admin akan memberikan hitungan update dari jumlah total bot
terhubung dan menunggu masukan perintah seperti jenis serangan, panjang durasi dan
jumlah bot. Ini adalah antarmuka utama untuk mengeluarkan perintah serangan untuk
botnet.
Daftar klien
The clientList.go berisi semua data yang terkait untuk mengeksekusi serangan termasuk
peta / hashtable dari semua bot yang dialokasikan untuk serangan diberikan ini. Kode
ini bertanggung jawab untuk menjaga beberapa antrian tergantung pada negara bot
eksekusi (misalnya siap menyerang, menyerang, menghapus / serangan saat selesai.
Attack
attack.go bertanggung jawab untuk menangani permintaan serangan diprakarsai oleh
server CNC. Ini mem-parsing perintah shell yang disediakan melalui Admin interface,
format & membangun perintah (s), mem-parsing target (s), yang dapat dipisahkan koma
daftar target, dan mengirimkan perintah ke bot yang tepat melalui api.go Hal yang
menarik adalah bahwa durasi ambang batas diperbolehkan bahwa per serangan per bot
dapat dijalankan pada (minimal 1 detik untuk maksimal 60 menit).
API
Api.go bertanggung jawab untuk mengirimkan perintah (s) ke bot individu dari server
CNC. Itu menegakkan beberapa aturan / batas pemeriksaan. Sebagai contoh, pengguna
CNC dialokasikan jumlah N bot maksimum mereka dapat digunakan dalam serangan
tertentu. Kecuali Anda seorang administrator Anda pasti batas pada jumlah bot Anda
dialokasikan.Selain itu akan memeriksa apakah atau tidak target yang diberikan telah
masuk daftar putih dalam database. Terakhir, logika akan memverifikasi negara bot.
Jika bot sudah digunakan akan dihapus / diabaikan dari permintaan serangan.
Main
main.go adalah titik masuk ke dalam biner CNC server. Hal mendengarkan koneksi
masuk TCP pada port 23 (telnet) dan 101 (tanggapan api bot). Jika sambungan diterima
pada port API itu ditangani sesuai dalam api.go. Sementara jika koneksi telnet didirikan
sumber / alamat IP yang masuk mengakuisisi ditambahkan sebagai mesin baru
dikompromikan dengan botnet (clientList).
Bot
Dalam direktori bot berbagai metode serangan server CNC mengirim ke botnet untuk
mengeksekusi DDoS terhadap target.
Attack UDP
Bot mendukung bentuk yang berbeda dari serangan atas User Datagram Protocol
(UDP). Kode sumber attack_udp.c mengimplementasikan serangan berikut yang akan
dilakukan oleh IOT (bot) perangkat tak terduga:
Generic Routing Encapsulation (GRE) Serangan
TSource Query - reflektif Denial of Service (bandwidth amplifikasi)
DNS Banjir melalui Query tipe A record (peta hostname ke alamat IP)
Banjir byte acak melalui paket polos
Serangan TCP
Seperti UDP ada beberapa jenis serangan didukung melalui Transmission Control
Protocol (TCP) dalam attack_tcp.c
SYN Banjir
ACK Banjir
PSH Banjir
Serangan HTTP
Selain banjir paket cacat dan / atau UDP atau TCP, Mirai bot juga mendukung DoS
melalui HTTP dalam attack_app.c yang setelah sambungan berhasil dibuat (tetap-hidup
didukung) bot akan mengirim HTTP GET atau POST terdiri dari berbagai cookie dan
data payload acak ketika berlaku (misalnya POST). Banyak pengguna-agen yang sah
dimanfaatkan untuk menyamar permintaan sebagai klien yang valid. Selama koneksi
diadakan (menerima respon valid) endpoint target terus dibanjiri permintaan HTTP
berasal dari bot.
Scanner
Selain serangan bot juga akan melakukan scanning kekerasan alamat IP melalui
scanner.c mencari perangkat lain untuk memperoleh dalam botnet. bot mencari alamat
IP yang tersedia (brute force melalui pilih set IP berkisar) dan menerapkan port scan
(SYN scan) terhadap hal itu.
Jika bot ini berhasil terhubung ke IP dan port yang terbuka maka akan berusaha untuk
otentikasi dengan menjalankan melalui kamus kredensial dikenal (brute kekuatan
AuthN) atau memeriksa apakah itu dapat terhubung langsung melalui telnet. Jika
otentikasi atau telnet sesi negosiasi berhasil bot kemudian akan mencoba untuk
mengaktifkan sistem shell / sh dan drop ke shell (jika diperlukan dan belum di shell).
Setelah akses shell didirikan bot akan memverifikasi masuk ke perangkat baru saja
diakuisisi. Jika diverifikasi dan bekerja sesi telnet informasi tersebut dilaporkan
kembali (alamat IP korban, pelabuhan, dan kredensial otentikasi) dengan perintah dan
server kontrol. default domain CNC server untuk cnc.chageme.com CNC server
memiliki corpus mesin yang tersedia yang sekarang dapat berhasil mengendalikan
seperti melihat cocok dengan mendorong ke bawah biner bot dan menjalankan perintah
serangan yang tepat.
Killer
killer.c yang menyediakan fungsionalitas untuk membunuh berbagai proses yang
berjalan pada bot (misalnya telnet, ssh, dll).
Main
main.c adalah titik masuk ke dalam executable bot ini. Hal ini bertanggung jawab untuk
membangun koneksi kembali ke server CNC, memulai serangan, menewaskan procs,
dan memindai perangkat tambahan dengan harapan menyita mereka dalam botnet.k
yang