Herramientas y automatización para Microsoft SQL Server
El workflow de SQL Server mantiene instancia, endpoint, principal y base actual. No mezcles resultados de instancias distintas del mismo host.
Selección
Sección titulada «Selección»| Pregunta | Herramienta | Diferencia |
|---|---|---|
| instancias y Browser | Nmap | descubrimiento preautenticación |
| sesión administrada | sqlcmd |
cliente oficial |
| autenticación Windows desde Linux | impacket-mssqlclient |
integra NTLM/Kerberos y helpers |
| contexto y permisos | T-SQL | fuente efectiva |
sqlcmd -S recibe servidor, instancia o puerto. -E usa credenciales integradas. -U fija un login SQL y -Q ejecuta una consulta:
sqlcmd -S 'FQDN\INSTANCE' -E -Q "SELECT @@VERSION, SUSER_SNAME(), USER_NAME();"Evita -P PASSWORD. Omítelo para que se solicite o utiliza el mecanismo de secretos previsto por el entorno.
-l fija el timeout de inicio de sesión en segundos y -t el timeout de cada consulta. -b devuelve un código de salida distinto de cero cuando SQL Server informa un error con gravedad suficiente. -r1 envía todos los mensajes de error a stderr y -o conserva el output en un archivo:
sqlcmd -S 'FQDN\INSTANCE' -E ` -l 15 -t 60 -b -r1 ` -Q "SELECT @@VERSION, SUSER_SNAME(), USER_NAME();" ` -o evidence\sqlcmd-context.txtLa receta distingue un timeout de login de una consulta que supera un minuto y permite que la automatización detecte el error por el código de salida. El archivo no incluye necesariamente los mensajes enviados a stderr. Captura ese canal por separado cuando forme parte de la evidencia.
impacket-mssqlclient 'DOMAIN/USERNAME@FQDN' -windows-authSi usas Kerberos, prepara DNS, hora, ticket y SPN antes de añadir -k. Cambiar simultáneamente hostname, mecanismo y credencial oculta la causa de un fallo.
ms-sql-info obtiene instancias. ms-sql-config, ms-sql-dac, ms-sql-empty-password y ms-sql-ntlm-info responden preguntas distintas:
sudo nmap -sU -p 1434 --script ms-sql-info TARGET_IPnmap -sV -p 1433 --script ms-sql-info,ms-sql-ntlm-info TARGET_IPLos scripts ms-sql-brute, ms-sql-query y ms-sql-xp-cmdshell autentican o ejecutan acciones. No los incluyas por prefijo. Inspecciona argumentos y categorías con nmap --script-help 'ms-sql-*'.
Interpretación
Sección titulada «Interpretación»SQL Browser ausente no descarta instancias. Un login correcto puede carecer de acceso a una base. sysadmin, IMPERSONATE, ownership, database trust y linked servers son caminos distintos. Confirma siempre mediante T-SQL y registra auth_scheme, encrypt_option y base actual.