John The Ripperでいろいろなパスワードを調べる

John The Ripperでいろいろなパスワードを調べる

E34dfb243cc4baa2f1d4306941d9cfd8?s=128

Kenichiro MATOHARA

July 11, 2020
Tweet

Transcript

  1. John the Ripperでいろいろなパスワードを調べる 小江戸らぐ 7月のオフな集まり(第216回) 2020-07-11(Sat)

  2. KenichiroMatohara https://matoken.org 鹿児島から参加 SpeakerDeckが利用できなくなったり

  3. 鹿児島らぐ https://kagolug.org 先月06/28 https://matoken.org/blog/2020/06/30/join-in-kagoshima-lugs-kagoshima- linux-study-group-2020-06/ 「6月の週末はsofascenerとして 過ごしました」(demo/demopartyの紹介) 「rsync 3.2.0の新機能を試してみた」 「cowsayのcowを増やそう」

    「awkで3dプログラミング,sedのデバッガの紹介」 「NISTのフォレンジックトレーニングページ紹介」 「LinuxでWindows(NTFS)領域を共用する相談」 次回 2020-07-26(sun) https://kagolug.connpass.com/event/182713/
  4. John the Ripperでいろいろなパスワードを調べる

  5. きっかけ John the RipperでSSH秘密鍵のパスワードをクラックできるらしい How to Crack SSH Private Key

    Passwords with John the Ripper « Null Byte :: WonderHowTo
  6. John the Ripper? John the Ripper password cracker パスワード/パスフレーズを総当りや辞書攻撃等でcrack 多分現在一番よく使われている定番ツール?

    UNIXだけでなくいろいろな環境に対応 昔仕事場のユーザで簡単なものを利用している人を調べて通知していた 10000アカウントくらいをCPUで1月くらい辞書+αで攻撃して出てきた人にメール
  7. UNIX向けの総当り例 /etc/passwd , /etc/shadow から(とても)昔の /etc/passwd 形式に変換 JtR同梱の unshadow コマンドを利用

    $ sudo grep ^demo: /etc/passwd /etc/shadow #アカウント情報とパスワードハッシュが別ファイルにしてある /etc/passwd:demo:x:139:65534::/home/demo:/usr/sbin/nologin /etc/shadow:demo:$6$dF43BJBWya16d9dd$VgtPKnJv7jR6RHpchay7I3srnFb6RdAZL4gMlDDQSbkl0Sk9zaz89YfjuMTisxtOujGrrcXMo/UiWo1eiVeDJ1:18453:0:99999:7::: $ sudo unshadow /etc/passwd /etc/shadow | grep ^demo: #昔の形式 demo:$6$dF43BJBWya16d9dd$VgtPKnJv7jR6RHpchay7I3srnFb6RdAZL4gMlDDQSbkl0Sk9zaz89YfjuMTisxtOujGrrcXMo/UiWo1eiVeDJ1:139:65534::/home/demo:/usr/sbin/nologin
  8. UNIX向けの総当り例 こんな感じ $ sudo -s # umask 077 # unshadow

    /etc/passwd /etc/shadow > ./crackpasswd # john ./crackpasswd
  9. 辞書利用 総当りだけだと現実的ではないので辞書を使う 以前はいろいろなAnonimouse FTP siteで辞書を貰ってきてマージして使っていた (秘伝のタレ的な) 最近はSecListsのPasswordsとか?日本語圏向けは弱い?(名字や市区町村くらいは ある) https://www.openwall.com/wordlists/ https://github.com/danielmiessler/SecLists

    CeWLで単語を組み合わせて辞書を作ったり digininja/CeWL: CeWL is a Custom Word List Generator パスワードジェネレーターとかも tytso/pwgen: Automatic Password generation
  10. 辞書利用例 --wordlist option $ sudo apt install john-data $ john

    --wordlist=/usr/share/john/password.lst PASSWORD-FILES
  11. ハッシュテーブル 計算済みのハッシュテーブルで高速化 Windows用とか有名 Windows PWDUMP tools

  12. ハードウェアで速度アップ GPU等 CUDAのサポートはされなくなりOpenCLに変更 FPGA等 ZTEX FPGA Boards with USB and

    Open Source SDK
  13. SSH秘密鍵は? JtR同梱の ssh2john.py で秘密鍵をpasswdファイル形式に変換してJtRでcrack Debian sid amd64のpkgには ssh2john.py 無いみたい(wlanhcx2johnはあった) $

    apt-file search ssh2john.py $ apt-file search 2john hcxtools: /usr/bin/wlanhcx2john hcxtools: /usr/share/man/man1/wlanhcx2john.1.gz ssh2john.py だけを貰ってきて変換して試すとDebian pkg版の john コマンドが 対応していないようで動かない(◞‸◟) $ wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/ssh2john.py $ ssh-keygen -N abc123 -f ./testkey $ ./ssh2john.py testkey > testkey.hash $ john ./testkey.hash No password hashes loaded (see FAQ) $ dpkg-query -W john john 1.8.0-2+b1
  14. JtRをsourceからbuild $ sudo apt build-dep john $ git clone https://github.com/magnumripper/JohnTheRipper

    $ cd JohnTheRipper/src $ ./configure && make -s clean && make -sj4 $ cd ../run $ ./john | head -1 John the Ripper 1.9.0-jumbo-1-bleeding-dbbceb5d1 2019-05-06 23:06:39 +0200 OMP [linux-gnu 64-bit x86_64 AVX AC]
  15. 辞書に存在する簡単なパスフレーズ( 123456 )の鍵を作って試す $ ssh-keygen -t ed25519 -N 123456 -f

    ed25519key $ ./ssh2john.py ed25519key > ed25519key.hash $ ./john --format=SSH --wordlist=../../SecLists/Passwords/darkweb2017-top10.txt ./ed25519key.hash $ ./john --show ./ed25519key.hash Note: This format may emit false positives, so it will keep trying even after finding a possible candidate. 0 password hashes cracked, 1 left $ grep ^123456$ ../../SecLists/Passwords/darkweb2017-top10.txt 123456 うまくいかない? バグ? ssh2john and john unable to brute-force password · Issue #4069 · magnumripper/JohnTheRipper
  16. SSH鍵以外にもいろいろな変換ツールがある Linuxの暗号化fs周りも ecryptfs , encfs , luks …… $ ls

    *2john* -w 120 1password2john.py ccache2john.py itunes_backup2john.pl money2john.py racf2john 7z2john.pl cisco2john.pl iwork2john.py mongodb2john.js radius2john.pl DPAPImk2john.py cracf2john.py kdcdump2john.py mozilla2john.py radius2john.py adxcsouf2john.py dashlane2john.py keepass2john multibit2john.py rar2john aem2john.py deepsound2john.py keychain2john.py neo2john.py sap2john.pl aix2john.pl diskcryptor2john.py keyring2john.py network2john.lua signal2john.py aix2john.py dmg2john keystore2john.py office2john.py sipdump2john.py andotp2john.py dmg2john.py kirbi2john.py openbsd_softraid2john.py ssh2john.py androidbackup2john.py ecryptfs2john.py known_hosts2john.py openssl2john.py sspr2john.py androidfde2john.py ejabberd2john.py krb2john.py padlock2john.py staroffice2john.py ansible2john.py electrum2john.py kwallet2john.py pcap2john.py strip2john.py apex2john.py encfs2john.py lastpass2john.py pdf2john.pl telegram2john.py applenotes2john.py enpass2john.py ldif2john.pl pem2john.py tezos2john.py aruba2john.py ethereum2john.py libreoffice2john.py pfx2john.py truecrypt2john.py axcrypt2john.py filezilla2john.py lion2john-alt.pl pgpdisk2john.py uaf2john bestcrypt2john.py geli2john.py lion2john.pl pgpsda2john.py vdi2john.pl bitcoin2john.py gpg2john lotus2john.py pgpwde2john.py vmx2john.py bitlocker2john hccap2john luks2john.py prosody2john.py wpapcap2john bitshares2john.py hccapx2john.py mac2john-alt.py ps_token2john.py zip2john bitwarden2john.py htdigest2john.py mac2john.py pse2john.py bks2john.py ibmiscanner2john.py mcafee_epo2john.py putty2john blockchain2john.py ikescan2john.py monero2john.py pwsafe2john.py
  17. KeepassXCでも試してみる KDBX 4.0は非対応 $ ./keepass2john ~/tmp/password.kdbx ! /home/matoken/tmp/password.kdbx : File

    version '40000' is currently not supported! KDBX 3.1はうまくいく $ ./keepass2john ~/tmp/password.kdbx > keepassxc3.1.hash $ ./john --wordlist=../../SecLists/Passwords/darkweb2017-top10.txt ./keepassxc3.1.hash Warning: detected hash type "KeePass", but the string is also recognized as "KeePass-opencl" Use the "--format=KeePass-opencl" option to force loading these as that type instead Using default input encoding: UTF-8 Loaded 1 password hash (KeePass [SHA256 AES 32/64]) Cost 1 (iteration count) is 7448433 for all loaded hashes Cost 2 (version) is 2 for all loaded hashes Cost 3 (algorithm [0=AES, 1=TwoFish, 2=ChaCha]) is 0 for all loaded hashes Will run 4 OpenMP threads Press 'q' or Ctrl-C to abort, almost any other key for status abc123 (password) 1g 0:00:00:23 DONE (2020-07-10 06:11) 0.04214g/s 0.4214p/s 0.4214c/s 0.4214C/s 123456..123123 Use the "--show" option to display all of the cracked passwords reliably Session completed.
  18. まとめ JtRいろいろなもののcrackが出来る SSH鍵もし気づかないうちに漏れても認証エラーで通知来るしすぐわかると思っ ていたけど解読されちゃうと認証エラーにならないのでもう少し強いものにしよ うと思う * もし簡単なパスフレーズを使っていたら ssh-keygen -p で変更

    $ ssh-keygen -p -f ./ed25519key Enter old passphrase:123456 Key has comment 'matoken@t430s' Enter new passphrase (empty for no passphrase):ChriOs%Swis3 wx.E1YTgJDm6c Enter same passphrase again: ChriOs%Swis3 wx.E1YTgJDm6c Your identification has been saved with the new passphrase. SSH公開鍵認証 or パスフレーズ + OATH(TOTP/HOTP) のサーバはOATH必須にし ようかなとか KeepassXCやLUKSとかdist-upgraで引き継いでいてdb等が古くなっているので最 新にしたい(バックアップ,作成し直し,リストア)なとか
  19. 奥付 発表: 小江戸らぐ 7月のオフな集まり(第216回) 2020-07-11(Sat) 発表者: KenichiroMatohara License: CC BY-NC-SA

    4.0 利用ツール: codium + Marp for VS Code