Debian Squeeze con Tor Polipo e TorButton

 

 

Per avere un buono anonimato in rete, servono tre strumenti, due presenti in ogni repository, Tor e Polipo, e l'altro è un addons per i browser Firefox/iceweasel oppure Chrome.

 

Installazione:

 

# apt-get install tor polipo

 

Configurazione:

 

# nano /etc/polipo/config

 

e configurarlo/copiarlo come questo:

 

### Basic configuration
### *******************
## Replace with the default polipo.conf file in /etc/polipo/config

# Uncomment one of these if you want to allow remote clients to
# connect:

# proxyAddress = "::0"        # both IPv4 and IPv6
# proxyAddress = "0.0.0.0"    # IPv4 only

proxyAddress = "127.0.0.1"
proxyPort = 8118

# If you do that, you'll want to restrict the set of hosts allowed to
# connect:

# allowedClients = "127.0.0.1, 134.157.168.57"
# allowedClients = "127.0.0.1, 134.157.168.0/24"

allowedClients = 127.0.0.1
allowedPorts = 1-65535

# Uncomment this if you want your Polipo to identify itself by
# something else than the host name:

proxyName = "localhost"

# Uncomment this if there's only one user using this instance of Polipo:

cacheIsShared = false

# Uncomment this if you want to use a parent proxy:

# parentProxy = "squid.example.org:3128"

# Uncomment this if you want to use a parent SOCKS proxy:

socksParentProxy = "localhost:9050"
socksProxyType = socks5

### Memory
### ******

# Uncomment this if you want Polipo to use a ridiculously small amount
# of memory (a hundred C-64 worth or so):

# chunkHighMark = 819200
# objectHighMark = 128

# Uncomment this if you've got plenty of memory:

# chunkHighMark = 50331648
# objectHighMark = 16384

chunkHighMark = 67108864

### On-disk data
### ************

# Uncomment this if you want to disable the on-disk cache:

diskCacheRoot = ""

# Uncomment this if you want to put the on-disk cache in a
# non-standard location:

# diskCacheRoot = "~/.polipo-cache/"

# Uncomment this if you want to disable the local web server:

localDocumentRoot = ""

# Uncomment this if you want to enable the pages under /polipo/index?
# and /polipo/servers?.  This is a serious privacy leak if your proxy
# is shared.

# disableIndexing = false
# disableServersList = false

disableLocalInterface = true
disableConfiguration = true

### Domain Name System
### ******************

# Uncomment this if you want to contact IPv4 hosts only (and make DNS
# queries somewhat faster):
#
# dnsQueryIPv6 = no

# Uncomment this if you want Polipo to prefer IPv4 to IPv6 for
# double-stack hosts:
#
# dnsQueryIPv6 = reluctantly

# Uncomment this to disable Polipo's DNS resolver and use the system's
# default resolver instead.  If you do that, Polipo will freeze during
# every DNS query:

dnsUseGethostbyname = yes

### HTTP
### ****

# Uncomment this if you want to enable detection of proxy loops.
# This will cause your hostname (or whatever you put into proxyName
# above) to be included in every request:

disableVia = true

# Uncomment this if you want to slightly reduce the amount of
# information that you leak about yourself:

# censoredHeaders = from, accept-language
# censorReferer = maybe

censoredHeaders = from,accept-language,x-pad,link
censorReferer = maybe

# Uncomment this if you're paranoid.  This will break a lot of sites,
# though:

# censoredHeaders = set-cookie, cookie, cookie2, from, accept-language
# censorReferer = true

# Uncomment this if you want to use Poor Man's Multiplexing; increase
# the sizes if you're on a fast line.  They should each amount to a few
# seconds' worth of transfer; if pmmSize is small, you'll want
# pmmFirstSize to be larger.

# Note that PMM is somewhat unreliable.

# pmmFirstSize = 16384
# pmmSize = 8192

# Uncomment this if your user-agent does something reasonable with
# Warning headers (most don't):

# relaxTransparency = maybe

# Uncomment this if you never want to revalidate instances for which
# data is available (this is not a good idea):

# relaxTransparency = yes

# Uncomment this if you have no network:

# proxyOffline = yes

# Uncomment this if you want to avoid revalidating instances with a
# Vary header (this is not a good idea):

# mindlesslyCacheVary = true

