Saya bertanya-tanya apakah ada alat atau teknik untuk menjalankan executable di lingkungan yang terisolasi, mungkin di mesin virtual. Ketika program sedang berjalan, saya ingin dapat mengaudit aplikasi, yaitu melihat semua yang dapat dieksekusi (file dan akses jaringan).
Dengan melakukan itu saya ingin dapat memeriksa apakah executable itu berbahaya, yaitu melakukan operasi yang tidak seharusnya (baca / tulis file, dengarkan / sambungkan ke port jaringan, ...).
Saya tidak keberatan dengan antarmuka grafis.
sandbox somebinary
dansandbox
program imajiner akan mencatat semua file yangsomebinary
dibaca atau ditulis, semua IP / port yang terhubung, data yang ditransfer dll. Itu akan menjadi hal yang berguna untuk dimiliki, saya juga ingin tahu apakah ada sesuatu seperti ini (dan, sebenarnya, tanpa alat seperti itu mengamati program yang berjalan di VM tidak ada gunanya seperti Anda tidak bisa mengatakan apa yang dilakukannya di sana). Pertanyaan bagus.Jawaban:
Ya, ini disebut virtualisasi Aplikasi .
LXC (Linux Containers) adalah alat yang biasa digunakan untuk mengatur ini. Ini memungkinkan Anda untuk mengatur jaringan yang benar-benar terpisah untuk aplikasi ini dan "kotak pasir" itu menjadi semacam mesin virtual, seperti chroot. Ini terutama untuk tujuan keamanan ("penjara"), bukan untuk audit.
Saya pikir itu sedikit di luar ruang lingkup pertanyaan untuk menjelaskan wadah LXC lengkap serta bagaimana mengauditnya dengan tepat. Di bawah ini adalah sedikit tentang cara memulai.
Ini dapat dilakukan dengan menggunakan
strace
dan saya telah mengajukan pertanyaan yang sama di Unix & Linux:Seperti yang dijawab di sana, pada dasarnya turun
Penting: setelah Anda melihatnya terjadi, kerusakan sudah terjadi.
Wadah aplikasi LXC
Dari artikel ini . Turun ke:
lxc-macvlan.conf
file konfigurasi:Mulai gunakan
lxc-execute
:Perhatikan bahwa LXC menawarkan jenis wadah sistem dan aplikasi. Anda sedang mencari wadah aplikasi di sini.
sumber
/sys
tidak divirtualisasikan dan perubahan yang dibuat/sys
dari wadah dilakukan ke/sys
host. Melakukan pencarian cepat di Web, ada beberapa artikel yang mendokumentasikan cara "melarikan diri" dari sebuah wadah. LXC akan menjadi solusi yang baik untuk masalah ini, tetapi saat ini tidak, dan tidak boleh digunakan sebagai alat keamanan.lxc.mount
opsi. Ini berarti bahwa seluruh sistem file pengguna dapat diakses oleh proses yang dapat dieksekusi.Apa yang Anda cari adalah alat yang menunjukkan bagaimana suatu program berinteraksi dengan sistem (lebih khusus, dengan kernel). Program berinteraksi dengan sistem menggunakan syscalls. Contoh-contoh syscalls adalah:
open
- Digunakan untuk membuka file;read
danwrite
- digunakan untuk membaca / menulis dari / ke deskriptor file;connect
- Digunakan untuk menghubungkan socket ke peer;man syscalls
).Intinya adalah: syscalls dapat dilacak menggunakan
ptrace(2)
. Jadi, pada dasarnya, Anda mencari alat yang dibangun di sekitarptrace
. Salah satu alat tersebut adalahstrace(1)
, yang merupakan aplikasi terminal yang mengambil perintah sebagai argumen dan keluaran:Outputnya dalam mode-C. Berikut ini sebuah contoh:
Di sana Anda melihat bahwa
cat test
membuka file bernamatest
, membaca kontennya (hello
) dan menempatkannya pada output standar.strace
dapat menghasilkan banyak output, jadi pastikan untuk membaca halaman manualnya (man strace
), terutama dokumentasi dari-e
output yang akan membuat Anda melihat hanya syscalls yang Anda minati.Sayangnya, saya tidak mengetahui alternatif grafis atau mudah digunakan. Jika Anda ingin mencarinya,
ptrace
harus menjadi salah satu kata kunci pencarian Anda.Tentang isolasi, ada banyak teknologi di luar sana. Chroots, wadah Linux (yang saat ini sedang dalam pengembangan dan tidak lengkap), virtualisasi perangkat lunak dan paravirtualisasi adalah yang paling banyak digunakan. Namun ini adalah topik yang terlalu besar untuk dibahas. Saya sarankan membuka pertanyaan baru jika Anda ingin memiliki lebih banyak detail.
sumber
Lihatlah AppArmor . Anda dapat menambahkan profil terbatas untuk yang dapat dieksekusi dan memasukkannya ke mode "mengeluh", di mana tindakan akan diizinkan tetapi dicatat, yang menurut saya memenuhi persyaratan Anda.
Tetapi perhatikan bahwa ini tidak cukup. Biner jahat yang pintar mungkin dapat mendeteksi bahwa ia sedang diamati dan tidak melakukan tindakan jahat kecuali jika tidak diamati.
AppArmor melangkah lebih jauh dari ini dan memungkinkan aplikasi untuk selamanya ditahan hanya untuk operasi yang disetujui. Aplikasi yang berakhir di Pusat Perangkat Lunak Ubuntu dikirimkan bersama profil AppArmor.
sumber
Seperti yang telah Anda identifikasi, mesin virtual akan lebih baik untuk memberikan isolasi, terutama jika Anda memiliki alasan untuk percaya bahwa executable itu berbahaya. Tetapi bahkan ini tidak sempurna, karena kerentanan dalam platform virtualisasi (baik perangkat keras maupun perangkat lunak) dapat dieksploitasi oleh kode jahat untuk keluar. Berikut adalah contoh kerentanan virtualisasi dunia nyata: http://www.kb.cert.org/vuls/id/649219
sumber
Anda dapat membuat snap .
Terkunci "dikurung dari OS dan aplikasi lain melalui mekanisme keamanan, tetapi dapat bertukar konten dan fungsi dengan bentak lain sesuai dengan kebijakan berbutir halus yang dikendalikan oleh pengguna dan standar OS." (dari http://snapcraft.io/docs/snaps/intro )
Ini memberikan isolasi lebih lanjut selain AppArmor, misalnya menggunakan seccomp juga.
Selain itu, sebuah snap dapat menjadi mandiri untuk memudahkan distribusi dan pembaruan atom pada sistem Anda.
sumber
Terima kasih, jawabannya sangat membantu ...
Saya juga menemukan ini: https://downloads.cuckoosandbox.org/docs/
Yang merupakan alat yang sangat menarik untuk menganalisis malware saat ia duduk di VM
sumber