একজন হ্যাকার হতে যা যা জানার দরকার হয়

পেনিট্রেশন টেস্টার এর চেয়ে হ্যাকার শব্দটি বাংলাদেশে বেশি পরিচিত। আর “এথিকাল হ্যাকার” শব্দটি মনে হয় আরো বেশি পরিচিত। আমি টাইটেল -এ “এথিকাল” শব্দটি ব্যবহার করিনি কারণ এটা আর শুনতে ভালো লাগে না। যদিও বাংলাদেশে হ্যাকার শব্দটি একটু অন্যভাবে নেয়া হয় তারপরও, এটাই ব্যবহার করলাম। যাইহোক, অনেকেই আমাকে কিছু প্রশ্ন বার বার জিজ্ঞাসা করে: আমি একজন এথিকাল হতে চাইলে কিভাবে শুরু করবো? ওএসসিপি এর জন্য কিভাবে প্রস্তুতি নিবো? তাই খুব সংক্ষিপ্ত আকারে এই আর্টিকেল-এ বলবো, একজন হ্যাকার হতে আপনার কি কি জানা দরকার।

শুরু করার আগে বলে দেই আপনার কি কি যন্ত্রপাতি লাগবে:

কম্পিউটার: একটি ভালো মানের কম্পিউটার নিন। কমপক্ষে কোর আই ৭, এবং ১৬ জিবি মেমরি।
ইন্টারনেট: মোবাইল অথবা ব্রডব্যান্ড ইন্টারনেট

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

যে সব বিষয়ে আপনাকে পারদর্শী হতে হবে

ভালো সিস্টেম অ্যাডমিন হয়ে যান

কোনো সিস্টেমকে ভালোভাবে নিয়ন্ত্রণ করতে হলে ওই সিস্টেমকে ভালোভাবে জানতে হবে। তাই প্রথম কাজটিই হলো ভালো একজন সিস্টেম অ্যাডমিন হয়ে ওঠা। আর সিস্টেম অ্যাডমিন হতে হলে, অপারেটিং সিস্টেমকে ভালোভাবে জানতে হবে। ভালো সিস্টেম অ্যাডমিন না হলে, আপনি ভালো পেন্টেসটার হতে পারবেন না, কারণ যাই করেন, শেষ পর্যন্ত আপনার আকাংখা হলো কম্যান্ড এক্সেকিউট করা.. তাই না? তারপরতো অন্যকিছু, আর সেগুলোও ওএস কম্যান্ড ও প্রোগ্রামিং এর খেলা।

দুই ধরণের অপারেটিং সিস্টেমকে ভালোভাবে জানার চেষ্টা করেন:

লিনাক্স

লিনাক্স হলো হ্যাকার ফ্রেন্ডলি একটি অপারেটিং সিস্টেম। বেশির ভাগ হ্যাকিং টুলস লিনাক্স এর জন্য তৈরী হয়েছে। দুৰ্ভাগ্যবশতঃ লিনাক্স উইন্ডোস অপারেটিং সিস্টেম থেকে সম্পূর্ণ আলাদা। এইদিক আবার বেশির ভাগ সার্ভারগুলো লিনাক্স-এই চলে। প্রকৃতপক্ষে, আপনি যখন কোনো একটা ব্ল্যাকবক্স পেনটেস্টিং করবেন, হয়তো প্রথম যে সার্ভারটিকে আপনার আক্রমণ করতে হবে, সেটি হলো লিনাক্স। অনেকেই হয়তো বলবে, হুহ! লিনাক্স প্রথম হ্যাক করতে হবে? লিনাক্স কে তো হ্যাক করা ওতো সহজ না। এটা ভুল ধারণা। সিকিউরিটি দিতে না পারলে, কেউ সিকিউর না। যাইহোক, লিনাক্স-এ মোটামুটি পারদর্শী হয়ে উঠুন:

  • লিনাক্স ফাইল সিস্টেম, প্রসেস/থ্রেডস, নেটওয়ার্কিং শিখুন
  • কম্যান্ড লাইন ভালোভাবে শিখুন
  • কাস্টম কার্নেল ইনস্টল করুন
  • ব্যাস স্ক্রিপ্টিং শিখুন

