User-Agent dengan komponen yang dikodekan base64?

8

(Pertanyaan hadiah di bagian bawah)

Saya mengalami masalah dengan klien yang mengakses situs kami, dan penyebab utamanya adalah bahwa WAF (Web Application Firewall) tidak menyukai string Agen-Pengguna mereka:

User-Agent: Mozilla/5.0 (X11; Linux i686; rv:34.0; C7QcSBPWTsrpX5YLvVZMqiujEZLWPtOYk3tDZ9WhW18=) Gecko/20100101 Firefox/34.0

Dalam hal ini, string yang dikodekan base64 memicu false positive dalam WAF yang menganggap User-Agent adalah libwww-perl. String base64 tidak men-decode ke teks yang dapat dibaca.

  • Apakah memiliki string yang dikodekan base64 di dalam User-Agent normal atau tidak biasa?
  • Apakah penggunaan string base64 di dalam Agen-Pengguna dilindungi oleh RFC atau praktik vendor utama?

Saya mencoba memahami apa yang terjadi di sini; Saya tidak merasa tanda tangan WAF benar-benar keluar dari jalur ke objek, jadi saya lebih suka tidak hanya menonaktifkannya, tapi saya belum pernah melihat string User-Agent semacam ini sebelumnya, jadi saya lebih mengerti lebih baik bagaimana umum dan / atau kasus penggunaan yang sah ini.

Situs ini dirancang untuk digunakan oleh manusia dengan browser - ini bukan API atau semacamnya - dan telah dilaporkan kepada saya bahwa pengguna telah mencoba mengakses situs dengan "FF / IE / Chrome" dan gagal. Namun, saya menunjukkan koneksi yang berhasil dari IP klien yang sama dengan agen-pengguna Opera:

User-Agent: Opera/9.80 (X11; Linux i686) Presto/2.12.388 Version/12.16

Agak aneh bahwa pengguna melaporkan telah mencoba IE tetapi semua string User-Agent yang saya lihat tampaknya Linux. (Seperti biasa, kontak dengan pengguna akhir dimediasi melalui beberapa pihak sehingga saya tidak dapat sepenuhnya mempercayai apa pun yang saya dengar). Kemungkinan juga IP adalah sisi keluar dari proxy web kelas bisnis, yang akan menjelaskan mengapa saya melihat beberapa Opera bekerja untuk seseorang sementara orang lain melaporkan masalah dari IP yang sama.

Memperbarui

Terinspirasi oleh contoh @PlanetScaleNetworks, saya mencari-cari di Google string dan dari sana akhirnya menggunakan UA Tracker untuk mencari string base64 (atau, subset dari mereka yang berlapis - saya mencari "=)"). Ini mengembalikan sekitar 20 Agen-Pengguna:

Pencarian Pelacak UA untuk "=)"

Saya akan menambahkan hadiah untuk pertanyaan ini, dan ruang jawaban yang saya cari adalah "jenis perangkat lunak apa yang meletakkan string base64 ke dalam User-Agent, dan mengapa? Dan apakah ada cap legitimasi untuk praktik ini? "

Titik kecil:

Pengguna telah mengatasi masalah kami dengan menggunakan plugin browser untuk memodifikasi User-Agent mereka, jadi ini sekarang merupakan masalah akademis - tapi saya pikir ini adalah masalah akademis yang menarik :)

gowenfawr
sumber
1
Apakah Anda memiliki detail lebih lanjut? Apakah alamat IP mereka dan agen ini sebenarnya dari ISP, atau apakah itu server ke API?
dhaupin
@ Davidupin, bukan server / API, pasti (yang merupakan salah satu alasan saya merasa nyaman mengatakan bahwa tanda tangan WAF "no libwww-perl" tidak tidak masuk akal). Saya telah memperbarui pertanyaan dengan info lebih lanjut yang mungkin bisa membantu.
gowenfawr
Apa hubungan Angkatan Udara Wanita dengan ini? Atau apakah saya tidak mengerti apa yang Anda bicarakan?
Rob
@Rob "Web Application Firewall"
Analog
@gowenfawr Saya menemukan berbagai log juga. Mungkinkah mereka memanfaatkan semacam profil log? Atau, mungkin asin sebagai string Shellshock yang dijinakkan untuk kembali lagi nanti? blog.cloudflare.com/inside-shellshock
dhaupin

