TryHackMeにチャレンジしたときに使用したものをまとめた
概要
7日間でハッキングをはじめる本~TryHacMeを使って身体で覚える攻撃手法と脆弱性~(https://www.shoeisha.co.jp/book/detail/9784798181578 ) (以下ハッキング本)を購入。
ハッキング本にそってTryHackMe(https://tryhackme.com/ )にチャレンジしたが、ほとんど初見のものばかりで難しいなと感じるとともに世界が広がったのでとてもよかった。
攻撃を成功させるに当たっては、自分の知識や調査力やひらめきが問われていると感じた。
また、自分の手札をよく知らない状態では手も足も出ないことが分かった。
自分の手札として何が加わったのか振り返るために今回使用したもの(コマンド等)を列挙した。
現状は(多少調べましたが)ハッキング本の通りに実施していったのみで詳しくないため、できるだけ参考となるサイト(公式サイトか KaliLinuxのtoolsのサイト)のリンクを記載する形として詳しくはそちらを見るとの形式にした。
使用したもの
Kali Linux
Kali Linux (https://www.kali.org/ )を使用。
カーリーリナックスと読む。
$ uname -a
Linux kali 6.12.13-amd64 #1 SMP PREEMPT_DYNAMIC Kali 6.12.13-1kali1 (2025-02-11) x86_64 GNU/Linux
VirtualBox
VirtualBox( https://www.virtualbox.org/ )を使用して、仮想環境にKali Linuxを導入。
VirtualBoxのダウンロード (https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html )
※ハッキング本の通りVirtualBoxを選択。dockerでKaliLinuxを入れるという手もあるようだけど、CLIベースになるとのことで試していない。
apt
apt Debian系のLinuxで使用されるパッケージ管理のツール
いろいろなツールを入れる際に使用する。
(google-chromeはwgetでパッケージをダウンロードしてaptでインストールするのが一番手間が少ない感じ。wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb apt install ./google-chrome-stable_current_amd64.deb )
openvpn
openvpn ( https://www.kali.org/tools/openvpn/ )
TryHackMeでvpn接続の情報を取得。openvpnを使用してその環境へvpnで接続した。
vpnの接続はコマンド1つでいけるのね。簡単でよいと思った。
(未調査: このopenvpnでvpnを張った際にどこまでのアクセスがvpnを経由しているのか?vpnをつなげているときに別のサイトで調べものしているときなどもvpnを経由している?)
nmap
nmap (https://www.kali.org/tools/nmap/ )
攻略対象のポートスキャンを行うために使用。
攻略対象のどのポートが開いているのか?を調べるのが何においても基本。
※今まで-sVなど2文字のオプションにほとんど出会ってこなかったので少し戸惑った(javaの-XXくらい?)
説明は https://nmap.org/book/man-briefoptions.html より抜粋
| オプション | 説明 | 意味 |
|---|---|---|
| -v | Increase verbosity level (use -vv or more for greater effect) | 途中経過を出力してくれる |
| -A | Enable OS detection, version detection, script scanning, and traceroute | 全部乗せでスキャン |
| -oN <file> | Output scan in normal | テキストで指定したファイルへ出力する。N以外にX,S,Gに対応する形式がある |
| -Pn | Treat all hosts as online -- skip host discovery | 重要なのはskip host discoveryの方。ICMPリクエストを送信せずに直接ポートスキャンを実行する動きをするので、ICMPリクエストをブロックしていようがポートスキャンが行われるので基本つける。 |
| --script vuln | --script=<Lua scripts>: <Lua scripts> is a comma separated list of |
directories, script-files or script-categories | vulnを指定することで座胃弱性の検出やブルートフォースアタックをすることができるよう |
dirb
dirb (https://www.kali.org/tools/dirb/ ) は、URLのパスをスキャンして存在するページ(ディレクトリ)を見つけ出すツール。wordlistを指定して対象候補名を順に探査させる使い方をするよう。
辞書ファイル
辞書探査(攻撃)に使用する、よく使用される単語集を集めたファイルのこと。
Kali Linux の/usr/share/wordlists/ にプリインストールされているものがある。
rockyou.tar.gz
wordlistの中にrockyou.tar.gz => rockyou.txt がある。
rockyouという昔あったサービスから漏洩したパスワードをもとに作った辞書ファイルのようで、よく使われているらしい。
smbclient
smbclient (https://www.kali.org/tools/samba/#smbclient )
Sambaの形式で公開されているサーバにアクセスするためのクライアント。KaliLinuxだけじゃなくて通常に使用するクライアントツールと認識している。
※ back slash は エスケープしなきゃいけないので smbclient \\\\10.x.x.x -U Anonymous みたいに使用する
smbclientで入った後にはls get <file> cd <dir> などが使用できる。
ssh
Secure Shell(https://www.kali.org/tools/openssh/#ssh )通常も使用するsshでの接続クライアント。ssh user@host で接続。鍵ファイルでの認証の場合は ssh -i key_file user@host
hydra
hydra (https://www.kali.org/tools/hydra/#hydra ) はネットワークログオンの処理に対して辞書攻撃をすることができるツール。ssh以外にも様々なプロトコルも対応している。
並列実行数を指定できる-t TASKSのオプションがある。デフォルト16だが、ハッキング本ではマシンの負荷を考慮して-t 4を推奨していた。このあたりは自分と相手のマシン性能次第で色々変えてみてよさそう。
Metasploit Framework
Metasploit Frameworkという脆弱性を突いて攻撃するためのスクリプト群をそろえたツール。この中のmsfconsole (https://www.kali.org/tools/metasploit-framework/#msfconsole )を使用するとCUIベースでスクリプトを使用できる。
msfconsoleコマンドで起動。
search <CVE-xxxx-xxxx> で対象のCVEに対する攻撃ツールがあるか調べる。
use <x> で使用するツールを指定する。(searchで一覧を出した後なら、対象の番号を指定すれば使用できる。リストの一番上の0番のものならuse 0でよい。
show optionsで使用するツールが使用する変数を確認できる。
set <OPT_NAME> <VALUE>で変数を設定する。たいてい攻撃先はRHOSTSという変数に指定するようなので、set RHOSTS 10.xx.xx.xx はほぼ確実に打つ必要がありそう。
exploitかrunでuseで指定したツールを実行する。ハッキング本の著者はexploit派だそうですが、とっさにスペルが出ないのでrunで行く。
※このあたりよくわかっていないのだけど、RCE(リモートコマンドエグゼキューション)の攻撃が成功した際に、metasploitのコンソールで相手先へコマンドを実行させるプロンプトが出る。このプロンプトで相手先がWindowsであるにもかかわらず、sysinfoやlsが実行できるのだけど、どういう仕組みになっている?(uploadというmetasploit用のファイルアップロードのコマンドがあるから、metasploitがうまいようにlinux風のコマンドを定義していて、相手先の環境によって実際に実行するコマンドを変えていると考えるのが自然か?)
| コマンド | 説明 | 備考 |
|---|---|---|
| upload <file> | localのファイルを相手先へ送って配置する | |
| screenshot | 相手先の画面をスクリーンショットとってlocalに画像ファイルとして保存 | |
| hashdump | 相手先のアカウント情報の一覧を表示 |
xfreerdp3
xfreerdp3( https://www.kali.org/tools/freerdp3/#xfreerdp3 ) はRDPを使用してリモートデスクトップ接続を行うツール。
ハッキング本ではxfreerdpとなっていたが、xfreerdp3と3が必要だった。updateされて変わったのかな。
Burp Suite
GUIツール。BurpSuiteから開くブラウザ(chroniumベース)でのやり取りを記録・変更しての再送(repeat)、辞書攻撃(intruder)、通信内容を一度止めて内容確認して送る・変更する・破棄する(Intercept)ができる。
どのようなリクエストを送って、何が返ってくるのかがわかるので、Webアプリケーションの調査に役立つ。今までは、ブラウザのDevToolとpostmanで頑張っていたけど、BurpSuiteを使いこなせたら楽になりそう。
find
find / -perm -u=s -type f 2>/dev/null SUIDが設定されているファイルを/から全部調べる。エラー出力は捨てる。
kerbrute
kerbrute(https://github.com/ropnop/kerbrute )
keroberos認証のASサービスに対してユーザの存在有無をチェックする辞書攻撃を仕掛けるのに使用。
Impacket
Impacket( https://www.kali.org/tools/impacket/ )
GetNPUsers.py
Impacketのexamplesにある。
TGTを取得するのに使用できる。
./GetNPUsers.py <domain>/<user> で実行し、パスワードが聞かれるが空で実行し、TGTを取得できた。(サーバ側がKerberos認証のASの事前認証処理を無効化しているからパスワードなしでとれた)
secretsdump.py
Impacketのexamplesにある。
DCSyncを行って、ドメインコントローラからパスワードハッシュファイル(NTDS.DIT)を同期要求して取得することをしてくれる。
同期要求できる権限を持つユーザ・パスワードは事前に取得して使用する。
./secretsdump.ph -just-dc-ntlm <user>@<domain> -outputfile <outputfile> の形で実行した。(実行時、指定したユーザのパスワードを聞かれる)
hashcat
ハッシュ値に対して辞書とぶつけて解析をかけるツール。
ハッシュのタイプと使用する辞書を指定する。
ハッシュのタイプは hashcat -hで出力できるので、grepで検索かけるとよい。
base64
base64形式の文字列は base64 -d でデコードできる。
Evil-WinRM
evil-winrm(https://www.kali.org/tools/evil-winrm/ )
NTLM認証形式のWindowsに対して、パスワードなし(ユーザ名とハッシュ値を使う)でログインしてシェル実行するために使用。
steghide
steghide(https://www.kali.org/tools/steghide/ )
ステガノグラフィされた内容を取得するために使用。
wpscan
wpscan(https://www.kali.org/tools/wpscan/ )
wordpressが使用されているサーバに対してユーザの検索やユーザのパスワードの辞書攻撃などが可能。
LinPEAS
読み方はリンピーズでよいのかな?
1ファイルで、さまざまな情報を解析できるので、相手先に送り込むファイルとして便利。
SUIDの設定が怪しいなど、Linuxの設定で怪しいところを色付きで出力してくれる。
windows/MacOS用のwinPEAS/macPEASも存在する。
ファイルを送り込む
公開したいディレクトリに入って、python3 -m http.server 12345 を実行。
httpサーバで12345ポートで公開することができる。
RCEでリモートホストに入って相手先からwgetなどでファイルを取りに来てもらう形で使用する。あと、metasploitのuploadでも行ける。
GTFOBins
怪しい設定がされたバイナリファイルの利用方法を調べるためのサイト
ハッキング本ではsystemctlがsuid設定されていた場合について調べた。
おわりに
もし興味が出てきたらぜひトライしてみてください。
Discussion