The Fraud Explorer tiene un agente antifraude para dispositivos Mac, tanto para su arquitectura Intel como para ARM. El desarrollo de este agente no fue para nada sencillo y en este artículo les contaremos por qué.
Objective-C es el lenguaje de programación estandar en MacOS. Fue elegido por Apple para el desarrollo de aplicaciones en todo su ecosistema de dispositivos.
Este lenguaje fue originalmente desarrollado por Brad Cox y Tom Love en los años 80 y tuvo su primer gran éxito cuando fue elegido por la empresa NeXT al desarrollar su sistema operativo NeXTSTEP. Debido a la relación tan estrecha de Apple con NeXTSTEP, el lenguaje Objective-C se promovió como su estándar para el desarrollo de aplicaciones.
El lenguaje usado por el agente
Para el desarrollo del agente antifraude tomamos Objective-C como el lenguaje de programación adecuado para la tarea. Ya conocíamos el lenguaje C desde hace muchos años y ahora nos tocaba aprender su variante para Apple.
Objective-C es un lenguaje de propósito general, con él se pueden desarrollar todo tipo de aplicaciones. Su principal característica es que es orientado a objetos (OOP) y que incorpora el estilo de programación Smalltalk al lenguaje C añadiéndole objetos primitivos que se podían invocar directamente sin el uso de librerías o paquetes externos.
Lo difícil de programar en Objective-C
Programar en Objective-C es por mucho más complicado que hacerlo en lenguajes más modernos. Es difícil conocer si hay un error, incluso de sintaxis, antes de compilarlo. El alto nivel de detalle lo hace un lenguaje no apto para novatos y su curva de aprendizaje es muy larga. Quizás una de las mayores dificultades es la poca socialización que existe de este lenguaje en las comunidades de desarrollo, esto significa que si tienes un problema, tu solito tienes que solucionarlo porque es poco probable que encuentres otra persona con ese mismo problema.
Arquitectura del agente
El desarrollo del agente inició cuando Apple había optado por la arquitectura Intel, sin embargo, en los últimos años al haber abandonado esa arquitectura y escoger ARM para sus productos, nos vimos en la necesidad de portarlo para que fuera compatible con ambos modelos. Todo el código del agente está escrito de tal forma que no es dependiente de la arquitectura del procesador debido a que no usamos librerías ni paquetes externos. El desarrollo del agente contiene 100% código nativo del lenguaje Objective-C.
Operación del agente antifraude
El agente, una vez instalado, está pendiente de las interacciones que una persona realice en las aplicaciones que fueron configuradas para su monitoreo. Suponiendo que Microsoft Teams está en la lista de aplicaciones a monitorear, lo que hace el agente es estar atento a cuando se abra esta aplicación para empezar a capturar los datos que transitan en ella. El código en Objective-C que desarrollamos para esta tarea fue:
NSString* getActiveWindow() {
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWID);
for (NSMutableDictionary* entry in (__bridge NSArray*)windowList) {
NSString* name = [entry objectForKey:(id)kCGWindowOwnerName];
NSNumber *windowLayer = [entry objectForKey:(id)kCGWindowLayer];
if ([windowLayer isEqualToNumber:[NSNumber numberWithInt:0]]) return name;
}
CFRelease(windowList);
return 0;
}
bool appsValidation(const char *activeApp) {
char appsInventory[1024];
int ret;
ret = GetIniKeyString("settings","onlyApps", appsInventory);
if (strcmp(appsInventory, "OnlyAppsAll") == 0) return true;
else if (strstr(appsInventory, activeApp) != NULL) return true;
else return false;
}
NSString *activeWindowTitle = getActiveWindow();
const char *activeAppTitle = [activeWindowTitle UTF8String];
Si en la variable activeWindowTitle se encuentra la entrada “Microsoft Teams” significa que es el momento adecuado para monitorear dicha ventana porque el usuario está interactuando con ella en ese preciso momento. Una vez que el agente determina que existe contenido semántico de valor para la prevención y detección del fraude, lo cifra y lo envía a la consola central para terminar de ser analizado por los algoritmos y las inteligencias artificiales de The Fraud Explorer.
Otras operaciones internas del agente
Internamente el agente contiene 1756 líneas de código. Esto es lo que hacen algunas de sus funciones, métodos, interfaces, clases y objetos:
- Guardado de logs: se creó un mecanismo para que cada operación tuviera un registro de auditoría, no solo para operaciones internas, sino para errores también.
- Comunicaciones TCP y UDP: para el envío de datos a bajo nivel desde el agente hacia la consola central. Aquí se manejan conversores de IP a FQDN y viceversa.
- El heartbeat: el mecanismo por el cual el agente está avisando en todo momento a la consola central que está vivo, además de enviarle información de valor como el usuario que lo está ejecutando, el nombre de máquina, la dirección IP y la versión del sistema operativo.
- Lo hilos de ejecución: se ejecutan las operaciones en multitarea. Esto significa que existen hilos que se encargan de varias tareas al mismo tiempo. Mientras que un hilo se encarga de monitorear las ventanas, el otro se encarga del heartbeat y el otro se encarga del envío de datos.
- Cifrado de datos: todos los datos almacenados localmente y que se envían a la consola central, son cifrados con AES-128. Cada dato de valor que se obtiene es cifrado con las llaves que se proporcionan desde la consola central.
El agente se ejecuta cuando arranca, al inicio de sistema operativo y se mantiene en segundo plano. A continuación indicaremos cómo se instala y desinstala para que tenga una idea de qué pasos debe seguir su equipo de tecnología.
Descarga del agente
En la consola central de The Fraud Explorer se entra al módulo de construcción de agentes y se selecciona la plataforma Apple MacOS. Una vez seleccionado se configuran los datos de la URL de ls instancia del cliente, la clave, las llaves de cifrado, las aplicaciones autorizadas para su monitoreo, el aviso de consentimiento, los días y horario de monitoreo y el puerto de comunicación.
Una vez descargado, tendremos un paquete PKG. Este paquete es el que se debe desplegarse en las máquinas del departamento objetivo de la organización. Existen dos formas de instalar el PKG, a través de un servicio como System Center o de forma individual, pasando por cada computador e instalando el PKG.
Instalación local del agente
Una vez descargado, tendremos un archivo endpointInstallerOSX.pkg. Este paquete es el que se debe desplegarse en las máquinas del departamento objetivo de la organización. Existen dos formas de instalar el PKG, a través de un servicio como System Center o de forma individual, pasando por cada computador e instalando el PKG.
Al dar doble clic en el paquete, MacOS mostrará una ventana de advertencia diciendo que el software no se puede instalar porque procede de un fabricante desconocido, por ello es necesario cerrar la ventana y entrar a la configuración del sistema operativo, System Preferences -> Security & Privacy y darle Open Anyway al paquete de instalación para que lo abra de nuevo.
Una vez completada la instalación, el agente crea esta estructura de archivos y carpetas en el sistema:
/Applications/BusinessAnalytics/bin/businessAnalytics
/Applications/BusinessAnalytics/etc/config.ini
/Applications/BusinessAnalytics/strError.log
/Applications/BusinessAnalytics/businessAnalytics.log
/Applications/BusinessAnalytics/InstallationFiles
/Applications/BusinessAnalytics/StdOut.log
/Users/loggedinuser/Library/LaunchAgents/businessAnalytics.plist
Desinstalación del agente
Para des-instalar el software se debe entrar a la terminal shell de MacOS, ubicado en el directorio de aplicaciones, y ejecutar el siguiente comando:
$ sudo sh /Applications/BusinessAnalytics/InstallationFiles/BusinessAnalytics/0.0.1/uninstall.sh
Permisos y seguridad
MacOS requiere que el binario ubicado en /Applications/BusinessAnalytics/bin/businessAnalytics, el ejecutable/bin/bash y /bin/zsh, se añadan a la lista de aplicaciones permitidas en System Preferences -> Security & Privacy -> Privacy -> Accessibility.
Referencias
(Wikipedia, 2024) El lenguaje Objective-C
Acerca de NOFRAUD
NOFRAUD es la compañía que desarrolla el software antifraude The Fraud Explorer y apoya a personas y empresas a enfrentar y solucionar sus retos en materia de fraude interno, corrupción y abuso corporativo. NOFRAUD ha creado la base de datos conductual de actos deshonestos más grande del mundo en Español e Inglés, que sirve para que la inteligencia artificial encuentre patrones sospechosos de corrupción al interior de las organizaciones.
Mejoramos la capacidad de las organizaciones incrementando sus beneficios, arrebatándole a los perpetradores la posibilidad de afectar negativamente los ingresos a través del fraude, la corrupción, el abuso corporativo y la generación de ambientes tóxicos.
Contacte conmigo en » jrios@nofraud.la y Visítenos en » www.nofraud.la.