I když jste jen sledovali události hackerových skupin Anonymous a LulzSec, pravděpodobně jste slyšeli o webových stránkách a služby jsou hacknuty, stejně jako neslavné Sony hacks. Přemýšleli jste někdy o tom, jak to dělají?
Existuje řada nástrojů a technik, které tyto skupiny používají, a zatímco se nesnažíme dát vám manuál, který by to udělal sami, je užitečné pochopit, co se děje. Dvě z útoků, které jste o nich slyšeli, jsou "Distribuované odmítnutí služby" (DDoS) a "SQL Injections" (SQLI).
Obraz xkcd
Co je to?
"Denial of Service" útok nastane, když systém, v tomto případě webový server, obdrží tolik požadavků najednou, že zdroje serveru jsou přetížené, systém se jednoduše zamkne a vypne. Cílem a výsledkem úspěšného útoku DDoS je, že webové stránky na cílovém serveru nejsou k dispozici pro legitimní požadavky na provoz.
Jak to funguje?
Logistika útoku DDoS může být nejlépe vysvětlena příkladem. > Představte si, že milion lidí (útočníci) se shromáždí s cílem omezit podnikání firmy X tím, že sníží své call centrum. Útočníci koordinují tak, aby v úterý v 9:00 všichni volali na telefonní číslo společnosti X. S největší pravděpodobností telefonní systém společnosti X nebude schopen zvládnout milion hovorů najednou, takže všechny příchozí linky budou svázány útočníky. Výsledkem je, že legitimní volání zákazníků (tzn. Ty, které nejsou útočníky) se nedostanou, protože telefonní systém je svázán s manipulací s hovory od útočníků. Takže v podstatě společnost X potenciálně ztrácí svoji činnost kvůli oprávněným požadavkům, které nemohou projít.
Útok DDoS na webový server funguje přesně stejným způsobem. Protože neexistuje prakticky žádný způsob, jak zjistit, jaký je provoz z legitimních požadavků a útočníků, dokud webový server zpracovává požadavek, tento typ útoku je obvykle velmi účinný.
Provádění útoku
síla "přírody útoku DDoS, musíte mít spoustu počítačů koordinovaných k útoku ve stejnou dobu. Přehodnocením příkladu telefonického centra by to vyžadovalo, aby všichni útočníci oba věděli, že mají volat v 9:00 a skutečně volají v té době. Zatímco tento princip jistě bude fungovat, pokud jde o útok na webový server, je to mnohem jednodušší, když se používají počítače zombie namísto skutečných počítačů s posádkou.
Jak asi víte, existuje spousta variant malwaru a trojských koní, , jakmile se ve vašem systému setkáte, jste spící a příležitostně "telefonujte domů" pro pokyny. Jedním z těchto pokynů může být například odeslání opakovaných požadavků na webový server společnosti X v 9:00. Takže s jediným updatáním na domovské umístění příslušného malwaru může jeden útočník okamžitě koordinovat stovky tisíc kompromitovaných počítačů a provádět masivní útok DDoS.
Krása využití zombie počítačů není jen efektivní, ale také v jeho anonymitě, protože útočník ve skutečnosti nepoužívá vůbec počítač k útoku.
SQL Injection Attack
Akt "SQL injection" (SQLI) který využívá špatné techniky vývoje webových stránek a obvykle v kombinaci s chybnou databázovou bezpečností. Výsledek úspěšného útoku se může pohybovat od předstírání uživatelského účtu k úplnému kompromisu příslušné databáze nebo serveru. Na rozdíl od útoku DDoS je útok SQLI zcela a snadno zabráněn, pokud je správně naprogramována webová aplikace.
Provádění útoku
Kdykoli se přihlásíte na webovou stránku a zadáte uživatelské jméno a heslo, pověření může webová aplikace spustit dotaz, jako je následující:
SELECT UserID FROM uživatele WHERE UserName = "myuser" a heslo = "mypass";
Poznámka: Hodnoty řetězce v dotazu SQL musí být uzavřeny v jednoduchých uvozovkách, což je důvod, proč se zobrazují kolem zadaných hodnot uživatele.
Takže kombinace zadaného uživatelského jména (myuser) a hesla (mypass) musí odpovídat položce v Tabulka uživatelů, aby bylo možné vrátit ID uživatele. Pokud není shoda, není vráceno žádné UserID, takže přihlašovací údaje jsou neplatné. Zatímco konkrétní implementace se může lišit, mechanika je docela standardní.
Nyní se podíváme na dotaz ověřování šablon, který můžeme nahradit hodnoty, které uživatel zadá do webového formuláře:
SELECT UserID FROM Users WHERE UserName = [user] "AND Password =" [pass] "
Na první pohled se to může zdát jako přímý a logický krok pro snadné ověření uživatelů, nicméně pokud je v této šabloně provedena jednoduchá náhrada zadaných hodnot uživatelem náchylné k útoku SQLI.
Předpokládejme například, že v poli uživatelského jména je zadáno "myuser" - a do hesla je zadáno "wrongpass". Použijeme-li jednoduchou substituci v našem šablonovém dotazu, získáme toto:
SELECT UserID FROM Users WHERE UserName = "myuser" - "AND Password =" wrongpass "
Klíčem k tomuto tvrzení je zahrnutí dvou pomlček
(-). Toto je začátek token komentářů pro příkazy SQL, takže vše, co se objeví po dvou pomlčkách (včetně) bude ignorováno. V podstatě je výše uvedený dotaz proveden v databázi jako:
SELECT UserID FROM Uživatelé WHERE UserName = "myuser"
Výrazným vynecháním zde chybí kontrola hesla. Začlenit dvě čárky jako součást uživatelského pole zcela zrušili podmínku kontroly hesla a mohli jsme se přihlásit jako "myuser" bez znalosti příslušného hesla. Tento čin manipulace s dotazem, který vede k neúmyslným výsledkům, je útok SQL injection
Jaká škoda může být provedena?
SQL injekční útok je způsoben nedbalým a nezodpovědným kódováním aplikace a je zcela zabráněno chvíli), rozsah poškození, který lze provést, závisí na nastavení databáze. Aby webová aplikace mohla komunikovat s backendovou databází, aplikace musí poskytnout přihlášení do databáze (poznámka, toto je jiné než uživatelské přihlášení k samotnému webu). V závislosti na tom, jaké oprávnění vyžaduje webová aplikace, může příslušný databázový účet vyžadovat cokoli od oprávnění čtení a zápisu v existujících tabulkách pouze k úplnému přístupu k databázi. Pokud to není jasné, několik příkladů by mělo pomoci poskytnout určitou jasnost.
Na základě výše uvedeného příkladu můžete vidět, že zadáním například
"youruser" - "," admin " - "nebo jakéhokoli jiného uživatelského jména, můžeme okamžitě přihlásit se k webu jako tento uživatel bez znalosti hesla. Jakmile jsme v systému, neví, že nejsme vlastně ten uživatel, takže máme plný přístup k příslušnému účtu. Databázová oprávnění neposkytují záchrannou síť, protože webová stránka musí mít alespoň přístup k čtení a zápisu do příslušné databáze.
Nyní předpokládejme, že web má plnou kontrolu nad příslušnou databází, která dává možnost vymazání záznamů, přidávání / odebírání tabulek, přidávání nových bezpečnostních účtů apod. Je důležité si uvědomit, že některé webové aplikace mohou vyžadovat tento typ oprávnění, takže není automaticky špatná věc, že je poskytována plná kontrola. ilustrujeme škody, které lze v této situaci udělat, použijeme příklad uvedený v komiksu výše zadáním následujícího pole do uživatelského jména:
"Robert"; uživatelé DROP TABLE; - "
Po jednoduše nahradí ověřovací dotaz:SELECT UserID FROM Users WHERE UserName = "Robert"; DROP TABLE Uživatelé - 'AND Password = "wrongpass"
Poznámka: Bodkoćka v dotazu SQL se poużívá k oznaćení konce konkrétního výkazu a zaćátku nového výkazu.
Který se provádí databáze jako:
SELECT UserID z uživatelů WHERE UserName = "Robert"
DROP TABLE Users
Takže jsme použili SQLI útok k odstranění celé tabulky Users
Samozřejmě může být mnohem horší, protože v závislosti na oprávnění SQL může útočník měnit hodnoty, vypisovat tabulky (nebo celou databázi sám) do textového souboru, vytvářet nové přihlašovací účty nebo dokonce zatajovat celou instalaci databáze.
Zabránění útoku SQL injection
Jak jsme již několikrát zmínili, útok útoku SQL lze snadno zabránit. Jednou z hlavních pravidel tvorby webových stránek je, že jste nikdy slepě nevěřili uživatelskému vstupu, jako jsme udělali, když jsme provedli jednoduchou náhradu v našem šablonovém dotazu výše.
SQLI útok je snadno potlačen tím, co se nazývá dezinfekce (nebo únik) vašich vstupů. Proces dezinfekce je ve skutečnosti poměrně triviální, neboť vše, co v podstatě dělá, je zpracovávat libovolné inline jednoduché citáty (') odpovídajícím způsobem tak, že nemohou být použity k předčasnému ukončení řetězce uvnitř příkazu SQL.
Například, pokud jste chtěli vyhledávání "O'neil" v databázi, nemůžete použít jednoduchou náhradu, protože jednoduchá citace po O způsobí, že řetězec bude předčasně ukončen. Místo toho je dezinfikujete pomocí příslušného únikového znaku databáze. Předpokládejme, že znak útěku pro inline jednoduchou citaci předkládá každý citát se symbolem . Takže "O'neal" bude sanitizován jako "O 'neil".
Tento jednoduchý hygienický postup zabraňuje útoku SQLI. Chcete-li to ilustrovat, přejděte zpět na naše předchozí příklady a zkontrolujte výsledné dotazy, jakmile je uživatelský vstup dezinfikován
myuser '-
/
wrongpass
: SELECT UserID FROM Users WHERE UserName = myuser "- 'a heslo =" wrongpass " Protože jednoduchá citace po myuseru uniká (znamená to, že je považována za část cílové hodnoty), databáze bude vyhledávat uživatelské jméno
" myuser " - "
Navíc, protože pomlčky jsou zahrnuty v hodnotě řetězce a nikoliv v samotném příkazu SQL, budou považovány za část cílové hodnoty místo toho, aby byly interpretovány jako komentář SQL.Robert; DROP TABLE Uživatelé -
/
wrongpass
: SELECT UserID FROM Uživatelé WHERE UserName = "Robert "; DROP TABLE Uživatelé - "AND Password =" wrongpass " Jednoduchým unikáním jediné citace po Robertu jsou mezi vyhledávacím řetězcem UserName obsaženy středník a pomlčky tak, aby databáze doslova vyhledávala
" Robert " , "DROP TABLE Users" - "
namísto provádění vymazání tabulkyV souhrnu
Zatímco webové útoky se vyvíjejí a stávají se sofistikovanějšími nebo se zaměřují na jiný vstupní bod, proti pokusům a opravdovým útokům, které byly inspirací několika volně dostupných "hackerských nástrojů" určených k jejich zneužití.
Jak si vybrat, které aplikace se nejdříve aktualizují v systému iOS 10
Stáhli jste někdy někdy stažené nebo aktualizované množství aplikací najednou, a najednou jste si uvědomili, že potřebujete použít jednu z těchto aplikací? iOS 10 má novou malou funkci, která se vám líbí: nyní můžete upřednostňovat stahování aplikace tak, aby přeskočila na frontu. Pokud máte aplikace nastavená na automatickou aktualizaci na vašem zařízení se systémem iOS, nemáte spoustu aplikací, které se velmi často aktualizují.
Nastavení různých pozadí pro duální monitory v systému Windows 7
Pokud stále používáte systém Windows 7, protože nenávidíte systém Windows 8 a používáte více než jeden monitor, pravděpodobně narazíte na omezení, že pro každý monitor nelze použít jinou tapetu. Windows 8 vlastně má spoustu úžasných funkcí pro duální nebo více nastavení monitoru, ale dokud neřeší celé počáteční obrazovky / problémy při startu, lidé nebudou v blízké době migrovat.Naštěstí existuje několik věcí, které můžete u