viernes, 25 de noviembre de 2011

Baterias de notebook - Upgrade Msi

Recuerdo en el colegio una vez haber escuchado que "Una batería es un conjunto de pilas". Y no estaban tan errados, si bien algunas se constituyen de celdas electroquímicas otras son literalmente un grupo de pilas.
Actualmente se utilizan las baterías de Iones de litio, y con ella se caen todos mitos del mantenimiento de las baterías.

El efecto memoria: Había que descargarlas por completo. No hay nada mas raro y falso. La primera vez que lo escuché no le encontraba explicación pero me lo habían explicado en la técnica. Esto sucedía cuando se formaban unos cristales en el interior, en este caso estábamos hablando de las baterías de níquel cadmio (Ni-Cd). Tiempo después fueron reemplazadas por baterías menos contaminantes y sin este efecto, por las de níquel e hidruro metálico (Ni-Hm).
-Las baterías de litio no presentan efecto memoria, pero si algo que denominaron pasivacion. Debido a su química interna se forma cloruro de litio, que se soluciona descargando y cargando completamente la batería mas o menos una vez al mes. Esto se puede obserbar en las notebook cuando no carga al 100% y queda algo así como 98% ya que se descalibra.
La carga inicial: Si bien varios fabricantes lo recomiendan, no es mas que otro mito heredado de las antiguas baterías. Las baterías de Ni-Cd y Ni-Hm que constituían aparatos electrónicos no eran tan "inteligentes" como hoy en día. Hoy en día los dispositivos son capaces de detectar la carga y cortar el paso de corriente (tal vez alguno de nosotros tenga un cargador de pilas que se apaga automaticamente y/o un led que avisa).
Tener enchufado el cargador con la batería es perjudicial: Como comenté anteriormente esto sucedía con las baterías de viejas. Las baterías de litio comienzan a fallar por distintos factores como el recalentamiento, la humedad etc. Aunque algún fallo en el cargador o sobrecarga puede afectar a la batería.

La baterías de la notebook son baterías inteligentes, dentro de las mismas se encontrar pilas a las que se denomina celdas junto a un circuito electrónico que comprueba su estado y otras variables.

¿Puedo reemplazar las pilas?
Las baterías tienen un ciclo de vida (de carga y descarga), y los fabricantes son muy consiente de ello. El circuito entre otras cosas posee:
-Un integrado, (en mi caso bq29330) un protector y medidor de carga mediante una interfaz serie SMBus. Controlando los ciclos de carga y descarga. Y se debe resetear por software.
-Dos transistores mosfet TPC3026, para cortar los ciclos de cargar.
-Un thermistor y un fusible térmico para el exceso de temperatura.



Cuando el circuito integrado decide que ya se cumplió la cantidad promedio de ciclos, manda una señal al Pc y este indica que hay que reemplazar la batería por una nueva. El contador interno evita que se siga utilizando la batería para evitar fallas (por mas que las pilas aun estén bien), y solo puede ser reseteado con una memoria especializada la cual obviamente los fabricantes no lo proporcionan al publico.
Otro tema es la temperatura, si existe un exceso de temperatura en las pilas el fusible se corta evitando posibles daños. Casos de incendio existen muchos, inclusive muchas veces las compañías fabricantes de notebook tienen que retirar del mercado miles de equipos que vienen con defecto de fabrica. Si no me creen escriban "batería notebook incendio" en el buscador y encontraran las noticias.

La batería en su tiempo de vida tiene 4 estados.
-El estado óptimo, donde funciona correctamente o con una pérdida casi imperceptible.
-El estado intermedio de uso, donde no dura la misma cantidad de tiempo que cuando era nueva, pero sirve momentaneamente. Se detecta fácil debido que se apaga antes de lo indicado.
Se puede arreglar temporalmente colocándola en el freezer un día y luego aplicarle un ciclo de carga y descarga completa. Esto se debe a los efectos expansión y contracción dentro de la celda mejorando el movimiento de los iones.
-El estado critico, donde la autonomía es mínima. El equipo avisa mediante una señal (led, sonido, o mensaje en la barra de inicio) que la batería se debe reemplazar.
-El estado no funcional, la batería no puede mantener la computadora prendida o no es reconocida por el sistema operativo.

Se que existen lugares para comprar las pilas y que reemplazan las celdas. Inclusive en Internet muestran como hacerlo uno mismo. Pero si nos fijamos en lo anterior, esto no es mas que una solución temporal y una perdida de dinero. A estas se las conoce como "38650" y son muy utilizadas en linternas y láser de alto alcance. Tres pilas de solo 2800mAh ronda los 120$, mientras que una batería extendida de 6 celdas (4400mAh) cuesta el doble (tomando como referencia el precio de 6 pilas). Y una de 9 celdas solo un poco mas. Es decir con un poco mas de dinero podemos lograr una mayor autonomía.

