ksnctf #14 John

#John
https://ksnctf.sweetduet.info/problem/14

[John the Ripper](https://kaworu.jpn.org/security/John_the_Ripper)というパスワート解析ツールを使った攻撃をする

問題をみると以下のテキストが表示された。

```
user00:$6$Z4xEy/1KTCW.rz$Yxkc8XkscDusGWKan621H4eaPRjHc1bkXDjyFtcTtgxzlxvuPiE1rnqdQVO1lYgNOzg72FU95RQut93JF6Deo/:15491:0:99999:7:::
user01:$6$ffl1bXDBqKUiD$PoXP69PaxTTX.cgzYS6Tlj7UBvstr6JruGctoObFXCr4cYXjIbxBSMiQZiVkKvUxXUC23zP8PUyXjq6qEq63u1:15491:0:99999:7:::
user02:$6$ZsJXadT/rv$T/2gVzYwMBaAsZnHIjnUSmTozIF/ebMvtHIJjikFehvB8pvy28DUIQYbTJLG6QAxhzJAKOROnZq0xV4hUGefM1:15491:0:99999:7:::
user03:$6$l0NHH5FF0H/U$fPv3c5Cdls/UaZmglR4Qqh8vhpIBsmY1sEjHi486ZcDQ2Vx5GY0fcQYSorWj6l42jfI47w437n.NBm8NArFyT/:15491:0:99999:7:::
user04:$6$wAnAP/NMiLa/yE$.gi4r3xYuPTg5z2S59z2EzFbqpmwZYy1tBSVA9/hqTFnWY0tHqXbwL.dFQwHzKTuzXV6WMgjEZlyzUPGzVtPb0:15491:0:99999:7:::
user05:$6$jTgFhKHk/$xQIdn7snYAAGvifxC02YLXcAKkiuPbJ3KBkH2Q8BZ12TL2aepaUJotgfKfNSPCXWebyCY/skOmOymok.KIm5D0:15491:0:99999:7:::
user06:$6$8LXZt/zPbLtIn1o$ynsZxueG88Kz0vDr3cyK.21cv4GWw9iaW9oYZcmZ9SY5UpMQS1wl2/dbXGyR8WzVBKKP/6k8VYvWuiNQ3We52/:15491:0:99999:7:::
user07:$6$jnA8m/S5aU0/$PGrG8mDy.vs3W9xhG1qd56eOEainH9xntY48.duznt989TXMn6J.scOBqp4BWg3fHWxoFgBn26LYvcnqWGcoF1:15491:0:99999:7:::
user08:$6$ITB7n/qsP$fmrmItHX9B96PmhsxIX21vdYDvFHiIPnyzRFjWIbcd3y/DRHCm0lzyJEnWlQChdDAiFUFXtqwoTbEdREXQ99M.:15491:0:99999:7:::
user09:$6$LpgLJrjPV$6sa0KW08Q10S.C/BSUHlHaQZT5n8uIygZSsWP5drdmuhI7c17wWCK/GEzQS7g8EL//5bqdjo1C90smTDhLEcF1:15491:0:99999:7:::
user10:$6$0VSPwOzcL//6QR$RgtMpkfVPb5Cli7cjVE5jMgJlN10xY1R3jxRNrY0l/84R3.NvxP3I8XtkMkonU6DKhge0JGp54DZLQqUN9kL7/:15491:0:99999:7:::
user11:$6$zryub/lvSKj7Xl$eazV2fmcJa5M3qMovQqARGK59Qxtfv2zjUJvphKNnyUMVyBn.SjEFhRT/mAjz3QFroNbwmrYLtrpyxjH.q64n/:15491:0:99999:7:::
user12:$6$tAkM0dDUFe76d8K/$OnNGFEuIf1seMlLHb.8.y5/cpmBUcMbhLhOfFdd0E/DKASXPS4riB4uz2Fg3om9Atg.g7s.JFoKV0uuJ461KV/:15491:0:99999:7:::
user13:$6$0cCdE5Nfqu/HFS$PwnLdS.chtm6qGwf2Uuiko7V3fMwjcQ52M8hslvoReFQ9XOBXw603Ok20VJwWAwR6RNv6adn6a6kuRm5Y3.ge1:15491:0:99999:7:::
user14:$6$RgPs7j4eSa/v$71CeLB9Z1Fafi6vi2ou5LzRz5xXWTzvZeZgelnm2przx.JQYp21p8h2BCyTYFd10MKD/cquPvn42vSzlJJJ8Q1:15491:0:99999:7:::
user15:$6$1uhGQ/5DwMp/$UjYTEVaChEzmUITvWpaZVvYYDLBULpI4IEyieClSsyC2NHwEnaDx6xwtUVpQPxEhi6R7OQhX68Oo5CfilYqDQ.:15491:0:99999:7:::
user16:$6$V/InSacMp8U$UpDgdL/GS/kdFmn1rO97YkLAeTgofu4fDVUGoV1PWnVFxUtVyx24ix5hJp53FkBuqdzmXgwGcb6MU5AWJWjaB1:15491:0:99999:7:::
user17:$6$d6mWSrE8vxDe$UqTgKPfKxm0/Aboz8DeFNNiZsFBYyE6iGpqUzSX4UpWSDfXt1DERBtI29H2Gz5q.6ls3730naAo31wAacvs/L0:15491:0:99999:7:::
user18:$6$ulcKu/ddomcNGRJj$i8XB1D4YtLGbAHX0XHX88ObUWw8dQsrTqoliGAU//zGHNLmLeWd.4k5YHViNSy3rlGTQSRPtutlKnub8aRnzy0:15491:0:99999:7:::
user19:$6$cVnhE9CwfSIIA$wrn6p3cgfz.JOc6KVkieNCtc.FzkjUdcDDlivn0APnYv9/z4tt7hUpPft5T8kMmnx/hiF92vjnDxcauVyQySp.:15491:0:99999:7:::
user20:$6$2Pg2VxXg$K8AqsCMPAFiXSxNjETBWqEHQom9Q5dDIz9/nItxpQatrG9gvv9CRJP3kQzKLbRf13FxfOXpeEYIpOEK.2i1HP0:15491:0:99999:7:::
user99:$6$SHA512IsStrong$DictionaryIsHere.http//ksnctf.sweetduet.info/q/14/dicti0nary_8Th64ikELWEsZFrf.txt:15491:0:99999:7:::
```

規則性はありそうだけどよく分からない。最後のuser99に英文とURLが書かれている。
SHA512 Is Strong
Dictionary Is Here
ksnctf.sweetduet.info/q/14/dicti0nary_8Th64ikELWEsZFrf.txt

「SHA512を使った暗号は強い」、「辞書はksnctf.sweetduet.info/q/14/dicti0nary_8Th64ikELWEsZFrf.txtにある」

とりあえずこのURLで検索してみる。単語がリストになっているテキストファイルだった。
これを辞書として、John the Ripperを使うっぽい。

##/etc/shadow
問題のテキストはUNIX系のOSで使われる、shadowファイルということがわかった。shadowファイルは暗号化されたパスワードと、パスワードに関連する情報が書かれたファイル。
形式は[ここ](https://www.server-memo.net/centos-settings/system/passwd_shadow.html)に詳しく書いてある。
ユーザー名や暗号化方式、パスワードの最終変更日、有効期限等の情報が書かれている。
暗号化方式は8~10文字目の3文字で決まっている。今回の\$6\$がSHA512を示していて、\$5\$はSHA256、\$1\$はMD5を示す。


このテキストに対して、与えられた辞書を使ってjohn the ripperで解析を行う。


##解く
まずshadowファイルと辞書ファイルを用意する。今回はshadow.txtとpaslist.txtという名前をつけた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1182752/36041c5e-e446-664b-824d-bbe2d630fa52.png)



次に実際にjohn the ripperを使って解析を行う。

```
john shadow.txt --wordlist=passlist.txt
john --show shadow.txt
```
上コマンドで実行して、下コマンドで結果をみる。
暗号化されていたものがうまく解析できた。結果から8文字目を縦読みするとflagが書かれていることに気づく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1182752/a55a0867-487b-c769-70af-d9b2cbcfaa31.png)

結果をjohnResult.txtとして保存して、下のコマンドでflagを取り出す。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313138323735322f34326661633637352d353237632d666164652d303561302d6335653964366362373266382e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1182752/0a7901f1-c991-a2bf-0066-aabffea3c1f7.png)
cutで8文字目を抜き取って、trで改行コードを削除してる。

#まとめ
john the ripperを知れてよかった。クラッキングしてる感があって楽しかった。
パスワードを簡単な単語にしておくと簡単に攻撃できてしまう危険がある。