# Suggestions from Incognito configuration
maxConnectionAge = 5m
maxConnectionRequests = 120
serverMaxSlots = 8
serverSlots = 2
tunnelAllowedPorts = 1-65535

 

La configurazione di default per Torbutton dovrebbe essere già così:

 

Proxy HTTP :  127.0.0.1  Porta :  8118
Proxy SSL : 127.0.0.1 Porta : 8118
Host SOCKS : 127.0.0.1 Porta : 9050
flag su SOCKS v5

 

per iniziare ad utilizzare tor e polipo::

 

# /etc/init.d/tor start
# /etc/init.d/polipo start

 

avviare torbutton e verificare l'anonimato quà e quà.

 

 

enjoy 😉

 

LMDE 64 problemi al boot e fstab

 

 

Scrivo due righe per chi si trovasse ad avere lo stesso problema che ho avuto io in una fresca installazione di LMDE 64 bit. I problemi in /etc/fstab sono sempre più frequenti, anzi credo che siano gravemente proporzionali al numero di partizioni che si hanno su hard disk, ossia più partizioni più errori. Come già ho avuto modo di lamentarmi, non solo scambia /dev/sda1 windows con ext3 /, ma questa volta ha aggiunto una partizione inesistente e cioè /dev/sda2, più un kernel panic.

# / was on /dev/sda1 during installation
UUID=385ecae6-bd34-41c3-a524-974b8cd6d17f /               ext3    errors=remount-ro 0       1
# swap was on /dev/sda2 during installation
UUID=c6876978-438f-4a1e-ae53-dacdf22d1e4a none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
proc    /proc    proc    nodev,noexec,nosuid    0    0
/dev/sda12    /    ext4    rw,errors=remount-ro    0    0
 

Sopra si vede la partizione /dev/sda1 dove c'è Windows, identificata come / ext3, e la partizione /dev/sda2 con swap, errata sia nell'uuid, sia nella partizione. Comunque una volta finita l'installazione al momento di riavviare ho ottenuto una specie di kernel panic, dove in quelle poche righe l'unica cosa che si capiva era: UUID=xxxxxx-xxxx-xxxxx-xxxx inesistente. Quindi il passo successivo è stato avviare da un'altra distro e montare la nuova installazione, e controllare l'uuid, che da un controllo con blkid risultava esatto. Quali le stringhe incriminate?
 

menuentry "Debian GNU/Linux, with Linux 2.6.32-5-amd64 (on /dev/sda12)" {
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos12)'
    search –no-floppy –fs-uuid –set dc199cb8-c4ee-48e1-9e8c-69b304cd12d9
    linux /boot/vmlinuz-2.6.32-5-amd64 root=UUID=1f084bbd-a556-4e8b-9ab4-c9049cfda7e3 ro quiet
    initrd /boot/initrd.img-2.6.32-5-amd64
}
 

guardando più attentamente si nota che i due uuid sono diversi, il primo esatto il secondo errato, ecco da dove arrivava il kernel panic, infatti una volta modificato il secondo uuid, LMDE riesce a bootare. Successivamente si deve cambiare l'uuid anche in /etc/initramfs-tools/conf.d/resume. Quindi ho l'impressione che piu partizioni si hanno e più si può incorrere in errori, tutto questo in attesa della risoluzione. Una nota positiva dell'installer è che riconosce la partizione zfs 🙂 mentre quello Debian no.

 

enjoy 😉
 

Installazione di Metasploit su Debian Squeeze

 

 

Metasploit Project è un progetto di sicurezza informatica che fornisce informazioni sulle vulnerabilità, semplifica le operazioni di penetration testing ed aiuta nello sviluppo di sistemi di rilevamento di intrusioni. Il sub-project più conosciuto è Metasploit Framework, uno strumento per lo sviluppo e l'esecuzione di exploit ai danni di una macchina remota. Altri sub-project importanti comprendono l'Opcode Database, l'archivio di shellcode e la ricerca nella sicurezza (Wikipedia) Ci sono diverse distribuzioni Linux che si occupano di testare la sicurezza di un sistema, tra cui la più famosa è sicuramente Backtrack. Ma Metasploit possiamo anche installarlo sulla nostra distro preferita, nel caso specifico Debian Squeeze.

 

Requisiti:

 

# apt-get install build-essential subversion ruby libruby irb rdoc libyaml-ruby libzlib-ruby libopenssl-ruby libdl-ruby libreadline-ruby libiconv-ruby rubygems sqlite3 libsqlite3-ruby libsqlite3-dev

 

