24
по БЕЗОПАСHОСТ И ЗАЩИТА HА Microsoft МРЕЖИ И ПРИЛОЖЕHИЯ На тема: БЕЗОПАСНОСТ И ЗАЩИТА НА WEB ПРИЛОЖЕНИЯ Варна 2014г. Изготвил: Димитър Николов, VI курс Проверил: доц. д-р Стефан Дражев Специалност: ПИНФ – ДОВО, 9гр. ас. Радка Начева Фак. № 400295

Безопасност и защита на Web приложения

Embed Size (px)

Citation preview

Page 1: Безопасност и защита на Web приложения

по

БЕЗОПАСHОСТ И ЗАЩИТА HА Microsoft МРЕЖИ И

ПРИЛОЖЕHИЯ

На тема:

БЕЗОПАСНОСТ И ЗАЩИТА НА WEB ПРИЛОЖЕНИЯ

Варна 2014г.

Изготвил: Димитър Николов, VI курс Проверил: доц. д-р Стефан Дражев

Специалност: ПИНФ – ДОВО, 9гр. ас. Радка Начева

Фак. № 400295

Page 2: Безопасност и защита на Web приложения

Съдържание

Увод ...................................................................................................................................................4

Видове атаки .....................................................................................................................................4

Phishing ..........................................................................................................................................4

Социално инженерство .................................................................................................................4

Вируси............................................................................................................................................5

DoS Атаки (Denial of Service attacks) ..............................................................................................5

Flood (или Flood Feed / Наводнения ) . .........................................................................................5

Sniffing ...........................................................................................................................................7

IP Hijack ..........................................................................................................................................7

IP Spoofing ......................................................................................................................................8

Brute Force .....................................................................................................................................8

Back Orifice (Net Bus, Masters of Paradise и др.). ...........................................................................8

Dummy DNS Server. ........................................................................................................................8

Dummy ARP Server. ........................................................................................................................9

Fuzzy. ..............................................................................................................................................9

Hack. ...............................................................................................................................................9

Host Spoofing .................................................................................................................................9

Puke................................................................................................................................................9

Port Scan. .......................................................................................................................................9

Syslog Spoofing. ............................................................................................................................ 10

Spam............................................................................................................................................. 10

Traffic Analysis (Sniffing). .............................................................................................................. 10

Trojan Horse. ................................................................................................................................ 10

Worms .......................................................................................................................................... 11

File Worms.................................................................................................................................... 11

Botnet........................................................................................................................................... 11

Unreachable (dest_unreach, ICMP type 3). ................................................................................... 12

UDP Storm. ................................................................................................................................... 12

Page 3: Безопасност и защита на Web приложения

HRS (HTTP Resource Splitting ) ...................................................................................................... 12

Web Cache Poisoning .................................................................................................................... 12

Browser Cache Poisoning .............................................................................................................. 12

Malware ....................................................................................................................................... 13

Keyloggers и Screenloggers ........................................................................................................... 13

Pharming ...................................................................................................................................... 13

Man-in-the-Middle........................................................................................................................ 13

Man-in-the-Browser...................................................................................................................... 13

Spyware ........................................................................................................................................ 14

Buffer Overflow ............................................................................................................................ 14

Heap Overflow .............................................................................................................................. 14

Stack Overflow .............................................................................................................................. 14

Integer Overflow ........................................................................................................................... 14

Cross Site Scripting (XSS) ............................................................................................................... 15

Мalicious file execution ................................................................................................................ 15

Session Hijacking ........................................................................................................................... 16

SQL Injection ................................................................................................................................. 16

Cross-site request forgery (CSRF) .................................................................................................. 16

Hidden Fields Manipulation .......................................................................................................... 16

Мерки за защита на уеб приложението ......................................................................................... 16

Защита на сървъра и мрежата .................................................................................................... 17

Администрация на сайта ............................................................................................................. 18

Защита на кода на сайта ............................................................................................................. 21

Заключение ..................................................................................................................................... 23

Ползвана литература ...................................................................................................................... 24

Page 4: Безопасност и защита на Web приложения

Увод Уеб приложенията са страхотни. Те са на разположение за ползване почти

навсякъде, по всяко време, практически на всяко устройство, което има уеб

браузър. Разработчикът качва приложението на Web сървъра и всички, които го

използват, имат достъп до последната версия.

Трябва обаче да сте наясно с рисковете, на които уеб приложенията могат да

бъдат изложени и как да се предпазите от тях. От момента, в който вашето уеб

приложение е качено в Интернет, дори неволно то става мишена. Колкото по-

голям и известен сайт притежавате, толкова повече хора с нечисти намерения

ще се опитат да придобият ресурсите, с които сайтът ви работи. Атаки се

реализират, както срещу устройството на потребителя (компютър, лаптоп,

таблет, мобилен телефон и др.), така и срещу мрежата и сървърите, на които е

хоствано приложението.

Видове атаки Ще се опитам да направя формален анализ и класификация на някои от най-

разпространените атаки, и нещата, които можете да направите, за да запазите

сигурността на вашия сайт.

Phishing

Това е широко използван похват от компютърните престъпници за получаване

на важна информация, чрез съобщение или интернет сайт, които

"претендират", че са добронамерени, като ви приканват да въведете важна

лична информация.

При фишинга измамници разпращат електронна поща, която претендира, че

идва от почтена компания, и се опитва да убеди получателя да даде важна

лична или финансова информация. Електронното съобщение обикновено моли

да я изпратите в отговор или да я въведете на уебсайт, към който има връзка.

Тези данни, например потребителски имена, пароли и номера на кредитни

карти, после се използват от измамниците, за да се получат пари или услуги от

името на пострадалия.

Социално инженерство

Използва главно психологически методи, а именно естествената за човека

склонност да се доверява. (Дори за умели хакери много често е по-лесно да

пробият сигурността и да получат желаната информация, като просто вдигнат

телефона и попитат Иванка от счетоводството за паролата й, вместо да

използват техническите си умения.)

