تست غیرمخرب شبکه سازمانی کیست؟ توضیح بده.
امنیت در حوزه فناوری اطلاعات بحث اساسی و پر دامنه‌ای است. با رشد و فراگیر شدن بستر شبکه در حوزه فناوری اطلاعات و ارتباطات و نقش مستقیمی که آن در ایجاد، نگهداری و توسعه کسب و کارها ایفا می‌نماید، بحث‌های امنیتی بحث شبکه به‌طور خودکار اهمیت ویژه‌ای می‌یابند. امروزه سازمان‌ها علاوه برداشتن تجهیزات سخت‌افزاری و نرم‌افزاری گوناگون و همچنین تیم پاسخگویی اضطرارات رایانه‌ای (CERT) برای مواقع Critical باید ملاحظاتی را در امن‌سازی شبکه‌های داخلی و خارجی خود داشته باشند. گردش اطلاعات ارزشمند در تجارت شبکه‌ای امروز باید سریع، دقیق و ایمن صورت بگیرد و رسیدن به راهبردی که هر سه ویژگی را تضمین نماید چیزی نیست که به تنهایی از عهده مدیریت شبکه سازمان یا واحد حراست آن بر آید. تست Penetration غیرمخرب راهبردی کاربردی در بحث یافتن مشکلات امنیتی در طراحی و نگهداری شبکه‌های سازمانی و جریان اطلاعات موجود در آن می‌باشد. در این نوشتار مروری کوتاه بر مفاهیم اصلی این فرایند پر مخاطره شده و تلاش بر آن بوده‌است تا ذهن خواننده با ادبیات و تکنیک‌های آن درگیر شود.مفاهیم اولیه تست Penetration.تعاریف اولیه.زندگی شهامت رویارویی با مخاطرات را نیز می‌طلبد.هلن کلرامنیت اغلب اوقات یک پدیده انتزاعی است و به صورت فیزیکی در طبیعت وجود ندارد. هیچ انسانی در کودکی از آن درک مشخصی ندارد. اجتناب از مخاطرات هیچگاه نمی‌تواند در طی مدت زمان طولانی، کاملاً محقق گردد.در عصر دیجیتالی حاضر کسب و کارها برای محرمانه نگه داشتن اطلاعات مربوط به مشتریان شان با مشکلاتی مواجه هستند. برای کاهش ریسک از دست رفتن Assetهای آسیب‌پذیر، کمپانی‌ها بیشتر اوقات از تست Penetration استفاده می‌کنند.تست Penetration رویه‌ای است که Third-Party مورد اعتماد کمپانی بر روی شبکه کامپیوتری سازمانی به منظور تعیین میزان امنیت آن به کار می‌بندد. با شبیه‌سازی یک حمله واقعی مدیران می‌توانند پتانسیل نفوذ عامل حمله و دلایل آسیب‌پذیری داده‌های ارزشمند کمپانی را مشاهده نمایند. در بخش اول فیلدهای اصلی تست Penetration (شامل پیش نیازها، ترمینولوژی و رویه‌های گام به گام) شرح داده می‌شودهک و کرک.واژه Hack در دهه ۱۹۶۰ در آزمایشگاه Tech Model Railroad Club (TMRC) واقع در دانشگاهMassachusetts Institute of Technology (MIT) هنگامی که محققان به منظور بالا بردن کارایی مدارات آن‌ها را می‌شکافتند متولد شد. همچنین به معنی مهندسی معکوس برنامه‌ها برای بالابردن کارایی آن‌ها نیز به کار رفته‌است.واژه Crack در مقابل Hack، به نفوذ مبتنی بر اهداف متجاوزانه اشاره دارد. برای مثال نفوذ به یک شبکه کامپیوتری به قصد آسیب رساندن به کامپیوتر یا اطلاعات موجود در آن.Hackerهایی که با اهداف تخریبی و نادرست به فعالیت می‌پردازند را اصطلاحاً کلاه سیاه می‌نامند. Hackerهایی که کلاه سیاه نباشند، Hackerاخلاق گرا یا کلاه سفید نامیده می‌شوند.تست‌کننده Penetration یک Hacker کلاه سفید است که با توافق با مسئولین شبکه کامپیوتری سازمان به منظور تعیین میزان امنیت داده‌های موجود در آن نفوذ می‌نماید. تیمی از Hackerهای کلاه سفید که برای انجام تست Penetration به کار گرفته می‌شوند Tiger Team نامیده می‌شوند.معمولاً یک توافق نامه تعهدآور تعیین می‌کند که تست‌کننده Penetration چه کارهایی را باید انجام بدهد و چه کارهایی را مجاز نیست انجام بدهد. برای مثال ماهیتاً به وی اجازه حمله DoS در محدوده شبکه یا نصب ویروس داده نمی‌شود.انواع آزمون در تست Penetration.تست Penetration می‌تواند شامل سه نوع آزمون باشد:۱- آزمون جعبه سیاه۲- آزمون جعبه سفید۳- آزمون جعبه کریستالی یا خاکستریآزمون جعبه سیاه.در آزمون جعبه سیاه، تست‌کننده بدون داشتن دانش اولیه‌ای راجع به شبکه داخلی سازمان به اعمالرویه‌های نفوذ می‌پردازد. برای مثال آدرس IP و آدرس یک وب سایت را گرفته و برای نفوذ به آن تلاش می‌نمایدآزمون جعبه سفید.در آزمون جعبه سفید، تست‌کننده دانش کاملی راجع به وضعیت شبکه داخلی سازمان دارد. ممکن است نقشه شبکه سازمان و لیستی از Applicationها و سیستم‌های عامل مختلف را برای انجام تست در اختیار داشته باشد. با اینکه اغلب حملات خارجی قابل مشاهده و بررسی مجدد نیستند اما این روش تست می‌تواند بسیار مفید باشد زیرا با کامل شدن دانش Hacker تست کننده، سناریوهای نامناسب و ضعیف پیکربندی شبکه سازمانی قابل درک می‌گردند.آزمون جعبه خاکستری.در آزمون جعبه کریستالی، تست‌کننده در قالب یک کارمند سازمان قرار گرفته و اعتبار لازم را برای دسترسی استاندارد به درون شبکه کسب می‌نماید. این نوع تست مخاطرات ناشی از فعالیت کارمندان داخلی سازمان را تعیین می‌نماید..[۱]فاکتورهای اصلی در تعیین محدوده تست پنتریشن.قبل از انعقاد قرارداد با شرکت تست کننده، کمپانی باید یک برنامه برای تست تهیه نماید که در محدوده تست دقیقاً مشخص گردد. برخی از فاکتورهای اصلی در تعیین این محدوده عبارتند از:۱- آیا فرایند تست سیستم باید در ساعات کاری معمولی انجام پذیرد یا پس از اتمام ساعت کاری روزانه افراد؟۲- آیا حملات Dos مجاز هستند؟۳- آیا نصب Trojan Appهای Back-Door در محدوده سیستم مجاز است؟۴- آیا خرابکاری در صفحات وب سایت‌ها مجاز است؟۵- آیا پاک کردن فایل‌های log مجاز است؟۶- کدامیک از آزمون‌های جعبه سیاه، جعبه سفید یا جعبه کریستالی باید صورت بگیرد؟۷- آیا تیم شبکه سازمان باید از انجام تست آگاه شوند یا خیر؟ (اینکه تیم IT سازمان از فرایند تست Penetration آگاه باشند معمولاً ایده جالبی نیست. چون باعث می‌شود آن‌ها نسبت به وضعیت معمول جستجوی بیشتری در سیستم و حفره‌های احتمالی آن بنمایند و در نتیجه فرآِند تست نمی‌تواند آنچه را که ایشان در حالت طبیعی انجام می‌دهند مورد بررسی قرار دهد)۸- سیستم در زمان ارزیابی (TOE) چگونه باید باشد؟۹- آیا استفاده از مهندسی اجتماعی در فرایند تست مجاز است؟۱۰- آیا داده‌های سیستم می‌توانند تغییر کنند یا از بین بروند؟ملاحظات اصلی در انجام یک پروژه تست پنتریشن.برنامه تست باید نحوه تولید و توزیع گزارش نتایج و مرجع آن‌ها را مشخص نماید. اگر تست به صورت الکترونیکی توزیع گردد باید از طریق کانال‌های رمزگذاری شده‌استفاده گردد. دو گزارش زیر باید ساخته شود:۱- یک گزارش کلی غیراختصاصی که باید در محل امنی نگهداری شود.۲- یک گزارش کامل که ضمن شرح جزئیات مخاطرات آنچه در تقابل با آن‌ها باید انجام شود را نیز مشخص نماید. این گزارش نیز باید در محل امنی نگهداری گردد تا صحت آن در مراجعات بعدی تضمین گردد.همچنین یک کمپانی نباید به انجام یکبار تست Penetration بسنده نماید. تست مزبور باید در هر سه ماه از سال مجدداً تکرار گردد. کمپانی نباید به تستی که توسط یک Third-Party انجام شده اعتماد نماید و حداقل باید دو شرکت مختلف را به کار گیرد. اغلب کمپانی‌ها از ۳ شرکت برای انجام تست کمک می‌گیرند: یکی برای انجام مراحل اولیه تست و دوتای دیگر برای چرخش در فصول تا از ماحصل کار اطمینان حاصل نمایند.برای صرفه جویی در هزینه برخی از کمپانی‌ها تست Penetration را در طول یک سال انجام می‌دهند و در سه فصل از سال تست‌های بعدی را برای کنترل آسیب‌پذیری‌های گزارش شده تکرار می‌نمایند. تست‌های یادشده را همچنین می‌توان به هنگام انجام تغییرات در سیستم اعمال کرد. (برای مثال وقتی یک سرویس دهنده جدید به شبکه افزوده می‌شود) این سیاست تغییر چندانی در صحت نتایج تست ایجاد نمی‌نماید ولی هزینه آن را کاهش می‌دهد.تعیین حوزه‌های ناامنی در سیستم.یک تهدید تخطی از پتانسیل امنیتی سیستم است که ممکن است باعث آسیب‌هایی چون افشای اطلاعات حساس، تغییر داده‌ها، تخریب داده‌ها یا عدم پذیرش یک سرویس باشد.امنیت ارتباط مستقیمی با نگهداری چیزهای ارزشمند در برابر مخاطرات دارد. مخاطرات احتمالی در سه حوزه محرمانگی، یکپارچگی و دسترسی پذیری وجود دارند:۱- یک تهدید محرمانگی وقتی وجود دارد که ریسکی در خواندن داده‌هایی که باید از دسترسی غیر معتبر مصون باشند وجود دارد.۲- یک تهدید یکپارچگی زمانی به وقوع می‌پیوندد که اطلاعات توسط افراد غیرمجاز تغییر کنند.۳- یک تهدید دسترسی پذیری زمانی است که در ارائه یک سرویس یا منبعی از شبکه به برخی از افراد ریسکی وجود داشته باشد..[۲]تشخیص نیازمندی‌های تست.بهترین راه متوقف کردن اعمال بزهکارانه تفکر کردن در مورد چگونگی انجام آن‌ها است. یک دزدگیر یا حصار بلند به این معنی نیست که شما از دست سارقین در امان هستید. برای متوقف کردن مؤثر یک سارق، همیشه باید اعمالی که وی مرتکب می‌شود را پیش‌بینی کرد. برای مقابل با یک Cracker باید همانند خود او اندیشه کرد. یکی از راه‌هایی که کمپانی‌ها برای سنجش میزان امنیت شبکه داخلی شان به کار می‌بندند اجیر کردن شرکت‌هایی است که به شبکه آن‌ها نفوذ کرده و ملاحظات امنیتی نامتناسب را به ایشان گزارش می‌دهند.امروزه سر و کله تهدیدات امنیتی جدی پیدا شده و شرکت‌ها و سازمان‌ها خود را در تیررس آن‌ها مشاهده می‌کنند. پیچیدگی سیستم‌های محاسباتی باعث رشد سریع ویروس‌ها شده و توان دفاعی شرکت‌ها در مقابل حملات آن‌ها بسیار کمتر از گذشته می‌باشد. از سوی دیگر Toolsهایی که Hackerهای امروزی از آن‌ها برای حملات شان استفاده می‌کنند به مراتب ساده‌تر و در دسترس تر از گذشته شده‌است.شرکت‌ها امروزه کم و بیش به سندرم تایتانیک دچار هستند. کشتی بزرگ مسافرتی تایتانیک در ۱۵ آوریل ۱۹۱۲ پس از برخورد با کوه یخی در اوقیانوس فرورفت، در حالی که مهندسان سازنده آن قبل از شروع سفر ابدی آن مدعی بودندکه این کشتی هیچ‌گاه غرق نخواهد شد..[۲]شرکت‌های امروزی واقع گرا باید پذیرای این اصل مهم باشند که شبکه آن‌ها با تمام تمهیداتی که به هنگام راه اندازی ان شده‌است لزوماً امن نمی‌باشد و ممکن است در برابر حملات امنیتی دچار اختلال گردد. اینواقع گرایی به ترقی و پیشرفت مقوله تست Penetration منجر شده‌است؛ و اینکه Hackerهای کلاه سفید از همان ابزار و روش‌هایی بهره مندند که Hackerهای خرابکار کلاه سیاه به آن‌ها مسلح هستند.عوامل مؤثر در افزایش تهدیدات امنیتی.تهدیدات امنیتی مختلف به دلیل عوامل زیر در حال افزایش هستند:۱- تکثیر و ازدیاد ویروس‌ها و Trojanها۲- استفاده از LANهای بی‌سیم۳- پیچیدگی شبکه‌های امروزی۴- نوسان زیاد در به روزرسانی نرم‌افزارها۵- ساده‌تر شدن ابزارهای Hack۶- طبیعت نرم‌افزارها و محصولات Open Source۷- وابسته شدن روزافزون به اینترنت۸- افزایش ارتباط گیرندگان راه دور و استفاده کنندگان متحرک از شبکه و غیرقابل مانیتور بودن ایشان۹- وابسته شدن تجارت به استفاده از بستر شبکه۱۰- مقررات صنعت۱۱- اعتماد مدیران به شبکه۱۲- شرکای تجاری شبکه‌ای۱۳- جنگ الکترونیکمراحل اصلی در تست.تست penetration حمله‌ای امنیتی ولی در عین حال با اهداف غیر تخریبی است که شامل مراحل زیر می‌باشد:۱- شناسایی۲- پویش۳- به دست آوردن دسترسی۴- نگهداری دسترسی۵- از بین بردن مدارک [۲]شناسایی.در مرحله شناسایی، تست‌کننده تلاش می‌کند اطلاعات بیشتر در مورد حوزة کاری مورد نظر به دست آورد. شناسایی می‌تواند فعالانه یا انفعالی باشد. در یک حمله شناسایی فعالانه، تست‌کننده از ابزارهایی مانند nslookup, dig یا SamSpade برای کاوش در محدوده شبکه برای یافتن محدوده IP آدرس در حوزه نقل و انتقلات DNS بهره می‌گیرد. در یک حمله شناسایی انفعالی، تست‌کننده از اطلاعات عمومی قابل دسترسی نظیر Newsgroupها یا Job Postingها برای تشخیص تکنولوژی مورد استفاده توسط کمپانی بهره می‌گیرد.پویش.در مرحله پویش، تست‌کننده از ابزارهایی مانند NMap برای یافتن Portهای باز شبکه استفاده می‌نماید. هدف اصلی در اینجا یافتن سرویس‌هایی است که بر روی Hostهای شبکه ارائه می‌گردد. در این مرحله‌است که تست‌کننده تکنیک‌های OS Fingerprinting را برای تعیین نوع سیستم عامل کامپیوتر Host به کار می‌گیرد.بخش دیگری از مرحله پویش جستجو و یافتن نقاط آسیب‌پذیر است. این نقاط آسیب‌پذیر یافتن روشی برای به دست آوردن دسترسی به محدوده کامپیوتر (های) Host است.دسترسی و نگهداری آن.پس از پویش در شبکه برای به دست آوردن نقاط ضعف موجود در سیستم، برای نفوذ به سیستم تست‌کننده از آن‌ها نهایت استفاده را می‌برد. در صورتی که تلاش‌های وی برای دسترسی با موفقیت همراه باشد مرحله نگه داشتن دسترسی به محدوده کامپیوتر Host آغاز می‌گردد. این مرحله پس از ایجاد یک Back-Door برای تعبیه راهی به منظور بازگشت مجدد به سیستم، به کمک نصب برنامه‌های Trojan خاتمه می‌یابد.ازبین بردن ردپاها.مرحله آخر تست از بین بردن مدارک است. در این مرحله Hackerهای اخلاق گرا می‌خواهند ببینند آیا می‌توانند Log فایل‌هایی که دسترسی آن‌ها به سیستم را ثبت کرده‌است پاک کنند یا خیر. چون بسیاری از حملات قابل کشف شدن نیستند اینکه کدام حمله می‌تواند در سیستم Log شود و چگونه می‌توان Log فایل‌ها را پاک کرد، از اهمیت بالایی برخوردار است.کسب اجازه برای دسترسی به Log فایل‌ها بسیار مهم است. پاک کردن Log فایل‌ها، می‌تواند مسئولیت ارزیاب‌های سیستم را در صورتی که نتوانند ثابت کنند چه کارهایی انجام داده‌اند یا نداده‌اند، آشکار سازد.ملاحظات اصلی در انتخاب تست کننده.پس از تصمیم‌گیری برای انجام یک تست Penetration توسط کمپانی، باید عرضه‌کننده چنین سرویسی را بر اساس پارامترهای مختلفی تعیین کرد. در زیر به برخی از این پارامترها اشارهشده‌است:۱- مسئولیت پذیری عرضه‌کننده در تضمین امنیت شبکه پس از انجام فعالیت‌هایش و جبران خسارت‌های احتمالی آینده۲- پرسش در مورد مرجع ثالث: در میان کارکنان قبلی کمپانی ممکن است افرادی باشند که عرضه‌کننده سرویس تست با آن‌ها ارتباط داشته باشد. مشتریان به دلیل حریم خصوصی نمی‌خواهند نامی از ایشان برده شود. اما برخی از کمپانی‌ها تمایل دارند در مورد توانایی هایشان با عرضه‌کننده سرویس تست Penetration بحث و گفتگو نمایند.۳- انجام کنترل‌های پیش زمینه: کمپانی‌ها همچنین باید اطلاعات کاملی از پیش زمینه بزهکارانه (احتمالی) کارکنان خود در اختیار عرضه‌کننده سرویس تست Penetration قرار دهند. گاهی اوقات خودعرضه‌کننده سرویس تست Penetration مسئول تهیه این اطلاعات می‌باشد.۴- پرسش در مورد گزارشات نمونه: این گزارشات نباید واقعی باشند. در غیر این صورت چه کسی می‌تواند بگوید که عرضه‌کننده سرویس تست Penetration از گزارشات مربوط به یک مشتری برای مشتری دیگر استفاده نمی‌کند. همیشه باید از همکاری با گزارشات واقعی اجتناب کرد. گزارشات نمونه باید عمومی و کلی و بدون ارجاع و اشاره به هویت کمپانی خاصی باشند. آن‌ها باید حرفه‌ای بودن خود را در تمام زمان‌ها حفظ نمایند.۵- تعیین محدوده تست: کمپانی باید مطمئن باشد که عرضه‌کننده سرویس تست Penetration به تمام جوانب کار می‌پردازد. در غیر این صورت باید آن را تعویض کرده یا از چند عرضه‌کننده سرویس تست Penetration بهره گرفت.۶- تشخیص این که آیا عرضه‌کننده سرویس تست Penetration از Hackerهای کلاه سیاه استفاده می‌کند یا خیر: برخی از عرضه‌کننده‌های سرویس تست Penetration در تیم تست شان از Hackerهای کلاه سیاه استفاده می‌کنند. بهتر است از همکاری با چنین شرکت‌هایی اجتناب شود چون مشخص نیست که این افراد چقدر به اصول اخلاقی حرفه‌شان پایبند هستند.۷- اجتناب از همکاری با شرکت‌هایی که خدمات Hack را به صورت رایگان انجام می‌دهند: بعضی از شرکت‌ها پیشنهاد Hack کردن رایگان شبکه سازمان و دریافت جایزه در صورت توانایی نفوذ به سیستم را ارائه می‌دهند. از همکاری با این شرکت‌ها باید اجتناب شود چون نشان دهنده ناامیدی کمپانی از برطرف شدن مشکلات امنیتی اش است.۸- تعیین اینکه آیا عرضه‌کننده سرویس تست Penetration از قوانین و مقررات کسب و کار سازمان آگاهی دارد یا خیر۹- تعیین اینکه عرضه‌کننده سرویس تست Penetration فعالیت‌های خودش را در چه بازة زمانی انجام می‌دهد.۱۰- اطمینان حاصل کردن از اینکه سرویس تست Penetration تنها سرویسی است که شرکت مورد نظر ارائه می‌نماید: برخی از سازمان‌های کوچک یکپارچه سرویس تست Penetration را به عنوان یکی ازده‌ها سرویس ارائه شوند پیشنهاد می‌نمایند. این امر به خودی خود بد نیست اما قبل از شروع همکاری کمپانی باید در مورد اینکه این قبیل شرکت‌ها چقدر بر روی آیتم مورد نظر سرمایه‌گذاری کرده‌اند تحقیق نماید.۱۱- آگاهی یافتن از Certificateهایی که تست کنندگان قبلاً دریافت داشته‌اند: برخی از معروف‌ترین Certificateهای بحث امنیت عبارتند از: CCIE Security,CEH, CISSP, CCSP, GIAC,OPSTA و +Security۱۲- تعیین اینکه عرضه‌کننده سرویس تست Penetration به کمک آدرس‌های IP تست را انجام می‌دهد: وقتی قرار است آزمون جعبه سیاه انجام شود تنها باید یک Domain Name برای تست مدنظر قرار بگیرد.۱۳- تعریف یک زمان مشخص برای پایان فرایند تست: زمان انجام هر تست ممکن است مختلف باشد. اما به صورت تیپیک ممکن است بین ۲ هفته تا ۲ ماه به طول انجامد.۱۴- تعیین Log فایل‌ها، اطلاعات تصویری و داده‌های خامی که عرضه‌کننده سرویس تست Penetration باید برای کمپانی مورد تست فراهم نماید.۱۵- پرسیدن تکنولوژی و متدولوژی‌هایی که عرضه‌کننده سرویس تست Penetration از آن‌ها قرار است استفاده نماید از شرکت مورد نظر: آیا تنها از ابزارهای پویش مانند Nessus, Saint, Sara, Satan, ISS, eEye وNetRecon استفاده می‌شود یا از ابزارهای گوناگونی که برای سیستم عامل‌های مختلف طراحی شده‌اند بهره گرفته می‌شود. متدولوژی مورد استفاده OSSTMM یا امثال آن است یا خیر؟ و ملاحظاتی از این قبیل.۱۶- تعیین اینکه کمپانی می‌خواهد از یک عرضه‌کننده سرویس تست Penetration استفاده کند یا قرارداد بستن با چند شرکت را مدنظر دارد.۱۷- ملاقات با اعضای تیم تست و اطمینان حاصل کردن از اینکه همان افرادی هستند که برای این پروژه در نظر گرفته شده‌اند. [۲]Guideline اصلی در آماده شدن برای تست Penetration.پس از انتخاب عرضه‌کننده سرویس تست Penetration کمپانی مورد تست باید از Guideline زیر پیروی نماید:۱- آشنا کردن پرسنل با سیاست امنیتی سازمان.۲- تصمیم‌گیری در مورد اینکه چه افرادی باید در مورد انجام تست مطلع گردند.۳- تعیین فردی که عهده‌دار نقش POC است. (POC فردی است که از پرسنل سازمان بوده و در طول انجام فرایند تست بر روی شبکه در تماس مستقیم با تیم تست قرار می‌گیرد. این فرد کسی است که در صورت تلاش برای دسترسی غیرمجاز توسط تیم تست‌کننده باید هشدارهای لازم را به ایشان بدهد. در صورت وقوع هرگونه تخلف از مراحل تست POC کسی است که در قبال سازمان مسئولیت دارد!)تهیه۴- وافق نامه‌های محرمانگی و عدم افشا و نظارت بر حسن اجرای آن۵- تهیه RFP مربوط به خواسته‌های سازمان از انجام فرایند تست Penetration۶- تعیین اینکه آیا کمپانی گزارشات تست را می‌خواهد یا نه۷- تماس با فراهم‌کننده سرویس اینترنت (ISP) سازمان و آگاه‌سازی وی از انجام تست: در صورتی که تست ممکن است به Clientهایی خارج از سازمان تسری یابد اطلاع دادن به ISP دارای اهمیت می‌گردد.۸- عدم تدارک تغییرات بنیادین در پیکربندی شبکه سازمان در طی فرایند تست۹- تهیه چندین پشتیبان از اطلاعات حیاتی سازمان قبل از شروع فرایند تست۱۰- توافق بر روی ذخیره‌سازی و انتقال داده‌ها: داده‌ها باید به صورت نرم‌افزاری، سخت‌افزاری یا هر دو رمزگذاری شوند.در صورت امکان راه اندازی یک Honeypot که بتواند توانایی‌های تیم تست را مورد ارزیابی قرار دهد توصیه می‌شود. Honeypot یک سرویس دهنده ناامن است که Hackerها را برای کاوش در خود جلب می‌نماید و به کمک آن می‌توان فعالیت آن‌ها را مانیتور و ثبت کرد. از آن معمولاً در مقابله و گیج کردن افراد (Hackerهای) مزاحم استفاده می‌شود!یک سرویس دهنده Honeypot همچنین می‌تواند برای تشخیص توانایی‌های تکنیکی تست کنندگان به کار رود. تست کننده‌ها باید ضعف‌های موجود در آن‌ها را تشخیص داده و به دام نیفتند! بسیاری از سرویس دهنده‌های Honeypot مانند Honey wall Gateway, Bait and Switch, Specter, NetBait و امثال آن‌ها توسط شرکت‌های مختلف عرضه شده‌است. توضیحات بیشتر در این زمینه از حوصله بحث ما خارج است. [۲]تهیه برنامه برای فرایند تست Penetration.Failing to prepare is preparing to fail.John Woodenدر تمام پروژه‌های بزرگ، رسیدن به موفقیت در گرو استفاده از یک برنامه جامع و مدون است. تست Penetration با استفاده اتفاقی از یک سری ابزار مختلف به تأمین امنیت در پروژه منجر جهش نمی‌نماید. در اینجا نیز باید یک برنامه مدون و گام به گام که دقیقاً مشخص نماید چه فعالیت‌هایی قرار است چه وقت و چگونه انجام شوند، وجود داشته باشد.مراحل اصلی در برنامه تست Penetration.همان‌طور که کم و بیش در بخش قبل گفته شد، یک برنامه خوب تست Penetration شامل مراحل زیر است:۱- شناسایی: مرحله‌ای درونی که در آن در مورد محدوده شبکه مورد تست به چمع آوری اطلاعات پرداخته می‌شود.۲- محاسبه و شمارش: فرایندی که در آن از سیستم اطلاعاتی راجع به اشتراکات شبکه‌ای، افراد، گروه‌ها و Appهای خاص، کسب (Grab یا ربوده) می‌شود.۳- به دست آوردن دسترسی: یک نفوذ واقعی به سیستم را گویند.۴- نگهداشت دسترسی: تست‌کننده یک Back-Door جهت امکان حمله‌های مجدد در آینده برای خود فراهم می‌کند.۵- پوشاندن ردپاها: شامل از بین بردن Log فایل‌هایی است که مشخص می‌کنند تست‌کننده به سیستم دسترسی غیرمجاز برقرار کرده‌است.گام‌های اصلی در تدارک برنامه تست.قبل از انجام گام اول تست‌کننده باید گام‌های زیر را بردارد:۱- محدود کردن Scope پروژه.۲- تصمیم‌گیری در مورد اینکه آیا مهندسی اجتماعی قرار است به کار گرفته شود یا خیر.۳- تعیین اینکه Hijack Session و تکنیک‌های مشابه آن مجاز است یا خیر.۴- تعیین اینکه استفاده از Trojan یا نرم‌افزارهایBack-Door مجاز است یا خیر.تعیین محدوده پروژه تست.تست Penetration بیشتر شبیه جستجویی است که یک دزد دریایی برای یافت گنجی مدفون انجام می‌دهد. دزد دریایی با اینکه نمی‌داند گنج دقیقاً کجا دفن شده‌است اما می‌داند آنقدر با ارزش هست که گشتن به دنبال آن را توجیه نماید. دزد دریایی نقشه‌ای پر از علائم و مدارک مختلف دارد که وی را به سمت گنج هدایت می‌کند. همانند آن تست‌کننده Penetration نیز همانند یک Client عادی در تلاش برای نفوذ کردن به درون شبکه‌است.در گام اول تست‌کننده باید محدوده کارش را به گونه‌ای که مانند یک Client به نظر برسد محدود نماید. وی در اینجا باید تعیین نماید که آیا با به سرقت رفتن اطلاعات Account آسیب‌پذیر می‌گردد یا نه. اگر نه، محدوده کار تا چه حد می‌تواند برای حملات مختلف، گسترده‌تر گردد. به صورت ایده‌آل ممکن است حملات در جهت فراهم آوردن یک سناریوی واقع بینانه برای حملات بداندیشانه اجازه داده شوند. بعضی اوقات محدودیت‌هایی در رابطه با استفاده ازDenial of service (Dos) و نفوذ به حریم شخصی افراد سازمان وضع می‌گردد. [۱]مهندسی اجتماعی.مهندسی اجتماعی فرایندی مبتنی بر انسان‌ها است که در فصل بعد به آن پرداخته می‌شود.Hijack Session.Hijack Session فرایند نگه داشتن یک Session TCP بین دو ماشین برای بدست آوردن دسترسی غیرمجاز به سیستم را شامل می‌شود.تست‌کننده به ترافیک شبکه بین کاربر و سرویس دهنده گوش می‌کند. تست‌کننده در اینجا بر روی Session بین آن‌ها سوار شده و برای سرویس دهنده خود را به جای کاربر جا می‌زند! برای این منظور وی باید کاربر اصلی را از شبکه قطع نماید. (معمولاً از طریق ارسال یک TCP Reset Packet این کار صورت می‌گیرد) این تکنیک به دلیل آنکه باعث از هم گسیختگی عملیات روزانه کارکنان می‌گردد معمولاً مجوز انجام برای apply یه فرایند تست را از سوی کمپانی مورد تست دریافت نمی‌دارد.Trojan / Back-Door.فاکتور بعدی تعیین این است که استفاده از Trojanها و سایر نرم‌افزارهای Back-Door مجاز است یا خیر. بسیاری از حملات زیرکانه از Back-Door Appها و Trojanها بهره می‌گیرند. برای به دست آوردن نتیجه بهتر دادن مجوز استفاده از آن‌ها به تست‌کننده توصیه می‌گردد. برخی از وب سایت‌ها (مانند NetCat) به شما اجازه دانلود اینچنین Appهایی را می‌دهند. اما در استفاده از آن‌ها باید نهایت دقت را مبذول داشت. ممکن است در درون آن‌ها ویروس‌هایی تعبیه شده باشد که به سیستم شما آسیب برساند.متدولوژی تست Penetration به صورت Open Source.متدولوژی Manual Open-Source Security Testing Methodology یا OSSTMM برای این منظور توسعه داده شده‌است. حوزه‌های اصلی آن عبارتند از:۱- امنیت اطلاعات۲- امنیت فرایندها۳- امنیت تکنولوژی اینترنت۴- امنیت ارتباطات۵- امنیت بی‌سیم۶- امنیت فیزیکیهرکدام از حوزه‌های مطرح شده در بالا به ماژول‌های خاص کوچکتری شکسته می‌شوند که شرح آن‌ها در سند OSSTMM موجود می‌باشد.مستندسازی و قوانین آن در تست Penetration.تست Penetration باید یه گزارش قابل لمس برای Client یا Executive Officer داشته باشد. این نتایج ثبت شده در گزارش باید از تست برآمده باشند و در آن باید توصیه‌هایی برای امن کردن سیستم‌های پر مخاطره (High-Risk Systems) ارائه نماید.یک گزارش باید شامل بخش‌های زیر باشد:۱- خلاصه‌ای از مراحل اجرا۲- محدوده پروژه۳- تحلیل نتایج۴- خلاصه‌ای از گزارش۵- پیوست‌هادر گزارش تست، استفاده از دیاگرام‌های تصویری و مستند کردن خروجی‌های تست به صورت Logical از اهمیت بالایی برخوردار است. تست‌کننده می‌بایست هرآنچه که در طول انجام یک تست اتفاق می‌افتد را ثبت و در گزارش خود درج نماید. پس از تحویل گزارش تست به کارفرما تست‌کننده در صورت انجام توافق با ایشان می‌تواند از گزارش پروژه برای خود کپی تهیه نماید.در خاتمه این بخش ذکر این نکته خالی از لطف نیست که با در نظر گرفتن سایر مسائل مربوط به انجام تست نفوذ چرخه حیات یک پروژه Penetration را به صورت شکل زیر در می‌آید:بررسی فرایند مهندسی اجتماعی در تست Penetration.فقط دو چیز بی‌انتها هستند: جهان هستی و حماقت انسان ها! و من در مورد گذشتگان اصلاً خاطرجمع نیستم! (آلبرت اینیشتین)در سال ۲۰۰۴ نتایج تحقیقی در مورد کارکنان اداری در لندن را انتشار داد که نشان می‌داد ۷۵ درصد از ایشان گذرواژه دسترسی به شبکه سازمان خود را برای به دست آوردن یک تکه شکلات فاش ساخته بودند!در این تحقیق توضیح داده شده‌است که چقدر ساده می‌توان دسترسی به شبکه را بدون استفاده از هیچ ابزار ویژه‌ای به دست آورد. با وجود استفاده از تکنولوژی‌های مختلف امنیت و رمزگذاری شبکه‌ها کاملاً ایمن نخواهند بود. شما هرگز نمی‌توانید از شر فاکتور انسانی در مقوله امنیت خلاص شوید. یکی از ساده‌ترین راه‌های پیدا کردن دسترسی به شبکه نزدیک شدن به افراد و پرسیدن گذرواژه از ایشان است!تست کننده‌های Penetration اغلب از همین روش برای انجام آن استفاده می‌نمایند. از این رو کمپانی‌ها تست کننده‌ها را به کار می‌گیرند تا با استفاده از تکنیک‌های مهندسی اجتماعی میزان پایبندی کارکنان شان را به قوانین، مقررات و سیاست‌های داخلی سازمان بسنجند.مفهوم مهندسی اجتماعی.مهندسی اجتماعی هنر متقاعد ساختن و جلب اعتماد افراد است. مهندسین اجتماع کسانی هستند که با استفاده از نیرنگ، جلب اعتماد یا تأثیرگذاری بر روی افراد، اطلاعاتی کسب می‌کنند که از روش‌های دیگر نمی‌توان به آن‌ها دست یافت.انواع روش‌های مهندسی اجتماعی.انواع روش‌های مهندسی اجتماعی عبارتند از:۱- روش‌های مبتنی بر تکنولوژی۲- روش‌های مبتنی بر مشخصه‌های انسانیدر روش‌های مبتنی بر تکنولوژی از جنبه‌های تکنولوژیک برای فریب دادن افراد جهت گرفتن اطلاعات حساس از ایشان استفاده می‌شود. یک مثال کلاسیک از حمله مبتنی بر تکنولوژی استفاده از یکPop-Up Window است که در کامپیوتر فرد قرار گرفته و بر اساس یک برنامه زمان‌بندی بر روی صفحه کامپیوتر وی ظاهر شده و شناسه کاربری و گذرواژه را از وی می‌پرسد. [۱]پس از آن که کاربر مشخصات خود را وارد کند و دکمه Submit را بزند اطلاعات کاربری اش برای کامپیوتر Hacker کلاه سیاه ارسال می‌شود و از آن پس وی می‌تواند بدون هیچ مشکلی به منابع مورد نظرش دست یابد.در نقطه مقابل در روش‌های مبتنی بر پارامترهای انسانی، از جنبه‌های تکنولوژیک استفاده نمی‌شود. این تکنیک‌ها از طریق افراد یا تماس‌های تلفنی پی گرفته می‌شوند. در هر دو روش به پیش‌بینی رفتارهای انسانی تکیه می‌شود تا آنچه مورد نیاز حمله کننده‌است از فرد استخراج گردد.روان‌شناسی انسانی.در مهندسی اجتماعی به جای استفاده از نرم‌افزار و سخت‌افزار از Wetware استفاده می‌شود. Wetware عنصری از نهاد انسانی است که قابل حساب کردن و تخمین زدن است. افراد به‌طور طبیعی به دیگران اعتماد می‌کنند و مهندسان اجتماع از این واقعیت در جهت منافع مورد نظرشان بهره می‌گیرند.[۱]همان‌طور که پیشتر گفته شد، مهندسی اجتماعی هنر متقاعد ساختن و جلب اعتماد افراد است. روانشناسی اجتماعی ۷ نوع متقاعد شدن را تعریف می‌کند:۱- هم نوایی۲- منطقی و استدلالی۳- مبتنی بر نیاز۴- جذبه و قدرت۵- عمل متقابل۶- مبتنی برهم سانی و همانندی۷- مبتنی بر اطلاعاتاستفاده از مهندسی اجتماعی در فرایند تست Penetration.در این قسمت با توجه به پارامترهایی که در بخش قبل به عنوان درگاه‌های نفوذ به اطلاعات ارزشمند افراد بیان شد چگونگی استفاده از مهندسی اجتماعی در بحث فاکتورهای انسانی تست Penetration بیان می‌شود.جلب اعتماد از طریق هم نوایی.این روش جلب اعتماد بر روابط دوستانه و نزدیک مبتنی است. با درک دایرة باورها و اعتقادات فرد مورد حمله تنها کافی است همانند او رفتار کرد تا اعتماد وی را جلب نمود.جلب اعتماد به صورت منطقی و استدلالی.در این روش، مهندسی اجتماع مبتنی بر استدلالات منطقی است. بهترین کار در اینجا قرار دادن دو یا چند گزاره درست (معمولاً به صورت توضیح) در مقابل فرد مورد حمله، با هدف رسیدن به نتیجه مطلوب می‌باشد.جلب اعتماد مبتنی بر نیاز افراد.در این متد تمرکز اصلی بر روی این ویژگی افراد است که در آن هر فرد تمایل دارد با توجه به توانایی‌هایی که دارد به رفع نیاز شخص دیگری کمک نماید. تست‌کننده در این Case با فرد مورد حمله یک نیاز(باید متناسب با توانایی وی باشد) را مطرح می‌نماید و به این ترتیب موضوع را به سمت هدف مورد نظرش چرخش می‌دهد!اگر در طرح نیاز جعلی به خصوصیات حمله شونده توجه نگردد ممکن است با تردید وی کار خراب شود. در این صورت تست‌کننده باید کمی احساسات را در طرح خواسته دخیل کند یا آن را با زیرکی تغییر دهد. اکثر افراد (به خصوص آقایان به هنگام مواجهه با فرد تست کننده‌ای که از جنس مخالف است!) در رابطه‌ای که درگیر احساسات انسانی باشد، استعداد بیشتری برای زیر پا گذاشتن خطوط قرمز سیاست‌های کاری به منظور کمک به فرد مقابل از خود نشان می‌دهند.جلب اعتماد به کمک اقتدار و کاریزما.جلب اعتماد بر اساس جذبه و اقتدار یکی از مرسوم‌ترین روش‌ها است. تست‌کننده در اینجا خود را به جای فرد دارای جذبه جا می‌زند. تبلیغات تلویزیونی از روش بسیار بهره می‌گیرد. مثلاً ورزشکار مشهوری که برای تبلیغ دئودورانت در صفحه تلویزیون ظاهر می‌گردد. مسلماً چنین فردی خیلی آشنایی ویژه‌ای با محصول مورد تبلیغ ندارد و سریعاً باید دست تهیه‌کننده رو شود؛ ولی اغلب مردم بدون توجه به این نمایش ساختگی تبلیغ مزبور را به تماشا می‌نشینند! در مهندسی اجتماعی تاکتیک مشابهی می‌تواند برای رفتار کردن جعلی در هیئت یک فرد عالی رتبه توسط تست‌کننده به کار گرفته شود.جلب اعتماد از طریق عمل متقابل یا وعده آن.تکنیک‌های عمل متقابل شامل خواستن چیز (های) مورد نظر از فرد در ازای انجام کاری مطابق خواسته (های) وی در آینده‌است. این بیشتر شبیه کار فروشندگان خودرو است که با خریدار با نگه داشتن پول آن‌ها با ایشان برای خرید یک ماشین مساعدت و همراهی می‌کنند. خریدار تصور می‌کند که آن‌ها قصد همکاری و کمک به وی را دارند در حالی در واقع اینطور نیستجلب اعتماد مبتنی برهم سانی و همانندی.هم‌سانی تکنیک دیگری است که اغلب در فروش به کار می‌رود. این متد با ارائه درخواست به فرد مورد هدف برای تست کردن (و یا سرگرم شدن با) چیزی سر و کار دارد و هدف آن ایجاد یک واکنش مثبت و سازگار در وی نسبت به آن چیز است. برای مثال در بسیاری از کمپانی بخش جدایی از ساختمان اصلی برای کارکنان سیگاری در نظر گرفته می‌شود. هنگامی که یک فرد محل کارش را به فصد کشیدن سیگار ترک می‌کند بهترین موقعیت برای تست‌کننده Penetration فراهم می‌شود تا با مراجعه به وی و شروع یک بحث هم‌سان نشان دهنده اطلاعات مورد نیازش را تکمیل نماید.جلب اعتماد با روش‌های مبتنی بر اطلاعات.آخرین تکنیک مهندسی اجتماعی استفاده از درخواست‌های مبتنی بر اطلاعات است. تست‌کننده در اینجا اطلاعات کافی و جامعی در مورد هدف مورد نظرش ارائه می‌دهد. فرد مورد حمله در برابر انبوهی از اطلاعات (بعضاً بسیار تخصصی) مرعوب شده و همکاری لازم را در جهت اطلاعات مورد نظر حمله‌کننده از خود نشان می‌دهد.شرایط لازم برای فرد مهندس اجتماعی.غیر از تعهدات اخلاقی (مشابه آنچه در مورد هکرهای کلاه سفید بحث شد) آشنایی با مباحث اولیه حوزه امنیت اطلاعات یک مهندس اجتماع که قرار است در ترکیب تیم تست‌کننده قرار بگیرد باید شرایط دیگری را دارا باشد. در زیر به چند مورد از این شرایط اشاره شده‌است:۱- صبر و بردباری۲- صمیمت۳- اعتمادپذیری۴- داشتن دانش در رابطه با حوزه عمل در فرایند تستدر رهگذر چنین ویژگی‌های رفتاری است که یک مهندس اجتماع می‌تواند با جعل هویت افراد مختلف و مرتبط با سازمان در فرایند تست نفوذ غیر مخرب عوامل انسانی کمپانی درخواست‌کننده تست را محک خوبی بزند.انواع جعل هویت در فرایند مهندسی اجتماعی.در اینجا دسته‌بندی مشخصی وجود ندارد. برخی از مرسوم‌ترین تاکتیک‌های نقش بازی کردن توسط مهندسی اجتماعی به اختصار عبارتند از:۱- جعل هویت پشتیبانی فنی۲- جعل هویت سرویس دهنده شخص ثالث۳- جعل پست الکترونیک۴- جعل هویت کاربر نهایی۵- جعل هویت مشتریمهندسی اجتماعی معکوس.فرایند معکوس مهندسی اجتماعی (RSE) کمی از مثال‌های قبلی پیچیده‌تر است؛ اما با این وجود کارآمد می‌باشد. سه گام اصلی در آن عبارتند از:۱- خرابکاری عمدی۲- آگهی و اعلان۳- پشتیبانیدر مهندسی معکوس اجتماعی نقش‌ها عوض می‌شود. مثلاً برای حمله به یک فرد با تماس تلفنی شرایط به گونه‌ای فراهم می‌گردد که طعمه خود به سمت حمله‌کننده بیاید.[۱]برای درک بهتر از مراحل اصلی در فرایند معکوس مهندسی اجتماعی به مثال زیر توجه فرمائید:مثال: حمله‌کننده ممکن است با یک حمله Dos، یک خرابکاری عمدی در شبکه هدف انجام دهد. سپس خود را به عنوان ارائه‌کننده خدمات امنیت شبکه معرفی کرده و پس از آنکه کمپانی مذکور برای رفع عیب به وی مراجعه کرد؛ با رفع آن خرابکاری یک Back-Door برای مراجعات بعدی در شبکه مفلوک تعبیه می‌نماید!انجام این فرایند در تست Penetration کمی مشکل است چون بدون داشتن مجوز از مدیریت پروژه تست، بیشتر اوقات افسر IT سازمان مانع از فعالیت تست‌کننده خواهد شد.مقابله با مهندسی اجتماعی.مهندسی اجتماعی فرایند تخریب‌کننده بسیار هولناکی است. به خصوص آنکه بر خلاف سایر روش‌های نفوذ در اینجا عوامل داخلی سازمان همگی در آسیب‌های ناشی از موفقیت آن سهیم هستند؛ و ممکن است پای مخاطرات امنیتی دیگر مانند درگیری کارکنان، اخراج ایشان و غیره به جریان باز شود. [۱]انواع سازمان‌های مستعد برای حمله مهندسی اجتماعی.یک دسته‌بندی در رابطه با کمپانی‌هایی که هدف حمله مهندسی اجتماعی قرار می‌گیرند عبارت است از:۱- کمپانی‌های بزرگ: شرکت‌های کوچک، کارمندان خویش را می‌شناسند و اگر کسی برای تجسس در مورد اطلاعات سازمان از خارج به آن نفوذ کند سریعاً آگاه می‌شوند. در حالی که در کمپانی‌های بزرگ اینچنین نیست.۲- کمپانی‌هایی با کارکنان از راه دور: ارتباط گیرندگان از راه دور و کارمندانی که دائماً در حال جابجا شدن هستند بسیار برای فریب دادن مناسب هستند. زیرا بیشتر اوقات مشخصات فرد مهاجم را تشخیص نمی‌دهند.۳- کمپانی‌هایی که لیست کاملی از اطلاعات تماس و ایمیل در بانک‌های اطلاعاتی و وب سایت هایشان دارند: این اطلاعات برای مهندسی اجتماعی حکم طلا را دارد زیرا کسب آن‌ها گام اول در پرسه زدن برای یافتن هدف مورد نظر می‌باشد.۴- کمپانی‌هایی که از آژانس‌های موقت برای پذیرایی از مشتریان و میهمانان تجاری استفاده می‌کنند: مثل سازمان‌هایی که برای اربابان رجوع از اتاق‌های انتظار بهره می‌گیرند. به دلیل حجم بالای رفت‌وآمد افراد به این مناطق کارمندان این حوزه‌ها نمی‌توانند خصوصیات یک فرد حمله‌کننده را تشخیص دهند.۵- کمپانی‌هایی که دارای Call Center هستند: برای مثال مراکز ارائه دهنده خدمات پس از فروش، جزو نخستین کاندیداها برای کشف اطلاعات مربوط به مشتریان می‌باشند.راهبردهای اصلی در مقابله با مهندسی اجتماعی.اولین و ساده‌ترین راه حل مقابله با مهندسی اجتماعی جلوگیری از مستعد شدن شرایط محیط کار می‌باشد. اما با توجه به پیچیدگی‌هایی که Business Modelهای مختلف همیشه اجتناب از موارد یاد شده برای مدیران سازمان امکان‌پذیر نیست.بهترین دفاع در برابر حملات مهندسی اجتماعی آموزش کارکنان سازمان است. همچنین باید آموزش‌های اختصاصی به ویزیتورها، میهانداران (Receptionist), Help-Deskها، کارمندان واحد فروش و ارتباط با مشتریان و امثال آن‌ها ارائه گردد.همچنین سازمان باید برای حفاظت از اطلاعات دارای اهمیت و ارزش خود سیاست‌های مناسبی را تدوین نماید.نتیجه‌گیری.در پایان جمع‌بندی مباحث طرح شده در بخش‌های قبل خالی از لطف نیست. اگر ما به عنوان طراح شبکه یا مدیر IT سازمان تمهیدات گوناگونی را برای امن کردن شبکه سازمان اندیشیده‌ایم؛ (مثلاً استفاده از فایروال یا IDS، تعریف DMZ برای تعیین سطوح دسترسی کاربران به اطلاعات و…) ناشیانه‌است اگر سریعاً ادعا کنیم شبکه‌مان امن است. در یک پروژه تست Penetration هدف اصلی آن است که شبکه سازمانی دقیقاً مورد مطالعه و آزمایش قرار گیرد تا کم‌وکاستی‌های موجود در آن به کمترین مقدار ممکن برسد. روش‌های مختلفی برای نفوذ به یک شبکه کامپیوتری وجود دارد. اما دو حوزه اصلی تکنیکال و انسانی در این پژوهش مورد توجه نگارنده قرار داشته‌اند. ملاحظات چگونگی انتخاب تیم تست‌کننده نفوذ غیر مخرب و همکاری سازمان با ایشان از دیگر مواردی است که باید به آن‌ها توجه داشت.منابع.۱) Penetration Testing and Network Defense, Andrew Whitaker, Daniel P. Newman, Cisco Press, ۰۴ نوامبر ۲۰۰۵۲) Hack I.T. , Web-Based Project, T. J. Klevinsky, Scott Laliberte, Ajay Gupta, Addison Wesley, February 01, 2002