Как да измамиш хакер

Как да измамиш хакер

Много често сайтовете се хакват поради грешки не в уеб страниците или програмите, които ги поддържат, а в сървърния софтуер. Със завидна редовност има съобщения за тези, които се намират в Internet Information Server, Apache и др. дупки, които позволяват на хакерите да проникнат в сървър, да модифицират страници в него и дори да стартират свои собствени изпълними файлове. В тази връзка администраторите са принудени непрекъснато да следят пускането на „кръпки“ към сървърния софтуер и да го актуализират. Тази практика обаче не гарантира успешна защита, тъй като кръпките се освобождават след откриване на грешки и хакерите могат да успеят да проникнат в сървъра по-рано.

Един от методите, който ще помогне да се защити сървърът от хакване и в същото време не изисква активната работа на администратора, е маскирането на сървърния софтуер, т.е. конфигуриране на сървъра и хостваните на него програми, така че нападателят да не може да определи какъв софтуер се използва като сървърен софтуер. Разбира се, този метод не премахва необходимостта от инсталиране на "кръпки", но значително намалява риска от успешен хак с помощта на "дупки".

Кога да маскирате сървъра?

Необходимо е да се маскира сървърът в няколко случая. Първо, ако използвате такъв често срещан сървърен софтуер като IIS или Apache, защото хакерите обикновено намират дупки в популярни продукти. На второ място, стартираните на сайта скриптове значително увеличават риска от хакване. Трето, посоката на сайта, разположен на сървъра, може да задължи да се прикрие. Например, ако сайтът предоставя безплатни услуги за електронна поща и/или има голяма аудитория, тогава вероятността за хакване на съответния сървър е значително по-голяма, отколкото в случай на хостинг на сайт на малка компания, който се посещава от малкото му клиенти и партньори. От само себе си се разбира, че колкото по-високо е нивото на защита на вашия сървър, толкова по-добре, така че маскирането няма да навреди във всички останали случаи.

Принципи на маскиране на сървъри

За да разберете принципите на маскиране на сървъра, трябва да знаете какви методи се използват за идентифициране на софтуера, инсталиран на сървъра. Всеки от тях изисква различно ниво на умения от нападателя и може да се използва отделно или в комбинация с други методи.

Първият и най-прост метод е да се идентифицира сървърният софтуер по разширенията на скриптовете, на които работи. Например разширението ASP съответства на IIS, PHP на Apache, JSP на Tomcat и т.н. Естествено, този метод за определяне на типа сървър не е много точен, но не изисква никакви специални познания от хакера.

Малко по-сложен начин е да извикате грешка или скрипт на сървъра и след това да анализирате съобщението за това. От това съобщение много често можете да определите типа не само на сървъра и компилатора на скриптове, но и на използваната база данни. В този случай от хакера се изисква да може да причини грешка на сървъра и някои допълнителни знания. Например, понякога името на сървъра е посочено директно на страницата за грешка, а понякога може да бъде разбрано само от неговия изходен код. Този метод също не дава 100% гаранция за определяне на типа сървър, особено ако администраторът използва собствената си страница със съобщение за грешка.

И накрая, най-трудният и в същото време най-ефективният начин за определяне на вида на сървърния софтуер е чрез HTTP заглавката. Когато прехвърля някакви данни, сървърът замества името и версията си в HTTP заглавката. Като го разгледате, можете да определите типа на използвания сървър. Естествено, този метод изисква от хакера да притежава знания и умения за работа със специални програми.

В съответствие с методите за откриване на сървърния софтуер се използват три техники за неговото маскиране: промяна на разширенията на изпълними файлове, промяна или предотвратяване на издаването на съобщения за грешки на сървъра и промяна на HTTP заглавките, издадени от сървъра. Нека разгледаме всяка от тези техники по-подробно.

Разширения на изпълними файлове

Сървърният софтуер използва файлови разширения, за да го свърже с определен интерпретатор. Например, ако потребител поиска файл с разширение ASP, тогава сървърът, преди да го „даде“ на потребителя, трябва да го „предаде“ през интерпретатора на IIS API (модули IISAPI.DLL, ASP.DLL). Ако потребителят поиска файл с разширение TXT или HTM, които не са свързани с интерпретатора, те му се предават директно.

Връзката на разширението с интерпретатора (или премахването на такава връзка) се установява по време на конфигурирането на сървъра. За да маскирате разширението на скриптове, които се изпълняват на сървъра, просто трябва да посочите разширението, което ще имат вашите скриптове (например PHP вместо ASP) и след това да го свържете с необходимия интерпретатор в настройките на сървъра. Нека разгледаме на практика маскирането на разширения на скриптове, като използваме примера на Microsoft Internet Information Server 2000.

хакер
Нека стартираме административната конзола на сайта и да създадем тестова папка с име PHP в нея. След това отидете на свойствата на папката в раздела Виртуална директория. Той има полето Разрешения за изпълнение, в което трябва да изберете елемента Скриптове и изпълними файлове от списъка. Това ще ви позволи да стартирате скриптове в новата папка.