Page 5: Безопасност и защита на Web приложения

Вируси

Компютърните вируси представляват фрагмент от програмен код, който копира

себе си в някаква програма, като я модифицира, т.е. той е

саморазпространяващ се код. Вирусът не е самостоятелна програма. Той се

задейства, когато започва да се изпълнява така наречената програма-

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

други програми, с които взаимодейства дадената програма-приемник или до

които вирусът може да осъществи достъп. Вирусът може да съществува в така

нареченото латентно състояние, докато не се случи някакво специално събитие

или не възникнат необходимите условия, той да се разпространи или да

задейства специална разрушителна процедура, с която да повреди системата

приемник или напълно да я блокира.

DoS Атаки (Denial of Service attacks)

Клас атаки, водещи до отказ в обслужването. По време на такива атаки рязко

се повишава разходът на ресурси на процесора и намалява пропускателната

възможност на канала за свързване, което може да доведе до силно забавяне

на работата на цялата компютърна система, на отделни задачи или изобщо към

пълно спиране. Към DоS атаки се отнасят: Floods, ICMP Flooding, Identification

Flooding и др. Някои най-често използвани форми на DoS атаки са:

Flood (или Flood Feed / Наводнения ) .

- SYN Flood – изпращане на голям брой компютърни пакети тип SYN. Както е

известно, компютърът трябва да отговаря на такъв тип пакети SYN / ACK. Ако

те са твърде много, компютърът не разполага с време, за да отговори на всеки

и не може да получава пакети от други компютри;

- ICMP Flood и Ping Flood – наводнение с ICMP пакети;

- Identification Flood (Ident Flood). Подобно на ICMP Flood, но отговор на заявка

тип identd до порт 113 системата отнема повече време, което прави атаката по-

ефективна.

- DNS Flood - атаката е насочена към DNS сървъра. Състои се в изпращане на

голям брой DNS заявки, на които сървърът не разполага с време, за да

отговори. В резултат на което, остава временно недостъпен.

- DDoS – чрез заразяване на множество системи се осъществява разпределена

атака за отказ на услуга (DDoS) към даден сървър.

- Boink (Bonk, Teardrop) - състои се в изпращане на голям брой силно

фрагментирани пакети, като фрагментите са с голям размер. За всеки

фрагментиран пакет се заделя специален буфер, в който по-късно да се

поставят другите фрагменти, за да могат да бъдат сглобени. Огромния брой

големи фрагменти води до препълване на буфера и може да доведе до

внезапно аварийно спиране на сървъра или „Зависване“ .

Page 6: Безопасност и защита на Web приложения

- Pong – същото, като всеки от гореизброените видове, като единствената

разлика е, че адресът на подателя е подменен, което дава на атакуващия

известна анонимност;

- Smurf - смърф атаката е вид ICMP наводнение, което влияе на целия

доставчик на услуга или на целия мрежов сегмент. ICMP съобщенията се

изпращат от броудкаст адрес, което принуждава всички компютри от тази

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

забавени и всички потребители в крайна сметка губят връзката. След като

получи достъп до мрежата, атакуващият изпраща броудкаст в мрежата,

използвайки като източник адрес в мрежата-цел. След това всички устройства в

увредената мрежа изпращат ICMP отговори до адреса-цел. Може да имате

стотици хостове, всеки от които изпраща хиляди битове ICMP ехо заявки в

мрежата-цел. Трафикът, генериран от този процес, може лесно да задръсти

връзките с ниска пропускателна способност, използвани във WAN връзките

между някои ISP и мрежи. Мрежата-цел се срива, а често пъти засегнатата

мрежа-посредник също страда от целия този трафик.

- Ping of Death - атака, която се възползва от ограниченията, налагани от

максималната единица за предаване (maximum transmission unit – MTU) на

мрежата. MTU единицата зависи от преносната среда и архитектурата на

мрежата. Ако бъде изпратен пакет, който надхвърля MTU, той трябва да бъде

разделен на по-малки парчета и след това да бъде сглобен отново в края

(местоназначението). IP пакетът, в който е капсулирана заявката за ICMP ехо, е

ограничен до 65535 октета (октетът представлява осем бита данни).

Компетентният хакер може да изпрати пакет, надхвърлящ броя на октетите,

които са разрешени в полето за данни на заявката за ехо. Когато компютърът-

местоназначение се опита да сглоби този пакет, той се срива.

- UDP Flood DNS - хакерите използват два варианта на тази атака на сървъра.

Първият се отнася до специфични имена в подмрежата. В този случай

атакуващият изпраща набор от заявки за домейна на жертвата към множество

DNS сървъри, което генерира сравнително висока активност и по този начин

може да се отрази на работата на атакувания сървър.

Същността на втория вариант на атаката - изпращане до жертвата на много

заявки за IP адреса на несъществуващ домейн. В този случай, отговорът на

DNS сървъра е много по-голям от обема на заявките, изпратени от един хакер,

което може да доведе до претоварване на канала за комуникация .

- HTTP Flood - Този вид атака е често срещано явление и се основава на

изпращане на максималния брой заявки за показване на документи, хоствани

на сървъра. В резултат на тази атака може да бъде спряно предоставянето на

услуги, свързани с HTTP клиенти и затруднен достъп до сайта.

Page 7: Безопасност и защита на Web приложения

Има два начина за осъществяване на такава атака. Първият е базиран на DDoS

/ Botnet, мрежа, а вторият - чрез прокси сървъри. Първият метод е по-

надежден и прост. Компютри, свързани в мрежа, изпращат искания за

конкретни документи, качени на HTTP сървър. При достатъчно мащабна атака

това може дори да доведе до пълно спиране на услугите. Вторият метод се

използва по-скоро като допълнение към друга атака. Тя се основава на

