Azken aste hauetan izandako segurtasun auziak

Twitter-eko @segurtasuna kontuan idazten dut askotan. Edo hobeto esanda, erabiltzaile horri aipuak egiten dizkiot. Batzuetan, informazio teknikoa banatzeko erabiltzen dut: tresna berri bat sortu dela, CTF baten berri, exploit berri bat… Beste batzuetan, ordea, segurtasun informatikoko erasoen berri emateko erabiltzen dut kontua. Azken hauek dira gehien kezkatzen nautena, gure eguneroko bizitzan duten edo izan dezaketen eragina sekulakoa baita.

Eta gauza da, eraso horiek gero eta gehiago eta gero eta larriagoak direla. Azter dezagun horietako batzuk.

Azpiegituren kontrako erasoak

Orain dela aste batzuk, La9deAnon taldeko kideek Nafarroako ubidearen kontrol sisteman sartzea lortu zuten. Gaizki inplementatutako segurtasun politikaz baliatuz (edo okerrago, segurtasun politika sendo baten gabezia aprobetxatuz). Nork daki… agian defektuzko eta aldatu gabeko  pasahitz baten bidez lortu zuten bertan sartzea. Tontakeri bat dirudi baina hori da azken finean Mirai botnetak erabili duen teknika erraza: Internet of Things (IoT) delako gailu-en sarean milloika bideo-zainketa kamarak (ikusteko -CCTV- eta grabatzeko -DVR-) kutsatu ditu defektuzko 60 inguruko erabiltzaile eta pasahitz bikoteak probatuz.

Deutsche Telekom-eko erabiltzaileen router-ak

DEUTSCHE TELEKOM -speedport-w-724v
CCTV eta DVR-en segurtasun arazoa ezaguna zen baina hara non eta router-ak ere Mirai botnet-aren biktimak bilakatu dira. Kasu honetan ez defekutzko pasahitzak dituztelako baizik eta Interneteko hornitzaileek router hauen urruneko konfigurazioa lortzeko erabiltzen duten protokoloaren segurtasun ahulezi bateaz baliatuz. Ez edozein router… batez ere Alemanian oso ezagunak diren Zyxel konpainiak sortutakoak (batez ere Deutsche Telekom honitzaileak erabiltzen dituen router-ak) . 900.000 router inguru kutsatu ditu jada soilik Alemanian baina dirudienez, kutsadura zabaltzen ari da Brasilen eta Erresuma Batuan.

DynDNS interneko DNS azpisistema

Arazo latza, larria eta sakona. Batez ere jakinda Mirai botnet-aren iturburu kodea orain dela gutxi ireki eta GitHub-en kaleratu zutela. Mirai botnet-ak Brian Krebs segurtasun informatikoan aditua den ikerlariaren webgunea botatzea lortu zuen (DDoS baten bidez, azken finean). 665gbps-eko traifikoko jario erraldoia sortu ondoren, Interneten inoiz ikusi ez den jarioa hain zuzen ere.

