Análisis de malware
Funciones de Windows en el análisis de malware – hoja de trucos – Parte 1
mayo 26, por Ninja de seguridad
En este artículo, aprenderemos brevemente sobre las diversas funciones de Windows que suelen encontrar los analistas de malware.
Funciones de Windows
- Accept: This function is used to listen for incoming connections. This function indicates that the program will listen for incoming connections on a socket. It is mostly used by malware to communicate with their Command and Communication server.
- AdjustTokenPrivileges: This function is used to enable or disable specific access privileges. In a process injection attack, this function is used by malware to gain additional permissions.
- AttachThreadInput: This function attaches the input processing from one thread to another so that the second thread receives input events such as keyboard and mouse events. Keyloggers and other spyware use this function.
- Bind: This function is used to associate a local address to a socket in order to listen for incoming connections.
- BitBlt: This function is used to copy graphic data from one device to another. Spyware sometimes uses this function to capture screenshots.
- CertOpenSystemStore: This function is used to access the certificates stored on the local system.
- Connect: This function is used to connect to a remote socket. Malware often uses low-level functionality to connect to a command-and-control server. It is mostly used by malware to communicate with their Command and Communication server.
- ConnectNamedPipe: This function is used to create a server pipe for interprocess communication that will wait for a client pipe to connect. Backdoors and reverse shells sometimes use ConnectNamedPipe to simplify connectivity to a command-and-control server.
- ControlService: esta función se utiliza para iniciar, detener, modificar o enviar una señal a un servicio en ejecución. Si el malware utiliza su propio servicio malicioso, es necesario analizar el código que implementa el servicio para determinar el propósito de la llamada.
- CreateFile: crea un archivo nuevo o abre un archivo existente.
- CreateFileMapping: esta función se utiliza para crear un identificador para una asignación de archivos que carga un archivo en la memoria y lo hace accesible a través de direcciones de memoria. Los lanzadores, cargadores e inyectores utilizan esta función para leer y modificar archivos PE.
- CreateMutex: esta función crea un objeto de exclusión mutua que el malware puede utilizar para garantizar que solo se ejecute una única instancia del malware en un sistema en un momento dado. El malware suele utilizar nombres fijos para mutex, que pueden ser buenos indicadores basados en el host para detectar instalaciones adicionales del malware.
- CreateProcess: This function creates and launches a new process. If malware creates a new process, new process needs to be analyzed as well.
- CreateRemoteThread: This function is used to start a thread in a remote process. Launchers and stealth malware use CreateRemoteThread to inject code into a different process.
- CreateService: This function is used to create a service that can be started at boot time. Malware uses CreateService for persistence, stealth, or to load kernel drivers.
- CreateToolhelp32Snapshot: This function is used to create a snapshot of processes, heaps, threads, and modules. Malware often uses this function as part of code that iterates through processes or threads.
- CryptAcquireContext: This function is often the first function used by malware to initialize the use of Windows encryption.
- DeviceIoControl: esta función envía un mensaje de control desde el espacio del usuario a un controlador de dispositivo. El malware del kernel que necesita pasar información entre el espacio del usuario y el espacio del kernel suele utilizar esta función.
- EnableExecuteProtectionSupport: esta función se utiliza para modificar la configuración de Protección de ejecución de datos (DEP) del host, haciéndolo más susceptible a ataques.
- EnumProcesses: esta función se utiliza para enumerar los procesos en ejecución en el sistema. El malware a menudo enumera procesos para encontrar un proceso en el que inyectar.
- EnumProcessModules: esta función se utiliza para enumerar los módulos cargados (ejecutables y DLL) para un proceso determinado. El malware se enumera a través de módulos al realizar una inyección.
- FindFirstFile/FindNextFile: esta función se utiliza para buscar en un directorio y enumerar el sistema de archivos.
- FindResource: This function is used to find a resource in an executable or loaded DLL. Malware sometimes uses resources to store strings, configuration information, or other malicious files. If this function is used, then check for an .rsrc section in the malware’s PE header.
- FindWindow: This function is used to search for an open window on the desktop. Sometimes this function is used as an anti-debugging technique to search for OllyDbg windows.
- FtpPutFile: This function is used to upload a file to remote FTP server.
- GetAdaptersInfo: This function is used to obtain information about the network adapters on the system. Backdoors sometimes call GetAdaptersInfo in the information-gathering phase to gather information about infected machines. In some cases, it’s used to gather MAC addresses to check for VMware as part of anti-virtual machine techniques.
- GetAsyncKeyState: This function is used to determine whether a particular key is being pressed. Malware sometimes uses this function to implement a keylogger.
- GetDC: This function returns a handle to a device context for a window or the whole screen. Spyware that takes screen captures often uses this function.
- GetForegroundWindow: This function returns a handle to the window currently in the foreground of the desktop. Keyloggers commonly use this function to determine in which window the user is entering his keystrokes.
- Gethostbyname: This function is used to perform a DNS lookup on a particular hostname prior to making an IP connection to a remote host. Hostnames that serve as command and- control servers often make good network-based signatures.
- Gethostname: This function is used to retrieve the hostname of the computer. Backdoors sometimes use gethostname in information gathering phase of the victim machine.
- GetKeyState: This function is used by keyloggers to obtain the status of a particular key on the keyboard.
- GetModuleFilename: This function returns the filename of a module that is loaded in the current process. Malware can use this function to modify or copy files in the currently running process.
- GetModuleHandle: This function is used to obtain a handle to an already loaded module. Malware may use GetModuleHandle to locate and modify code in a loaded module or to search for a good location to inject code.
- GetProcAddress: This function is used to retrieve the address of a function in a DLL loaded into memory. This is used to import functions from other DLLs in addition to the functions imported in the PE file header.
- GetStartupInfo: This function is used to retrieve a structure containing details about how the current process was configured to run, such as where the standard handles are directed.
- GetSystemDefaultLangId: This function returns the default language settings for the system. These are used by malwares by specifically designed for region-based attacks.
- GetTempPath: This function returns the temporary file path. If malware call this function, check whether it reads or writes any files in the temporary file path.
- GetThreadContext: This function returns the context structure of a given thread. The context for a thread stores all the thread information, such as the register values and current state.
- GetVersionEx: This function returns information about which version of Windows is currently running. This can be used as part of a victim survey, or to select between different offsets for undocumented structures that have changed between different versions of Windows.
- GetWindowsDirectory: esta función devuelve la ruta del archivo al directorio de Windows (normalmente C:Windows). A veces, el malware utiliza esta llamada para determinar en qué directorio instalar programas maliciosos adicionales.
- inet_addr: esta función convierte una cadena de dirección IP como 127.0.0.1 para que pueda ser utilizada por funciones como connect. La cadena especificada a veces se puede utilizar como firma basada en red.
- InternetOpen: esta función inicializa las funciones de acceso a Internet de alto nivel desde WinINet, como InternetOpenUrl e InternetReadFile. Buscar InternetOpen es una buena forma de encontrar el inicio de la funcionalidad de acceso a Internet. Uno de los parámetros de InternetOpen es el User-Agent, que a veces puede ser una buena firma basada en la red.
- InternetOpenUrl: esta función abre una URL específica para una conexión mediante FTP, HTTP o HTTPS. Las URL, si se corrigen, a menudo pueden ser buenas firmas basadas en red.
- InternetReadFile: esta función lee datos de una URL previamente abierta.
- InternetWriteFile: esta función escribe datos en una URL previamente abierta.
En la siguiente parte de la serie, analizaremos algunas funciones más de Windows que utilizan los analistas de malware.