използването на множество от обществени прокси сървъри. Атаката се

осъществява в три стъпки. Първо, хакерът изпраща заявка към сървъра, за да

се покаже w3cache на сървъра за определена страница. Сървърите се

свързват, за да изтеглят необходимите документи и хакерът прекъсва връзките

си с тях. Този процес се повтаря до постигане на DoS.

- Land – изпраща се пакет до определен порт, като адресът на подателя е

подменен да сочи към този на атакувания сървър, а портът, от който е изпратен

пакетът е същия като порта на адресата. (Пример : Получател : 192.168.0.101,

порт 9006, Подател: 192.168.0.101 порт 9006). Атакуваният сървър се опитва да

установи връзка сам със себе си, което води до блокиране на системата.

Такава атака може да бъде до 100% ефективна и срещу някои рутери.

- Mail Bombing. Ако атакуваната машина има сървър за електронна поща, се

изпраща огромно количество електронна поща. От една страна, атаката

прилича на наводняване, но от друга страна, ако съобщенията съдържат

прикачени файлове с голям размер, последните трябва да бъдат сканирани от

антивирусната програма на сървъра. Тъй като тези съобщения се съхраняват

на твърдия диск на сървъра, те го запълват, което може да доведе до DoS.

Днес този тип атаки е по-скоро история, но в някои случаи все още могат да

бъдат използвани.

Sniffing

Снифинг се използва за събиране на системна информация. За целта

мрежовият адаптер се поставя в режим на прослушване на трафика, т.е.

мрежовият адаптер ще прихваща всички пакети, предавани по мрежата, а не

само тези които са адресирани до него. Прослушване от този тип работи добре

в мрежи с концентратори.

IP Hijack

Мрежите с общи среди са особено податливи на подслушване, защото този вид

мрежи предават пакети навсякъде по мрежата при пътуването им от източника

до крайната цел. Когато в някоя среда с обща медиа се използват

концентратори или хъбове, относително лесно е да се добави нов възел с

възможност за улавяне на пакети и след това да се подслушва трафика по

мрежата. Подслушването на пакети може да се засича в определени случаи, но

най-често остава незабелязано.

Page 8: Безопасност и защита на Web приложения

IP Spoofing

IP спуфингът (подправянето) включва промяна на хедърите на пакети на

изпращаните съобщения. Това ги кара да изглеждат така, сякаш идват от IP

адрес, различен от реалния адрес на първоизточника. Целият поток от данни

към и от даден компютър или мрежов сегмент може да бъде пренасочен да

минава през определен компютър – компютъра на атакуващия. Така потокът от

информация може да бъде преглеждан, претърсван и подправян.

Макар че спуфингът сам по себе си не е форма на атака, той представлява

метод за придобиване на неоторизиран достъп до компютър или мрежа за

започване на атака, за кражба на данни или за унищожаване на данни.

Brute Force

Атака, използвана от хакери в такива случаи, когато достъпът към система или

към информация е затворен с парола и няма слабо защитени места.

Подбиране чрез изреждане на всички комбинации от символи.

Осъществява се с просто подбиране на всички възможни или най-често чрез

речник, или напоследък „рейнбоу таблица“ на най-често срещаните пароли.

Back Orifice (Net Bus, Masters of Paradise и др.).

Програмно осигуряване, използвано за отдалечено администриране на

система. Подобни програми, след като се инсталират, обикновено заемат

някакъв порт, например 31337, и се намират в състояние на очакване на

съединение. Хакери сканират Интернет, търсейки инфектиран хост.

Ако се определи такъв, те могат да получат достатъчно пълен контрол над

системата.

Dummy DNS Server.

Внедряване в мрежа на несъществуващ DNS-сървър, прихващайки DNS-

запитване. Това позволява нататък напълно да се прихване и да се въздейства

на информация, циркулираща между “излъгания” хост и сървъра.

Необходимото условие за осъществяване на този вариант атака е прихващане

на DNS-запитване.

Page 9: Безопасност и защита на Web приложения

Dummy ARP Server.

Внедряване в мрежа чрез фалшив ARP(Address Resolution Protocol) отговор.

Изпраща се фалшив ARP(Address Resolution Protocol) - отговор, в който се

представя на търсения хост,(например, маршрутизатор), и нататък активно

контролира целия мрежов трафик на “излъганият” хост.

Fuzzy.

Пакетът IP съдържа поле определящо кой протокол на следващото ниво (TCP,

UDP, ICMP) използва данните от интернет. Хакерите могат да ползват

нестандартни значения на даденото поле за предаването на данни, които няма

да се фиксират със стандартни средства за контрол на информационни

протоци.

Hack.

Клас от атаки, използвани за изследване на операционните системи,

приложения или протоколи с цел анализ на получената информация за

присъствие на слаби места, например, Port Scan. Установяване на слабите

места може да бъде използвано от хакерите за несанкциониран достъп към

системата или за намиране на най-ефективната форма на DoS-атака.

Host Spoofing

Атака, основана върху протокола ICMP, една от функции на който е

информиране на хостовете за смяна на текущ маршрутизатор. Даденото

управляващо съобщение носи название redirect. Съществува възможност за

изпращането на фалшиво redirect съобщение от името на маршрутизатора.В

резултат на това атакувания сървър променя таблицата си за маршрутизация и

по-нататък целия мрежов трафик минава през източника на фалшивото redirect-

съобщение.

Puke.

Осъществява се изпращане на пакет ICPM unreachable error (непозната грешка

на отдалечена система) от хакер към атакувания хост, което извиква

отключване на хост от сървър (обикновено IRC).

Port Scan.

Сканиране на компютърна система за намиране на портове чрез опити за

тяхното отваряне. Тази атака разходва ресурси на системата. Обикновено тя се

използва за търсене на слаби места (дупки) в компютърна система и

предшества по мощна атака.

Page 10: Безопасност и защита на Web приложения