উইন্ডোজ

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

তাই বলে উইন্ডোজকে আপনার দুর্বল ভিক্টিম ভেবে হাসাহাসি করার দরকার নাই । সত্যিকার অর্থে যখন উইন্ডোজ ফেস করবেন তখন বুজবেন, কঠিন নাকি সহজ। যাইহোক, এটাকে আপনি ভিক্টিম অথবা টুল যা হিসাবেই ব্যবহার করেন না কেন, মোটামুটি একটা ভালো জ্ঞান থাকতে হবে। তাই নিচের বিষয়গুলো নিয়ে আরো জানতে চেষ্টা করুন:

  • ফাইল সিস্টেম,উইন্ডোজ প্রসেস, নেটওয়ার্কিং, উইন্ডোজ রেজিস্ট্রি, উইন্ডোজ এপিআই নিয়ে শিখুন
  • বিভিন্ন সিকিউরিটি মডেল, ইউজার ম্যানেজমেন্ট নিয়ে পরীক্ষা চালান
  • উইন্ডোজ কম্যান্ড লাইন ও পাওয়ারসেল স্ক্রিপ্টিং শিখুন
  • একটিভ ডিরেক্টরি ইনস্টল করে বিভিন্ন ধরণের পরীক্ষা-নিরীক্ষা চালান।

ওএসসিপি পরীক্ষায় এক উইন্ডোজ মেশিন-এ প্রিভিলেজ এস্কালেশন করতে ভালোই বেগ পেতে হয়েছিল আমার।

প্রোগ্রামিং শিখুন

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

<?php
$ip = $_GET['ip'];
$c = system("ping -c 5 " . $ip);
echo $c;
?>

আমি বলছি, এটা পিএইচপি কোড। ২ নম্বর লাইনে গেট মেথড (_GET) এর প্যারামিটার ইনপুট দিতে হবে, যেমন:

https://jobyer.me/lame.php?ip=ip_address

ip_address পরিবর্তে আমাদেরকে একটি ভ্যালিড আইপি এড্রেস দিতে হবে তাহলে system() ফাঙ্কশন দিয়ে সিস্টেম কম্যান্ড কল করবে, তারপর ৫ বার ওই আইপি কে পিং করবে। এটা সিস্টেম কম্যান্ড, আর সিস্টেম কম্যান্ড ব্যাচ আকারেও চালানো যায় তাইনা? নিচের স্ক্রিনশটটি দেখুন:

; ব্যবহার করে বলা হয়েছে যে যখন প্রথম কম্যান্ডটির কাজ শেষ হবে তখন পরের কমান্ডটি রান করো। আর পরের কম্মান্ডটি ছিল সিস্টেম অ্যাডমিন এর কম্যান্ড uname -a তাই শেষ আউটপুট কার্নেল ভার্সন ডিটেলস ছিল। ওই পিএইচপি স্ক্রিপ্টটি যদি কোনো ওয়েব সার্ভার-এ থাকে যেখানে পিএইচপি স্ক্রিপ্ট সার্ভার-সাইড ল্যাঙ্গুয়েজে হিসাবে ব্যবহার করা হয়েছে বা পিএইচপি স্ক্রিপ্ট এক্সেকিউট করতে পারে, তাহলে আমরা সেখানেও এরকম সিস্টেম কম্যান্ড রান করতে পারবো:

এটিই হচ্ছে RCE । এখানে কোনো ধরণের ইনপুট ভ্যালিডেশন করা হয়নি।

আমি যদি প্রোগ্রামিং না বুঝতাম তাহলে এত গভীরে এই দুর্বলতাটিকে বুঝতে পারতাম না। আর যদি লিনাক্স সিস্টেম অ্যাডমিন না হতাম তাহলে, পিং, সেমিক্লোন, uname এর অর্থ বুঝে একজন হ্যাকারের মতো কম্যান্ড রান করতে পারতাম না। যাইহোক, কোনো কিছু ব্রেক করার আগে, সেটা সমন্ধে ভালো ভাবে জানতে হবে। না হলে টুল এর আউটপুট এর অপেক্ষায় থাকতে হবে। টুল যদি বলে কিছু নাই, তাহলে আপনাকেও মেনে নিতে হবে কিছু নাই।

