IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Недекларированные возможности ПО
сообщение
Сообщение #1


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Есть какие-либо материалы по поиску недекларированных (для Юты: это пишется слитно!)) возможностей в ПО?

В сети очень мало информации, толком- ничего, только введение.
Хотелось бы узнать какие существуют методы поиска и анализа ПО.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Разжуй плиз поподробней что надо то, для нас, для бедных..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Имеется программа. Код ее доступен. Будем считать, что код написан в стиле только функционального программирования.
По ГОСТу, для этой программы есть 5 документов:
  • Спецификация (19.202-78)
  • Описание программы (19.402-78)
  • Описание применения (19.502-78)
  • Пояснительная записка (19.404-79)
  • Текст программы (19.401-78)

Как узнать, что программа не выполняет никаких вредоносных действий?
Ясно, что в описании программы может быть не указаны некоторые действия, они скрыты умышленно, и эти действия могут являться вредоносными.

Вопрос в том, какие методы есть обнаружения таких недокументированных (недекларированных) возможностей в ПО?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Я так понимаю - эвристический анализ нужен на предмет принадлежности программы к троянам smile.gif Копать в сторону разработки антивирусов и эмуляции выполнения кода. Или выполнение кода по VM со слежением за результатами работы.. Анализ результатов - попытка подловить код на выполнинии заранее известных тебе функций, заведомо названных недокументированными.. blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Не годится.
Эвристический анализ основан на том, что существуют какие-либо паттерны, используемые при написании троянов, вирусов и т.п.
Но у меня задача немного другая, заметь, у меня есть описание и сама система. Коротко если, то надо найти то, что не описано!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
Коротко если, то надо найти то, что не описано!

smile.gif Не все так просто... Смотри, простейший пример:

Описание: "... Функция нахождения минимального элемента вектора ..."
Что имеем:
function compare(a, b: integer): integer;
begin
{ ... }
end;

function get_min(V: vector): integer;
begin
min := maxint;
for i := 1 to n do
if compare(min, V[i]) < 0 then min := V[i];
get_min := min;
end;


compare - не описана... Однако используется в описанной функции. Но МОЖЕТ быть расценена и как недокументированная функция... Что делаем?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Имхо - нельзя найти то, не зная что.. Как вариант - найти карту покрытия кода (коряво выразился, но это то, к чему код обращался и который выполнялся после тестирования кода). Весь оставшийся код (т.е. не используемый по сути, но присутствующий) - подвергнуть анализу на предмет наличия некоего умысла..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Поскольку вредоносное действие скорее всего нацелено на диск (хотя и не обязательно), я бы попробовал отследить в первую очередь обращения к файловой системе. Если это виндусовый код - то и к реестру. Есть набор названий файлов (или ключей), которые для данной программы являются данными - их можно сразу отсечь, что облегчит поиск.

Но только если автор проги хороший программист, то спрятать обращение можно. Например, вредоносное действие может быть запланировано на один-едиственный момент в месяце - например, в 12:34:56 каждого 14-го числа. Тестирование проги в любой другой день ничего не выявит.. Название файла, естественно, тоже не хранится в коде, а раскодируется "на лету" с применением даты и времени как ключа.

Какой тут можно применить софт, сказать затрудняюсь..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Нет, вредоносное действие прежде всего нацеленно на отсылку данных, их порчу возможно.
Отслеживать по результату действия - это оценка по черному ящику, мы же имеем спецификацию, имеем фактически систему - белый ящик.
Поэтому абсолютно точно, мы можем выявить в системе все, что угодно

Цитата
compare - не описана... Однако используется в описанной функции.

Нет, это легко проверяется, в описании программы эта функция должна быть поисана (иначе просто сразу на лицо несоответствие ГОСТу и программу просто бракуем)


Что бы более точно приблизить к задаче приведу пример.
Допустим вы - военная организация.
Заказываете разработку некоторого ПО (например ОС)
Вам поставляют Линукс заточенный для ваших нужд.
Как вы сами понимаете, хоть вам и дали исходные коды - гарантии того, что в тысячах строк кода нет недекларированных возможностей просто нет! (а может все данные будут сливаться кому-нибудь?)
Конечно возможно провести ручную верификацию, но стоимость такой проверки будет высокой.
Вообще стоимость ручного поиска таких "фич" системы будет высокой.
Поэтому неплохо бы автоматизировать этот процесс, то, что пока не понятно как, не значит, что это невозможно!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


У военных есть своя версия ос. Лучший способ избежать троянов, не заказывать ничего важного сторонним разработчикам smile.gif Если это линукс, свои разработчики могут без спроса использовать любые общедоступные исходники. Есть вероятность что кто-то узнав о такой практике попытается скормить кривые исходники юзерам и программистам в надежде что они попадут и к военным. Но сделать это будет сложнее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


На сколько я знаю, современное коммерческое ПО разрабатывается таким образом, что для каждого модуля пишутся блочные тесты. А для подсистем - интегральные тесты. ЭТО - СТАНДАРТ, от этого не отходит ни один нормальный разработчик.

Т.о. чтобы выяснить - делает ли система то, что нужно, или занимается фигнёй, нам нужно прогнать тесты, запросив их у разработчика, а также написать их самим. Ибо ни одна более менее сложная система не разрабатывается в отрыве от заказчика - в диалоге с ним постоянно модифицируется спецификация софтины и т.п.

