লাইভ সকেট ইন্টারসেপশন, ফ্রেম ম্যানিপুলেশন ও অটোমেটেড স্নাইপার বট
🧭 দক্ষতা যাচাই ও প্রতিরক্ষামূলক takeaway
Skill checkpoint: Local WebSocket fixture-এ frame structure ও validation error বোঝো। Defense checkpoint: Server-side schema validation, authentication ও replay defense যোগ করো. Lab scope: শুধু নিজের lab, synthetic data বা লিখিত অনুমতিপ্রাপ্ত target-এ অনুশীলন করো। Real credential, token বা customer data ব্যবহার কোরো না।
সাধারণ HTTP রিকোয়েস্ট হলো ওয়াকিটকির মতো — তুমি কথা বলবে (Request), তারপর অপরপাশ উত্তর দেবে (Response), তারপর লাইন কেটে যাবে। কিন্তু WebSocket (`ws://` বা `wss://`) হলো একটি সার্বক্ষণিক খোলা টেলিফোন লাইনের মতো! একবার কানেকশন তৈরি হয়ে গেলে দুপাশ থেকেই অবিরাম ডেটার স্রোত বইতে থাকে।
লাইভ ক্রিকেট স্কোর, শেয়ার বাজার, ক্রিপ্টোকারেন্সি ট্রেডিং, লাইভ বিডিং ও মাল্টিপ্লেয়ার গেম — সব চলে এই WebSocket-এর ওপর। আর সেখানেই থাকে সবচেয়ে বড় দুর্বলতা!
🎣 গল্প ২: লাইভ বিডিং হাইজ্যাক ও ফ্রেম ইন্টারসেপ্ট
অনেক ই-কমার্স বা নিলাম সাইটে লাইভ বিডিং চলে (যেমন ১ টাকায় আইফোন নিলাম!)। সাধারণ মানুষ যখন বোতামে চাপ দেয়, তখন একটি ছোট JSON ফ্রেম বা বাইনারি প্যাকেট WebSocket দিয়ে সার্ভারে পৌঁছায়।
কিন্তু সাধারণ মানুষের রিকোয়েস্ট যায় স্বাভাবিক গতিতে (৩০০-৫০০ মিলিসেকেন্ড পর)। আর তুমি যদি একটি পাইথন স্ক্রিপ্ট দিয়ে WebSocket কানেকশন ধরে রাখো, তবে নিলামের শেষ ০.০১ সেকেন্ডে স্বয়ংক্রিয়ভাবে ফ্রেম পাঠিয়ে সবার আগে বিড জিতে নিতে পারো! এটাকে বলে Sniper Bot Attack!
# Python দিয়ে WebSocket লাইভ ট্র্যাফিক ইন্টারসেপ্ট ও অটো-বিড:
import websocket, json, time
def on_message(ws, message):
data = json.loads(message)
print("Received Live Frame:", data)
# যদি নিলামের আর ৫ সেকেন্ড বাকি থাকে:
if data.get('event') == 'AUCTION_TICK' and data.get('seconds_left') == 1:
bid_payload = {"action": "PLACE_BID", "auction_id": "IPHONE_16", "amount": 105}
ws.send(json.dumps(bid_payload))
print("🎯 Sniper Bid Placed Instantly!")
ws = websocket.WebSocketApp("wss://bid.target.com/live-stream", on_message=on_message)
ws.run_forever()
🛡️ গল্প ৩: CSWSH — Cross-Site WebSocket Hijacking
তুমি কি জানো WebSocket হ্যান্ডশেকের সময় ব্রাউজার স্বয়ংক্রিয়ভাবে ইউজারের কুকি পাঠিয়ে দেয়? ডেভেলপাররা যদি `Origin` হেডার যাচাই না করে, তবে একজন ভিকটিম তোমার বানানো ফিশিং পেজে ঢোকা মাত্রই তোমার সার্ভার ভিকটিমের একাউন্টের নামে WebSocket কানেকশন খুলে ফেলবে! একে বলে Cross-Site WebSocket Hijacking (CSWSH)!
💡 WebSocket প্রোটোকল রুলস
১. `wss://` ট্র্যাফিক Reqable বা Burp Suite দিয়ে ইন্টারসেপ্ট করো। ২. ফ্রেমের ভেতর বাইনারি থাকলে Protobuf বা JSON ডিকোড করো। ৩. Origin ভ্যালিডেশন মিস থাকলে CSWSH টেস্ট করো!