আর একটা উদাহরণ দেখা যাক:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

এই এরর মেসেজ দেখে আপনার কি মনে হচ্ছে যে একসময়ের জনপ্রিয় SQL ইনজেকশন এরর মেসেজ? তাহলে এটাকে এক্সপ্লইট করতে তো আপনার SQL জানতে হবে তাই না ? যদি আপনি sqlmap ও ব্যবহার করেন তারপরও আপনাকে ডাটাবেস সম্পর্কে একটা ধারণা থাকতে হবে।

তাই আমি বলবো যেকোনো একটা স্ক্রিপ্টিং ল্যাঙ্গুয়েজ মোটামুটি রপ্ত করার চেষ্টা করুন যা দিয়ে আপনি কুইক টুল ক্রিট করতে পারবেন। আরও কিছু ল্যাঙ্গুয়েজে আপনার সক্ষমতা বাড়ানোর জন্য শিখবেন।

  • পাইথন: অটোমেশন করতে এটা শিখুন।
  • সি/সি শার্প/গো: সিস্টেমকে ভালো ভাবে বুজতে, এবং ম্যালওয়্যার নিয়ে কাজ করতে কাজে লাগবে।
  • পিএইচপি: ওয়েব এর দুর্বলতাগুলো বুঝতে খুব কাজে দিবে।
  • অ্যাসেম্বলি ল্যাঙ্গুয়েজে: রিভার্স ইঞ্জিনিয়ারিং, সেলকোডিং, এক্সপ্লইট ডেভেলপমেন্ট করার জন্য এবং সিস্টেম সম্পর্কে ভালোভাবে বুঝতে কাজে লাগবে।

পরে না হয় পরিস্থিতি অনুযায়ী বাকিগুলো নিয়ে একটু পড়াশুনা করে নিবেন।

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

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

নেটওয়ার্কিং

একদিন এক ছেলে আমাকে মেসেজ দিয়ে বললো:

আমি এই আইপি: 10.101.10.199 আমার টার্গেট ওয়েবসাইট থেকে খুঁজে পেয়েছি, এনম্যাপ দিয়ে স্ক্যান করতেছি কিন্তু কোনো পোর্ট খোলা নাই। আমি কি কোনো ভুল করতেছি? 

সে জানতোই না যে এটা ক্লাস “এ” এর প্রাইভেট আইপি। এরকম হলে কিভাবে হবে?

আপনি যদি বেসিক নেটওয়ার্কিং না জানেন তাহলে আপনি কিভাবে ওভার নেটওয়ার্ক হ্যাক করবেন? নেটওয়ার্কিং না বুঝলে আপনি বিভিন্ন প্রোটোকল যেমন এইচটিটিপি/এস, এফটিপি, ডিএনএস, রিমোট ডেস্কটপ ইত্যাদি বুঝবেনও না, কনফিগারও করতে পারবেন না, সেগুলোকে তো হ্যাক করা পরের কথা। কোনো নেটওয়ার্ক অবকাঠামোতে, ক্রিটিকাল সিস্টেম খুঁজে বের করতে হলে, নেটওয়ার্ক ম্যাপিং করতে হয়, সেই ম্যাপ অনুযায়ী আপনাকে জাম্প করতে হবে। নেটওয়ার্কিং না জানলে এসব কিছুই করা হবে না। এর জন্য যে আপনাকে সিসকো এর সিসিএনএ করতে হবে তা কিন্তু নয়। আমি মনে করি সাধারণ নেটওয়ার্কিং জ্ঞান থাকলেই যথেষ্ট।

তাই ওএসআই মডেল কে ভালো ভাবে শিখে নিন।

সাইবার সাইকোলজি

নতুন শব্দ? হ্যাকাররা এই সাইবার সাইকোলজিতে ভালো জ্ঞান রাখে, তাই তারা সোশ্যাল ইঞ্জিনিয়ারিং এর মতো কৌশলে খুব ভালো হয়ে থাকে। তারা জানে, কিভাবে একটা ডিপার্টমেন্ট হেড এর মতো আচরণ করতে হয়, বা কাউকে তাড়াহুড়ার মধ্যে ফেলে কিভাবে কিছু কাজ করিয়ে নেয়া যায়। একটা উদাহরণ দেখি:

