در تعاریف حوزهٔ امنیت کامپیوتر، Hacker کسی است که روی مکانیزم امنیت کامپیوتر یا سیستمهای مبتنی بر شبکه تمرکز دارد. جامعهٔ مشترکی از متخصصان برنامهنویسی و شبکه وجود دارد که عقبهٔ آن به دههها قبل و زمان عرضهٔ اولین کامپیوترها و آزمایشات اولیه Arpanet برمیگردد و میشود اعضای این جامعه را به عنوان اولین هکرها قلمداد کرد (برای آشنایی بیشتر با Arpanet، به مقالهٔ Robert Taylor: کسی که شاید نامش ناآشنا باشد، اما یکی از مهمترین افراد در حوزهٔ فناوری دنیا است! مراجعه نمایید.)
اما امروزه ورود غیرقانونی به کامپیوترها و تلفنهای همراه موجب ارائهٔ یک فرهنگ عام و در عین حال نادرست از فلسفهٔ Hack شده و این در صورتی است که فرهنگ واقعی هک بسیار پیچیدهتر و اخلاقیتر از آن چیزی است که اکثر مردم فکر میکنند! برای اینکه یک هکر بشوید، باید روشهای ابتدایی هک را یاد بگیرید، یاد بگیرید چهطور مثل یک هکر واقعی فکر کنید و چهطور در جامعهٔ هکرهای به اصطلاح کلاه سفید، احترام کسب کنید.
آشنایی با اصول اولیه در زمینهٔ هک و امنیت
پیش از تبدیل شدن به یک هکر به معنای واقعی کلمه، یکسری کلیات هستند که علاقمندان بدون شک باید به آنها تسلط پیدا کنند که در ادامه، سه مورد از اصلیترین آنها را مورد بررسی قرار خواهیم داد:
1- کار با لینوکس را یاد بگیرید:
یک سیستمعامل مبتنی بر یونیکس مثل گنو/لینوکس راهاندازی کنید (یونیکس و دیگر سیستمعاملهای مبتنی بر آن جزو سیستمعاملهای اصلی بستر اینترنت هستند.) بدون درک یونیکس مسلماً قادر خواهید بود یاد بگیرید چهطور از اینترنت استفاده کنید اما هرگز قادر نخواهید بود که به یک هکر مبدل شوید و به همین دلیل جامعهٔ هک امروز به شدت بر روی سیستمعاملهای مبتنی بر یونیکس متمرکز است.
تعداد زیادی از سیستمعاملهای مبتنی بر یونیکس وجود دارند که محبوبترین آنها GNU/Linux است و نیاز به توضیح نیست که میتوانید از سیستمعامل لینوکس در کنار ویندوز مایکروسافت در یک لپتاپ یا پیسی به صورت همزمان استفاده کنید (اگر علاقمند به یادگیری بیشتر در مورد لینوکس هستید، میتوانید به دورهٔ آموزش آنلاین و رایگان لینوکس در سکان آکادمی مراجعه نمایید.) همچنین یکی راه خوب برای شروع کار با لینوکس این است که از یک Live Distro استفاده کنید. با این روش، بدون هرگونه تغییر در سیستمعامل فعلی خود قادر خواهید بود تا با یک USB از لینوکس استفاده کنید. علاوه بر این، آشنایی با توزیعهایی که متمرکز روی مقولهٔ امنیت هستند هم در این راه به شما کمک میکنند که با مراجعه به مقالهٔ معرفی ۱۰ توزیع لینوکسی برای آنهایی که به دنبال امنیت میگردند، میتوانید اطلاعات بیشتری در این باره کسب کنید.
در کنار لینوکس، دیگر سیستمعاملهای به اصطلاح Unix-Like نیز وجود دارند مثل خانوادهٔ BSD که محبوبترین آنها عبارتند از FreeBSD ،NETBSD ،OpenBSD و Dragon Fly BSD که همهٔ آنها مانند لینوکس، اپنسورس هستند.
macOS هم بر پایهٔ Darwin میباشد که یک سیستمعامل یونیکسی است که خود بر پایه FreeBSD میباشد و به دلیل اینکه هستهٔ داروین بر پایهٔ یونیکس بوده و نیز مکینتاش بسیار محبوب است، بسیاری از اپلیکیشنهای لینوکس برای مک به اصطلاح پورت شدهاند که شما میتوانید آن برنامهها را با یک نرمافزار مدیریت پکیج مثل homebrew ،fink یا macports دریافت کنید (برای آشنایی با تاریخچهٔ این سیستمعامل، میتوانید به مقالهٔ آشنایی با تاریخچۀ سیستمعامل macOS مراجعه نمایید.)
اگر هم قصد دارید خیلی تخصصی کار کنید، میتوانید از یک سیستمعامل مثل Open Indiana استفاده کنید. Open Indiana بر پایهٔ نسخه اپنسورس سیستمعامل Solaris (قبل از اینکه توسط اوراکل خریداری شده و از اپنسورسی خارج شود) میباشد و هم Open Indiana و هم Solaris بر پایهٔ UNIX System V میباشند؛ بنابراین با اپلیکیشنهای لینوکسی سازگار نیستند (گرچه پورت بسیاری از اپلیکیشنهای لینوکس برای Open Indiana وجود دارد اما بهتر است از macOS ،BSD یا GNU/Linux استفاده کنید چرا که آنها محبوبتر هستند و نرمافزارهای بسیار بیشتری برای آنها به بازار عرضه شده است.)
2- با زبانهای برنامهنویسی تحت وب آشنا شوید:
اگر برنامهنویسی بلد نیستید، ضروری است با یادگیری اصول زبان HTML (که تحت هیچ عنوان جزو زبانهای برنامهنویسی به شمار نمیآید) شروع کرده و تدریجاً در آن تبحر کسب کنید. چیزی که شما در هنگام نگاه کردن به یک وبسایت از قبیل تصاویر، عکسها و طراحی اجزا میبینید، همگی با استفاده از زبانهای HTML و CSS کدنویسی شدهاند. به عنوان یک پروژهٔ تست، شروع به یادگیری ساختن یک وبسایت شخصی کنید و سعی کنید به مرور زمان، دانش خود را گستردهتر کنید.
برای درک بهتر چگونگی کارکرد زبان HTML، در مرورگر خود یک وبسایت را باز کرده و پیجسورس آن را مشاهده کنید (به طور مثال، در مرورگر گوگل کروم برای این کار روی صفحه کلیک راست نموده سپس گزینهٔ View page source را کلیک نمایید.) روی هم رفته، یادگیری زبانهای اصلی وب همچون CSS ،HTML و در نهایت JavaScript حداقلهایی است که در این زمینه بایستی فرا گرفت.
3- یک زبان برنامهنویسی بَکاِند را فرا بگیرید:
قبل از شروع به شعر نوشتن به زبان فارسی، شما باید دستور زبان فارسی را خوب یاد بگیرید؛ همچنین قبل از اینکه یاد بگیرید چهطور قوانین را دور بزنید، اول بایستی زیر و بَم آنها را به خوبی فرا بگیرید؛ در حوزهٔ هک هم چنین قضیهای کاملاً صادق است. به عبارت دیگر، حتماً باید به یک زبان برنامهنویسی حرفهای تسلط کامل داشته باشد. در واقع، اگر هدف نهایی شما این است که یک هکر حرفهای شوید، شما به بیش از یک دستور زبان ساده برای خلق شاهکارهایتان نیاز دارید (برای کسب اطلاعات بیشتر، میتوانید به مقالهٔ اگر میخواهید هکر شوید، حتماً باید برنامهنویسی یاد بگیرید مراجعه نمایید.)
Python زبان خوبی برای شروع است به دلیل اینکه تمیز طراحی شده، به خوبی مستندسازی شده و نسبتاً برای مبتدیان راحتتر است (چرا که سینتکس آن بسیار شبیه به زبان محاورهای انگلیسی است.) به طوری که این زبان خیلی قدرتمند، انعطافپذیر و بسیار مناسب برای پروژههای بزرگ است (برای شروع یادگیری این زبان، میتوانید به دورهٔ آموزش آنلاین و رایگان زبان برنامهنویسی پایتون در سکان آکادمی مراجعه نمایید.)
اگر علاقمند باشید تا به طور جدیتر برنامهنویسی یاد بگیرید، باید به دنبال یادگیری زبان C باشید چرا که این زبان هستهٔ اصلی یونیکس است. همچنین زبان قدرتمند دیگری همچون ++C بسیار مرتبط با C است و اگر شما یکی را بدانید، یادگیری دیگری چندان سخت نخواهد بود!
نگرش هک
حال که شما مفاهیم ابتدایی را فرا گرفتهاید، در مرحلهای هستید که میتوانید شروع به تفکر خلاقانه کنید. هکرها مثل هنرمندان، فیلسوفها و مهندسانی هستند که همه در یک وجود جمع شدهاند. آنها به آزادی و مسئولیت دوطرفه معتقدند و دنیا پر از مسائل جذابی است که همه منتظر حل آنها هستند و هکرها لذت وافری از حل مسائل، تقویت مهارتهایشان و استفاده کردن از هوش و ذکاوت خود میبرند که راهکارهای دستیابی به این هدف، عبارتند از:
1- خلاقانه فکر کنید:
هکرها علائق متنوع فرهنگی و روشنفکرانهای خارج از دنیای هک دارند؛ برای هکرهای واقعی مرز بین بازی، کار، علم و هنر از بین رفته است یا به یک سطح بالایی از بازیگوشی خلاقانه تبدیل شده است! خواندن داستانهای تخیلی شاید برای هکرها بیش از هر قشر دیگری جذاب باشند چرا که ایشان به انجام کارهای عجیبوغریب عادت دارند.
کارهایی که منجر به افزایش نظم فکری شما میشوند انجام دهید و همواره سعی کنید میزان تفکر انتقادی را در خود افزایش دهید چرا که یک هکر میبایست این توانایی را داشته باشد تا به یک مسئله، از زوایای مختلفی نگاه کند (مطالعهٔ مقالهٔ هکرهای دنیای امروزی بیش از آنچه فکر میکنید حرفهای هستند در این زمینه خالی از لطف نیست.)
2- عاشق حل کردن مسائل باشید:
هیچ مسئلهای نباید دو بار حل شود. جامعهای را در نظر بگیرید که وقت تمام آدمهای آن به ارزشمندی وقت هکرها است. هکرها معتقدند که به اشتراکگذاری اطلاعات یک مسئولیت اخلاقی است و وقتی شما مسائل را حل کردید، اطلاعات خود را منتشر کنید تا به دیگران در حل همان موضوع کمکی کرده باشید. همچنین به یاد داشته باشید که موظف نیستید که همهٔ داشتههای خلاقانهٔ خود را منتشر کنید (اگرچه هکرهایی که این کار را انجام میدهند بیشترین احترام را از سایر هکرها دریافت میکنند.)
3- با مخفیکاری مبارزه کنید:
دشمن اصلی هکرها کسانی هستند که با مخفیکاری درصدد هستند تا نوعی از اطلاعات را از دید عموم مخفی کنند و این همان چیزی است که اکثر ایشان را به دور زدن درهای دستیابی به اطلاعات مخفیانه ترغیب میکند. برای این منظور، باید با مفاهیمی همچون دارک وب و غیره آشنایی شوید که مقالهٔ Deep Web ،Darknet و Dark Web: تعاریف و تفاوتها شروع خوبی در این حوزه است.
4- رقابتپذیر باشید:
جا زدن خود به عنوان یک هکر کار چندان دشواری نیست اما به خاطر داشته باشیم که چندی طول نخواهید کشید که دستمان رو میشود! زمان خود را صرف افزایش مهارتها و دانش خود کنید و نَه صَرف تصاویر متفاوت و عجیبوغریب از خود! که با این کار به زودی احترام فراوانی در فضای آنلاین به دست خواهید آورد. صرف وقت روی چیزهای سطحی و بیارزش و آنچه که در فرهنگ عامه به عنوان هک کردن شناخته میشود، هیچ نتیجهای نخواهد داشت (در این راستا، توصیه میکنیم به مقالهٔ خودگیکپنداری، خودخَفَنپنداری و خودآسپنداری: سندرمی که برخی دولوپرها به آن دچار میشوند! مراجعه نمایید.)
تبدیل شدن به یک هکر واقعی
تا اینجای کار، یاد گرفتیم که با یادگیری اصول کار و تغییر نگرش خود از فلسفهٔ هک از آنچه در عرف جامعه تلقی میشود، چگونه میتوانیم راه را برای تبدیل شدن به یک هکر واقعی باز کنیم. حال بایستی به سمت مراحل آخر گام برداریم که عبارتند از:
- نرمافزارهای اپنسورس بنویسید: برنامههایی بنویسید که سایر هکرها آنها را مفید و جالب بدانند و سورس برنامههای خود را در اختیار تمام دولوپرها قرار دهید تا استفاده کنند. محترمترین آدمها در عرصهٔ هک، کسانی هستند که برنامههای بزرگ و کاربردی به صورت #اپنسورس نوشتهاند که میتواند نیازهای طیف گستردهای را مرتفع کنند.
- به تست و دیباگینگ نرمافزارهای اپنسورس کمک کنید: هر دولوپر اپنسورس باتجربهای به شما خواهد گفت که تسترهای خوب به اندازهٔ وزنشان با طلا برابری میکنند چرا که میتوانند باگهایی که از چشم خود دولوپرها و سایر کاربران دور افتاده را به سادگی تشخیص دهند. سعی کنید یک برنامهٔ در حال توسعه که به آن علاقه دارید را پیدا کرده و به یک تستر خوب برای نسخهٔ بتای آن مبدل گردید به طوری که از این طریق چیزهای بسیاری یاد خواهید گرفت و در افرادی که بعداً به شما کمک خواهند کرد، حسن نیت ایجاد خواهید کرد.
- اطلاعات مفید منتشر کنید: هر آن چیزی که یاد میگیرد را بدون هیچگونه چشمداشتی با دیگران به اشتراک بگذارید چرا که با این کار، هم میتوانید به رشد دانش در میان سایر کاربران کمک کرده و هم برای خود اعتبار کسب کنید.
- پرتلاش باشید: جماعت هکرها به طور کلی توسط افراد داوطلب اداره میشوند. کارهای ضروری اما نه چندان اغواکنندهای مثل مدیریت لیست ایمیلها، اصلاح گروههای خبری، مدیریت سرورهای آشیو اپنسورس، مدیریت RFC و دیگر کارهای در ظاهر پیشپاافتادهای وجود دارند که بایستی انجام شوند. کسانی که این نوع کارها را انجام میدهند، به دلیل اینکه همه میدانند این کارها بسیار وقتگیر هستند و در عین حال به جذابیت کدنویسی نیستند، احترام فراوانی در میان سایر جماعت هکرها کسب میکنند و انجام دادن این کارها، نشان از فداکاری شما دارد که راه را برای پیشرفت در این حوزه باز میکند.
- سعی کنید به یک قهرمان تبدیل شوید: این چیزی نیست که شما به خاطر انجام دادن آن جایگاه خاصی کسب کنید؛ تا زمانی که برای مدتی در کار بمانید و به خاطر یکی از چهار مورد معرفی شده در بالا مشهور بشوید. جامعهٔ هکرها به طور مشخص رهبر ندارد اما میتوان در چنین جامعهای به یک قهرمان مبدل شد. در واقع، وقتی شما به مدت طولانی در چنین جامعهای عضو باشید، این احتمال وجود دارد که به مرور زمان به یک قهرمان تبدیل شوید.
در خاتمه، لازم به ذکر است که آشنایی با شبکه برای هکرها یک باید محسوب میشود؛ لذا درک سازوکار توپولوژیهای شبکه و دیگر مباحث مربوطه را نیز باید در دستور کار خود قرار دهند که برای کسب اطلاعات بیشتر در این باره، توصیه میکنیم به مقالهٔ آشنایی با توپولوژی شبکه و انواع مختلف آن مراجعه نمایید. همچنین برای آشنایی با فعالان حوزهٔ هک و امنیت توصیه میکنیم به پادکستهای زیر در رادیو فولاستک مراجعه نمایید:
- جادی میرمیرانی: گیک قدیمی و فعال جامعهٔ اپنسورس
- مهران طُرِیحی: متخصص امنیت اطلاعات
حال نوبت به نظرات شما میرسد. تعریف شما از هک و هکر چیست و ویژگیهای بارز هکرهای کلاه سفید و هکرهای کلاه سیاه از نگاه شما کدامند؟ نظرات و دیدگاههای خود را دیگر کاربران سکان آکادمی به اشتراک بگذارید.