За да конфигурирате разширенията на скриптове, щракнете върху бутона Конфигурация до полето за избор на разрешения за изпълнение. Кликването отваря прозореца за конфигуриране на приложението, в който се нуждаем от първия раздел: App Mappings. Ето табела, която установява връзката между файловите разширения и приложенията за интерпретатори. Ако в тази таблица не е посочено някакво разширение, това означава, че файлове от този тип се "дават" от сървъра директно на потребителя.

измамиш
Сега можете да затворите прозореца за конфигуриране на приложението и да се върнете към прозореца на свойствата на виртуалната директория. Разделът Документи на този прозорец задава документите по подразбиране. Обикновено там са изброени стойностите по подразбиране.asp, default.htm и index.htm. Можете да премахнете тези записи и вместо това да добавите default.php. Естествено, опцията Enable Default Document трябва да бъде активирана.

хакер
Това завършва настройката на сървъра и можете да отидете в директорията, където трябва да се намират файловете на виртуалната директория на PHP. Тук създаваме DEFAULT.PHP файл с тестов код в Visual Basic:

Факт е, че повечето сървъри използват стандартните страници, които се доставят с дистрибутора, за да показват съобщения за грешки. Естествено, специалистите знаят външния вид на тези страници и дори името на сървъра да не е посочено на тях, те винаги ще могат да го определят. За щастие обикновено можете да персонализирате сървъра, като свържете грешката с всеки файл, хостван на сайта. В този случай, когато възникне грешка, сървърът ще покаже не стандартни страници, а тези, посочени в настройките.

Замяната на стандартните страници за грешки със ваша собствена е полезна не само от гледна точка на маскиране на сървърния софтуер. Можете да използвате скрипт, който ще информира потребителя за възникналата грешка и ще изпрати подходящо писмо до администратора на сайта. Нека да разгледаме конфигурирането на съобщения за грешки на сървъра, използвайки Microsoft IIS като пример.

Маскиране на съобщения за грешки на сървъра Използване на Microsoft IIS като пример Първо трябва да създадете страница, която да се показва в случай на грешка. Например, нека конфигурираме сървъра да показва същата страница, независимо от грешката. Нека наречем тази страница error.php и я поставим в папката PHP. Страницата ще съдържа следния код:

сървърния софтуер
Когато настройвате съобщения за грешки, трябва да обърнете специално внимание на вътрешната грешка на сървъра с код 500. Това се случва при всяка грешка в скрипта на сайта и трябва да бъде свързана към маскираща страница. В същото време за тази грешка си струва да се създаде отделна страница (може би малко по-сложна), която да изпраща информация за грешката на собственика на сайта.

сървърния софтуер
След като установим връзката между страницата и грешките, нека се опитаме да тестваме как работи. За да направите това, обърнете се към несъществуваща страница в браузъра, например http: //localhost/default1.php. Вместо стандартната страница за грешка, ще видим нашата „специална“ страница, от която е невъзможно да се определи вида на използвания сървър.

Заедно с всеки документ, който клиентът зарежда, сървърът изпраща HTTP заглавка, съдържаща променлива с информация за вида на сървърния софтуер. Значението му се определя директно в кода на сървърната програма, така че е много трудно да се маскира. От друга страна, това трябва да се направи, защото в противен случай видът на софтуера на сайта винаги може да бъде надеждно определен.

Най-лесното в този случай е за администраторите на сървъри с отворен код. За да маскирате Apache, например, е достатъчно да промените няколко реда във файловете src/os/unix/os.h и src/include/httpd.h. За да маскирате едни и същи сървъри със затворен код (или ако администраторът няма желание да програмира), можете да използвате външни средства.

Например правилно конфигуриран кеш на уеб прокси, например Novell BorderManager FastCache, Inktomi Traffic Server или сървър, работещ на клонинг на Squid, може да служи като доста надеждна защита. В този случай клиентът се свързва с прокси сървъра, а не с уеб сървъра и съответно информацията за софтуера, инсталиран на прокси сървъра, а не на уеб сървъра, се предава в HTTP заглавката.

Друга опция за защита е да инсталирате TCP-базирана защитна стена като TIS Gauntlet, BorderWare, Raptor, CyberGuard или IBM SecureWay. В този случай заглавката HTTP също няма да съдържа информация за уеб сървъра.

Маскирането на сървъра е един от най-ефективните начини да се предпазите. Всеки от споменатите методи може да се използва поотделно, но най-доброто решение би било да се използват заедно.

За да проверите как работи вашата маскировка, можете да отидете на www.netcraft.com и да се опитате да определите типа на сървърния софтуер и операционната система, инсталирана на вашия сървър.

Освен това, когато се маскира, си струва да се вземат предвид характеристиките на определен продукт. Например Microsoft IIS може да бъде „разпознат“ по характерните параметри на сесията на „бисквитките“, така че за по-добро маскиране на IIS трябва да деактивирате използването на сесии. Също така си струва да се помни, че страниците с имената по подразбиране са типични за IIS и индекс за UNIX сървъри. Следователно използването на страницата default.php може да направи хакера подозрителен.

Както и да е, използването на методи за маскиране не освобождава администратора на сървъра от отговорността да наблюдава появата на "кръпки" и нови версии на софтуера.