এই ইমেইল থেকে “জোবায়েরকে” একটি তাড়াহুড়া পরিস্থিতির মধ্যে রেখে ডার্টি কাজ করানোর চেষ্টা চলছে। জোবায়ের কিছু বুঝেনা তাই, হয়তো ২৪ ঘন্টার মধ্যে যা করতে বলা হয়েছে তাই করে ফেলবে।

যাইহোক এটা নিয়ে বেশি কিছু বলতে চাচ্ছি না। কিন্তু আপনি যদি একজন পারদর্শী রেড টীম এর সদস্য হতে চান তাহলে সাইবার সাইকোলজি বিষয়েও জানতে হবে।

হ্যাকার মাইন্ডসেট তৈরী করুন

আপনার যতই টেকনিকাল স্কিলস থাকুকনা কেন, আপনি যদি হ্যাকার এর মতো ভাবতে না পারেন তাহলে আপনি ভালো এথিকাল হ্যাকার অথবা পেন্টেস্টার কোনোটাই হতে পারবেন না। শুধু বসকে ভুয়া বুঝ দিতে ২ মিনিটে শিখা যায় এমন টুল এর উপর নির্ভর করবেন যেমন নেসাস বা একানেটিক্স। হুম এখন প্রশ্ন, হ্যাকার কিভাবে ভাবে?

  • তারা সবসময় নতুন কিছু শিখতে চায়। যত শিখবে ততো দুর্বলতা খুঁজতে পারবে।
  • হ্যাকাররা চমৎকার সমস্যা সমাধানকারী। তারা এক্সপ্লোর করে এবং ভাবে এই সিস্টেমকে এই কাজ করার জন্য বানানো হয়েছে, এটাকে অন্য কাজ করতে বাধ্য করলে কিরকম আচরণ করতে পারে?
  • তারা নতুন দৃষ্টিকোণ থেকে আক্রমণ এর কৌশল চিন্তা করতে থাকে। আমরা একবার কোনো কাজে ব্যার্থ হলে সেটা নিয়ে আর ভাবি না, কিন্তু ওরা বিভিন্ন রাস্তা খুঁজতে থাকে।
  • যখন যা পরিস্থিতি আসে তখন তার সাথে খাপ খাইয়ে নেয়। যেমন, হঠাৎ নতুন একটা ল্যাঙ্গুয়েজ শিখতে হচ্ছে, বা নতুন একটি দুর্বলতা নিয়ে পড়াশুনা ও গবেষণা করতে হচ্ছে।
  • ধর্য্য তাদের আর একটি বড়ো গুন্। বিভিন্ন ভুল-ত্রুটির মধ্যে দিয়েও তারা মাসের পর মাস একটা সমস্যার সমাধান খুঁজে, বিভিন্ন ভাবে, তারা সফলও হয়।

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

নিজস্ব ল্যাব ও সিটিএফ

নিজস্ব ল্যাব থাকা অত্যন্ত গুরুত্বপূর্ণ, যেখানে আপনি বিভিন্ন টুলস ও কৌশলগুলো পরীক্ষা চালাবেন। তাই নিজের একটা ভার্চুয়াল ল্যাব তৈরী করুন।

আরও একভাবে নিজেকে শান দিতে পারেন, সেটা হলো হ্যাক দা বাক্স -এ সিটিএফ খেলে বিভিন্ন লেভেল এর মেশিনগুলোকে সলভ করে।

ক্রমাগতভাবে চালিয়ে যান, দেখবেন অনেক কিছু আপনার কাছে খোলামেলা হয়ে গেছে।

প্রফেশনাল ট্রেনিং এবং সার্টিফিকেশনস

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

ওএসসিপি নিয়ে আর একটা আর্টিকেল পরে লিখবো ।

ক্রমাগতভাবে শিখতে থাকুন

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

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

কোনো ধরণের প্রশ্ন থাকলে ইমেইল করতে পারেন অথবা হোয়াটস্যাপ/ডিসকোর্ড-এ মেসেজ করতে পারেন।