Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: carlitos.dll en 30 Julio 2008, 03:12 am



Título: FILTRO AntiBATCH Injections 3.0
Publicado por: carlitos.dll en 30 Julio 2008, 03:12 am
Nota: Más abajo está la versión 3.0
única password posible:
entrar



Título: Re: FILTRO AntiBATCH Injections
Publicado por: Darioxhcx en 30 Julio 2008, 03:17 am
que interesante man o.O
son buenisimos tus codes =D
saludos


Título: Re: FILTRO AntiBATCH Injections
Publicado por: carlitos.dll en 30 Julio 2008, 03:28 am
gracias, lo actualicé, porque se me escapó el alt+255
pero lo controlo con el errorlevel.


Título: Re: FILTRO AntiBATCH Injections
Publicado por: Darioxhcx en 30 Julio 2008, 03:32 am
aca tene otro
alt + 0160 xD
me da pass correcta =P

saludos


Título: Re: FILTRO AntiBATCH Injections
Publicado por: carlitos.dll en 30 Julio 2008, 03:48 am
Dario fue una cuestión de 1 segundo.


Cambia
if not errorlevel 0 (goto warning)

por:

if not "%errorlevel%"=="0" (goto warning)


Título: Re: FILTRO AntiBATCH Injections
Publicado por: carlitos.dll en 30 Julio 2008, 05:13 am
Ups, me equivoqué es:

if not "%errorlevel%"=="1" (goto warning)

ya lo correjí.

También añadí que sonara cuando fuese intento de batch injection.


Título: Re: FILTRO AntiBATCH Injections
Publicado por: carlitos.dll en 30 Julio 2008, 07:20 am
[modificado]


Título: Re: FILTRO AntiBATCH Injections
Publicado por: sirdarckcat en 30 Julio 2008, 07:33 am
pues este no es un filtro, es mas como un IDS.. los filtros "quitan" cosas malas.. este las detecta.. la unica solución aparente es usar "whitelist" de caracteres, pero eso ya se hace con choice o con un programa estilo debug.

Saludos!!


Título: Re: FILTRO AntiBATCH Injections
Publicado por: carlitos.dll en 30 Julio 2008, 07:43 am
Ya descubrí el problema del errorlevel. Hay que dejarlo así en los dos:

Código:
if "%errorlevel%"=="9009" (goto warning)

if "%errorlevel%"=="9009" (goto Login)

Sirdarckcat, creo que es díficil hacer un filtro, porque si manipulas la variable sales "perjudicado".


Título: Re: FILTRO AntiBATCH Injections
Publicado por: sirdarckcat en 30 Julio 2008, 08:53 am
Si puedes modificar la variable de forma segura.. podrias por ejemplo copiar caracter por caracter..

Saludos!!


Título: FILTRO AntiBATCH Injections 2.0
Publicado por: carlitos.dll en 7 Agosto 2008, 10:51 am
La versión 1.0 tiene un bug. El comando find es externo find.exe

Por eso si dentro de la misma carpeta donde tenga este filtro.bat coloco un archivo llamado FIND.BAT
con el siguiente contenido:
Código:
Código:

@echo off
echo hack | find.exe "crack" >NUL


cuando hago esto:
Código:

for %%a in ("|" "&" "^" ">" "<" "'" "." ";" "," " " "/" "\" "+" "-" "~" "!" ")" "(" "]" "[" "}" "{") do (
set pass|find %%a >NUL && goto warning)

la salida de set pass se la paso a find
cmd.exe encuentra a find.bat que imprime hack y la salida de esa palabra se la da a find.exe buscando la palabra "crack" y como esa palabra no está en la palabra hack retorna que no se encuentra.

Entonces si abro el filtro.bat e ingreso:
}] (cls ) else rem

hago la inyección, pues find (find.bat que llama a find.exe siempre retorna que no hay nada malo) :D

Dejo la última versión correjida:
Código:
@echo off

::FILTRO ANTI-BATCH-INJECTIONS 3.0
::BY CARLITOS.DLL

set findstr="%WinDir%\system32\findstr.exe"
set find="%WinDir%\system32\find.exe"

