SlideShare a Scribd company logo
От ошибки до уязвимости…

         Алексей Синцов
          Digital Security
       twitter.com/asintsov
Программа…




             http://www.flickr.com/photos/lofink/4501610335/
Программа




            http://www.flickr.com/photos/lofink/4501610335/
Ошибка




         http://www.flickr.com/photos/lofink/4501610335/
Эксплуатация



                               Уязвимость



               Ошибка




                  http://www.flickr.com/photos/lofink/4501610335/
Кто ищет уязвимости ?




                  http://www.flickr.com/photos/rufo_83/3154516530/
Такие разные…
•   Переполнение буфера
•   Межсайтовый скриптинг
•   Инъекция SQL кода
•   Отсутствие авторизации
•   Ошибки логики
•   Обход аутентификации
•   И многое другое…..
Примеры. Идейные ошибки - 1




•   PepsiCo             •   Danon
•   Coca-Cola           •   Mercedes-Benz
•   Johnson & Johnson   •   Ford Motor
•   Lockheed Martin     •   Mazda Motor Corporation
•   McDonnell-Douglas   •   Heineken
•   Sony
Аутентификация
Атака
Эксплойт




XOR EAX, EAX
Где ошибка?
Производить аутентификацию
на стороне
клиента -
НЕправильно!
Примеры. Идейные ошибки - 2




     Kaspersky Administration Kit



Условия для атаки:
• Домен
• Учетная запись имеет
   права Локального Администратора
Сканирование и атака
Что делать?
Надо было
предусмотреть
возможность
SMBRelay!


Надо было лучше
документировать.
Примеры. Ошибки в коде - 1
       Отечественная система Банк-Клиент

ActiveX компонент для работы с ЭЦП:
Примеры. BoF
     Отечественная система Банк-Клиент
char* vuln(char *bufferOut, char *fileName){
  char *errorText="Ошибка при создании файла с именем ‘%1’.";

    while(!*errorText)
    {
      if(errorText=='%' && (errorText+1)<'9') // замена %1
      {
         strcpy(bufferOut,fileName); //errorText rewrite!
         bufferOut+=strlen(fileName); //увеличиваем указатель
         *errorText++;
      }
      *bufferOut++=*errorText++; //Stack overflow (errorText<bufferOut)
    }

    return *bufferOut;
}
Примеры. BoF
Что делать?
Проводить обзор кода.


Использовать
современный VS.

Использовать флаги
Защиты: /GS /SafeSEH
Примеры. Ошибки в коде - 2
     Lotus Domino Controller
Примеры. Ошибки в коде - 2
                          Аутентификация

   Пользователь -> {Login, Password, cookiefilename} -> Lotus Domino Controller




Имя файла на сервере Lotus с базой учетных записей и с хэшами паролей




                                                               © Patrik Karlsson and ZDI
Примеры. Ошибки в коде - 2
            Аутентификация


    File file = new File(cookieFilename);
     ...
     inputstreamreader = new InputStreamReader(new
                             FileInputStream(file), "UTF8");

      ...
     inputstreamreader.read(ac, 0, i);
     ...
     String s7 = new String(ac);
     ...
do {
        if((j = s7.indexOf("<user ", j)) <= 0)
       break;

        int k = s7.indexOf(">", j);
        if(k == -1)
               break;

     String s2 = getStringToken(s7, "user="", """, j, k);
             ...
     String s3 = getStringToken(s7, "cookie="", """, j, k);
             ...
     String s4 = getStringToken(s7, "address="", """, j, k);
      ...
      if(usr.equalsIgnoreCase(s2) && pwd.equalsIgnoreCase(s3)
     &&
         appletUserAddress.equalsIgnoreCase(s4))
      {
         flag = true;
         break;
      }
      ...
   } while(true);
Примеры. Ошибки в коде - 2
                         Обход аутентификации
echo ^ <user name=“admin" cookie=“dsecrg" address=“10.10.0.1"^> > n:domino2zdi0day_.txt
Что делать?
Проводить обзор кода.
Примеры. Исправление.
          Аутентификация


  File file = new File(“./”+cookieFilename);
   ...
   inputstreamreader = new InputStreamReader(new
                            FileInputStream(file), "UTF8");

    ...
   inputstreamreader.read(ac, 0, i);
   ...
   String s7 = new String(ac);
   ...
do {
        if((j = s7.indexOf("<user ", j)) <= 0)
       break;

        int k = s7.indexOf(">", j);              s7.substring(..)
        if(k == -1)
               break;

     String s2 = getStringToken(s7, "user="", """, j, k);
             ...
     String s3 = getStringToken(s7, "cookie="", """, j, k);
             ...
     String s4 = getStringToken(s7, "address="", """, j, k);
      ...
      if(usr.equalsIgnoreCase(s2) && pwd.equalsIgnoreCase(s3)
     &&
         appletUserAddress.equalsIgnoreCase(s4))
      {
         flag = true;
         break;
      }
      ...
   } while(true);