Installazione:

 

$ svn co https://metasploit.com/svn/framework3/trunk/ metasploit

$ cd metasploit

$ svn up

 

avvio in modo console:

 

$ ./msfconsole

 

premere help per visionare ulteriori comandi. Per il momento mi fermo quà, in una prossima guida non escludo di proseguire con degli esempi di utilizzo.

 

enjoy 😉

Login e autenticazione da penna Usb in Linux

 

 

 

Qualche tempo fa ho fatto una guida intitolata Login e autenticazione facciale in Linux, dove avevo sperimentato sul mio netbook Aspire One, l'uso della webcam come ulteriore strumento di sicurezza, sia in fase di login che in fase di amministrazione, e devo dire che ha funzionato bene, tanto è vero che lo utilizzo ancora. Oggi invece voglio fare la stessa guida,  con la differenza che al posto della webcam si usa una chiavetta usb, in questo modo anche chi non ha la webcam o non vuole usarla, ha un modo alternativo per sperimentare. Anche questa volta utilizzerò PAM che ci aiuterà nell'impresa, per la felicità di Toshidex che di PAM ha fatto una categoria sul suo blog 🙂

Requisiti:

$ sudo apt-get install pmount pamusb-tools libpam-usb

inserire la chiavetta usb, anche se contiene altri dati non ha importanza, nulla sarà perso, ed aggiungere il device con il nome scelto (nel mio caso usb-security) a /etc/pamusb.conf con il seguente comando:

$ sudo pamusb-conf --add-device usb-security

come si può vedere sotto la chiavetta è stata subito riconosciuta:

root@debian:/home/edmond# pamusb-conf –add-device usb-security
Please select the device you wish to add.
* Using "Sony Storage Media (Sony_Storage_Media_OE07042910585-0:0)" (only option)

Which volume would you like to use for storing data ?
* Using "/dev/sdg1 (UUID: 3FB2-8744)" (only option)

Name        : usb-security
Vendor        : Sony
Model        : Storage Media
Serial        : Sony_Storage_Media_OE07042910585-0:0
UUID        : 3FB2-8744

Save to /etc/pamusb.conf ?
[Y/n]
Done.

aggiungere anche l'utente a /etc/pamusb.conf:

$ sudo pamusb-conf --add-user edmond

quindi come si può vedere sotto, abbiamo collegato l'utente al device:

root@debian:/home/edmond# pamusb-conf –add-user edmond
Which device would you like to use for authentication ?
* Using "usb-security" (only option)

User        : edmond
Device        : usb-security

Save to /etc/pamusb.conf ?
[Y/n]
Done.

adesso non ci rimane altro che modificare il file /etc/pam.d/common-auth, per far sì che possa utilizzare la nostra password di sistema.

Importante:

consiglio di tenere due shell aperte come root, nel caso qualcosa andasse storto, cosicchè si possa tornare alla configurazione normale del file /etc/pam.d/common-auth.

quindi:

$ sudo nano /etc/pam.d/common-auth

la configurazione deve essere la seguente:

#auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth   required      pam_unix.so nullok_secure
auth    sufficient      pam_usb.so
 

per tornare alla situazione normale invece:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure
#auth   required      pam_unix.so nullok_secure
#auth    sufficient      pam_usb.so
 

se tutto è andato bene, da questo momento in poi l'autenticazione al login e come amministratore di sistema può avvenire solo con la chiavetta inserita. A questo proposito si possono fare delle prove aprendo il terminale per acquisire i privilegi di root e verificare se tutto funziona:

$ su edmond

 

 

enjoy 🙂

 

Uninstall programmi installati da sorgenti

 

 

Dopo vari esperimenti l'altra sera non riuscivo più a compilare, poichè avevo in precedenza installato da sorgenti alcune cose, che alla fin della fiera mi hanno compromesso il sistema (chiedere a toshidex 🙂 ) perdendo il bandolo della matassa. Comunque il problema lo avevo individuato, ma dopo svariati tentativi andati a vuoto, mi sono stancato ed ho preferito reinstallare. Certo se fosse stato un problema dovuto a qualche aggiornamento giornaliero fatto, il problema lo avrei risolto semplicemente in questo modo. Ma in questo caso avendo installato con make-install, senza quindi nemmeno checkinstall,  addio tracce di tutti i file installati. Quindi questa guida serve soprattutto a me, giusto per ricordarmi che quando faccio qualche test è sempre meglio avere una lista di quello che faccio 🙂 Per tenere traccia dei file ci sono due metodi:

