Скенер за заплахи

.... още една, може би малко безумна идея, но защо не?

Да си направиш карта на цялата структура от директории, която да "заключиш" в immutable файл.

Може също да добавиш някакъв хеш, за да си сигурен че файлът не е променян (immutable може да се премахне от root-а).

A после към проверките ще правиш и сравнение на картата с реалността. Така ще си сигурен, че никой не е пипал нищо. (че не е добавял/триел файлове/директории. Можеш да си направиш и хеш на файловете ако искаш и съдържанието им да се проверява)
 
anonimen каза:
.... още една, може би малко безумна идея, но защо не?

Да си направиш карта на цялата структура от директории, която да "заключиш" в immutable файл.

Може също да добавиш някакъв хеш, за да си сигурен че файлът не е променян (immutable може да се премахне от root-а).

A после към проверките ще правиш и сравнение на картата с реалността. Така ще си сигурен, че никой не е пипал нищо. (че не е добавял/триел файлове/директории. Можеш да си направиш и хеш на файловете ако искаш и съдържанието им да се проверява)
Това го размишлявах доста, но да кажем, че вероятно повече ще ползвам кода в чужди проекти за бърз анализ на непозната за мен система. Искам да ме ориентира къде може да има възможен проблем по темата пък вече аз ще следя за другите неща. Така, че при мен отпада като варянт просто заради целите за, които ще ползвам кода. Като цяло това си е фрактално сравняване на директориите извеждане на разликите спрямо запаметеното във файла.
 
Колеги, ако се предположи, че съм си драснал що годе добър начален скенер за PHP заплахи, за какво да се оглеждам в JS файловете? Как да процедирам с тях и по какви маркери според Вас е най-добре да се следи за външна намеса?
 
dakata__92 каза:
Здравейте колеги! Реших да си създам скенер за възможни заплахи качени в сайта. В момента следя по разширението на файла и ако файла е PHP, то да се проверява за следните tokens:
T_BAD_CHARACTER,
T_START_HEREDOC,
T_END_HEREDOC,
T_CURLY_OPEN,
T_DECLARE,
T_EVAL,
T_DOLLAR_OPEN_CURLY_BRACES,
T_ELLIPSIS,
T_GOTO,
T_HALT_COMPILER,
T_INLINE_HTML,
T_STRING_VARNAME,
T_YIELD
Какво мислите по темата?

А защо ще се позволява качването на PHP файл? И защо, ако се качи файл трябва да е изпълним?
Я обясни отново идеята ти на този скенер, че сред всичките коментари, идеята започна да става объркваща.
Кой ще качва файловете, къде ще ги качва, защо ще ги качва? И в момента обръщаш внимание само на PHP. Ами, ако се качи Python скрипт? Той също може да бъде изпълнен. Там за какво ще следиш?

Разясни малко по-подробно идеята на скенера с примерни ситуации, в които искаш да го ползваш. Също и къде да го ползваш, защото от там започваме пък да разделяме на shared hosting, vps, cloud и т.н., които могат да се настройват по различни начини и някои дават по-голяма свобода за изплнение на доста различни видове скриптове, които рязко ще увеличат работата на скенера ти.
 
Не влизам в обяснения, за да не се налага да раздувам излишно темата. Ще се ползва за сканиране на файлове в директории. Проверявам за много, наистина много неща и не е само за PHP файлове а в момента само върху тях акцентирах за да не обърквам колегите.
 
Темата няма да се раздуе по никакъв начин излишно. Въпроса е защо ще го правиш това нещо и въобще ще има ли смисъл от него?

Ще опитам също така да си задам въпроса. Защо ще позволиш да се качи файла първо, а след това ще го проверяваш? Именно за това попитах как би се използвало това нещо.
Защото най-добрия вариант за това е файла да се проверява преди да се запише на системата. Разбира се, той се качва, но може да се ограничи с права само за четене докато го провериш и ако не ти хареса да не го записваш в системата.

И как и кой ще изпълнява файловете? Защото тука можеш да разпределяш правата и групите на файловете, за да не може всеки да ги изпълнява.

Съжалявам, че изисквам повече информация, но за мен така е по-объркващо.

Иначе, примерно кода на @Fakeheal. Ако не засечеш нито една буква или общия размер на файла, процента на буквите е под определен %, можеш да го считаш автоматично за зловреден, дори и да не е, даже не мисля, че трябва да минава проверка от теб.
 
Revelation каза:
Темата няма да се раздуе по никакъв начин излишно. Въпроса е защо ще го правиш това нещо и въобще ще има ли смисъл от него?

Ще опитам също така да си задам въпроса. Защо ще позволиш да се качи файла първо, а след това ще го проверяваш? Именно за това попитах как би се използвало това нещо.
Защото най-добрия вариант за това е файла да се проверява преди да се запише на системата. Разбира се, той се качва, но може да се ограничи с права само за четене докато го провериш и ако не ти хареса да не го записваш в системата.

И как и кой ще изпълнява файловете? Защото тука можеш да разпределяш правата и групите на файловете, за да не може всеки да ги изпълнява.

Съжалявам, че изисквам повече информация, но за мен така е по-объркващо.

Иначе, примерно кода на @Fakeheal. Ако не засечеш нито една буква или общия размер на файла, процента на буквите е под определен %, можеш да го считаш автоматично за зловреден, дори и да не е, даже не мисля, че трябва да минава проверка от теб.

Ако беше прочел по-нагоре, то щеше да разбереш, че кода който създавам не е с цел превенция при качване на файл. Говоря за сканиране на непозната за мен система. Дава ми се достъп до сайт качвам и сканирам системата с въпросният скенер и откривам потенциално слабите точки за първо време. От там нататъка поемам аз и решавам дали да премахна нещо, да го променя или друго.
 
Така вече е по-ясно за какво става въпрос. Прочетох цялата тема преди да пиша, но в нито един коментар не става ясно какво точно ще правиш.

"дава ми се проект, който да проверя" - от това нищо ясно няма.

От край време нямаш навика да даваш подробности, а го изискваш от другите. Особено за такива проблеми.

Та, все още ми стои идеята за буквите и примера на @Fakeheal. След като провериш за това, следва да провериш за ключови думи. Също е важно да проверяваш функции, които трият, създават, променят права и т.н. като chmod, chown, unlink и подобните. Срещнеш ли такива е важно да ги провериш какво точно правят.
 

Горе