টুইটার পাঠ্য বার্তা দ্বি-ফ্যাক্টর প্রমাণীকরণ অক্ষম করার সাথে, আমি ভেবেছিলাম কীভাবে এসএমএস জালিয়াতি কাজ করে এবং কীভাবে অ্যাপ বিকাশকারীরা এটি থেকে রক্ষা করতে পারে সে সম্পর্কে গভীরভাবে ডুব দেওয়া মজাদার হবে।
এটি বিকৃত প্রণোদনা, অদূরদর্শী নিয়ন্ত্রণ এবং প্রযুক্তিগত দক্ষতার একটি আকর্ষণীয় গল্প।
এর খনন করা যাক! 👇
শুরু করার জন্য, আসুন টুইটারের সাম্প্রতিক ঘোষণার সংক্ষিপ্ত বিবরণ দেওয়া যাক:
সরল ইংরেজিতে, এর সহজ অর্থ হল শুধুমাত্র টুইটারের অর্থপ্রদত্ত সংস্করণের ব্যবহারকারীরা লগইন করার সময় তাদের ফোনে পাঠানো একটি কোড পাবেন।
এসএমএস জালিয়াতি বোঝার চাবিকাঠি হল বোঝা যে কিছু নম্বর প্রিমিয়াম । আপনি যদি এই নম্বরে কল করতে বা একটি এসএমএস পাঠাতে চান তবে আপনার কিছু টাকা খরচ হবে — সাধারণত দশ সেন্ট — এবং নম্বরটির মালিক নিজের জন্য সেই দশ সেন্টের একটি অংশ পায়৷
এই ফোন নম্বরগুলির মালিকরা সাধারণত বৈধ পরিষেবাগুলি অফার করে যা তাদের ব্যবহারকারীদের সরবরাহ করতে এবং অফার করার জন্য অর্থ ব্যয় করে, যেমন টেলি-ভোটিং, ডেটিং এবং প্রযুক্তি সহায়তা।
যাইহোক, এই সংখ্যাগুলি সহজ লাভের জন্য গেম করা যেতে পারে 🤑
একজন খারাপ অভিনেতা, তাকে বব বলে ডাকি, তার কাছে বেশ কিছু প্রিমিয়াম ফোন নম্বর আছে[1]। বব একজন হ্যাকার হতে পারে, বা মোবাইল ফোন নেটওয়ার্ক অপারেটর খারাপ হতে পারে।
বব একটি ওয়েব পরিষেবা খুঁজে পায় যা তার প্রিমিয়াম ফোন নম্বরগুলিতে পাঠ্য বার্তা পাঠাবে৷ এই বার্তাগুলি হতে পারে দ্বি-ফ্যাক্টর প্রমাণীকরণ কোড, ওয়ান টাইম পাসওয়ার্ড, বা পরিষেবার অংশ হিসাবে ব্যবহারকারীকে পাঠানো অন্য কোনও পাঠ্য বার্তা (যেমন partiful.com এসএমএসের মাধ্যমে ইভেন্ট রিমাইন্ডার পাঠায়)।
বব তার প্রিমিয়াম ফোন নম্বরগুলিতে হাজার হাজার এসএমএস পাঠাতে পরিষেবাটি তৈরি করার একটি উপায় খুঁজে পায়৷ এই খুব সহজ হতে পারে. ফ্রন্ট এন্ড সার্ভিস ম্যানিপুলেট করা সহজ হতে পারে এবং ব্যাকএন্ড এন্ডপয়েন্টগুলি অরক্ষিত এবং রিভার্স-ইঞ্জিনিয়ার করা সহজ হতে পারে।
আরও খারাপ, অনেক পরিষেবা এসএমএস পাঠানোর জন্য একটি প্রমিত এন্ডপয়েন্ট ব্যবহার করে। এটি ববের পক্ষে আক্রমণ করার জন্য সাইটগুলি খুঁজে পাওয়া অত্যন্ত সহজ করে তোলে৷ উদাহরণস্বরূপ, যদি পরিষেবাটি ব্যবহারকারীদের প্রমাণীকরণ এবং Auth0-এর মতো 2FA বা OTP কোড পাঠানোর জন্য তৃতীয় পক্ষ ব্যবহার করে, তাহলে SMS পাঠানোর শেষ পয়েন্টটি বেশিরভাগই পরিচিত: ববকে যা করতে হবে তা হল Auth0-এর আবিষ্কারের উপায় বের করা। একটি ওয়েব পরিষেবার জন্য আইডি (মোটামুটি সহজ, যেহেতু ওয়েব পরিষেবার ফ্রন্ট-এন্ড এই আইডি সম্বলিত একটি অনুরোধ করে), এবং তারপরে তারা সেই তৃতীয় পক্ষের পরিষেবা ব্যবহার করে এমন সমস্ত সাইটকে আক্রমণ করতে পারে৷
অবশেষে, বব পরিষেবাটি তার প্রিমিয়াম ফোন নম্বরগুলিতে হাজার হাজার SMS পাঠায়৷ ওয়েব পরিষেবা হারায় 💵💵💵, এবং বব লাভ।
এসএমএস জালিয়াতি রোধ করার জন্য একটি সিলভার বুলেট নেই। কিন্তু এখানে কয়েকটি ধারণা কাজ করতে পারে:
ব্যবহারকারীদের প্রমাণীকরণের জন্য একটি তৃতীয় পক্ষের পরিষেবা ব্যবহার করলে, যেমন Auth0, আপনি SMS পাঠাতে ব্যবহৃত শেষ পয়েন্টটিকে অস্পষ্ট করতে পারেন। যদিও এটি একটি আক্রমণকে সরাসরি প্রতিরোধ করবে না, এটি একটি আক্রমণ সম্ভব কিনা তা আবিষ্কার করা আরও কঠিন করে তোলে।
যেভাবে একজন বাইক চোর বাইক চুরি করা সবচেয়ে সহজকে লক্ষ্য করে, তেমনি একজন ভাল হ্যাকার এমন ওয়েব পরিষেবাগুলিতে চলে যাবে যেগুলি হ্যাক করা সহজ। আমার ধারণা হল এই পদ্ধতিটি অ্যাপের দীর্ঘ লেজের জন্য যথেষ্ট ভাল কাজ করবে।
ক্লাউড প্রোভাইডার, প্রতারণামূলক আইএসপি বা অন্যথায় স্কেচি হয় এমন আইপি থেকে আসা সমস্ত অনুরোধ ব্লক করুন। এটি বাস্তবায়নের জন্য মোটামুটি সহজ হওয়া উচিত — অনেক পরিষেবা বিদ্যমান যা আপনাকে একটি IP ঠিকানার গুণমানকে রেট দিতে দেয় — এবং সম্ভবত খুব কার্যকর হবে৷
আইপি-ভিত্তিক রেট-লিমিটিং এন্ডপয়েন্টে যোগ করুন যা ববের আক্রমণকে ব্লক করতে SMS পাঠায়। সঠিকভাবে সেট আপ করা হলে, এটি বৈধ ব্যবহারকারীদের প্রভাবিত করবে না। যাইহোক, এটি শুধুমাত্র একটি সাধারণ আক্রমণের বিরুদ্ধে কাজ করে। যদি বব তার আক্রমণের স্থপতি বিভিন্ন আইপি ঠিকানা থেকে অনুরোধ পাঠায় - একটি বিতরণ করা আক্রমণ - তাহলে এটি কাজ করবে না।
কুল-অফ সময়ের জন্য সেই ফোন নম্বরটি ব্লক করার আগে শুধুমাত্র একটি নির্দিষ্ট ফোন নম্বরে অল্প সংখ্যক বার একটি SMS পাঠান। আমরা ফ্রন্ট-এন্ডে এটা করতে পারতাম, কিন্তু বব যদি দৃঢ়প্রতিজ্ঞ হয়, তাহলে সে আক্রমণ করার জন্য ব্যাকএন্ড এন্ডপয়েন্ট বের করতে পারে। ব্যাকএন্ডে ফোন নম্বর ব্লক করা কঠিন: এটির জন্য ফোন নম্বর এবং তাদের সাম্প্রতিক লগইন প্রচেষ্টার রেকর্ড রাখা প্রয়োজন[2]।
ব্যবহারকারীকে একটি এসএমএস পাঠানোর আগে একটি ক্যাপচা সমাধান করতে বাধ্য করুন৷ যদিও এই পদ্ধতিটি আক্রমণকারীদের ব্লক করতে ভাল কাজ করে — ক্যাপচা সমাধান করা কঠিন এবং স্কেল করা ব্যয়বহুল — এটি পরিষেবার ব্যবহারকারীর অভিজ্ঞতাকে হ্রাস করে।
libphonenumber ব্যবহার করে প্রিমিয়াম রেট ফোন নম্বর চিহ্নিত করুন এবং ব্লক করুন। যদিও এটি প্রতিশ্রুতিশীল বলে মনে হচ্ছে, আমি জানি না ডেটা কতটা নির্ভরযোগ্য এবং এই পদ্ধতিটি কতটা কার্যকর।
শুধুমাত্র প্রদত্ত অ্যাকাউন্টগুলিতে পাঠ্য বার্তা পাঠান। এই পদ্ধতির সাথে টুইটার চলে গেছে. এটি একটি খারাপ বিকল্প নয়, তবে আপনি উপরের তালিকা থেকে দেখতে পাচ্ছেন, আপনি নিতে পারেন এমন আরও অনেক পন্থা রয়েছে।
প্রচুর পরিমাণে প্রতারক ব্যবহারকারীর সাথে মোবাইল ফোন নেটওয়ার্ক অপারেটরদের ব্লক করুন। এটি পরিষ্কারভাবে খারাপ নেটওয়ার্ক অপারেটরদের ব্লক করবে, কিন্তু নেটওয়ার্কের অনেক বৈধ ব্যবহারকারী থাকলে এটি ভাল কাজ করবে না।
পরিবর্তে বার্তা পাঠাতে WhatsApp ব্যবহার করুন. হোয়াটসঅ্যাপ বিনামূল্যে এসএমএস থেকে ভিন্ন, কিন্তু সারা বিশ্বের সমস্ত ব্যবহারকারী WhatsApp ব্যবহার করে না[3]।
আক্রমণকারীরা সহজ লক্ষ্যে না যাওয়া পর্যন্ত একটি ভাল সমাধান সময় বিনিয়োগ এবং কার্যকারিতা দ্বারা অগ্রাধিকার দিয়ে উপরের পন্থাগুলির যথেষ্ট ব্যবহার করবে।
আমি উপরের ব্যবস্থাগুলি বাস্তবায়নের কিছু ব্যক্তিগত অভিজ্ঞতা পেয়েছি, এবং আমার দল কীভাবে ফলআউট পরিচালনা করেছে সে সম্পর্কে শেয়ার করার জন্য একটি বা দুটি গল্প আছে। কিন্তু এটা অন্য সময়ের জন্য গল্প… 👨💻
এটি আমাকে আমার চূড়ান্ত পয়েন্টে নিয়ে আসে:
IMO, Twilio — একটি প্রভাবশালী SMS API — তাদের স্ট্যান্ডার্ড API-এ (ফ্রি? 🙏) অ্যাড-অন হিসেবে SMS জালিয়াতি সুরক্ষা দেওয়ার বিশাল সুযোগ রয়েছে৷
যেহেতু Twilio-এর কাছে তাদের সমস্ত অ্যাকাউন্ট জুড়ে প্রতারণামূলক ফোন নম্বর এবং ক্যারিয়ারের ডেটা রয়েছে, তাই Twilio খারাপ নম্বর এবং ক্যারিয়ারগুলিকে দ্রুত ব্লক করতে অনন্য অবস্থানে রয়েছে — আগে তারা একাধিক ওয়েব পরিষেবার জন্য একটি বড় সমস্যা হয়ে ওঠে।
Twilio এমনকি সাইলেন্ট নেটওয়ার্ক প্রমাণীকরণ - একটি পরবর্তী প্রজন্মের প্রমাণীকরণ প্রক্রিয়া - ব্যবহার করে অবৈধ ফোন নম্বরগুলি সরাসরি সনাক্ত করতে পারে এবং মনে হয় এই ইউটিলিটিটি তাদের ব্যবহারকারীদের মধ্যে ভাগ করা উচিত৷
আমি অন্য কোন চিন্তা, ধারনা এবং লোকেরা ব্যবহার করেছে তা শুনতে চাই — দয়া করে নীচে একটি মন্তব্য লিখে শেয়ার করুন, এবং আমরা সবাই শিখতে পারি।
আপাতত এটাই — সেই শেষ পয়েন্টগুলিকে রক্ষা করুন এবং একটি দুর্দান্ত সপ্তাহ কাটুক!
HackerNews এ একটি চমৎকার আলোচনা আছে।
[১] মনে রাখবেন যে এই প্রিমিয়াম ফোন নম্বরগুলির কাজ করার দরকার নেই: তাদের একটি সিম কার্ডের সাথে সংযুক্ত হওয়ার প্রয়োজন নেই যা কাজ করছে এবং একটি ফোনে নিবন্ধিত। যতক্ষণ তাদের রুট করা যায়, ততক্ষণ তারা এই আক্রমণে ব্যবহার করা যেতে পারে।
[২] আমি কৌতূহলী যদি এটিকে দক্ষ করে তুলতে এবং স্কেলে কাজ করার জন্য একটি ভাল ডেটা কাঠামো এবং অ্যালগরিদম থাকে। যদি আপনি একটি জানেন শেয়ার করুন!
[৩] তাদের পরামর্শের জন্য HN-এ @csharpminor-কে ক্রেডিট।
আমি অপু , কুডোর সিটিও এবং একজন ইঞ্জিনিয়ার।
এই পোস্টটি মূলত আমার ব্যক্তিগত ব্লগে উপস্থিত হয়েছিল - এটির মতো আরও সাবস্ক্রাইব করুন!