Что такое SCM (управление цепочками поставок)?
На самом фундаментальном уровне управление цепочками поставок (SCM) — это управление потоком товаров, данных и финансов, связанных с продуктом или услугой, от закупки сырья до доставки продукта в конечный пункт назначения.
Хотя многие люди приравнивают цепочку поставок к логистике, логистика на самом деле является лишь одним из компонентов цепочки поставок. Современные SCM-системы с цифровым управлением включают в себя обработку материалов и программное обеспечение для всех сторон, участвующих в создании продуктов или услуг, выполнении заказов и отслеживании информации, таких как поставщики, производители, оптовики, поставщики транспортных и логистических услуг, а также розничные продавцы.
Операции цепочки поставок охватывают такие аспекты, как закупка, управление жизненным циклом продукта, планирование цепочки поставок (включая планирование запасов и обслуживание активов и производственных линий предприятия), логистика (включая транспортировку и управление автопарком) и управление заказами. SCM может также распространяться на деятельность, связанную с глобальной торговлей, такую как управление глобальными поставщиками и многонациональные производственные процессы.
История SCM
Цепочки поставок существуют с древних времен, начиная с самого первого продукта или услуги, созданной и проданной. С началом индустриализации возможности SCM получили значительное развитие, что дало возможность компаниям эффективнее производить и поставлять товары и услуги. Например, стандартизация автомобильных запчастей Генри Форда изменила правила игры, что обеспечило массовому производству товаров возможность удовлетворить потребности растущей покупательской базы. Со временем постепенные изменения (такие как изобретение компьютеров) привели к появлению дополнительных возможностей в системах SCM. Однако в течение нескольких поколений SCM по существу оставалась линейной, изолированной функцией, которой управляли специалисты по цепочке поставок.
Интернет, технологические инновации и взрывное развитие глобальной экономики, определяемой спросом, изменили все. На сегодняшний день цепочка поставок уже не является линейной. Скорее, это сложный комплекс разрозненных сетей, которые доступы 24 часа в сутки. В центре этих сетей находятся потребители, которые ожидают, что их заказы будут выполнены вовремя и доставлены нужным способом.
Сейчас мы живем во времена беспрецедентного глобального бизнеса и торговли, не говоря уже о постоянных технологических инновациях и быстро меняющихся запросах заказчиков. Наилучшие на сегодняшний день стратегии цепочки поставок требуют модели управления, основанной на спросе, которая может успешно объединять людей, процессы и технологии с интегрированными возможностями для доставки товаров и услуг с недостижимой ранее скоростью и точностью.
Несмотря на то что SCM всегда было основой работы предприятия, цепочка поставок сегодня, как показатель успеха в бизнесе, важна как никогда ранее. Компании, которые могут эффективно управлять своей цепочкой поставок, адаптироваться к сегодняшней изменчивой и постоянно меняющейся технологической бизнес-среде, — это те компании, которые выживут и будут процветать в дальнейшем.
Индустрия 4.0 и управление цепочкой поставок
На данный момент применение радикально новых технологий в производстве было названо Индустрия 4.0, или «четвертой промышленной революцией». На этом последнем на сегодня этапе развития индустриализации такие технологии, как ИИ, машинное обучение, Интернет вещей, автоматизация и датчики, преобразуют способы производства, обслуживания и распространения новых продуктов и услуг. Можно сказать, что Индустрия 4.0 построена на цепочке поставок.
В Индустрии 4.0 способы, которыми предприятия применяют технологии в цепочке поставок, принципиально отличаются от того, как они применяли их в прошлом. Например, в рамках функции обслуживания предприятия обычно ждут, когда механизм сломается, и потом чинят его. Умные технологии изменили это. Теперь мы можем предсказать сбой до того, как он произойдет, и затем предпринять шаги, чтобы предотвратить его, чтобы цепочка поставок могла работать непрерывно. На сегодняшний день SCM основывается на использовании технологий, которые делают цепочку поставок и предприятия умнее.
Индустрия 4.0 — шаг за шагом
Узнайте много нового о четвертой промышленной революции, посмотрев вебинар по требованию «Пошаговое описание индустрии 4.0».
Индустрия 4.0 SCM также имеет значительное преимущество перед традиционным SCM, поскольку она обеспечивает согласованное планирование и выполнение, и в то же время гарантирует существенную экономию средств. Например, компании, работающие по модели «план производства», в которой производство продукции максимально тесно связано с потребительским спросом, должны составлять точные прогнозы. Это включает в себя обработку многочисленных входных данных, чтобы гарантировать, что то, что производится, будет соответствовать рыночному спросу, не превышая его, избегая накопления товара на складе и соответствующих убытков. Интеллектуальные решения SCM могут помочь одновременно удовлетворять потребности заказчиков и достигать финансовых целей.
Интеллектуальный SCM имеет и другие преимущества. Например, можно высвободить сотрудников цепочки поставок, чтобы они могли вносить более ценный вклад в бизнес. Более совершенные SCM-системы автоматизируют повседневные задачи и предоставляют профессионалам снабжения инструменты, необходимые для успешной доставки продуктов и услуг, на которые ориентирована их цепочка поставок.
Управление цепочкой поставок сегодня — значит знать о заказчике все, от А до Я
SCM исторически была ориентирована на повышение эффективности и снижение затрат. Эти потребности не изменились, изменилось другое: заказчик теперь играет ведущую роль в определении приоритетов SCM. Говорят, что взаимодействие с заказчиком живет и умирает в цепочке поставок.
Лояльность заказчиков основана на способности предприятия быстро и точно соответствовать их ожиданиям. Сырье, производство, логистика, а также управление торговлей и заказами должны быть скоординированы, чтобы доставить заказчику данный товар в разумные сроки. Для этого компаниям следует смотреть на свои цепочки поставок глазами своих заказчиков. Речь идет не просто о своевременной доставке заказа, все должно делаться в нужное время: до заказа, при его выполнении и после доставки.
Цепочки поставок и их потребность в гибкости
Сегодняшняя цепочка поставок широкая, объемная и постоянно развивается. А это означает, что она должна быть гибкой для сохранения своей эффективности. В прошлом цепочки поставок удовлетворяли потребности предприятий и заказчиков с помощью сквозной модели, которая была практически не подвержена изменениям. Сегодня покупатели теперь могут выбирать товары по-разному: в магазинах, Интернете и т. д. Они также ожидают все более индивидуализированного подхода. Гибкая цепочка поставок может оправдать эти ожидания.
Кроме того, снабжение цепочки поставок стало очень динамичным. Например, геополитические и экономические события могут существенно повлиять на производственную цепочку поставок. Если производитель нуждается в алюминии и не может получить его от одного поставщика из-за торговой политики, этот производитель должен иметь возможность быстро переключиться на другой источник алюминия. Возможность быстро перенастроить цепочку поставок очень важна для успешного решения сценариев такого типа. Гибкость имеет решающее значение для подобных изменений конфигурации поставок в реальном времени.
Проблемы в цепочке поставок выходят за рамки вопросов эффективности и управления затратами. Изменение обстоятельств также может повлиять на соответствие нормативным требованиям. Ваша система SCM должна быть достаточно гибкой, чтобы смягчать все воздействия, возникающие в результате изменений в цепочке поставок, включая постоянно меняющиеся разнообразные нормативные требования. Интеллектуальная SCM-система может помочь повысить эффективность и сократить расходы, при этом сохраняя совместимость с различными постоянно меняющимися юридическими требованиями.
Управление цепочкой поставок и облачные технологии
При сегодняшних требованиях к SCM облако является естественным союзником, в частности потому, что облачные приложения по своей природе гибче и легче адаптируются к изменениям. Очень трудно перенастроить локальные приложения и приложения собственной разработки в ответ на изменения обстоятельств, которые регулярно происходят в современной корпоративной среде, такие как неожиданная проблема с источником поставок. Кроме того, облачные решения основываются на архитектуре, которая органичнее может использовать технологии, что становится определяющим фактором в модели «Индустрия 4.0». Модернизация Вашей среды для работоспособности этих технологий в унаследованных приложениях будет сложной и дорогой.
Еще одно существенное преимущество интеграции облака в Вашу систему SCM заключается в том, что можно применять элементы облачных систем SCM в зависимости от конкретных потребностей бизнеса, не выполняя полномасштабных изменений. Многие компании обнаруживают, что им нужно срочно рационализировать свой переход в облако. Использование самых лучших SCM-систем поможет Вам извлечь больше пользы из текущих активов и настроить облачную интеграцию в соответствии с Вашими потребностями SCM как сейчас, так и в будущем.
Обеспечение отслеживаемости, обнаружение ложной информации и укрепление доверия с помощью технологии блокчейн
Следует знать, что происходит в каждом аспекте Вашей цепочки поставок в каждый момент времени. Интеллектуальные решения SCM дают Вам такую возможность. Когда Вы рассматриваете решения SCM, находите систему, которая использует технологию блокчейн. С ней Вам будет проще получать полные данные и использовать аналитику, поскольку эти средства интегрируются прямо в процессы SCM. Это обеспечивает прослеживаемость, помогает обнаруживать ложную информацию и укрепляет доверие во всей Вашей сети поставок.
Пищевая промышленность может особенно выиграть от SCM такого типа. Например, это помогло LiDestri Food and Drink управлять очень сложной цепочкой поставок, добиваясь повышения прозрачности, точности прогнозов при росте прибыльности и одновременном укреплении доверия между компанией и ее заказчиками.
Передовые системы SCM представляют собой комплексные пакеты решений, предназначенные для помощи в управлении цепочками поставок и их оптимизации как единой экосистемы. В качестве облачных технологий с полной интеграцией эти системы обеспечивают 100 % прозрачности цепочки поставок и возможность масштабирования в зависимости от ситуации на рынке. Современная цепь поставок, ориентированная на спрос, помогает соответствовать растущим ожиданиям заказчика, сокращать жизненные циклы продуктов и справляться с нестабильностью спроса.
Будущее SCM
Цепочка поставок будущего — это оперативность и взаимодействие с заказчиками, которые формируются как процессы в сети, а не в линейной модели. Каждый узел сети должен быть настроен так, чтобы гибко реагировать на запросы потребителя, а также учитывать такие факторы, как выбор нужного поставщика, торговая политика, способы доставки и многое другое.
Передовые технологии будут все чаще использоваться для повышения прозрачности и формирования полного представления о работе всей этой сети, а также для развития возможностей подключения и более эффективного использования SCM. Все инструменты планирования SCM должны стать более интеллектуальными, чтобы лучше учитывать запросы потребителей. Способность адаптироваться будет обязательным элементом.
В прошлом планирование цепочки поставок было периодическим элементом бизнеса. Но чем дальше в будущее, тем востребованней оно будет. Будущие системы SCM также обеспечат более тесную согласованность между планированием и исполнением, которая для большинства предприятий пока не достигнута. Потребность в скорости и точности в SCM будет только возрастать. Подготовьте свою цепочку поставок к будущему, добавив к ней поддержку интеллектуальной системой SCM.
Решение будущих проблем цепочки поставок уже сегодня
Интеллектуальные облачные SCM-решения Oracle помогут оставаться в числе лидеров по всем направлениям — от закупок, управления жизненным циклом продукта и планирования цепочки поставок до логистики и управления заказами.
Источник: www.oracle.com
Использование SCM для управления драйверами в C# реализованной с помощью dll на C++/cli
SCM — это сервер, реализованный в Windows, для удаленного управления сервисами (вызовом процедур).
Для того, чтобы запустить драйвер в Windows, ему в соответствие ставится сервис, который обеспечивает управление этим драйвером. Не путать с устройством, которое создает драйвер в системе, через которое происходит обмен сообщениями с драйвером. Это устройство создается уже после старта драйвера, а вот SCM обеспечивает само внесение драйвера в систему. С помощью SCM можно: добавлять, удалять, запускать или останавливать службы.
Постановка задачи
Написать буферный класс позволяющий упростить работу SCM в C#.
Сам внешний вид этого класса можно обознать очень просто:
public ref class ServiceControlManager : public IDisposable < public: ServiceControlManager(void); void AddDriver(String^ ServiceName, String^ BinaryPathName); void DeleteDriver(String^ ServiceName); void StartDriver(String^ ServiceName); void StopDriver(String^ ServiceName); protected: ~ServiceControlManager(); !ServiceControlManager(); private: SC_HANDLE SCMHandle; >;
Конструктор, деструктор, финализатор, основные методы, из атрибутов только HANDLE объекта SCM. Из этого следует, что экземпляр объекта этого класса будет содержать в себе созданный объект SCM, а методы упрощают с ним работу. Класс является буферным, и поскольку он реализован в C++/cli он будет автоматически масштабируем для работы в среде .NET, соответственно и в C#.
Решение проблемы с ошибками
Основная проблема работы с таким классом — это возвращение кодов ошибок, которые произошли в ходе работы SCM, которое желательно на самом первом этапе работы заменить на более привычные для .NET среды исключения. Для этого можно создать подобный класс:
[Serializable] public ref class KernelErrorException : Exception < public: KernelErrorException(void); virtual String^ ToString() override; property virtual String^ Message < String^ get() override; >; property virtual DWORD Errorsource < DWORD get(); >; private: DWORD errorsource; internal: KernelErrorException(DWORD Errorsource); >;
Как мы видим, экземпляр этого класса будет содержать, как атрибут только номер кода, который будет получен от GetLastError(). А при попытке привести экземлляр к типу System::String выведет полный текст описания сообщения средствами Windows.
Класс имеет два конструктора, первый — по умолчанию: сохраняет код ошибки при выполнении. Второй — получает код ошибки, как аргумент. Второй необходимо использовать в тех случаях, когда необходимо вызвать исключение, но перед этим выполнить какие-либо действия, после которых команда GetLastError() вернет не верные значения. Для этого сохраняется код ошибки, выполняются действия, затем вызывается исключение. Пример таких действий можно найти ниже: очиста PTR, исползуемой для маршалинга (PTR необходимо очистить до вызова исключения, т.к. вернуться к этому куску кода в дальнейшем не получится).
Реализация
KernelErrorException::KernelErrorException(void) < this->errorsource = GetLastError(); > KernelErrorException::KernelErrorException(DWORD Errorsource) < this->errorsource = Errorsource; >
При этом реализация методов будет самой, что ни на есть элементарной:
String^ KernelErrorException::Message::get() < LPTSTR message = NULL; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, this->errorsource, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) String^ messageString = gcnew String(message); LocalFree(message); return messageString; > DWORD KernelErrorException::Errorsource::get() < return this->errorsource; > String^ KernelErrorException::ToString() < return this->Message::get(); >
Память выделенную под SCM надо очищать
Вторая проблема работы с SCM в .NET: handle SCM не может жить долго, иначе это приведет к зависанию системы. Поэтому при использовании необходимо следить за тем, чтобы удалением занимался не сбощик мусора, а сам программист. Придется строго описать конструктор и финализатор, в деструкторе же, по логике Dispose-паттерна, вызывается финализатор [спасибо GraD_Kh]. В финализаторе описывается высвобождение unmanage объектов:
ServiceControlManager::ServiceControlManager(void) < this->SCMHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (!this->SCMHandle) throw gcnew KernelErrorException(); > ServiceControlManager::~ServiceControlManager() < this->!ServiceControlManager(); GC::SuppressFinalize(this); > ServiceControlManager. ServiceControlManager() < CloseServiceHandle(this->SCMHandle)); >
Основной функционал
Реализация всех методов очень проста, основа ее — это вызов конкретной соответствующей процедуры, но корректное выполнение обязательно нуждается во всех проверках на исключительные ситуации.
Реализация
void ServiceControlManager::AddDriver(String^ ServiceName, String^ BinaryPathName) < IntPtr serviceNamePtr = Marshal::StringToHGlobalUni(ServiceName); IntPtr binaryPathNamePtr = Marshal::StringToHGlobalUni(BinaryPathName); SC_HANDLE SCMHandleService = CreateService(this->SCMHandle, (LPCTSTR)serviceNamePtr.ToPointer(), (LPCTSTR)serviceNamePtr.ToPointer(), SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, (LPCTSTR)binaryPathNamePtr.ToPointer(), NULL, NULL, NULL, NULL, NULL); DWORD errorsource = GetLastError(); Marshal::FreeHGlobal(serviceNamePtr); Marshal::FreeHGlobal(binaryPathNamePtr); if (!SCMHandleService) throw gcnew KernelErrorException(errorsource); if (!CloseServiceHandle(SCMHandleService)) throw gcnew KernelErrorException(); > void ServiceControlManager::DeleteDriver(String^ ServiceName) < IntPtr serviceNamePtr = Marshal::StringToHGlobalUni(ServiceName); SC_HANDLE SCMHandleService = OpenService(this->SCMHandle, (LPCTSTR)serviceNamePtr.ToPointer(), SERVICE_ALL_ACCESS); DWORD errorsource = GetLastError(); Marshal::FreeHGlobal(serviceNamePtr); if (!SCMHandleService ) throw gcnew KernelErrorException(errorsource); if (!DeleteService(SCMHandleService)) throw gcnew KernelErrorException(); if (!CloseServiceHandle(SCMHandleService)) throw gcnew KernelErrorException(); > void ServiceControlManager::StartDriver(String^ ServiceName) < IntPtr serviceNamePtr = Marshal::StringToHGlobalUni(ServiceName); SC_HANDLE SCMHandleService = OpenService(this->SCMHandle, (LPCTSTR)serviceNamePtr.ToPointer(), SERVICE_ALL_ACCESS); DWORD errorsource = GetLastError(); Marshal::FreeHGlobal(serviceNamePtr); if (!SCMHandleService) throw gcnew KernelErrorException(errorsource); if (!StartService(SCMHandleService, 0, 0)) throw gcnew KernelErrorException(); if (!CloseServiceHandle(SCMHandleService)) throw gcnew KernelErrorException(); > void ServiceControlManager::StopDriver(String^ ServiceName) < IntPtr serviceNamePtr = Marshal::StringToHGlobalUni(ServiceName); SC_HANDLE SCMHandleService = OpenService(this->SCMHandle, (LPCTSTR)serviceNamePtr.ToPointer(), SERVICE_ALL_ACCESS); DWORD errorsource = GetLastError(); Marshal::FreeHGlobal(serviceNamePtr); if (!SCMHandleService) throw gcnew KernelErrorException(errorsource); SERVICE_STATUS serviceStatus; if (!ControlService(SCMHandleService, SERVICE_CONTROL_STOP, if (!CloseServiceHandle(SCMHandleService)) throw gcnew KernelErrorException(); >
Первый метод связывает sys файл с сервисом, добавляя этот сервис в систему. Второй — удаляет драйвер из системы, остальные две — запускают и останавливают сервис, соответственно.
Примеры использования в C#:
try < using (ServiceControlManager scm = new ServiceControlManager()) < scm.AddDriver(serviceName, filePath); scm.StartDriver(serviceName); scm.StopDriver(serviceName); scm.DeleteDriver(serviceName); >> catch (Exception ex)
Настройки при компиляции
Самое главное не забывать постояно использовать маршалинг между управляемой и не управляемой кучей. Напомню, для маршаллинга необходимо находится в пространстве имен:
using namespace System::Runtime::InteropServices;
Не забудьте прописать lib:
#pragma comment(lib, «Advapi32.lib»)
Настройки свойств при компилировании библиотеки:
Послесловие
Многие могут возразить, что подобный подход не имеет никакого смысла, и что гараздо проще в C# воспользоваться маршаллингом аргументов из стандартных библиотек. Но, на мой взгляд, мое решение является более гибким. И позволяет избавиться от несущественных переменных, подстраивая класс под себя. /Те, кто пробовал настроить DLLImport этих функций в x64 меня поймут. /
Источник: habr.com
Правильный уход. Обзор бесплатных инструментов от MS для прокачки безопасности Windows
Windows, развиваясь, постоянно обрастала новыми функциями и настройками, уследить за правильностью которых в динамичной среде не так уж и просто. Чтобы помочь админу, был создан целый ряд инструментов, упрощающих управление и позволяющих создать безопасную среду.
Security Compliance Manager (SCM)
Security Compliance Manager — бесплатный инструмент, разрабатываемый в Microsoft Solution Accelerators. Он позволяет быстро сконфигурировать компьютеры при помощи набора готовых групповых политик и пакетов конфигурации, созданных на основе рекомендаций руководства по безопасности Microsoft и различных best practices.
Большой плюс его в том, что он избавляет админа от чтения тонн документации и ошибок, ведь всегда можно пропустить что‑то важное. А так просто просматриваем, сравниваем и применяем рекомендуемые параметры безопасности. Кроме настройки ОС Win, поддерживается также IE, Echange Server и MS Office. О его возможностях скажет такой факт, что, например, только для IE доступно более 150 параметров.
Администратор может экспортировать и импортировать свои конфигурации в SCM, упрощая распространение настроек. Поддерживается и возможность применения установок для компьютеров, не входящих в домен.
Установка SCM очень проста, мастер самостоятельно инсталлирует все что нужно. Хотя .NET Framework 3.5 лучше поставить заранее при помощи диспетчера сервера — бывает, что мастер не всегда с этим справляется. В состав пакета входит SQL Server 2008 Express, но при наличии SQL Server можно использовать и его.
Далее SCM запустится автоматически и импортирует шаблоны Baseline Security, на что может уйти несколько минут. В последующем шаблоны можно импортировать автоматически или добавлять вручную. Интерфейс не локализован, но прост и понятен.
Начальная страница содержит несколько информационных областей, на которых представлены дополнительные ссылки и информация по дальнейшим действиям. Слева в панели находится дерево Baseline Library, в котором отображены все доступные базовые параметры, сгруппированные по продуктам. При выборе конкретного параметра в середине будет подробная информация: критичность, значение по умолчанию, рекомендация Microsoft и Customized, показывающий все изменения.
Базовые параметры менять нельзя, но щелчком по ссылке «Customize this settings . » или Duplicate можно сделать копию и ее изменить под свои условия. Все возможные действия доступны в панели Actions справа. Здесь находятся пункты для экспорта и импорта настроек, в подменю Baseline находим пункты, позволяющие сравнить/совместить, дублировать, удалить параметры. Реализован поиск, позволяющий быстро найти нужный по ключевым словам.
Кроме графической консоли, поставляется инструмент командной строки, позволяющий управлять локальными групповыми политиками компьютера, импортировать и экспортировать их. Все команды выполняются от имени администратора. Для экспорта локальных параметров с компьютера просто выполни команду
> LocalGPO. wsf / Path: c: G POBackup /Export
Чтобы установить параметры, следует указать идентификатор GUID нужного объекта GPO:
> LocalGPO. wsf / Path: c: G POBackup < 012345678- ABCDEFG >
Дополнительный параметр GPOPack позволяет объединять в один самораспаковывающийся файл все, что нужно для применения базовых параметров безопасности (не требует установки LocalGPO). Используя такой архив, можем быстро установить политики на новых ОС.
Microsoft Baseline Security Analyzer (MBSA)
MBSA предназначен для удаленного или локального сканирования, последующего анализа уязвимостей в системе и определения возможности их устранения. Ориентирован в первую очередь на повышение безопасности систем малых и средних предприятий, хотя вполне подходит и для домашнего использования.
Проверяет наличие рекомендованных к установке патчей для ОС и некоторых приложений: IIS, SQL Server, SharePoint, MS Office, Web Apps и других, а также уязвимость аккаунтов администраторов. Текущая версия 2.3 поддерживает все новые ОС Windows 8.1 и 2012 R2, об устаревших приложениях утилита, как правило, не знает. Для этого следует использовать более ранние релизы MBSA. Кроме графического интерфейса, доступна и утилита командной строки (Mbsacli.exe), которую можно запускать без установки MBSA (с флешки, например) и использовать в скриптах.
> mbsacli. exe / target webserver / u domain a dminuser /o results
Скачать MBSA можно по адресу. Установка очень проста. Интерфейс не локализован, но принцип работы понятен и без чтения документации. После запуска достаточно выбрать Scan a computer или Scan multiple computers, ввести имя или IP и выбрать параметры проверки.
После этого будут закачаны с Windows Update сведения о доступных обновлениях безопасности, и после сканирования будет построен отчет. Все найденные проблемы разбиты по категориям. Значок в поле Score показывает критичность, далее идет краткое описание и приводятся ссылки на решение How to correct this. Остается лишь все исправить и запустить сканирование повторно.
Enhanced Mitigation Experience Toolkit
EMET реализует 14 защитных техник, усложняющих атаки на Win-системы, блокируя уязвимости в ПО и изменяя поток выполнения кода. Для защиты используется техника inline patching кода защищаемых процессов, когда перехватываются и анализируются API-вызовы.
Ориентирован в первую очередь на устаревшие версии ОС и программы, которые по умолчанию не имеют таких механизмов. Среди поддерживаемых технологий: ASR, EAF/EAF+, DEP, SEHOP, NullPage Allocation, Heapspray Allocation, ASLR и Bottom Up ASLR. Плюс техники защиты от ROP-эксплойтов (Return Oriented Programming, обратно‑ориентированное программирование), позволяющих обходить защиту ALSR + DEP, передавая управление на определенный адрес, — Load Library Check, Memory Protection Check, Caller Checks, Simulate Execution Flow и Stack Pivot. Правда, стоит отметить, что не все ROP-технологии доступны для 64-битных процессов.
Для четырех технологий возможна активация для системы в целом (в области System Status) — DEP, SEHOP, ASLR и Certificate Trust. Остальные настраиваются персонально для приложений (в Configure Applications) и за некоторым исключением обычно активируются по умолчанию.
При нарушении защиты EMET останавливает процесс. С версии 4.0 появился дополнительный режим аудита (Audit Only), позволяющий при обнаружении проблемы фиксировать работу программы для дальнейшего анализа. Функция Local Telemetry позволяет сохранить дамп памяти в случае срабатывания процесса.
Некоторые из описанных технологий уже реализованы в ОС, но, как правило, защищают только системные объекты. Например, DEP (предотвращение выполнения данных), которая не позволяет приложению исполнять код из области памяти, помеченной как «только для данных», появилась еще в Windows XP SP2, но защищает только некоторые системные файлы.
Или Mandatory Address Space Layout Randomization (ASLR) позволяет рандомизировать адреса, в которые загружаются библиотеки, что усложняет написание эксплойтов. Для Win ASLR доступна с Vista, но защищает только компоненты ОС, при этом библиотеки загружаются в один из 256 базовых адресов (8 бит), что, в принципе, легко подобрать.
Для 64-битных Windows 8 это значение увеличено до 14–24 бит (для разных типов данных), то есть 16 384–16 777 216, но из‑за проблем с совместимостью ASLR отключена по умолчанию. Мandatory ASLR, реализованный в EMET, можно назвать «искусственным ASLR», так как он имеет на порядок меньшую энтропию, чем ASLR в ОС. В Bottom Up ASLR показатели энтропии несколько улучшены по сравнению с Мandatory ASLR. Но главное — активация DEP, ASLR и прочих технологий при помощи EMET позволяет обеспечить защиту для всех установленных приложений.
Технология Attack Surface Reduction (уменьшение области атак) позволяет ограничить работу приложений только в разрешенных Security Zones. Например, мы можем разрешить работу Flash, Java только во внутренней безопасной сети и блокировать при выходе в интернет. По умолчанию ASR активирована для IE и приложений MS Office. Активация функции фильтрации таблицы адресов экспорта (Export Address Table Filtering и EAF+ — появился в EMET с 5.0) дает возможность ограничить доступ к странице памяти системных библиотек только для разрешенных модулей (по умолчанию kernel32.dll, ntdll.dll, kernelbase.dll, список можно расширить) и блокировать доступ к таблицам для кода, который ранее использовался в атаках. После установки ЕAF включен для всех приложений, EAF+ для IE и Adobe.
Технология Certificate Trust (Pinning) доступна только для IE и позволяет защититься от подделок SSL/TLS-сертификата, предотвращая man-in-the-middle атаки. Для определенных веб‑ресурсов создаются правила проверки сертификатов, и при обнаружении расхождений выдается предупреждение, а соединение разрывается. Программа уже содержит профили для большинства популярных сервисов — ресурсов MS, MS Office 365, Skype, Facebook, Twitter и некоторых других.
Актуальная версия EMET 5.1 поддерживает работу в Windows Vista SP2 — 8.1, Windows Server 2003 SP2 — 2012 R2 (релиз 4.1 совместим и с Windows XP SP3). Установка обычно проблем не вызывает. В более ранних ОС потребуется установить .NET Framework 4 и обновление KB2790907 (для IE10 в Windows 8). Поддержка EMET заканчивается через 24 месяца после выпуска или через 12 месяцев после выпуска следующей основной версии, в зависимости от того, какое условие будет выполнено раньше.
Распространяется в виде MSI-файла, который можно установить вручную, при помощи групповых политик или диспетчера конфигураций System Center Configuration Manager. Во время установки предлагается выбрать профиль: рекомендуемые настройки безопасности (Use Recommended Setting) или оставить текущие настройки (Keep Existing Setting).
Фактически конфигурация профилей сохранена в одноименных XML-файлах. Интерфейс не локализован, но установки просты и понятны. Опции безопасности для программы устанавливаются флажком в таблице. Дважды щелкнув на имени процесса, можем посмотреть опции с минимальным разъяснением и указать для некоторых специфические установки (например, названия библиотек). Настройки путем экспорта/импорта легко переносятся на другую систему, поэтому сконфигурировать большое количество систем очень просто.
Отчетность отправляется в журнал Event Log — Application Log и выводится в панели задач, через компонент EMET Agent (значок можно спрятать).
Глубина анализа задается в Mitigation Setting при помощи трех флажков: Deep Hooks (перехват не только критических API, но и вызываемых ими функций), Anti Detours (блокировка эксплойтов, которые запускают копию функции и пропускают при этом первые байты API, передающие управление на следующие инструкции), Banned Functions (запрет вызова API-функций из специального списка, по умолчанию только ntdll!LdrHotPatchRoutine).
Конфигурация сохраняется в ветках реестра HKLMSOFTWAREMicrosoftEMET и HKCUSOFTWAREMicrosoftEMET. По умолчанию скрыты некоторые небезопасные настройки, их можно открыть, создав ключ EnableUnsafeSettings и установив его в 1. Все доступные UnsafeSettings описаны в документации, которая поставляется вместе с программой.
Кроме графического интерфейса, доступно управление из командной строки (EMET_Conf.exe). Получаем список функций:
> EMET_ Conf —list
> EMET_ Conf —list_system
Включаем SEHOP для блокнота (если опустить параметр, то будут включены все защитные механизмы):
Источник: xakep.ru
Диспетчер служб
Диспетчер управления службами (SCM) запускается при загрузке системы. Это удаленный сервер вызова процедур (RPC), поэтому конфигурации службы и программы управления службами могут управлять службами на удаленных компьютерах.
Функции службы предоставляют интерфейс для следующих задач, выполняемых SCM:
- Обслуживание базы данных установленных служб.
- Запуск служб и служб драйверов при запуске системы или по требованию.
- Перечисление установленных служб и служб драйверов.
- Обслуживание сведений о состоянии для запуска служб и служб драйверов.
- Передача запросов управления в запущенные службы.
- Блокировка и разблокировка базы данных службы.
В следующих разделах более подробно описывается SCM:
- База данных установленных служб
- Автоматическое запуск служб
- Запуск служб по запросу
- Список записей службы
- Дескрипторы SCM
Источник: learn.microsoft.com