Primo metodo:

# make uninstall

ma trovare un tarball che include questo è quasi come vincere al superenalotto 🙂

Secondo metodo:

prendere nota di tutti i file installati:

# find /* > pacchetti.prima

a questo punto eseguire il make-install

quindi prendere nota di tutti i file dopo l'installazione:

# find /* > pacchetti.dopo

ottenere le differenze tra i due file usando diff:

# diff pacchetti.prima pacchetti.dopo > uninstall

iniziare la rimozione:

# for i in $(grep ">" uninstall | awk '{ print $2 }')

do

/bin/rm -fi $i;

done

a questo punto compariranno a video i file da disinstallare, e basta scrivere yes.

 

enjoy 😉

Modificare il tempo di memorizzazione della password in Sudo

 

Questo è un piccolo trucchetto che serve a modificare il tempo di memorizzazione della password di Sudo. Di default la password viene memorizzata per 15 minuti, ma se volessimo modificare questo tempo dobbiamo rivolgerci a visudo.

 

$ sudo visudo

oppure:

# nano /etc/sudoers

e modificare la stringa:

Defaults        env_reset

con questa:

Defaults        env_reset , timestamp_timeout =X

chiaramente al posto della X mettere il tempo scelto.

Cracking facile facile di una rete wifi con Wifite

 

 

Wifite è un ottimo strumento per il cracking di reti wifi, in grado di semplificare e velocizzare di molto i parametri da lanciare ad airmon-ng airodump-ng aireplay-ng aircrack-ng. In questo post non mi soffermerò sugli aspetti tecnici e su spiegazioni varie di termini come: chiave wep,wpa,wpa2,ivs,handshake,bruteforce ecc ecc, di spiegazioni e guide sul web se ne trovano in abbondanza. Mi voglio invece soffermare sulla semplicità di utilizzo di Wifite e su quello che è in grado di fare. I punti di forza riguardano la possibilità di cracking di diverse reti in contemporanea, la gestione del monitor mode in maniera automatica,la possibilità di usare un attacco con dizionario, la gestione automatica di tutti i passaggi, dal fake mac address al cracking finale della rete, l'interfaccia grafica, e diverse altre opzioni di configurazione. Detto ciò non mi rimane che ricordare, semmai ce ne fosse bisogno, che il cracking senza il consenso del proprietario della rete è illegale,illegale,illegale.

Testato su Debian Squeeze.

Requisiti:

# apt-get install xterm python-tk macchanger pyrit libssl-dev

più la versione di Aircrack-ng 1.1, e siccome nella  maggior parte dei casi nei repo si trova la versione 1.,0, non ci resta che installarla da sorgenti:

$ wget https://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz

$ tar -zxvf aircrack-ng-1.1.tar.gz

$ cd aircrack-ng-1.1

$ make

$ sudo make install

Scaricare Wifite:

$ wget -O wifite.py

$ chmod +x wifite.py

# ./wifite.py

Una volta avviato lo script non ci resta che spuntare le opzioni ed attendere la fine del lavoro, di seguito due immagini di Wifite al lavoro, con relativo cracking di una chiave wep.

nell'immagine sopra si leggono le opzioni scelte, e si è in attesa dello sniffing di eventuali reti.

 

qui sopra invece si vede la riuscita del cracking, sotto il colore rosso c'è il nome della rete attaccata, sotto il giallo invece si nasconde la password trovata. Da notare che la password è stata trovata con circa 15000 ivs. In conclusione questo script secondo me è ottimo, e ti fa risparmiare tempo e terminali aperti.

Update:

Su ubuntu 10.10 per compilare ed installare pyrit:

sudo apt-get install libssl-dev

wget -O wifite.py

tar xvzf pyrit-0.3.0.tar.gz

cd pyrit-0.3.0

python setup.py build

sudo python setup.py install

enjoi 🙂

Cryptare con Cryptkeeper Applet per Encfs

 

 

Due anni fa avevo fatto una guida su Encfs, e sul suo utilizzo, per la creazione di una cartella cryptata dove nascondere dati sensibili, foto e cellulari di amanti, il tutto per avere una vita più tranquilla e per pene. Chiaramente quella guida è ancora valida, ma con Cryptkeeper un applet Encfs per l'area di notifica di Gnome, tutto è reso ancora più semplice.

Requisiti:

# apt-get install encfs fuse-utils cryptkeeper

dopo l'installazione troviamo cryptkeeper nel menu Strumenti di Sistema, per non avere l'errore seguente:

aggiungiamo il nostro nome utente al gruppo fuse:

# adduser nome_utente fuse

verifichiamo:

# grep "fuse" "/etc/group"

dopo aver riavviato siamo pronti a lanciare Cryptkeeper, che troveremo sotto forma di chiave nel pannello di Gnome. Non serve nessuna spiegazione sul suo utilizzo, poichè il tutto è facilmente configurabile.

Conoscere quante volte si è usato un comando

Per conoscere quali sono i comandi usati più frequentemente ed in quale numero, bisogna andare a spulciare in bash_history, ma se vogliamo velocizzare il tutto basta questo comando:

$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head

nel mio caso il risultato è questo:

edmond@debianbox:~$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head
58 mencoder
56 ffmpeg
49 cd
43 swfc
43 sudo
41 su
30 swfextract
26 cat
24 ls
10 phoronix-test-suite
 

in bash_history si trovano numerose  informazioni su quello che si è fatto, e per chi volesse disabilitare lo storico per una maggiore sicurezza:

$ rm -f ~/.bash_history

$ nano ~/.bashrc

ed inserire in fondo queste righe:

export HISTFILESIZE=4
unset HISTFILE
export HISTSIZE=2
export HISTCONTROL=ignoredups

Conoscere chi usa la memoria con lo script ps_mem.py

 

 

 

 

 

 

Questo script in pyton, ps_mem.py, può risultare molto utile ogni qual volta si ha bisogno di sapere quanta memoria ogni singolo programma occupa. Per chi volesse provarlo:

$ wget https://www.pixelbeat.org/scripts/ps_mem.py

# mv ps_mem.py /usr/local/sbin/

# chmod 755 /usr/local/sbin/ps_mem.py

lo lanciamo con:

# ps_mem.py

il risultato è una lista minuziosa.

root@debianbox:/home/edmond# ps_mem.py
 Private  +   Shared  =  RAM used    Program

112.0 KiB +  30.5 KiB = 142.5 KiB    portmap
128.0 KiB +  22.5 KiB = 150.5 KiB    gnome-pty-helper
140.0 KiB +  12.0 KiB = 152.0 KiB    sh
144.0 KiB +  22.0 KiB = 166.0 KiB    atd
144.0 KiB +  23.0 KiB = 167.0 KiB    acpid
164.0 KiB +  19.5 KiB = 183.5 KiB    init
160.0 KiB +  33.5 KiB = 193.5 KiB    hald-addon-rfkill-killswitch
164.0 KiB +  33.5 KiB = 197.5 KiB    hald-addon-leds
164.0 KiB +  34.5 KiB = 198.5 KiB    hald-addon-input
168.0 KiB +  35.5 KiB = 203.5 KiB    hald-addon-acpi
192.0 KiB +  53.5 KiB = 245.5 KiB    rpc.statd
256.0 KiB +  14.0 KiB = 270.0 KiB    ssh-agent
220.0 KiB +  50.5 KiB = 270.5 KiB    cron
240.0 KiB +  44.5 KiB = 284.5 KiB    hald-addon-usb-csr
268.0 KiB +  30.5 KiB = 298.5 KiB    hald-runner
272.0 KiB +  29.5 KiB = 301.5 KiB    dbus-launch
332.0 KiB +  14.0 KiB = 346.0 KiB    hddtemp
332.0 KiB +  48.5 KiB = 380.5 KiB    kerneloops
364.0 KiB +  48.0 KiB = 412.0 KiB    usbmuxd
336.0 KiB + 103.0 KiB = 439.0 KiB    gvfsd-burn
352.0 KiB + 119.5 KiB = 471.5 KiB    su
448.0 KiB +  43.0 KiB = 491.0 KiB    exim4
444.0 KiB +  65.5 KiB = 509.5 KiB    gvfsd-metadata
516.0 KiB +  17.0 KiB = 533.0 KiB    dhclient
460.0 KiB +  89.0 KiB = 549.0 KiB    gvfs-gphoto2-volume-monitor
468.0 KiB + 108.0 KiB = 576.0 KiB    getty (6)
480.0 KiB + 105.5 KiB = 585.5 KiB    gdm3
472.0 KiB + 126.5 KiB = 598.5 KiB    bluetoothd
464.0 KiB + 156.0 KiB = 620.0 KiB    gvfs-afc-volume-monitor
664.0 KiB +  71.5 KiB = 735.5 KiB    modem-manager
504.0 KiB + 252.0 KiB = 756.0 KiB    avahi-daemon (2)
592.0 KiB + 186.0 KiB = 778.0 KiB    gdm-session-worker
676.0 KiB + 236.0 KiB = 912.0 KiB    wpa_supplicant
792.0 KiB + 156.5 KiB = 948.5 KiB    bonobo-activation-server
820.0 KiB + 169.0 KiB = 989.0 KiB    gvfs-gdu-volume-monitor
968.0 KiB +  52.5 KiB =   1.0 MiB    rsyslogd
868.0 KiB + 206.0 KiB =   1.0 MiB    gdm-simple-slave
352.0 KiB + 741.0 KiB =   1.1 MiB    udevd (3)
904.0 KiB + 225.0 KiB =   1.1 MiB    hald-addon-storage (6)
  1.0 MiB +  94.0 KiB =   1.1 MiB    gvfsd