Syslog Spoofing.

Атака, която се състои в предаване към атакувания компютър на съобщение от

името на друг компютър във вътрешна мрежа. Тъй като протокола syslog се

използва за водене на системни журнали, чрез тези фалшиви съобщения може

да подмени информация или да скрие несанкциониран достъп до атакувания

компютър.

Spam.

Изпращане по електронна поща на съобщения от различен вид без съгласие на

получателя. Периодически повтарящия се спаминг може да наруши работа на

потребителите поради голямо натоварване на сървъра за електронна поща;

извиквайки препълване на пощенски кутии, което води до невъзможност за

получаване и изпращане на обикновени съобщения; увеличава времето за

намиране на получател “на линията”, а това са допълнителни разходи

Traffic Analysis (Sniffing).

Прослушване на канал. Практически всички мрежови карти поддържат

възможност за прехващане на пакети, предавани по общ канал на локална

мрежа. При това работещата станция може да приема пакети, адресирани на

други компютри от същия сегмент. Затова целия информационен обмен в

сегмента става достъпен за хакер, което може после да му помогне да се

подбере или да измисли други типове на атаки срещу нормални потребители.

За успешна реализация на тази атака компютъра на хакер трябва да се намира

в същия сегмент на мрежа както и атакувани компютър.

Trojan Horse.

Троянският кон представлява програма, която се представя като полезен

софтуер. За разлика от вирусите и червеите, троянските коне нямат собствен

механизъм за разпространение. Затова разчитат единствено на незнанието и

непредпазливостта на потребителите. Например, троянски коне могат да бъдат

добавени преднамерено в инсталационните пакети на полезен софтуер. По

този начин те биват разпространявани без знанието на потребителите. Друг

начин за разпространение на троянски коне е чрез електронната поща – като

прикачени файлове. Отваряйки файла, потребителите всъщност го инсталират,

заразявайки по този начин своята система.

Съществуват пет основни типа троянски коне:

1. Троянски кон, предоставящ отдалечена администрация – този тип

предоставя възможност на външно лице да получи повече привилегии в

заразената системата отколкото обикновените й потребители.

2. Файлов сървър – това е троянски кон, който предоставя достъп до

заразената система, като я превръща във файлов или FTP сървър. Те се

Page 11: Безопасност и защита на Web приложения

използват, за да се зареди в поразената система троянски кон за отдалечена

администрация. Троянските коне-файлови сървъри обикновено са много малки

програми (някои са по 8 килобайта). Това позволява те да бъдат

разпространявани заедно с игри или други програми.

3. Крадец на пароли – този тип троянски кон има една единствена цел – да

краде паролите на потребителите на заразената система и да ги изпраща

(обикновено по електронна поща) на своя създател.

4. Key logger - той записва всяка информация, която потребителят на

заразената система въвежда от клавиатурата и я съхранява във файл, който

впоследствие бива изпратен на неговия "собственик".

5. DDoS (Distributed denial of Service) – това е най-опасният тип троянски

кон. Чрез заразяване на множество системи с такива троянски коне се

осъществява разпределена атака за отказ на услуга (DDoS) към даден сървър

Worms

Компютърните червеи са разпространяваща се самостоятелно компютърна

програма, подобна на компютърните вируси. Докато вирусите се прикрепват

към други програми, червеите са независими и не изискват да бъдат част от

други програми, за да се разпространяват. Обикновено червеите се

разпространяват по компютърната мрежа и преминават от един компютър към

друг, като използват грешки или слабости на мрежовите протоколи. Обикновено

тези червеи заразяват само оперативната памет на системата приемник, като

не създават свое копие във вид на файл. Могат да повредят системата

приемник или напълно да я блокират. Освен мрежови червеи има и файлови

червеи.

File Worms

Файловите червеи копират себе си върху системата приемник под формата на

файлове, най-често с имена, които често се използват за инсталационни

пакети, така че инцидентно и неволно те могат да бъдат стартирани от някого.

Други червеи пък се добавят в архиви. Трети вмъкват инструкции за своето

извикване в пакетни файлове за обработка или скриптове. Файловите червеи

използват единствено възможностите “предоставени” им от файловата

система, за да се разпространяват. Могат да повредят системата приемник или

напълно да я блокират.

Botnet

Ботнетът e мрежа от софтуерни приложения или компютри, които работят в

автономен режим и имат за цел кражба на лични данни.

Page 12: Безопасност и защита на Web приложения

Unreachable (dest_unreach, ICMP type 3).

Тази атака състои във това, че на компютърна система се изпраща съобщение

ICMP type 3, което съобщава, че порт на получател е недостъпен. И поради

това, че системата си “мисли”, че пакетите не пристигат, тя ще прекъсне

връзката.

UDP Storm.

Обикновено по подразбиране системите поддържат работа на такива UDP-

портове както 7 (“echo”, получения пакет се изпраща назад), 19 (“Character

Generator Protocol (CHARGEN) ”, в отговор на получения пакет изпраща стринг)

и други данни. В даден случай хакер може да изпрати единствен UDP-пакет,

където в качество на изходен порт ще бъде отбелязан 7-ми, а в качество на

получател ще бъде 19-ти, а в качество на адрес на получател и на изпращач

ще се посочват, например, два компютъра от вашата мрежа (може и 127.0.0.1).

След получаване на пакет 19-ти порт отговаря със ред, който попада на порт 7.

Седми порт го дублира и го препраща на 19-ти и така до безкрайност.

Безкрайния цикъл намалява ресурсите на компютъра и добавя на канала

безсмислено натоварване. Разбира се че при първа загуба на UDP пакет

наводняването ще спре.

HRS (HTTP Resource Splitting )

Същността на атаката е , че нападателят изпраща специално подготвена HTTP

заявка, чрез която манипулира Web сървъра да отговори с два отделни HTTP

отговора, вторият от които е напълно контролиран от атакуващия. В резултат

