Esquema para la recolección de información en un pentest

El camino hacia la eCPPT

 

20 de Mayo del 2017

Un primer vistazo a la forma de almacenar la información para el proceso de pentesting propuesto en el PTP v4. Recuerda que cualquier tipo de información puede ser relevante y por eso hay que registrarla.

La información que recolectamos durante el proceso de information gathering (y en general en todo el proceso de pentesting, ya que es cíclico) es fundamental para definir nuestros posibles vectores de ataque y explotación de sistemas.
Dado que el proceso debe ser metódico y ordenado, se propone una estructura para almacenar y tener disponible posteriormente dicha información. El modelo de datos que propongo para sustentar la recolección de información es:

 

methodology-for-collecting-info.png

 

Por supuesto que la información que almacenemos dependerá bastante del tipo de pentest que realicemos, el alcance y algunas consideraciones específicas según el requerimiento. Revisemos las tablas que componen el modelo:

Existe la tabla IP, que es la que define nuestro punto de partida para saber cuál es nuestro objetivo (scope). En esta tabla necesitamos registrar la información de la IP de nuestro cliente, el netblock, propietario del netblock y cualquier dato relevante que podamos encontrar.

En base a nuestra IP o rango de ips, obtenemos los dominios relacionados (tabla domains). Si nos fijamos en la tabla, existe una relación uno a muchos sobre la misma entidad para manejar los subdominios que encontremos. Además podemos marcar con un boolean si está en el scope que nos definió el cliente. Esto es muy importante ya que debemos trabajar sólo sobre lo definido en nuestro contrato asociado al pentest.

Teniendo nuestros dominios y subdominios definidos, podemos empezar a recolectar información de las personas involucradas (tabla people). En el caso de ser una empresa a la cual estamos realizando el ethical hacking, mayormente serán trabajadores de ella y por eso podemos almacenar sus cargos (position) si logramos encontrarlo. También se considera la obtención de correos corporativos asociados a los dominios e incluso correos personales de los involucrados.

Cuando realicemos nuestro escaneo del objetivo, obtendremos información de puertos y servicios asociados que debemos dejar registrados en la tabla ports_and_services. Dejamos anotado también el protocolo (tcp o udp) y el estado que se encuentra (open, open/filtered, filtered, unfiltered, closed, closed/filtered).

Y finalmente, llegamos la tabla con recursos (resources). Acá pondremos toda la información asociada a carpetas compartidas, impresoras, usuarios, políticas de contraseñas, etc. Esta información es bastante heterogénea y más asociada a redes internas.

 

Con esta estructura en mente, podemos como decía al comienzo tener un orden y una jerarquía de los datos que obtengamos e iremos alimentando las tablas a medida que vayamos trabajando en nuestro pentest.

En el próximo post voy a contar respecto a una técnica que puede reemplazar e incluso ser complementaria a la presentada para la recolección de información, el uso de mapas mentales.


Saludos!