Най-добрите пентестър инструменти за анализ на статичен код

Съдържанието на статията

Всеки от екипа на ][ има свои собствени предпочитания по отношение на софтуер и помощни програми за pentest. След като се посъветвахме, разбрахме: изборът е толкова различен, че можете да направите истински джентълменски набор от доказани програми. На това те решиха. За да не стане комбинирана смесица, целият списък е разделен на теми. Днес ще анализираместатичните кодови анализатори за търсене на уязвимости в приложенията, когато ръцете разполагат с техните изходни кодове.

Наличието на програмни изходни кодове значително опростява търсенето на уязвимости. Вместо да манипулирате сляпо различните параметри, които се предават на приложението, е много по-лесно да видите в сортирането как то се справя с тях. Да кажем, че ако данните от потребителя се предават без проверки и трансформации, те достигат до SQL заявката, имаме уязвимост от типа SQL инжекция. Ако стигнат до HTML изход, получаваме класически XSS. Необходим е статичен скенер за ясно откриване на такива ситуации, но за съжаление това не винаги е толкова лесно, колкото изглежда.

Съвременни компилатори

char*b; do b = (char*)_alloca(9) > докато (1)

Това е заслугата на статичния анализатор PREfast. Подобно на FxCop, за анализ на управляван код, PREfast първоначално беше разпространен като отделна помощна програма и едва по-късно стана част от Visual Studio.

RATS - Инструмент за груб одит за сигурност

Уебсайт: www.securesoftware.com Лиценз: GNU GPL Платформа: Unix, Windows Езици: С++, PHP, Python, Ruby

Грешка грешка - раздор. Някои от грешките, които програмистите правят, са некритични и заплашват само с нестабилността на програмата. Други, напротив, позволяват инжектиранеshellcode и изпълнява произволни команди на отдалечения сървър. Команди, които ви позволяват да извършвате буфер препълване и други подобни видове атаки са от особен риск в кода. Има много такива команди, в случай на C / C ++ това са функции за работа с низове (xstrcpy(), strcat(), gets(), sprintf(), printf(), snprintf(), syslog()), системни команди (access(), chown(), chgrp(), chmod(), tmpfile(), tmpnam(), tempnam(), mktemp()), както и команди за системно извикване (exec (), system(), popen()). Ръчното изследване на целия код (особено , ако се състои от няколко хиляди реда) е доста досадно. Това означава, че можете лесно да пренебрегнете прехвърлянето на някои функции на непроверени параметри. Задачата може да бъде значително улеснена от специални инструменти за одит, включително добре познатата помощна програмаRATS (Rough Auditing Tool for Security ) от известната компания Fortify. Той не само ще обработва успешно код, написан на C/C++, но също така ще може да обработва Perl, PHP и Python скриптове. В базата на помощната програма има впечатляваща селекция с подробно описание на проблемни места в кода. С помощта на анализатора тя ще обработи подавания към нея източник и ще се опита да идентифицира грешки, след което ще даде информация за откритите недостатъци.RATS работи чрез командния ред както под Windows, така и под *nix системи.

Уебсайт: www.yasca.org Лиценз: Open Source Платформа: Unix, Windows Езици: С++, Java, .NET, ASP, Perl, PHP, Python и др.

Уебсайт: cppcheck.wiki.sourceforge.net Лиценз: Отворен код Платформа: Unix, Windows Езици: C++

Уебсайт: www.justanotherhacker.com/projects/graudit.html Лиценз: Отворен код Платформа: Unix, Windows Езици: C++, PHP, Python, Perl

Този прост скрипткомбиниран с набор от сигнатури, ви позволява да намерите редица критични уязвимости в кода, като търсенето се извършва с помощта на добре познатата помощна програма grep. Тук е неуместно дори да споменаваме GUI интерфейса: всичко се извършва през конзолата. Има няколко ключа за стартиране, но в най-простия случай е достатъчно да посочите пътя към източниците като параметър:

Наградата за усърдие ще бъде цветен доклад за потенциално експлоатируеми места в кода. Трябва да кажа, че в допълнение към самия скрипт (а това е само 100 реда Bash код), базите данни със сигнатури, които съдържат regexp и имена на потенциално уязвими функции на различни езици, са ценни. По подразбиране са включени бази за Python, Perl, PHP, C++ - можете да вземете файлове от папката сигнатури и да ги използвате в собствените си разработки.

Уебсайт: www.owasp.org Лиценз: Отворен код Платформа: Unix, Windows Езици: Java, JSP, ASP .Net, PHP

Докато graudit използва текстови файлове, за да зададе сигнатурата на уязвимостта, тогаваSWAAT използва по-усъвършенстван подход, използвайки XML файлове. Ето как изглежда типичният подпис:

vuln match - регулярен израз за търсене; тип - показва вида на уязвимостта: сериозност - показва нивото на риск (високо, средно или ниско) алтернативен код за решаване на проблема

SWAAT чете базата данни със сигнатури и я използва, за да се опита да намери проблемни кодови секции в Java, JSP, ASP .Net и PHP източници. Базата се обновява постоянно и в допълнение към списъка с "опасни" функции включва типични грешки при използване на форматиране на низове и компилиране на SQL заявки. Трябва да се отбележи, че програмата е написана на C#, но работи добре и под niks, благодарение на проекта Mono - отворена реализация на платформата.net.

PHP скенер за грешки

  • изпълнение на код;
  • изпълнение на команди;
  • обхождане на директория;
  • глобални презаписване;
  • включват;
  • SQL инжекция;
  • разни.

Странно е, че програмата е написана на PHP/WinBinder и е компилирана с bamcompile, така че изглежда точно като обикновено приложение за Windows. Чрез удобен за потребителя интерфейс, pentester може да активира или деактивира анализ на кода за наличие на определени уязвимости.

Уебсайт: pixybox.seclab.tuwien.ac.at Лиценз: Безплатен софтуер Платформа: Unix, Windows Езици: PHP

Инструментът се основава на сканиране на изходния код и изграждане на графики на потоците от данни. Тази графика проследява пътя на данните, които идват извън програмата - от потребителя, от базата данни, от някакъв външен плъгин и т.н. Това изгражда списък с уязвими точки (или записи) в приложенията. С помощта на шаблони, описващи уязвимости, Pixy проверява такива точки и ви позволява да определите XSS и SQL уязвимости. Освен това, самите графики, които са изградени по време на анализа, могат да се видят в папката с графики (например xss_file.php_1_dep.dot) - това е много полезно, за да разберете защо точно този или онзи раздел от кода се счита за Pixy-уязвим. Като цяло, самата разработка е изключително образователна и демонстрира как работят усъвършенстваните помощни програми за статичен анализ на код. На страницата от документацията разработчикът ясно говори за различните етапи от работата на програмата, обяснява логиката и алгоритъма за това как този или онзи фрагмент от код трябва да бъде анализиран от програмата . Самата програма е написана на Java и се разпространява в отворени кодове, а на началната страница има дори проста онлайн услуга за проверкакод за XSS уязвимости.

Уебсайт: www.ouncelabs.com/products Лиценз: Shareware Платформа: Windows

Уви, съществуващите безплатни решения все още са малко по-ниски от търговските аналози. Достатъчно е да проучите качеството и детайлността на доклада, който еУнция 6 - и да разберете защо. Програмата е базирана на специална анализираща машина Ounce Core, която проверява кода за съответствие с правилата и политиките, изготвени от екип от професионални пентестери, които са натрупали опита на известни компании за сигурност, хакерската общност, както и стандартите за сигурност. Програмата открива различни уязвимости в кода: от препълване на буфера до SQL инжекции. Ако желаете, Ounce лесно се интегрира с популярни IDE, за да приложи автоматична проверка на кода по време на компилацията на всяка нова компилация на разработеното приложение. Между другото, компанията за разработка - Ounce Labs - беше закупена от самата IBM това лято. Така че продуктът вероятно ще продължи да се развива като част от едно от комерсиалните приложения на IBM.

Klocwork Insight

Уебсайт: www.klocwork.com Лиценз: Shareware Платформа: Windows Езици: C++, Java, C#

Дълго време този отново комерсиален продукт прилагаше статично сканиране на код само за C, C+ и Java. Но веднага щом излязоха Visual Studio 2008 и .NET Framework 3.5, разработчиците обявиха поддръжка за C#. Изпълних програмата на два от моите помощни проекти, които бързо написах на "sharp" и програмата разкри 7 критични уязвимости. Добре, че се пишат изключително за вътрешна употреба :).Klocwork Insight първоначално е конфигуриран да работи във връзка с IDE за разработка.Интеграцията със същото Visual Studio или Eclipse е изключително успешна - започвате сериозно да мислите, че такава функционалност трябва да бъде имплементирана в тях по подразбиране :). Оставяйки настрана проблемите с логиката на приложението и производителността,Klocwork Insight върши страхотна работа за намиране на препълвания на буфери, липсващо филтриране на персонализиран код, SQL/Path/Cross-site injection, слабо шифроване и т.н. Друг интересен вариант е да се изгради дърво за изпълнение на приложение, което ви позволява бързо да разберете общия принцип на приложението и отделно да проследите, например, обработката на всеки потребителски вход. А за бързо изграждане на правила за проверка на кода се предлага дори специален инструмент -Klocwork Checker Studio.

Coverity Предотвратяване на статичен анализ

Уебсайт: www.coverity.com/products Лиценз: Shareware Платформа: Windows Езици: C++, Java, C#

Един от най-известните статични кодови анализатори за C/C++, Java и C#. Според създателите му решението се използва от повече от 100 000 разработчици по целия свят. Обмислените механизми ви позволяват да автоматизирате търсенето на изтичане на памет, неуловени изключения, проблеми с производителността и, разбира се, уязвимости в сигурността. Продуктът поддържа различни платформи, компилатори (gcc, Microsoft Visual C++ и много други), а също така се интегрира с различни среди за разработка, предимно Eclipse и Visual Studio. Обхождането на кода не се основава на глупави алгоритми за преминаване от началото до края, а на нещо като програма за отстраняване на грешки, която анализира как програмата ще се държи в различни ситуации, след като се срещне разклонение. Така се постига 100% покритие на кода. Такъв комплексен подход беше необходим, наред с други неща, за пълен анализ на многонишкови приложения, специално оптимизирани за работа на многоядрени процесори.Центърът за интегритет на Coverity ви позволява да намирате грешки като условия на състезание (грешка в дизайна на многозадачна система, при която работата на системата зависи от реда, в който се изпълняват части от кода), блокирания и много други. Защо са необходими реверси? Попитайте разработчиците на 0day sploits за Firefox и IE :).

OWASP Code Crawler

Уебсайт: www.owasp.org Лиценз: GNU GPL Платформа: Windows Езици: Java, C#, VB