sábado, 31 de diciembre de 2011

Transferencia de Zona en múltiples sitios de Honduras y solución




Empresas y Universidades prestigiosas con este interesante desliz en cuanto a la seguridad.
La Transferencia de zona AXFR si es necesario esta bien que se haga pero no tiene porque ser publico.


unitec.edu                - > Universidad Tecnologica de Honduras
gpsandsecurity.com - > Sistemas de GPS
interbanca.hn           - > Transacciones bancarias online
continental.hn           - > Grupo Continental
canal11.com            - > Canal de televisión.
cablecolor.hn           - > ISP y cable operadora. (ns1.cablecolor.hn)
unah.edu.hn             - > Universidad Autónoma de Honduras
gcshn.hn                  - > Grupo Cable Sula
imvesa.hn                - > Distribuidora de automóviles Mazda y otros.
procredit.hn             - > Banco
amnet.com.hn          - > ISP y cable operadora (Ahora Tigo pero este dominio aun esta activo)
globalnet.hn             - > ISP
proceso.hn              - > Periodico electronico.


Y como el caso no es señalar el error pues todos podemos cometerlos, tambien dejo una breve explicacion para solucionarlo (Linux):

Debemos evitar que la transferencia de zona pueda realizarse desde internet yq ue solo se efectue entre los dos servidores DNS de confianza:

 DNS primario añadimos al named.conf la siguiente config:


Para ello en el servidor de DNS primario añadimos al named.conf la siguiente config:

options {
   allow-transfer { none; };
   ...
};

zone "eldominio.com" in {
   allow-transfer { 192.168.1.1; };
   ...
};

Al DNS principal le decimos que solo puede transferir la zona al DNS secundario (192.168.1.1)


Y como el DNS secundario no tiene que tranferir zona a nadie le decimos lo siguiente:


options {
   allow-transfer { none; };
   ...
};.




Cuando la transferencia se permite desde internet es una gran ayuda cuando se están recabando datos en un pentesting, podemos llegar a ver sitios interesantes como en este caso:

Ejemplo: Unitec.edu - honguito.unitec.edu