Новая атака
 cookie.xml
<?xml version="1.0" encoding="UTF-8"?>
<user name=“admin" cookie=“dsecrg"                 Valid
address=“10.10.0.1">


cookie2.xml.trash:
There is a good <user xml file!
andname=“admin”willbefound
as cookie=“dsecrg” andaddress=“10.10.0.1”hooray!
>and blah-blah-blah
Новая атака
 cookie.xml
<?xml version="1.0" encoding="UTF-8"?>
<user name=“admin" cookie=“dsecrg"                 Valid
address=“10.10.0.1">


cookie2.xml.trash:
There is a good <user xml file!
andname=“admin”willbefound
as cookie=“dsecrg” andaddress=“10.10.0.1”hooray!
>and blah-blah-blah
Новая атака
 cookie.xml
<?xml version="1.0" encoding="UTF-8"?>
<user name=“admin" cookie=“dsecrg"                 Valid
address=“10.10.0.1">


cookie2.xml.trash:
There is a good <user xml file!
andname=“admin”willbefound
as cookie=“dsecrg” andaddress=“10.10.0.1”hooray!
>and blah-blah-blah
Новая атака
 cookie.xml
<?xml version="1.0" encoding="UTF-8"?>
<user name=“admin" cookie=“dsecrg"                 Valid
address=“10.10.0.1">


cookie2.xml.trash:
There is a good <user xml file!
andname=“admin”willbefound
as cookie=“dsecrg” andaddress=“10.10.0.1”hooray!   Valid
>and blah-blah-blah
Демонстрация 0day
Что делать?
Проводить обзор кода.




Автоматизированных
средств не достаточно
PS.
WEB




Не XSS, не SQLi… что-то новое хотим!
Google docs
Как это выглядит?
 Пользователь.
Как это выглядит?
   Создатель.
Как атаковать?

Это же Exсel 

Засунем =A1+B1
Как атаковать?

Засунем %08=A1+B1




Yaaahooo!!
Уязвимость?
Уязвимость?
Где ошибка?
Проводить Фаззинг.




Анализировать
бизнес функции.
Как делать это правильно ?
• Анализировать логику и функционал с точки зрения угроз
   • UnitTests
• Анализировать код
   • Автоматически
   • В ручную, дополнительно, делать ревью кода
• Использовать технологии снижения рисков:
   • C/C++
       • /GS
       • /SafeSEH
       • /DinamicBase
   • WEB
       • HTTPOnly
       • Secure
       • X-Frame-options
• Анализ типовых угроз и best practices.
• Анализ ролевой модели
• Анализ схем СУБД
Как ищут?
Статический анализ
    • Source code review
        • regexp
        • формальные методы
        • руками…
    • Reverse Engineering
        • формальные методы
        • сигнатуры
        • руками…
Динамический анализ
    • Fuzzing (bin/web)
        + Типичные уязвимости для данного типа
        + Reverse Engineering
    • Руками…
Обзор архитектуры (логические ошибки)
Ошибки в 3rd party- в базе CVE
Автоматизация
    Fuzzers          Source Code
                     Analyzers

SQLMap
                  RATS
   Peach
                         Flawfinder
COMRaider
                    Yasca
  Sulley
Разработка




             (с) OWASP
Спасибо за внимание




    www.twitter.com/asintsov
      a.sintsov@dsec.ru
Пожалуйста, поставьте
 оценку моему докладу.

Ваше мнение очень важно.

        Спасибо!

More Related Content

PPTX
Тестирование уязвимостей веб приложений
PPTX
Sql инъекции в тестировании
PDF
Web осень 2013 лекция 2
PPTX
Web осень 2013 лекция 9
PPTX
Взломать сайт на ASP.NET
PPTX
Web осень 2013 лекция 5
PPT
Node.JS: возможности для РНР-разработчика
PDF
Подводные камни System.Security.Cryptography
Тестирование уязвимостей веб приложений
Sql инъекции в тестировании
Web осень 2013 лекция 2
Web осень 2013 лекция 9
Взломать сайт на ASP.NET
Web осень 2013 лекция 5
Node.JS: возможности для РНР-разработчика
Подводные камни System.Security.Cryptography

What's hot (19)