:Login
set pass=
set /p pass=Enter password:
if not defined pass (goto Login)

set pass | %find% """" >NUL 2>&1 && goto warning
rem identificamos las comillas

set pass | %find% " " >NUL 2>&1 && goto warning
rem identificamos los espacios

set pass | %findstr% "| & ^ > < # ' ` . ; , / \  + - ~ ! ) ( ] [ } { : ? *" >NUL 2>&1 && goto warning
rem identificamos una serie de caracteres

echo %pass% | find "=" >NUL 2>&1 && goto warning
rem identificamos el caracter =

if not [{entrar}]==[{%pass%}] (goto Login) 2>NUL
if "%errorlevel%"=="9009" (goto warning)

echo Password correcta

pause
goto :eof

:warning
echo Posible intento de batch injection
goto Login


Título: Re: FILTRO AntiBATCH Injections 2.0
Publicado por: sirdarckcat en 7 Agosto 2008, 14:44 pm
:¬¬

set WinDir = %homepath%


Título: Re: FILTRO AntiBATCH Injections 2.5
Publicado por: carlitos.dll en 7 Agosto 2008, 22:08 pm
Modifiqué nuevamente el código, pues findstr se mareaba con las comillas, ahora quedó super bien. Sirdarckcat entendí el mensaje, pero pienso que esto es lo que más yo puedo hacer utilizando el propio batch. Vi tu filtro, y está muy bueno, l ovi con un editor hexadecimal y parece sacado de algún comando del dos.



Título: Re: FILTRO AntiBATCH Injections 2.5
Publicado por: sirdarckcat en 7 Agosto 2008, 22:21 pm
Pues es igual a lo que decias a que si find.(exe|bat|cmd) está en la misma carpeta.

Más bién yo diria que esto sobra..
set pass | %findstr% /i "if else goto call echo rem shift start set doskey pause cmd command find exit" >NUL 2>&1 && goto warning

que tal que el password que se pone es shift, o algo..


Título: Re: FILTRO AntiBATCH Injections 3.0
Publicado por: carlitos.dll en 7 Agosto 2008, 22:39 pm
Listo, ahora si que quedó casi perfecto, gracias por el comentario sirdarckcat, tenías razón.
Esto podría obviarse:
set findstr="%WinDir%\system32\findstr.exe"

y en vez de %find% escribir find.exe siempre que se ejecute este bat desde el directorio de windows\system32.


Título: Re: FILTRO AntiBATCH Injections 3.0
Publicado por: wizard_0 en 8 Agosto 2008, 07:34 am
Hola  "carlitos.dll" , kisiera  q m expliques   esta  part del  code..  veo   ksi  en  todo  tus  crackme..  q   usas   el   2>nul  ?¿?¿  q  significa?? hasta   con  la  condicional  "IF"  lo  utilizas...  q   obtienes  con  eso?¿  hace  alguna  diferencia  si  no  lo  colocas ??¿


Código:

set pass | %find% """" >NUL 2>&1 && goto warning

if not [{_]==[{%pass%}] (echo>NUL) 2>NUL

Espero   aclares  mi  duda..

salu2-->


Título: Re: FILTRO AntiBATCH Injections 3.0
Publicado por: carlitos.dll en 8 Agosto 2008, 07:39 am
>NUL 2>&1

Redirigo la salida del programa que por defecto es CON a NUL y cualquier error y mensaje de error a NUL

Aquí sale:
http://www.ss64.com/ntsyntax/redirection.html

command  >nul 2>&1         Redirect error and information messages to NUL

Puede que en algunos casos esté demás, pero con tal de evitar cualquier mensaje no deseado :D

Acabo de corregir un error en el post correspondiente.


&& es realizar el comando solo si el anterior fue exitoso, es decir si encontró el carácter que busco en la variable, irá a etiqueta warning

|| es lo contrario de && es decir hacer si el comando falla.

Ejemplo:

ver | find /i "XP" && echo es XP || ver | find /i "Vista" && echo es Vista || echo es Otro

el | es redireccionar la salida de un programa a otro programa.