; <<>> DiG 9.7.3 <<>> unitec.edu @honguito.unitec.edu AXFR
;; global options: +cmd
unitec.edu. 86400 IN SOA campus.unitec.edu. mensajes.unitec.edu. 2011110422 10800 3600 1209600 86400
unitec.edu. 60 IN MX 0 ASPMX.L.GOOGLE.COM.
unitec.edu. 60 IN MX 5 ALT1.ASPMX.L.GOOGLE.COM.
unitec.edu. 60 IN MX 5 ALT2.ASPMX.L.GOOGLE.COM.
unitec.edu. 60 IN MX 10 ASPMX2.GOOGLEMAIL.COM.
unitec.edu. 60 IN MX 10 ASPMX3.GOOGLEMAIL.COM.
unitec.edu. 60 IN MX 10 ASPMX4.GOOGLEMAIL.COM.
unitec.edu. 60 IN MX 10 ASPMX5.GOOGLEMAIL.COM.
unitec.edu. 86400 IN NS campus.unitec.edu.
unitec.edu. 86400 IN NS honguito.unitec.edu.
unitec.edu. 86400 IN TXT "v=spf1 a ip4:200.107.208.0/24 ip4:200.107.212.128/25 ip4:173.201.18.118 include:_spf.google.com ~all"
unitec.edu. 10 IN A 200.107.212.165
_jabber._tcp.unitec.edu. 86400 IN SRV 5 0 5269 im.unitec.edu.
_xmpp-client._tcp.unitec.edu. 86400 IN SRV 5 0 5222 im.unitec.edu.
_xmpp-server._tcp.unitec.edu. 86400 IN SRV 5 0 5269 im.unitec.edu.
alumni.unitec.edu. 10 IN A 200.107.208.145
andresdev.unitec.edu. 10 IN A 200.107.212.157
apollo.unitec.edu. 60 IN A 200.107.212.149
app.unitec.edu. 10 IN A 200.107.212.130
auth.unitec.edu. 10 IN A 200.107.208.2
auth2.unitec.edu. 10 IN A 200.107.208.2
authad.unitec.edu. 10 IN A 200.107.208.56
authp.unitec.edu. 10 IN A 200.107.208.10
av.unitec.edu. 60 IN A 200.107.212.136
ayuda.unitec.edu. 60 IN A 200.107.212.168
backup.unitec.edu. 10 IN A 200.107.208.9
bolsa.unitec.edu. 60 IN A 200.107.212.134
bucba.unitec.edu. 60 IN A 200.107.212.152
buctc.unitec.edu. 60 IN A 200.107.213.142
www.bv.unitec.edu. 60 IN CNAME im.unitec.edu.
campus.unitec.edu. 10 IN A 200.107.208.2
campus1.unitec.edu. 10 IN A 200.107.208.2
www.campus2.unitec.edu. 10 IN A 200.107.212.145
cap.unitec.edu. 60 IN A 200.107.212.168
cdl.unitec.edu. 10 IN A 200.107.212.133
www.ceutec.unitec.edu. 60 IN CNAME im.unitec.edu.
cm.unitec.edu. 10 IN A 200.107.212.133
compras.unitec.edu. 10 IN A 200.107.212.133
conference.unitec.edu. 10 IN A 200.107.212.133
corpdev.unitec.edu. 10 IN A 200.107.212.157
corporativa.unitec.edu. 10 IN A 200.107.212.133
correo.unitec.edu. 10 IN A 200.107.208.2
crai-ebrary.unitec.edu. 60 IN A 200.107.208.54
www.creditoeducativo.unitec.edu. 60 IN CNAME campus.unitec.edu.
crm.unitec.edu. 60 IN A 200.107.212.133
crmadmin.unitec.edu. 10 IN A 200.107.212.133
crmo.unitec.edu. 10 IN A 200.107.212.133
cuadernoit.unitec.edu. 60 IN A 188.121.55.128
cvu.unitec.edu. 10 IN A 200.107.212.133
www.cvu.unitec.edu. 60 IN CNAME cvu.unitec.edu.
db.unitec.edu. 60 IN CNAME dblinux.unitec.edu.
www.desarrollo.unitec.edu. 60 IN CNAME campus.unitec.edu.
www.desarrollolocal.unitec.edu. 60 IN CNAME im.unitec.edu.
devnull.unitec.edu. 10 IN A 200.107.208.9
dl.unitec.edu. 10 IN A 200.107.212.131
docs.unitec.edu. 10 IN A 200.107.212.133
EduredServ.unitec.edu. 10 IN A 200.107.208.6
elearning.unitec.edu. 10 IN A 200.107.212.154
elearningdev.unitec.edu. 10 IN A 200.107.212.154
emprendedor.unitec.edu. 60 IN CNAME campus.unitec.edu.
evdistancia.unitec.edu. 10 IN A 200.107.212.133
fo.unitec.edu. 10 IN A 200.107.208.2
g.unitec.edu. 60 IN MX 0 ASPMX.L.GOOGLE.COM.
g.unitec.edu. 60 IN MX 5 ALT1.ASPMX.L.GOOGLE.COM.
g.unitec.edu. 60 IN MX 5 ALT2.ASPMX.L.GOOGLE.COM.
g.unitec.edu. 60 IN MX 10 ASPMX2.GOOGLEMAIL.COM.
g.unitec.edu. 60 IN MX 10 ASPMX3.GOOGLEMAIL.COM.
g.unitec.edu. 60 IN MX 10 ASPMX4.GOOGLEMAIL.COM.
g.unitec.edu. 60 IN MX 10 ASPMX5.GOOGLEMAIL.COM.
g.unitec.edu. 10 IN A 200.107.208.2
gaea.unitec.edu. 60 IN A 200.107.208.25
gm.unitec.edu. 10 IN A 200.107.208.7
googleffffffffa42850e4.unitec.edu. 60 IN CNAME GOOGLE.COM.
graduados.unitec.edu. 60 IN A 200.107.212.133
helpdesk.unitec.edu. 10 IN A 200.107.212.133
henry.unitec.edu. 10 IN A 200.107.208.16
historial.unitec.edu. 10 IN A 200.107.212.133
honguito.unitec.edu. 10 IN A 173.201.18.118
im.unitec.edu. 10 IN A 200.107.212.133
ipv6.unitec.edu. 60 IN AAAA 2801:0:30:102::2
it.unitec.edu. 60 IN A 200.107.212.133
itwiki.unitec.edu. 10 IN A 200.107.212.133
www.lab.unitec.edu. 60 IN A 172.16.1.61
www.lab.unitec.edu. 60 IN A 200.107.208.145
lms.unitec.edu. 60 IN A 200.107.212.158
lmscorporativa.unitec.edu. 10 IN A 200.107.212.163
lmsdev.unitec.edu. 10 IN A 200.107.212.157
localhost.unitec.edu. 10 IN A 127.0.0.1
m.unitec.edu. 10 IN A 200.107.208.2
maestros.unitec.edu. 60 IN CNAME campus.unitec.edu.
mail.unitec.edu. 10 IN A 200.107.208.8
mail2.unitec.edu. 10 IN A 200.107.208.11
mainserver.unitec.edu. 60 IN A 192.168.3.3
maps.unitec.edu. 10 IN A 200.107.208.15
marcajes.unitec.edu. 60 IN A 200.107.208.253
matricula.unitec.edu. 10 IN A 200.107.208.144
maya.unitec.edu. 10 IN A 200.107.212.144
mercadeo.unitec.edu. 10 IN A 200.107.212.133
monitor.unitec.edu. 10 IN A 200.107.208.6
mrtg.unitec.edu. 10 IN A 200.107.212.136
mysql.unitec.edu. 10 IN A 200.107.212.144
mysqldb.unitec.edu. 10 IN A 200.107.212.144
notas.unitec.edu. 10 IN A 200.107.208.253
notas1.unitec.edu. 10 IN A 200.107.208.253
nuevo.unitec.edu. 10 IN A 200.107.212.133
nyx.unitec.edu. 60 IN A 200.107.212.160
openaudit.unitec.edu. 60 IN A 200.107.212.170
pbxctc.unitec.edu. 60 IN A 200.107.210.194
pbxlce.unitec.edu. 60 IN A 200.107.213.162
pbxsps.unitec.edu. 60 IN A 200.107.215.98
pbxtgu.unitec.edu. 60 IN A 200.107.208.53
pgdb.unitec.edu. 10 IN A 200.107.208.26
pixfirewall-tgu.unitec.edu. 10 IN A 200.107.208.130
pm-sps.unitec.edu. 10 IN A 200.107.215.130
pm-tgu.unitec.edu. 10 IN A 200.107.212.2
portal.unitec.edu. 10 IN A 200.107.208.253
portal2.unitec.edu. 60 IN A 200.107.208.253
proyectos.unitec.edu. 60 IN CNAME campus.unitec.edu.
pruebas.unitec.edu. 10 IN A 200.107.212.133
rb.unitec.edu. 10 IN A 200.107.212.133
recuperacion.unitec.edu. 10 IN A 200.107.212.133
registro.unitec.edu. 10 IN A 200.107.208.142
www.registro.unitec.edu. 10 IN A 200.107.208.2
registrodev.unitec.edu. 10 IN A 200.107.208.143
rich.unitec.edu. 10 IN A 200.107.208.15
rich2.unitec.edu. 10 IN A 200.107.208.12
richdev.unitec.edu. 10 IN A 200.107.208.15
router-sps.unitec.edu. 10 IN A 190.4.9.250
router-teg.unitec.edu. 10 IN A 200.107.210.146
router-tgu.unitec.edu. 10 IN A 200.107.208.1
sb.unitec.edu. 10 IN A 10.10.10.5
www.sb.unitec.edu. 10 IN A 200.107.209.251
server-ctc-tgu.unitec.edu. 60 IN A 192.168.1.20
sg.unitec.edu. 10 IN A 200.107.212.133
sgbancos.unitec.edu. 10 IN A 200.107.208.253
smtp.unitec.edu. 10 IN A 200.107.208.11
smtpo.unitec.edu. 10 IN A 200.107.208.10
soporte.unitec.edu. 10 IN A 200.107.212.133
spacewalk.unitec.edu. 60 IN A 200.107.208.66
sugarcorp.unitec.edu. 10 IN A 200.107.212.133
talento.unitec.edu. 10 IN A 200.107.212.133
archivos.tgu.unitec.edu. 10 IN A 192.168.1.16
laboratorio.tgu.unitec.edu. 10 IN A 200.107.212.139
unitecdev.unitec.edu. 10 IN A 200.107.212.165
uv.unitec.edu. 60 IN A 200.107.212.131
www.uv.unitec.edu. 60 IN A 200.107.212.131
uv1.unitec.edu. 60 IN A 200.107.212.131
virtual.unitec.edu. 60 IN A 200.107.212.133
www.virtual.unitec.edu. 60 IN CNAME virtual.unitec.edu.
virtual2.unitec.edu. 10 IN A 200.107.208.19
web.unitec.edu. 10 IN A 200.107.212.133
wpad.unitec.edu. 60 IN A 200.107.208.2
www.unitec.edu. 10 IN A 200.107.212.165
unitec.edu. 86400 IN SOA campus.unitec.edu. mensajes.unitec.edu. 2011110422 10800 3600 1209600 86400
;; Query time: 209 msec
;; SERVER: 173.201.18.118#53(173.201.18.118)
;; WHEN: Sat Dec 31 09:05:06 2011
;; XFR size: 154 records (messages 1, bytes 3777)