на нападението се получава, важна информация, като например, бисквитката

на друг потребител.

Web Cache Poisoning

По принцип, прокси сървърите кешират страници , поискани от потребителите ,

така че когато се получи втора заявка за тази страница, тя се връща от кеша , а

не с искане към уеб сървъра. Същността на атаката е да се създаде фалшива

прокси кеш страница , която след това да бъде изпратена на потребителите на

мрежата .

Browser Cache Poisoning

Кеш има не само на прокси сървърите, но също така и в браузъра. В

действителност този метод е почти същото като Web Cache Poisoning, с

единствената разлика е, че фалшивата страница се съхранява в браузер кеша

на компютъра .

Page 13: Безопасност и защита на Web приложения

Malware

Зловреден софтуер, маскиран, като прикачен файл към имейл, като файл за

изтегляне от уеб сайт или интродуциран чрез използване на познати пропуски в

сигурността – особено, когато става въпрос за малки и средни предприятия

(малки и средни фирми), които не винаги са в състояние да поддържат

осъвременени своите софтуерни приложения. Терминът обхваща различни

видове софтуер, включително вируси, червеи, троянски коне и шпионски

софтуер.

Keyloggers и Screenloggers

Вид зловреден софтуер, следят въвежданата от клавиатурата информация и я

изпращат на хакери чрез интернет. Те могат да се вградят в браузърите на

потребителите като малки помощни програми, известни като помощни обекти,

които се изпълняват автоматично, когато браузърът се стартира, както и в

системните файлове, като драйвери на устройства или монитори.

Pharming

Представлява модифициране на hosts или Domain Name System (DNS)

файлове, така че въведените URL адреси или име на услугата да пренасочват

потребителя към фалшив сайт, обикновено копие на оригиналния сайт на

банката. Нищо неподозиращият потребител въвежда лична и финансова

информация, включително датата на раждане, парола, информация за

сметката, номера на кредитни карти, ПИН кодове и т.н, която става достъпна за

кибер престъпниците.

Man-in-the-Middle

При тази атака хакери се позиционират между потребителя и банковия уебсайт

или система. Те записват информацията, която се обменя, но продължават да я

предават, така че транзакциите на потребителите не са засегнати. По-късно те

продават или използват събраната информация или пълномощията, когато

потребителят не е активен в системата.

Man-in-the-Browser

Троянски кон, който заразява интернет браузъра, прихващайки и

модифицирайки изпратената информацията, преди тя да достигне до

механизма за сигурността на браузъра. Този вид атака позволява да промените

съдържанието на уеб-страница и операциите, извършвани в нея, така че

промените не могат да бъдат проследени нито от потребителя, нито от

програмата за контрол. Целият процес се извършва без никакви видими

признаци.

Page 14: Безопасност и защита на Web приложения

Spyware

Шпионският софтуер се използва за следене на дейността на потребителя на

компютъра и може да включва кийлогъри и скрийнлогъри, както и други червеи

и троянски коне.

Buffer Overflow

Буферът е временна област за съхранение на данни в паметта. Когато там се

поставят повече данни, отколкото е предвидено първоначално от даден

програмен и системен процес, допълнителните данни ще го препълнят,

откъдето произлиза и името, причинявайки част от данните да изтекат към

други буфери, което може да разруши данните, които те съдържат или да

запише върху тях. Хакерите използват буферното препълване, за да се

възползват от програма, която очаква въвеждане на данни от потребителя. Има

два типа буферно препълване – стек базирани и хип базирани.

Heap Overflow

Това е buffer overflow атака, но атакуваният буфер се намира в областта от

паметта, наречена Heap. Това е частта, която приложението динамично заделя

с една или друга цел. При общия случай,

Stack Overflow

Когато буферът се намира в стека на приложението и тогава атаката се нарича

Stack Overflow(в много случаи, просто buffer overflow). Стека и heap-а нарастват

и се свиват по време на изпълнението на програмата в противоположни посоки

Integer Overflow

Този тип атаки са базирани на възможността на различните целочислени

промеливи да приемат стойности само в определени интервали (например

signed 16-bit integer приема стойности от -32767 до 32767.). Така, ако

резултатът от определена аритметична операция изкара стойността извън тези

граници, стойността запазена в дадената променлива може да се окаже много

по-голяма или по-малка от очакваната от програмиста. На пръв поглед такава

грешка не изглежда особено опасна, но тъй като някои от променливите са

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

сравнения, да бъдат подавани нестандартни стойности на функции, които

програмата извиква (отрицателни например) и по този начин да се постигне

непредвиден от дизайна ход на приложението.

Page 15: Безопасност и защита на Web приложения

Cross Site Scripting (XSS)

Атака, която използва уязвимост на приложението и “вмъква“ нежелан код,

който се изпълнява в браузъра на крайния потребител. Най-общо казано

атаката цели да намери място в програмата, в което се отпечатва стойността

на дадена променлива и не се проверява коректно нейното съдържание.

Обикновено в съдържанието на променливата се записва HTML, XHTML,

JavaScript, ActiveX, VBScript, Flash, и др видове изпълним код. Възможностите

за цел на атаката може да са много – придобиване на достъп до защитена зона

на сайта (чрез постигане на session hijacking), подвеждане на потребителя да

въведе информация към трети източник (physhing), инсталиране на нежелани

програми на компютъра на потребителя (virus, worm, trojan, …), и др. Според

изследване на Symantec около 80% от проблемите в сигурността на уеб-

базираните приложения са свързани именно с XSS уязвимости. Също така се

прави статистическо предположение, че поне 70% от динамичните уеб-сайтове

в световната мрежа притежават такава уязвимост. Обикновено крайния

потребител не може да намери визуален белег, по който да разкрие атаката.

XSS атаките са най-общо три вида:

1. Директни: Атакуващият предоставя връзка или друг вид „маскиран“ код към

