
El motor de monitorización de actividad del sistema más potente del mundo · Un potente kit de desarrollo de defensa de recopilación de comportamiento de terminal ~ diseñado para ayudar a los software de seguridad de terminal como EDR, confianza cero, seguridad de datos, control de auditoría, etc., a implementar rápidamente funciones de producto sin preocuparse por el desarrollo, mantenimiento y problemas de compatibilidad del controlador subyacente, permitiéndoles centrarse en el desarrollo empresarial.
iMonitorSDK es un kit de desarrollo que proporciona monitorización del comportamiento del sistema para la seguridad en endpoints y la nube.
Está diseñado para ayudar a aplicaciones industriales como seguridad, gestión de endpoints y auditoría a implementar rápidamente las funciones necesarias sin preocuparse por el desarrollo, mantenimiento y compatibilidad de los controladores del kernel, permitiéndoles centrarse en el desarrollo de negocio.
iMonitorSDK utiliza un marco de comunicación basado en protocolos de mensajes para hacer que el desarrollo de controladores sea más estable y rápido. Toda la monitorización se implementa de manera estable y estándar, y es compatible con Windows desde XP hasta Win11. También se planea la compatibilidad con Linux y MacOS.
Con iMonitorSDK, puede implementar autoprotección, interceptación de procesos, defensa contra ransomware, defensa activa, gestión de comportamiento en Internet y otras funciones de seguridad de endpoints a un costo muy bajo.
Monitorización en tiempo real de procesos, archivos, registro y red, con soporte de interceptación y bloqueo
Protección de procesos, archivos y registro
Interceptación de inicio de procesos, carga de módulos e inyección de módulos
Interceptación y redirección de archivos
Cortafuegos de red, proxy de tráfico, análisis de protocolos
Motor de reglas, soporte de scripts
Ejemplo 1: Interceptación de inicio de proceso
class MonitorCallback : public IMonitorCallback
{
public:
void OnCallback(IMonitorMessage* Message) override
{
if (Message->GetType() != emMSGProcessCreate)
return;
cxMSGProcessCreate* msg = (cxMSGProcessCreate*)Message;
//
// Bloquear el inicio del proceso con nombre cmd.exe
//
if (msg->IsMatchPath(L"*\\cmd.exe"))
msg->SetBlock();
}
};
int main()
{
MonitorManager manager;
MonitorCallback callback;
HRESULT hr = manager.Start(&callback);
if (hr != S_OK) {
printf("start failed = %08X\n", hr);
return 0;
}
cxMSGUserSetMSGConfig config;
config.Config[emMSGProcessCreate] = emMSGConfigSend;
manager.InControl(config);
WaitForExit("Bloquear el inicio del proceso con nombre cmd.exe");
return 0;
}
Ejemplo 2: Autoprotección
class MonitorCallback : public IMonitorCallback
{
public:
void OnCallback(IMonitorMessage* Message) override
{}
};
int main()
{
MonitorManager manager;
MonitorCallback callback;
HRESULT hr = manager.Start(&callback);
if (hr != S_OK) {
printf("start failed = %08X\n", hr);
return 0;
}
manager.InControl(cxMSGUserEnableProtect());
{
cxMSGUserAddProtectRule rule;
rule.ProtectType = emProtectTypeProcessPath | emProtectTypeFilePath;
wcsncpy(rule.Path, L"*\\notepad.exe", MONITOR_MAX_BUFFER);
manager.InControl(rule);
}
{
cxMSGUserAddProtectRule rule;
rule.ProtectType = emProtectTypeFilePath;
wcsncpy(rule.Path, L"*\\protect>", MONITOR_MAX_BUFFER);
manager.InControl(rule);
}
{
cxMSGUserAddProtectRule rule;
rule.ProtectType = emProtectTypeRegPath;
wcsncpy(rule.Path, L"*\\iMonitor>", MONITOR_MAX_BUFFER);
manager.InControl(rule);
}
{
cxMSGUserAddProtectRule rule;
rule.ProtectType = emProtectTypeTrustProcess;
wcsncpy(rule.Path, L"*taskkill*", MONITOR_MAX_BUFFER);
manager.InControl(rule);
}
WaitForExit("SelfProtect");
manager.InControl(cxMSGUserRemoveAllProtectRule());
manager.InControl(cxMSGUserDisableProtect());
return 0;
}
Ejemplo 3: Sysmon
class MonitorCallback : public IMonitorCallback
{
public:
void OnCallback(IMonitorMessage* msg) override
{
printf("%S ==> %S\n", msg->GetTypeName(), msg->GetFormatedString(emMSGFieldCurrentProcessPath));
for (ULONG i = emMSGFieldCurrentProcessCommandline; i < msg->GetFieldCount(); i++) {
printf("\t%30S : %-30S\n", msg->GetFieldName(i), msg->GetFormatedString(i));
}
}
};
int main()
{
MonitorManager manager;
MonitorCallback callback;
HRESULT hr = manager.Start(&callback);
if (hr != S_OK) {
printf("start failed = %08X\n", hr);
return 0;
}
cxMSGUserSetMSGConfig config;
for (int i = 0; i < emMSGMax; i++) {
config.Config[i] = emMSGConfigPost;
}
manager.InControl(config);
WaitForExit("");
return 0;
}

Ejemplo 4: Control de acceso a Internet (basado en redirección de red, compatible con https, consulte el ejemplo http_access_control para más detalles)

Se pueden encontrar más ejemplos en el directorio de ejemplos.