-Batería msi original de 3 celdas:
autonomía: 2200mAh
peso: 185g
tiempo: (uso normal, Internet, 50% de brillo)
2.20 hs o 2.30 hs aproximadamente
-Batería msi 6 celdas:
autonomía: 4400mAh
peso: 322g
tiempo: (uso normal, Internet, 50% de brillo)
5.00 hs o 5.15 hs aproximadamente
-Batería msi 9 celdas:
autonomía: 7800mAh
peso: 505g
tiempo: (uso normal, Internet, 50% de brillo)
7.30 hs o 7.45 hs aproximadamente

Como ven, se puede sacar mucho provecho de las mismas. Los resultados varían según lo que se esté corriendo. Una aplicación excelente para medir la autonomía y gratuito es Baterry Eater, que nos permite hacer benchmark y sacar resultados reales.
Si queremos cuidar nuestra batería, una herramienta avanzada excelente (aunque de paga), es Battery Optimizer. No solo monitorear la carga, si no también controlar el estado de la misma y con la capacidad poder optimizar su rendimiento. Si no deseamos pagar podemos optar por una similar llamada Battery Care aunque no tan potente.

El cargardor!
Existe la creencia de que el cargador debe ser estrictamente el que vino de fábrica, como también aquellas personas que piensan que el cargar solo varía la ficha. La realidad es que existes así como un grupo de voltajes mas utilizados, por ejemplo los mas comunes son de 15, 16, 18, 19, 20, 22 y 24v pero las vaio utilizan su propia medida 19,5v. O las fichas, cada fabricante utiliza una en particular. Por lo que un cargador original siempre va a salir mas costoso que uno universal. Y muchas veces un cargador universal puede sacarte de apuros.
Una muy buena idea también es conseguir un cargador universal que se conecte al auto. Para realizar wardriving (búsqueda y mapéo de redes inalámbricas), para realizar auditorías, en caso de viajar o de necesitar utilizarla de forma urgente etc.


Una recomendación con respeto a los cargadores, traten de cuidar los cables: mantener estiradas donde están las uniones, no doblarlos demasiado superando su ángulo critico, y estirarlos sin que se tuerza a la hora de usarlos. No solo por que se puedan llegar a cortar, si no que pequeños cortocircuitos pueden dañar el transformador.
-------------------

Espero que les haya gustado. Con esto continuo con las entradas [Preparando un ataque real], la anterior de esta serie de post fue
[Modding] Agregar una antena al portatil, Msi U100.
Saludos

jueves, 24 de noviembre de 2011

[Hack] Las paginas juegan con nuestros datos -Obtener Contraseñas-

Hace un tiempo hablé de como obtener datos de elementos html a la hora de diseñar una web, y luego sobre lo cuidadoso que hay que ser al usar las variables como $_server[] en php.
Hoy un poco mas allá le voy a mostrar ejemplos reales, donde las paginas administran nuestra contraseña de forma insegura.
---
Verán, existen 5 casos prácticos de como autentifican nuestra contraseñas.

1)"Envían la contraseña en texto limpio y la comparan con el texto almacenado": Este es el peor de los casos, nuestra contraseña se envía en texto sin codificarse y en la base de datos existe nuestra contraseña de la misma forma. Es decir que nuestra contraseña viaja por la red y cualquiera (que sepa como) o cualquiera que pueda acceder a la base de datos, puede ver las contraseñas y el usuario.
2)"Envían la contraseña en texto limpio y la almacenan codificada": De esta forma, la contraseña al menos, quien tenga acceso a la base de datos no podrá saber nuestra contraseña.
3)"Envían la contraseña cifrada y se decifra en el servidor": La contraseña viaja cifrada y al interceptar los datos no es legible a simple vista, pero quien tenga acceso a la base de datos sabe nuestra contraseña.
4)"Envían la contraseña cifrada y la almacenan cifrada": Si bien nadie tiene acceso a la contraseña real, un atacante podría modificar la cabecera para enviar el dato codificado y lograr acceder a nuestra cuenta.
5)"Utilizar un certificado de autenticación": Este es el ejemplo claro de hotmail.

Ahora que entendieron los diferentes casos, hay que aclarar que existen diferentes algoritmos de encriptacion.
-Algoritmos débiles: Por lo general se cifran y decifran con el mismo algoritmo. Son conocidos. Ejemplo base64 .
-Algoritmos fuertes: De hash, permiten cifrar un texto dando como resultado una cadena de caracteres de una longitud determinada y no son capaces de decifrarce. Al tener una longitud determinada para "infinitas combinaciones de texto" presentan colisiones de de hash es decir alguna combinación se repite (como MD5 vulnerable a la paradoja de cumpleaños) pero que se soluciona al añadirle una cadena llamada SALT.
Ejemplos MD5, SHA-1, BLOWFISH, AES etc.

---
Los Sniffers:
Antiguamente cuando no existían las redes wirelles como hoy en dia, y la velocidad de conexion era lenta. Los dispositivos mas conocidos para conectar varias maquinas eran los Hubs, los expertos sabían que los paquetes de una maquina se enviaban a todos los dispositivos conectados al hub (inundación de paquetes). Por lo tanto, aquel que modificaba la tarjeta ethernet para trabajar en modo promiscuo y capas de reconocer los paquetes, podía ver todo el tráfico y con ello las contraseñas. Con la llegada de los switch y los routers esto cambió. Capaces de distinguir los equipos, el protocolo ARP de resolución de direcciones en realidad solo lo dificultó un poco.
¿Estamos realmente seguros?
La realidad que un atacante puede modificar la tabla ARP (envenenamiento arp).
Cuando una ip no se encuentra en la tabla, se envía la ip a todas las maquinas y el equipo responde con su direccion mac. De esta forma, se engaña al equipo haciendo que el trafico pueda pasar previamente por el equipo atacante (man in the middle) y luego reenviar los datos sin que el usuario se lo sospeche.
Para que esto se puede realizar, las tarjetas de red deben soportar captura de paquetes, la librería winpcap realiza la conexión a bajo nivel con la tarjeta de red.
Si te gusta la programación como a mí, puedes programar en C# tu propia utilidad para capturar paquetes y filtrarlos. En cambio si eres un Script kiddie seguro quieres un programa, en ese caso debes bajarte un sniffer. Lamentablemente como borre la aplicación que estaba programando voy a utilizar "cain y abel" como ejemplo.

Como esto no es un tutorial del cain y abel, simplemente vamos a analizar las salidas.

  • En esta imagen se puede ver como los datos son pasados en texto limpio.



  • En la primera imagen la pagina vulnerable, luego la contraseña enviada en el conocido base64, y desencriptada al final.




  • En estas, se observa que está codificado en md5. Con un poco de suerte, alguna servicio de descifrado encontrará el password. O con un Pc lo suficientemente potente y una base de datos de tablas rainbow el password saldría en unos segundos o minutos.

  • Ejemplo de windows live en la maquina víctima. Estos certificados también son vulnerables pero ya es otro tema.

Si te pareció impactante tambien deberias ver como pueden interseptar sms online. Por ultimo me queda decir no confíen sus datos a una red publica, asegúren su red. Y a todos los diseñadores y webmaster utilicen encriptacion y comprobación, tanto del lado del login como del lado del servidor. Después de todo, los usuarios son los que hacen a las paginas.

martes, 8 de noviembre de 2011

[Hack] ejecucion de codigo en URI

Como una variación a lo visto en [hack web parte2] filtros & pagina owned , hoy les voy a hablar de cross site scripting en URI. Tal vez les sea mas conocido el termino URL, como la dirección a un sitio determinado, en realidad la URL es un tipo de URI. La diferencia fundamental es que la URI puede incluir una subdirección de un elemento. De cualquier forma estamos hablamos de la dirección de un recurso web.

La diferencia con esta vulnerabilidad y la vista anteriormente es que en la anterior, los datos se enviaban desde un campo de texto a través de un método get o post. En esta, un error en el tratamiento de las variables en una pagina php, nos permite incluir código en la dirección web. (No confundir con método get donde las variables se pasan como parámetro por la dirección).

Cuando se crea una pagina php tenemos métodos que nos facilitan información a la hora de programar. Uno de tantos es $_SERVER que contienen información de las rutas y cabeceras. Este es un array al cual, se le pasan diversos elementos de la siguiente forma $_SERVER['elemento'].
El problema surge cuando este método se lo incluye directamente en un formulario intentando optimizarlo.
Formulario común:
<form method="POST" action="Dirección_donde_se_envían_los_datos">...
Formulario común en php:
echo "<form method="POST" action="Dirección_donde_se_envían_los_datos">"; ...
Formulario en php optimizado:
echo "<form method="POST" action=\"".$_SERVER['elemento']."\">"; ...

Se usa el método $_SERVER['elemento'] para añadir una dirección al campo action del formulario. El 'elemento' determina que elemento del arreglo se necesita. De esta forma
$_SERVER['PHP_SELF'] :
Devuelve como resultado el documento que se está ejecutando.
$_SERVER['REQUEST_URI'] :
Devuelve la dirección de donde se ingresó.
$_SERVER['SCRIPT_FILE'] :
Devuelve el documento de donde se ejecuta el script php.
$_SERVER['SCRIPT_FILENAME'] :
Devuelve la dirección donde se ejecuta el script php.

¿Que tiene de vulnerable?
Todavía no se dieron cuenta?, de esta forma esta permitiendo introducir código directamente en el la pagina a través de la barra de direcciones.
Un atacante podría cerrar la etiqueta introduciendo />"> al final de la dirección y luego inyectar el exploit, pudiendo robar cuentas, transmitir malware y todo ello.





Aclaración: Esto no es un tutorial, Gonzac Studios no se hace responsable por el mal uso de este material.

Saludos.