Solucion: ASProx Cleaner

Algo que note es que algunos antivirus, al menos es el caso de AVG 8 en IE7, lo detecta como Troyano cuando ingresas al sitio infectado. Pero en otros casos no sucede. Por lo que, al ingresar al sitio, se infecta la PC, y luego esa PC infecta otros sitios? .. sinceramente es muy malefico!.

Para los que nos afecto el virus: aqui va la solucion;

Paso 1) usar una PC no infectada.

Paso 2) revisar el codigo ASP o ASP.net de nuestra Aplicación y no dejar pasar ninguna Inyeccion SQL. Validar todas las variables GET y POST por ejemplo, si es numerico usar funciones como isNumeric(Var) y si es texto usar Expresiones regulares para validarlas. En mi caso, si las variables son alteradas redirecciona al index. O pueden buscar algun tool para escanear y ver si hay vulnerabilidades como por ejemplo: Microsoft Source Code Analizer for SQL Injection que es gratuito o de pago podria ser Acunetix Web Vulnerability Scanner, que es excelente.

Cuando estemos seguros que nuestro sitio dejo de ser un colador 🙂 pasamos al ..
Paso 3)

Ejecutar este Transact SQL en el Enterprise Manager. ( con nuestra base de datos seleccionada ).

' http://www.admintalk.org
' 2008-07-12
SET NOCOUNT ON
DECLARE @SCRIPT VARCHAR(1024)
DECLARE @T VARCHAR(255)
DECLARE @C VARCHAR(255)
DECLARE Table_Cursor CURSOR FOR
SELECT [A].[Name], [B].[Name]
FROM sysobjects AS [A], syscolumns AS [B]
WHERE [A].[ID] = [B].[ID] AND
[A].[XType] = 'U' /* Table (User-Defined) */ AND
([B].[XType] = 99 /* NTEXT */ OR
[B].[XType] = 35 /* TEXT */ OR
[B].[XType] = 231 /* SYSNAME */ OR
[B].[XType] = 167 /* VARCHAR */)
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE (@@FETCH_STATUS = 0)
BEGIN
print 'Updating [' + @T + '].[' + @C + ']…'
exec('update ['+@T+'] set ['+@C+'] = substring(['+@C+'], 0, charindex(''<script'',['+@C+']))
where ['+@C+'] like ''%<script%''')
Print 'Done'
Print ''
FETCH NEXT FROM Table_Cursor INTO @T, @C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
Print 'Clean-up Complete.'

Paso 4) Cruzar los dedos.

Paso 5) Limpiamos nuestro sitio pero para el cache de google sigue Infectado!. Entonces tenemos que ejecutar la herramienta para webmasters y Solicitar una Revision, el nuevo Scan de google puede demorar unos dias hasta que chequea y vuelve a la normalidad.

Espero que les sirva tanto como a mi.!

Ataque a paginas ASP y SQL SERVER con Trojan AspRox

Ataque de Cadena ASCII (Encoded/Binary) Automatica de SQL Injection o en ingles ASCII Encoded/Binary String Automated SQL Injection Attack.

Descripcion del Ataque:
Recientemente, nos venimos cruzando con un tipo de SQL Injection muy particular e interesante, que, hasta ahora puede ser muy dificil de limpiar, incluso hasta con el mas robusto backup de base de datos o esquema de recuperacion. Este ataque masivo es conducido con la ayuda de un robot de internet –tambien conocido como «malbot» y «botnet» que tienen perspectivas de atacar diariamente. Esto es como si cada uno de estos «Robots» disparan una serie de injecciones SQL de forma continua y cotidiana hasta que los resultados del malefico script son sensados en las paginas webs atacadas como posibles indicadores de vulnerabilidad.
(De hecho, cuando google escanea nuestro sitio para indexar contenidos, detecta que la web esta infectada, o interpreta que esta distribuyendo software malintencionado). Firefox esta usando dicho cache de paginas malintencionadas de google, y muestra la siguiente pantalla:

Firefox ante una pagina Infectada con ASProx

Detras del botnet, este ataque, llamado ASProx, fue previamente asociado con ataques Pishing, y ahora esta indirectamente distribuyendo Malware a traves de estos sitios webs que son vulnerables al SQL injection. Los atacantes tienen diseñado el Asprox para reproducirse con la ayuda del Buscador Google, una busqueda inicial de paginas webs que utilizan tecnologias ASP (.asp), ASP.net (.aspx), y PHP (.php).

El ASProx botnet tambien utiliza un DNS Fast Fluxing como tecnica para ocultar la entrega real del malware, detras de una red cambiante de hosts comprometidos que actuan como apoderados. La infraestructura del botnet crece constantemente. No hay nada nuevo en la forma en que el siguiente T-SQL se inyecta. Sin embargo, el carácter genérico del script es algo interesante para ver.

Las siguientes 3 variantes estan siendo injectadas a traves de HTTP GET:

‘;DECLARE%20@S%20NVARCHAR(4000);SET%20@S=CAST(0x44004500 … 06F007200%20AS%20NVARCHAR(4000));EXEC(@S);–

;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C … 736F7220%20AS%20VARCHAR(4000));EXEC(@S);–

‘;DECLARE%20@S%20CHAR(4000);SET%20@S=CAST(0x4445434C … 72736F72%20AS%20CHAR(4000));EXEC(@S);

En resumen; lo que hace es añadir ciegamente el script al valor actual de cualquier columna de la base de datos; o en otra de sus versiones primero verifica si la entrada actual ya no ha sido infectada, evitando la repeticion excesiva del script. Ademas, el script T-SQL( transact SQL), no solo Inyecta codigo Javascript en la base de datos sino que tambien agrega la etiqueta de declaracion de comentarios de HTML «<!–» al final del contenido del registro infectado para que intencionalmente se oculte e impida que el HTML sea cargado.

Dentro del Javascript que inyecta el en la base de datos, hay un include JS que puede figurar en cada ataque con un nombre de dominios distinto: ejemplo: (hay decenas de ellos)

http://www.64asp.ru/script.js
http://www.sel92.ru/script.js 
http://www.22net.ru/script.js 
http://www.51com.ru/script.js

El resultado final (para los sistemas infectados) es un malware ejecutable con el nombre «msscntr32.exe», que es instalado en el sistema como Servicio de Windows con el nombre «Microsoft Security Center Extension».

Como hacer inmunes tus Aplicaciones Web y base de datos de tales ataques SQL Injection automaticos. Los siguientes fragmentos de código (3.0/VB ASP y ASP.NET / C #) demuestran la imperfeccion de la aplicacion con un rapido enfoque:

<%

Dim strQuery
strQuery = UCase(Request.ServerVariables(«QUERY_STRING»))
strQuery = Replace(URLDecode(strQuery), » «, «»)
If InStr(strQuery,»EXEC(«) > 0 OR _
InStr(strQuery,»SELECT») > 0 OR _
InStr(strQuery,»INSERT») > 0 OR _
InStr(strQuery,»UPDATE») > 0 OR _
InStr(strQuery,»DELETE») > 0 OR _
Len(strQuery) > 500 Then
Response.Write 1/0
End If
%>

fuente: bloombit