PPTX
А не поговорить ли нам о XSS!
PPTX
Web осень 2013 лекция 8
PDF
Web осень 2013 лекция 3
PDF
Web осень 2013 лекция 6
PPTX
тестирование защищенности веб приложений
PDF
Этичный хакинг
PPT
PDF
Web осень 2013 лекция 1
PPTX
Прикладная теория Application Security
DOC
PT MIFI Labsql
PPT
PT MIFI Labsql
PPTX
Web осень 2013 лекция 7
PPT
Advanced Sql Injection
PPTX
Александр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтов
PPTX
Подводные камни прикладной криптографии, I
PPTX
Философия Application Security
PPTX
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
PPTX
Метапрограммирование с примерами на JavaScript
PDF
JavaScript Базовый. Занятие 08.
А не поговорить ли нам о XSS!
Web осень 2013 лекция 8
Web осень 2013 лекция 3
Web осень 2013 лекция 6
тестирование защищенности веб приложений
Этичный хакинг
Web осень 2013 лекция 1
Прикладная теория Application Security
PT MIFI Labsql
PT MIFI Labsql
Web осень 2013 лекция 7
Advanced Sql Injection
Александр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтов
Подводные камни прикладной криптографии, I
Философия Application Security
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Метапрограммирование с примерами на JavaScript
JavaScript Базовый. Занятие 08.
Ad

Viewers also liked (20)

PPTX
Roman Zdebskiy - Client vs. Browser
PDF
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
PPTX
Как сделать интернет-сайт на SharePoint и не передумать на полпути
PPTX
Референсная архитектура приложения на ASP.NET MVC
PPTX
Синяя Борода. История одного проекта.
PPTX
Roman Zdebskiy - Windows Azure
PPTX
Проектирование архитектуры приложений
PDF
Dmitry Zavalishin. Successful it-project - where can it fail
PPTX
Alexander Serbul - Development and administration through testing - cloud ser...
PDF
Sign Me Up
PPTX
Alexander Burt - Inside of 2D-graphics
PPTX
Victor Kuzmin - How to organize service development for several mobile platforms
PDF
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
PPTX
Производительность и энергопотребление мобильных приложений на примере Window...
PPTX
Построение индекса по иерархии записей в реляционной БД
PPT
Banana Shelf Life Testing
PPTX
DOC
Asad C.V
PPTX
ObjectXPathNavigator - как и зачем?
PPT
(Eng) How Social Media Worked In #24godyny project (Updated)
Roman Zdebskiy - Client vs. Browser
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Как сделать интернет-сайт на SharePoint и не передумать на полпути
Референсная архитектура приложения на ASP.NET MVC
Синяя Борода. История одного проекта.
Roman Zdebskiy - Windows Azure
Проектирование архитектуры приложений
Dmitry Zavalishin. Successful it-project - where can it fail
Alexander Serbul - Development and administration through testing - cloud ser...
Sign Me Up
Alexander Burt - Inside of 2D-graphics
Victor Kuzmin - How to organize service development for several mobile platforms
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
Производительность и энергопотребление мобильных приложений на примере Window...
Построение индекса по иерархии записей в реляционной БД
Banana Shelf Life Testing
Asad C.V
ObjectXPathNavigator - как и зачем?
(Eng) How Social Media Worked In #24godyny project (Updated)
Ad

Similar to Alexei Sintsov - "Between error and vulerability - one step" (20)

PDF
OWASP: безопасное программирование на PHP.
PPT
Информационная безопасность и web-приложения
PPTX
Secure development
PPT
Безопасность CMS
PPTX
Информационная безопасность в веб - основы
PPTX
разработка безопасного кода
PPTX
Vipolnenie komand na servere
PDF
Pt devteev-risspa
PPT
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
PPT
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
PPT
Безопасность веб-приложений сегодня
PDF
Безопасность интернет-приложений осень 2013 лекция 5
PPT
Безопасность
PPT
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
PPTX
Информационная безопасность весна 2013 лекция 4
PDF
Как обеспечить безопасность клиентских сайтов
PPTX
безопасность
PPT
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
PDF
Земсков - Как обеспечить безопасность клиентских сайтов в процессе оказания у...
PDF
Е. Фиделин Безопасность Drupal сайтов
OWASP: безопасное программирование на PHP.
Информационная безопасность и web-приложения
Secure development
Безопасность CMS
Информационная безопасность в веб - основы
разработка безопасного кода
Vipolnenie komand na servere
Pt devteev-risspa
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
Безопасность веб-приложений сегодня
Безопасность интернет-приложений осень 2013 лекция 5
Безопасность
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
Информационная безопасность весна 2013 лекция 4
Как обеспечить безопасность клиентских сайтов
безопасность
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Земсков - Как обеспечить безопасность клиентских сайтов в процессе оказания у...
Е. Фиделин Безопасность Drupal сайтов

Alexei Sintsov - "Between error and vulerability - one step"