{"id":13726,"date":"2024-12-28T20:28:12","date_gmt":"2024-12-28T19:28:12","guid":{"rendered":"https:\/\/www.palentino.es\/blog\/?p=13726"},"modified":"2024-12-28T20:41:53","modified_gmt":"2024-12-28T19:41:53","slug":"rastreo-de-dispositivos-usb-conectados-y-envio-de-informacion-a-un-servidor-central-desde-powershell-a-un-servidor-rest","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/rastreo-de-dispositivos-usb-conectados-y-envio-de-informacion-a-un-servidor-central-desde-powershell-a-un-servidor-rest\/","title":{"rendered":"Rastreo de dispositivos USB conectados y env\u00edo de informaci\u00f3n a un servidor REST desde Powershell"},"content":{"rendered":"<p data-pm-slice=\"1 1 []\">En muchos entornos empresariales y de IT, es crucial <strong>rastrear los dispositivos USB conectados<\/strong> a los equipos para asegurar la seguridad de la red y mantener un registro centralizado. Este rastreo permite prevenir fugas de datos mediante la detecci\u00f3n temprana de <strong>dispositivos no autorizados,<\/strong> que podr\u00edan ser utilizados para copiar informaci\u00f3n sensible. Asimismo, ayuda a identificar posibles intentos de introducir <strong>malware a trav\u00e9s de dispositivos USB infectados<\/strong>, lo que podr\u00eda comprometer seriamente la infraestructura tecnol\u00f3gica. Por ejemplo, en industrias reguladas, como la financiera o la de salud, el rastreo de dispositivos es un requisito esencial para cumplir con normativas de seguridad y garantizar la integridad de los datos.<\/p>\n<p data-pm-slice=\"1 1 []\">Afortunadamente, existen herramientas y m\u00e9todos para automatizar esta tarea. En esta entrada, exploraremos diversas soluciones, desde software especializado hasta scripts personalizados en <strong>PowerShell<\/strong> que permiten <strong>enviar la informaci\u00f3n de dispositivos USB a un servidor central<\/strong>. Tambi\u00e9n veremos c\u00f3mo configurar el script para ejecutarse al iniciar Windows, y destacaremos las mejores pr\u00e1cticas para proteger la infraestructura de IT de posibles vulnerabilidades relacionadas con el uso de dispositivos extra\u00edbles.<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-13726-1\" width=\"640\" height=\"360\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/palentino.es\/videos\/RastreoUSB.mp4?_=1\" \/><a href=\"https:\/\/palentino.es\/videos\/RastreoUSB.mp4\">https:\/\/palentino.es\/videos\/RastreoUSB.mp4<\/a><\/video><\/div>\n<p data-pm-slice=\"1 1 []\"><!--more--><\/p>\n<h4 data-pm-slice=\"1 1 []\">1. <strong>Herramientas de Gesti\u00f3n de Dispositivos USB<\/strong><\/h4>\n<h5><a href=\"https:\/\/www.usbradar.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #53075e;\"><strong>USB Device Tracker<\/strong><\/span><\/a><\/h5>\n<p>Una herramienta especializada para monitorear y rastrear dispositivos USB conectados en una red. Permite registrar:<\/p>\n<ul data-spread=\"false\">\n<li>ID del dispositivo.<\/li>\n<li>Fecha y hora de conexi\u00f3n\/desconexi\u00f3n.<\/li>\n<li>Tipo de dispositivo.<\/li>\n<\/ul>\n<p>Es ideal para implementaciones empresariales donde se requiere un monitoreo continuo. Adem\u00e1s, su capacidad para generar reportes detallados permite a los administradores de IT analizar patrones de uso y detectar posibles amenazas.<\/p>\n<h5><a href=\"https:\/\/www.nirsoft.net\/utils\/usb_devices_view.html\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #53075e;\"><strong>USBDeview (NirSoft)<\/strong><\/span><\/a><\/h5>\n<p>Una herramienta ligera que lista todos los dispositivos USB conectados y previamente conectados. Aunque no env\u00eda la informaci\u00f3n directamente a un servidor, puedes integrarla con scripts personalizados para automatizar esta tarea. Su interfaz intuitiva permite una r\u00e1pida identificaci\u00f3n de dispositivos sospechosos o no autorizados, lo que la convierte en una herramienta \u00fatil para auditor\u00edas peri\u00f3dicas.<\/p>\n<div>\n<hr \/>\n<\/div>\n<h4 data-pm-slice=\"1 1 []\">2. <strong>Soluciones Empresariales Integradas<\/strong><\/h4>\n<h5><a href=\"https:\/\/www.ninjaone.com\/endpoint-management\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #53075e;\"><strong>Endpoint Management Software<\/strong><\/span><\/a><\/h5>\n<p>Herramientas como <strong>Microsoft Endpoint Manager<\/strong>, <strong>ManageEngine Endpoint Central<\/strong> o <strong>Ivanti<\/strong> permiten rastrear y registrar dispositivos USB conectados a los equipos. Estas soluciones pueden enviar los registros a un servidor centralizado o generar reportes automatizados, lo que facilita la gesti\u00f3n de pol\u00edticas de seguridad y asegura que los equipos cumplan con las normativas de la organizaci\u00f3n.<\/p>\n<h5><span style=\"color: #53075e;\"><strong>SIEM (Security Information and Event Management)<\/strong><\/span><\/h5>\n<p>Sistemas como <strong>Splunk<\/strong> o <strong>Elastic Stack<\/strong> pueden configurarse para recolectar eventos relacionados con conexiones USB y enviarlos a una base de datos o servidor central, proporcionando alertas en tiempo real. Estas plataformas integran an\u00e1lisis avanzados que permiten identificar patrones sospechosos, como accesos recurrentes en horarios inusuales o conexiones a dispositivos no autorizados, lo que fortalece la ciberseguridad.<\/p>\n<p>&nbsp;<\/p>\n<h2 data-pm-slice=\"1 1 []\">3. <strong>Script Personalizado para Rastreo USB<\/strong><\/h2>\n<p>Si prefieres una soluci\u00f3n personalizada, puedes desarrollar un script en PowerShell que detecte los dispositivos USB conectados y env\u00ede la informaci\u00f3n a un servidor central. Este enfoque es especialmente \u00fatil en entornos donde las herramientas empresariales no son viables o se requiere flexibilidad adicional.<\/p>\n<pre><span style=\"color: #333399;\"># Detectar dispositivos USB<\/span>\r\n<span style=\"color: #333399;\">Get-WmiObject Win32_DiskDrive | Where-Object { $_.InterfaceType -eq \"USB\" } | ForEach-Object {<\/span>\r\n<span style=\"color: #333399;\">[PSCustomObject]@{<\/span>\r\n<span style=\"color: #333399;\">DeviceID = $_.DeviceID<\/span>\r\n<span style=\"color: #333399;\">Model = $_.Model<\/span>\r\n<span style=\"color: #333399;\">Serial = (Get-WmiObject Win32_PhysicalMedia | Where-Object { $_.Tag -eq $_.DeviceID }).SerialNumber<\/span>\r\n<span style=\"color: #333399;\">}<\/span>\r\n<span style=\"color: #333399;\">} | ConvertTo-Json | Invoke-RestMethod -Uri \"http:\/\/servidorcentral\/api\/usblog\" -Method Post<\/span><\/pre>\n<p>&nbsp;<\/p>\n<p data-pm-slice=\"1 1 []\">Este script detecta los dispositivos USB conectados y env\u00eda la informaci\u00f3n en formato JSON a un servidor central mediante una API REST. Puedes personalizarlo para agregar m\u00e1s atributos de los dispositivos o mejorar la gesti\u00f3n de errores.<\/p>\n<h2 data-pm-slice=\"1 1 []\">4. <strong>Implementar el API REST<\/strong><\/h2>\n<p>Para recibir los datos enviados desde el script PowerShell, puedes implementar un servidor sencillo utilizando <strong>Python<\/strong> y el framework <strong>Flask<\/strong>. A continuaci\u00f3n, se detalla el proceso:<\/p>\n<h5><strong>C\u00f3digo del API REST<\/strong><\/h5>\n<pre><span style=\"color: #008000;\">from flask import Flask, request, jsonify<\/span>\r\n\r\n<span style=\"color: #008000;\">app = Flask(__name__)<\/span>\r\n\r\n<span style=\"color: #008000;\"># Ruta para recibir datos USB<\/span>\r\n<span style=\"color: #008000;\">@app.route('\/api\/usblog', methods=['POST'])<\/span>\r\n<span style=\"color: #008000;\">def log_usb_data():<\/span>\r\n<span style=\"color: #008000;\">data = request.get_json() # Datos enviados en JSON<\/span>\r\n<span style=\"color: #008000;\">if not data:<\/span>\r\n<span style=\"color: #008000;\">return jsonify({\"error\": \"No se enviaron datos\"}), 400<\/span>\r\n\r\n<span style=\"color: #008000;\"># Guardar los datos en un archivo local<\/span>\r\n<span style=\"color: #008000;\">with open(\"usb_log.txt\", \"a\") as log_file:<\/span>\r\n<span style=\"color: #008000;\">log_file.write(f\"{data}\\n\")<\/span>\r\n\r\n<span style=\"color: #008000;\">return jsonify({\"message\": \"Datos recibidos correctamente\"}), 200<\/span>\r\n\r\n<span style=\"color: #008000;\">if __name__ == '__main__':<\/span>\r\n<span style=\"color: #008000;\">app.run(host='0.0.0.0', port=5000)<\/span><\/pre>\n<p>&nbsp;<\/p>\n<h3 data-pm-slice=\"1 1 []\"><strong>Pasos para Implementar<\/strong><\/h3>\n<ol start=\"1\" data-spread=\"false\" data-pm-slice=\"3 3 []\">\n<li>Instala <strong>Flask<\/strong> en tu entorno de <strong>Python<\/strong>:\n<pre><strong>pip install flask<\/strong><\/pre>\n<\/li>\n<li>Guarda el c\u00f3digo anterior en un archivo llamado<strong> server.py<\/strong>.<\/li>\n<li>Ejecuta el servidor con:\n<pre><strong>python server.py<\/strong><\/pre>\n<\/li>\n<li>El servidor estar\u00e1 disponible en <strong>http:\/\/&lt;IP_DEL_SERVIDOR&gt;:5000\/api\/usblog<\/strong> y comenzar\u00e1 a recibir los datos enviados por el script PowerShell.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h4 data-pm-slice=\"1 3 []\">5. <strong>Configurar el Script para Ejecutarse al Iniciar Windows<\/strong><\/h4>\n<p>Para que el script PowerShell se ejecute autom\u00e1ticamente al iniciar Windows, puedes usar el <strong>Programador de Tareas<\/strong> o un acceso directo en la carpeta de inicio. Esto asegura que el monitoreo comience sin intervenci\u00f3n manual cada vez que se reinicia el sistema.<\/p>\n<h5>Usando el Programador de Tareas:<\/h5>\n<ol start=\"1\" data-spread=\"false\">\n<li>Abre el Programador de Tareas (<strong>Task Scheduler<\/strong>).<\/li>\n<li>Haz clic en <strong>Crear Tarea<\/strong>.<\/li>\n<li>Configura lo siguiente:\n<ul data-spread=\"false\">\n<li><strong>General<\/strong>:\n<ul data-spread=\"false\">\n<li>Nombre: &#8220;Rastreo USB&#8221;.<\/li>\n<li>Marca la opci\u00f3n <strong>Ejecutar con los privilegios m\u00e1s altos<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Desencadenadores<\/strong>:\n<ul data-spread=\"false\">\n<li>Crea un desencadenador con el evento <strong>Al iniciar sesi\u00f3n<\/strong> o <strong>Al iniciar el sistema<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Acciones<\/strong>:\n<ul data-spread=\"false\">\n<li>Acci\u00f3n: <strong>Iniciar un programa<\/strong>.<\/li>\n<li>Programa o script:<strong> powershell.exe<\/strong>.<\/li>\n<li>Agrega los argumentos:\n<pre><strong>-NoProfile -ExecutionPolicy Bypass -File \"C:\\ruta\\del\\script.ps1\"<\/strong><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Guarda y habilita la tarea.<\/li>\n<\/ol>\n<h5 data-pm-slice=\"1 1 []\">Usando la Carpeta de Inicio:<\/h5>\n<ol start=\"1\" data-spread=\"false\">\n<li>Crea un archivo <strong>.bat<\/strong> que ejecute tu script:\n<pre><strong>powershell.exe -NoProfile -ExecutionPolicy Bypass -File \"C:\\ruta\\del\\script.ps1\"<\/strong><\/pre>\n<\/li>\n<li>Copia este archivo <strong>.bat <\/strong>en la carpeta de inicio de Windows:\n<pre><strong>%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup<\/strong><\/pre>\n<\/li>\n<\/ol>\n<div>\n<hr \/>\n<\/div>\n<h3 data-pm-slice=\"1 1 []\"><strong>Recomendaciones de Seguridad<\/strong><\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li><strong>Protecci\u00f3n del Servidor<\/strong>:\n<ul data-spread=\"false\">\n<li>Aseg\u00farate de que el servidor que recibe los datos est\u00e9 protegido detr\u00e1s de un firewall.<\/li>\n<li>Configura autenticaci\u00f3n mediante claves o tokens si implementas una API REST para evitar accesos no autorizados.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Ejecuci\u00f3n del Script<\/strong>:\n<ul data-spread=\"false\">\n<li>Usa una pol\u00edtica de ejecuci\u00f3n limitada para evitar scripts maliciosos:\n<pre><strong>Set-ExecutionPolicy RemoteSigned<\/strong><\/pre>\n<\/li>\n<li>Incluye un sistema de logs local para registrar eventos en caso de que falle la conexi\u00f3n con el servidor.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Auditor\u00edas Regulares<\/strong>:\n<ul data-spread=\"false\">\n<li>Revisa los registros generados por el script o las herramientas integradas para identificar anomal\u00edas y reforzar la pol\u00edtica de seguridad.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<div>\n<hr \/>\n<\/div>\n<h3><strong>Impacto y Reflexi\u00f3n Final<\/strong><\/h3>\n<p>Implementar un sistema de rastreo y monitoreo de dispositivos USB es una tarea esencial en entornos corporativos. Estas herramientas no solo ayudan a prevenir accesos no autorizados, sino que tambi\u00e9n fortalecen la ciberseguridad al detectar posibles vulnerabilidades y garantizar el cumplimiento normativo. Al contar con un registro centralizado y automatizado, los equipos de IT pueden responder r\u00e1pidamente ante incidentes y garantizar la integridad de la red. Adem\u00e1s, estas soluciones permiten mejorar la visibilidad de las actividades relacionadas con dispositivos extra\u00edbles, lo que contribuye significativamente a mantener una infraestructura de IT m\u00e1s segura y robusta.<\/p>\n<p>Con este enfoque, puedes automatizar tanto el registro como el env\u00edo de informaci\u00f3n a un servidor central, integrando la ciberseguridad en cada punto de la operaci\u00f3n tecnol\u00f3gica de tu organizaci\u00f3n.<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Palentino-animado.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12805\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Palentino-animado.gif\" alt=\"\" width=\"206\" height=\"317\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En muchos entornos empresariales y de IT, es crucial rastrear los dispositivos USB conectados a los equipos para asegurar la seguridad de la red y mantener un registro centralizado. Este rastreo permite prevenir fugas de datos mediante la detecci\u00f3n temprana de dispositivos no autorizados, que podr\u00edan ser utilizados para copiar informaci\u00f3n sensible. Asimismo, ayuda a identificar posibles intentos de introducir malware a trav\u00e9s de dispositivos USB infectados, lo que podr\u00eda comprometer seriamente la infraestructura tecnol\u00f3gica. Por ejemplo, en industrias reguladas, como la financiera o la de salud, el rastreo de dispositivos es un requisito esencial para cumplir con normativas de seguridad y garantizar la integridad de los datos. Afortunadamente, existen herramientas y m\u00e9todos para automatizar esta tarea. En esta entrada, exploraremos diversas soluciones, desde software especializado hasta scripts personalizados en PowerShell que permiten enviar la informaci\u00f3n de dispositivos USB a un servidor central. Tambi\u00e9n veremos c\u00f3mo configurar el script para ejecutarse al iniciar Windows, y destacaremos las mejores pr\u00e1cticas para proteger la infraestructura de IT de posibles vulnerabilidades relacionadas con el uso de dispositivos extra\u00edbles.<\/p>\n","protected":false},"author":1,"featured_media":1356,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,438,691,2207,212],"tags":[2241,150],"class_list":["post-13726","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-sysadmin-2","category-windows-10","category-windows-11","category-windows-8","tag-rest","tag-usb"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/13726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=13726"}],"version-history":[{"count":18,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/13726\/revisions"}],"predecessor-version":[{"id":13744,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/13726\/revisions\/13744"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/1356"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=13726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=13726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=13726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}