Hasta la PROXYma.

viernes, 30 de diciembre de 2011

[Programación] Código para enviar SMS a Tigo desde la web



Actualmente acá tengo implementado este código http://mensajestigo.comze.com/ , esta funmcionando correctamente desde donde ustedes pueden enviar mensajes desde la web, por ejemplo si tenes tu Black Berry y no queres gastar tu saldo en un SMS y tenes internet inalambrico o tu servicios de datos activo podes entrar a esa dirección y enviar desde ahi tu mensaje.

Este es el codigo que hace la "magia", si tienen alguna consulta sobre su funcionamiento, las funciones que se usan y porque se usan no duden en comentarlas aquí o en mi cuenta de twitter @45p1d4_16n15:

Necesitaran este archivo http://simplehtmldom.sourceforge.net/

Ahora vamos al código (El código es sencillo acá la clave es la ingeniera inversa que le aplique al flash de Mensajes web de tigo, que en otra entrada explicare con lujo de detalles como lo hice):

En teoría debería de funcionar para envió de SMS hasta Colombia, Guatemala, El Salvador y Paraguay, pero no tuve como comprobar.

    <?php
    header('Content-Type: text/html; charset=UTF-8');
    
    require("simplehtml.php");
    $area=$_POST['area'];
    $nick=$_POST['nick'];
    $cel=$_POST['cel'];
    $mensaje=$_POST['mensaje'];
    $num = rand(1,30000);
    $url = "http://interactivo.mensajito.com//interactivo555/client.php?orden=1&nick=".$nick."&foo=".$num;
    $var = file_get_html($url)->plaintext;
    
    
    $num2 = rand(1,30000);
    
    $url1="http://interactivo.mensajito.com//interactivo555/client.php?orden=21&".$var."&nick=".$nick."&dstphone=".$area.$cel."&pin=undefined&foo=".$num2;
    $var1 = file_get_html($url)->plaintext;
    //echo $var ."<br>";
    $texto = curl_init($url1);
    $resp = curl_exec ($texto);
    curl_close($texto);
    //echo $resp;
    
    
    $url2="http://interactivo.mensajito.com/interactivo555/client.php?orden=3&".$var."&nick=".$nick."&mensaje=".urlencode($mensaje)."&foo=".$num2;
    //echo "- ".$url2;
    $texto2 = curl_init($url2);
    $resp2 = curl_exec ($texto2);
    curl_close($texto2);
    echo "Enviado!"
    
    ?>