Jawaban:

3

Jika semua lalu lintas lain dari alamat IP ini sah, maka saya tidak akan khawatir tentang aturan WAF yang dipicu. Itu tidak diterjemahkan menjadi string yang dapat dibaca manusia. Jadi itu kemungkinan dimasukkan oleh perangkat proxy untuk tujuan pelacakan.

Mengenai kekhawatiran Anda tentang RFC, itu ditulis sebagai rekomendasi untuk bagaimana bidang harus digunakan meskipun ada sedikit konsistensi antara platform. Yang sedang berkata, itu adalah nilai yang ditentukan oleh klien yang tidak dapat dipercaya karena itu sepele untuk dimodifikasi. Oleh karena itu diperlukan aturan WAF.

Ada dua area di mana saya melihat string User-Agent menjadi perhatian:

  1. Buffer Overflow - mencoba meluap buffer di server atau di dalam situs web / aplikasi. Ini jelas tidak terjadi dalam contoh yang diberikan.
  2. Script / Code Injection - menyediakan skrip sebaris, referensi ke file jarak jauh, dll. Sekali lagi, jelas tidak berlaku untuk situasi Anda.

Jika Anda benar-benar khawatir / paranoid, ubah string User-Agent dari sistem Anda sendiri ke yang ini dan jelajahi halaman yang sama saat menggunakan proxy seperti Fiddler, Burp, dll. Bagaimana permintaan / tanggapan dibandingkan dengan menggunakan dokumen asli Anda String Agen-Pengguna?

Saya tidak akan merekomendasikan memblokir alamat IP apa pun berdasarkan contoh yang diberikan kecuali semua lalu lintas dari IP ini berbahaya. Itupun seharusnya hanya diblokir untuk waktu yang terbatas. Lebih baik lagi, buat "halaman web yang diblokir" dengan perincian cara diblokir. Arahkan lalu lintas ke sana sampai dihubungi.

pengguna2320464
sumber
Meskipun jika "Pengguna telah mengatasi masalah dengan menggunakan plugin browser untuk memodifikasi User-Agent mereka" maka itu akan mengesampingkan ide "dimasukkan oleh perangkat proxy"?
MrWhite
@ w3dk mungkin proxy perangkat keras / jaringan namun mungkin masih ada perangkat lunak pada sistem yang sengaja melakukan perubahan ini. Menjadi lebih mudah untuk memonitor lalu lintas keluar jika semua browser menggunakan Agen-Pengguna yang sama. Dengan demikian menghubungkan string unik ke pengguna dan / atau sistem. Karena ada hubungan bisnis yang terbaik untuk melibatkan staf dukungan teknis mereka untuk mengesampingkan hal ini karena bertentangan dengan instalasi default Windows.
user2320464
2

Apakah memiliki string yang dikodekan base64 di dalam User-Agent normal atau tidak biasa?

Menggali daftar agen Pengguna di WhichBrowser . Sangat masuk akal untuk menyimpulkan bahwa ini jarang terjadi, tetapi mungkin akibat infeksi malware.

Namun saya juga menyalahgunakan perilaku ini untuk menambahkan lapisan keamanan lain ke situs saya sendiri di masa lalu, di mana hanya beberapa klien dengan token base64 UA tertentu yang bahkan akan ditampilkan halaman login. Demikian pula sidik jari unik ini juga dapat digunakan untuk melayani halaman serangan atau mengalihkan di tempat lain.

Apakah penggunaan string base64 di dalam Agen-Pengguna dilindungi oleh RFC atau praktik vendor utama?

Tidak secara khusus. Tidak ada yang didokumentasikan dalam informasi vendor peramban Gecko. Dalam UA yang Anda berikan, base64 itu bukan bagian dari informasi produk, tetapi sebuah komentar. Tampaknya tidak ada batasan bidang komentar meskipun memiliki base64 dalam informasi produk tidak diperbolehkan RFC7231karena dapat dilihat sebagai informasi yang tidak perlu ditambahkan ke string UA.