клиента. Когато клиента последва такава връзка той попада на оригиналният

уебсайт на дадената услуга, но вече с модифициран от атакуващия код.

Възможно е и възползването от уязвимост на софтуера, с който жертвата

преглежда подаденото му съобщение, с цел атакуващия да добие достъп до

неговата административна част. Директните атаки се реализират най-често

чрез изпращане на писма по електронната поща към жертвата или чрез

съобщения в различни чат приложения.

2. Статични: Атакуващият успява да вмъкне нежелания код в база данни и само

изчаква жертвата сама да отвори уязвимата страница. Това са най-честите

атаки при т.нар. социални мрежи – форуми, сайтове, дискусионни групи, и т.н.

3. DOM: Това са XSS атаки от т.нар. локално ниво. Обикновено се използва

уязвимост в скрипт на продукта, чрез който самият софтуер да предизвика

директна XSS атака към жертвата.

Мalicious file execution

Тази уязвимост се появява в много уеб приложения. Главно в такива

приложения, в които позволяват URL параметри на имената на файловете , за

да се включат, като URL адреси или препратки към файловата система. В тези

случаи може да се подадат от „нападателя“ различни файлове, които да се

изпълнят на сървъра и да удовлетворят целите на „нападателя“ - да му

предоставят желаната от него информация или да повредят информация.

Изпълнение на злонамерени файлове може да се наблюдава и когато

потребители се опитват да качат файл в даден сайт, чрез форма закачване на

Page 16: Безопасност и защита на Web приложения

файлове. Потребителите могат да се опитат да качат техен скрипт и по този

начин да осъществят злонамерените си действия.

Session Hijacking - отвличането на сесия е атака, при която се следят

действията на потребителя, докато не се свърже със сметката си или започне

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

чрез съответния софтуер хакерите поемат контрол над сесията и могат да

предприемат всякакви неоторизирани действия, като например прехвърляне на

средства, без знанието на потребителя.

SQL Injection

SQL инжекциите са начин за променяне на заявката към дадена база данни -

MySQL, MSSQL или друга. Основната цел е да се извлече неоторизирана

информация от базата данни или в по-редки случаи да се увреди

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

добавят Structured Query Language (SQL) код към кутийка на уеб форма за

въвеждане под формата на SQL заявка, което е искане към базата данни да

изпълни специфично действие. Обикновено по време на потребителското

удостоверяване се въвеждат потребителско име и парола и се включват в

запитване. След това на потребителя или му се предоставя, или му се отказва

достъп в зависимост дали е дал правилни данни. Уеб форумите обикновено

нямат никакви инструменти за блокиране на въвеждане освен потребителското

име и паролата, което означава, че хакерите могат да изпълнят атака с SQL

инжекция, като използват входните полета, за да изпратят заявка към базата

данни, която е много вероятно да им предостави достъп.

Cross-site request forgery (CSRF)

Това е атака, чиито трик е да накара жертвата да зареди страница, която

съдържа зловреден код. Този зловреден код наследява идентичност и

привилегиите на жертвата за извършване на нежелани действия от името на

жертвата, като променяне на е-мейл адрес на жертвата, домашен адрес или

парола, или извършването на покупка,превод на пари и други.

Hidden Fields Manipulation

Скритите полета се използват от уеб страниците за предаване на

допълнителна информация.Те могат лесно да бъдат видени и техните

стойности променени, променяйки тотално ефекта от обработка на формуляра.

Мерки за защита на уеб приложението

И така, как можем да защитим уеб приложението от всичко тези заплахи?

Page 17: Безопасност и защита на Web приложения

Защита на сървъра и мрежата

1 Заплахите за сигурността непрекъснато се развиват и вашата архитектура на

сигурността трябва също да се развива. Най-добрият начин е да правите

оценка на вашите нужди от сигурност на регулярни интервали.

2 Използвайте реверсивно прокси (например Microsoft ForeFront Treat

Management Gateway). Реверсивното прокси стои между интернет и сървъра,

който изисква отварянето на много портове. Въпреки че няма как да се

заобиколи нуждата от отварянето на портове, реверсивното прокси може да

пресрещне и да филтрира заявките и след това да ги подаде на сървъра, за

който са предназначени. Това помага да се скрие сървъра от външния свят и

помага да се гарантира, че до сървъра няма да достигат злонамерени заявки.

3 Не винаги е практично да се отдели един сървър за всяко приложение, но

най-малкото трябва да внимаваме кои приложения или приложни роли се

хостват на един сървър. Например, ако разположите ролята на сървър за

клиентски достъп на същия сървър, на който са ролите на транспортен хъб и

пощенски сървър, вие в значителна степен показвате вашата пощенска база

данни към интернет.

4 Най-голямата отделна заплаха за мрежовата сигурност са работните станции.

Много организации правят много за защитата на своите мрежови сървъри, но

на практика пренебрегват работните станции. Докато работните станции не

бъдат заключени както трябва, потребителите (или злонамерените уеб сайтове)

могат да инсталират неоторизиран софтуер с невъобръзими последици.

5 Добре е всяка страница, която дава информация за сигурност, съвет за

сигурност или за контакти да бъде SSL криптирана. Това не означава, че тези

страници са особено чувствителни, а просто, че сертификатът, използван от

процеса на криптиране, гарантира на потребителите, че те получават достъп до

легитимна уеб страница, а не до страница, която някой е поставил примерно

като фишинг скам.

6 Използвайте самоподписани сертификати. По този начин уеб интерфейсите

могат да се използват с SSL криптиране, дори ако организацията все още не е

получила свой собствен сертификат. Въпреки че саморъчните сертификати са

по добре от нищо, те не са заместител на валиден SSL сертификат от доверена

сертифицираща организация. Самоподписаните сертификати първоначално са

предназначени като помощ да се увеличи сигурността на продукта до момента,

в който администраторът не го обезопаси както трябва. Саморъчните SSL

