Saltarse un tipo de heurística

Iniciado por nhaalclkiemr, 5 Marzo 2008, 00:54 AM

0 Miembros y 1 Visitante están viendo este tema.

nhaalclkiemr

Weno en una de mis creaciones (maleficas como no) pretendo desacerme de la heurística de los AVs como es obvio leyendo el titulo...weno el tema de cifrar las String está claro que lo tengo que realizar...la cuestión es otra:

Muchos AVs (como el NOD32) detectan por heurística acciones sospechosas, y muchas de ellas relacionadas con el inicio de una aplicación...por ejemplo en VB si tienes un modulo (y no formularios, por ejemplo con un Sub Main) y en el Main le pones una instruccion FileCopy, Kill, ... automaticamente pasa a ser detectado (y si lo hago con un Form_Load de un formulario parecido)...ese es el tipo de heurística que quiero evitar, la heurística que me detecta ciertas acciones en el Load (o Main) de mi programa...

Pues weno lo primero que hice fue poner APIs en lugar de las propias funciones del VB...funcionó en algunos casos pero en otros no...también prové a crear una funcion que llamara a otra funcion y asi sucesivamente pero eso no cuela a los AVs (sería demasiado facil no? xD)

Muchos os preguntareis porque insisto en no poner un Form, ya que con un Form podría poner por ejemplo un Timer que llamase a mi funcion y listo, al no estar en el Load ya no canta ni la mitad...sin embargo no quiero usar un Form pork probando descubrí que el hecho de poner un Form me aumenta 40KB la aplicación, de pesar 68KB usando solo modulos conuna funcion Sub Main enuno de ellos, me pasa a 108KB poniendo un solo Form con un Timer y el mismo code...eso es mucho para mi...(weno sobra decir que en mi aplicación es silenciosa y no muestra nada en pantalla, por eso los Forms son innecesarios)

Por eso, la cuestión es: como hacer que mi programa tras ejecutarse inicie automaticamente su codigo con instrucciones que el AV detecta como sospechosas si están programadas para ejecutarse al inicio?

A mi por el momento se me ocurrieron dos ideas:


  • Usar CreateThread: Sin embargo tengo entendido que con VB6.0 esa API no siempre funciona bien para ejecutar las propias funciones del programa y me daría problemas...y de hecho ya me las dió con funciones de una sola linea, no me imagino con un codigo grande entero que llama a varias funciones, APIs, etc...
  • Usar SetTimer y KillTimer para establecer un Timer (y en cuanto se ejecute una vez desactivarlo automaticamente) mediante APIs (y asi no me hace falta el Form) y apuntando a la funcion Main: Es la mejor alternativa que veo, pero aun tengo que provar si funciona correctamente, pues me da a mi que causará errores...por ejemplo a la hora de usar la funcoin Command que recoge los parametros de la aplicación no se si desde el Timer funcionará (me da a mi que no)...weno mañana (hoy es tarde) pruebo y ya os comento...pero no se, otra alternativa me parecería más segura...

Sobre este post decir que weno lo pongo para que vosotros me digais vuestras opiniones de que hariais vosotros...si veis mejores alternativas al Timer mediante APIs...mejores soluciones...etc...pero insisto...nada de Forms!

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

Chefito

nhaalclkiemr, ves poniendo el código que te detecta el AV y lo vamos analizando, a ver si de alguna forma se puede hacer lo mismo sin ser detectado. Por cierto, me he instalado el nod32 y he realizado un ejecutable metiendo un simple kill en el main y no me lo ha detectado cuando lo he ejecutado. No se si lo tendré mal configurado el AV.
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

Hendrix

En C/C++ es mas sencillo, puedes crear un tipo que funcione como cierta API (la que quieras usar) y luego guardas la dirección de la api a usar y la utilizas ese tipo que definiste con la dirección de la API, asi declaras la API "en memoria", si quieres te puedo pasar el codigo en C/C++ y luego lo intentas exportar a VB, aunque no se como te ira, ya te digo, en C/C++ esta tirado hacer eso  :)
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

nhaalclkiemr

Weno la verdad ya he encontrado la solución (era por una cosa tonta) pero igualmente si tienes el codigo en C pasamelo que intento traducirlo a VB (aunke a lo mejor no tira...)

A ver  os digo lo que hice...prové lo del Timer con SetTimer, y funciona todo correctamente, lo malo es que tengo que poner el SetTimer en el Main (logico) con AdressOf Main de parametro (logico tambien), y aunke no la llamo directamente (Call Main) el NOD32 me detecta igualmente el "AdressOf Main" y me analiza la función Main como si se ejecutase al inicio tambien...por lo que no me sirve...

La cuestión es que me equivoqué, arriba dije que no quería Forms pork al poner un Form me aumentó la aplicación 40KB, pero en realidad no era el Form...eran las Optimizaciones Avanzadas (sin querer habia escogido diferentes Opciones avanzadas dejando la prueva con el Form menos optimizada) y por eso ocupaba 40KB más el code con el Form que el que no lo tenia...probé a poner un Form y una llamada Call Main en Form_Initialize y el NOD32 no se pispa y el .exe no aumenta ni 1KB...prové a hacer el Form con el Timer y weno ya me aumenta unos 4KB o asi...pero weno que es eso? :xD Ahora solo es provar si en el Form_Initialize tambien cuela para los otros AVs y si no pongo el Timer y listo (que 4KB no hacen daño...)

Chefito, sobre lo de Kill en el Main no se...a lo mejor la funcion Kill no pero otras como FileCopy si, a veces no es el fileCopy solo, por ejemplo pienso que si en un Form_Load pones un FileCopy no te lo detecta, sin embargo si en el Form_Load además de poner el FileCopy pones tambien App.TaskVisible = False te lo detecta...

Weno el NOD32 ya lo se evitar, me falta mirar más AVs...

Y weno Hendrix pasame igualmente el code en C que siempre puede ser interesante...que tengo curiosidad a ver a que te refieres...

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

Chefito

No se No se, parece que no estoy de acuerdo contigo  ;D. Pues:
Private Sub Form_Load()
App.TaskVisible = False
FileCopy App.Path & "\" & App.EXEName & ".exe", "c:\aa.exe"
End Sub

y el nod32 no lo detecta. Le pasé al ejecutable el nod32 y el bitdefender y no me dice nada. También lo probé metiendolo en un sub main y el mismo resultado. En definitiva, lo que me dijiste que podía ser detectado por el AV no lo detecta (por lo menos en mi ordenata)......por cierto, el bitdefender y el nod32 son la ultima versión actualizada. Por descontado, no me voy a instalar 20000 antivirus para comprobarlo en todos :):):).
Saludos. (Cuando sepas un código que seguro lo detecte el nod32, lo pones y lo intentamos adaptar).
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

[Zero]

Cita de: Chefito en  5 Marzo 2008, 17:32 PM
No se No se, parece que no estoy de acuerdo contigo  ;D. Pues:
Private Sub Form_Load()
App.TaskVisible = False
FileCopy App.Path & "\" & App.EXEName & ".exe", "c:\aa.exe"
End Sub

y el nod32 no lo detecta. Le pasé al ejecutable el nod32 y el bitdefender y no me dice nada. También lo probé metiendolo en un sub main y el mismo resultado. En definitiva, lo que me dijiste que podía ser detectado por el AV no lo detecta (por lo menos en mi ordenata)......por cierto, el bitdefender y el nod32 son la ultima versión actualizada. Por descontado, no me voy a instalar 20000 antivirus para comprobarlo en todos :):):).
Saludos. (Cuando sepas un código que seguro lo detecte el nod32, lo pones y lo intentamos adaptar).
Saludos.

A lo mejor si cambias la ruta de destino por C:\windows o C:\windows\system32 si te lo detecta. Me pasaba a mi con el oso panda.
Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Chefito

Tampoco lo detecta en esos directorios.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

[Zero]

Y si añades al registro para que se ejecute con windows? Debería, el kav detecta los cambios en el registro.
Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Chefito

Jajaja....paso de hacer más pruebas  :P. Al final hago el programa con todo lo que tiene que detectar ;). Es un tema que tampoco me interesa demasiado. Pero digo lo anterior, si alguien cuelga un codigo que detecte el AV, lo intentaremos realizar de otro modo para que no lo haga (en mi caso lo pruebo con el nod32).
Saludos.
PD. Metelo tu en el run o runonce o runservice a ver que pasa :).
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

nhaalclkiemr

Pon la propiedad "Visible" del Form en "False" y si aun asi no te la sigue detectando pon tambien en "False" la propiedad del Form "ShowInTaskBar"
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%