Проверка целостности процесса в памяти? - PullRequest
1 голос
/ 21 августа 2011

Это выглядит как будто невозможно помешать решительным злоумышленникам изменить свой код / ​​данные процесса. Я надеюсь, что по крайней мере возможно обнаружить такое вмешательство.

В Windows можно ли прослушивать инъекции DLL , WriteProcessMemory и CreateRemoteThread в текущий процесс?

В Linux возможно ли прослушивать LD_PRELOAD и руткит DR ?

Ответы [ 2 ]

1 голос
/ 21 августа 2011

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

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

Выполнение вашего кода внутри собственной виртуальной машины, которая, в свою очередь, обменивается данными с остальной частью системы через гипервизор ... гипервизор, конечно, должен быть сделан загрузчиком системы, чтобы ОС была просто " ребенок "вашего гипервизора ... должен сделать свое дело ... хотя вам придется написать все это самостоятельно и убедиться, что у него нет уязвимости, которую можно использовать (почти наверняка никто не сможет сделать это для такого сложного программного обеспечения) ...

не знаю, с чем вы столкнулись, но пока HW + SW, на котором работает ваш код, не находится под вашим полным контролем, всегда есть способ сделать то, о чем вы говорите, и при некотором планировании избежать обнаружения тоже ...

ИЛИ это «только» о защите от программного пиратства / обращения? Если так, то есть некоторые меры, даже приблизительно 100% безопасные, хотя все это касается баланса безопасности и удобства использования ...

0 голосов

Да, как определить, является ли LD_PRELOAD вредоносным или нет?Что насчет ptrace?/ DEV / [K] П?Как насчет того, когда один процесс устанавливает вредоносный плагин или что-то похожее в папку каталога конфигурации другого процесса?А как насчет совместного использования памяти / IPC?

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

Теоретически невозможно обнаружить подделку памяти процесса.На практике это зависит от того, как вы определяете обнаружение, и какие ложные срабатывания и ложные отрицания вас волнуют.

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

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

Вы также можете просто сканировать весь процесс снова и снова, проверяя сумму в памяти, используябезопасный алгоритм хеширования.Опять же, если у вражеского процесса есть права на изменение вашего сканера, вы теряете.

Так что, да, если у процесса нет привилегий для подрыва вашего сканера, почему у него есть права на изменение вашего процесса?около?Для меня это звучит как антивирус / античит / DRM.

...