Las funciones hash han sido un tema recurrente debido a su importancia crítica en la autentificación de datos. En esta ocasión, nos enfocaremos en la autentificación de informes pentester e informes de peritaje forense.
Existen numerosas aplicaciones en línea y programas gratuitos disponibles para calcular el valor hash. Sin embargo, es crucial tener en cuenta que, al no tener acceso directo al código de estos programas o a la lógica de estos portales en línea, nos encontramos en una posición de vulnerabilidad. Carecemos de visibilidad sobre lo que sucede con los datos de estos informes sensibles una vez que están en manos de terceros. En un mundo donde las promesas en línea no siempre se cumplen, debemos operar bajo la filosofía de «confianza cero».
La autentificación de un informe pentester o informática forense a través de una función hash es una medida de seguridad que garantiza la integridad del informe desde su creación. A continuación, se presentan los pasos generales para realizar esta autentificación:
1. Creación del informe: Este primer paso implica que el pentester o el analista forense compile todos los hallazgos, pruebas y evidencias en un informe.
2. Hashing del informe: Una vez que el informe está completo, se utiliza una función hash para generar un valor hash único para el informe. Esta función hash toma como entrada datos de cualquier tamaño y produce una salida de tamaño fijo. Las funciones hash comunes incluyen SHA-256 y MD5.
3. Almacenamiento del hash: El valor hash generado se almacena de manera segura. Esto podría ser en una base de datos interna o en un lugar seguro fuera de línea.
4. Verificación del informe: Si alguien desea verificar la autenticidad del informe, puede generar un nuevo valor hash para el informe utilizando la misma función hash. Luego, este nuevo valor hash se compara con el valor hash originalmente almacenado. Si los dos valores hash coinciden, el informe no ha sido alterado. De lo contrario, el informe ha sido modificado de alguna manera.
Como una solución práctica a las preocupaciones de seguridad mencionadas, proponemos un pequeño script en Python. Este script es de código abierto, lo que le permite analizarlo y adaptarlo a sus necesidades, resaltando la importancia de poder realizar estas tareas cruciales de manera local.
Código:
print(«Centro de Investigacion Informatica Lazarus»)
print(«www.lazarus.com.ve / www.lazarusvenezuela.com»)
print(«»)
print(«»)
print(«El siguiente fragmento de código representa un script compacto y eficiente, construido sobre la base»)
print(«de tecnologías de software libre. Su principal función es la generación de algoritmos de hash,»)
print(«una capacidad crítica para la autenticación de informes en auditorías de seguridad informática, «)
print(«además como pruebas de penetración (pentesting), y en investigaciones de informática forense.»)
print(«Este script se integra de manera fluida en cada etapa del proceso, proporcionando una herramienta valiosa «)
print(«confiable para garantizar la integridad de los datos y la autenticidad de los informes.»)
import hashlib
import os
from tqdm import tqdm
def hash_file(filename, algorithm):
«»»This function returns the hash of the file passed into it based on the selected algorithm»»»
if algorithm not in hashlib.algorithms_guaranteed:
return «Error: El algoritmo no es soportado.»
h = hashlib.new(algorithm)
try:
total_size = os.path.getsize(filename)
with open(filename, ‘rb’) as file:
with tqdm(total=total_size, unit=’B’, unit_scale=True, desc=filename, miniters=1) as pbar:
chunk = 0
while chunk != b»:
chunk = file.read(1024)
h.update(chunk)
pbar.update(len(chunk))
return h.hexdigest()
except FileNotFoundError:
return «Error: El archivo no fue encontrado.»
except PermissionError:
return «Error: Permiso denegado para leer el archivo.»
def main():
while True:
print(«\n— MENU —«)
print(«1. Generar hash del archivo»)
print(«2. Salir»)
print(«NOTA : Los algoritmos soportados son: » + ‘, ‘.join(hashlib.algorithms_guaranteed))
option = input(«Seleccione una opción: «)
if option == ‘1’:
filename = input(«Ingrese la ruta y el nombre del archivo: «)
algorithm = input(«Ingrese el algoritmo de hash que desea usar: «)
message = hash_file(filename, algorithm)
if message.startswith(«Error»):
print(message)
else:
print(«LAZARUS: » + message)
elif option == ‘2’:
break
else:
print(«Opción inválida. Por favor, intente de nuevo.»)
if __name__ == «__main__»:
main()
Como dato: Recuerda que debes instalar el Modulo “tqdm”
pip install tqdm
o en caso de Debian 12
apt install python3-tqdm
————————————————————————————————————–
Únete a nuestra comunidad de Informática Forense, Pentester, Osint y Jurídico.