Análise de Malware: Funções da API do Windows
50
0

Análise de Malware: Funções da API do Windows

Perante a todos os Sistemas Operacionais presentes em nossa sociedade, de fato sabemos que o Windows é o mais utilizado, e isso provém pela facilidade de acesso do usuário ao computador, com interfaces mais eficientes, atrativas e fáceis de u...

Carlos Adriano de Souza Jorge
2 min
50
0
Email image

Perante a todos os Sistemas Operacionais presentes em nossa sociedade, de fato sabemos que o Windows é o mais utilizado, e isso provém pela facilidade de acesso do usuário ao computador, com interfaces mais eficientes, atrativas e fáceis de utilizar, além de integrar softwares mais rápidos e eficazes.

Mas nem tudo são flores! Por ser um dos Sistema Operacionais mais utilizados no mundo, Desenvolvedores de Malwares focam seus esforços em desenvolver Softwares Maliciosos para esse ambiente.

O interessante em ser pontuado é que Desenvolvedores de Malwares assim como Desenvolvedores de Softwares possuem prazos de mercado para lançar suas aplicações, para os Cybercriminosos esse prazo é o tempo entre a descoberta de um ZeroDay e sua atualização de segurança para mitigar essa vulnerabilidade. 

Para conseguirem uma boa superfície de ataque em pouco tempo os desenvolvedores utilizam a própria API do Windows (que é rica em funções, cada uma sendo bem documentada, ajudando na interação e usabilidade de quem for usa-las), conseguindo entregar sua demanda de forma rápida e robusta.

Quem me acompanha no Linkedin  e Instagram tem acesso a muitas dicas que eu dou de Análise de Malware, e muitas são sobre as funções da API do Windows utilizadas de forma maliciosa. Este artigo tem como intuito entregar uma lista de funções, além de relatar para que tipo de atividade ela é utilizada.

Furtividade

As funções citadas são utilizadas para manter arquivos, processos e comportamento malicioso escondidos no sistema operacional:

  • VirtualAlloc()
  • VirtualProtect()
  • ReadProcessMemory()
  • WriteProcessMemory()
  • CreatRemoteThread()
  • NtUnmapViewOfSection()
  • QueueUserAPC()

Criptografia

As funções citadas são utilizadas para criptografar/decriptografar arquivos além de gerar chaves para tal situação:

  • CryptAcquireContext()
  • CryptGenKey()
  • CriptDestroyKey()
  • CryptDerivKey()
  • CryptEncrypt()
  • CryptDecrypt()
  • CryptReleaseContext()
  • CryptImportKey()
  • CryptCreateHash()
  • CryptHashData()

Persistência de Registro 

As funções citadas são utilizadas para técnicas de persistência no Sistema Operacional Windows:

  • RegCreateKeyEx()
  • RegOpenKeyEx()
  • RegSetValueEx()
  • RegDeleteKeyEx()
  • RegGetValue()

Persistência de Arquivo

As funções citadas são utilizadas para técnicas de persistência no Sistema Operacional Windows:

  • GetTempPath()
  • CopyFile()
  • CreateFile()
  • WriteFile()
  • ReadFile()

Persistência de Serviço

As funções citadas são utilizadas para técnicas de persistência no Sistema Operacional Windows:

  • OpenSCManager()
  • CreateService()
  • StartServiceCtrlDispatcher()

Execução 

As funções citadas são utilizadas para executar arquivos, criar processos e muito mais:

  • CreateProcess()
  • ShellExecute()
  • WinExec()
  • ResumeThreat()

Anti-Debugger

As funções citadas são utilizadas pelos softwares maliciosos para identificar se o mesmo está sendo analisado em um Debugger:

  • IsDebuggerPresent()
  • GetSystemInfo()
  • GlobalMemoryStatusEx()
  • GetVersion()
  •  CheckRemoteDebuggerPresent()

Anti-Disassembler

As funções citadas acima servem para carregar os imports do arquivo durante sua execução, dificultando Análises estáticas:

  • LoadLibrary()
  • GetProcAddress()


Network

As funções citadas são utilizadas pelos softwares maliciosos para integrar funcionalidades de conexão de rede (WinAPI Sockets):

  • WSAStartup(), socket()
  • bind()
  • listen()
  • accept()
  • client()
  • connect()
  • send()
  • recv()
  • WSACleanup()
  • InternetOpen()
  • InternetOpenUrl()
  • InternetReadFile()
  • InternetWriteFile()

Injeção de DLL

Esta função pode ser usada para injetar uma DLL em outro processo:

  • SetWindowsHookEx()

Captura de Teclado

As funções citadas abaixo podem ser utilizadas por Malwares para captura de teclado:

  • SetWindowsHookEx()
  • RegisterHotKey()
  • GetAsyncKeyState()