За что я люблю .NET, так это зато, что в ней реализовано 2 параллельные системы доступа. Это делегирование прав юзверя, и делегирование прав кода (код-зоны).
Если мы имеем подозрительный код - мы навешиваем ему жесткие атрибуты безопасности, типа запрета доступа к реестру и диску. И даже если этот код будет выполняться с правами админа, он никоем разом не сможет залезть в реестр или записать чегонить на диск. Такая вот магия....


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
На сколько я знаю, современное коммерческое ПО разрабатывается таким образом, что для каждого модуля пишутся блочные тесты. А для подсистем - интегральные тесты. ЭТО - СТАНДАРТ, от этого не отходит ни один нормальный разработчик.

Эге-гей, давай не будешь ты за все ПО отвечать!
АСУ в лучшем случае сопровождаются планом наката, документом по описанию доступа и руководствами администратора и пользователя... + различные документы для приемки (протокол приемо-сдаточных испытаний, общее описание системы и т.п.) а работают такие системы с вполне важными вещами, такими, как договора например, и используют такие системы вполне солидные компании (в том числе и банки)...
Цитата

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

Конечно, но заказчик следит за выполнением бизнес-требований а не подобных вещей...
Причем в лице заказчика обычно выступает штатный аналитик компании-заказчика.

а вот насчет последнего твоего заявления про .NET - это интересно... честно говоря поставлен в тупик т.к. я сторонник Java... пожалуй даже запрошу консультацию у знающих людей, поэтому постараюсь без ответа не оставить...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Цитата(Altair @ 25.04.2007 17:54) *
а вот насчет последнего твоего заявления про .NET - это интересно...
вот ссылочка Introduction to Code Access Security



--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Как здесь уже было сказано можно использовать "карту программы".
Конечно сложность проверки зависит от размера программы но мы имеем описание функций программы то есть некий тестовый набор. Предположим у нас есть следующая программа:
var 
i:byte;
begin
readln(i);
if i>=3 then i:=i+1;
case i of
1: writeln('1');
2: writeln('2');
3: writeln('Send data');
4: writeln('3');
....
end case;
end.

Строчка которую мы должны найти наглядна. Итак, как поступить? Обычно этот сенд дата выполняется не сразу, а при каком то условии, допустим то же условие времени. Некоторая проверка будет где то в программе. Как нам выявить этот кусок. Мы начинаем проходить трассировку кода используя возможные значения или большую их часть. Так проходя значения 1,2,3,4,5 ... мы выявим строчку к которой ни разу не было обращения за время тестирования.

Второй вариант. Мы опять же знаешь порты и файлы с которыми работает программа. Мы идем по коду обнаруживаем допустим строку
assign(f,s);
обращение к файлу идем чуть выше ищем откуда берется s, например, из поля ввода, значит все в порядке и мы пропускаем эту контрольную точку. Если находим что то вроде assign(f,'%windir%\system32\...') или же значение s в ходе отмотки назад остается не известным, или не совпадает с документированным, то следует отметить эту точку как потенциально опасную для ручной проверки.


--------------------
"Все что вы создаете, вы же и разрушаете.", В поисках разума.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Против грамотно написанного вин трояна трассировка наврят-ли поможет. Что-то абстрактно нехорошее чувствоваться будет, но конкретно... Вот как выявить уязвимость к вредоносной информации, а что сотворят будущие патчи и обновления системы? Это опять по новому всё проверять. Только полный доступ к исходникам широкого круга лиц и компиляция приложения самим пользователем, на своём компиляторе, даёт какую-то гарантию.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Если вам тупо нужно проверить программу на вредоносность - сдайте её в лабораторию касперского с их сайта - они бесплатно вам проверят всё чего она делает
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Цитата(Abit @ 16.08.2007 18:25) *
Если вам тупо нужно проверить программу на вредоносность - сдайте её в лабораторию касперского с их сайта - они бесплатно вам проверят всё чего она делает
Глупость какая.
Они на наличие известных вирусов в исполняемом файле проверяют, а не производят тестовое покрытие.


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


меркантильный
***

Группа: Пользователи
Сообщений: 161
Пол: Мужской

Репутация: -  6  +


Ребят, ну вы даете. Я прям не знаю....
Хоть я и не программист-профи, но если есть малейшее подозрение
программы на "м@довошки", то первое, что приходит в голову-её надо изолировать.
Даже не так, как предлагал hardcase-в особую среду, а просто-механически.
Не ставить её на комп, где храниться важная информация.
Ставить её на компьютер, НЕ подключенный к Интернету (вдруг она может его сканировать,
а затем куда-то сливать информацию?), вообще не завязанный ни в какую сеть, автономный.
Вот на нем-то и начинать её проверку. Это минимум компьютерной безопастности,
который должен знать любой пользователь.
(А уж на выключенном компьютере не один вирус не работает blum.gif ).

Сообщение отредактировано: Чужак -


--------------------
Смысл откроется тебе. Красками играя
Жизнь предстанет как поток без конца и края.


В этом мире порой разбиваютсямечты
Но чтобы он стал другой Вдруг в него приходишь ТЫ...

После странствий и скитаний настают другие времена.
Старая волна уходит и приходит новая волна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 14:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name