980.0 KiB + 176.5 KiB =   1.1 MiB    console-kit-daemon
728.0 KiB + 436.5 KiB =   1.1 MiB    upowerd
  1.1 MiB + 105.0 KiB =   1.2 MiB    gnome-keyring-daemon
  1.0 MiB + 203.0 KiB =   1.2 MiB    gvfsd-trash
  1.0 MiB + 162.5 KiB =   1.2 MiB    polkitd
944.0 KiB + 303.5 KiB =   1.2 MiB    udisks-daemon (2)
904.0 KiB + 439.5 KiB =   1.3 MiB    gvfsd-afc
  1.0 MiB + 322.0 KiB =   1.3 MiB    kerneloops-applet
  1.2 MiB + 281.5 KiB =   1.5 MiB    NetworkManager
  1.5 MiB + 210.0 KiB =   1.7 MiB    cupsd
  1.3 MiB + 457.5 KiB =   1.8 MiB    gdu-notification-daemon
  1.4 MiB + 368.0 KiB =   1.8 MiB    seahorse-agent
  1.5 MiB + 324.0 KiB =   1.8 MiB    dbus-daemon (2)
  1.5 MiB + 425.5 KiB =   1.9 MiB    gnome-screensaver
  1.8 MiB + 748.0 KiB =   2.6 MiB    multiload-applet-2
  1.9 MiB + 804.5 KiB =   2.7 MiB    trashapplet
  1.9 MiB + 796.5 KiB =   2.7 MiB    polkit-gnome-authentication-agent-1
  2.3 MiB + 721.0 KiB =   3.0 MiB    nm-applet
  2.2 MiB + 866.0 KiB =   3.0 MiB    update-notifier
  2.3 MiB + 803.5 KiB =   3.0 MiB    gtk-window-decorator
  2.3 MiB + 806.0 KiB =   3.1 MiB    x-session-manag
  3.1 MiB +  65.5 KiB =   3.2 MiB    hald
  3.3 MiB +  96.0 KiB =   3.4 MiB    gconfd-2
  3.0 MiB + 722.0 KiB =   3.7 MiB    bash (2)
  3.3 MiB + 805.0 KiB =   4.1 MiB    gnome-terminal
  3.5 MiB + 936.5 KiB =   4.4 MiB    gnome-settings-daemon
  4.4 MiB +   1.1 MiB =   5.5 MiB    mixer_applet2
 11.9 MiB + 847.0 KiB =  12.7 MiB    coherence
 17.3 MiB +   2.1 MiB =  19.4 MiB    rhythmbox
 17.4 MiB +   2.5 MiB =  19.9 MiB    gnome-panel
 34.2 MiB +   5.5 MiB =  39.7 MiB    nautilus
 47.1 MiB +   2.5 MiB =  49.6 MiB    compiz
 46.3 MiB +   4.8 MiB =  51.0 MiB    Xorg
244.8 MiB +   2.6 MiB = 247.4 MiB    firefox-bin

———————————
                        524.4 MiB
=================================

 Private  +   Shared  =  RAM used    Program