Konferensi BLACK HAT USA. Botnet dari sejuta browser. Bagian 1Matt Johansson: Sekarang saya akan menunjukkan kepada Anda bagaimana memasukkan kode ini. Ada banyak jaringan iklan, tetapi kami memilih yang ini karena memungkinkan kami melakukan apa yang kami inginkan.

Anda dapat memilih gambar spanduk dengan ukuran yang cukup besar, masukkan di sini dan berikan URL, sehingga setelah mengklik spanduk, pengguna pergi ke situs yang diinginkan. Pemilik jaringan iklan ini menyediakan opsi JavaScript HTML, kedengarannya sangat bagus.
Kami mulai dengan apa yang ditunjukkan di bagian atas slide dan harus melalui seluruh proses persetujuan, yang mungkin yang paling sulit dalam penelitian kami. Ini terjadi bukan karena alasan yang Anda pikirkan, tetapi karena mereka tidak mewakili JavaScript dengan baik dan tidak terlalu peduli. Bahkan, mereka memastikan bahwa iklan itu terlihat cantik dan berfungsi seperti iklan, sehingga saya tidak dapat terus menempuh jalan tak kasat mata kami dan hanya menandai suatu tempat di latar belakang kode JavaScript mistis kami.
Kami memasukkan skrip eksekusi kode yang dikembangkan Jeremy, Anda melihatnya di kotak teks di jendela bawah, dan disetujui oleh pengiklan tanpa masalah. Namun, kami ingin dapat mengonfigurasi ulang kapan saja untuk mendiversifikasi penelitian kami, karena hal-hal seperti URL sering berubah. Tetapi jika kami ingin mencoba sesuatu yang baru, kami harus menghidupkan kembali proses persetujuan. Tidak butuh banyak waktu, tapi itu hanya mengganggu, karena kadang-kadang mereka menyetujuinya, dan kadang-kadang mereka tidak suka sesuatu tentang itu dan kami harus melakukan perubahan.

Misalnya, setelah aplikasi email membuka tag skrip, semua kode JavaScript menghilang, dan saya harus memindahkannya. Saya harus menjelaskan kepada mereka mengapa perlu menempatkan kurang dari 1 tanda di sini, dan ada 1 tanda lagi, setelah itu mereka mengatakan bahwa iklan tidak ditampilkan dengan benar, secara umum, itu menyenangkan.
Jadi, kami menempatkan kode secara langsung di spanduk iklan, hanya memasukkan skrip sumber tempat file kami berada, yang dapat kami ubah kapan saja tanpa persetujuan dari pemilik jaringan iklan. Jadi, bahkan jika mereka entah bagaimana mempekerjakan orang yang berpengalaman dalam analisis statis kode JavaScript, kita bisa mengubah file kita menjadi JavaScript yang benar-benar jinak. Jadi akan sangat sulit untuk mendeteksi penipuan kami dengan metode pengenalan kode berbahaya ini.
Slide berikut menampilkan iklan banner kami.