сертификати могат да предоставят SSL криптиране, но потребителите ще

получават предупредително съобщение в браузърите си, защото техните

компютри нямат доверие в сертификата (а и не би трябвало да имат). Още

повече някой SSL базирани уеб услуги (като ActiveSync) не са съвместими със

самоподписаните сертификати, поради проблема с доверието.

Page 18: Безопасност и защита на Web приложения

7 Въпреки че е важно да се регистрират събитията, които се случват във

мрежата, също е важно да не се престаравате и да извършвате прекалени

регистрации. Прекалено многото регистрации могат да направят трудно и дори

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

интересува. Вместо да се опитвате да записвате всичко, се фокусирайте върху

регистрирането на събития, които са от значение.

8 Виртуалните сървъри обикновено се групират на хост сървъри според

тяхната производителност. Например, виртуални сървъри с висока степен на

обръщения може да се съчетаят на един хост с няколко виртуални сървъра с

ниска степен на обръщения. От гледна точка на производителността, това е

много добра идея, но този подход може да не е най-добрата идея от гледна

точка на сигурността. Препоръчително е да се използват специално

предназначени за целта хостове за всички виртуални сървъри, които са

директно свързани към интернет. С други думи, ако имате три виртуални

сървъра, които доставят услуги на интернет потребители, вие трябва да

помислите за групирането им на хост, но не слагайте инфраструктурни сървъри

(като домейн контролери) на този хост.

Причината за този съвет е, че така се осигурява защита срещу изплъзващи се

атаки. Изплъзващата се атака е тази, при която хакерът може да се изплъзне от

виртуалната машина и да поеме контрол върху хоста. В реалния свят това не

се е случвало, но може би и този ден ще дойде. Когато това се случи, вие ще

имате по-добра защита за атаката, ако виртуалните машини, които са обърнати

към интернет, споделят виртуален хост само с подобно защитени уеб

ориентирани сървъри.

9 Ако можете да го избегнете, опитайте се да не слагате частни сървъри в

демилитаризираната зона (DMZ). Ако бъдат компрометирани, те могат да

разкрият информация за вашата Active Directory / LDAP.

10 Използвайте решения за управление и инсталиране на патчове и ъпдейти,

които ги поставят автоматично, без да дават избор на потребителите.

Администрация на сайта 1 Ограничаване на достъпа

Вземете съответните мерки, с които да ограничите възможните входни точки за

злонамерени лица.

2 Ограничения

Вашият сайт трябва да бъде конфигуриран така, че да се намали размерът на

щетите, които може да се получат в случай, че бъде компрометиран.

Page 19: Безопасност и защита на Web приложения

3 Уязвимости на вашия компютър

Уверете се, че компютрите, които използвате, нямат шпионски и/или

злонамерен софтуер и вирусни. Не съществува ниво на сигурност, което да

защити или гарантира вашият сайт или вашия уеб сървър, в случай, че имате

Keylogger на вашия компютър.

Винаги поддържайте вашата операционна система и инсталиран софтуер

актуализирани, особено вашия уеб браузър, за да се предпазите от уязвимости

в сигурността.

4 Уязвимости в мрежата

Мрежата трябва да е сигурна и в двата си края -- от страна на сървъра и от

страна на клиента . Това означава да се актуализират настройките на

защитната стена на домашната ви интернет връзка и да сте внимателни от

какви мрежи се работите. Интернет кафе в което изпращате пароли, чрез

некриптирана връзка, или безжична такава НЕ са сигурни мрежи.

Вашият уеб хостинг доставчик, както и вие самите трябва да се уверите, че

неговите мрежи на са компрометирани от злонамерени лица. Уязвимости в

мрежата биха позволили да бъдат прехванати пароли и друга лична

информация.

5 Пароли

Много потенциални уязвимости могат да бъдат избегнати с добри навици за

сигурността. Изборът на сложна парола е важен аспект от тях.

Важно за една парола е да е трудна за отгатване и за brute force атаки. Има

много автоматични генератори на пароли, които могат да бъдат използвани за

генериране на сигурни пароли

Какво да избягвате при избора на парола:

Всякакви пермутации от вашето истинско име, потребителско име, фирма или

уебсайт

Речникова дума от който и да е език

Къса парола

Парола,съставена само от цифри или букви (най-добре комбинация от двете).

Сигурната парола е необходима не само за да защитите съдържанието на своя

сайт. Ако хакер получи достъп до администраторския ви акаунт може да

инсталира всякакви скриптове, които да изложат на риск цялата ви система.

Page 20: Безопасност и защита на Web приложения

6 FTP

Когато се свързвате със сървъра си е желателно да използвате SFTP

криптиране, ако доставчикът ви предлага такова. Ако не знаете дали вашият

хостинг провайдър предлага тази услуга, просто го попитайте.

Използването на SFTP е същото като FTP, с изключение на това, че паролата и

други данни, които се предават между вас и сървъра са в кодиран вид. Това

означава, че вашата парола никога няма да бъде изпратена в прав текст, което

прави невъзможно прихващането и от хакер.

7 Файлови права

Даване на достъп за запис на файловете е потенциално опасно, особено на

споделен хостинг.

Най-добре е да ограничите файловите права колкото се може повече и да

премахвате това ограничение, когато се налага тези файлове да се променят

или да създадете специфични папки с права за запис за строго определени

цели, като например качване на файлове.

Разширения: Всички файлове трябва да са достъпни за запис само от вашия

потребителски профил.

8 Сигурност на базата данни

Мъдро е, ако имате инсталирани няколко сайта на същата система, да ги

държите в отделни бази данни, управлявани от различни потребители. Това е

стратегия за забавяне: Ако нарушител успешно хакне един от сайтовете ви, ще

му е много по-трудно да засегне останалите инсталации.

Ако вие самите администрирате MySQL, уверете се, че разбирате

