Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - kub0x

#1101
Foro Libre / Re: Nombres para un foro?
17 Enero 2013, 16:57 PM
Le he echado un pequeño vistazo al tablon del foro y veo que en la sección de Programación general divides los subforos en .NET , C#/C++ y Java. C# es propio de .NET donde debería ir todo lo relacionado con los lenguajes de la plataforma .NET incluído éste. Sería mejor que C++ lo pusieras solo o junto a C.

Saludos!
#1102
Gracias ChimoC por tu atención, espero que el aporte haya sido de tu agrado.

Posteo para decir que han filtrado el puerto que conecta con el servicio desde la red Euskaltel, es decir, cualquier usuario que navege a través de una conexión contratada con esta ISP no podrá acceder mediante dicho puerto a ningun servicio de administración remota de dispositivos de terceros de la misma línea. Os mantendré informados segun vayan apareciendo cambios en el tema. Esperemos que lo solucionen pronto.

Saludos!
#1103
Advertencia - mientras estabas escribiendo, fueron publicadas 2 respuestas. Probablemente desees revisar tu mensaje.

Ahí me has pillado pues no he tenido experiencia en lo que se refiere a cargar código no administrado desde .NET . Se me ocurre que puedes embedir el ejecutable dentro de la lista de recursos y desde ahí crear un archivo temporal en el que escribes los Bytes del ejecutable embedido en recursos, ya que My.Resources."recurso" nos devolvería un Array de Bytes.

Luego cuando cierras la App podrías llamar a una rutina que limpiara esos archivos temporales de la ruta donde los creaste, o bien, podrías eliminarlos cuando el proceso temporal finalice. A ver si alguien nos da algun consejo más práctico de como implementar esto.

Lo que hago a continuación es cargar el TCPOptimicer desde un Array de Bytes de la lista de recursos. Creo un archivo temporal de éste, lo inicializo mediante la clase Process() y asocio el evento Exited de Process() a un método que será llamado cuando el archivo sea cerrado. Dentro de este método se ejecutará la instrucción de borrado del archivo temporal, de esta manera te libras del Process.WaitForExit(), recuerda, queremos rendimiento en nuestra aplicación.

Código (VB.NET) [Seleccionar]

Imports System.IO
Module Module1
  Dim ExePath As String = "C:\TempTCPOptimicer.exe"
  Sub Main()
        If Not File.Exists(ExePath) Then
'Obtenemos los Bytes del archivo a través de la lista de recursos
        Dim Buffer As Byte() = My.Resources.TCPOptimizer
'Creamos un nuevo ejecutable en el que introduciremos los Bytes del archivo
        Dim Fs As New FileStream(ExePath, FileMode.Create, FileAccess.Write)
        Fs.Write(Buffer, 0, Buffer.Length)
        Fs.Close()
'Ejecutamos el proceso temporal
        Dim p As Process = Process.Start(ExePath)
'Activamos el evento Exited, que se encargará de manejar el cierre de la aplicación
        p.EnableRaisingEvents = True
'Asociamos el evento Exited al método FileExitedEvent
        AddHandler p.Exited, AddressOf FileExitedEvent
'No queremos que se cierra la instancia de la consola
        Else
        Console.WriteLine("El Archivo temporal {0} ya existe",ExePath)
        End If
     Console.Read()
    End Sub

    Private Sub FileExitedEvent(ByVal sender As Object, ByVal e As EventArgs)
'Si has llegado hasta aquí es que el proceso finalizó
'Procedemos a eliminar el archivo temporal del disco
        File.Delete(ExePath)
    End Sub
End Module


Saludos!
#1104
Lo que pides es embedir un ensamblado .NET dentro de otro. La clase Assembly te permite cargar ensamblados .NET en la memoria del programa y ejecutarlos en tiempo de ejecucción, sin tener que ejecutarlo en un proceso separado. Puedes escoger como vas a cargar el ensamblado, si está fuera del proyecto lo cargas como un archivo indicando la ruta. Lo normal sería añadirlo a los recursos del programa y cargarlo dinámicamente desde ahí mediante un Array de Bytes. El resto del trabajo es pan comido, solo tienes que llamar a su método de entrada, es decir, a Main().

Te dejo un fragmento de code, si lo quieres probar inicia un proyecto en modo consola y lo copias tal cual pero cambiando el path del ensamblado que quieres cargar :)

Código (VB.NET) [Seleccionar]

Imports System.Reflection
Module Module1

    Sub Main()
'Cargamos el ensamblado desde un archivo
'En tu caso podrias hacerlo desde los recursos del proyecto
        Dim Ensamblado As Assembly = Assembly.LoadFile("C:\POC.exe")
'Apuntamos hacia el método de entrada, método principal que será llamado al ejecutarse el ensamblado
        Dim EntryPoint As MethodInfo = Ensamblado.EntryPoint
'Lo invocamos pasandole un Array de Strings vacío ya que éste indica los Argumentos (args) y no le quiero pasar ninguno
        EntryPoint.Invoke(Nothing, New Object() {New String() {}})
'Se ejecuta la PoC :)
    End Sub

End Module


Saludos!
#1105
Buenas noches a todos,

el propósito de este post es informar sobre una vulnerabilidad hallada en la actualización de firmware de los routers Cisco EPC3825 suministrados por la compañía telefónica vasca Euskaltel. No me hago responsable del uso y/o aprovechamiento de la vulnerabilidad que va a ser explicada.

Esta mañana, como cualquier otra, me encontraba en la universidad trabajando en un proyecto que tengo entre manos. Al tomarme un rato libre me he dispuesto a escanear los servicios que corren detrás de mi router a través de la red de la universidad. Como uno de mis ordenadores está asociado a un servicio de redireccionamiento DNS gratuito he conseguido la IP pública de mi red, es decir, la IP con la que realizas consultas sobre los diferentes servicios que ofrece Internet. Al finalizar el escaneo he comprobado que el puerto 8080 (generalmente empleado como proxy para acceder remotamente a la configuración del router) se encontraba abierto. Para mí asombro dicha opción se encontraba deshabilitada en el panel de administracción remota de éste por lo que empecé a pensar que podría ser un fallo de configuración del router o de la ISP vasca.

Al de un rato, en casa, me comuniqué con el servicio de averías de Euskaltel notificándoles mi problema y abriendo un parte de incidencia, ya que ellos no supieron explicarme lo que realmente ocurría con dicho servicio, incluso llegaron a decirme que había instalado Software adicional que podría causar que dicho puerto estuviera abierto o que había configurado erróneamente el dispositivo. Como soy bastante paranoico con ciertas cosas, y más cuando tienes una puerta trasera que actualmente no está parcheada me he enfocado en comprobar si con otros dispositivos ocurre lo mismo.

Como prueba de concepto, he sido capaz de acceder al panel administrativo de otros dispositivos Cisco EPC3825 a través de la ya mencionada "puerta trasera", por lo que se confirma la existencia de dicha vulnerabilidad en este modelo de enrutadores.

Cabe decir que la ISP vasca instala las pertinentes actualizaciones cuando lo ven necesario, sin embargo, como me he podido percatar, no tenían nociones de que este problema de inseguridad estaba presente en dicha versión del Firmware. Lo más seguro es que no tarden mucho tiempo en parchearla, pero por ahora sólo nos podemos defender aplicando ciertas medidas de seguridad, aquí os dejo algunas recomendaciones a los usuarios con el mismo problema:

Cambiar las credenciales predeterminadas empleadas en la autentificación del panel administrativo del dispositivo, así como la filtración del puerto empleado por el Proxy para que bloquee las posible conexiones sobre dicho servicio.

Sed buenos ;)

Saludos!
#1106
Bugs y Exploits / Re: [Metasploit] j7u10
16 Enero 2013, 23:02 PM
El exploit descubierto en enero que permitía la ejecucción arbitraria y remota de código ha sido parcheado en la última versión de Java (7 U11), me refiero al JmxB ver 7. Me dio por descargar los módulos Jre17_exec y JmxB para java de metasploit, los modifiqué añadiéndoles la URL del ejecutable para que cuando el exploit consiga bypassear el SandBox descargue dicho .exe en el equipo que visite el enlace que contiene el .Jar malicioso y en la update 11 nada de nada. En cambio en la update 10 ambos van de perlas, aunque el Jre17 es detectado por el AV :P . Todo esto lo he realizado sin fin malicioso alguno, sólo implementar la PoC para ver que alcance tiene la susodicha vulnerabilidad.

Recomiendo actualizar Java y establecer la política de seguridad en "High" (para que nos notifique y avise de si queremos ejecutar el applet en caso de toparnos con un .jar en cualquier web).

Otro 0day? No debería de sorprenderme a estas alturas, pues está bien sabido que las aplicaciones más empleadas en ciertos entornos son el objetivo de los investigadores de seguridad. Ya venderlo, publicarlo y/o notificar a la empresa relacionada con la brecha de seguridad es otra cosa, cada uno, uno es.

Saludos!
#1107
El código que te puse es para que veas como trabajando con señales puedes bloquear procesos y ponerlos a la espera de una señal. En cuanto a el error que obtienes, como dice $Edu$ se produce al tratar un tipo de dato no comprendido entre los límites establecidos de dicho tipo de dato. Por ejemplo el tipo de variable Integer soporta números comprendidos entre -2147483647 y +2147483647, si te salieras de ese límite se produciría el OverFlow.

Revisa el código del Thread en busca de posibles errores en los datos que almacenas en las distintas variables. Te recomiendo que Debuguees la aplicación para ver que valores van tomando éstas.

Saludos!
#1108
Application.DoEvents() es una instrucción propia de VB6 y ésto es .NET. No es recomendable emplear técnicas vb6 en VB.NET pues para algo tenemos el Framework.
Supongo que lo que quieres es que se ejecute un hilo y se detenga la ejecucción del código que sigue después de la llamada .Start() del hilo hasta que el Thread haya terminado su ejección.

Empleando la clase ManualResetEvent bloqueas la ejecucción del código hasta que el objeto que contiene la instancia de ManualResetEvent haya recibido una señal.

Ejemplo:

Código (VB.NET) [Seleccionar]

Dim manualEvent As New ManualResetEvent(False)
Private Sub ThreadProc(Byval Parametros As Object()) 'Pasamos todos los parametros por valor dentro de un Array de tipo Object
'Extraemos los parametros
'Ejecutamos las instrucciones de este método
'...

'Mandamos la señal a ManualEvent diciendole que siga con la ejecucción del programa
ManualEvent.Set()
End Sub

Private Sub EjecutarThread()
Dim t as new thread(AddressOf ThreadProc)
t.start(obj()) 'Le pasas al thread el array que contiene los parámetros

'Esperamos hasta que ManualEvent reciba la señal
ManualEvent.WaitOne()
MsgBox("Thread Completado")
End Sub
#1109
Bugs y Exploits / Re: [Metasploit] j7u10
15 Enero 2013, 19:40 PM
Con la update de java 11 parchearon ya el bug que permitia salirse del SandBox y ejecutar código arbitrario remotamente? Me refiero a la vulnerabilidad que explotaba Jre17 exec.
Gracias por compartirlo, pues es un regalo de año nuevo bastante curioso y que por lo que veo de dos vulnerabilidades sólo han parcheado una xD

Estoy actualizando java para ver los resultados jeje

Saludos!
#1110
Bill Gates a visto fortuna donde otros no veían nada, aunque la manera de prosperar haya sido mediante jugarretas y estrategias poco "limpias". Eso si ha levantado uno de los mayores imperios monopolistas que existe y en mi opinión el conocimiento y el software deben ser libres.

Cita de: dimitrix en 15 Enero 2013, 11:37 AM
Incluso come tarta en público.

No me acordaba xDDD. Aquí os lo dejo:
[youtube=640,360]http://www.youtube.com/watch?v=BBs9WC86ExU]http://www.youtube.com/watch?v=BBs9WC86ExU[[/youtube]