Gestión y Técnicas Avanzadas de Variables de Entorno en Kali Linux

Fundamentos de Variables en Bash

En sistemas operativos diseñados para auditoría como Kali Linux, las variables de entorno actúan como contenedores dinámicos de información. Funcionan mediante pares clave-valor y se dividen principalmente en dos categorías: variables de shell (limitadas a la sesión de terminal actual) y variables de entorno globales (heredadas por subprocesos y aplicaciones).

Consultas y Operaciones Básicas

Para visualizar la configuración del sistema, se pueden utilizar comandos integrados que listan las variables activas, permitiendo filtrar parámetros específicos relacionados con el comportamiento del shell.

# Listar variables de entorno globales
env

# Mostrar todas las variables disponibles
declare -p

# Filtrar una variable específica
declare -p | grep HISTSIZE

# Asignar y leer un valor
MI_VARIABLE="datos_secreto"
echo $MI_VARIABLE

# Eliminar una variable
unset MI_VARIABLE

Control Dinámico y Aislamiento

Es posible lanzar procesos en espacios aislados o restringir los permisos de las variables. Declarar variables locales dentro de funciones evita fugas de datos, mientras que las variables de solo lectura protegen configuraciones críticas contra modificaciones accidentales.

# Iniciar una terminal sin variables predefinidas
env -i bash

# Heredar únicamente rutas esenciales
env -i RUTA=$PATH DIRECTORIO=$HOME bash

# Declaración local y de solo lectura
local RUTA_TMP="/tmp/auditoria"
declare -r CLAVE_API="12345-ABC"

Gestión de Historial y Rutas (PATH)

El parámetro HISTSIZE controla el número de comandos almacenados. Anular este valer es una técnica común para evitar dejar rastros en el sistema durante operacionse sensibles.

# Desactivar el registro de comandos
export HISTSIZE=0
export HISTFILE=/dev/null

# Normalizar el tamaño del historial
export HISTSIZE=5000

La variable PATH define los directorios donde el sistema busca ejecutables. Mantenerla limpia optimiza la respuesta del sistema. Se puede implementar una función para eliminar rutas duplicadas:

depurar_ruta() {
    local ruta_temp=""
    local IFS=':'
    for directorio in $PATH; do
        if [[ ! ":$ruta_temp:" == *":$directorio:"* ]]; then
            ruta_temp="$ruta_temp:$directorio"
        fi
    done
    export PATH="${ruta_temp#:}"
}

Modos de Operación y Cifrado

A través de scripts de configuración personalizados, se pueden definir perfiles de trabajo que alteren el comportamiento del shell instantáneamente. Esto es útil para alternar entre tareas ofensivas, sigilo y administración estándar.

cambiar_modo() {
    case "$1" in
        invisible)
            export HISTFILE=/dev/null
            export HISTSIZE=0
            export PS1="> "
            ;;
        ofensivo)
            export PATH="$PATH:/opt/exploits/bin:/opt/scanners"
            export PS1="[Pentest]$ "
            ;;
        default)
            export HISTSIZE=5000
            export HISTFILE=~/.bash_history
            export PS1="\u@\h:\w$ "
            ;;
    esac
}

Para proteger credenciales o variables sensibles, se pueden aplicar funciones que utilicen utilidades criptográficas como OpenSSL para almacenar y recuperar datos bajo demanda.

guardar_secreto() {
    printf "%s" "$1" | openssl enc -aes-256-cbc -salt -pbkdf2 -out ~/.bodega_env
}

leer_secreto() {
    openssl enc -aes-256-cbc -d -pbkdf2 -in ~/.bodega_env 2>/dev/null
}

Automatización de Toolkits y Proxies

La integración de herramientas de pentest y la redirección de tráfico se simplifican asignando bloques de rutas y configuraciones de red mediante funciones de bash.

integrar_toolkit() {
    local directorios=("/opt/burp" "/opt/metasploit" "/opt/scripts")
    for d in "${directorios[@]}"; do
        [[ -d "$d" ]] && PATH="$PATH:$d"
    done
    export PATH
}

configurar_red_anonima() {
    export ALL_PROXY="socks5://127.0.0.1:9050"
    export http_proxy="http://127.0.0.1:8080"
    export NO_PROXY="localhost,127.0.0.1"
}

Monitoreo y Diagnóstico del Entorno

Para asegurar la integridad del entorno, se pueden impleemntar rutinas de monitoreo que detecten alteraciones en tiempo real, así como diagnósticos rápidos para revisar permisos y configuraciones.

vigilar_entorno() {
    local captura_anterior=$(env)
    while true; do
        local captura_actual=$(env)
        if [[ "$captura_actual" != "$captura_anterior" ]]; then
            echo "Alerta: Modificación detectada en el entorno"
            diff <(echo "$captura_anterior") <(echo "$captura_actual")
            captura_anterior="$captura_actual"
        fi
        sleep 2
    done
}

auditar_sistema() {
    echo "Variables críticas:"
    for var in PATH LD_LIBRARY_PATH PYTHONPATH; do
        printf "%s = %s\n" "$var" "${!var}"
    done
    echo "Archivos ocultos modificados recientemente:"
    find ~ -maxdepth 1 -mtime -1 -type f -name ".*"
}

Etiquetas: Kali Linux variables de entorno bash shell scripting ciberseguridad

Publicado el 6-29 02:52