Што такое Фаззінг?

Тое, што расплываецца

Уступленне: што такое Фаззінг?

У 2014 годзе кітайскія хакеры узламаны Community Health Systems, камерцыйная сетка бальніц ЗША, і скралі дадзеныя 4.5 мільёнаў пацыентаў. Хакеры выкарысталі памылку пад назвай Heartbleed, якая была выяўлена ў бібліятэцы крыптаграфіі OpenSSL за некалькі месяцаў да ўзлому.

Heartbleed з'яўляецца прыкладам класа вектараў атакі, якія дазваляюць зламыснікам атрымаць доступ да мэты шляхам адпраўкі няправільных запытаў, дастаткова сапраўдных для праходжання папярэдняй праверкі. У той час як спецыялісты, якія працуюць над рознымі часткамі прыкладання, робяць усё магчымае, каб забяспечыць яго бяспеку, немагчыма прыдумаць усе кутнія выпадкі, якія могуць парушыць працу прыкладання або зрабіць яго ўразлівым падчас распрацоўкі.

Вось тут і ўваходзіць «пушчэнне».

Што такое Fuzzing Attack?

Фаззінг, фазз-тэставанне або фаззінгавая атака - гэта аўтаматызаваны метад тэсціравання праграмнага забеспячэння, які выкарыстоўваецца для падачы ў праграму выпадковых, нечаканых або несапраўдных даных (так званых фазз). Праграма кантралюецца на прадмет незвычайных або нечаканых паводзін, такіх як перапаўненне буфера, збоі, уцечкі памяці, завісання патокаў і парушэнні доступу для чытання/запісу. Затым для выяўлення прычыны незвычайных паводзінаў выкарыстоўваецца інструмент для размывання або фазер.

Фаззінг заснаваны на здагадцы, што ўсе сістэмы ўтрымліваюць памылкі, якія чакаюць выяўлення, і для гэтага можа быць дадзена дастаткова часу і рэсурсаў. Большасць сістэм маюць вельмі добрыя аналізатары або прадухіленне праверкі ўводу кіберзлачынствы ад выкарыстання любых гіпатэтычных памылак у праграме. Аднак, як мы згадвалі вышэй, ахапіць усе вуглавыя выпадкі падчас распрацоўкі складана.

Фаззеры выкарыстоўваюцца ў праграмах, якія прымаюць структураваны ўвод або маюць нейкую мяжу даверу. Напрыклад, праграма, якая прымае PDF-файлы, будзе мець некаторую праверку, каб пераканацца, што файл мае пашырэнне .pdf і аналізатар для апрацоўкі PDF-файла.

Эфектыўны фаззер можа генераваць уводныя дадзеныя, дастаткова сапраўдныя, каб пераадолець гэтыя межы, але дастаткова несапраўдныя, каб выклікаць нечаканыя паводзіны далей па праграме. Гэта важна, таму што проста магчымасць прайсці праверку не мае асаблівага значэння, калі не будзе прычынена далейшая шкода.

Фаззеры выяўляюць вектары атак, вельмі падобныя на такія, як ін'екцыя SQL, міжсайтавы сцэнар, перапаўненне буфера і атакі адмовы ў абслугоўванні. Усе гэтыя атакі з'яўляюцца вынікам падачы ў сістэму нечаканых, несапраўдных або выпадковых даных. 

 

Віды фуззераў

Фаззеры можна класіфікаваць па некаторых характарыстыках:

  1. Атакуйце мэты
  2. Метад стварэння пуха
  3. Усведамленне структуры ўводу
  4. Усведамленне структуры праграмы

1. Атакуйце мэты

Гэтая класіфікацыя заснавана на тыпе платформы, для тэставання якой выкарыстоўваецца фаззер. Фаззеры звычайна выкарыстоўваюцца з сеткавымі пратаколамі і праграмнымі праграмамі. Кожная платформа мае пэўны тып уводу, які яна атрымлівае, і, такім чынам, патрабуе розных тыпаў фаззераў.

Напрыклад, пры працы з праграмамі ўсе спробы фаззінгу адбываюцца на розных каналах уводу праграмы, такіх як карыстальніцкі інтэрфейс, тэрмінал каманднага радка, увод формаў/тэксту і загрузка файлаў. Такім чынам, усе ўваходныя дадзеныя, створаныя фаззерам, павінны адпавядаць гэтым каналам.

Фаззеры, якія працуюць з пратаколамі сувязі, павінны мець справу з пакетамі. Фаззеры, арыентаваныя на гэтую платформу, могуць ствараць падробленыя пакеты або нават выступаць у якасці проксі-сервераў, каб змяняць перахопленыя пакеты і прайграваць іх.

2. Метад стварэння Fuzz

Фаззеры таксама могуць быць класіфікаваны ў залежнасці ад таго, як яны ствараюць даныя, з якімі яны карыстаюцца. Гістарычна так склалася, што фазеры стваралі пух, генеруючы выпадковыя даныя з нуля. Так паступаў першапачаткова прафесар Бартан Мілер, ініцыятар гэтай методыкі. Гэты тып фузера называецца а генерацыйны фаззер.

Тым не менш, хаця тэарэтычна можна генераваць даныя, якія будуць абыходзіць мяжу даверу, для гэтага спатрэбіцца шмат часу і рэсурсаў. Таму гэты метад звычайна выкарыстоўваецца для сістэм з простымі структурамі ўводу.