Acá en Pastebin para los que lo quieren ver mejor. -> http://pastebin.com/aWGqK3a4

Hasta la PROXYma.

sábado, 24 de diciembre de 2011

[Herramienta] Enviando SMS a Tigo Honduras desde Bash


El código que a continuación les compartiré es muy sencillo y usa un hosting gratuito donde aloje mi script.

Pero para que me puede servir enviar mensajes a mi celular a través de bash (ademas de "vernos" mas geeks)? se preguntaran pues bueno la respuesta es simple, para los que trabajamos con servidores que funcionan 24/7/365 es indispensable darnos cuenta cuando hay algún problema, error o darnos cuenta de algún dato en especifico.

El código para enviar sms a Tigo honduras desde bash es el siguiente:

#!/bin/bash

wget -q --post-data="msj=$1&nick=$2" -O- 
http://mensajestigo.comze.com/bash.php?num=Tu Numero de Cel

Este código lo haremos funcionar así:
sh archivoCreado.sh Hola como estas? TuNombre TuNumero

Ahora un ejemplo de como nos podría ser útil:
Este script comprueba el estado de Apache y nos envía un mensaje dependiendo del estado.


#!/bin/bash


RESTART="/etc/init.d/apache2 restart"

#Directorio de los comandos pgrep
PGREP="/usr/bin/pgrep"

# Nombre del servicio
# Para Debian el nombre es: [B]apache2[/B]
HTTPD="apache2"

# Busca el pid de nuesto servicio
$PGREP ${HTTPD}

if [ $? -ne 0 ] # if apache not running
then
 # Reinicia el servicio del apache
wget -q --post-data="msj=Tenemos que reiniciar, no te preocupes mi Root lo hare yo mismo!&nick=ServerWeb" -O- http://mensajestigo.comze.com/bash.php?num=Tu Numero de Cel
 $RESTART
else
wget -q --post-data="msj=Todo Bien Mi Root!&nick=ServerWeb" -O- http://mensajestigo.comze.com/bash.php?num=Tu Numero de Cel
fi

Hasta la PROXYma


miércoles, 21 de diciembre de 2011

[Linux] Conectando entre servidores por SSH sin password

Bueno amigos esto mas que todo es una nota mental, debido a una necesidad que surgio en el trabajo, donde necesitaba copiar archivos via ssh en la madrugada asi que debia dejarlo en el Crontab, pero aqui es donde necesitaba que esto se ejecutara sin pedir contraseña para autenticación, asi que me puse a leer.

Y aca les dejo la solución:

Llamaremos Server1 al server de donde voy a sacar los archivos y Server2 donde voy a copiar los archivos.

En el Server2 creamos una llame publica asi:

# ssh-keygen -d 

Nos va a pedir ciertos datos a todo le damos enter y nos fijamos en la ruta default que se guarda la llave en este caso es /root/.ssh/id_dsa.pub

Siempre en Server2:

# cat ~/.ssh/id_dsa.pub | ssh usuario@ip-Server1 'cat >> ~/.ssh/authorized_keys'

Con esta linea copiamos el contenido del archivo de nuestra llave publica que esta en Server2 a el archivo de authorized_keys en Server1.


Luego de ejecutar esta linea podemos conectarnos al Server1 haciendo ssh o scp y no nos pedira cnotraseña.




Hasta la PROXYma.

viernes, 16 de diciembre de 2011

[S.O] Instalación de Minix en VirtualBox


Instalación de Minix
Una vez descargado el iso MINIX 3.1.8 , creamos la máquina virtual con VirtualBox.
Click en  nueva máquina y elegimos como sistema Operativo Linux /Other Linux.

En el siguiente paso, tenemos que seleccionar la memoria RAM que le queremos dedicar Minix. Yo opté por dejarle 256MB de RAM, pero esto es a gusto del consumidor, teniendo en cuenta los límites inferiores (requisitos mínimos).

En el siguiente paso, configuramos el disco duro virtual. Una buena opción es hacerlo dinámico, y así no nos ocupa tanto espacio en nuestro sistema real.

En Configuración y luego en Almacenamiento agregamos una nueva unidad y le asignamos la imagen iso que previamente descargamos, esto para que la maquina virtual arranque utilizando el iso.

En Configuracion/Red yo utilice Conectado a :Adaptador puente luego escoje el nombre de la controladora.

Una vez que inicie, tenemos que entrar como root. La contraseña esta en blanco. Una vez que estemos dentro, iniciamos el proceso de instalación de Minix. Para ello usamos el comando:

#setup

Ahora empezamos el proceso de instalación. Son una serie de pasos sencillos para lo que necesitamos podemos dejar todo lo que nos solicite en sus valores default.

Una vez que termine todo el proceso podemos apagar la maquina virtual , vamos a Configuración y almacenamiento y quitamos la iso de el árbol de almacenamiento para evitar que vuelva a arrancar desde ahí.

Iniciamos la maquina virtual y listo tendremos instalado nuestro Minix.
Si te pide Login: usuario root y password en blanco.

Para setear nuestro password utilizamos:

#passwd

Ahora procedemos a instalar nuestras herramientas de trabajo:

Yo instale vim, *openssh , nano y gcc:

#pkgin install vim
#pkgin install nano
#pkgin install gcc44

*La instalación de openssh el cual utilizaremos para la conexión con Eclipse y desde ahi modificar los archivos:

#pkgin install openssh

Luego creamos las llaves de seguridad:


#ssh-keygen -t rsa1
#ssh-keygen -t rsa
#ssh-keygen -t dsa


Iniciamos:

#/usr/pkg/sbin/sshd

/*TODO Conectando Minix con Eclipse*/

jueves, 15 de diciembre de 2011

[S.O] Agregando un System Call a MINIX 3 [Programación]



Comencemos por explicar que es una llamada al sistema:

Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado, previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador.

Para que esto funcione se utilizan librerías como intermediarias.
los sistemas operativos proveen bibliotecas que relacionan los programas de usuario y el resto del sistema operativo, usualmente una biblioteca C como glibc o el runtime de Microsoft C.

Para este pequeño laboratorio utilice la distribucion de Minix 3.1.8 actual para ser exacto esta: minix_R3.1.8-r8398.iso.bz2 (288 MB) 

Preparando el ambiente para comenzar a programar la llamada al sistema.

Una vez que tenemos todo eso listo, manos a la obra:
/***Recomiendo utilizar un editor como vim o nano (instalar vim: pkgin install vim) para crear y modificar los archivos en Minix esto por los inconvenientes que presenta en algunos casos trabajar con eclipse desde windows ya que le agrega caracteres al final de cada linea***/

1-) Agregamos el código de nuestra llamada al VFS task

Este es el código que formara parte del kernel y se ejecutara cuando se invoque el system call. Escribir el código de la función do_holamundo() y agregarla al archivo /usr/src/servers/vfs/misc.c


PUBLIC int do_holamundo()
{
printf("Hola Mundo.\n");
printf("Use your imagination...\n");
return(OK);
}




2-) Abrimos el archivo callnr.c que se encuentra en /usr/src/include/minix


Incrementar en uno la cantidad de system calls permitidos y definir un
numero que identificara para la llamada holamundol().



En la primera linea encontramos esto:

#define NCALLS 113 /*113  number of system calls allowed */

Gracias a el comentario sabemos lo que hace, ok por logica y como vamos a agregar un system call mas entonces le agregamos uno mas quedando en 114 asi:

#define NCALLS  114 /*114  number of system calls allowed */

En este mismo archivo buscamos la linea:

#define GCOV_FLUSH 112 /* flush gcov data from server to gcov files */

y agregamos nuestra definicion en la siguiente linea:

#define HOLAMUNDO 113

3-) Abrimos el archivo proto.h que se encuentra en /usr/src/servers/vfs
Buscamos el bloque de  /* misc.c */
y al final agregamos:

_PROTOTYPE( int do_holamundo, (void) );

*Antes de /* mount.c */

4-) Indicar a la tarea de VFS que debe invocar la función do_holamundo() cada vez que se intente acceder a la llamada numero 113. Modificar /usr/src/servers/vfs/table.c y agregar:

do_holamundo, /* 113 = HOLAMUNDO */


5-) Indicar a la tarea PM que debe invocar la función no sys() cada vez que se intente acceder a la llamada numero 113. La función no sys() retorna un código de error indicando que se intento utilizar un servicio que no brinda la tarea. Modificar /usr/src/servers/pm/table.c y agregar:

no_sys, /* 113 = HOLAMUNDO */



Compilar el código del kernel que acabamos de modificar, ejecutar como el usuario root los siguientes comandos:

# cd /usr/src/tools
# make image
#make install
# make hdboot
# reboot

Ahora listo ya modificamos el kernel y agregamos nuestra llamada al sistema pero como podemos saber que funciona?
R//= Creamos un programita en C que la invoque.


Crear el archivo hellocall.c que contenga:


Notar que el llamado a syscall() toma como parámetro un mensaje (dummy_msg), ese mensaje es enviado al kernel y se lo puede acceder desde las funciones implementadas dentro del kernel como ser do_holamundo(). De esa manera se pueden enviar datos desde los programas de usuario a las funciones que corren desde el kernel:


#include <lib.h>
#define holamundo _holamundo
#include <unistd.h>
PUBLIC int holamundo(void)
{
message dummy_msg;
return(_syscall(VFS_PROC_NR,HOLAMUNDO,&dummy_msg));
}


-Proveemos la declaracion de la función de librería. Escribir el archivo holamundo.h:


#ifndef _ANSI_H
#include <ansi.h>
#endif
_PROTOTYPE( int holamundo, (void) );



-Escribir el archivo mysyscall.s:

.sect .text
.extern __holamundo
.define _holamundo
.align 2
_holamundo:
jmp __holamundo


-Compilar los archivos cuyo código objeto formara nuestra librería, ejecutar como usuario root:

#cc -c ./_holamundo.c
#cc -c ./holamundo.s


Enlazar los archivos holamundo.o y _holamundo.o para crear nuestra librería libhello.a. El compilador de Minix busca las librerías en el directorio /usr/lib/i386 por lo que es necesario copiar nuestra librería a ese sitio.

Ejecutar como usuario root:

#aal cr ./libhello.a ./holamundo.o
#aal cr ./libhello.a ./_holamundo.o
#cp ./libhello.a /usr/lib/i386


Estamos en condiciones de invocar el nuevo system call que agregamos al kernel, para utilizarlo escribir el programa saludo.c:

#include "holamundo.h"
int main (void)
{
holamundo();
return(0);
}

Otra manera de invocar la llamada en C es asi:


#include<lib.h>
#include<unistd.h>

#define SYS_CALL_NUMBER 113 /*Donde 113 es el numero de llamada que agregamos*/
int main(void)
{
message m;
_syscall(1,SYS_CALL_NUMBER,&m);
return 0;

}


Compilamos el programa:

#cc test.c  -o test -l hello
Ejecutamos
#./test

En mi caso aca esta el resultado:






lunes, 5 de diciembre de 2011

[S.O] Minix3 un pequeño gigante ("el sucesor de Linux")


MINIX es un clon del sistema operativo Unix distribuido junto con su código fuente y desarrollado por el profesor Andrew S. Tanenbaum en 1987 el cual

Fue creado para enseñar a sus alumnos el diseño de sistemas operativos en la Vrije Universiteit de Ámsterdam. La razón de su desarrollo fue porque Unix estaba bajo restricciones de licencia de AT&T, era demasiado complicado y corría sobre máquinas complejas; algo completamente antipedagógico.

MINIX tiene un ventaja muy marcada sobre UNIX, se escribió una década después y se ha estructurado en forma mas modular.

Esta diseñado bajo el paradigma de micro-kernel, actualmente el codigo completo de MINIX consta de solamente 6,000 lineas de codigo aproximadamente.

Para una persona poco familiarizada con los elementos internos de un sistema operativo, MINIX es una buena opción que le permite entender casi todos los elementos del sistema con solo algunos meses de uso y estudio.


Minix 3 utiliza mensajes de longitud fija para el proceso de las comunicaciones. Este diseño simplifica la estructura del código y ayuda a mitigar el peligro de desbordamientos devbúfer. El sistema de ficheros Minix se
ejecuta como un simple proceso de usuario.


La fiabilidad del sistema Minix mejora gracias a un componente innovador, el servidor de reencarnación, el cual actúa como el padre de todos los servicios y los controladores. Detecta los bloqueos muy rápidamente supervisando continuamente el funcionamiento de los procesos críticos, reiniciando los procesos caídos cuando esnecesario para mantener el sistema funcionando.

La Seguridad en Minix 3


la Univer-sidad Técnica de Ciencias Aplicadas de Berlín ha migrado el amplio framework de Netfilter a Minix3.


La estabilidad de la arquitectura micronúcleo ofrece beneficios adicionales.
En Linux, un atacante que tenga éxito en la provocación de un bloqueo – por ejemplo, mediante la explotación de un desbordamiento de búfer en la función do_replace() – puede conseguir doblegar un firewall Linux. En Minix3, un único proceso de usuario puede bloquearse sin comprometer la seguridad del sistema. Simplemente el servidor de reencarnación reinicia el proceso. Las diferencias son aún más evidentes si un atacante logra la ejecución de código. En Minix, un proceso de usuario secuestrado sigue siendo un problema, pero gracias al aislamiento el efecto es mucho menos grave.

En mi mente imagino a Minix siendo utilizado como S.O en sistemas electrónicos embedidos como por ejemplo Firewalls, Hardware de monitoreo de redes etc..

Hay que seguirle la pista a este "pequeño" S.O.

En otra entrada estare publicando tips de programacion y posiblemente haremos una llamada al sistema y compilaremos el kernel.


Hasta la PROXYma.







viernes, 2 de diciembre de 2011

[Audio II]Actualizado, Y así son las Extorsiones en Honduras

Esta vez les traigo una grabación proporcionada por un amigo al que intentaron extorsionar pidiéndole dinero en una llamada telefónica.

La mayoría de esta gente no sabe a quien llama y juega con la mente de la persona a quien le dicen que lo van a matar o que los van a "tirasear" como dice el amigo en la grabación  solamente es pura intimidación en la mayoría de los casos. Esta gente tiene diferentes tipos de operar a veces toman números telefónicos al azar o que quizás consiguen por algún conocido, algunos hasta hacen cosas mas elaboradas como estar cerca del lugar donde la victima vive o lo siguen durante todo el día o varios días para usar esos datos a manera de intimidación a la hora de la llamada.

Asi que no dejemos que jueguen con nuestra mente pero siempre con precaución y analizando la informacion que esta gente tiene de nosotros.

Sin mas les dejo el audio:


Parte 2 (Actualizado):La "victima" le miente y se burla prácticamente del extorsionador.




Y acá les dejo un post que hice hace algunos días con algunos consejos ante estas situaciones:

¿Qué hacer en una situación de extorsión?

martes, 29 de noviembre de 2011

[Research] J-Boss sin login y accesos default en entidades gubernamentales (Peru, Mexico, Ecuador, El Salvador , India y Colombia)

Este sera un post mixto pero entorno a un mismo tema. Muchas empresas y entes gubernamentales en todo el mundo sufren de este mal.

Utilizan JBoss (es un servidor de aplicaciones J2EE de código abierto implementado en Java puro) y por X o Y motivo lo dejan con acceso directo sin ningún tipo de autenticacion a la consola web y/o jmx-console.
La Ventaja de JBoss es que puede ser utilizado en cualquier sistema operativo para el que esté disponible Java.

Pero que es JMX?
JBoss implementa JMX en su microkernel. El propio servidor dispone de un una consola JMX accesible por la URL http://ipservidor:puerto/jmx-console que muestra los MBeans públicos accesibles por ella o programáticamente por código Java.

Ejemplos:
http://pnww.mimdes.gob.pe/jmx-console/

http://qasistemas2.edomex.gob.mx/jmx-console/

http://sigpro.conelec.gob.ec/jmx-console/

http://sist.mag.gob.sv/jmx-console/

http://aplicaciones.emmopq.gov.ec/jmx-console/


Algunas acciones útiles:

  • Mostrar el árbol JNDI
  • Forzar un volcado de memoria
  • Mostrar el uso del pool de memoria
  • Gestionar el escáner de despliegues
  • Redesplegar una aplicación
  • Acceder a la base de datos Hypersonic
  • Detener JBoss
  • Conocer estado de los EJB desplegados e instanciados
Web-console acceso directo y con datos default:

El Jboss Web Console (http://ipservidor:puerto/web-console/) muestra también la consola JMX en jerarquía de árbol.
Ejemplo:


https://tigoonline.tigo.com.co/web-console/ (Digamos que estas es la parte 2 de Tigo)
admin:admin


Hasta la PROXYma.

lunes, 28 de noviembre de 2011

Entendiendo el funcionamiento de un script de Nmap

En este post intentare ilustrar el funcionamiento de un script básico de Nmap, para ser específicos el http-enum, que es muy utilizado para enumerar directorios y/o aplicaciones populares que estén presentes en un servidor web.

Primero buscamos el script que debería de estar localizado en la carpeta de instalacion de Nmap dentro del directorio scripts.

Encontramos el script y lo abrimos con nuestro editor preferido (a los Winusers les recomiendo Notepad++):
En la primera linea de código nos encontramos con la descripción del código donde nos explica detalladamente lo que hace el script.

Datos generales

Un script de Nmap se compone en diferentes secciones y no todas son obligatorias o necesarias:


Cabecera.


  • id  : nombre del script que se muestra en la salida Nmap.
  • description : descripción del script, notas.
  • author : autor del script.
  • categories :  categoría del script
  • license : licencia
  • dependencies :  Estos son otros scripts que se requieren incluir para el funcionamiento.


Funciones.

portrule / hostrule Datos para decidir si se cumple y ejecuta el script. Los datos pueden ser host y/o port.
action (acción) este es digamos el cuerpo del script donde se encuentra las acciones que realizara el propio script.

Veamos el Codigo del script:

En las lineas 71 y 73 encontramos las extensiones de archivos que busca el script, y aqui es donde nosotros podemos agregar las extensiones que creamos necesarias a nuestro gusto.

En la linea 337 comienza el "action" del script y en las siguientes lineas lee los argumentos que nosotros enviamos cuando ejecutamos nmap y llamamos al script, si es que los enviamos, pero la linea que nos debe llamar la atención es la 343 donde encontramos esto:

local fingerprint_file = stdnse.get_script_args({'http-enum.fingerprintfile', 'fingerprints'}) or 'http-fingerprints.lua'

Se le asigna a la variable fingerprint_file el nombre del archivo http-fingerprints.lua el cual se encuentra en la carpeta nselib/data/ en la instalacion del Nmap.

La linea 349:
local status, fingerprints = get_fingerprints(fingerprint_file, category)

Llama a la funcion get_fingerprints y le envía como parametro el nombre del archivo y la categoria.
El codigo de esta funcion esta en la linea 157 y es donde encontramos el funcionamiento de la misma, que lee las url que estan en el archivo http-fingerprints.lua de acuerdo a la categoría que ingresamos como parámetro.

Y una vez el script cuenta con esta información procede a probar con las url's obtenidas del http-fingerprints.lua y obtener los codigos 404 o 200 o 403 respectivamente si encuentra o no las rutas y/o archivos.

Es por eso que podemos llamar al script http-enum de la siguiente manera:

nmap -p 80,443 -A -v --script http-enums --script-args http-enum.category=management IPdelAMIGO

Si se fijan en el archivo http-fingerprints.lua en la linea 712 en la función table.insert lleva como parametro category=management y de esta manera pueden ver las demás categorias que incluye el script y agregar nuevas rutas que tengamos en nuestros diccionarios.

Hasta la PROXYma.




miércoles, 23 de noviembre de 2011

[Hack] Exposed Tigo Honduras, Guatemala, Bolivia, Paraguay, Colombia [1ra Parte]

Bueno esto digamos que fue debido a un SMS que me llego de esta compañía cuando estaba en lo mejor de mi sueño en la madrugada.

Comencemos con los hallazgos:

 http://www2.tigo.com.hn/XML/
http://www2.tigo.com.hn/XML/backend.xml
http://www2.tigo.com.hn/XML/cobranzas.xml
y asi sucesivamente...

En donde encontramos cosas interesantes como esta:

<DATABASE host="localhost" username="telefonoscom" password="teleCOMcel2i" name="hn_tigo" port="5432" type="postgreSQL">


Y ademas de esos muuuuchas tablas como para enriquecer nuestro diccionario.

Así como también podemos echar un vistazo por acá:


Aquí hay de todos los sabores un XSS en el wap de Tigo Guatemala: 


Viajemos hasta Paraguay donde encontramos un hermoso iSql en el form de login:


Pero hey! lo olvidaba regresemos a Guatemala:
En el siguiente login, pueden probar con varios usuarios y password pero lo interesante es que si colocal ' en user y password tambien ' luego ingresar y ups! ingresaron? yeaaah!



En Honduras también son muy generosos y nos regalan algunos datos:


Hey pero que tal si me regalan un path aunque sea no?..ok aquí esta:



En Colombia nos tienen a la vista de todo mundo esto:

Esperen la 2da y 3ra Parte!


Hasta la PROXYma!











 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Web Host