Mereka menyetujui salah satu opsi desain ini. Saya terlalu malas untuk mencari gambar lain, jadi saya hanya mengambil ide ini dari situs web perusahaan WhiteHat. Teksnya sangat sederhana: "Dapatkan periode uji coba 30 hari gratis, minta sekarang!", Jadi klik banner, itu benar-benar gratis!
Jeremy Grossman: di dalam kode spanduk adalah tag skrip untuk lokasi file campaign.js kami di:
ec2-23-20-141-160.compute-1.amazonaws.com/campaign.js , yang terlihat seperti ini:
for (var i = 0; i < 10000; i++) { var img = new Image(); var url = 'http:
Kami dapat mengubahnya kapan saja dan kapan saja tanpa persetujuan. Kami tidak tahu berapa lama browser ini harus melihat iklan kami di jaringan iklan khusus ini, jadi alih-alih 100, 200 atau 300 tampilan, kami segera berhenti di 10.000, berharap yang terbaik.
Matt Johansson: mulai dari yang kecil, kami ingin melihat apakah kami dapat meminta pengguna menghubungi kami. Kami dapat melihat ini di ujung jaringan kami, kami melihat semua orang yang mengikuti tautan kami karena permintaan datang dari browser mereka dan kami dapat menentukan alamat IP mereka. Pertama, kami ingin melihat bagaimana kami menggunakan hal ini dan bagaimana kode bekerja, karena itu bukan layanan tempat Anda membayar untuk klik, kami membayar untuk waktu menonton yang dijamin.
Jeremy Grossman: ini adalah screenshot lain, ini adalah demonstrasi βmudahβ yang kami persiapkan khusus untuk BlackHat.

Kiri bawah Anda melihat server Amazon AWS, yang terus berfungsi sekarang. Metrik awal ditunjukkan di bawah ini: waktu kerja server di jaringan iklan Matt adalah 8 menit, jumlah total akses adalah 4130, ini bukan jumlah pengunjung unik ke situs, tetapi permintaan web aktual dengan volume lalu lintas total 1,9 MB, jumlah permintaan simultan adalah 5. Kami melihat protokol untuk mendaftarkan metrik, log server web, serta jumlah menit waktu nyata kunjungan ke situs yang kami bayar.
Matt Johanson: jika Anda melihat slide berikutnya, Anda dapat melihat lompatan yang terjadi antara 8 dan 10 menit - jumlah total akses meningkat menjadi 15 ribu.

Semua ini dapat dilakukan hanya dengan 1 iklan yang ditempatkan di jaringan periklanan. Jika Anda bisa menambahkan lebih banyak dana ke jaringan iklan, itu akan terlihat seperti "puncak di lembah." Saya ingin mengatakan bahwa semua ini menjadi mungkin berkat menit peramban yang dibeli, dan dalam waktu 10 menit dari server yang bekerja dengan jaringan periklanan, kami menerima sekitar 15 ribu permintaan.
Kemudian kami memperhatikan hal yang menarik. Biarkan saya mengingatkan Anda bahwa kami tidak memiliki jaringan iklan tradisional, kami membayar menit peramban, yaitu, seseorang memberi kami peramban mereka untuk menjadi bagian dari jaringan ajaib ini, pada kenyataannya, mereka menjual waktu peramban dan waktu prosesor mereka kepada kami. Kami memutuskan untuk melihat apa yang terjadi di latar belakang jaringan ini, browser mana yang digunakan di sana, kami ingin bermain sedikit dengan Firefox dan sejenisnya.
Dan kemudian kami menemukan bahwa sejumlah besar panggilan dari PhantomJS datang ke jaringan kami. Siapa yang akrab dengan PhantomJS? Saya hanya melihat beberapa orang.

PhantomJS adalah browser tanpa kepala, yaitu browser yang dapat dijalankan di perangkat tanpa layar, seperti server. Artinya, ini bukan seseorang yang duduk di Internet dan mengklik tab peramban di desktopnya, tetapi robot. Ini dapat digunakan untuk pengujian unit dan diluncurkan dari baris perintah. Artinya, seseorang yang memimpin gimnya di sistem kami, berusaha mendapatkan menit. Jadi orang lain menyalahgunakannya dengan berbagai cara, dan itu menyenangkan untuk ditonton. Kami memastikan bahwa menitnya bukan orang yang mengklik di browser mereka, tetapi PhantomJS bot.
Jeremy Grossman: slide berikut menunjukkan dinamika proses: dalam 15 menit kami menerima 28.000 permintaan, dalam 20 menit hampir 44.000 permintaan, dalam 22 menit jumlah permintaan mencapai 61500.
Matt Johansson: Anda mungkin memperhatikan bahwa total lalu lintas sangat kecil, kami hanya mengirim mereka URL yang tidak ada, jadi 8,5 MB dalam 20 menit berarti bahwa pengguna baru saja mendapatkan kesalahan 404.
Jeremy Grossman: hampir 26 menit, dan kami mendapatkan 82 ribu tampilan, kemudian 35 menit, 9 permintaan simultan dan hampir 102 ribu akses.
Matt Johansson: kami menyimpan uang kami sampai akhir untuk membuat pukulan tegas dengan "tayangan" kami, yang harganya hampir $ 20, setelah jaringan iklan bekerja selama 30 hingga 45 menit dalam mode normal. Sebenarnya, saya bermaksud menghabiskan maksimal $ 10 per hari untuk studi ini. Jadi, setelah 43 menit, kami memiliki 255 permintaan, 133,5 ribu akses, dan jaringan kami mencapai puncak lalu lintas dalam 54 menit - 256 permintaan dan 244425 kunjungan.

Lihatlah permintaan simultan yang kami targetkan - 255, server Apache tidak akan bekerja lebih cepat, kemudian tangkapan layar menunjukkan bahwa server tidak ingin reboot untuk memperbarui data metrik. Setelah jumlah hit mencapai 130 ribu, dan lalu lintas berjumlah 36 MB, kami memutuskan untuk meningkatkan throughput server sedikit dan mengarahkan mereka untuk mengunduh aplikasi "Aplication Security Specialist (ASS)", jadi sekarang kami memiliki "penilaian" yang lebih bersertifikat. di bidang keamanan. Setelah itu, volume lalu lintas meningkat tajam menjadi 117 MB. Setelah 55 menit, kami memiliki 256 ribu kunjungan dengan lalu lintas 253 MB.
Jeremy Grossman: akhirnya, setelah 59 menit 48 detik, yaitu, satu jam setelah server mulai bekerja dan 20 menit setelah gambar diunduh, jumlah lalu lintas mencapai 1 GB. Setelah itu, kami memutuskan untuk membiarkannya sebentar, misalnya, selama tujuh jam, membiarkannya bekerja.
Pada slide berikutnya Anda melihat hasil sistem kami dalam 8 jam: lebih dari 4 juta kunjungan, 114,7 GB lalu lintas.
Matt Johansson: kami membuat kesalahan yang sama dengan pertama kali kami - kami pergi makan malam. Jadi sebelum kami mulai bermain jaringan iklan, Anda tahu, kami memiliki, misalnya, 30.000 tampilan per banyak jam, dan kami masih mengacaukan kode kami, jadi kami pikir kami akan mendapatkan sepuluh ribu tampilan lagi selama waktu makan siang. Ketika kami kembali, kami melihat, ya, baik-baik saja, sedikit lebih dari 30 ribu, tetapi kemudian kami menyadari - bukan 30 ribu, tetapi urutan besarnya lebih - 300.000 tampilan!
Jika Anda menghabiskan lebih banyak uang, Anda akan mendapatkan lebih banyak "jejak" jauh lebih cepat, tetapi dalam kasus kami setelah 18 jam 42 menit dari server kami memiliki hampir satu juta tampilan dan 240 GB lalu lintas, sehingga biaya hosting Amazon lebih mahal daripada peretasan iklan jaringan.
Jeremy Grossman: akhirnya, setelah 1 hari dan 6 jam dengan lalu lintas 241 GB, kami memiliki hampir satu setengah juta tampilan. Seperti yang dapat Anda lihat dari slide ini, pada saat itu kami menggunakan hampir semua menit kami dalam sistem, dan memutuskan bahwa kami tidak perlu lagi menit. Namun, kami tidak tahu bagaimana keadaan di sana dan apa yang akan terjadi di tengah malam, jadi kami masuk ke e-commerce demi BlackHat dan membeli satu menit lagi.
Matt Johansson: Saya tidak merekomendasikan ini kepada Anda, karena saya harus melanggar peraturan saya untuk tidak menghabiskan lebih dari $ 10 sehari.

Jeremy Grossman: Sekarang kami memiliki hampir 250 GB lalu lintas. Anda melihat garis berjalan cepat di layar, ini adalah log server Apache, lalu Anda melihat tangkapan layar "Halaman ini tidak tersedia", karena server tidak dapat mengatasi beban dan mati dengan sukses. Kita dapat melewati semua log sampai akhir, tetapi itu akan memakan waktu terlalu banyak. Jadi, untuk semua kesenangan, kami hanya membayar $ 20 dan pada akhirnya kami mendapat kegagalan layanan DoS klasik, yang dinyatakan dalam penolakan permintaan upload gambar. Setelah itu, saya baru saja mematikan pemuatan gambar dengan hanya mengatur ulang pengaturan. Saya bisa mengaktifkannya lagi, tetapi saya tidak ingin menunjukkan kata sandi root Anda.
Matt Johansson: Harap perhatikan bahwa kami menonaktifkan gambar karena kami melihat bahwa kunjungan aktual melambat saat kami menyediakan gambar. Kami bahkan belum menghabiskan seluruh batas koneksi. Kami tidak menggunakan Firefox untuk retasan ini, kami hanya memiliki 6 koneksi simultan ke browser. Kami sangat gugup, jadi kami tidak menekan tombol merah besar ini untuk memulai perayapan FTP, karena kami tidak tahu apa yang bisa terjadi. Kami memutuskan pada metode hukum, tetapi bahkan penggunaan metode hukum mengesankan kami dengan adil.

Karena itu, tanpa mencoba metode hacker dan tanpa menghabiskan banyak uang, Anda dapat mencapai hasil yang layak. Slide menunjukkan bahwa setelah 1 hari, 20 jam dan 40 menit, 243 GB lalu lintas dihabiskan untuk tampilan, yaitu volumenya tetap tidak berubah, karena gambar tidak lagi dimuat. Ketika kami bertemu di sini pagi ini sebelum konferensi, saya berpikir bahwa kami akan memiliki sekitar 15 juta, jadi sekarang, setelah beberapa jam, kami baru saja mendapat 20 juta tampilan halaman dengan kesalahan 404.
Jeremy Grossman: satu
- satunya alasan kami tidak dapat "memompa" lebih banyak lalu lintas adalah kinerja server. Kita bisa menggunakan platform yang lebih kuat dan mencapai 100 juta atau miliar tampilan, tetapi untuk satu server Apache yang relatif lambat ini adalah tugas yang mustahil.
Matt Johansson: oleh karena itu, hasil kami tidak terlalu mengesankan, tetapi kalian bisa mendapatkan ide tentang proses penskalaan, jadi merusak situs normal tidak akan membutuhkan banyak uang.
Jeremy Grossman: yah, sekarang kita telah mencapai hasil ini, kami akan mencoba untuk memotong batasan browser pada jumlah koneksi menggunakan FTP, menjalankan skrip kami dan melihat apa yang terjadi.
Matt Johansson: Ya, banyak orang datang ke Las Vegas untuk menghabiskan uang mereka pada mesin slot, dan di sini kita menghabiskan uang kita untuk jaringan periklanan.
Jeremy Grossman: Jadi, kami telah memutarkan lebih dari 400 koneksi FTP ke server Amazon, jadi siapa yang tahu apa yang akan terjadi sekarang?
Kami mendapatkan metrik server, lalu menghilang lagi, halaman web tidak dapat diakses lagi, tetapi Anda dapat melihat seberapa cepat garis log berkedip. Mari kita reboot, karena server sebenarnya sudah mati dan browser membutuhkan waktu habis.
Matt Johansson: kami tidak tahu bagaimana FTP berperilaku dalam kaitannya dengan jaringan iklan dan kami tidak tahu apa yang akan terjadi jika itu tidak menggunakan bot, tetapi browser pengguna nyata. Saya harap kalian mengerti bahwa kami tidak meretas siapa pun, tetapi hanya mengetahui cara kerja jaringan, untuk tujuan apa kami menyewa server secara khusus. Kami sepenuhnya mematuhi sisi hukum masalah ini, dan Anda mendapat gagasan tentang cara bersenang-senang di jaringan iklan.
Kami bahkan tidak mencoba untuk melanggar hukum, melalui proses persetujuan ini, kami memiliki JavaScript yang relatif jinak dan tidak berbahaya, kami bahkan tidak menyentuh jaringan periklanan "dewasa", meskipun Anda melihat bahwa mereka sering tidak peduli dengan apa yang terjadi dengan spanduk iklan.
Jeremy Grossman: Saya mendengar pertanyaan yang bagus - dari mana log Apache berasal?
Memang, secara default di Apache tidak ada log. Mungkin saya akan membicarakan ini nanti. Kami memiliki Austin Apache, saya baru saja mengunduh dan menginstalnya. Biarkan saya menjalankannya - Anda lihat, tidak ada log di sini, ini adalah server lokal. Di server Amazon, Anda melihat kesalahan 408 - server tidak merespons karena batas waktu untuk menunggu respons terhadap permintaan halaman telah terlampaui. Pengiriman HTTP tidak digunakan di sini, tetapi port 80 masih terbuka dan menampung banyak koneksi. Mari kita kembali ke slide kami - semuanya baik-baik saja di sini, Anda dapat menutupnya.
Jadi, Anda melihat apa yang kami lakukan sambil tetap berada di sisi kanan hukum. Jelas, seperti kata Matt, kita bisa melangkah lebih jauh, seperti yang biasanya terjadi di dunia keamanan informasi. Jaringan iklan yang Anda kenal memiliki banyak pengembang perangkat lunak. Tapi percayalah, pada kenyataannya mereka bukan pengembang perangkat lunak, mereka hanya mengelola jaringan iklan mereka pada platform iklan mereka.

Salah satu alat yang mereka gunakan secara luas adalah OpenX - server iklan, atau mesin iklan. Ini adalah perangkat lunak sumber terbuka.
Ini digunakan oleh banyak jaringan periklanan, dan seperti yang biasa terjadi, beberapa minggu yang lalu seseorang menemukan kerentanan serius di dalamnya yang menempatkan jutaan pengguna platform iklan dalam bahaya. Server iklan ini dapat diretas dengan mengeksekusi kode PHP acak, yang menciptakan kondisi untuk serangan skrip lintas situs XSS.
Jadi, jika Anda tidak ingin membayar uang Anda kepada mereka, tetapi hanya ingin menggunakan jaringan iklan, Anda dapat melakukan ini dengan hanya meretasnya dan mengunduh exploit di sana, sehingga Anda dapat mengontrol semua orang yang mulai melihat iklan Anda.
Matt Johansson: Kami sebenarnya baru saja berinvestasi pada mesin slot yang menempatkan iklan kami, dan sangat sulit untuk mengetahui siapa yang membuat iklan ini, yang merupakan iframe. Kami menyelidiki bagaimana iframe memecahkan kode dan merawat peretasan peramban, tetapi inti dari penelitian kami adalah bahwa kami mencoba menggunakan peramban sehingga orang lain dapat meretas diri mereka dengan tangan mereka sendiri.
Jeremy Grossman: penelitian ini akan dilanjutkan, kami menggunakan server Amazon kami dan mencoba menyatukan beberapa mitra kami untuk mencoba menyerang situs dengan perlindungan DDoS dan melihat berapa banyak lalu lintas yang dapat kami arahkan ke mereka, karena kami tidak bertahan, tetapi menyerang - inilah esensi penelitian kami.
Matt Johansson: Kami akan mencoba melihat cara memecahkan hash jaringan periklanan, jadi kami memiliki metrik yang memberikan ide bagus bahwa JavaScript dapat melakukan ini secepat yang kami inginkan. Kita dapat menghubungkan ini dengan jumlah dolar untuk mengetahui berapa banyak hash MD5 dapat dipecah untuk 50 sen.
Jeremy Grossman: Saya akan ulangi lagi - kita dapat memobilisasi satu juta browser, mungkin tidak pada saat yang sama, tetapi Anda bisa mendapatkan satu juta browser ini untuk sekitar $ 500 dan membuat botnet yang kuat.
Saya telah bekerja cukup banyak di bidang keamanan web, dan saya ingat bahwa saya telah lama mengatakan bahwa kita harus meretas ke Internet untuk memastikan keamanannya, meretas model bisnis yang ada di Internet untuk mengetahui apa dan bagaimana melindungi mereka dari. Dan Kaminsky memberi tahu saya 21 Desember 2010: βTidak ada yang bisa meretas Internet, man. Tidak sekarang, tidak selamanya. β Sampai sekarang, dia benar.
Tapi sekarang kita melihat masalahnya. Saya tidak tahu masalah siapa itu - jaringan iklan, atau masalah penyedia browser, atau masalah pemilik situs, tetapi itu benar-benar ada. Dan kita tidak tahu siapa yang bertanggung jawab dan siapa yang harus memperbaikinya.
Matt Johansson: kami menunjukkan kepada Anda apa yang dapat Anda lakukan dengan hanya mengunggah gambar ke jaringan iklan, tetapi kami tidak melangkah lebih jauh, kami tidak membahayakan orang, meskipun kami memiliki setiap kesempatan untuk melakukan ini. Dan kami tidak tahu bagaimana melindungi diri dari hal ini - kami baru saja menunjukkan kepada Anda mekanisme yang dapat dimanfaatkan penyerang.
Jeremy Grossman: jadi, seperti yang Anda lihat, ada alasan mengapa browser menawarkan untuk menggunakan pemblokir iklan. Aktifkan pemblokir iklan dan browser Anda tidak akan rentan terhadap serangan jenis ini.
Matt Johanson: Atau sebagai alternatif, putuskan sambungan dari Internet sama sekali.
Jeremy Grossman: Saya mendengar pertanyaan, berapa biaya server Amazon - sekarang, mungkin, sekitar $ 100.
Matt Johanson: Hari ini, ketika kami benar-benar membuang uang ke jaringan periklanan, sebelum kinerja kami, kami membayar $ 75, dan saya mencoba memeras segala yang mungkin dari mereka.
Dan saya akan menjawab pertanyaan terakhir tentang alamat IP - ketika kami menerima persetujuan dari spanduk kami, kami melihat alamat IP dari orang yang membuat persetujuan ini, tetapi dia tidak bisa melihat alamat IP kami dan tidak bisa mengetahui apa-apa tentang kami kecuali alamat email surat.
Terima kasih kepada semua orang yang datang untuk mendengarkan kami!
Terima kasih telah tinggal bersama kami. Apakah Anda suka artikel kami? Ingin melihat materi yang lebih menarik? Dukung kami dengan melakukan pemesanan atau merekomendasikannya kepada teman-teman Anda,
diskon 30% untuk pengguna Habr pada analog unik dari server entry-level yang kami buat untuk Anda: Seluruh kebenaran tentang VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps dari $ 20 atau bagaimana membagi server? (opsi tersedia dengan RAID1 dan RAID10, hingga 24 core dan hingga 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps hingga Desember secara gratis ketika membayar untuk jangka waktu enam bulan, Anda dapat memesan di
sini .
Dell R730xd 2 kali lebih murah? Hanya kami yang memiliki
2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV dari $ 249 di Belanda dan Amerika Serikat! Baca tentang
Cara Membangun Infrastruktur Bldg. kelas menggunakan server Dell R730xd E5-2650 v4 seharga 9.000 euro untuk satu sen?