Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.03.2014, 16:27
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию сканер php-shell

Добрый день!
Народ подскажите, я хочу написать сканер php-shell, но незнаю как мне находить его среди php скриптов.
Написал такой сканер на основе MD5 сигнатур и базой данных, но если shell изменить немного, то программа его уже ненаходит.
Скажите как лучше огранизовать сканирование так, чтобы программа всегда находила нужный файл? Использовать HEX-сигнатуры?
Ответить с цитированием
  #2  
Старый 03.03.2014, 19:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Уже пару дней веду переписку на эту тему:
Цитата:
Цитата:
Сообщение от JeReK5542
ето я знаю, но как сделать незнаю, в файле впринципе можно любую строчку изменить и будет работать, поэтому как быть незнаю

Ну что, мне лезть разбираться что-такое php-shell??? Просто какие-то конкретные команды php? Ну так и искать их (без тех частей, которые могут меняться).

Скачал, посмотрел. Так что ты конкретно хочешь находить? Файл на локальном компе или все-таки на удаленных сайтах (типа, стоить ли там эта фигня)?

собственно, если файл локальный, то можно попробовать искать набор некоторых функций (имен). Можнт давать ложные срабатывания, но если грамотно написать, то можно такой поиск обновлять без перекомпилирования основного модуля.
Ответить с цитированием
  #3  
Старый 03.03.2014, 20:20
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

мне нужно просто создать базу данных из php-shell, а потом каждый файл проверять с базой данных както так
а файлы находяться на ПК где и сама программа
Ответить с цитированием
  #4  
Старый 03.03.2014, 22:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну набирай файлы и считай MD5, например.
Но я бы пошел по пути анализа содержимого файлов, как эвристика в антивирусе. Тогда не надо будет затачиваться на точное соотв. конкретного файла его контрольной сумме.
Ответить с цитированием
  #5  
Старый 03.03.2014, 22:32
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

да я уже написал программу, которая ищет вредоносный код по базе используя MD5 сигнатуры.
В php-shell'ах можно выставлять пароль для использования скрипта, поетому если пароль изменить, то уже такой php-shell не найдет по базе данных, так что MD5 сигнатуры не то что нужно
Ответить с цитированием
  #6  
Старый 03.03.2014, 23:17
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

MD5 чего считается? Скрипта? То есть текстового файла? Если да - хочешь, я за 10 минут сделаю 10 000 новых недетектящихся файлов? (шучу, это подсудное дело; хотя делается элементарно).
Если бинаря, но целиком - то же самое.
Антивирусы не от хорошей жизни делаются здоровенными продуктами с эвристическими и поведенческими анализаторами, деобфускаторами, анпакерами, декрипторами и т.д. и т.п.

Опиши подробно, что ты понимаешь под php-shell, где там вредоносный код, откуда берется и куда кладется, в каком виде он находится.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 03.03.2014, 23:42
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Вот я прикрепил php-shell к сообщению, только формат файла изменил с ".php" на ".txt".
Программа получает MD5 сумму файла и сверяет с базой данных, если есть така MD5 сумма файла в базе данных, то shell найден.
В скрипте есть переменная
PHP код:
$password "password"
Если я изменю код так:
PHP код:
$password "pass123456"
то MD5 сумма файла уже будет другая и в итоге в базе данных его нету, и программа не сможет определить, что это php-shell, а нужно чтобы определяло и чтобы к примеру значение переменной я изменил, но программа всеравно определяло файл как вредоносный код
Вложения
Тип файла: txt Shell_v0_7.txt (17.1 Кбайт, 10 просмотров)
Ответить с цитированием
  #8  
Старый 03.03.2014, 23:57
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Интересно, как тебе вообще пришла в голову такая идея.
А что если я после первой скобки в файле поставлю пробел? А что если после второй? А что если после обеих? А что если поменяю имена переменных простейшей регуляркой на какой-нибудь бред вида a, b, c и так далее? И создам миллионы файлов с различными случайными именами переменных? А если где-нибудь лишние скобки поставлю? А если удалю переносы строки? Еще можно и шифрование вспомнить. А если я все это скомбинирую? Правильно, получим полное множество возможных MD5 файлов от 00000000000000000000000000000000 до FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF. Что ж теперь, все файлы в мире считать вредоносными?
Такая методика совершенно лишена всяческого смысла. Что касается малварщиков - уж поверь, они мастаки писать ботов для клепания рандомизированных отполиморфенных файлов, особенно когда речь идет о тексте.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 04.03.2014 в 00:02.
Ответить с цитированием
  #9  
Старый 04.03.2014, 00:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я уже писал раньше, что лучше сделать простенький эвристический анализатор. Например, по ключевым словам + сигнатура php-файла + набор функций внутри файла (важных) или кусков их тел, которые характерны для php-shell.
Ответить с цитированием
  #10  
Старый 04.03.2014, 00:02
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

я знаю, поетому прошу помощи, как сделать, чтобы определяло php-shell?
Ответить с цитированием
  #11  
Старый 04.03.2014, 00:04
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

никак не разберусь, как все это осуществить в delphi
Ответить с цитированием
  #12  
Старый 04.03.2014, 00:04
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Сообщение от lmikle
Я уже писал раньше, что лучше сделать простенький эвристический анализатор. Например, по ключевым словам + сигнатура php-файла + набор функций внутри файла (важных) или кусков их тел, которые характерны для php-shell.
Проблема в том, что все эти скрипты запросто шифруются и декриптуются "на лету". А сам декриптор может быть закриптован еще чем-то или динамически генериться для каждой инфекции. А есть еще всякие ништяки (там про JS, но на php думаю можно не хуже извернуться).
На мой взгляд полезней всего какой-нибудь honeypot или эмулятор. Подробности в гугле, интерпретаторы PHP есть в виде исходников, я уверен.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 04.03.2014 в 00:12.
Ответить с цитированием
  #13  
Старый 04.03.2014, 00:19
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

обьясните пожалуйста по подробней и как же всетаки найти незашифрованный скрипт?
Ответить с цитированием
  #14  
Старый 04.03.2014, 00:55
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я уже сказал ключевые слова для поиска. Если прям уверен, что скрипт всегда будет не зашифрован (хотя делается шифровка элементарно, и работать он будет прямо в таком виде), то надо сделать приведение скрипта к общему виду (как - как считаешь нужным, например можно все имена, кроме API, снести нафиг, заменив одинаковыми символами, оставить только значения, удалить все пробелы и переносы, лишние операции и т.д.), после чего нанять десяток аналитиков, которые будут находить и добавлять в базу новые скрипты (которые будут появляться очень часто). Ну и разумеется аналитики не будут детектить файл целиком, а только какие-то ключевые части.
Если же хочешь, чтоб была хоть какая-то примитивная защита от новых угроз - эмулятор. На интерпретаторе php. И... пяток аналитиков для анализа новых скриптов и добавления детекта по ним.
Не, можно конечно и эвристикой заморочиться, но не думаю, что с такими знаниями она хоть как-то заработает. Да эмулятор, собственно, тоже...
[advertisment]Поэтому пользуйтесь антивирусными продуктами![/advertisment]
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 04.03.2014 в 01:06.
Ответить с цитированием
  #15  
Старый 04.03.2014, 01:07
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

дайте хотябы пример, как обнаружить вот етот файл:
Вложения
Тип файла: txt Shell_v0_7.txt (17.1 Кбайт, 10 просмотров)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter