En el momento que se detecta un código malicioso, el analista busca determinar cuál es la funcionalidad y el propósito del malware. Para llevar a cabo estas tareas es necesario obtener un perfil (profiling) del código malicioso que se desea analizar.
En un escenario real, cuando se produce una infección por un código malicioso, es necesario tener en cuenta una serie de pasos para poder llegar al objetivo del análisis. En primera instancia es necesario proveer algún tipo de proceso que permita la identificación (identification) del código malicioso en el sistema infectado. Sin esta etapa, no es posible contar con lo que se conoce como "muestra", la cual será el foco del análisis.
Asimismo, para armar un perfil del código malicioso, el analista debe hacerse una serie de preguntas sobre el archivo que se va a analizar:
- ¿Qué tipo de archivo es?
- ¿Cuál es el supuesto propósito que tiene el archivo?
- ¿Con qué características cuenta el código malicioso?
- ¿Cuál es la extensión de la infección? ¿Sólo se ejecuta a nivel local o se propaga por la red?
- ¿Qué impacto tiene el archivo malicioso sobre el sistema infectado?
- De acuerdo a la estructura del código malicioso, ¿Qué tipo de conocimientos refleja en cuánto a su desarrollador?
- ¿Qué pasos son necesarios para lograr remediar la infección?
Todas estas preguntas, en muchos casos, son difíciles de responder. De todas formas, el analista puede crear un perfil parcial sobre cómo se comporta la amenaza. El complemento con el análisis estático y dinámico de las amenazas también brindarán diversas respuestas a las preguntas indicadas anteriormente.
La etapa de perfilado consta de varios pasos:
- Detalles: Se obtiene información sobre dónde y cómo fue encontrado el archivo malicioso (tipo de sistema, plataforma, etc.)
- Hash: Se obtiene el hash del archivo malicioso que permite identificar unívocamente a la amenaza.
- Clasificación: Se identifica el archivo y se clasifica de acuerdo a su estructura, sistema operativo o cualquier otro factor distintivo.
- Escaneo: Se realiza un escaneo del archivo con un software antivirus para determinar si el código malicioso es conocido, y en caso afirmativo, determinar cuál es su firma.
- Examen: Se estudia el código malicioso a partir del uso de diferentes herramientas con dicho propósito.
- Extracción de información: Se realiza un análisis profundo en búsqueda de información tal como strings o cadenas o incluso información del ensamblado (lenguaje en el que fue desarrollado, información de compilación, etc).
- Descifrado: Se determina si existe algún tipo de ofuscación o la existencia de información cifrada y se procede a obtener la misma en un formato legible.
- Correlación: Se determina si el código malicioso posee un ensamblado estático o dinámico (statically or dinamically linked) y, oportunamente, se verifica cuales son sus dependencias.
- Investigación (Research): Con toda la información recabada, se lleva a cabo una investigación específica para conocer en profundidad al código malicioso.
Así como existen metodologías para la gestión de riesgos, disponer de una metodología para el perfilado de archivos es un pilar fundamental a la hora de analizar malware . Suele ser un error común saltarse etapas ya que, en la búsqueda del ahorro de tiempo, el analista puede cometer el error de dejar de lado información sustancial o abandonar el análisis del malware antes de finalizarlo.
Si bien estos métodos están orientados a quienes realizan análisis de códigos maliciosos, las buenas prácticas que siempre sugerimos a los usuarios, también deben ser aplicadas por los analistas. El riesgo que imponen las amenazas informáticas no establece diferencias sobre quien es el individuo que utiliza un sistema informático.
Fernando Catoira
Analista de Seguridad