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

C++ JAVA
User avatar
anonimen
Много Редовен
Много Редовен
Posts: 1524
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 162
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Thu Jan 18, 2018 10:15 pm

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

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

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

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

User avatar
dakata__92
Шаман
Шаман
Posts: 3178
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 124

Post by dakata__92 » Thu Jan 18, 2018 10:20 pm

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

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

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

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

User avatar
dakata__92
Шаман
Шаман
Posts: 3178
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 124

Post by dakata__92 » Sat Jan 20, 2018 1:57 pm

Колеги, ако се предположи, че съм си драснал що годе добър начален скенер за PHP заплахи, за какво да се оглеждам в JS файловете? Как да процедирам с тях и по какви маркери според Вас е най-добре да се следи за външна намеса?

User avatar
Revelation
Потребител
Потребител
Posts: 780
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

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

Post by Revelation » Sun Jan 21, 2018 10:13 pm

dakata__92 wrote:Здравейте колеги! Реших да си създам скенер за възможни заплахи качени в сайта. В момента следя по разширението на файла и ако файла е 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 и т.н., които могат да се настройват по различни начини и някои дават по-голяма свобода за изплнение на доста различни видове скриптове, които рязко ще увеличат работата на скенера ти.

User avatar
dakata__92
Шаман
Шаман
Posts: 3178
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 124

Post by dakata__92 » Sun Jan 21, 2018 10:20 pm

Не влизам в обяснения, за да не се налага да раздувам излишно темата. Ще се ползва за сканиране на файлове в директории. Проверявам за много, наистина много неща и не е само за PHP файлове а в момента само върху тях акцентирах за да не обърквам колегите.

User avatar
Revelation
Потребител
Потребител
Posts: 780
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

Post by Revelation » Sun Jan 21, 2018 10:34 pm

Темата няма да се раздуе по никакъв начин излишно. Въпроса е защо ще го правиш това нещо и въобще ще има ли смисъл от него?

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

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

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

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

User avatar
dakata__92
Шаман
Шаман
Posts: 3178
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 124

Post by dakata__92 » Sun Jan 21, 2018 10:42 pm

Revelation wrote:Темата няма да се раздуе по никакъв начин излишно. Въпроса е защо ще го правиш това нещо и въобще ще има ли смисъл от него?

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

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

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

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

User avatar
Revelation
Потребител
Потребител
Posts: 780
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

Post by Revelation » Sun Jan 21, 2018 10:54 pm

Така вече е по-ясно за какво става въпрос. Прочетох цялата тема преди да пиша, но в нито един коментар не става ясно какво точно ще правиш.

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

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

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

User avatar
lam3r4370
Шаман
Шаман
Posts: 3424
Joined: Wed Aug 20, 2008 4:12 pm
Answers: 131
Contact:

Post by lam3r4370 » Mon Jan 22, 2018 4:16 pm


Post Reply