Рашэннем гэтай праблемы з'яўляецца мутацыя даных, якія, як вядома, сапраўдныя, каб стварыць даныя, дастаткова сапраўдныя, каб прайсці мяжу даверу, але дастаткова несапраўдныя, каб выклікаць праблемы. Добрым прыкладам гэтага з'яўляецца а Фазер DNS які бярэ даменнае імя, а затым стварае вялікі спіс даменных імёнаў для выяўлення патэнцыйна шкоднасных даменаў, накіраваных на ўладальніка названага дамена.

Гэты падыход больш разумны, чым папярэдні, і значна звужае магчымыя перастаноўкі. Фаззеры, якія выкарыстоўваюць гэты метад, называюцца мутацыйныя фазеры

Існуе яшчэ трэці метад, які выкарыстоўвае генетычныя алгарытмы для атрымання аптымальных недакладных даных, неабходных для выкаранення ўразлівасцяў. Ён працуе, пастаянна ўдасканальваючы свае недакладныя даныя, прымаючы пад увагу прадукцыйнасць кожнага тэставага данага пры падачы ў праграму. 

Наборы даных з найгоршай прадукцыйнасцю выдаляюцца з пула даных, а найлепшыя мутуюць і/або аб'ядноўваюцца. Затым новае пакаленне даных зноў выкарыстоўваецца для тэставання фазз. Гэтыя фаззеры называюцца фузеры на аснове эвалюцыйных мутацый.

3. Усведамленне структуры ўводу

Гэтая класіфікацыя заснавана на тым, ці ўсведамляе і актыўна выкарыстоўвае фаззер структуру ўводу праграмы пры генерацыі дадзеных. А нямы fuzzer (фаззер, які не ведае пра структуру ўводу праграмы) стварае пух у асноўным выпадковым чынам. Гэта можа ўключаць у сябе фазеры як генерацыі, так і мутацыі. 


Калі фаззеру будзе прадастаўлена мадэль уводу праграмы, фаззер можа паспрабаваць згенераваць або змяніць дадзеныя так, каб яны адпавядалі прадстаўленай мадэлі ўводу. Такі падыход яшчэ больш скарачае колькасць рэсурсаў, затрачаных на стварэнне несапраўдных даных. Такі фузер называецца а разумны фузер.

4. Дасведчанасць аб структуры праграмы

Фаззеры таксама можна класіфікаваць у залежнасці ад таго, ці ведаюць яны пра ўнутраную працу праграмы, якую яны фаззінгуюць, і выкарыстоўваюць гэтую дасведчанасць, каб дапамагчы ў генерацыі даных фазз. Калі фаззеры выкарыстоўваюцца для тэсціравання праграмы без разумення яе ўнутранай структуры, гэта называецца тэсціраваннем чорнай скрыні. 

Дадзеныя Fuzz, атрыманыя падчас тэсціравання чорнай скрыні, звычайна з'яўляюцца выпадковымі, за выключэннем выпадкаў, калі фаззер з'яўляецца эвалюцыйна заснаваным на мутацыі фаззерам, дзе ён "навучаецца", кантралюючы эфект свайго фаззінга і выкарыстоўваючы гэта інфармацыя каб удакладніць набор даных fuzz.

З іншага боку, тэсціраванне белай скрыні выкарыстоўвае мадэль унутранай структуры праграмы для стварэння недакладных даных. Такі падыход дазваляе фаззеру дабрацца да важных месцаў у праграме і праверыць яе. 

Папулярныя інструменты Fuzzing

Ёсць шмат расплывістасці інструменты там выкарыстоўваецца тэсціроўшчыкамі ручак. Некаторыя з найбольш папулярных:

Абмежаванні фаззинга

Нягледзячы на ​​тое, што Fuzzing з'яўляецца сапраўды карысным метадам праверкі пяра, ён не пазбаўлены недахопаў. Некаторыя з іх:

  • Бег займае даволі шмат часу.
  • Збоі і іншыя нечаканыя дзеянні, выяўленыя падчас тэсціравання праграмы ў «чорнай скрыні», могуць быць складанымі, а то і немагчымымі для аналізу або адладжвання.
  • Стварэнне шаблонаў мутацый для разумных фаззераў на аснове мутацый можа заняць шмат часу. Часам гэта можа быць нават немагчыма з-за таго, што мадэль уводу з'яўляецца запатэнтаванай або невядомай.

 

Тым не менш, гэта вельмі карысны і неабходны інструмент для тых, хто хоча выявіць памылкі раней, чым зладзеі.

заключэнне

Фаззінг - гэта магутны метад тэставання пяра, які можна выкарыстоўваць для выяўлення ўразлівасцяў у праграмным забеспячэнні. Існуе шмат розных тыпаў фаззераў, і ўвесь час распрацоўваюцца новыя. Нягледзячы на ​​тое, што фаззінг з'яўляецца неверагодна карысным інструментам, ён мае свае абмежаванні. Напрыклад, фаззеры могуць знайсці вельмі шмат уразлівасцяў, і яны могуць быць вельмі рэсурсаёмістымі. Аднак, калі вы хочаце паспрабаваць гэтую дзіўную тэхніку на сабе, у нас ёсць бясплатны API DNS Fuzzer, які можна выкарыстоўваць на нашай платформе. 

Дык чаго ж вы чакаеце? 

Пачніце фаззінг сёння!