Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Avatar for Kenichiro MATOHARA

Kenichiro MATOHARA

July 11, 2020
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. 鹿児島らぐ 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/
  2. John the Ripper? John the Ripper password cracker パスワード/パスフレーズを総当りや辞書攻撃等でcrack 多分現在一番よく使われている定番ツール?

    UNIXだけでなくいろいろな環境に対応 昔仕事場のユーザで簡単なものを利用している人を調べて通知していた 10000アカウントくらいをCPUで1月くらい辞書+αで攻撃して出てきた人にメール
  3. 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
  4. UNIX向けの総当り例 こんな感じ $ sudo -s # umask 077 # unshadow

    /etc/passwd /etc/shadow > ./crackpasswd # john ./crackpasswd
  5. 辞書利用例 --wordlist option $ sudo apt install john-data $ john

    --wordlist=/usr/share/john/password.lst PASSWORD-FILES
  6. 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
  7. 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]
  8. 辞書に存在する簡単なパスフレーズ( 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
  9. 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
  10. 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.
  11. まとめ 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等が古くなっているので最 新にしたい(バックアップ,作成し直し,リストア)なとか