A Caccia di RootKits: rkhunter

 

Un articolo per tutti i “maniaci” della sicurezza, per tutti quelli che sono ossessionati dalla privacy, per quelli che usano criptare il proprio FileSystem ed usare SHA-256 come checksum sui propri file… insomma, per qualcuno come me 😀

Rkhunter è un potente tool OpenSource scritto in perl per scovare, a loro dire il 99.9% :P, l’eventuale presenza di RootKits sulla vostra macchina UNIX-Based.

Una volta effettuato il download e scompattato il tar.gz
[sourcecode language=”bash”]
$ wget http://sourceforge.net/projects/rkhunter/files/rkhunter/1.3.8/rkhunter-1.3.8.tar.gz

$ tar zxvf rkhunter-1.3.8.tar.gz ; cd rkhunter-1.3.8

[/sourcecode]

Ci troviamo difronte ad un eseguibile bash che ci aiuterà nell’installazione dei file sorgenti.

L’installazione è molto semplice, possiamo scegliere i vari layout (inteso some percorso) in cui installare i sorgenti. Vediamo le varie opzione, in moda da scegliere quella più congeniale alle nostre esigenze

[sourcecode language=”bash”]
unicondor@iMac:rkhunter-1.3.8> sh installer.sh –examples
Rootkit Hunter installer

Examples:
1. Show layout, files in /usr:
installer.sh –layout /usr –show

2. Install in /usr/local:
installer.sh –layout /usr/local –install

3. Install in chosen (custom) directory /opt:
installer.sh –layout custom /opt –install

4. Install in temporary directory /tmp/rkhunter/usr/local,
with files in /usr/local (for package maintainers):
mkdir -p /tmp/rkhunter/usr/local
installer.sh –layout custom /tmp/rkhunter/usr/local \
–striproot /tmp/rkhunter –install

5. Remove files, layout /usr/local:
installer.sh –layout /usr/local –remove
[/sourcecode]

Leggi tutto “A Caccia di RootKits: rkhunter”

XNU – Kernel Mac OS X

Questo articolo nasce da una mia recente rilettura della famosa diatriba Kernel Monolitico vs MicroKernel, tra il giovinastro Linus Torvalds ( Kernel Monolitico ) ed il professore rinomato  Andy Tanenbaum ( MicroKernel ). Vi rimando a questo link per avere una idea sul loro scambio di opinioni a riguardo

http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html

Da ormai tre anni ho scelto di usare Mac, in principo la scelta e’ stata dettata dalla necessita’ di liberare la mia scrivania da tutti quei fili penzolanti ( mia madre voleva uccidermi 😛 ) e dal fatto che iMac ha il suo fascino ( soprattutto da quando gira su IA64 ) e la sua eleganza. Con il passare del tempo sono rimasto ammaliato dalla bellezza e semplicita’ del Sistema Operativo di Cupertino, la potenza di un sistema BSD-based con un interfaccia accattivante e’ stata davvero una bella scoperta, fino ad arrivare a documentarmi sull’architettura alla base di tale sistema e cercare di capire qualcosa in piu’…

Architettura Kernel Mac OS X

Il cuore di Mac OS X e’ il kernel XNU, il quale puo’ essere visto come un insieme di piu’ componenti : il core basato su Mach 3, le features supplementari offerte da FreeBSD 5, la personalita’ di un Sistema Operativo basato su BSD ed un ambiente basato su un sistema object-oriented per quanto concerne i driver. In effetti il Kernel di Mac OS X e’ molto di piu’ che XNU, infatti esistono molti driver che non risiedono nel core di XNU ma derivano dai packages Darwin.

Leggi tutto “XNU — Kernel Mac OS X”

Modulo Driver Kernel Chardev – /proc e /dev

Sul web girano migliaia di Moduli Kernel minimali come questo, pero’ la maggior parte di loro sviluppa solo la parte relativa alla creazione del Device Driver Char (Ex. /dev/chardev) e non la parte relativa alla stessa implementazione usando il Virtual FileSystem /proc.

Il seguente modulo implementa entrambe le soluzioni, sia la funzione di lettura
[sourcecode language=”bash”]$ cat /dev/chardevice[/sourcecode]
[sourcecode language=”bash”]$ cat /proc/chardevice [/sourcecode]
che di scrittura
[sourcecode language=”bash”]$ echo “prova” > /dev/chardevice [/sourcecode]
[sourcecode language=”bash”]$ echo “prova” > /proc/chardevice [/sourcecode]
del file virtuale in /proc/chardevice che il device driver in /dev/chardevice

Il Major Number viene generato a run-time, per cui non utilizzare un numero a “casacciao” ma leggete i log del kernel per vedere quale numero vi e’ stato assegnato dal kernel stesso.

chardev.c
[sourcecode language=”c”]
#include
#include
#include //header per la struct del file_operations
#include
#include
#include

Leggi tutto “Modulo Driver Kernel Chardev — /proc e /dev”

Buildroot: Guida alla creazione di un Sistema Operativo Linux Embedded

Tutto e’ iniziato con la mia prima Fonera (2100), fin dall’inizio ho sempre cercato di personalizzare il Sistema Operativo che si riesce a mettere sopra DD-WRT , cercando di eliminare tutti i moduli ed i vari hack per l’espansione delle periferiche I/O.

Da allora mi sono affacciato sul mondo dei Sistemi Embedded, cioe’ dei sistemi elettronici di elaborazione dedicati ad una apposita applicazione, che oggi giorno sono sempre piu’ usati e per i quali si prevede un ulteriore incremento d’utilizzo.

I miei primi esperimenti riguardavano la RouterBoard RB411 , la quale avendo un Sistema Operativo sviluppato direttamente dalla MikroTik e non conoscendo la password di accesso 😛 , ho dovuto crearmi il mio primo Sistema Embedded poggiato su Open-Wrt dato che DD-Wrt non supportava, ed ancora non supporta, l’hardware presente sulla scheda.

Per fare tutto questo dalla mia bella postazione Linux (Slackware 😀 con processore x86 ) ho avuto bisogno della tecnica del cross-compiling e di toolchain ( i link a Wikipedia saranno molto piu’ esaustivi di una mia eventuale spiegazione 😀 ), in quanto i sorgenti del mio nuovo Sistema Operativo dovevano essere compilati per il processore Atheros della RouterBoard e non per il mio processore x86. Spero di essere stato chiaro.. data la mia scarsa propensione alle materie letterarie, quali la scrittura 😛

I primi esperimenti furono un disastro.. Kernel Panic! che uscivano da ogni parte, brandelli di bit sparati a caso dalla porta seriale, periferiche hardware fisiche viste come unita’ logiche virtuali, e molto altro ancora..

Leggi tutto “Buildroot: Guida alla creazione di un Sistema Operativo Linux Embedded”