গুরুতর নিরাপত্তা: কিভাবে dEliBeRaTe TYpOs DNS নিরাপত্তা উন্নত করতে পারে

গুরুতর নিরাপত্তা: কিভাবে dEliBeRaTe TYpOs DNS নিরাপত্তা উন্নত করতে পারে

বছর ধরে, আমরা করেছি লিখিত এবং উচ্চারিত DNS এর কাঁটাযুক্ত সমস্যা সম্পর্কে নগ্ন নিরাপত্তা অনেক বার হাইজ্যেক.

DNS, আপনি সম্ভবত জানেন, এর জন্য সংক্ষিপ্ত ডোমেন নাম সিস্টেম, এবং আপনি প্রায়ই এটি ইন্টারনেটের "টেলিফোন ডিরেক্টরি" বা "গেজেটিয়ার" হিসাবে বর্ণিত শুনতে পাবেন।

আপনি শব্দের সাথে পরিচিত না হলে গেজেটিয়ার, এটি একটি অ্যাটলাসের পিছনের সূচককে বোঝায় যেখানে আপনি উপরের দিকে তাকান, বলুন, মনরোভিয়া, লাইবেরিয়া একটি সুবিধাজনক বর্ণমালার তালিকায়, এবং এটি এমন কিছু বলে 184 - C4. এটি আপনাকে সরাসরি 184 পৃষ্ঠায় ঘুরতে এবং মানচিত্রের শীর্ষে C অক্ষর থেকে নীচের গ্রিড লাইনগুলি অনুসরণ করতে এবং বাম দিকে 4 নম্বর থেকে জুড়ে যেতে বলে। যেখানে লাইনগুলি মিলিত হয়, আপনি মনরোভিয়াকে খুঁজে পাবেন।

বেশির ভাগ ব্যবহারকারীর জন্য, বেশিরভাগ DNS লুকআপ সার্ভারের নাম সহ বেরিয়ে যায়, ফিরে আসার জন্য একটি উত্তর চাওয়া হয় যার মধ্যে এর A-রেকর্ড বা এর AAAA-রেকর্ড নামে পরিচিত।

(A-রেকর্ডগুলি 32-বিট IPv4 ইন্টারনেট নম্বরগুলির জন্য ব্যবহৃত হয়, যেমন 203.0.113.42; AAAA-রেকর্ড হল একটি 128-বিট IPv6 ঠিকানার সমতুল্য উত্তর, যেমন 2001:db8:15a:d0c::42 - এই নিবন্ধে, আমরা শুধু A-রেকর্ড এবং IPv4 নম্বর ব্যবহার করব, কিন্তু একই নিরাপত্তা সমস্যা উভয় ক্ষেত্রেই লুকআপ প্রক্রিয়ায় প্রযোজ্য।)

এখানে একটি উদাহরণ, যেখানে আমরা কাল্পনিক ডোমেন নাম খুঁজছি naksec.test একটি DNS সার্ভারের মাধ্যমে যা আপনাকে DNS ট্র্যাফিক সম্পর্কে ট্র্যাক এবং শেখানোর জন্য বিশেষভাবে তৈরি করা হয়েছিল।