WAF Anda mungkin tidak dapat mengidentifikasi UA sebagai sesuatu yang spesifik dan mungkin kembali libwww-perlkarena filternya tidak spesifik (false positive) dan terlalu senang dengan bit Linux / X11 karena tidak dapat memahami komentar base64.

kcrk
sumber
Terpilih dan dianugerahi hadiah karena posting ini memiliki info paling langsung menjawab pertanyaan, tetapi menunda menerima jawaban karena saya masih berharap seseorang akan melacak perangkat lunak yang bertanggung jawab dan memberikan alasan untuk perilaku mereka. Saya berterima kasih dan menghargai jawaban Anda karena membawa data RFC dan 'dunia nyata'.
gowenfawr
WAF secara kebetulan menemukan libwww-perl hanya karena string base64 menyertakan string huruf "LWP" - jelas, WAF bersikap bodoh dan senada dengan string tanpa memperhatikan produk vs. komentar.
gowenfawr
1

Melakukan cek online telah menemukan string agen pengguna ini di situs closetnoc.org . Agen pengguna ini diidentifikasi sebagai salah satu dari sejumlah yang telah dilacak ke satu alamat IP 192.185.1.20yang telah ditandai sebagai spammer oleh list.quorum.to, bl.csma.biz, dan spamsources.fabel.dk.

Untuk memblokir akses ke IP ini (dan pada gilirannya ke Agen-Pengguna) ...

Menggunakan CISCO Firewall

access-list block-192-185-1-20-32 deny ip 192.185.1.20 0.0.0.0 any
permit any ip

Menggunakan Nginx

Edit nginx.conf dan masukkan include blockips.conf; jika tidak ada. Edit blockips.conf dan tambahkan berikut ini:

deny 192.185.1.20/32;

Menggunakan Linux IPTables Firewall

/sbin/iptables -A INPUT -s 192.185.1.20/32 -j DROP

Menggunakan Microsoft IIS Web Server

<rule name="abort ip address block 192.185.1.20/32" stopProcessing="true">           
    <match url=".*" />   
    <conditions>    
        <add input="{REMOTE_ADDR}" pattern="^192\.185\.1\.20$" />   
    </conditions>  
    <action type="AbortRequest" /> 
</rule>

Menggunakan Apache .htaccess

RewriteCond %{REMOTE_ADDR} ^192\.185\.1\.20$ [NC] 
RewriteRule .* - [F,L]

Sumber: closetnoc.org

Chris Rutherfurd
sumber
sementara ini adalah informasi yang menarik, itu tidak menjawab pertanyaan tentang apa yang dilakukan string base64 di Agen-Pengguna atau mengapa itu diletakkan di sana. Namun saya akan menjawab karena itu mengilhami saya untuk menggunakan pencarian untuk mendapatkan lebih banyak data untuk ruang masalah. Terima kasih.
gowenfawr
1
Jika Anda akan downvote, silakan komentar dan katakan mengapa Anda downvoting untuk memberikan kesempatan untuk perbaikan.
Chris Rutherfurd
1
Saya membayangkan itu diturunkan karena tidak benar-benar menjawab pertanyaan: Apa arti penting dari string yang disandikan base64 di agen-pengguna dan dari mana asalnya? Anda telah fokus pada alamat IP dan cara memblokirnya, yang merupakan inti dari masalah yang sudah dihadapi OP: pengguna sudah diblokir dari mengakses situs web mereka karena string disandikan base64 ini di agen-pengguna. (Saya tidak memilih btw.)
MrWhite
0

Saya melihat agen pengguna yang dikodekan simil-b64 juga. Setelah beberapa analisis ternyata mereka adalah klien yang memasang antivirus Kaspersky dan mencari pembaruan.

Alden
sumber
Analisis macam apa yang Anda lakukan untuk menemukan itu? Bagaimana Anda mengetahui mereka mencari pembaruan? Ini adalah jawaban yang sangat menjanjikan tetapi bisa menggunakan lebih banyak detail. Bisakah Anda mengeditnya dan menambahkannya?
Stephen Ostermiller