Horrelako ahalmena suntsitzailea duen jario batek OVH bezalako hornitzaileen kontra egin dezake. Eta irabazi. Edo soilik beraien babes-neurriak probatu. Hori da hain zuzen ere Bruce Schnneier adituak dioena, arerioaren ahalmenaren proba batzuk besterik ez direla. Jakin nahi baitute norainoko neurriak dituzten. Eta oraindik beldurra gorputzean ez bazaizu sartu, entzun hau: Mirai botnet-a alokatu daiteke. Bai, zuk-zeuk, edo beste edozeinek. Ez gara oso argiak izan behar asmatu ahal izateko zeinek eta zertarako erabili dezaketen botnet hau. Adibidez, DNS sistemaren parte den Dyn DNS enpresaren kontra egiteko. Enpresa horrek, halaber, hainbat enpresen DNS erregistroak kudeatzen ditu. DNS-a bertan behera uztea lortuz gero, erabiltzaileek ezingo dituzte enpresa webgune horiek atzitu (IP helbidea jakinez gero bai, baina orduan ez zara erabiltzaile arrunt bat izango 😉

Mirai-k DNS-ak erasotzeko erabiltzen dituen teknikak, aurreratuak dira. Ez dira etor-berri batzuk. Etorkizunean (hori da Mirai hitzaren esanahia, japonieraz) Mirai kode kaltegarriaren aldaerak sortuko dira eta erasotzen jarraituko dute, dudarik gabe.

San Francisco-ko trena (Muni-hack)

muni-hackDemagun Mugi/Lurraldebus online sistema norbaitek hackeatzen duela. Demagun ransomware baten bidez, sistema kutsatu egiten duela. Eta erreskatea ordaindu arte (edo babes-kopiak berreskuratu arte) sistema bertan behera geratzen dela. Zer gertatuko litzateke? Ba, ziur asko, San Francisco tren sisteman ( San Francisco Municipal Transportation Agency, SFMTA edo Muni izenarekin ezagutzen dena) gertatu zena: txartelak saltzeko makinetan «You Hacked, ALL data encrypted» mezua agertuko zela. Eta 73.000$ ordaindu arte, erasotzaileek ez zutela sistema berreskuratzeko gakoa bidaliko esan zuten. Egun horretan dohain bidaiatu zuten tren erabiltzaile guztiek (babes-kopietatik sistema berreskuratu arte).

Nolakoak diren gauzak… SFMTA hackeatu zuena, halaber, hackeatua izan zen egun gutxitara. Eta bere mail mezuetan agertu diren aztarnak aztertu ondoren, dirutza lortu zuen erreskateen bidez, beste enpresa handi batzuk kutsatu ondoren. Negozioa.

Bizpahiru adibide dira gaur honera ekarri ditudanak. Ez dira lehenengoak… tamalez, ezta azkenengoak izango ere.

Probando el Subsistema Windows 10 para Linux (Beta)

El 30 de marzo saltaba la noticia: las llamadas al sistema de Linux  se podrán ejecutar en Windows 10 de forma «nativa» (se podrán traducir en tiempo real a llamadas al sistema de Windows, algo así como un WINE a la inversa):

Intenté probarlo en su día, pero no encontraba tiempo. Tampoco creo que estuviera disponible para todos los usuarios… Hoy he recordado la noticia y le he dedicado un rato porque necesito ejecutar algunas funcionalidades de Linux en una máquina Windows (y la opción de Cygwin me parece demasiado «heavy»… y problemática, la he sufrido en alguno de mis cursos, donde he recibido numerosas peticiones de auxilio 😉

Para probar el subsistema Windows para Linux (Windows Subsystem for Linux o WSL) hay que tener la actualización Windows 10 Anniversary Update (se publicó en Agosto de este año). La forma más sencilla es a través de este enlace oficial a la web de Microsoft. Tras la instalación/upgrade, hay que activar el modo programador entrando en Configuración / Para programadores

bash_win_0

A continuación, entramos en Panel de Control / Programas / Activar o desactivar las características de Windows . Activamos el Subsistema de Windows para Linux (beta) y reiniciamos las veces que haga falta 😛

subsistema_Linux

Ahora viene lo bueno. Ejecutamos bash desde el menú de inicio (tecleamos bash y pulsamos intro) y al ser la primera vez se lanzará la instalación:

bash_win_1

Le costará un rato descargar WSL (al final está descargando una especie de versión de Ubuntu Server) y activarlo. Cuando lo haga, nos pedirá crear un usuario (que por defecto estará en la lista de sudoers)bash2

Le asignamos un pass al nuevo user y tachán, ya estamos en Bash 🙂

bash3

Se hace raro poder ejecutar ls, id, pwd, cat, vi ! , apt (sí apt-get!) en Windows sin recibir mensajes de error…bash4

Realmente estamos en Bash dentro de un Ubuntu 14.04 ejecutándose sobre Windows 10. Buf… si me lo llegan a decir hace un tiempo hubiera puesto cara de incrédulo.bash5

Los archivos están donde deben (en un sistema que siga el LSB) y tienen el contenido esperado.

bash6

El sistema de archivos del anfitrión Windows está montado en /mnt . Tenemos los repos apt de Ubuntu a nuestra disposición para instalar las aplicaciones que necesitemos.

bash8

Otro puntazo a favor es que tenemos un intérprete python y un intéprete perl instalados de serie (los mismos que instala Ubuntu 14.04, claro)

bash9

También he visto que hay un servicio ssh lanzado en el puerto 22, pero por lo que he probado NO es openssh (se puede ver el fingerprint del servidor mediante un simple telnet – sí, telnet, para ver el banner del server – al puerto 22), sino un servidor SSH de Windows (yo diría que en alfa, porque aún no he conseguido autenticarme y creedme que he probado de todo). ¿Tal vez sea una implementación en desarrollo del port openssh de Microsoft ?

bash7

Leyendo algunos foros comentaban que openssh se puede configurar para que escuche en un puerto distinto al 22 (el 60022, por ejemplo), abrir una regla en el firewall de Windows para ese nuevo puerto y listo. Si no lo tenemos instalado por defecto (en mi caso sí lo estaba) siempre podremos instalarlo con sudo apt-get update && sudo apt-get install openssh 🙂

A continuación, modificamos /etc/ssh/sshd_config y lo dejamos así:

Port 60022
ListenAddress 0.0.0.0
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation no
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication no
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes

Si openssh ya estaba instalado, antes de reiniciar el server openssh lo reconfiguramos (si no lo hacemos, arrancará, pero no conseguiremos conectar porque no habrá generado los ficheros necesarios):

$ sudo dpkg-reconfigure openssh-server

Ahora sí, reiniciamos el server openssh:

sudo service ssh restart

Y conectamos desde localhost para probar:

bash_win_10

¡Funciona! 🙂

UPDATE (5/09/2016): si en algún momento la liamos parda con la configuración del WSL, siempre podremos desinstalar y volver a instalar con dos sencillos comandos:

C:\> lxrun.exe /uninstall /full
C:\> lxrun.exe /install

UPDATE (6/09/2016): es posible iniciar el servidor openssh de WSL al arrancar el equipo. Para ello, basta con parar el Server SSH de Microsoft (el que viene por defecto) y lanzar OpenSSH con la configuración indicada, salvo que ahora podremos lanzarlo en su puerto natural, el 22. Además, si queremos lanzar el servidor cada vez que iniciemos el equipo, podremos crear un script de arranque.

Cerber edo kode kaltegarriaren negozioa

malwaretech

Ransomware delako kode kaltegarri motakoa da Cerber. Horrelako beste hainbat izen ezagunak etortzen zaizkigu burura: Locky, CryptoWall, Crypt0L0cker, TeslaCrypt… Dakigun bezala, malware mota honek gure disko gogorraren edukia zifratu egingo du eta berreskuratzea ezinezkoa izango da ez badugu erreskate bat ordaintzen. Zifratzeko gako publikoko kriptografia + kriptografia simetrikoa erabiltzen omen dute (RSA+AES). Beste mezu batean hau nola egiten duten azalduko dut, baina Bromium enpresak argitaratutako txosten honetan informazio lagungarria aurkituko duzu gehiago sakondu nahi izanez gero.

Orain interesatzen zaidana da kontu azkar batzuk egitea hemen. Eta soilik ransomware bakar baten inguruan: Cerber. @malwaretechblog ikertzailearen arabera, egunero Cerber-ek 6000 biktima berri kutsatzen ditu. Ez da ausaz asmatutako zenbaki bat, baizik eta bere tracker-sareak egunero antzematen dituena.

Orain kalkulu azkar bat. Demagun 6000 infekzio horietatik soilik %3-ak ordaintzen duela erreskatea. Zenbateko erreskatea da hori? Nola ordaintzen da? Ba 500$ gutxi gorabehera… eta BitCoin-etan ordaintzen da. Lehenengo Tor sarea erabiltzeko nabigatzailea instalatu beharko duzu, gero BitCoin-ak erosi, ordaindu eta zifratzeko erabili zen gakoa berreskuratzearen zain pazientziarekin itxaron. Hainbat gauza daude hemen zehazteko… adibidez, zergatik esan dut gutxi gorabehera? Honegatik:

enc_cerber_website-1

Azkar ordainduz gero (7 egun baino gutxiagotan), 1.24 bitcoin (521$ gutxi gora behera) izango dira. Erreskatea beranduago ordainduz gero, bikoiztu egingo da isuna: 2.48 BTC = 1043$

Ordaindu ezean, nola berreskuratu? Ez dago modurik. Hasierako bertsioa gaizki programatuta bazegoen ere (beraz, ordaindu gabe bazegoen berreskuratzeko modu bat), gaur egun asko «hobetu» dute Cerber-en kodea eta ez dago ordaindu gabe berreskuratzeko  modurik. Hemen babes-kopien politikaren beharraz arituko nintzen, baina ez da une egokia 😉 Ordaindu edo ez, hori bakoitzaren eskuetan uzten dut.

Baina gatozen harira.  6.000 kutsadura * 0.03 ordainketa * 500$ = 90000$ , EGUNERO.

Nola banatzen da Cerber bezalako kode kaltegarria? Zein dago horren atzetik? Nola kutsatzen gara? Ezin da ezer egin honen aurka? Aztertzeko hainbat galdera interesgarri…

Padding con Vim

Tenemos la siguiente imagen ASCII:

Captura de pantalla 2016-07-22 a las 20.06.50

Si nos fijamos, hay líneas de distintas longitudes (las más largas son de 80 caracteres). Queremos hacer padding (rellenar) con el carácter ‘#’ para que todas las líneas sean de la misma longitud (80). Podemos hacerlo con un pequeño script en cualquier lenguaje de programación, pero la idea es: ¿se puede hacer con una única línea que use inteligentemente expresiones regulares y funciones en Vim? Sí 🙂

:%s/\v^.*$/\= submatch(0) . repeat("#", 80 - len(submatch(0)))

\v : magia, literal (ver la ayuda). Todos los caracteres que aparezcan tras este patrón se tomarán como caracteres especiales (no es necesario escaparlos). Efectivamente, olvídate de poner \(.*\) para hacer agrupaciones, basta con \v(.*)

^.*$ : desde el comienzo hasta el final de línea

\=  : comienzo de función

submatch(0) : primer match de la expresión regular (es la línea completa)

.  : concatenar con lo siguiente

repeat(«#», 80 – len(submatch(0)))  : repetir el carácter #  x veces, donde x = 80 – longitud de línea

Éste es el resultado:

Captura de pantalla 2016-07-22 a las 20.19.27

Facebook chat #bots might be the future, but right now they feel like the past https://t.co/ovK5si6ePM via @DigitalTrends