Introducció a AMSI
Compartir
Molt bones a tots! Avui ens submergirem en el món de l'AMSI. Segur que n'has sentit a parlar, però saps realment com funcionen? Bé, no et preocupis! Estem aquí per explicar-te tot allò que necessites saber d'una manera senzilla i amigable.
Imagina que estàs escrivint codi i vols que s'executi al teu equip. Els llenguatges interpretats, en comptes de compilar el codi a codi màquina abans d'executar-lo, aquests llenguatges utilitzen un traductor especial anomenat intèrpret. Aquest intèrpret s'encarrega de traduir i executar les instruccions, línia per línia, a mesura que les trobeu.
Amb els llenguatges interpretats, no només pots tenir les teves instruccions en un fitxer al teu disc dur, sinó que també teniu l'opció de passar les instruccions directament a l'intèrpret. Això vol dir que el contingut no necessita tocar el disc dur en cap moment.
Ara parlem d'alguna cosa important: la diferència entre el codi maliciós al disc ia la memòria RAM. Per als antivirus, analitzar el disc dur és relativament senzill. Molts antivirus llegeixen el disc a mesura que l'usuari navega per les carpetes, cosa que els permet fer una anàlisi eficient. Si detecten una signatura associada a un codi maliciós (malware), saltarà una notificació i l'arxiu maliciós serà posat en quarantena. No obstant això, la detecció de codi maliciós que ja està injectat a la memòria RAM és molt més complexa per dues raons:
- La memòria RAM és molt canviant, cosa que converteix en una cosa molt complexa d'analitzar.
- Un cop un procés ja està en RAM, aquestes instruccions estan en execució, i en cas de ser un codi maliciós, podria haver realitzat ja les accions malicioses, haver-se migrat de procés i esborrat el rastre principal, etc.
Ara que hem aclarit això, deixa'm presentar-te al nostre protagonista d'avui: l'AMSI (Antimalware Scan Interface). L'AMSI neix com a resposta a la difícil tasca d'analitzar la memòria RAM i la necessitat d'examinar les execucions abans que passin. Microsoft la va desenvolupar en forma d'API, de manera que les solucions de seguretat puguin cridar les funcions implementades.
Què vol dir això en termes més senzills? Bàsicament, proporciona una manera de capturar ordres en temps d'execució, com les de PowerShell, JScript, VB/VBA i .NET. Un cop capturats, els enviarà a l'antivirus, perquè aquest ho analitzi abans d'executar-los. Si l'antivirus determina que l'ordre és maliciós, l'AMSI notificarà l'aplicació i n'evitarà l'execució.
Tot i que no tots AV/EDR utilitzen AMSI com a mesura de protecció, cada vegada són més el que la inclouen, per la qual cosa és fonamental entendre com funciona. Un cop sabem el perquè existeix AMSI i quina és la seva comesa, és hora d'entendre exactament com és el flux normal del seu funcionament.
La diferència entre un programa i un procés és que el programa són instruccions per a una comesa específica, i un procés són les mateixes instruccions que té el programa, però afegint-hi zones de memòria reservades per a variables i altres necessitats.
Al Windows, s'utilitzen les DLL (Dynamic Link Libraries) per estendre la funcionalitat d'un programa. Quan un programa es carrega en RAM en forma de procés, i carrega una DLL, les funcionalitats s'integren directament dins la zona virtual del procés. Per exemple, quan s'executa PowerShell, DLLs com ntdll, kernel32 i AMSI formen part de la memòria del procés.
Posem un exemple. Tenim un procés PowerShell, des del qual es tractarà de llançar ordres, ia l'equip està instal·lat i activat Windows Defender. Explicarem el flux de comunicació pel que fa a AMSI.
Sabem que AMSI és una llibreria dinàmica que es carrega en processos com PowerShell, que està pensada perquè actuï com intermediari entre el propi procés i l'AV/EDR.
En el moment que s'introdueix una ordre, PowerShell, mitjançant l'ús de funcions de l'API AMSI, es comunicarà amb el procés Windows Defender per enviar el contingut de l'ordre. Windows defensar ho analitzarà i enviarà en forma de resposta si el que s'està executant és maliciós o no.
La comunicació entre el procés que fa servir AMSI i Windows Defender es realitza mitjançant RPC. RPC és una forma que té Windows per comunicar diversos processos (podent ser processos que es troben a diferents equips). Bàsicament és una implementació estàndard que permet comunicació per xarxa entre processos amb l'arquitectura client-servidor.
En resum, AMSI com a tal no és una mesura de seguretat (perquè no és qui analitza si hi ha codi maliciós o no), és un estàndard mitjançant el qual els processos com PowerShell envien dades a l'AV/EDR (mitjançant RPC), de manera que es pugui determinar si executar una ordre seria perjudicial per a l'equip. En base al que retorni la mesura de seguretat en qüestió, PowerShell ho executarà o no.
I per avui ja està bé!, continuarem amb AMSI en futures entregues, deixant les RPC entre les teves neurones perquè no pateixin inundacions.