আমরা পুরানো-স্কুল লিনাক্স টুল ব্যবহার করেছি dig, খুব ছোট ডোমেইন ইন্টারনেট গ্রপার, একটি সাধারণ DNS অনুরোধ তৈরি করতে (dig আমরা যে সার্ভার চাই তার জন্য A-রেকর্ড খুঁজতে ডিফল্ট:

$ dig +noedns @127.42.42.254 naksec.test;; প্রশ্ন বিভাগ: ;naksec.test। IN A;; উত্তর বিভাগ: NAKSEC.TEST. 5 IN A 203.0.113.42;; প্রশ্নের সময়: 1 মিসেক;; সার্ভার: 127.42.42.254#53(127.42.42.254) (UDP);; কখন: সোম জানুয়ারী 23 14:38:42 GMT 2023;; MSG SIZE rcvd: 56

এখানে আমাদের DNS সার্ভার অনুরোধের সাথে কীভাবে মোকাবিলা করেছে, আগত অনুরোধের একটি হেক্স ডাম্প দেখাচ্ছে এবং সফল উত্তর যা ফিরে গেছে:

---> 127.0.0.1:57708 থেকে 127.42.42.254:53 পর্যন্ত অনুরোধ ---> 00000000 62 4e 01 20 00 01 00 00 00 00 00 00 06 6 61 6 00000010 73 65 63b 04 | .........নাক | 74 65 73 74 00 00 01 00 01 203.0.113.42 127.42.42.254 53 127.0.0.1 57708 |sec.test..... | DNS লুকআপ: naksec.test ==> A=00000000 এর জন্য A-রেকর্ড <--- 62:4 থেকে 84:0 পর্যন্ত উত্তর দিন <--- 00 01 00e 01 00 00 00 00 06e 6 61b |bN...........nak| 6 00000010 73 65 63 04 74 65 73 74 00 00 01 00 01 06e 4 |sec.test......NA| 41 00000020b 4 53 45 43 04 54 45 53 54 00 00 01 00 01 00 |KSEC.TEST......| 00 00000030 00 05 00 cb 04 00 71a |......q* |

উল্লেখ্য, কর্মক্ষমতার কারণে, বেশিরভাগ DNS অনুরোধ UDP ব্যবহার করে, ব্যবহারকারী ডাটাগ্রামের প্রোটোকল, যা প্রেরণ এবং আশার ভিত্তিতে কাজ করে: আপনি যে সার্ভারের সাথে কথা বলতে চান সেখানে আপনি একটি UDP প্যাকেট ফায়ার করেন এবং তারপর একটি উত্তর ফিরে আসে কিনা তা দেখার জন্য অপেক্ষা করুন৷

এটি ইউডিপিকে তার বড় চাচাতো ভাই টিসিপির চেয়ে অনেক সহজ এবং দ্রুত করে তোলে ট্রান্সমিশন কন্ট্রোল প্রোটোকল, যা, এর নাম অনুসারে, স্বয়ংক্রিয়ভাবে প্রচুর বিবরণের যত্ন নেয় যা UDP করে না।

উল্লেখযোগ্যভাবে, টিসিপি ডেটা হারিয়ে যাওয়া সনাক্ত করা এবং এটিকে আবার জিজ্ঞাসা করার সাথে কাজ করে; তথ্যের কোনো অংশ সঠিক ক্রমে পৌঁছেছে তা নিশ্চিত করা; এবং একটি একক নেটওয়ার্ক সংযোগ প্রদান করা যা, একবার সেট আপ হলে, একই সময়ে প্রেরণ এবং গ্রহণের জন্য ব্যবহার করা যেতে পারে।

UDP-তে একটি "সংযোগ" এর ধারণা নেই, যাতে অনুরোধ এবং উত্তরগুলি মূলত স্বাধীনভাবে ভ্রমণ করে:

  • একটি DNS অনুরোধ DNS সার্ভারে আসে নিজস্ব একটি UDP প্যাকেটে।
  • DNS সার্ভার একটি রেকর্ড রাখে কোন কম্পিউটার থেকে সেই বিশেষ প্যাকেটটি পাঠানো হয়েছে।
  • সার্ভার ফেরত পাঠানোর জন্য একটি উত্তর খোঁজার বিষয়ে সেট করে, অথবা সিদ্ধান্ত নিচ্ছে যে একটি নেই।
  • সার্ভার একটি উত্তর পাঠায় একটি দ্বিতীয় UDP প্যাকেট ব্যবহার করে মূল প্রেরকের কাছে।

অপারেটিং সিস্টেম বা নেটওয়ার্কের স্তর থেকে, উপরের দুটি UDP প্যাকেট স্বাধীন, স্বতন্ত্র ট্রান্সমিশন - একই ডিজিটাল সংযোগের অংশ হিসাবে তারা একসাথে বাঁধা হয় না।

কোন ক্লায়েন্টকে প্রতিটি উত্তর পাঠাতে হবে তা মনে রাখা সার্ভারের উপর নির্ভর করে; এবং এটি ক্লায়েন্টের উপর নির্ভর করে যে কোন উত্তরগুলি এটি মূলত পাঠানোর অনুরোধের সাথে সম্পর্কিত।

কিভাবে আপনি নিশ্চিত হতে পারেন?

এই মুহুর্তে, বিশেষ করে উপরের ডিএনএস অনুরোধ এবং উত্তরের ছোট আকারের দিকে তাকিয়ে আপনি সম্ভবত ভাবছেন, “ক্লায়েন্ট কীভাবে নিশ্চিত হবেন যে এটি সঠিক উত্তরের সাথে মিলেছে, এবং ট্রানজিটে বিভ্রান্ত হয়েছে বা ভুলভাবে নির্দেশিত নয় ভুলবশত, হয় দুর্ঘটনা বা নকশা দ্বারা?"

দুর্ভাগ্যবশত, বেশির ভাগ না হলেও DNS অনুরোধগুলি (বিশেষ করে সার্ভার থেকে সার্ভারে, যখন আপনি প্রথম সার্ভারটি জিজ্ঞাসা করেন সে উত্তরটি জানে না এবং এর উত্তর তৈরি করার জন্য এমন একটি খুঁজে বের করতে হবে) এনক্রিপ্ট করা হয় না, বা অন্যথায় যেকোন ধরণের ক্রিপ্টোগ্রাফিক প্রমাণীকরণ কোড দিয়ে লেবেল করা।

প্রকৃতপক্ষে, ডিফল্টরূপে, ডিএনএস অনুরোধে একটি একক "শনাক্তকরণ ট্যাগ" অন্তর্ভুক্ত থাকে, যা ডিএনএস ডেটা-ফরম্যাট ডকুমেন্টেশনে সহজভাবে উল্লেখ করা হয় ID.

আশ্চর্যজনকভাবে, বছরের পর বছর ধরে অসংখ্য আপডেট পাওয়া এবং উন্নতির পরামর্শ দেওয়া সত্ত্বেও, অফিসিয়াল ইন্টারনেট RFC (মতামতের জন্য অনুরোধ) নথি যা DNS স্পেসিফিকেশন হিসাবে কাজ করে তা এখনও রয়েছে RFC 1035 (আমরা বর্তমানে 9000-এর দশকের মাঝামাঝি RFC-তে আছি), 1987 বছরেরও বেশি সময় আগে, 35 সালের নভেম্বরে ডেটিং করেছি!

তখন, ব্যান্ডউইথ এবং প্রক্রিয়াকরণ শক্তি উভয়ই কম সরবরাহে ছিল: সাধারণ CPU গতি ছিল প্রায় 10MHz; ডেস্কটপ কম্পিউটারে প্রায় 1MByte RAM ছিল; ইন্টারনেট অ্যাক্সেসের গতি, যেসকল সংস্থাগুলি একেবারেই অনলাইনে পেতে পারে, প্রায়শই ছিল 56kbits/sec বা 64 kbits/sec, সবার মধ্যে শেয়ার করা হয়; এবং 1200bits/sec ছিল সেই দিনের ডায়ালআপ মডেমের মাধ্যমে ব্যক্তিগত সংযোগের জন্য সাশ্রয়ী মূল্যের পছন্দ।

এই কারণেই ডিএনএস অনুরোধ এবং উত্তরের শিরোনামগুলি ছিল - এবং এখনও রয়েছে - একটি সামান্য 12 বাইটে স্কোয়াশ করা হয়েছে, যার মধ্যে আইডি ট্যাগটি প্রথম দুটিকে নেয়, যেমন RFC 1035 এর সুন্দর ASCII শিল্প পরিষ্কার করে:

 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 +--+--+--+--+-+-+--+--+-+ ---+-+--+--+-+--+--+ | আইডি | +--+--+--+-+-+-+--+--+-+-+-+--+--+-+-+--+ | QR| Opcode |AA|TC|RD|RA| জেড | RCODE | +--+--+--+-+-+-+--+--+-+-+-+--+--+-+-+--+ | QDCOUNT | +--+--+--+-+-+-+--+--+-+-+-+--+--+-+-+--+ | ANCOUNT | +--+--+--+-+-+-+--+--+-+-+-+--+--+-+-+--+ | NSCOUNT | +--+--+--+-+-+-+--+--+-+-+-+--+--+-+-+--+ | ARCOUNT | +--+-+--+--+-+-+--+-+-+-+-+--+-+-+-+-+-+

আপনি উপরে দেখানো হেক্স ডাম্পগুলিতে আইডিটি কার্যকর দেখতে পাবেন, যেখানে অনুরোধ এবং উত্তর প্যাকেট উভয়ই একই দুটি অক্ষর দিয়ে শুরু হয় bN, যা 16-বিট শনাক্তকারীর সাথে মিলে যায় 62 4e হেক্সে

খুব ঢিলেঢালাভাবে বলতে গেলে, সেই 16 বিটগুলি অফিসিয়াল ডিএনএস প্রোটোকল "প্রমাণিকরণ" বা "ত্রুটি সনাক্তকরণ" এর মাধ্যমে প্রদান করে।

অনুমান দ্বারা হস্তক্ষেপ

আপনি যেমন কল্পনা করতে পারেন, নিয়মিত DNS ট্রাফিকের এন্ড-টু-এন্ড সরলতার কারণে, তথাকথিত যে কেউ মিডলবক্স or স্ক্যানিং প্রক্সি যারা আপনার নেটওয়ার্ক ট্র্যাফিককে আটকাতে, পরীক্ষা করতে এবং সংশোধন করতে পারে তারা আপনার DNS ট্র্যাফিকের সাথে তুচ্ছভাবে হস্তক্ষেপ করতে পারে।

এর মধ্যে রয়েছে এমন উত্তর ফেরত পাঠানো যা ইচ্ছাকৃতভাবে আপনাকে ভুল তথ্য দেয়, যেমন আপনার IT টিম আপনাকে এমন সার্ভার থেকে পুনঃনির্দেশ করে যা এটি ম্যালওয়্যারে আচ্ছন্ন বলে জানে৷

এতে আপনার দেশের আইন মেনে চলা আপনার ISP-কেও অন্তর্ভুক্ত থাকতে পারে যার জন্য কিছু সার্ভারকে অস্তিত্বহীন হিসাবে রিপোর্ট করা প্রয়োজন, এমনকি তারা জীবিত এবং জরিমানা থাকলেও, কারণ তারা শিশু নির্যাতন সামগ্রীর মতো অবৈধ সামগ্রীর ব্লকলিস্টে রয়েছে।

তবে, প্রথম নজরে, এই অতি-দুর্বল ধরণের DNS আইডি ট্যাগিংও এটিকে তুচ্ছ বলে মনে হচ্ছে এমনকি আক্রমণকারীদের জন্য যাদের আপনার নেটওয়ার্ক ট্র্যাফিকের কোনো দৃশ্যমানতা নেই আপনার ব্যবহারকারী বা আপনার সার্ভারে জাল DNS উত্তর গুলি করতে...

…সাফল্যের বিপজ্জনক উচ্চ সম্ভাবনা সহ।

সর্বোপরি, যদি আক্রমণকারীরা জানে যে আপনার নেটওয়ার্কে কেউ নিয়মিত পরিদর্শন করতে পছন্দ করে naksec.test, সেই সার্ভারটিকে জাল খবর, অযৌক্তিক আপডেট, বা দুর্বৃত্ত জাভাস্ক্রিপ্ট কোড বসানোর জন্য একটি সরস জায়গা বলে মনে হতে পারে।

এবং যদি আক্রমণকারীরা হ্যাক করতে সক্ষম না হয় naksec.test সার্ভার নিজেই, যদি তারা আপনার DNS সার্ভারে নিয়মিত এবং ঘন ঘন ইউডিপি প্যাকেটগুলি ফায়ার করে, একটি তৈরি-আপ আইডি ট্যাগ ব্যবহার করে, যা এই প্রশ্নের উত্তর দেওয়ার দাবি করে, "এ-রেকর্ড কিসের জন্য naksec.test"?

এইভাবে, তারা DNS অনুরোধ হাইজ্যাক করতে সক্ষম হতে পারে, একটি জাল উত্তর প্রদান করতে পারে এবং তাই ওয়েবসাইটটিতে আপনার পরবর্তী ভিজিটকে ভুল নির্দেশ করতে পারে – মূলত আক্রমণ করার প্রয়োজন ছাড়াই সাইটটিকে হাইজ্যাক করে। naksec.test সার্ভার

কিছু ভাগ্য প্রয়োজন

তাদের অবশ্যই কিছুটা সৌভাগ্যবান হতে হবে, যদিও তারা তাদের সামগ্রিক সম্ভাবনাগুলিকে বাড়ানোর জন্য বারবার চেষ্টা করতে পারে, তবে তাদের শুধুমাত্র একবার সফল হতে হবে, যেখানে আপনাকে প্রতিবার সত্যইউল ডিএনএস উত্তর পেতে হবে।

সফল হওয়ার জন্য, তাদের তাদের দুর্বৃত্ত DNS উত্তর পাঠাতে হবে:

  • এমন একটি সময়কালে যে আপনার নিজের সার্ভার ইতিমধ্যে প্রশ্নের উত্তর জানত না। DNS উত্তরগুলির মধ্যে TTL নামক একটি 32-বিট নম্বর অন্তর্ভুক্ত, যার জন্য সংক্ষিপ্ত সময়-টু-লাইভ, যা বলে যে কতক্ষণ অন্য প্রান্ত উত্তরটি পুনরায় ব্যবহার করতে পারে। আপনি বা ytour নেটওয়ার্কে অন্য কেউ চাইলে naksec.test সম্প্রতি, আপনার DNS সার্ভারের ক্যাশে উত্তর থাকতে পারে। আর কোন অনুসন্ধানের প্রয়োজন হবে না, এবং আক্রমণকারীদের হাইজ্যাক করার জন্য কোন বহির্গামী অনুরোধ থাকবে না।
  • আপনি আপনার অনুরোধ পাঠানোর সময় এবং অফিসিয়াল উত্তর বাইরে থেকে ফিরে আসে যে মধ্যে. এমনকি পুরানো দিনেও, DNS লুকআপের সময় খুব কমই কয়েক সেকেন্ডের বেশি হয়। আজ, সেগুলি মিলিসেকেন্ডে সর্বোত্তম পরিমাপ করা হয়৷
  • এর প্রথম 16 বিটে সঠিক সংখ্যা সহ। আপনি 65536 ফিট করতে পারেন (216) বিভিন্ন মান 16 বিটে, তাই আক্রমণকারীদের কিছুটা ভাগ্যবান হতে হবে। কিন্তু আজকের নেটওয়ার্ক ব্যান্ডউইথগুলিতে, একবারে 65536টি বিভিন্ন জাল উত্তর পাঠাতে, এইভাবে সমস্ত সম্ভাব্য আইডি নম্বরগুলি কভার করে, এক সেকেন্ডের একটি ক্ষুদ্র ভগ্নাংশ সময় নেয়৷

সৌভাগ্যবশত, শালীন DNS সার্ভারগুলি ডিফল্টরূপে হাইজ্যাকিংকে কঠিন করার জন্য একটি অতিরিক্ত পদক্ষেপ গ্রহণ করে।

অন্তত, যে তারা প্রায় 2008 সাল থেকে করা হয়েছে কি, যখন প্রয়াত ড্যান কামিনস্কি উল্লেখ করেছেন যে অনেকগুলি ডিএনএস সার্ভার তখন একটি নির্দিষ্ট ইউডিপি পোর্টে ইনকামিং অনুরোধগুলি শোনার জন্য কনফিগার করা হয়নি (প্রায় প্রায় প্রায় পোর্ট 53, আনুষ্ঠানিকভাবে ডিএনএস-এ নির্ধারিত)…

…কিন্তু একটি নির্দিষ্ট পোর্টে অন্তর্মুখী উত্তর পেতেও, প্রায়শই পোর্ট 53ও, যদি শুধুমাত্র ট্র্যাফিকের একটি আনন্দদায়ক প্রতিসাম্য তৈরি করতে হয়।

উভয় দিকে একটি নির্দিষ্ট পোর্ট ব্যবহার করার কারণ সম্ভবত প্রোগ্রামিং সরলতার জন্য ছিল। একই UDP পোর্ট নম্বরে উত্তরের জন্য সর্বদা শোনার মাধ্যমে, কোন উত্তরগুলির জন্য কোন পোর্টগুলি খোলা হবে তা আপনাকে ট্র্যাক করার দরকার নেই৷ এর মানে হল অনুরোধ হ্যান্ডলার এবং আপনার DNS সফ্টওয়্যারের উত্তর জেনারেটর উপাদানগুলি স্বাধীনভাবে কাজ করতে পারে। অনুরোধ শ্রোতাকে উত্তর প্রেরককে বলতে হবে না, "এই বিশেষ উত্তরটিকে একটি বিশেষ পোর্টে ফিরে যেতে হবে, সাধারণটি নয়।"

অতিরিক্ত আইডি হিসাবে পোর্ট নম্বর ব্যবহার করুন

আজকাল, প্রায় সমস্ত UDP-ভিত্তিক ডিএনএস সার্ভার পোর্ট 53-এ শোনে, বরাবরের মতো, কিন্তু তারা DNS অনুরোধকারীর দ্বারা ব্যবহৃত তথাকথিত "সোর্স পোর্ট"-এর ট্র্যাক রাখে, যা এটি এলোমেলোভাবে বেছে নেওয়ার প্রত্যাশা করে।

UDP সোর্স পোর্টগুলি, যেগুলি একটি পুরানো-স্কুল অফিস টেলিফোন এক্সচেঞ্জে কিছুটা "এক্সটেনশন নম্বর" এর মতো, এটি আপনাকে সাহায্য করার জন্য এবং নেটওয়ার্ক, একে অপরের থেকে অনুরোধগুলিকে আলাদা করার উদ্দেশ্যে ব্যবহার করা হয়েছে৷

ইন্টারনেট প্রোটোকল পোর্ট (TCP এগুলিও ব্যবহার করে) 1 থেকে 65535 পর্যন্ত চলতে পারে, যদিও বেশিরভাগ আউটবাউন্ড সংযোগগুলি শুধুমাত্র সোর্স পোর্ট 1024-65535 ব্যবহার করে, কারণ পোর্ট নম্বর 1023 এবং নীচেরগুলি সাধারণত সিস্টেমের সুবিধা সহ প্রক্রিয়াগুলির জন্য সংরক্ষিত থাকে।

ধারণাটি হল যে কোনও DNS লুকআপের প্রেরকের প্রতিটি অনুরোধের শুরুতে শুধুমাত্র একটি সত্যিকারের র্যান্ডম 16-বিট আইডি সন্নিবেশ করা উচিত নয়, তবে একটি সত্যিকারের র্যান্ডম UDP উৎস পোর্ট নম্বরও বেছে নেওয়া উচিত যেখানে এটি সংশ্লিষ্ট উত্তরের জন্য শুনবে।

এটি একটি অতিরিক্ত স্তরের অনুমান যুক্ত করে যা বদমাইশদের তাদের "হাইজ্যাক লাক" তালিকায় যোগ করতে হবে, অর্থাৎ তাদের একটি জাল উত্তর পাঠাতে হবে যা এই সমস্ত বাক্সে টিক দেয়:

  • সম্প্রতি জিজ্ঞাসা করা একটি প্রশ্ন হতে হবে, সাধারণত গত কয়েক সেকেন্ডের মধ্যে।
  • একটি লুকআপ হতে হবে যা স্থানীয় সার্ভারের ক্যাশে ছিল না, সাধারণত এর অর্থ যে গত কয়েক মিনিটের মধ্যে অন্য কেউ এটি সম্পর্কে জিজ্ঞাসা করেনি।
  • সঠিক 16-বিট আইডি নম্বর থাকতে হবে ডাটা প্যাকেটের শুরুতে।
  • সঠিক গন্তব্য বন্দরে পাঠাতে হবে প্রাসঙ্গিক সার্ভারের আইপি নম্বরে।

এবং আরেকটি বিষয়

প্রকৃতপক্ষে, ডিএনএস অনুরোধকারীরা অন্য একটি কৌশল করতে পারেন যা অন্তর্নিহিত ডিএনএস প্রোটোকল পরিবর্তন না করে এবং (বেশিরভাগ জন্য) কিছু না ভেঙেই করতে পারে।

এই কৌশল, আশ্চর্যজনকভাবে, ছিল প্রথম প্রস্তাব ফিরে 2008, একটি কাগজে মহিমান্বিতভাবে শিরোনাম 0x20-বিট এনকোডিং এর মাধ্যমে DNS জালিয়াতি প্রতিরোধের বৃদ্ধি: LeET QueRies এর মাধ্যমে নিরাপত্তা।

ধারণাটি অদ্ভুতভাবে সহজ, এবং DNS প্রোটোকলের দুটি বিবরণের উপর নির্ভর করে:

  • সমস্ত DNS উত্তরের শুরুতে মূল ক্যোয়ারী বিভাগটি অন্তর্ভুক্ত করতে হবে। প্রশ্নগুলির, স্পষ্টতই, একটি খালি উত্তর বিভাগ আছে, কিন্তু উত্তরগুলি মূল প্রশ্নটি প্রতিফলিত করার জন্য প্রয়োজন, যা অনুরোধ এবং উত্তরগুলি দুর্ঘটনাক্রমে মিশে না যায় তা নিশ্চিত করতে সহায়তা করে৷
  • সমস্ত DNS প্রশ্ন কেস-সংবেদনশীল। তুমি চাও কিনা naksec.test, বা NAKSEC.TEST, বা nAksEc.tESt, আপনি একই উত্তর পেতে হবে.

এখন, প্রোটোকলের মধ্যে এমন কিছুই নেই যা বলে যে আপনাকে উত্তরের অংশে একই স্পেলিং ব্যবহার করতে হবে যেখানে আপনি মূল ক্যোয়ারীটি পুনরাবৃত্তি করবেন, কারণ DNS কেসকে গুরুত্ব দেয় না।

কিন্তু যদিও RFC 1035 এর জন্য আপনাকে কেস-অসংবেদনশীল তুলনা করতে হবে, এটি দৃঢ়ভাবে পরামর্শ দেয় যে আপনি আসলে কেস পরিবর্তন করবেন না যেকোনো টেক্সট নাম যা আপনি অনুরোধে প্রাপ্ত হন বা উত্তরে ব্যবহারের জন্য আপনার নিজস্ব ডাটাবেস থেকে পুনরুদ্ধার করেন।

অন্য কথায়, যদি আপনি একটি অনুরোধ পান nAKsEC.tEST, এবং আপনার ডাটাবেস এটি হিসাবে সংরক্ষিত আছে NAKSEC.TEST, তারপর সেই দুটি নামকে অভিন্ন বলে মনে করা হয় এবং মিলবে।

কিন্তু আপনি যখন আপনার উত্তর প্রণয়ন করেন, তখন RFC 1035 আপনাকে পরামর্শ দেয় আপনি আপনার উত্তরে যে ডেটা রেখেছেন তার ক্যারেক্টার কেস পরিবর্তন করবেন না, যদিও আপনি মনে করতে পারেন এটি আরও সুন্দর দেখাবে, এবং যদিও এটি এখনও অন্য প্রান্তে মেলে, DNS দ্বারা দাবি করা কেস-সংবেদনশীল তুলনার জন্য ধন্যবাদ৷

সুতরাং, আপনি যদি পাঠানোর আগে একটি ডিএনএস অনুরোধে অক্ষরগুলির কেস এলোমেলোভাবে মিশ্রিত করেন, তবে বেশিরভাগ ডিএনএস সার্ভার বিশ্বস্তভাবে অক্ষরের অদ্ভুত ম্যাশআপকে প্রতিফলিত করবে, এমনকি যদি তাদের নিজস্ব ডাটাবেস সার্ভারের নাম আলাদাভাবে সংরক্ষণ করে, যেমন আপনি এখানে দেখছেন :

$ dig +noedns @127.42.42.254 nAkSEc.tEsT;; প্রশ্ন বিভাগ: ;nAkSEc.tEsT। IN A;; উত্তর বিভাগ: NAKSEC.TEST. 5 IN A 203.0.113.42;; প্রশ্নের সময়: 1 মিসেক;; সার্ভার: 127.42.42.254#53(127.42.42.254) (UDP);; কখন: সোম জানুয়ারী 23 14:40:34 GMT 2023;; MSG SIZE rcvd: 56

আমাদের DNS সার্ভার নাম সংরক্ষণ করে naksec.test সবগুলো বড় ক্ষেত্রে, এবং তাই উত্তরের উত্তর বিভাগে ফর্মের নাম অন্তর্ভুক্ত করা হয়েছে NAKSEC.TEST, এর IPv4 নম্বর (A-রেকর্ড) সহ 203.0.113.42.

কিন্তু আমাদের ডিএনএস সার্ভার যে উত্তরটি ফেরত পাঠায় তার একটি অংশ "এখানে আপনার কাছে জিজ্ঞাসার ডেটা ক্রস-চেক করার জন্য ফেরত দেওয়া হয়েছে" এ, ডিএনএস লুকআপে মূলত ব্যবহৃত অক্ষর-কেস ম্যাশআপটি সংরক্ষিত আছে:

---> 127.0.0.1:55772 থেকে 127.42.42.254:53 পর্যন্ত অনুরোধ ---> 00000000 c0 55 01 20 00 01 00 00 00 00 00 00 06 6e 41U | .........এনএকে| 6 00000010 53 45 63 04 74 45 73 54 00 00 01 00 |SEc.tEsT..... | DNS লুকআপ: nAkSEc.tEsT ==> A=01 এর জন্য A-রেকর্ড <--- 203.0.113.42:127.42.42.254 থেকে 53:127.0.0.1 <--- 55772 c00000000 0 <--- উত্তর দিন 55 84 0 00e 01 00b |.U...........nAk| 01 00 00 00 00 06 6 41 6 00000010 53 45 63 04 74 45e 73 |SEc.tEsT......NA| 54 00b 00 01 00 01 06 4 41 00000020 4 53 45 43 04 54 45 |KSEC.TEST......| 53 54 00 00 01 cb 00 01 00a |......q* |
সিরিয়াস সিকিউরিটি: ডিএনএস সিকিউরিটি প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স কীভাবে উন্নত করতে পারে। উল্লম্ব অনুসন্ধান. আ.
সর্বোপরি। Wireshark-এ DNS অনুরোধ।
মিক্সএড কেস সহ প্রশ্ন বিভাগ দেখানো হয়েছে।
সিরিয়াস সিকিউরিটি: ডিএনএস সিকিউরিটি প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স কীভাবে উন্নত করতে পারে। উল্লম্ব অনুসন্ধান. আ.
সর্বোপরি। Wireshark-এ DNS উত্তর।
সার্ভারের ডাটাবেস একটি ALL-UPPER নাম সরবরাহ করলেও অনুরোধ থেকে কীভাবে কোয়েরি ডেটা হুবহু কপি করা হয় তা নোট করুন৷

অতিরিক্ত নিরাপত্তা ট্যাগিং, বিনামূল্যে

বিঙ্গো!

আরও কিছু "পরিচয় ট্যাগিং" আছে যা একটি DNS লুকআপ যোগ করতে পারে!

এলোমেলোভাবে নির্বাচিত সোর্স পোর্টের মূল্য 15-অথবা-বিট এবং 16 বিট এলোমেলোভাবে-নির্বাচিত আইডি নম্বর ডেটা সহ, অনুরোধকারী ডোমেন নামের প্রতিটি বর্ণমালার অক্ষরের জন্য উপরের-বনাম-লোয়ার কেস বেছে নিতে পারে।

এবং naksec.test 10টি অক্ষর রয়েছে, যার প্রতিটি বড় বা ছোট হাতের অক্ষরে লেখা যেতে পারে, আরও 10 বিট মূল্যের র্যান্ডম "ট্যাগিং" এর জন্য।

অনুমান করার জন্য এই অতিরিক্ত বিশদটির সাথে, আক্রমণকারীদের তাদের সময়, UDP পোর্ট নম্বর, আইডি ট্যাগ মান এবং ডোমেন নামের ক্যাপিটালাইজেশনের সাথে ভাগ্যবান হতে হবে, যাতে অনুরোধকারী সার্ভারটি একটি জাল "হাইজ্যাক উত্তর" ইনজেক্ট করতে পারে গ্রহণ করবে।

যাইহোক, নাম 0x20-এনকোডিং উপরে একটি কৌতুক একটি বিট: 0x20 হেডসিমেলে হয় 00100000 বাইনারিতে, এবং সেই বাইটের সলিটারি বিট যা ASCII এনকোডিং সিস্টেমে বড় হাতের এবং ছোট হাতের অক্ষরকে আলাদা করে।

চিঠিগুলো A থেকে I, উদাহরণস্বরূপ, 0x41 থেকে 0x49 হিসাবে বেরিয়ে আসুন, যখন a থেকে i 0x61 থেকে 0x69 হিসাবে বেরিয়ে আসুন।

 ASCII এনকোডিং চার্ট ASCII টেক্সট হিসাবে -----+------+ |00 ^@ |10 ^P |20 |30 0 |40 @ |50 P |60 ` |70 p | |01 ^A |11 ^Q |21 ! |31 1 |41 A |51 Q |61 a |71 q | |02 ^B |12 ^R |22 " |32 2 |42 B |52 R |62 b |72 r | |03 ^C |13 ^S |23 # |33 3 |43 C |53 S |63 c |73 s | |04 ^D |14 ^T |24 $ |34 4 |44 D |54 T |64 d |74 t | |05 ^E |15 ^U |25 % |35 5 |45 E |55 U |65 e |75 u | |06 ^F |16 ^V |26 & |36 6 |46 F |56 V |66 f |76 v | |07 ^G |17 ^W |27 ' |37 7 | 47 G |57 W |67 g |77 w | |08 ^H |18 ^X |28 ( |38 8 |48 H |58 X |68 h |78 x | |09 ^I |19 ^Y |29 ) |39 9 |49 I |59 Y |69 i |79 y | |0A ^J |1A ^Z |2A * |3A : |4A J |5A Z |6A j |7A z | |0B ^K |1B ^ [ |2B + |3B ; |4B K |5B [ |6B k |7B { | |0C ^L |1C ^ |2C , |3C < |4C L |5C |6C l |7C | | |0D ^M | 1D ^] |2D - |3D = |4D M |5D ] |6D m |7D } | |0E ^N |1E ^^ |2E | 3E > |4E N |5E ^ |6E n |7E ~ | | 0F ^O |1F ^_ |2F / |3F ? |4F O |5F _ |6F o |7F | +------+------+------+--- ---+------+------+------+------+

অন্য কথায়, আপনি যদি 0x41 পেতে 0x20+0x61 যোগ করেন, তাহলে আপনি ঘুরবেন A মধ্যে a; আপনি যদি 0x69 পেতে 0x20-0x49 বিয়োগ করেন, তাহলে আপনি ঘুরবেন i মধ্যে I.

এখন কেন?

এতক্ষণে হয়তো ভাবছেন, "কেন এখন, যদি ধারণাটি 15 বছর আগে প্রকাশিত হয়, এবং এটি কি আসলেই কোন উপকার করবে?"

আমাদের আকস্মিক আগ্রহ, যেমন এটি ঘটে, একটি থেকে আসে সাম্প্রতিক পাবলিক ইমেল Google প্রযুক্তিবিদদের কাছ থেকে, স্বীকার করে যে তাদের 2022 সালের এই পুরানো-স্কুল নিরাপত্তা ট্রিক নিয়ে পরীক্ষাগুলি বাস্তব জীবনে স্থাপন করা হয়েছে:

যেমন আমরা আগেই ঘোষণা করেছি, Google পাবলিক DNS প্রামাণিক নেমসার্ভারগুলিতে পাঠানো DNS ক্যোয়ারী নামের কেস র্যান্ডমাইজেশন সক্ষম করার প্রক্রিয়াধীন রয়েছে। আমরা সফলভাবে উত্তর আমেরিকা, ইউরোপ এবং এশিয়ার কিছু অঞ্চলে এটিকে মোতায়েন করেছি যাতে TLS এর উপর DNS এর আওতায় নেই সেই অঞ্চলে DNS কোয়েরির অধিকাংশ (90%) রক্ষা করে।

কৌতূহলজনকভাবে, Google পরামর্শ দেয় যে এই সহজ এবং দৃশ্যত বিতর্কিত টুইকের সাথে এটির প্রধান সমস্যাগুলি হল যে বেশিরভাগ DNS সার্ভারগুলি হয় ধারাবাহিকভাবে কেস-সংবেদনশীল (তাই এই কৌশলটি তাদের সাথে ব্যবহার করা যেতে পারে) বা ধারাবাহিকভাবে নয় (তাই তারা ব্লক তালিকাভুক্ত), আপনি যেমন আশা করতে পারেন...

…কয়েকটি মেইনট্রিম সার্ভার মাঝে মাঝে স্বল্প সময়ের জন্য "কেস-সংবেদনশীল" মোডে চলে যায়, যা আপনি আশা করেন যে প্রধান পরিষেবা প্রদানকারীরা এড়িয়ে যাবেন এমন অসঙ্গতির মতো শোনাচ্ছে।

এটি কি সত্যিই সাহায্য করে?

প্রশ্নের উত্তর, "এটা কি মূল্য?" এখনও পরিষ্কার নয়।

আপনি একটি সুন্দর দীর্ঘ সেবা নাম পেয়েছেন, মত nakedsecurity.sophos.com (22 বর্ণানুক্রমিক অক্ষর), তারপর প্রচুর অতিরিক্ত সংকেত শক্তি আছে, কারণ 222 বিভিন্ন ক্যাপিটালাইজেশনের অর্থ হল 4 মিলিয়ন কম্বিনেশন বদমাশদের চেষ্টা করার জন্য, 65536টি ভিন্ন আইডি নম্বর দ্বারা গুন করা হয়েছে, অনুমান করার জন্য প্রায় 32000 থেকে 64000টি বিভিন্ন সোর্স পোর্ট দ্বারা গুণ করা হয়েছে...

…কিন্তু আপনি যদি টুইটারের মতো সুপারশর্ট ডোমেইন নামের জন্য সামান্য অর্থ প্রদান করেন t.co, আপনার আক্রমণকারীদের শুধুমাত্র একটি কাজ আছে যা আগের চেয়ে 2x2x2=8 গুণ বেশি কঠিন।

তবুও, আমি মনে করি আমরা এটি চেষ্টা করার জন্য গুগলকে "চ্যাপেউ" বলতে পারি।

সাইবারসিকিউরিটি পর্যবেক্ষকরা যেমন বলতে চান, আক্রমণগুলি কেবলমাত্র দ্রুততর হয়, তাই যে কোনও কিছু যা একটি বিদ্যমান প্রোটোকল গ্রহণ করতে পারে এবং এতে অতিরিক্ত ক্র্যাকিং সময় যোগ করতে পারে, প্রায় "বিনামূল্যে", এটি প্রতিহত করার একটি কার্যকর উপায়।


সময় স্ট্যাম্প:

থেকে আরো নগ্ন সুরক্ষা