конфигурацията му и че излишни функции (като отдалечен TCP достъп) са

забранени.

9 Резервни копия

Правете резервни копия на сайта редовно, включвайки и вашата база данни.

Целостта на данните е от изключително значение за надеждни резервни копия.

Криптиране на резервните копия,пазене на MD5 ключ за всеки файл и/или

записването им върху носител само за четене значително увеличават

гаранцията, че данните не са манипулирани.

Една надеждна стратегия за резервни копия трябва да включва редовни копия

на целия сайт (включително и базата данни) на сигурно място. Представете

си,че правите копия един път седмично. Тази стратегия означава, че ако сайтът

ви е компрометиран на 1-ви май, но това не е засечено до 12-ти май,

собственикът на сайта ще има резервни копия, които ще са от преди 1-ви, които

Page 21: Безопасност и защита на Web приложения

ще помогнат да върнете сайта до нормалното му функциониране, дори

резервните копия след заразяването могат да допринесат за това да се

установи как сайтът е бил компрометиран.

10 Логване Можете да логвате различните заявки, изпращани към вашия. Стандартните

логове на Apache предлагат голяма помощ когато става въпрос за разследване

на проблеми със сигурността.

11 Наблюдение

Понякога предпазването не е достатъчно и е възможно да бъдете хакнат.

Затова мониторинга и откриването на прониквания са много важни. Те ще ви

позволят да реагирате по-бързо, да разберете какво се е случило и да

възстановите сайта си.

12 Мониторинг на логовете

Ако сте на частен сървър (където имате администраторски достъп), трябва да

следите вашите логове за опити за налучкване на паролите, уеб атаки и т.н.

Добро решение с отворен код за наблюдаване на логовете в реално време и

блокиране на атакуващия е OSSEC.

13 Следене на файловете за промени

Когато се осъществи атака,тя винаги оставя следи. Както в логовете, така и на

файловата система (създадени нови файлове или модифицирани

съществуващи такива).

14 Външно наблюдение на уеб сървъра

Ако хакер опит да заличи сайта ви или да добави зловреден софтуер, може да

забележите промените, използвайки уеб базирано мониторинг решение.

Защита на кода на сайта Общи проблеми в web приложенията

1. Невалидирани параметри

2. Грешки при контрола на достъпа

3. Грешки при контрола на сесиите и акаунтите

4. Cross-Site Scripting (XSS) уязвимости

5. Препълване на буфера

Page 22: Безопасност и защита на Web приложения

6. Злонамерено вмъкване на команди

7. Проблеми при обработка на грешки

8. Несигурно ползване на криптография

9. Грешки при отдалечено администриране

10. Грешки при конфигурация на web сървъра

Препоръки:

1. Не показвайте директно данни, идващи от потребителите. Филтрирайте и

валидирайте или нормализирайте показваните данни

2. Изисквайте парола за извършване на важни действия.

3. Използвайте POST вместо GET, където е възможно.

4. Проверявайте Referrer на важните форми.

5. Подсигурете формите, чрез уникални данни в тях

6. Никога не ползвайте в SQL заявка данни, които не са предварително

филтрирани и валидирани или нормализирани.

7. Използвайте Prepared queries.

8. Ограничавайте правата на потребителя, който ползвате за достъп до базата

9. При извикване на външни команди не ползвайте параметри, контролирани от

потребителя, филтрирайте командите и параметрите.

10. Винаги инициализирайте променливите, които създавате.

11. Валидирайте разширенията на качваните от потребителите файлове и ги

съхранявате в отделна, обезопасена директория.

12. Филтриране на изходящите връзки от сървъра. Не използвайте функции от

тип include с данни контролирани от потребителя.

13. За код използвайте самo регистрираните файлови разширения.

14. Не пишете код, който разчита на включен register_globals при PHP.

15. Библиотеките се слагат извън web дървото или в недостъпна директория.

Дефинирайте константи и ги проверявайте, за да сте сигурни, че файлът е

извикан откъдето трябва

16. Всеки host трябва да работи под различен потребител

Page 23: Безопасност и защита на Web приложения

17. Ползване на частна директория за сесиите на потребителя

18. Пазете потребителските сесии в базата данни

19. Пишете проверки, които не могат да бъдат избегнати

20. Валидирайте всички данни, идващи от външен източник (потребители, db,

файлове и т.н.)

21. Инициализирайте променливите си

22. Пишете код, който работи без грешки при error_reporting = E_ALL (за apache)

23. Разработвайте и тествайте в среда точно копие на средата в която ще

работи сайта.

24. Внимавайте когато давате достъп до данни, предоставени от потребителя

25. Не съхранявайте конфиденциални данни на публично достъпни места

26. Ако нямате възможност да забраните разглеждането на дадена директория,

направете файл index.php, index.aspx, index.htm и др. или .htaccess, който да

пренасочи заявката към началната страница.

27. На работещ сайт записвайте грешките, но не ги показвайте на гледащия

страницата

28. Всеки сайт трябва да работи с различен потребител (админ) и парола

29. Всеки потребител трябва да вижда само собствените си файлове

30. Логвайте всички грешки и проверявайте редовно лог файловете

И един бонус съвет към по-опитните програмисти, не оставяйте люкове и задни

врати към приложенията, те могат да попаднат в ръцете на тези, за които не са

предвидени.

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

Page 24: Безопасност и защита на Web приложения

Ползвана литература

1. Linux ръководство на мрежовия администратор - Кирх Олаф; Доусън Тери;

2. Linux Мрежови сървъри - Хънт Крейг;

3. Проектиране на мрежова сигурност – Мерике Каео

4. Компютърни Мрежи – Дебра Литълджон Шиндър

5. Източници и публикации от интернет.

http://www.citforum.ru/security/internet/attack_book/toc.shtml

http://www.citforum.ru/operating_systems/linux/iptables/index.shtml

http://kiev-security.org.ua/box/15/index.shtml